Вы находитесь на странице: 1из 31

Unidad III Programacin modular

Concepto de Programacin

3.1 Declaracin de funciones


3.2 Biblioteca de funciones
3.3 Entrada y salida
3.4 Archivo
3.5 Cadenas
3.6 Programacin de Interfaces
3.6.1 Programacin de puertos de la computadora
3.6.2 Escribiendo datos al puerto paralelo
3.6.3 Elaboracin de interfaces
3.6.4 Control de interfaces a travs de computadora
3.7 Aplicacin en la industria

Introduccin
L

programacin modular es un paradigma de programacin que consiste en dividir un


programa en mdulos o subprogramas con el fin de hacerlo ms legible y manejable.
Se presenta histricamente como una evolucin de la programacin estructurada para
solucionar problemas de programacin ms grandes y complejos de lo que sta puede
resolver.
Al aplicar la programacin modular, un problema complejo debe ser dividido en varios
subproblemas ms simples, y estos a su vez en otros subproblemas ms simples. Esto
debe hacerse hasta obtener sus problemas lo suficientemente simples como para poder
ser resueltos fcilmente con algn lenguaje de programacin. sta tcnica se llama
refinamiento sucesivo, divide y vencers anlisis descendente (Top-Down).
Un mdulo es cada una de las partes de un programa que resuelve uno de los su
problemas en que se divide el problema complejo original. Cada uno de estos mdulos
tiene una tarea bien definida y algunos necesitan de otros para poder operar. En caso de
que un mdulo necesite de otro, puede comunicarse con ste mediante una interfaz de
comunicacin que tambin debe estar bien definida.
Uno de los problemas habituales del programador ocurre cuando los programas
alcanzan un tamao considerable en cuanto a lnea de cdigo. El problema se puede
volver tan complejo que fuera inabordable. Para mitigar este problema apareci la
programacin modular.
En ella el programa se divide en mdulos de tamao manejable. Cada mdulo realiza
una funcin muy concreta y se pueden programar de forma independiente. Se basa en
concentrar los esfuerzos en resolver problemas sencillos y una vez resueltos, el conjunto
de esos problemas soluciona el problema original. En definitiva la programacin modular
implementa el paradigma divide y vencers, tan importante en la programacin. El
programa se descompone en mdulos. Los mdulos se puede entender que son
pequeos programas. Reciben datos y a partir de ellos realizan un clculo o una
determinada tarea. Una vez el mdulo es probado y validado se puede utilizar las veces
que haga falta en el programa sin necesidad de tener que volver a programar. En C los

mdulos se llaman funciones.


Si bien un mdulo puede entenderse como una parte de un programa en cualquiera de
sus formas y variados contextos, en la prctica se los suele tomar como sinnimos
de procedimientos y funciones. Pero no necesaria ni estrictamente un mdulo es una
funcin o un procedimiento, ya que el mismo puede contener muchos de ellos, no debe
confundirse el trmino "modulo" (en el sentido de programacin modular) con trminos
como "funcin" o "procedimiento", propios del lenguaje que lo soporte.
Uno de los problemas habituales del programador ocurre cuando los programas
alcanzan un tamao considerable en cuanto a lnea de cdigo. El problema se puede
volver tan complejo que fuera inabordable. Para mitigar este problema apareci la
programacin modular.
En ella el programa se divide en mdulos de tamao manejable. Cada mdulo realiza
una funcin muy concreta y se pueden programar de forma independiente. Se basa en
concentrar los esfuerzos en resolver problemas sencillos y una vez resueltos, el conjunto
de esos problemas soluciona el problema original. En definitiva la programacin modular
implementa el paradigma divide y vencers, tan importante en la programacin. El
programa se descompone en mdulos. Los mdulos se puede entender que son
pequeos programas. Reciben datos y a partir de ellos realizan un clculo o una
determinada tarea. Una vez el mdulo es probado y validado se puede utilizar las veces
que haga falta en el programa sin necesidad de tener que volver a programar. En C los
mdulos se llaman funciones.
Cada programa contiene un mdulo denominado programa principal que controla todo lo
que sucede; se transfiere el control a submodulos (posteriormente se denominarn
subprogramas), de modo que ellos puedan ejecutar sus funciones; sin embargo, cada
submodulo devuelve el control al mdulo principal cuando se haya completado su tarea.
Si la tarea asignada a cada submodulo es demasiado compleja, este deber romperse
en otros mdulos ms pequeos. El proceso sucesivo de subdivisin de mdulos
continua hasta que cada mdulo tenga solamente una tarea especfica que ejecutar.
Esta tarea puede ser entrada, salida, manipulacin de datos, control de otros mdulos o
alguna combinacin de estos. Un mdulo puede transferir temporalmente (bifurcacin) el
control a otro modulo; sin embargo, cada mdulo debe devolver el control al mdulo del
cual se recibe originalmente el control.
Algunos lineamientos para la programacin modular son:
1. Mantener cada mdulo de un tamao manejable (de manera ideal incluyendo slo
una funcin).
2. Prestar atencin particular en las interfaces criticas (esto es, a los datos y a las
variables de control que pasan entre los mdulos).
3. Minimizar el nmero de mdulos que el usuario necesite modificar cuando haga

cambios.
4. Mantener las relaciones jerrquicas establecidas en las etapas de descenso.

Ejemplo:
Se desea disear un algoritmo que realice las siguientes tareas:
-Impresin de cabeceras de un informe,
-Lectura de datos,
-Ejecutar clculos,
-Imprimir lneas detalladas de informacin,
-Imprimir totales.
Este programa se puede descomponer en mdulos, de modo que exista un mdulo
principal o de control y diferentes submodulos.
Mdulo principal:

Llamada a submdulo (impresin de cabeceras)

Llamada a submodulo (proceso de datos)

Llamada a submodulo (impresin de totales)

3.1 Declaracin de funciones

os

prototipos de las funciones que se utilizan en un programa se incluyen generalmente en


la cabecera del programa y presentan la siguiente sintaxis:
En el prototipo de una funcin no se especifican las sentencias que forman parte de la
misma, sino sus caractersticas. Por ejemplo:
En este caso se declara la funcin cubo que recibe como parmetro una variable de tipo
entero (numero) y devuelve un valor del mismo tipo. En ningn momento estamos
especificando qu se va a hacer con el variablenmero, slo declaramos las
caractersticas de la funcin cubo.
Cabe sealar que el nombre de los parmetros es opcional y se utiliza para mejorar la
comprensin del cdigo fuente. De esta manera, el prototipo de la funcin cubo podra

expresarse de la siguiente manera:


