/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

Programación estruturada y funciones

 
      Índice del Foro elrincondelc.com -> Algoritmos
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
David_Polito



Registrado: 06 Jun 2006
Mensajes: 102
Ubicación: México

MensajePublicado: 07/08/2006 4:50 pm
Título: Programación estruturada y funciones

¡Buen día a todos!

He estado realizando una aplicación en la que se piden datos de alumnos de una escuela, para guardarlos en un archivo binario. El programa consta de un menú y a partir del menú realiza la tarea que se le encomienda.
Mi pregunta es con respecto a las funciones. Imagino que la eficiencia de un programa también depende de la buena estructuración de las funciones en éste. Dentro de la función main del programa mando a llamar una función menú y es todo lo que hace main...Esto no me parece tan elegante.
He aquí las funciones.

Código:
/*Idento todo para que se entienda la estructura del programa.
//Dentro de main solo llamo a menú principal y es todo.
FUNCIÓN PRINCIPAL (main).

   //Puedo elegir entre: a) Crear archivo del día. --> Se ejecuta la función 1 y 2.
   //        b) Consultas. --> Manda a otro menú (3).
   //        c) Adicionar Registro. --> Se ejecuta función 4.
   //        s) Salir. --> Sale del programa. (5)
   FUNCIÓN MENÚ PRINCIPAL:

      1.- FUNCIÓN CREA NUEVO ARCHIVO BINARIO
      2.- FUNCIÓN AGREGA REGISTRO
         //¿Desea agregar otro registro? S/N
         //Si es Si entonces se ejecuta al función 2 nuevamente
         //Si es No entonces cierra el archivo y sale al menú principal.
         FUNCIÓN OPTA (Dentro de func Agrega Reg).

      //Puedo elegir entre: a) Consultar un solo registro. --> Ejecuta función I
      //        b) Consultar todo el archivo. --> Ejecuta función II
      //        c) Menú principal. --> Sale al menú principal.
      3.- FUNCIÓN MENU DE TIPOS DE CONSULTA

         //Se hace la consulta, cierra el archivo y se regresa al menú de consultas (3).
         I.- FUNCIÓN CONSULTA UN REGISTRO
            FUNCIÓN ABRE ARCHIVO PARA LECTURA.
         //Se hace la consulta, cierra el archivo y se regresa al menú de consultas (3).
         II.- FUNCIÓN CONSULTA TODO EL ARCHIVO
            FUNCIÓN ABRE ARCHIVO PARA LECTURA.

      //Abre archivo en modo adición, agrega y cierra archivo.      
      4.- FUNCIÓN ADICIONAR REGISTRO
         FUNCIÓN ABRE ARCHIVO EN MODO ADICIÓN
         FUNCIÓN AGREGA REGISTRO
            FUNCIÓN OPTA
      5.- SALIR
En realidad todo lo demás del programa funciona muy bien. Sin embargo, he visto en otros programas de personas que deben, por mucho, saber más que yo que la función principal (main) es la que debe administrar todo el programa.
Aparte no se si esté bien que siempre salga por un exit(EXIT_SUCCESS) y no a través del fin de main.

Cualquier comentario es bien recibido.

Cuídense...
Volver arriba
rir3760



Registrado: 01 Oct 2004
Mensajes: 3892
Ubicación: Mexico

MensajePublicado: 08/08/2006 8:19 am
Título: Re: Programación estruturada y funciones

David_Polito escribió:
He estado realizando una aplicación en la que se piden datos de alumnos de una escuela, para guardarlos en un archivo binario. El programa consta de un menú y a partir del menú realiza la tarea que se le encomienda.

Mi pregunta es con respecto a las funciones. Imagino que la eficiencia de un programa también depende de la buena estructuración de las funciones en éste.

En C la operacion mas "costosa" es la llamada a funcion. El porque un programa se divide en funciones es (aparte de la reutilizacion) para incrementar la claridad en el codigo fuente: este se separa un unidades (funciones) que realizan una sola operacion.

David_Polito escribió:
Dentro de la función main del programa mando a llamar una función menú y es todo lo que hace main...Esto no me parece tan elegante.

Podrias implementar el codigo del menu en la funcion main, en este caso me parece mas una cuestion de estilo personal.

Un saludo
_________________
The capacity to learn is a gift;
The ability to learn is a skill;
The willingness to learn is a choice.
--
Rebec of Ginaz
Volver arriba
David_Polito



Registrado: 06 Jun 2006
Mensajes: 102
Ubicación: México

MensajePublicado: 09/08/2006 9:31 am
Título:

Hola! Con respecto al programa que he estado haciendo quiero decirles que he querido transportarlo a Linux.
Lo que pasa es que uso muchas funciones no estándares y eso ha perjudicadome.

Al compilar mi programa con Turbo C 2.01 todo sale perfecto.
Y al querer compilar con el compilador que trae linux por default me salió este pequeño montoncito de errores.

LISTADO DE HORRORES:
    knoppix@1[knoppix]$ gcc LINUXFLO.C > errors.txt
    LINUXFLO.C:8:57: conio.h: No such file or directory
    LINUXFLO.C:10:21: graphics.h: No such file or directory
    LINUXFLO.C: In function `void pass()':
    LINUXFLO.C:54: warning: converting to non-pointer type `char' from NULL
    LINUXFLO.C:55: error: `clrscr' undeclared (first use this function)
    LINUXFLO.C:55: error: (Each undeclared identifier is reported only once for each function it appears in.)
    LINUXFLO.C:64: error: `getch' undeclared (first use this function)
    LINUXFLO.C:65: error: `exit' undeclared (first use this function)
    LINUXFLO.C: In function `void carga()':
    LINUXFLO.C:79: error: `sleep' undeclared (first use this function)
    LINUXFLO.C: In function `void menu()':
    LINUXFLO.C:92: warning: converting to non-pointer type `char' from NULL
    LINUXFLO.C:94: error: `gotoxy' undeclared (first use this function)
    LINUXFLO.C:106: error: `exit' undeclared (first use this function)
    LINUXFLO.C: In function `void opta()':
    LINUXFLO.C:148: warning: converting to non-pointer type `char' from NULL
    LINUXFLO.C: In function `void menu_consulta()':
    LINUXFLO.C:238: warning: converting to non-pointer type `char' from NULL
    LINUXFLO.C:240: error: `gotoxy' undeclared (first use this function)
    LINUXFLO.C: In function `void presentacion()':
    LINUXFLO.C:278: error: `detectgraph' undeclared (first use this function)
    LINUXFLO.C:279: error: `initgraph' undeclared (first use this function)
    LINUXFLO.C:282: error: `graphresult' undeclared (first use this function)
    LINUXFLO.C:283: error: `grOk' undeclared (first use this function)
    LINUXFLO.C:284: error: `grapherrormsg' undeclared (first use this function)
    LINUXFLO.C:286: error: `exit' undeclared (first use this function)
    LINUXFLO.C:291: error: `setcolor' undeclared (first use this function)
    LINUXFLO.C:291: error: `circle' undeclared (first use this function)
    LINUXFLO.C:302: error: `closegraph' undeclared (first use this function)
    LINUXFLO.C: At global scope:
    LINUXFLO.C:315: error: stray '\32' in program
    LINUXFLO.C:315:11: warning: no newline at end of file


Sabía que gets no era aceptado y lo cambié por una función propia.
Ahora bien, parece que hay problemas con las siguientes librerías: conio.h y graphics.h. Nosé si estas librerías no existen en Linux o que pueda pasar.
Como no tengo conio entonces no puedo esperar a que me acepte clrscr(); para limpiar la pantalla. Tampoco me acepta getch(); y exit();, gotoxy(); y ninguna función gráfica.
No entiendo como no reconoce sleep(); si se supone que tengo declarado time.h.
A menos que en Linux no se reconozcan todas las librerías que uso no entiendo nada, jejejeje.

No he usado Linux y es mi primera vez. ¿Puede alguien inducirme al buen uso del sistema operativo en cuanto a programación en C se refiere?
O más bien, alguien pueda decirme qué funciones usar en linux en vez del montón que simplemente no se aceptan en él. Es decir, hacer estándar y transportable mi programa.
Otra pregunta: He estado creando funciones que simulan otras que ya están incluídas en algunas librerías. Si creo algunas que simulen funciones no estándar y las incluyo con el código fuente de mi programa me imagino que entonces éste será transportable.

Muchas gracias!

PD: No incluyo código porque es algo largo. Pero si necesitan mi código fuente por alguna cuestión porfavor hagánmelo saber.
Volver arriba
      Índice del Foro elrincondelc.com -> Algoritmos
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com