Progrprogramación

Solo disponible en BuenasTareas
  • Páginas : 10 (2480 palabras )
  • Descarga(s) : 0
  • Publicado : 16 de diciembre de 2011
Leer documento completo
Vista previa del texto
SERRANO HERNÁNDEZ, Roberto
robserher
Junio 2007-2008
ESTRUCTURA GENERAL DEL PROGRAMA

El funcionamiento básico del programa se divide en dos etapas principales:
En la primera etapa, el programa crea una lista de los enlaces que contenga el archivo introducido como parámetro por línea de comandos. En la segunda etapa, el programa procesará cada conexión que se introduzca por teclado sobrela lista de enlaces previamente creada durante la primera etapa.

La primera etapa comienza comprobando que no se produzcan los errores 1 y 2. En caso de que el primer error no se produzca, se intentará abrir el fichero de configuración introducido como parámetro del programa en la línea de comandos. Para empezar, la funcion cuentaEnlaces contará los enlaces válidos que contiene el fichero deconfiguración para luego crear la lista de enlaces a partir de ellos. Una vez se han contado todos los enlaces válidos que contiene el fichero, se cierra y se abre de nuevo dicho fichero para que las funciones de copia de caracteres comiencen a leer desde el principio del fichero.
Una vez se han contado los enlaces, el programa hace uso de la función leeEnlaces para crear la lista de enlaces apartir del fichero de configuración, mediante un bucle que enlaza los enlaces leídos con los ya existentes (usando las funciones creaEnlace y enlazaEnlace) en la lista que se está creando, bucle que se repite tantas veces como dé el resultado de la función cuentaEnlaces. Es sobre todas las cosas para este fin el motivo por el cual se crean al principio del main los punteros paux y paux2.
En caso deque haya algún error en la reserva dinámica de memoria, la función creaEnlace devuelve NULL, y aprovechando esta peculiaridad, si la reserva dinámica de memoria no se realiza correctamente, generamos el error de reserva de memoria mediante la función error.
Una vez se ha creado la lista de enlaces, cerramos el archivo de configuración (suponiendo que no haya habido error en la reserva dinámicade memoria y por tanto la función error lo haya cerrado ya).
Aprovechando también que la función error modifica el valor de la variable mem_fail (variable de tipo int que se inicializa al principio a 0 y nos indica si hay o no error en la reserva dinámica de memoria) si la reserva dinámica de memoria no se realiza exitosamente, usamos una estructura de tipo if que procesará las conexionesintroducidas desde teclado sólo si no hay error en la reserva dinámica de memoria. En caso de que la variable mem_fail valga 0, podemos asegurar que no ha habido ningún error y por tanto la lista de enlaces está correctamente creada pudiendo así ser procesadas las conexiones.

Entramos así en la segunda etapa de funcionamiento del programa, en la cual se procesan las conexiones. Toma importancia ahorala variable keepon, de tipo int. Esta variable valdrá 1 mientras que no acabe la entrada estándar, y por tanto usaremos un bucle de tipo while para procesar las conexiones mientras no haya finalizado la entrada.
Esta segunda etapa funciona únicamente con funciones creadas por el desarrollador y estructuras básicas de tipo while e if-else.
En primer lugar, la variable keepon dependerá delresultado de la función leeConexion, que devolverá 1 si no se ha acabado la entrada estándar y 0 en caso contrario. De esta manera, mientras que keepon valga 1 podremos continuar trabajando las conexiones introducidas desde teclado.
La función leeConexion guarda en una cadena que recibe como parámetro el primer bloque de caracteres que haya en la entrada estandar entre los caracteres '', ambosincluidos, terminando la cadena con el carácter '\0'. Una vez que la serie de caracteres se ha guardado en una cadena (en este caso la variable es temp), la función correcta recibe a temp como parámetro y comprueba que el formato de la cadena que la función leeConexion ha leído es el correcto. Esta función devuelve 1 si el formato es correcto y 0 en caso contrario, de manera que podemos usar una nueva...
tracking img