Los prototipos de las funciones son utilizados por el compilador para verificar que se
accede a la funcin de la manera adecuada con respecto al nmero y tipo de
parmetros, y al tipo de valor de retorno de la misma. Veamos algunos ejemplos de
prototipos de funciones:
Las funciones de biblioteca se declaran en lo que se conocen como ficheros de
cabecera o ficheros .h (del ingls hederse, cabeceras). Cuando deseamos utilizar
alguna de las funciones de biblioteca, debemos especificar el fichero .h en que se
encuentra declarada la funcin, al inicio de nuestro programa. Por ejemplo, si deseamos
utilizar la funcin pronto en nuestro programa, debemos incluir el fichero stdio.h que
contiene el prototipo de esta funcin.
En el ejemplo adjunto podremos ver la declaracin de una funcin ( prototipo ). Al no
recibir ni retornar ningn valor, est declarada como void en ambos lados. Tambin
vemos que existe una variable global llamada num. Esta variable es reconocible en
todas las funciones del programa. Ya en la funcin main encontramos una variable local
llamada num. Al ser una variable local, sta tendr preferencia sobre la global. Por tanto
la funcin escribir los nmeros 10 y 5. /* Declaracin de funciones. */
#include <stdio.h>
void funcion(void); /* prototipo */
int num=5; /* variable global */
main() /* Escribe dos nmeros */
{
int num=10; /* variable local */
printf("%d\n",num);
funcin(); /* llamada */
}
void funcion(void)
{
printf("%d\n",num);
Por valor: cualquier cambio que se realice dentro de la funcin en el argumento
enviado, NO afectar al valor original de las variables utilizadas en la llamada. Es como
si trabajramos con una copia, no con el original. No es posible enviar por valor arrays,
deberemos hacerlo por referencia.

Por referencia: lo que hacemos es enviar a la funcin la direccin de memoria donde se


encuentra la variable o dato. Cualquier modificacin SI afectar a las variables utilizadas
en la llamada. Trabajamos directamente con el original. /* Paso por valor. */
Para enviar un valor por referencia se utiliza el smbolo & ( ampersand ) delante de la
variable enviada. Esto le indica al compilador que la funcin que se ejecutar tendr que
obtener la direccin de memoria en que se encuentra la variable.
Vamos a fijarnos en los ejemplos. En el ejemplo anterior podrs comprobar que antes y
despus de la llamada, las variables mantienen su valor. Solamente se modifica en la
funcin intercambio (paso por valor ).
En el siguiente ejemplo podrs ver como las variables intercambian su valor tras la
llamada de la funcin (paso por referencia).
Las variables con un * son conocidas como punteros, el nico dato en 'C' que puede
almacenar una direccin de memoria.
3.2
E
Biblioteca de funciones

l lenguaje C, C++ contiene numerosas funciones, cuando se emplean funciones de esta


biblioteca estandar, se incrementa la transportabilidad de los programas.
Las funciones estandar se dividen en grupos, todas las funciones que pertenecen al
mismo grupo estan declaradas en el archivo de cabecera (aquel que dice xxx.h), la letra
"h" significa header en ingls y es lo que se llama cabecera.
C ofrece un conjunto de funciones estndar que dan soporte a las operaciones que se
utilizan con ms frecuencia. Estas funciones estn agrupadas en bibliotecas. Para
utilizar cualquiera de las funciones que forman parte de las bibliotecas estndar de C,
slo hace falta realizar una llamada a dicha funcin.
En ciencias de la computacin, una biblioteca (del ingls library) es un conjunto
de subprogramas utilizados para desarrollar software. Las bibliotecas contienen cdigo y
datos, que proporcionan servicios a programas independientes, es decir, pasan a formar
parte de stos. Esto permite que el cdigo y los datos se compartan y puedan
modificarse de forma modular. Algunos programas ejecutables pueden ser a la vez
programas independientes y bibliotecas, pero la mayora de stas no son ejecutables.
Ejecutables y bibliotecas hacen referencias (llamadas enlaces) entre s a travs de un
proceso conocido como enlace, que por lo general es realizado por
un software denominado enlazador.

Ejemplo de librera estndar. math


Math es el nombre de una librera que incorpora funciones matemticas. Para poder
utilizar dichas funciones hay que aadir la instruccin #include <math.h> al principio del
cdigo de nuestro archivo. Cada directiva include se coloca en una lnea separada y no
requiere punto y coma al ser una indicacin al compilador y no una instruccin de verdad
.Esta librera contiene las siguientes funciones (se indican los prototipos y uso);
Prototipo

Descripcin

Int abs(int n)

Devuelve el valor absoluto del nmero


entero indicado.

Int cell(double n)

Redondea el numero
decimal nobteniendo el menor entero
mayor o igual que n es decir
cell(2.3) devuelve el 3 y cell(2.7) y
devuelve 3.

double cos(double n)

Obtiene el coseno de n(n se expresa


en radianes).

double exp(double n)

Obtiene en.

double fabs(double n)

Obtiene el valor absoluto


de n( siendo n un nmero double)

Int floor(double n)

Redondea el nmero
decimal nobteniendo el mayor entero
menor o igual que n. es decir floor(2.3)
devuelve 2 y de floor(2.7) tambin
devuelve 2.

Identificacin y organizacin de archivos


En los sistemas informticos modernos, los archivos siempre tienen nombres. Los
archivos se ubican en directorios. El nombre de un archivo debe ser nico en ese
directorio. En otras palabras, no puede haber dos archivos con el mismo nombre en el
mismo directorio.
El nombre de un archivo y la ruta al directorio del archivo lo identifica de manera unvoca
entre todos los dems archivos del sistema informtico -no puede haber dos archivos
con el mismo nombre y ruta-. El aspecto del nombre depende del tipo de sistema
informtico que se use. Las primeras computadoras slo permitan unas pocas letras o
dgitos en el nombre de un archivo, pero las computadoras modernas permiten nombres
largos que contengan casi cualquier combinacin de letras unicode y dgitos unicode,

haciendo ms fcil entender el propsito de un archivo de un vistazo. Algunos sistemas


informticos permiten nombres de archivo que contengan espacios; otros no. La
distincin entre maysculas y minsculas en los nombres de archivo est determinada
por el sistema de archivos. Los sistemas de archivos Unix distinguen normalmente entre
maysculas y minsculas, y permiten a las aplicaciones a nivel de usuario crear archivos
cuyos nombres difieran solamente en si los caracteres estn en maysculas o
minsculas.Microsoft Windows reconoce varios sistemas de archivos, cada uno con
diferentes polticas en cuanto a la distincin entre maysculas y minsculas. El popular
antiguo sistema de archivos FAT puede tener varios archivos cuyos nombres difieran
nicamente en las maysculas y minsculas si el usuario utiliza un editor de discos para
editar los nombres de archivo en las entradas de directorio. Las aplicaciones de usuario,
sin embargo, normalmente no permitirn al usuario crear varios archivos con el mismo
nombre pero con diferentes letras en maysculas y minsculas.

3.3 Entrada y salida


Las funciones que forman parte de la biblioteca estndar de C, funciones estndar o
predefinidas, estn divididas en grupos. Todas las funciones que pertenecen a un mismo
grupo se definen en el mismo fichero de cabecera. Los nombres de los ficheros
cabeceras de C se muestran en la siguiente tabla:
Cuando deseamos utilizar cualquiera de las funciones estndar de C, primero debemos
utilizar la directiva de precompilacin #include para incluir los ficheros cabecera en
nuestro programa. Por otra parte, antes de utilizar una funcin, primero debemos
conocer las caractersticas de dicha funcin, es decir, el nmero y tipo de datos de sus
argumentos y el tipo de valor que devuelve. Esta informacin es proporcionada por los
prototipos de funcin.
Los grupos de funciones estndar ms comunes son:
- entrada/salida estndar
- matemticas
- de conversin
- diagnstico
- de manipulacin de memoria
- control de proceso
- ordenacin
- directorios

- fecha y hora
- bsqueda
- manipulacin de cadenas
- grficos
- etctera
Podemos incluir tantos ficheros de cabecera como nos haga falta, incluyendo los
ficheros de cabecera que hemos creado y donde hemos definido nuestras funciones. En
el resto de este apartado veremos algunas de las funciones de la entrada/salida
estndar ms utilizadas.
En C no existe ninguna palabra clave para realizar la entrada y salida de datos (E/S). Se
realizan a travs de funciones de biblioteca (concretamente, la biblioteca stdio.h, ver
captulo 13).
Las funciones principales que realizan la entrada y salida sin formato son:getchar(): Lee
un carcter del teclado. Espera hasta que se pulsa una tecla y entonces devuelve su
valor.
putchar(): Imprime un carcter en la pantalla en la posicin actual del cursor.
gets(): Lee una cadena de caracteres introducida por el teclado y la sita en una
direccin apuntada por su argumento de tipo puntero a carcter.
puts(): Escribe su argumento de tipo cadena en la pantalla seguida de un carcter de
salto de lnea.
El siguiente fragmento de cdigo lee un carcter del teclado y lo muestra por pantalla. A
continuacin lee una cadena (de 10 caracteres incluido el carcter nulo) y tambin la
muestra por pantalla:
#include <stdio.h>
main()
{
charcadena[10];
int i;
i=getchar();
putchar(i);
gets(cadena);

puts(cadena);
}
Las funciones principales que realizan la entrada y salida con formato, es decir, se
pueden leer y escribir en distintas formas controladas, son:
printf(): Escribe datos en la consola con el formato especificado.
scanf(): Funcin de entrada por consola con el formato especificado.
Sus prototipos son los siguientes:
intprintf (" caracteres de transmisin y escape", lista de argumentos);
intscanf (" caracteres de transmisin y escape", lista de argumentos);
En la funcin printf() (con scanf() no), entre las comillas se pueden poner rtulos literales
mezclados con los caracteres de transmisin.
Los caracteres de transmisin son precedidos de un % para distinguirlos de los
normales:
Caracteres de transmisin Argumento que transmite
%c Int: un carcter simple
%NsChar *: una cadena de caracteres
%Nd %Ni Int: un nmero decimal
%o Int: octal sin signo
%x %X Int: hexadecimal sin signo
%NuInt: decimal sin signo
%N.DfFloat o double con D decimales, en notacin fija
%N.De %N.DE Float o double con D decimales, en notacin cientfica
%N.Dg %N.DG Float o double en notacin cientfica si el exponente es menor de diez a
la menos cuatro, o fija en caso contrario.
%p Void *: escribe el nmero que corresponde al puntero
%% Escribe un signo de %
Donde aparecen las letras N.D o no se pone nada o sern en realidad dos nmeros que
dicen que la transmisin total del valor al menos ocupar N posiciones (si el nmero
necesita ms de N las tomar, si usa menos las dejara en blancos, a menos que se
quiera rellenar con ceros, entonces se pone 0N) y que la parte decimal tendr como

mximo las D posiciones despus de un punto.


Normalmente el nmero se ajusta por la derecha para el campo de N posiciones que le
hemos dicho que utilice; si deseamos el ajuste por la izquierda, se aade un signo
menos precediendo al valor N (-N).
Una l precediendo a N (p.e. %l5d) significa que transmitiremos un longint : si, por el
contrario, es una h significa que transmitiremos un short int.
Existe otro tipo de carcter especial, los caracteres de escape, que tienen un significado
especial. Los caracteres de escape son los siguientes:
\n Nueva lnea
\t Tabulador
\b Espacio atrs
\r Retorno de carro
\f Comienzo de pgina
\a Pitido sonoro
\ Comilla simple
\" Comilla doble
\\ Barra invertida
\xdd Cdigo ASCII en notacin hexadecimal (cada d representa un dgito)
\ddd Cdigo ASCII en notacin octal (cada d representa un dgito)
La lista de argumentos estar separada por comas. Debe existir una correspondencia
biyectiva entre los caracteres de transmisin (aquellos que comienzan con un %) y la
lista de argumentos a transmitir.
Cabe destacar una diferencia en la lista de argumentos entre las funciones printf() y
scanf(). En estultima funcin (scanf()), la lista de argumentos va precedida por el
operador de direccin(&), puesto que scanf() requiere que los argumentos sean las
direcciones de las variables, en lugar de ellas mismas.
(&), puesto que scanf() requiere que los argumentos sean las direcciones de las
variables, en lugar de ellas mismas.
3.4 Archivo
En C un archivo puede ser cualquier cosa, desde un archivo de disco a un terminal o
una impresora. Se asocia una secuencia con un archivo especfico realizando una
operacin de apertura, una vez que est abierto, la informacin puede ser intercambiada

entre ste y el programa. El puntero a un archivo es el hilo que unifica el sistema de E/S
con buffer. Un puntero a un archivo es un puntero a una informacin que define varias
cosas sobre l, incluyendo el nombre, el estado y la posicin actual del archivo. En
esencia, el puntero a un archivo identifica un archivo en disco especfico y utiliza la
secuencia asociada para dirigir el funcionamiento de las funciones de E/S con buffer.
Para obtener una variable de tipo puntero a archivo se debe utilizar una sentencia como
la siguiente:FILE *punt;
La funcin fopen() abre una secuencia para que pueda ser utilizada y le asocia a un
archivo. Su prototipo es: FILE *fopen(constchar *nombre_archivo, constchar *modo);
Donde nombre_archivo es un puntero a una cadena de caracteres que representan un
nombre vlido del archivo y puede incluir una especificacin de directorio. La cadena
que apunta modo determina cmo se abre el archivo. Los modos son los siguientes:
r: Abre un archivo de texto para lectura.
w: Crea un archivo de texto par escritura
a: Abre un archivo de texto para aadir
r+: Abre un archivo de texto para lectura/escritura
w+: Crea un archivo de texto para lectura/escritura
a+: Aade o crea un archivo de texto para lectura/escritura
La funcin fclose() cierra una secuencia que fue abierta mediante una llamada a fopen().
Escribe toda la informacin que todava se encuentre en el buffer del disco y realiza un
cierre formal del archivo a nivel del sistema operativo. Tambin libera el bloque de
control de archivo asociado con la secuencia, dejndolo libre para su reutilizacin. A
veces es necesario cerrar algn archivo para poder abrir otro, debido a la existencia de
un lmite del sistema operativo en cuanto al nmero de archivos abiertos. Su prototipo
es: intfclose(FILE *fp);
La funcin putc() escribe caracteres en un archivo que haya sido abierto previamente
para operaciones de escritura, utilizando la funcin fopen(). Su prototipo es: intputc(int
car, FILE *pf);
La funcin getc() escribe caracteres en un archivo que haya sido abierto, en modo
lectura, mediante fopen(). Su prototipo es: intgetc(FILE *pf);La funcin fputs() escribe la
cadena en la secuencia especificada. Su prototipo es: fputs() escribe la cadena en la
secuencia especificada. Su prototipo es: intfputs(constchar *cad, FILE *pf);La funcin
fgets() lee una cadena de la secuencia especificada hasta que se lee un carcter de
salto de lnea o hasta que se han ledo longitud-1 caracteres.
La funcin rewind() inicia el indicador de posicin al principio del archivo indicado por su
argumento. Su prototipo es: rewind() inicia el indicador de posicin al principio del

archivo indicado por su argumento. Su prototipo es: voidrewind(FILE *pf);


Existen otras muchas funciones en la biblioteca estndar de C (ver captulo 13) como
pueden serremove(): Borra el archivo especificado.
fflush(): Vaca el contenido de una secuencia de salida.
fread(): Lee tipos de datos que ocupan ms de un byte. Permiten la lectura de bloques
de cualquier tipo de datos.
fwrite(): Escribe tipos de datos que ocupan ms de un byte. Permiten la escritura de
bloques de cualquier tipo de datos.
fprintf(): Hace las funciones de printf() sobre un fichero.
fscanf(): Hace las funciones de scanf() sobre un fichero.
feof(): Detecta el final de un fichero.
ferror(): Detecta un error en la lectura/escritura de un fichero.
fclose() cierra una secuencia que fue abierta mediante una llamada a fopen().
putc() escribe caracteres en un archivo que haya sido abierto previamente para
operaciones de escritura, utilizando la funcin fopen().
La funcin getc() escribe caracteres en un archivo que haya sido abierto, en modo
lectura, mediante fopen(). Su prototipo es:
La funcin fputs() escribe la cadena en la secuencia especificada. Su prototipo es:
intfputs(constchar *cad, FILE *pf);
La funcin fgets() lee una cadena de la secuencia especificada hasta que se lee un
carcter de salto de lnea o hasta que se han ledo longitud-1 caracteres. Su prototipo
es: fgets() lee una cadena de la secuencia especificada hasta que se lee un carcter de
salto de lnea o hasta que se han ledo longitud-1 caracteres. Su prototipo
es:intfgets(char *cad, FILE *pf);

3.5 Cadenas

Manejo de cadenas <string.h>


Recordando la presentacin de arreglos hecha (captulo 5) en donde las cadenas estn
definidas como un arreglo de caracteres o un apuntador a una porcin de memoria
conteniendo caracteres ASCII. Una cadena en C es una secuencia de cero o ms
caracteres seguidas por un caracter NULL o \0:

Es importante preservar el caracter de terminacin NULL, ya que con ste es como C


define y maneja las longitudes de las cadenas. Todas las funciones de la biblioteca
estndar de C lo requieren para una operacin satisfactoria.
En general, aparte de algunas funciones restringidas en longitud (strncat(), strncmp() y
strncpy()), al menos que se creen cadenas a mano, no se debern encontrar problemas.
Se debern usar las funciones para manejo de cadenas y no tratar de manipular las
cadenas en forma manual desmantelando y ensamblando cadenas.

Todas las funciones para manejo de cadenas tienen su prototipo en:


#include<string.h>
Las funciones ms comunes son descritas a continuacin:

char *strcpy(constchar *dest, constchar *orig) -- Copia la cadena de caracteres


apuntada por orig (incluyendo el carcter terminador '\0') al vector apuntado
pordest. Las cadenas no deben solaparse, y la de destino, debe ser
suficientemente grande como para alojar la copia.

intstrcmp(constchar *s1, constchar *s2) -- Compara las dos cadenas de


caracteress1 y s2. Devuelve un entero menor, igual o mayor que cero si se
encuentra que s1es, respectivamente, menor que, igual a, o mayor que s2.

char *strerror(interrnum) -- Devuelve un mensaje de error que corresponde a un


nmero de error.

intstrlen(constchar *s) -- Calcula la longitud de la cadena de caracteres.

char *strncat(char *s1, const char *s2, size_t n) -- Agregancaracteres de s2 a s1.

intstrncmp(constchar *s1, char *s2, size_t n) -- Compara los primeros n caracteres


de dos cadenas.

char *strncpy(constchar *s1, constchar *s2, size_t n) -- Copia los


primeros ncaracteres de s2 a s1.

strcasecmp(constchar *s1, constchar *s2) -- versin que ignora si son maysculas


o minsculas de strcmp().

strncasecmp(constchar *s1, constchar *s2, size_t n) -- versin insensible a


maysculas o minsculas de strncmp() que compara los primeros n caracteres
des1.

El uso de muchas funciones es directo, por ejemplo:


char *s1 = "Hola";
char *s2;
intlongitud;

longitud = strlen("Hola"); /* long = 4 */


(void) strcpy(s2,s1);
Observar que tanto strcat() y strcopy() regresan una copia de su primer argumento, el
cual es el arreglo destino. Observar tambin que orden de los argumentos es arreglo
destino seguido por arreglo fuente lo cual a veces es una situacin para hacerlo
incorrectamente.
La funcin strcmp() compara lexicogrficamente las dos cadenas y regresa:

Menor que cero -- si s1 es lxicamente menor que s2;

Cero -- si s1 y s2 son lxicamente iguales;

Mayor que cero -- si s1 es lxicamente mayor que s2;

Las funciones de copiado strncat(), strncmp() y strncpy() son versiones ms restringidas


que sus contrapartes ms generales. Realizan una tarea similar, pero solamente para
los primerosn caracteres. Observar que el caracter de terminacin NULL podra ser
violado cuando se usa estas funciones, por ejemplo:
char *s1 = "Hola";
char *s2 = 2;
intlongitud = 2;

(void) strncpy(s2, s1, longitud); /* s2 = "Ho" */donde s2 no tiene el terminador NULL.

Es importante preservar el caracter de terminacin NULL, ya que con ste es como C


define y maneja las longitudes de las cadenas. Todas las funciones de la biblioteca
estndar de C lo requieren para una operacin satisfactoria.
En general, aparte de algunas funciones restringidas en longitud (strncat(), strncmp() y
strncpy()), al menos que se creen cadenas a mano, no se debern encontrar problemas.
Se debern usar las funciones para manejo de cadenas y no tratar de manipular las

cadenas en forma manual desmantelando y ensamblando cadenas.

Todas las funciones para manejo de cadenas tienen su prototipo en:


#include<string.h>
Las funciones ms comunes son descritas a continuacin:

char *strcpy(constchar *dest, constchar *orig) -- Copia la cadena de caracteres


apuntada por orig (incluyendo el carcter terminador '\0') al vector apuntado
pordest. Las cadenas no deben solaparse, y la de destino, debe ser
suficientemente grande como para alojar la copia.

intstrcmp(constchar *s1, constchar *s2) -- Compara las dos cadenas de


caracteress1 y s2. Devuelve un entero menor, igual o mayor que cero si se
encuentra que s1es, respectivamente, menor que, igual a, o mayor que s2.

char *strerror(interrnum) -- Devuelve un mensaje de error que corresponde a un


nmero de error.

intstrlen(constchar *s) -- Calcula la longitud de la cadena de caracteres.

char *strncat(char *s1, const char *s2, size_t n) -- Agregancaracteres de s2 a s1.

intstrncmp(constchar *s1, char *s2, size_t n) -- Compara los primeros n caracteres


de dos cadenas.

char *strncpy(constchar *s1, constchar *s2, size_t n) -- Copia los


primeros ncaracteres de s2 a s1.

strcasecmp(constchar *s1, constchar *s2) -- versin que ignora si son maysculas


o minsculas de strcmp().

strncasecmp(constchar *s1, constchar *s2, size_t n) -- versin insensible a


maysculas o minsculas de strncmp() que compara los primeros n caracteres
des1.

El uso de muchas funciones es directo, por ejemplo:


char *s1 = "Hola";
char *s2;
intlongitud;

longitud = strlen("Hola"); /* long = 4 */


(void) strcpy(s2,s1);
Observar que tanto strcat() y strcopy() regresan una copia de su primer argumento, el
cual es el arreglo destino. Observar tambin que orden de los argumentos es arreglo
destino seguido por arreglo fuente lo cual a veces es una situacin para hacerlo
incorrectamente.
La funcin strcmp() compara lexicogrficamente las dos cadenas y regresa:

Menor que cero -- si s1 es lxicamente menor que s2;

Cero -- si s1 y s2 son lxicamente iguales;

Mayor que cero -- si s1 es lxicamente mayor que s2;

Las funciones de copiado strncat(), strncmp() y strncpy() son versiones ms restringidas


que sus contrapartes ms generales. Realizan una tarea similar, pero solamente para
los primerosn caracteres. Observar que el caracter de terminacin NULL podra ser
violado cuando se usa estas funciones, por ejemplo:
char *s1 = "Hola";
char *s2 = 2;
intlongitud = 2;

(void) strncpy(s2, s1, longitud); /* s2 = "Ho" */donde s2 no tiene el terminador NULL.

3.6 programaion de interfaces


U

na

interfaz de programacin representa la capacidad de comunicacin entre componentes


de software. Se trata del conjunto de llamadas a ciertas bibliotecas que ofrecen acceso a
ciertos servicios desde los procesos y representa un mtodo para
conseguir abstraccin en la programacin, generalmente (aunque no necesariamente)
entre los niveles o capas inferiores y los superiores del software. Uno de los principales
propsitos de una API consiste en proporcionar un conjunto de funciones de uso
general, por ejemplo, para dibujar ventanas o iconos en la pantalla. De esta forma,

losprogramadores se benefician de las ventajas de la API haciendo uso de su


funcionalidad, evitndose el trabajo de programar todo desde el principio. Las APIs
asimismo son abstractas: el software que proporciona una cierta API generalmente es
llamado la implementacin de esa API.
Los puertos de comunicacin de la PC son de particular inters para el estudioso de la
electrnica ya que le permiten utilizar una computadora personal para controlar todo
tipo circuitos electrnicos utilizados, principalmente, en actividades de automatizacin de
procesos, adquisicin de datos, tareas repetitivas y otras actividades que demandan
precisin. ste artculo es el primero de una serie que analizar diversos usos para el
puerto paralelo de la PC.
Existen dos mtodos bsicos para transmisin de datos en las computadorasmodernas.
En un esquema de transmisin de datos en serie un dispositivo enva datos a otro a
razn de un bit a la vez a travs de un cable. Por otro lado, en un esquema
de transmisin de datos en paralelo un dispositivo enva datos a otro a una tasa de n
nmero de bits a travs de n nmero de cables a un tiempo. Sera fcil pensar que un
sistema en paralelo es n veces ms rpido que un sistema enserie, sin embargo esto no
se cumple, bsicamente el impedimento principal es el tipo de cable que se utiliza para
interconectar los equipos.
Por ejemplo, se puede ver la tarea de escribir "Hola Mundo" sobre la pantalla en
diferentes niveles de abstraccin:
1. Haciendo todo el trabajo desde el principio:
1. Traza, sobre papel milimetrado, la forma de las letras (y espacio) "H,o, l,
a,M,u, n, d, o".
2. Crea una matriz de cuadrados negros y blancos que se asemeje a la
sucesin de letras.
3. Mediante instrucciones en ensamblador, escribe la informacin de la matriz
en la memoria intermedia ("buffer") de pantalla.
4. Mediante la instruccin adecuada, haz que la tarjeta grfica realice
el volcado de esa informacin sobre la pantalla.
2. Por medio de un sistema operativo para hacer parte del trabajo:
1. Carga una fuente tipogrfica proporcionada por el sistema operativo.
2. Haz que el sistema operativo borre la pantalla.
3. Haz que el sistema operativo dibuje el texto "Hola Mundo" usando la fuente
cargada.

2 Usando una aplicacin (que a su vez usa el sistema operativo) para realizar la
mayor parte del trabajo:
1. Escribe un documento HTML con las palabras "Hola Mundo" para que
un navegador Web como Google Chrome, Mozilla, Firefox,Opera o Internet
Explorer pueda representarlo en el monitor.
Como se puede ver, la primera opcin requiere ms pasos, cada uno de los cuales es
mucho ms complicado que los pasos de las opciones siguientes. Adems, no resulta
nada prctico usar el primer planteamiento para representar una gran cantidad
de informacin, como un artculo enciclopdico sobre la pantalla, mientras que el
segundo enfoque simplifica la tarea eliminando un paso y haciendo el resto ms
sencillos y la tercera forma simplemente requiere escribir "Hola Mundo". Sin embargo,
las APIs de alto nivel generalmente pierden flexibilidad; por ejemplo, resulta mucho ms
difcil en un navegador web hacer girar texto alrededor de un punto con un contorno
parpadeante que programarlo a bajo nivel. Al elegir usar una API se debe llegar a un
cierto equilibrio entre su potencia, simplicidad y prdida de flexibilidad.

3.6.1 Programacin de puertos de la computadora

Un puerto en la computadora es por donde la informacin fluye hacia dentro o hacia


fuera. Los dispositivos Hardware como la impresora o modem pueden ser llamados
puertos, un puerto que manda informacin fuera de tu computadora puede ser el monitor
o la impresora. Un puerto que recibe informacin seria el modem o un scanner.
El puerto paralelo del PC es un conjunto de dispositivos (conector, circuitos electrnicos,
etc.) que permite la conexin de un equipo informtico con el propsito de intercambiar
informacin digital.

Desde el punto de vista del software, el puerto paralelo son tres registros de 8 bits cada
uno, ocupando tres direcciones de I/O consecutivas de la arquitectura x86.
Desde el punto de vista hardware, el puerto es un conector hembra DB25 con doce
salidas y cinco entradas, con 8 lneas de masa.
La funcin normal es transferir datos a una impresora a travs de las 8 lneas de datos,
usando las seales restantes como control de flujo.
Los puertos de comunicacin de la PC son de particular inters para el estudioso de la
electrnica ya que le permiten utilizar una computadora personal para controlar todo tipo
circuitos electrnicos utilizados, principalmente, en actividades de automatizacin de
procesos, adquisicin de datos, tareas repetitivas y otras actividades que demandan
precisin.
Existen dos mtodos bsicos para transmisin de datos en las computadoras modernas.
En un esquema de transmisin de datos en serie un dispositivo enva datos a otro a
razn de un bit a la vez a travs de un cable. Por otro lado, en un esquema de
transmisin de datos en paralelo un dispositivo enva datos a otro a una tasa dennmero
de bits a travs deun nmero de cables a un tiempo. Sera fcil pensar que un sistema
en paralelo es n veces ms rpido que un sistema en serie, sin embargo esto no se
cumple, bsicamente el impedimento principal es el tipo de cable que se utiliza para
interconectar los equipos. Si bien un sistema de comunicacin en paralelo puede utilizar

cualquier nmero de cables para transmitir datos, la mayora de los sistemas paralelos
utilizan ocho lneas de datos para transmitir un byte a la vez, como en todo, existen
excepciones, por ejemplo el estndar SCSI permite transferencia de datos en esquemas
que van desde los ocho bits y hasta los treinta y dos bits en paralelo. En ste artculo
nos concentraremos en transferencias de ocho bits ya que sta es la configuracin del
puerto paralelo de una PC.
Un tpico sistema de comunicacin en paralelo puede ser de una direccin
(unidireccional) o de dos direcciones (bidireccional). El ms simple mecanismo utilizado
en un puerto paralelo de una PC es de tipo unidireccional y es el que analizaremos en
primer lugar. Distinguimos dos elementos: la parte transmisora y la parte receptora.
La parte transmisora coloca la informacin en las lneas de datos e informa a la parte
receptora que la informacin (los datos) estn disponibles; entonces la parte receptora
lee la informacin en las lneas de datos e informa a la parte transmisora que ha tomado
la informacin (los datos). Observe que ambas partes sincronizan su respectivo acceso
a las lneas de datos, la parte receptora no leer las lneas de datos hasta que la parte
transmisora se lo indique en tanto que la parte transmisora no colocar nueva
informacin en las lneas de datos hasta quela parte receptora remueva la informacin y
le indique a la parte transmisora que ya ha tomado los datos, a sta coordinacin de
operaciones se le llama acuerdo entendimiento. Bien, en estos mbitos tecnolgicos
es recomendable utilizar ciertas palabras en ingls que nos permiten irnicamente un
mejor entendimiento de los conceptos tratados. Repito: a la coordinacin de operaciones
entre la parte transmisora y la parte receptora se le llama handshaking, que en espaol
es elacto con el cual dos partes manifiestan estar de acuerdo, es decir, se dan un
apretn de manos.

Se dividen en 2 tipos:

a) Puertos fsicos de la computadora: son conectores integrados en tarjetas de


