Unidad III Programación Modular

download Unidad III Programación Modular

of 31

Transcript of Unidad III Programación Modular

  • 8/18/2019 Unidad III Programación Modular

    1/31

    Unidad III Programación modular 

    Concepto de Programación 

    3.1 Declaración de funciones

    3.2 Biblioteca de funciones

    3.3 Entrada y salida

    3.4 Arci!o

    3." #adenas

    3.6 Programación de Interfaces

    3.6.1 Programación de puertos de la computadora

    3.$.2 Escribiendo datos al %uerto %aralelo

    3.$.3 Elaboración de interfaces

    3.$.4 #ontrol de interfaces a tra!&s de com%utadora

     3.7 Aplicación en la industria

     

    https://sites.google.com/site/basesdelaprogramacion/homehttps://sites.google.com/site/basesdelaprogramacion/home

  • 8/18/2019 Unidad III Programación Modular

    2/31

     

    Introducción

    a

    programación modular es un paradigma de programación que consiste en dividir unprograma en módulos o subprogramas con el fin de hacerlo más legible y manejable.

    Se presenta históricamente como una evolución de la programación estructurada para

    solucionar problemas de programación más grandes y complejos de lo que ésta puederesolver.

     Al aplicar la programación modular un problema complejo debe ser dividido en variossubproblemas más simples y estos a su ve! en otros subproblemas más simples. "stodebe hacerse hasta obtener sus problemas lo suficientemente simples como para poderser resueltos fácilmente con alg#n lenguaje de programación. $sta técnica se llamarefinamiento sucesivo divide y vencerás ó análisis descendente %&op'(o)n*.

    +n módulo es cada una de las partes de un programa que resuelve uno de los suproblemas en que se divide el problema complejo original. Cada uno de estos módulos

    tiene una tarea bien definida y algunos necesitan de otros para poder operar. "n caso deque un módulo necesite de otro puede comunicarse con éste mediante una interfa! decomunicación que también debe estar bien definida.

    +no de los problemas habituales del programador ocurre cuando los programasalcan!an un tama,o considerable en cuanto a l-nea de código. "l problema se puedevolver tan complejo que fuera inabordable. Para mitigar este problema apareció laprogramación modular.

    "n ella el programa se divide en módulos de tama,o manejable. Cada módulo reali!auna función muy concreta y se pueden programar de forma independiente. Se basa enconcentrar los esfuer!os en resolver problemas sencillos y una ve! resueltos el conjuntode esos problemas soluciona el problema original. "n definitiva la programación modular implementa el paradigma divide y vencerás tan importante en la programación. "lprograma se descompone en módulos. os módulos se puede entender que sonpeque,os programas. /eciben datos y a partir de ellos reali!an un cálculo o unadeterminada tarea. +na ve! el módulo es probado y validado se puede utili!ar las vecesque haga falta en el programa sin necesidad de tener que volver a programar. "n C los

    http://es.wikipedia.org/wiki/Paradigma_de_programaci%C3%B3nhttp://es.wikipedia.org/wiki/Programaci%C3%B3n_estructuradahttp://es.wikipedia.org/wiki/Algoritmo_divide_y_vencer%C3%A1shttp://es.wikipedia.org/wiki/Paradigma_de_programaci%C3%B3nhttp://es.wikipedia.org/wiki/Programaci%C3%B3n_estructuradahttp://es.wikipedia.org/wiki/Algoritmo_divide_y_vencer%C3%A1s

  • 8/18/2019 Unidad III Programación Modular

    3/31

    módulos se llaman funciones.

    Si bien un módulo puede entenderse como una parte de un programa en cualquiera desus formas y variados conte0tos en la práctica se los suele tomar como sinónimosde procedimientos y funciones. Pero no necesaria ni estrictamente un módulo es una

    función o un procedimiento ya que el mismo puede contener muchos de ellos no debeconfundirse el término 1modulo1 %en el sentido de programación modular* con términoscomo 1función1 o 1procedimiento1 propios del lenguaje que lo soporte.

    +no de los problemas habituales del programador ocurre cuando los programasalcan!an un tama,o considerable en cuanto a l-nea de código. "l problema se puedevolver tan complejo que fuera inabordable. Para mitigar este problema apareció laprogramación modular.

    "n ella el programa se divide en módulos de tama,o manejable. Cada módulo reali!auna función muy concreta y se pueden programar de forma independiente. Se basa en

    concentrar los esfuer!os en resolver problemas sencillos y una ve! resueltos el conjuntode esos problemas soluciona el problema original. "n definitiva la programación modular implementa el paradigma divide y vencerás tan importante en la programación. "lprograma se descompone en módulos. os módulos se puede entender que sonpeque,os programas. /eciben datos y a partir de ellos reali!an un cálculo o unadeterminada tarea. +na ve! el módulo es probado y validado se puede utili!ar las vecesque haga falta en el programa sin necesidad de tener que volver a programar. "n C losmódulos se llaman funciones.

    Cada programa contiene un módulo denominado programa principal que controla todo loque sucede2 se transfiere el control a submodulos %posteriormente se denominarán

    subprogramas* de modo que ellos puedan ejecutar sus funciones2 sin embargo cadasubmodulo devuelve el control al módulo principal cuando se haya completado su tarea.Si la tarea asignada a cada submodulo es demasiado compleja este deberá romperseen otros módulos más peque,os. "l proceso sucesivo de subdivisión de móduloscontinua hasta que cada módulo tenga solamente una tarea espec-fica que ejecutar."sta tarea puede ser entrada salida manipulación de datos control de otros módulos oalguna combinación de estos. +n módulo puede transferir temporalmente %bifurcación* elcontrol a otro modulo2 sin embargo cada módulo debe devolver el control al módulo delcual se recibe originalmente el control.

    Algunos lineamientos %ara la %rogramación modular son'

    3. 4antener cada módulo de un tama,o manejable %de manera ideal incluyendo sólouna función*.

    5. Prestar atención particular en las interfaces criticas %esto es a los datos y a lasvariables de control que pasan entre los módulos*.

    6. 4inimi!ar el n#mero de módulos que el usuario necesite modificar cuando haga

    http://es.wikipedia.org/wiki/Subrutinahttp://es.wikipedia.org/wiki/Funci%C3%B3n_(programaci%C3%B3n)http://es.wikipedia.org/wiki/Funci%C3%B3n_(programaci%C3%B3n)http://es.wikipedia.org/wiki/Subrutinahttp://es.wikipedia.org/wiki/Funci%C3%B3n_(programaci%C3%B3n)

  • 8/18/2019 Unidad III Programación Modular

    4/31

    cambios.

    7. 4antener las relaciones jerárquicas establecidas en las etapas de descenso.

     

    E(em%lo'

    Se desea diseñar un algoritmo que realice las siguientes tareas:

    '8mpresión de cabeceras de un informe

    'ectura de datos

    '"jecutar cálculos

    '8mprimir l-neas detalladas de información

    '8mprimir totales.

    "ste programa se puede descomponer en módulos de modo que e0ista un móduloprincipal o de control y diferentes submodulos.

    Módulo principal:

    9 lamada a submódulo %impresión de cabeceras*

    9 lamada a submodulo %proceso de datos*

    9 lamada a submodulo %impresión de totales*

     

    3.1 Declaración de funciones

     

    os

    prototipos de las funciones que se utili!an en un programa se incluyen generalmente enla cabecera del programa y presentan la siguiente sinta0is:

    "n el prototipo de una función no se especifican las sentencias que forman parte de lamisma sino sus caracter-sticas. Por ejemplo:

    "n este caso se declara la función cubo que recibe como parámetro una variable de tipoentero %numero* y devuelve un valor del mismo tipo. "n ning#n momento estamosespecificando qué se va a hacer con el variablen)mero sólo declaramos lascaracter-sticas de la función cubo.

    Cabe se,alar que el nombre de los parámetros es opcional y se utili!a para mejorar lacomprensión del código fuente. (e esta manera el prototipo de la función cubo podr-a

  • 8/18/2019 Unidad III Programación Modular

    5/31

    e0presarse de la siguiente manera:

    os prototipos de las funciones son utili!ados por el compilador para verificar que seaccede a la función de la manera adecuada con respecto al n#mero y tipo deparámetros y al tipo de valor de retorno de la misma. ;eamos algunos ejemplos de

    prototipos de funciones:as funciones de biblioteca se declaran en lo que se conocen como ficeros decabecera o ficeros . %del inglés hederse cabeceras*. Cuando deseamos utili!aralguna de las funciones de biblioteca debemos especificar el fichero .h en que seencuentra declarada la función al inicio de nuestro programa. Por ejemplo si deseamosutili!ar la función pronto en nuestro programa debemos incluir el fichero stdio.h quecontiene el prototipo de esta función.

    "n el ejemplo adjunto podremos ver la declaración de una función % prototipo *. Al norecibir ni retornar ning#n valor está declarada como void en ambos lados. &ambién

    vemos que e0iste una variable global llamada num. "sta variable es reconocible entodas las funciones del programa. . ?@ Declaración de funciones. *+

      include Bstdio.h

    void funcion%void*2 ?@ prototipo @?

    int numD>2 ?@ variable global @?

    main%* ?@ "scribe dos n#meros @?

    E

     int numD3=2 ?@ variable local @?

     printf%1FdGn1num*2

     función%*2 ?@ llamada @?

    H

    void funcion%void*

    E

     printf%1FdGn1num*2

    Por !alor' cualquier cambio que se realice dentro de la función en el argumentoenviado IJ afectará al valor original de las variables utili!adas en la llamada. "s comosi trabajáramos con una copia no con el original. Io es posible enviar por valor arraysdeberemos hacerlo por referencia.

  • 8/18/2019 Unidad III Programación Modular

    6/31

    Por referencia' lo que hacemos es enviar a la función la dirección de memoria donde seencuentra la variable o dato. Cualquier modificación S8 afectará a las variables utili!adasen la llamada. &rabajamos directamente con el original. ?@ Paso por valor. @?

    Para enviar un valor por referencia se utili!a el s-mbolo K % ampersand * delante de la

    variable enviada. "sto le indica al compilador que la función que se ejecutará tendrá queobtener la dirección de memoria en que se encuentra la variable.

    ;amos a fijarnos en los ejemplos. "n el ejemplo anterior podrás comprobar que antes ydespués de la llamada las variables mantienen su valor. Solamente se modifica en lafunción intercambio %paso por valor *.

    "n el siguiente ejemplo podrás ver como las variables intercambian su valor tras lallamada de la función %paso por referencia*.

    as variables con un @ son conocidas como punteros el #nico dato en LCL que puedealmacenar una dirección de memoria.

    3.2

    Biblioteca de funciones

     

    l lenguaje C CMM contiene numerosas funciones cuando se emplean funciones de estabiblioteca estandar se incrementa la transportabilidad de los programas.

    as funciones estandar se dividen en grupos todas las funciones que pertenecen al

    mismo grupo estan declaradas en el archivo de cabecera %aquel que dice 000.h* la letra1h1 significa header en inglés y es lo que se llama cabecera.

    C ofrece un conjunto de funciones estándar que dan soporte a las operaciones que seutili!an con más frecuencia. "stas funciones están agrupadas en bibliotecas. Parautili!ar cualquiera de las funciones que forman parte de las bibliotecas estándar de Csólo hace falta reali!ar una llamada a dicha función.

    "n ciencias de la computación una biblioteca %del inglés library* es un conjuntode subprogramas utili!ados para desarrollar soft)are. as bibliotecas contienen código ydatos que proporcionan servicios a programas independientes es decir pasan a formar

    parte de éstos. "sto permite que el código y los datos se compartan y puedanmodificarse de forma modular . Algunos programas ejecutables pueden ser a la ve!programas independientes y bibliotecas pero la mayor-a de éstas no son ejecutables."jecutables y bibliotecas hacen referencias %llamadas enlaces* entre s- a través de unproceso conocido como enlace que por lo general es reali!ado porun soft)are denominado enla!ador .

     

    "

    http://es.wikipedia.org/wiki/Inform%C3%A1ticahttp://es.wikipedia.org/wiki/Subrutinahttp://es.wikipedia.org/wiki/Softwarehttp://es.wikipedia.org/wiki/Modularidadhttp://es.wikipedia.org/wiki/Softwarehttp://es.wikipedia.org/wiki/Enlazadorhttp://es.wikipedia.org/wiki/Inform%C3%A1ticahttp://es.wikipedia.org/wiki/Subrutinahttp://es.wikipedia.org/wiki/Softwarehttp://es.wikipedia.org/wiki/Modularidadhttp://es.wikipedia.org/wiki/Softwarehttp://es.wikipedia.org/wiki/Enlazador

  • 8/18/2019 Unidad III Programación Modular

    7/31

    E(em%lo de librer,a est-ndar. math

    4ath es el nombre de una librer-a que incorpora funciones matemáticas. Para poderutili!ar dichas funciones hay que a,adir la instrucción include Bmath.h al principio delcódigo de nuestro archivo. Cada directiva include se coloca en una l-nea separada y no

    requiere punto y coma al ser una indicación al compilador y no una instrucción de verdad."sta librer-a contiene las siguientes funciones %se indican los prototipos y uso*2

     

    Identificación y organiación de arci!os

    "n los sistemas informáticos modernos los archivos siempre tienen nombres. osarchivos se ubican en directorios. "l nombre de un archivo debe ser #nico en esedirectorio. "n otras palabras no puede haber dos archivos con el mismo nombre en elmismo directorio.

    "l nombre de un archivo y la ruta al directorio del archivo lo identifica de manera un-vocaentre todos los demás archivos del sistema informático 'no puede haber dos archivoscon el mismo nombre y ruta'. "l aspecto del nombre depende del tipo de sistemainformático que se use. as primeras computadoras sólo permit-an unas pocas letras od-gitos en el nombre de un archivo pero las computadoras modernas permiten nombreslargos que contengan casi cualquier combinación de letras unicode y d-gitos unicode

    Prototi%o Descri%ción

    Int abs/int n0 (evuelve el valor absoluto del n#meroentero indicado.

    Int cell/double n0 /edondea el numerodecimal nobteniendo el menor enteromayor o igual que n es decir

    cell%5.6* devuelve el 6 y cell%5.N* ydevuelve 6.

    double cos/double n0 Jbtiene el coseno de n%n se e0presaen radianes*.

    double e%/double n0 Jbtiene en.

    double fabs/double n0 Jbtiene el valor absolutode n% siendo n un n#mero double*

    Int floor/double n0 /edondea el n#mero

    decimal nobteniendo el mayor enteromenor o igual que n. es decir floor%5.6*devuelve 5 y de floor%5.N* tambiéndevuelve 5.

    http://es.wikipedia.org/wiki/Unicodehttp://es.wikipedia.org/wiki/Unicode

  • 8/18/2019 Unidad III Programación Modular

    8/31

    haciendo más fácil entender el propósito de un archivo de un vista!o. Algunos sistemasinformáticos permiten nombres de archivo que contengan espacios2 otros no. adistinción entre may#sculas y min#sculas en los nombres de archivo está determinadapor el sistema de archivos. os sistemas de archivos +ni0 distinguen normalmente entremay#sculas y min#sculas y permiten a las aplicaciones a nivel de usuario crear archivoscuyos nombres difieran solamente en si los caracteres están en may#sculas omin#sculas.4icrosoft Oindo)s reconoce varios sistemas de archivos cada uno condiferentes pol-ticas en cuanto a la distinción entre may#sculas y min#sculas. "l popularantiguo sistema de archivos A& puede tener varios archivos cuyos nombres difieran#nicamente en las may#sculas y min#sculas si el usuario utili!a un editor de discos paraeditar los nombres de archivo en las entradas de directorio. as aplicaciones de usuariosin embargo normalmente no permitirán al usuario crear varios archivos con el mismonombre pero con diferentes letras en may#sculas y min#sculas.

     

    3.3 ntrada ! salida

    as funciones que forman parte de la biblioteca estándar de C funciones estándar opredefinidas están divididas en grupos. &odas las funciones que pertenecen a un mismogrupo se definen en el mismo fichero de cabecera. os nombres de los ficheroscabeceras de C se muestran en la siguiente tabla:

    Cuando deseamos utili!ar cualquiera de las funciones estándar de C primero debemosutili!ar la directiva de precompilación include para incluir los ficheros cabecera ennuestro programa. Por otra parte antes de utili!ar una función primero debemosconocer las caracter-sticas de dicha función es decir el n#mero y tipo de datos de sus

    argumentos y el tipo de valor que devuelve. "sta información es proporcionada por losprototipos de función.

    os grupos de funciones estándar más comunes son:

    ' entrada?salida estándar 

    ' matemáticas

    ' de conversión

    ' diagnóstico

    ' de manipulación de memoria

    ' control de proceso

    ' ordenación

    ' directorios

    http://es.wikipedia.org/wiki/Sistema_de_archivoshttp://es.wikipedia.org/wiki/Microsoft_Windowshttp://es.wikipedia.org/wiki/File_Allocation_Tablehttp://es.wikipedia.org/w/index.php?title=Editor_de_discos&action=edit&redlink=1http://es.wikipedia.org/w/index.php?title=Entrada_de_directorio&action=edit&redlink=1http://es.wikipedia.org/wiki/Sistema_de_archivoshttp://es.wikipedia.org/wiki/Microsoft_Windowshttp://es.wikipedia.org/wiki/File_Allocation_Tablehttp://es.wikipedia.org/w/index.php?title=Editor_de_discos&action=edit&redlink=1http://es.wikipedia.org/w/index.php?title=Entrada_de_directorio&action=edit&redlink=1

  • 8/18/2019 Unidad III Programación Modular

    9/31

    ' fecha y hora

    ' b#squeda

    ' manipulación de cadenas

    ' gráficos

    ' etcétera

    Podemos incluir tantos ficheros de cabecera como nos haga falta incluyendo losficheros de cabecera que hemos creado y donde hemos definido nuestras funciones. "nel resto de este apartado veremos algunas de las funciones de la entrada?salidaestándar más utili!adas.

    "n C no e0iste ninguna palabra clave para reali!ar la entrada y salida de datos %"?S*. Sereali!an a través de funciones de biblioteca %concretamente la biblioteca stdio.h vercap-tulo 36*.

    as funciones principales que reali!an la entrada y salida sin formato son:getchar%*: eeun carácter del teclado. "spera hasta que se pulsa una tecla y entonces devuelve suvalor.

    putchar%*: 8mprime un carácter en la pantalla en la posición actual del cursor.

    gets%*: ee una cadena de caracteres introducida por el teclado y la sit#a en unadirección apuntada por su argumento de tipo puntero a carácter.

    puts%*: "scribe su argumento de tipo cadena en la pantalla seguida de un carácter desalto de l-nea.

    "l siguiente fragmento de código lee un carácter del teclado y lo muestra por pantalla. Acontinuación lee una cadena %de 3= caracteres incluido el carácter nulo* y también lamuestra por pantalla:

    include Bstdio.h

    main%*

    E

    charcadenaQ3=R2

    int i2

    iDgetchar%*2

    putchar%i*2

    gets%cadena*2

  • 8/18/2019 Unidad III Programación Modular

    10/31

  • 8/18/2019 Unidad III Programación Modular

    11/31

    má0imo las ( posiciones después de un punto.

    Iormalmente el n#mero se ajusta por la derecha para el campo de I posiciones que lehemos dicho que utilice2 si deseamos el ajuste por la i!quierda se a,ade un signomenos precediendo al valor I %'I*.

    +na l precediendo a I %p.e. Fl>d* significa que transmitiremos un longint : si por elcontrario es una h significa que transmitiremos un short int.

    "0iste otro tipo de carácter especial los caracteres de escape que tienen un significadoespecial. os caracteres de escape son los siguientes:

    Gn Iueva l-nea

    Gt &abulador 

    Gb "spacio atrás

    Gr /etorno de carroGf Comien!o de página

    Ga Pitido sonoro

    GU Comilla simple

    G1 Comilla doble

    GG Varra invertida

    G0dd Código ASC88 en notación he0adecimal %cada d representa un d-gito*

    Gddd Código ASC88 en notación octal %cada d representa un d-gito*

    a lista de argumentos estará separada por comas. (ebe e0istir una correspondenciabiyectiva entre los caracteres de transmisión %aquellos que comien!an con un F* y lalista de argumentos a transmitir.

    Cabe destacar una diferencia en la lista de argumentos entre las funciones printf%* yscanf%*. "n estáultima función %scanf%** la lista de argumentos va precedida por eloperador de dirección%K* puesto que scanf%* requiere que los argumentos sean lasdirecciones de las variables en lugar de ellas mismas.

    %K* puesto que scanf%* requiere que los argumentos sean las direcciones de lasvariables en lugar de ellas mismas.

    3." Archi#o

    "n C un archivo puede ser cualquier cosa desde un archivo de disco a un terminal ouna impresora. Se asocia una secuencia con un archivo espec-fico reali!ando unaoperación de apertura una ve! que está abierto la información puede ser intercambiada

  • 8/18/2019 Unidad III Programación Modular

    12/31

    entre éste y el programa. "l puntero a un archivo es el hilo que unifica el sistema de "?Scon buffer. +n puntero a un archivo es un puntero a una información que define variascosas sobre él incluyendo el nombre el estado y la posición actual del archivo. "nesencia el puntero a un archivo identifica un archivo en disco espec-fico y utili!a lasecuencia asociada para dirigir el funcionamiento de las funciones de "?S con buffer.Para obtener una variable de tipo puntero a archivo se debe utili!ar una sentencia comola siguiente:8" @punt2

    a función fopen%* abre una secuencia para que pueda ser utili!ada y le asocia a unarchivo. Su prototipo es: 8" @fopen%constchar @nombreWarchivo constchar @modo*2(onde nombreWarchivo es un puntero a una cadena de caracteres que representan unnombre válido del archivo y puede incluir una especificación de directorio. a cadenaque apunta modo determina cómo se abre el archivo. os modos son los siguientes:

    r: Abre un archivo de te0to para lectura.

    ): Crea un archivo de te0to par escrituraa: Abre un archivo de te0to para a,adir 

    rM: Abre un archivo de te0to para lectura?escritura

    )M: Crea un archivo de te0to para lectura?escritura

    aM: A,ade o crea un archivo de te0to para lectura?escritura

    a función fclose%* cierra una secuencia que fue abierta mediante una llamada a fopen%*."scribe toda la información que todav-a se encuentre en el buffer del disco y reali!a uncierre formal del archivo a nivel del sistema operativo. &ambién libera el bloque de

    control de archivo asociado con la secuencia dejándolo libre para su reutili!ación. Aveces es necesario cerrar alg#n archivo para poder abrir otro debido a la e0istencia deun l-mite del sistema operativo en cuanto al n#mero de archivos abiertos. Su prototipoes: intfclose%8" @fp*2

    a función putc%* escribe caracteres en un archivo que haya sido abierto previamentepara operaciones de escritura utili!ando la función fopen%*. Su prototipo es: intputc%intcar 8" @pf*2

    a función getc%* escribe caracteres en un archivo que haya sido abierto en modolectura mediante fopen%*. Su prototipo es: intgetc%8" @pf*2a función fputs%* escribe la

    cadena en la secuencia especificada. Su prototipo es: fputs%* escribe la cadena en lasecuencia especificada. Su prototipo es: intfputs%constchar @cad 8" @pf*2a funciónfgets%* lee una cadena de la secuencia especificada hasta que se lee un carácter desalto de l-nea o hasta que se han le-do longitud'3 caracteres.

    a función re)ind%* inicia el indicador de posición al principio del archivo indicado por suargumento. Su prototipo es: re)ind%* inicia el indicador de posición al principio del

  • 8/18/2019 Unidad III Programación Modular

    13/31

    archivo indicado por su argumento. Su prototipo es: voidre)ind%8" @pf*2

    "0isten otras muchas funciones en la biblioteca estándar de C %ver cap-tulo 36* comopueden serremove%*: Vorra el archivo especificado.

    fflush%*: ;ac-a el contenido de una secuencia de salida.

    fread%*: ee tipos de datos que ocupan más de un byte. Permiten la lectura de bloquesde cualquier tipo de datos.

    f)rite%*: "scribe tipos de datos que ocupan más de un byte. Permiten la escritura debloques de cualquier tipo de datos.

    fprintf%*: Xace las funciones de printf%* sobre un fichero.

    fscanf%*: Xace las funciones de scanf%* sobre un fichero.

    feof%*: (etecta el final de un fichero.

    ferror%*: (etecta 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 paraoperaciones de escritura utili!ando la función fopen%*.

    a función getc%* escribe caracteres en un archivo que haya sido abierto en modolectura mediante fopen%*. Su prototipo es:

    a función fputs%* escribe la cadena en la secuencia especificada. Su prototipo es:intfputs%constchar @cad 8" @pf*2

    a función fgets%* lee una cadena de la secuencia especificada hasta que se lee uncarácter de salto de l-nea o hasta que se han le-do longitud'3 caracteres. Su prototipoes: fgets%* lee una cadena de la secuencia especificada hasta que se lee un carácter desalto de l-nea o hasta que se han le-do longitud'3 caracteres. Su prototipoes:intfgets%char @cad 8" @pf*2

    3.$ %adenas

     

    ane(o de cadenas string.

    /ecordando la presentación de arreglos hecha %cap-tulo >* en donde las cadenas estándefinidas como un arreglo de caracteres o un apuntador a una porción de memoriaconteniendo caracteres ASC88. +na cadena en C es una secuencia de cero o máscaracteres seguidas por un caracter I+ o G=:

    http://www.fismat.umich.mx/mn1/manual/node6.html#chap:arregloshttp://www.fismat.umich.mx/mn1/manual/node6.html#chap:arreglos

  • 8/18/2019 Unidad III Programación Modular

    14/31

     

    "s importante preservar el caracter de terminación I+ ya que con éste es como Cdefine y maneja las longitudes de las cadenas. &odas las funciones de la bibliotecaestándar de C lo requieren para una operación satisfactoria.

    "n general aparte de algunas funciones restringidas en longitud  %strncat%* strncmp%* ystrncpy%** al menos que se creen cadenas a mano no se deberán encontrar problemas.Se deberán usar las funciones para manejo de cadenas y no tratar de manipular lascadenas en forma manual desmantelando y ensamblando cadenas.

     

    &odas las funciones para manejo de cadenas tienen su prototipo en:

    includeBstring.h

    as funciones más comunes son descritas a continuación:

    • char *strcpy(constchar *dest, constchar *orig) '' Copia la cadena de caracteresapuntada por orig %incluyendo el carácter terminador LG=L* al vector apuntadopordest. as cadenas no deben solaparse y la de destino debe sersuficientemente grande como para alojar la copia.

    • intstrcmp(constchar *s1, constchar *s) '' Compara las dos cadenas decaracteress3 y s5. (evuelve un entero menor igual o mayor que cero si seencuentra que s3es respectivamente menor que igual a o mayor que s5.

    • char *strerror(interrnum) '' (evuelve un mensaje de error que corresponde a un

    n#mero de error.

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

    • char *strncat(char *s1, const char *s, si!e"t n) '' Agregancaracteres de s5 a s3.

    • intstrncmp(constchar *s1, char *s, si!e"t n) '' Compara los primeros n caracteresde dos cadenas.

    • char *strncpy(constchar *s1, constchar *s, si!e"t n) '' Copia losprimeros ncaracteres de s5 a s3.

    • strcasecmp(constchar *s1, constchar *s) '' versión que ignora si son may#sculaso min#sculas de strcmp%*.

    • strncasecmp(constchar *s1, constchar *s, si!e"t n) '' versión insensible amay#sculas o min#sculas de strncmp%* que compara los primeros n caracteresdes3.

  • 8/18/2019 Unidad III Programación Modular

    15/31

    "l uso de muchas funciones es directo por ejemplo:

    char @s3 D 1Xola12

    char @s52

    intlongitud2

     

    longitud D strlen%1Xola1*2 ?@ long D 7 @?

    %void* strcpy%s5s3*2

    Jbservar que tanto strcat%* y strcopy%* regresan una copia de su primer argumento elcual es el arreglo destino. Jbservar también que orden de los argumentos es arreglodestino seguido por arreglo #uente lo cual a veces es una situación para hacerloincorrectamente.

    a función strcmp%* compara le0icográficamente las dos cadenas y regresa:

    • Menor que cero '' si s3 es lé0icamente menor que s52

    • $ero '' si s3 y s5 son lé0icamente iguales2

    • Mayor que cero '' si s3 es lé0icamente mayor que s52

    as funciones de copiado strncat%* strncmp%* y strncpy%* son versiones más restringidasque sus contrapartes más generales. /eali!an una tarea similar pero solamente paralos primerosn caracteres. Jbservar que el caracter de terminación I+ podr-a ser

    violado cuando se usa estas funciones por ejemplo:char @s3 D 1Xola12

    char @s5 D 52

    intlongitud D 52

     

    %void* strncpy%s5 s3 longitud*2 ?@ s5 D 1Xo1 @?donde s5 no tiene el terminador I+.

    "s importante preservar el caracter de terminación I+ ya que con éste es como Cdefine y maneja las longitudes de las cadenas. &odas las funciones de la bibliotecaestándar de C lo requieren para una operación satisfactoria.

    "n general aparte de algunas funciones restringidas en longitud  %strncat%* strncmp%* ystrncpy%** al menos que se creen cadenas a mano no se deberán encontrar problemas.Se deberán usar las funciones para manejo de cadenas y no tratar de manipular las

  • 8/18/2019 Unidad III Programación Modular

    16/31

    cadenas en forma manual desmantelando y ensamblando cadenas.

     

    &odas las funciones para manejo de cadenas tienen su prototipo en:

    includeBstring.h

    as funciones más comunes son descritas a continuación:

    • char *strcpy(constchar *dest, constchar *orig) '' Copia la cadena de caracteresapuntada por orig %incluyendo el carácter terminador LG=L* al vector apuntadopordest. as cadenas no deben solaparse y la de destino debe sersuficientemente grande como para alojar la copia.

    • intstrcmp(constchar *s1, constchar *s) '' Compara las dos cadenas decaracteress3 y s5. (evuelve un entero menor igual o mayor que cero si se

    encuentra que s3es respectivamente menor que igual a o mayor que s5.• char *strerror(interrnum) '' (evuelve un mensaje de error que corresponde a un

    n#mero de error.

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

    • char *strncat(char *s1, const char *s, si!e"t n) '' Agregancaracteres de s5 a s3.

    • intstrncmp(constchar *s1, char *s, si!e"t n) '' Compara los primeros n caracteresde dos cadenas.

    char *strncpy(constchar *s1, constchar *s, si!e"t n) '' Copia losprimeros ncaracteres de s5 a s3.

    • strcasecmp(constchar *s1, constchar *s) '' versión que ignora si son may#sculaso min#sculas de strcmp%*.

    • strncasecmp(constchar *s1, constchar *s, si!e"t n) '' versión insensible amay#sculas o min#sculas de strncmp%* que compara los primeros n caracteresdes3.

    "l uso de muchas funciones es directo por ejemplo:

    char @s3 D 1Xola12char @s52

    intlongitud2

     

  • 8/18/2019 Unidad III Programación Modular

    17/31

    longitud D strlen%1Xola1*2 ?@ long D 7 @?

    %void* strcpy%s5s3*2

    Jbservar que tanto strcat%* y strcopy%* regresan una copia de su primer argumento elcual es el arreglo destino. Jbservar también que orden de los argumentos es arreglodestino seguido por arreglo #uente lo cual a veces es una situación para hacerloincorrectamente.

    a función strcmp%* compara le0icográficamente las dos cadenas y regresa:

    • Menor que cero '' si s3 es lé0icamente menor que s52

    • $ero '' si s3 y s5 son lé0icamente iguales2

    • Mayor que cero '' si s3 es lé0icamente mayor que s52

    as funciones de copiado strncat%* strncmp%* y strncpy%* son versiones más restringidasque sus contrapartes más generales. /eali!an una tarea similar pero solamente paralos primerosn caracteres. Jbservar que el caracter de terminación I+ podr-a serviolado cuando se usa estas funciones por ejemplo:

    char @s3 D 1Xola12

    char @s5 D 52

    intlongitud D 52

     

    %void* strncpy%s5 s3 longitud*2 ?@ s5 D 1Xo1 @?donde s5 no tiene el terminador I+.

    3.6 programaion de interfaces

    na

    interfa! de programación representa la capacidad de comunicación entre componentesde soft)are. Se trata del conjunto de llamadas a ciertas bibliotecas que ofrecen acceso aciertos servicios desde los procesos y representa un método paraconseguir abstracción en la programación generalmente %aunque no necesariamente*entre los niveles o capas inferiores y los superiores del soft)are. +no de los principalespropósitos de una AP8 consiste en proporcionar un conjunto de funciones de usogeneral por ejemplo para dibujar ventanas o iconos en la pantalla. (e esta forma

    +

    http://es.wikipedia.org/wiki/Softwarehttp://es.wikipedia.org/wiki/Abstracci%C3%B3n_(programaci%C3%B3n_orientada_a_objetos)http://es.wikipedia.org/wiki/Programaci%C3%B3nhttp://es.wikipedia.org/wiki/Subrutinahttp://es.wikipedia.org/wiki/Ventanahttp://es.wikipedia.org/wiki/Icono_(inform%C3%A1tica)http://es.wikipedia.org/wiki/Pantalla_de_ordenadorhttp://es.wikipedia.org/wiki/Softwarehttp://es.wikipedia.org/wiki/Abstracci%C3%B3n_(programaci%C3%B3n_orientada_a_objetos)http://es.wikipedia.org/wiki/Programaci%C3%B3nhttp://es.wikipedia.org/wiki/Subrutinahttp://es.wikipedia.org/wiki/Ventanahttp://es.wikipedia.org/wiki/Icono_(inform%C3%A1tica)http://es.wikipedia.org/wiki/Pantalla_de_ordenador

  • 8/18/2019 Unidad III Programación Modular

    18/31

    losprogramadores se benefician de las ventajas de la AP8 haciendo uso de sufuncionalidad evitándose el trabajo de programar todo desde el principio. as AP8sasimismo son abstractas: el soft)are que proporciona una cierta AP8 generalmente esllamado la implementación de esa AP8.

    os puertos de comunicación de la PC son de particular interés para el estudioso de laelectrónica ya que le permiten utili!ar una computadora personal para controlar todotipo circuitos electrónicos utili!ados principalmente en actividades de automati!ación deprocesos adquisición de datos tareas repetitivas y otras actividades que demandanprecisión. $ste art-culo es el primero de una serie que anali!ará diversos usos para elpuerto paralelo de la PC.

    "0isten dos métodos básicos para transmisión de datos en las computadorasmodernas."n un esquema de transmisión de datos en serie un dispositivo env-a datos a otro ara!ón de un bit a la ve! a través de un cable. Por otro lado en un esquema

    de transmisión de datos en paralelo un dispositivo env-a datos a otro a una tasa de nn#mero de bits a través de n n#mero de cables a un tiempo. Ser-a fácil pensar que unsistema en paralelo es n veces más rápido que un sistema enserie sin embargo esto nose cumple básicamente el impedimento principal es el tipo de cable que se utili!a parainterconectar los equipos.

    Por ejemplo se puede ver la tarea de escribir 1Xola 4undo1 sobre la pantalla endiferentes niveles de abstracción:

    3. Xaciendo todo el trabajo desde el principio:

    3. &ra!a sobre papel milimetrado la forma de las letras %y espacio* 1Xo la4u n d o1.

    5. Crea una matri! de cuadrados negros y blancos que se asemeje a lasucesión de letras.

    6. 4ediante instrucciones en ensamblador  escribe la información de la matri!en la memoria intermedia %1buffer1* de pantalla.

    7. 4ediante la instrucción adecuada ha! que la tarjeta gráfica realiceel volcado de esa información sobre la pantalla.

    5. Por medio de un sistema operativo para hacer parte del trabajo:

    3. Carga una fuente tipográfica proporcionada por el sistema operativo.

    5. Xa! que el sistema operativo borre la pantalla.

    6. Xa! que el sistema operativo dibuje el te0to 1Xola 4undo1 usando la fuentecargada.

    http://es.wikipedia.org/wiki/Programadorhttp://es.wikipedia.org/wiki/Softwarehttp://es.wikipedia.org/wiki/Programa_Hola_Mundohttp://es.wikipedia.org/wiki/Abstracci%C3%B3n_(programaci%C3%B3n_orientada_a_objetos)http://es.wikipedia.org/wiki/Papelhttp://es.wikipedia.org/wiki/Matriz_(programaci%C3%B3n)http://es.wikipedia.org/wiki/Cuadradohttp://es.wikipedia.org/wiki/Ensambladorhttp://es.wikipedia.org/wiki/Ensambladorhttp://es.wikipedia.org/wiki/Memoria_intermediahttp://es.wikipedia.org/wiki/Tarjeta_gr%C3%A1ficahttp://es.wikipedia.org/wiki/Volcadohttp://es.wikipedia.org/wiki/Sistema_operativohttp://es.wikipedia.org/wiki/Fuentehttp://es.wikipedia.org/wiki/Programadorhttp://es.wikipedia.org/wiki/Softwarehttp://es.wikipedia.org/wiki/Programa_Hola_Mundohttp://es.wikipedia.org/wiki/Abstracci%C3%B3n_(programaci%C3%B3n_orientada_a_objetos)http://es.wikipedia.org/wiki/Papelhttp://es.wikipedia.org/wiki/Matriz_(programaci%C3%B3n)http://es.wikipedia.org/wiki/Cuadradohttp://es.wikipedia.org/wiki/Ensambladorhttp://es.wikipedia.org/wiki/Memoria_intermediahttp://es.wikipedia.org/wiki/Tarjeta_gr%C3%A1ficahttp://es.wikipedia.org/wiki/Volcadohttp://es.wikipedia.org/wiki/Sistema_operativohttp://es.wikipedia.org/wiki/Fuente

  • 8/18/2019 Unidad III Programación Modular

    19/31

    5 +sando una aplicación %que a su ve! usa el sistema operativo* para reali!ar lamayor parte del trabajo:

    3. "scribe un documento X&4 con las palabras 1Xola 4undo1 para queun navegador Oeb como Toogle Chrome 4o!illa irefo0Jpera o 8nternet

    "0plorer  pueda representarlo en el monitor .Como se puede ver la primera opción requiere más pasos cada uno de los cuales esmucho más complicado que los pasos de las opciones siguientes. Además no resultanada práctico usar el primer planteamiento para representar una gran cantidadde información como un art-culo enciclopédico sobre la pantalla mientras que elsegundo enfoque simplifica la tarea eliminando un paso y haciendo el resto mássencillos y la tercera forma simplemente requiere escribir 1Xola 4undo1. Sin embargolas AP8s de alto nivel generalmente pierden fle0ibilidad2 por ejemplo resulta mucho másdif-cil en un navegador )eb hacer girar te0to alrededor de un punto con un contornoparpadeante que programarlo a bajo nivel. Al elegir usar una AP8 se debe llegar a un

    cierto equilibrio entre su potencia simplicidad y pérdida de fle0ibilidad.

     

    3.6.1 Programación de puertos de la computadora

     

    +n puerto en la computadora es por donde la información fluye hacia dentro o haciafuera. os dispositivos Xard)are como la impresora o modem pueden ser llamadospuertos un puerto que manda información fuera de tu computadora puede ser el monitor o la impresora. +n puerto que recibe información seria el modem o un scanner.

    "l puerto paralelo del PC es un conjunto de dispositivos %conector circuitos electrónicosetc.* que permite la cone0ión de un equipo informático con el propósito de intercambiarinformación digital.

    http://es.wikipedia.org/wiki/Aplicaci%C3%B3n_(inform%C3%A1tica)http://es.wikipedia.org/wiki/HTMLhttp://es.wikipedia.org/wiki/HTMLhttp://es.wikipedia.org/wiki/Navegador_Webhttp://es.wikipedia.org/wiki/Google_Chromehttp://es.wikipedia.org/wiki/Mozilla_Application_Suitehttp://es.wikipedia.org/wiki/Firefoxhttp://es.wikipedia.org/wiki/Firefoxhttp://es.wikipedia.org/wiki/Opera_(navegador)http://es.wikipedia.org/wiki/Internet_Explorerhttp://es.wikipedia.org/wiki/Internet_Explorerhttp://es.wikipedia.org/wiki/Pantalla_de_ordenadorhttp://es.wikipedia.org/wiki/Informaci%C3%B3nhttp://es.wikipedia.org/wiki/Flexibilidadhttp://es.wikipedia.org/wiki/Navegador_webhttp://es.wikipedia.org/wiki/Aplicaci%C3%B3n_(inform%C3%A1tica)http://es.wikipedia.org/wiki/HTMLhttp://es.wikipedia.org/wiki/Navegador_Webhttp://es.wikipedia.org/wiki/Google_Chromehttp://es.wikipedia.org/wiki/Mozilla_Application_Suitehttp://es.wikipedia.org/wiki/Firefoxhttp://es.wikipedia.org/wiki/Opera_(navegador)http://es.wikipedia.org/wiki/Internet_Explorerhttp://es.wikipedia.org/wiki/Internet_Explorerhttp://es.wikipedia.org/wiki/Pantalla_de_ordenadorhttp://es.wikipedia.org/wiki/Informaci%C3%B3nhttp://es.wikipedia.org/wiki/Flexibilidadhttp://es.wikipedia.org/wiki/Navegador_web

  • 8/18/2019 Unidad III Programación Modular

    20/31

     

    (esde el punto de vista del soft)are el puerto paralelo son tres registros de Y bits cadauno ocupando tres direcciones de 8?J consecutivas de la arquitectura 0YZ.

    (esde el punto de vista hard)are el puerto es un conector hembra (V5> con docesalidas y cinco entradas con Y l-neas de masa.

    a función normal es transferir datos a una impresora a través de las Y l-neas de datosusando las se,ales restantes como control de flujo.

    os puertos de comunicación de la PC son de particular interés para el estudioso de laelectrónica ya que le permiten utili!ar una computadora personal para controlar todo tipocircuitos electrónicos utili!ados principalmente en actividades de automati!ación deprocesos adquisición de datos tareas repetitivas y otras actividades que demandanprecisión.

    "0isten dos métodos básicos para transmisión de datos en las computadoras modernas.

    "n un esquema de transmisión de datos en serie un dispositivo env-a datos a otro ara!ón de un bit a la ve! a través de un cable. Por otro lado en un esquema detransmisión de datos en paralelo un dispositivo env-a datos a otro a una tasa denn#merode bits a través deun n#mero de cables a un tiempo. Ser-a fácil pensar que un sistemaen paralelo es n veces más rápido que un sistema en serie sin embargo esto no secumple básicamente el impedimento principal es el tipo de cable que se utili!a parainterconectar los equipos. Si bien un sistema de comunicación en paralelo puede utili!ar

  • 8/18/2019 Unidad III Programación Modular

    21/31

    cualquier n#mero de cables para transmitir datos la mayor-a de los sistemas paralelosutili!an ocho l-neas de datos para transmitir un byte a la ve! como en todo e0istene0cepciones por ejemplo el estándar SCS8 permite transferencia de datos en esquemasque van desde los ocho bits y hasta los treinta y dos bits en paralelo. "n éste art-culonos concentraremos en transferencias de ocho bits ya que ésta es la configuración delpuerto paralelo de una PC.

    +n t-pico sistema de comunicación en paralelo puede ser de una dirección%unidireccional* o de dos direcciones %bidireccional*. "l más simple mecanismo utili!adoen un puerto paralelo de una PC es de tipo unidireccional y es el que anali!aremos enprimer lugar. (istinguimos dos elementos: la parte transmisora y la parte receptora.

    a parte transmisora coloca la información en las l-neas de datos e informa a la partereceptora que la información %los datos* están disponibles2 entonces la parte receptoralee la información en las l-neas de datos e informa a la parte transmisora que ha tomadola información %los datos*. Jbserve que ambas partes sincroni!an su respectivo acceso

    a las l-neas de datos la parte receptora no leer á las l-neas de datos hasta que la partetransmisora se lo indique en tanto que la parte transmisora no colocará nuevainformación en las l-neas de datos hasta quela parte receptora remueva la información yle indique a la parte transmisora que ya ha tomado los datos a ésta coordinación deoperaciones se le llama acuerdo ó entendimiento. Vien en estos ámbitos tecnológicoses recomendable utili!ar ciertas palabras en inglés que nos permiten irónicamente unmejor entendimiento de los conceptos tratados. /epito: a la coordinación de operacionesentre la parte transmisora y la parte receptora se le llama handsha[ing que en espa,oles elacto con el cual dos partes manifiestan estar de acuerdo es decir se dan unapretón de manos.

     

    5e di!iden en 2 ti%os'

     

    a0 Puertos f,sicos de la com%utadora' son conectores integrados en tarjetas dee0pansión ó en la tarjeta principal 14otherboard1 de la computadora2 dise,ados conformas y caracter-sticas electrónicas especiales utili!ados para interconectar una grangama de dispositivos e0ternos con la computadora es decir los periféricos. +sualmenteel conector hembra estará montado en la computadora y el conector macho estará

    integrado en los dispositivos ó cables. ;ar-a la velocidad de transmisión de datos y laforma f-sica del puerto acorde al estándar y al momento tecnológico.

      Anteriormente los puertos ven-an integrados e0clusivamente en tarjetas de e0pansióndenominadas tarjetas controladoras posteriormente se integraron en la tarjeta principal14otherboard1 y tales controladoras perdieron competencia en el mercado peroactualmente se siguen comerciali!ando sobre todo para servidores.

  • 8/18/2019 Unidad III Programación Modular

    22/31

    b0 Puertos lógicos de la com%utadora' son puntos de acceso entre equipos para eluso de servicios y flujo de datos entre ellos ejemplos el puerto 53 correspondiente alservicio &P %permite el intercambio de archivos* ó el puerto >3> que está asociado conel servicio de impresión.

    onochobits

    podemos escribir en el puerto un total de 5>Z valores diferentes cada uno de éstosrepresenta un byte de información y cada byte puede representar una acción concretaque nosotros podemos definir de acuerdo a nuestras necesidades. "n éste art-culo elobjetivo es entender cómo trabajar con el puerto paralelo por lo tanto hagamos unprograma que nos permita escribir un n#mero cualquiera entre = y 5>> de tal maneraque sea posible visuali!ar el valoren formato binario. "n primer lugar consulte la

    documentación de su compilador para verificar la correcta sinta0is de la función que nossirve para escribir en el puerto en el caso espec-fico de Symantec CMM dicha funcióneoutp% *. $sta función requiere dos parámetros el primero de tipo unsignedint queespecifica la dirección del puerto paralelo y el segundo de tipo char que especifica elvalor a escribir en las l-neas de datos de puerto. +na t-pica llamada a la función outp% *se parece a esto:

     

    Se aprecia la facilidad de manejo de la función aunque diferentes compiladores dan asus respectivas funciones nombres diferentes la mecánica es la misma se requierendos parámetros la dirección del puerto y el valor a escribir en el puerto. "studie elsiguiente código:

     

    ?@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

    @puerto5.c

    @@"scribe datos al puerto paralelo de la PC

    @

    @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@?

    C

  • 8/18/2019 Unidad III Programación Modular

    23/31

  • 8/18/2019 Unidad III Programación Modular

    24/31

    if%disponibleQ=RDD3*puerto%direccionQ=R*2elseE

    printf%1"//J/: P+"/&J IJ (8SPJI8V"Gn1*2return =2

    Hbrea[2

    case 5:?@ Puerto P&5 @?if%disponibleQ3RDD3*puerto%direccionQ3R*2elseE

    printf%1"//J/: P+"/&J IJ (8SPJI8V"Gn1*2return =2

    Hbrea[2

    case 6:?@ Puerto P&6 @?if%disponibleQ5RDD3*puerto%direccionQ5R*2elseE

    printf%1"//J/: P+"/&J IJ (8SPJI8V"Gn1*2return =2

    H

     

    brea[2

    default:

    printf%1"//J/: JPC8JI 8ICJ//"C&A]Gn1*2brea[2

    Hif%seleccion]D=*

    Eprintf%1Seleccione otra opcionGn1*2scanf%1Fd1 Kseleccion*2

  • 8/18/2019 Unidad III Programación Modular

    25/31

    H

    H)hile%seleccion]D=*2

    return =2

    Hintpuerto%intdirecc*

    E

    unsignedchar valor2 ?@ Solo valores entre = y 5>> @?

    printf%1Ahora puede escribir cualquier valorGn1*2printf%1entre 3 y 5>> = para terminar el programaGn1*2do

    Eprintf%1;alor al puerto\Gn1*2

    scanf%1Fd1 Kvalor*2outp%direcc valor*2printf%1Se ha escrito Fd al puertoGn1 valor*2

    H)hile%valor]D=*2

    returnseleccionD=2

    H

     

    "l programa determina el n#mero de puertos paralelo instalados en la

    Computadora y almacena sus respectivas direcciones en el arreglo llamado direcciónen caso de encontrarse una dirección válida además se establece en

    3 el valor del arreglo llamado disponibleQiR simplemente como una medida de seguridadadicional. Como resultado de estas acciones el programa despliega un men# basado en

    los puertos encontrados en este punto +sted puede seleccionar en caso de quedisponga de más de un puerto el puerto en donde está conectado el circuito mostradoen el diagrama de arriba.

     

    +na ve! seleccionado el puerto +sted puede escribir un valor cualquiera comprendidoentre = y 5>>. 8ndependientemente del puerto seleccionado toda la funcionalidad del

  • 8/18/2019 Unidad III Programación Modular

    26/31

    programa está encapsulada en la función de tipo int llamada puerto% * a la cual se lepasa un #nico parámetro que es la dirección del puerto seleccionado. a función estácodificada de tal forma que al escribir un = el programa termina de ésta manera al cerrar el programa las l-neas de datos del puerto paralelo están todas en un nivel lógico bajo.$ste programa y el circuito asociado son #tiles para entender de forma visual la forma derepresentar valores en formato binario además establece las bases de trabajo paraotros proyectos de control basados en computadora.

    3.6.3 laboración de interfaces

     

    "l dise6o de interfa de usuario o ingenier,a de la interfa es el dise,ode computadoras aplicaciones máquinas dispositivos de comunicaciónmóvilaplicaciones de soft)are y sitios )eb enfocado en la e0periencia de usuario y lainteracción.

    Iormalmente es una actividad multidisciplinar que involucra a varias ramas del dise,o yel conocimiento como el dise,o gráfico industrial )eb de soft)are y la ergonom-a2 yestá implicado en un amplio rango de proyectos desde sistemas para computadorasveh-culos hasta aviones comerciales.

    Su objetivo es que las aplicaciones o los objetos sean más atractivos y además hacerque la interacción con el usuario sea lo más intuitiva posible conocido como el dise,ocentrado en el usuario. "n este sentido las disciplinas del dise,o industrial y gráfico seencargan de que la actividad a desarrollar se comunique y aprenda lo más rápidamentea través de recursos como la gráfica los pictogramas los estereotipos y la simbolog-a

    todo sin afectar el funcionamiento técnico eficiente.7i%os de Interfaces

    El interface es de dos ti%os 8ue ellos son'

    Interface Paralelo

    +n interface paralelo transfiere datos en la forma de uno o varios bytes en la paralela a odel dispositivo.

     Asuma un ordenador 3Z bites direccionable por el byte donde la entrada ' salidacontrolada del programa es usada con asincrónico del ducto y el cronometraje de

    transferencias de ducto es unos. "l interface contiene memorias intermedias de datosseparadas para insumo y producción y hay un registro de estado asociado con cadamemoria intermedia. Para una operación de insumo y la palabra de datos es transferidadel dispositivo de producción a registros y puesta a 3. Cuando tan pronto como la se,allista es recibida esto habilita las puertas de producción correspondiente al byte dirigidoo palabra y colocación de sus contenido en las l-neas de datos. &ambién la se,al deproducción aceptan también es puesto a 3. "ste constituye la respuesta del interface a

    http://es.wikipedia.org/wiki/Computadorashttp://es.wikipedia.org/wiki/M%C3%B3vilhttp://es.wikipedia.org/wiki/Softwarehttp://es.wikipedia.org/wiki/Dise%C3%B1o_gr%C3%A1ficohttp://es.wikipedia.org/wiki/Dise%C3%B1o_industrialhttp://es.wikipedia.org/wiki/Dise%C3%B1o_webhttp://es.wikipedia.org/wiki/Ergonom%C3%ADahttp://es.wikipedia.org/wiki/Computadorashttp://es.wikipedia.org/wiki/M%C3%B3vilhttp://es.wikipedia.org/wiki/Softwarehttp://es.wikipedia.org/wiki/Dise%C3%B1o_gr%C3%A1ficohttp://es.wikipedia.org/wiki/Dise%C3%B1o_industrialhttp://es.wikipedia.org/wiki/Dise%C3%B1o_webhttp://es.wikipedia.org/wiki/Ergonom%C3%ADa

  • 8/18/2019 Unidad III Programación Modular

    27/31

    la petición le-da emitida por la unidad central de proceso. &an pronto como la se,al listase cae a = la se,al aceptaré es borrada y todo el ducto es borrado. Iote que cuando lamemoria intermedia es dirigida la bandera de estado de insumo es reiniciali!ada a =."ste es esencial a fin de garanti!ar que cada art-culo de datos de insumo es le-do por elordenador sólo una ve!. +na operación de producción procede del mismo modo cuandola se,al habilitaré es puesta a 3. "l insumo de reloj a la memoria intermedia deproducción es puesto. "ste resulta en la carga de la memoria intermedia con los datosen las l-neas de datos. Al mismo tiempo es puesto a 3 indicar que el interface está listoa aceptar una nueva transferencia de producción.

    Interface #onsecuti!o

    +n interface consecutivo contiene el mismo recorrido de control y dirección que elinterface paralelo pero con una adición controla para transferir datos en serie entreregistros y el dispositivo de entrada ' salida. Aqu- un chip es usado que es un barco decircuito integrado que contiene todo el recorrido lógico para la conversión paralela y

    consecutiva requerida. os dos registros y las banderas de estado son incluidos en elchip.

    3.6." %ontrol de interfaces a tra#&s de computadora

     

    "n aplicaciones de control que requieren que el procesamiento de la información serealice en una computadora personal %PC* la velocidad de transferencia de datos desdey hacia la computadora puede ser un factor limitante. Para superar esta limitación sepropone utili!ar el bus +SV como interface. "n este articulo se muestra un ejemplo

    aplicado al control de un bra!o robot y como el cambio a una interface +SV permitemejorar la tasa de transferencia de datos entre la computadora y el sistema de controldel bra!o robot.

     

    8nstrumentación basada en PC es fácil de implementar el uso de herramientas y tarjetasde Iational 8nstruments ' Prueba y 4edida. a mayor-a de los instrumentos se puedencomunicar con el PC en la interfa! TP8V .

    Puede empe!ar por aprender a usar el puerto paralelo y puerto serie. 48(8'puerto de juegos también tiene lo suficiente para ayudarle a comen!ar aprender interfacesinformáticas en el hogar.8ntente un peque,o e0perimento fácil de /S'565 del sensor de temperaturaPo)ered. "sto puede empe!ar también.os pocos ejemplos de arriba muestran una instrumentación ' Anali!ador ógico Li[eL deinterfa! y un circuito de control del relé de visuali!ación. Son ejemplos he intentado porlos estudiantes a probar y aprender.

    http://translate.googleusercontent.com/translate_c?hl=es&prev=/search%3Fq%3Dcontrol%2Bde%2Binterfaces%2Ba%2Btraves%2Bde%2Bcomputadoras%26hl%3Des%26client%3Dfirefox-a%26rls%3Dorg.mozilla:es-ES:official%26channel%3Dnp%26biw%3D1660%26bih%3D797%26prmd%3Dimvns&rurl=translate.google.com.mx&sl=en&u=http://www.ni.com/&usg=ALkJrhgRx3vQ2dLuDiTVpP553RQ99zgFqAhttp://translate.googleusercontent.com/translate_c?hl=es&prev=/search%3Fq%3Dcontrol%2Bde%2Binterfaces%2Ba%2Btraves%2Bde%2Bcomputadoras%26hl%3Des%26client%3Dfirefox-a%26rls%3Dorg.mozilla:es-ES:official%26channel%3Dnp%26biw%3D1660%26bih%3D797%26prmd%3Dimvns&rurl=translate.google.com.mx&sl=en&u=http://www.interfacebus.com/Design_Connector_GPIB.html&usg=ALkJrhj6J6ad8ZMc29D1J2WCSquwNKIbqghttp://translate.googleusercontent.com/translate_c?hl=es&prev=/search%3Fq%3Dcontrol%2Bde%2Binterfaces%2Ba%2Btraves%2Bde%2Bcomputadoras%26hl%3Des%26client%3Dfirefox-a%26rls%3Dorg.mozilla:es-ES:official%26channel%3Dnp%26biw%3D1660%26bih%3D797%26prmd%3Dimvns&rurl=translate.google.com.mx&sl=en&u=http://users.chariot.net.au/~gmarts/miditech.htm&usg=ALkJrhidvXYQbuEC-cAP73cgZetJ13rIUQhttp://translate.googleusercontent.com/translate_c?hl=es&prev=/search%3Fq%3Dcontrol%2Bde%2Binterfaces%2Ba%2Btraves%2Bde%2Bcomputadoras%26hl%3Des%26client%3Dfirefox-a%26rls%3Dorg.mozilla:es-ES:official%26channel%3Dnp%26biw%3D1660%26bih%3D797%26prmd%3Dimvns&rurl=translate.google.com.mx&sl=en&u=http://users.chariot.net.au/~gmarts/miditech.htm&usg=ALkJrhidvXYQbuEC-cAP73cgZetJ13rIUQhttp://translate.googleusercontent.com/translate_c?hl=es&prev=/search%3Fq%3Dcontrol%2Bde%2Binterfaces%2Ba%2Btraves%2Bde%2Bcomputadoras%26hl%3Des%26client%3Dfirefox-a%26rls%3Dorg.mozilla:es-ES:official%26channel%3Dnp%26biw%3D1660%26bih%3D797%26prmd%3Dimvns&rurl=translate.google.com.mx&sl=en&u=http://www.maxim-ic.com/appnotes.cfm/an_pk/3424&usg=ALkJrhgr9zqm34msnJQQGKtzJ_87qisoEAhttp://translate.googleusercontent.com/translate_c?hl=es&prev=/search%3Fq%3Dcontrol%2Bde%2Binterfaces%2Ba%2Btraves%2Bde%2Bcomputadoras%26hl%3Des%26client%3Dfirefox-a%26rls%3Dorg.mozilla:es-ES:official%26channel%3Dnp%26biw%3D1660%26bih%3D797%26prmd%3Dimvns&rurl=translate.google.com.mx&sl=en&u=http://www.maxim-ic.com/appnotes.cfm/an_pk/3424&usg=ALkJrhgr9zqm34msnJQQGKtzJ_87qisoEAhttp://translate.googleusercontent.com/translate_c?hl=es&prev=/search%3Fq%3Dcontrol%2Bde%2Binterfaces%2Ba%2Btraves%2Bde%2Bcomputadoras%26hl%3Des%26client%3Dfirefox-a%26rls%3Dorg.mozilla:es-ES:official%26channel%3Dnp%26biw%3D1660%26bih%3D797%26prmd%3Dimvns&rurl=translate.google.com.mx&sl=en&u=http://www.ni.com/&usg=ALkJrhgRx3vQ2dLuDiTVpP553RQ99zgFqAhttp://translate.googleusercontent.com/translate_c?hl=es&prev=/search%3Fq%3Dcontrol%2Bde%2Binterfaces%2Ba%2Btraves%2Bde%2Bcomputadoras%26hl%3Des%26client%3Dfirefox-a%26rls%3Dorg.mozilla:es-ES:official%26channel%3Dnp%26biw%3D1660%26bih%3D797%26prmd%3Dimvns&rurl=translate.google.com.mx&sl=en&u=http://www.interfacebus.com/Design_Connector_GPIB.html&usg=ALkJrhj6J6ad8ZMc29D1J2WCSquwNKIbqghttp://translate.googleusercontent.com/translate_c?hl=es&prev=/search%3Fq%3Dcontrol%2Bde%2Binterfaces%2Ba%2Btraves%2Bde%2Bcomputadoras%26hl%3Des%26client%3Dfirefox-a%26rls%3Dorg.mozilla:es-ES:official%26channel%3Dnp%26biw%3D1660%26bih%3D797%26prmd%3Dimvns&rurl=translate.google.com.mx&sl=en&u=http://users.chariot.net.au/~gmarts/miditech.htm&usg=ALkJrhidvXYQbuEC-cAP73cgZetJ13rIUQhttp://translate.googleusercontent.com/translate_c?hl=es&prev=/search%3Fq%3Dcontrol%2Bde%2Binterfaces%2Ba%2Btraves%2Bde%2Bcomputadoras%26hl%3Des%26client%3Dfirefox-a%26rls%3Dorg.mozilla:es-ES:official%26channel%3Dnp%26biw%3D1660%26bih%3D797%26prmd%3Dimvns&rurl=translate.google.com.mx&sl=en&u=http://users.chariot.net.au/~gmarts/miditech.htm&usg=ALkJrhidvXYQbuEC-cAP73cgZetJ13rIUQhttp://translate.googleusercontent.com/translate_c?hl=es&prev=/search%3Fq%3Dcontrol%2Bde%2Binterfaces%2Ba%2Btraves%2Bde%2Bcomputadoras%26hl%3Des%26client%3Dfirefox-a%26rls%3Dorg.mozilla:es-ES:official%26channel%3Dnp%26biw%3D1660%26bih%3D797%26prmd%3Dimvns&rurl=translate.google.com.mx&sl=en&u=http://www.maxim-ic.com/appnotes.cfm/an_pk/3424&usg=ALkJrhgr9zqm34msnJQQGKtzJ_87qisoEAhttp://translate.googleusercontent.com/translate_c?hl=es&prev=/search%3Fq%3Dcontrol%2Bde%2Binterfaces%2Ba%2Btraves%2Bde%2Bcomputadoras%26hl%3Des%26client%3Dfirefox-a%26rls%3Dorg.mozilla:es-ES:official%26channel%3Dnp%26biw%3D1660%26bih%3D797%26prmd%3Dimvns&rurl=translate.google.com.mx&sl=en&u=http://www.maxim-ic.com/appnotes.cfm/an_pk/3424&usg=ALkJrhgr9zqm34msnJQQGKtzJ_87qisoEA

  • 8/18/2019 Unidad III Programación Modular

    28/31

     

    Elaborar una interfa'

    Como consecuencia del uso masivo de internet y de la gran cantidad de documentacióndisponible para desarrolladores es posible encontrar en la actualidad una gran variedadde productos de soft)are. "l problema está en que gran parte de esas aplicaciones nocumple con el objetivo principal para el cual debieron ser dise,adas que es facilitar lavida de sus usuarios ra!ón por la que muchas veces son descartadas y reempla!adaspor otras aplicaciones. "n la mayor parte de los casos esto no se debe a errores decodificación sino más bien a la forma en que las diferentes funcionalidades del soft)areson presentadas a su p#blico lo que de ahora en adelante conoceremos como 1interfa!de usuario1. "ste elemento considerado una métrica de la calidad de un soft)areinfluye directamente en la percepción final del producto y en la resistencia del usuario aprobar la aplicación. ^+n soft)are podrá ser muy bueno y poderoso pero no serápopular si su interfa! es deficiente] Por eso basado en mi e0periencia como

    desarrollador y en diversas lecturas sobre el tema compartiré los elementos queconsidero más importantes al momento de desarrollar una buena interfa! de usuario.

    3.7 Aplicación en la industria

    a interfa! de usuario más popular consiste en la representación gráfica de programascomo iconos seleccionados a través del ratón que se ejecutan en%entanas desplegadasen la pantalla de la computadora. os comandos y opciones de los programas puedenser seleccionados a través de men&sdispuestos en 5seccionesespec-ficas de lasventanas. "sta interfa! conocida com#nmente como 'M %'indosicons+mouse+

     pointer) ha sido sumamente e0itosa por más de 5= a,os un per-odo

    sorprendentemente largo cuando se habla de &8Cs.

    Canny %5==Z* considera que la longevidad de las interfaces O84P se debe entre

    otros a dos factores principales. "n primer lugar esta abstracción permitió que la

    Computadora pudiera ser utili!ada prácticamente por cualquier persona sin tener queser e0perta en computación2 se trata de una inter#a! centrada en el usuario. "n segundolugar ha resultado muy apropiada al considerar la computadora como una herramientade trabajo para las funciones convencionales en la oficina la escuela y el hogar.

     

    Sin embargo este modelo de nteracción umano+$omputadora %8XC* presenta

    Severas limitaciones ante los nuevos escenarios que las &8Cs van englobando durantesu acelerado proceso de transformación social. +n estudio reciente reali!ado por la(ivisión de Ciencias de la Computación de la +niversidad de California en Ver[eleyconsideró que la prioridad n#mero uno en investigación y desarrollo deber-a

  • 8/18/2019 Unidad III Programación Modular

    29/31

    concentrarse en 8XC%Canny 5==Z*.

     

     Algunos de estos escenarios son el objeto de estudio del presente

    (ocumento entre los que cabe destacar los siguientes:

     

    Si bien las interfaces O84P han permitido la adopción generali!ada de las

    Computadoras la facilidad de uso sigue considerándose la principal barrera para el

    Crecimiento y é0ito de las &8C en las organi!aciones %Canny 5==Z*.

     Xace tiempo que la computadora ha dejado de ser tan sólo herramienta de trabajo en laoficina y el hogar. as consolas de videojuegos los reproductores de (;( los nuevostelevisores un n#mero creciente de sistemas de control en el automóvil y el hogar sontan sólo algunos ejemplos de equipos computacionales con los que el hombrecontemporáneo interact#a todos los d-as. "n estos dispositivos resulta cr-tica.

    ' Dise6o minimalista: entre más elementos e0istan en la pantalla más confundido ytemeroso se encontrará el usuario. Por eso es importante reducir al má0imo el n#merode componentes visibles siendo muchas veces recomendada la utili!ación de asistenteso 1)i!ards1 los cuales permiten dividir una gran pantalla de datos en una serie de pasoslógicos ordenados y sencillos de seguir. "l uso de asistentes al estar compuestos porvarias pantallas permite además mejorar el orden y disposición de los componentes.

     

    ' Distinción clara de los elementos: siempre que se incorpore un componente a lapantalla del usuario el dise,ador deberá preocuparse que este sea diferenciable delresto y de que su funcionalidad esté claramente e0presada. Para ello el mejor recursoes la utili!ación de imágenes las cuales se recomienda sean #nicas para cadacomponente o agrupación de los mismos y semejantes a objetos de la vida real deforma de hacer la aplicación más intuitiva.

     

    ' Atención a las glosas o tetos: cada ve! que se necesite colocar un te0to en

    pantalla ya sea para refor!ar el concepto de un componente o para entregar unainstrucción o advertencia este deberá ser cuidadosamente escrito procurando utili!arsiempre el mismo tama,o color y fuente de letra dejando fuera el uso de 1negrita1 1cursiva1 o cualquier otro elemento que sobrecargue la pantalla más de lo necesario.

     Aunque suene obvio los te0tos deberán ser siempre lo más concisos y claros posiblesintentando idealmente locali!arlos de acuerdo a la región geográfica donde vayan a serutili!ados.

  • 8/18/2019 Unidad III Programación Modular

    30/31

     

    ' inimiar el uso del teclado y de comandos es%eciales: no hay aplicación másconfusa y dif-cil de usar que una pensada para 1ingenieros1. 4uchos soft)are caen en elerror de incorporar comandos especiales para reali!ar acciones de programa pensando

    que un usuario e0perto ganará tiempo evitando el uso del mouse. "sto es un errorpuesto que son pocos los usuarios que destinan tiempo a leer la documentación de unprograma antes de comentar a utili!arlo %mucho menos podrán conocer y memori!ar suscomandos de uso*2 además el uso de comandos aumenta la posibilidad de reali!aracciones involuntarias lo cual puede llegar a ser atemori!ante para los usuarios. +naaplicación amigable es aquella que muestra todas las posibles acciones en pantalla2 elteclado deberá utili!arse sólo cuando sea imprescindible como en el llenado deformularios u otras acciones similares.

    ' E!itar di-logos innecesarios: e0isten aplicaciones que ante una acción reiterativamuestran un cuadro de diálogo con un mensaje de é0ito. "sto puede resultar

    e0tremadamente molesto para un usuario que ya conoce las consecuencias de suacción. Por eso se recomienda el uso de cuadros de diálogo sólo para advertencias osugerencias cr-ticas %relacionadas a acciones no reversibles*.

    ' Pre!ención de errores: un usuario aprenderá más rápido a utili!ar y confiar en unaaplicación si sabe que no cometerá errores en su uso o si sabe que estos pueden serrevertidos rápidamente. Para esto el dise,ador debe saber acotar las posibilidades deacción del usuario quitando la mayor cantidad de objetos de error posibles2 ademásdebe cuidar que cada acción cr-tica del programa pueda ser revertida en caso de serrequerido.

    ' 9leibilidad ante todo: no se debe confundir el control con la falta de fle0ibilidad. Siun usuario por ejemplo desea no incorporar una imagen en una tarjeta de presentaciónutili!ando un formato que si la requiere el soft)are a lo más deber-a advertir sobre lafalta de la foto pero no prohibirle que termine el proceso de elaboración de su tarjeta.+n desarrollador nunca sabrá los alcances finales y usos definitivos de su soft)arehasta que sea utili!ado por sus usuarios por lo que es mejor enfocar los esfuer!os enmejorar la robuste! del soft)are antes que caer en un control e0cesivo.

    ' ane(o de %referencias de usuario: con la tecnolog-a de hoy no es dif-cil incorporarmecanismos de almacenamiento personali!ado de preferencias para los usuarios./ecordar elementos tan sencillos como la configuración del idioma o la aparición deciertos cuadros de diálogo facilitan enormemente el trabajo de quienes utili!an unaaplicación.

     

    En resumen una buena interfa'

  • 8/18/2019 Unidad III Programación Modular

    31/31

    ' (isminuye la resistencia natural del usuario a utili!ar la aplicación.

    ' /educe los tiempos de aprendi!aje.

    ' /educe los errores de uso.

    ' 4ejora la percepción p#blica del soft)are.

    ' 4ejora la calidad de vida de los usuarios %facilita su labor*.