| Ver tema anterior :: Ver siguiente tema | | Autor | Mensaje |
|---|
David_Polito
Registrado: 06 Jun 2006 Mensajes: 102 Ubicación: México
| Publicado: 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
| Publicado: 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
| Publicado: 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 | |  | | |
| No puede crear mensajes No puede responder temas No puede editar sus mensajes No puede borrar sus mensajes No puede votar en encuestas
|
|
| |