expansin en la tarjeta principal "Motherboard" de la computadora; diseados con
formas y caractersticas electrnicas especiales, utilizados para interconectar una gran
gama de dispositivos externos con la computadora, es decir, los perifricos. Usualmente
el conector hembra estar montado en la computadora y el conector macho estar
integrado en los dispositivos cables. Vara la velocidad de transmisin de datos y la
forma fsica del puerto acorde al estndar y al momento tecnolgico.
Anteriormente los puertos venan integrados exclusivamente en tarjetas de expansin
denominadas tarjetas controladoras, posteriormente se integraron en la tarjeta principal
"Motherboard" y tales controladoras perdieron competencia en el mercado, pero
actualmente se siguen comercializando sobre todo para servidores.

b) Puertos lgicos de la computadora: son puntos de acceso entre equipos para el


uso de servicios y flujo de datos entre ellos, ejemplos el puerto 21 correspondiente al
servicio FTP (permite el intercambio de archivos) el puerto 515 que est asociado con
el servicio de impresin.
C

on
ocho
bits

podemos escribir en el puerto un total de 256 valores diferentes, cada uno de stos
representa un byte de informacin y cada byte puede representar una accin concreta
que nosotros podemos definir de acuerdo a nuestras necesidades. En ste artculo el
objetivo es entender cmo trabajar con el puerto paralelo, por lo tanto hagamos un
programa que nos permita escribir un nmero cualquiera entre 0 y 255 de tal manera
que sea posible visualizar el valoren formato binario. En primer lugar consulte la
documentacin de su compilador para verificar la correcta sintaxis de la funcin que nos
sirve para escribir en el puerto, en el caso especfico de Symantec C++, dicha funcin
eoutp( ). sta funcin requiere dos parmetros, el primero de tipo unsignedint que
especifica la direccin del puerto paralelo, y el segundo de tipo char que especifica el
valor a escribir en las lneas de datos de puerto. Una tpica llamada a la funcin outp( )
se parece a esto:

