Академический Документы
Профессиональный Документы
Культура Документы
Concepto de Programacin
Introduccin
L
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:
os
Descripcin
Int abs(int n)
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)
double exp(double n)
Obtiene en.
double fabs(double n)
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.
- 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
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
3.5 Cadenas
na
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.
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:
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:
/**********************************************************
*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};
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;
}
Una vez seleccionado el puerto Usted puede escribir un valor cualquiera comprendido
entre 0 y 255. Independientemente del puerto seleccionado toda la funcionalidad del
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
- 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.