Se aprecia la facilidad de manejo de la funcin, aunque diferentes compiladores dan a


sus respectivas funciones nombres diferentes, la mecnica es la misma, se requieren
dos parmetros, la direccin del puerto y el valor a escribir en el puerto. Estudie el
siguiente cdigo:

/**********************************************************
*puerto2.c
*
*Escribe datos al puerto paralelo de la PC
*
**********************************************************/

#include <stdio.h>
#include <dos.h>
intpuerto(intdirecc);
intseleccion;
int main()
{
unsignedint __far *puntero_a_direccion;
int i, direccion[3]={0,0,0}, disponible[3]={0,0,0};

puntero_a_direccion = (unsignedint __far *)0x00000408;


printf("Seleccione el puerto:\n");
/* Cuantos puertos existen? */
for (i=0; i<3; i++)
{
if (*puntero_a_direccion == 0)
printf("Puerto LPT%d...............no disponible\n", i+1);
else
{
disponible[i] = 1;
direccion[i] = *puntero_a_direccion;
printf("Puerto LPT%d...............%d\n", i+1, i+1);
}puntero_a_direccion++;
}printf("Salir del programa........0\n");
scanf("%d", &seleccion);
do
{
switch(seleccion)
{
case 0:/* Salir del programa */
printf("Adios!!!\n");
return 0;
break;
case 1:/* Puerto LPT1 */

if(disponible[0]==1)
puerto(direccion[0]);
else
{
printf("ERROR: PUERTO NO DISPONIBLE\n");
return 0;
}break;
case 2:/* Puerto LPT2 */
if(disponible[1]==1)
puerto(direccion[1]);
else
{
printf("ERROR: PUERTO NO DISPONIBLE\n");
return 0;
}break;
case 3:/* Puerto LPT3 */
if(disponible[2]==1)
puerto(direccion[2]);
else
{
printf("ERROR: PUERTO NO DISPONIBLE\n");
return 0;
}

break;
default:
printf("ERROR: OPCION INCORRECTA!\n");
break;
}if(seleccion!=0)
{
printf("Seleccione otra opcion\n");
scanf("%d", &seleccion);

}
}while(seleccion!=0);
return 0;
}intpuerto(intdirecc)
{
unsignedchar valor; /* Solo valores entre 0 y 255 */
printf("Ahora puede escribir cualquier valor\n");
printf("entre 1 y 255, 0 para terminar el programa\n");
do
{
printf("Valor al puerto?\n");
scanf("%d", &valor);
outp(direcc, valor);
printf("Se ha escrito %d al puerto\n", valor);
}while(valor!=0);
returnseleccion=0;
}

El programa determina el nmero de puertos paralelo instalados en la


Computadora y almacena sus respectivas direcciones en el arreglo llamado direccin,
en caso de encontrarse una direccin vlida adems se establece en
1 el valor del arreglo llamado disponible[i] simplemente como una medida de seguridad
adicional. Como resultado de estas acciones el programa despliega un men basado en
los puertos encontrados, en este punto Usted puede seleccionar, en caso de que
disponga de ms de un puerto, el puerto en donde est conectado el circuito mostrado
en el diagrama de arriba.

Una vez seleccionado el puerto Usted puede escribir un valor cualquiera comprendido
entre 0 y 255. Independientemente del puerto seleccionado toda la funcionalidad del

programa est encapsulada en la funcin de tipo int llamada puerto( ) a la cual se le


pasa un nico parmetro que es la direccin del puerto seleccionado. La funcin est
codificada de tal forma que al escribir un 0 el programa termina, de sta manera al cerrar
el programa las lneas de datos del puerto paralelo estn todas en un nivel lgico bajo.
ste programa y el circuito asociado son tiles para entender de forma visual la forma de
representar valores en formato binario, adems establece las bases de trabajo para
otros proyectos de control basados en computadora.
3.6.3 Elaboracin de interfaces

El diseo de interfaz de usuario o ingeniera de la interfaz es el diseo


de computadoras, aplicaciones, mquinas, dispositivos de comunicacinmvil,
aplicaciones de software, y sitios web enfocado en la experiencia de usuario y la
interaccin.
Normalmente es una actividad multidisciplinar que involucra a varias ramas del diseo y
el conocimiento como el diseo grfico, industrial, web, de software y la ergonoma; y
est implicado en un amplio rango de proyectos, desde sistemas para computadoras,
vehculos hasta aviones comerciales.
Su objetivo es que las aplicaciones o los objetos sean ms atractivos y adems, hacer
que la interaccin con el usuario sea lo ms intuitiva posible, conocido como el diseo
centrado en el usuario. En este sentido las disciplinas del diseo industrial y grfico se
encargan de que la actividad a desarrollar se comunique y aprenda lo ms rpidamente,
a travs de recursos como la grfica, los pictogramas, los estereotipos y la simbologa,
todo sin afectar el funcionamiento tcnico eficiente.
Tipos de Interfaces
El interface es de dos tipos que ellos son:
Interface Paralelo
Un interface paralelo transfiere datos en la forma de uno o varios bytes en la paralela a o
del dispositivo.
Asuma un ordenador 16 bites, direccionable por el byte, donde la entrada - salida
controlada del programa es usada con asincrnico del ducto, y el cronometraje de
transferencias de ducto es unos. El interface contiene memorias intermedias de datos
separadas para insumo y produccin y hay un registro de estado asociado con cada
memoria intermedia. Para una operacin de insumo, y la palabra de datos es transferida
del dispositivo de produccin a registros y puesta a 1. Cuando tan pronto como la seal
lista es recibida, esto habilita las puertas de produccin correspondiente al byte dirigido
o palabra y colocacin de sus contenido en las lneas de datos. Tambin, la seal de
produccin aceptan tambin es puesto a 1. Este constituye la respuesta del interface a

la peticin leda emitida por la unidad central de proceso. Tan pronto como la seal lista
se cae a 0, la seal aceptar es borrada y todo el ducto es borrado. Note que cuando la
memoria intermedia es dirigida, la bandera de estado de insumo es reinicializada a 0.
Este es esencial a fin de garantizar que cada artculo de datos de insumo es ledo por el
ordenador slo una vez. Una operacin de produccin procede del mismo modo, cuando
la seal habilitar es puesta a 1. El insumo de reloj a la memoria intermedia de
produccin es puesto. Este resulta en la carga de la memoria intermedia con los datos
en las lneas de datos. Al mismo tiempo, es puesto a 1 indicar que el interface est listo
a aceptar una nueva transferencia de produccin.
Interface Consecutivo
Un interface consecutivo contiene el mismo recorrido de control y direccin que el
interface paralelo, pero con una adicin controla para transferir datos en serie entre
registros y el dispositivo de entrada - salida. Aqu, un chip es usado, que es un barco de
circuito integrado que contiene todo el recorrido lgico para la conversin paralela y
consecutiva requerida. Los dos registros y las banderas de estado son incluidos en el
chip.
3.6.4 Control de interfaces a travs de computadora

En aplicaciones de control que requieren que el procesamiento de la informacin se


realice en una computadora personal (PC) la velocidad de transferencia de datos desde
y hacia la computadora puede ser un factor limitante. Para superar esta limitacin se
propone utilizar el bus USB como interface. En este articulo se muestra un ejemplo
aplicado al control de un brazo robot y como el cambio a una interface USB permite
mejorar la tasa de transferencia de datos entre la computadora y el sistema de control
del brazo robot.

Instrumentacin basada en PC es fcil de implementar el uso de herramientas y tarjetas


de National Instruments - Prueba y Medida. La mayora de los instrumentos se pueden
comunicar con el PC en la interfaz GPIB .
Puede empezar por aprender a usar el puerto paralelo y puerto serie. MIDI-puerto de
juegos tambin tiene lo suficiente para ayudarle a comenzar, aprender interfaces
informticas en el hogar.
Intente un pequeo experimento fcil de RS-232 del sensor de temperatura
Powered. Esto puede empezar tambin.
Los pocos ejemplos de arriba muestran una instrumentacin - Analizador Lgico 'Like' de
interfaz y un circuito de control del rel de visualizacin. Son ejemplos he intentado por
los estudiantes a probar y aprender.

Elaborar una interfaz:


Como consecuencia del uso masivo de internet y de la gran cantidad de documentacin
disponible para desarrolladores, es posible encontrar en la actualidad una gran variedad
de productos de software. El problema est en que gran parte de esas aplicaciones no
cumple con el objetivo principal para el cual debieron ser diseadas, que es facilitar la
vida de sus usuarios, razn por la que muchas veces son descartadas y reemplazadas
por otras aplicaciones. En la mayor parte de los casos esto no se debe a errores de
codificacin, sino ms bien a la forma en que las diferentes funcionalidades del software
son presentadas a su pblico, lo que de ahora en adelante conoceremos como "interfaz
de usuario". Este elemento, considerado una mtrica de la calidad de un software,
influye directamente en la percepcin final del producto y en la resistencia del usuario a
probar la aplicacin. Un software podr ser muy bueno y poderoso, pero no ser
popular si su interfaz es deficiente! Por eso, basado en mi experiencia como
desarrollador y en diversas lecturas sobre el tema, compartir los elementos que
considero ms importantes al momento de desarrollar una buena interfaz de usuario.
3.7 Aplicacin en la industria
La interfaz de usuario ms popular consiste en la representacin grfica de programas
como iconos seleccionados a travs del ratn que se ejecutan enventanas desplegadas
en la pantalla de la computadora. Los comandos y opciones de los programas pueden
ser seleccionados a travs de mensdispuestos en 2seccionesespecficas de las
ventanas. Esta interfaz, conocida comnmente como WIMP (Windowsicons-mousepointer), ha sido sumamente exitosa por ms de 20 aos, un perodo
sorprendentemente largo cuando se habla de TICs.
Canny (2006) considera que la longevidad de las interfaces WIMP se debe, entre
otros, a dos factores principales. En primer lugar, esta abstraccin permiti que la
Computadora pudiera ser utilizada prcticamente por cualquier persona sin tener que
ser experta en computacin; se trata de una interfaz centrada en el usuario. En segundo
lugar, ha resultado muy apropiada al considerar la computadora como una herramienta
de trabajo para las funciones convencionales en la oficina, la escuela y el hogar.

Sin embargo, este modelo de Interaccin Humano-Computadora (IHC) presenta


Severas limitaciones ante los nuevos escenarios que las TICs van englobando durante
su acelerado proceso de transformacin social. Un estudio reciente realizado por la
Divisin de Ciencias de la Computacin de la Universidad de California en Berkeley
consider que la prioridad nmero uno en investigacin y desarrollo debera

concentrarse en IHC(Canny, 2006).

Algunos de estos escenarios son el objeto de estudio del presente


Documento, entre los que cabe destacar los siguientes:

Si bien las interfaces WIMP han permitido la adopcin generalizada de las


Computadoras, la facilidad de uso sigue considerndose la principal barrera para el
Crecimiento y xito de las TIC en las organizaciones (Canny, 2006).
Hace tiempo que la computadora ha dejado de ser tan slo herramienta de trabajo en la
oficina y el hogar. Las consolas de videojuegos, los reproductores de DVD, los nuevos
televisores, un nmero creciente de sistemas de control en el automvil y el hogar, son
tan slo algunos ejemplos de equipos computacionales con los que el hombre
contemporneo interacta todos los das. En estos dispositivos resulta crtica.
- Diseo minimalista: entre ms elementos existan en la pantalla, ms confundido y
temeroso se encontrar el usuario. Por eso es importante reducir al mximo el nmero
de componentes visibles, siendo muchas veces recomendada la utilizacin de asistentes
o "wizards", los cuales permiten dividir una gran pantalla de datos en una serie de pasos
lgicos, ordenados y sencillos de seguir. El uso de asistentes, al estar compuestos por
varias pantallas, permite adems mejorar el orden y disposicin de los componentes.

- Distincin clara de los elementos: siempre que se incorpore un componente a la


pantalla del usuario, el diseador deber preocuparse que este sea diferenciable del
resto y de que su funcionalidad est claramente expresada. Para ello, el mejor recurso
es la utilizacin de imgenes, las cuales se recomienda sean nicas para cada
componente o agrupacin de los mismos, y semejantes a objetos de la vida real, de
forma de hacer la aplicacin ms intuitiva.

- Atencin a las glosas o textos: cada vez que se necesite colocar un texto en
pantalla, ya sea para reforzar el concepto de un componente o para entregar una
instruccin o advertencia, este deber ser cuidadosamente escrito, procurando utilizar
siempre el mismo tamao, color y fuente de letra, dejando fuera el uso de "negrita" ,
"cursiva" o cualquier otro elemento que sobrecargue la pantalla ms de lo necesario.
Aunque suene obvio, los textos debern ser siempre lo ms concisos y claros posibles,
intentando idealmente localizarlos de acuerdo a la regin geogrfica donde vayan a ser
utilizados.

- Minimizar el uso del teclado y de comandos especiales: no hay aplicacin ms


confusa y difcil de usar que una pensada para "ingenieros". Muchos software caen en el
error de incorporar comandos especiales para realizar acciones de programa, pensando
que un usuario experto ganar tiempo evitando el uso del mouse. Esto es un error,
puesto que son pocos los usuarios que destinan tiempo a leer la documentacin de un
programa antes de comentar a utilizarlo (mucho menos podrn conocer y memorizar sus
comandos de uso); adems el uso de comandos aumenta la posibilidad de realizar
acciones involuntarias, lo cual puede llegar a ser atemorizante para los usuarios. Una
aplicacin amigable es aquella que muestra todas las posibles acciones en pantalla; el
teclado deber utilizarse slo cuando sea imprescindible, como en el llenado de
formularios u otras acciones similares.
- Evitar dilogos innecesarios: existen aplicaciones que ante una accin reiterativa
muestran un cuadro de dilogo con un mensaje de xito. Esto puede resultar
extremadamente molesto para un usuario que ya conoce las consecuencias de su
accin. Por eso se recomienda el uso de cuadros de dilogo slo para advertencias o
sugerencias crticas (relacionadas a acciones no reversibles).
- Prevencin de errores: un usuario aprender ms rpido a utilizar y confiar en una
aplicacin si sabe que no cometer errores en su uso o si sabe que estos pueden ser
revertidos rpidamente. Para esto el diseador debe saber acotar las posibilidades de
accin del usuario, quitando la mayor cantidad de objetos de error posibles; adems
debe cuidar que cada accin crtica del programa pueda ser revertida en caso de ser
requerido.
- Flexibilidad ante todo: no se debe confundir el control con la falta de flexibilidad. Si
un usuario, por ejemplo, desea no incorporar una imagen en una tarjeta de presentacin
utilizando un formato que si la requiere, el software a lo ms debera advertir sobre la
falta de la foto, pero no prohibirle que termine el proceso de elaboracin de su tarjeta.
Un desarrollador nunca sabr los alcances finales y usos definitivos de su software
hasta que sea utilizado por sus usuarios, por lo que es mejor enfocar los esfuerzos en
mejorar la robustez del software antes que caer en un control excesivo.
- Manejo de preferencias de usuario: con la tecnologa de hoy no es difcil incorporar
mecanismos de almacenamiento personalizado de preferencias para los usuarios.
Recordar elementos tan sencillos como la configuracin del idioma o la aparicin de
ciertos cuadros de dilogo facilitan enormemente el trabajo de quienes utilizan una
aplicacin.

En resumen una buena interfaz:

- Disminuye la resistencia natural del usuario a utilizar la aplicacin.


- Reduce los tiempos de aprendizaje.
- Reduce los errores de uso.
- Mejora la percepcin pblica del software.
- Mejora la calidad de vida de los usuarios (facilita su labor).

Вам также может понравиться