Tema 12 Utilización de más de un fichero fuente Fundamentos de Programación I.E.S. Juan de Garay
Tema 12: Utilización de más de un fichero fuente <ul><li>Introducción. </li></ul><ul><li>Decidir qué incluir en un fichero...
1. Introducción <ul><li>A medida que se crean programas mayores y más potentes habrá mayor dificultad a la hora de guardar...
2. Decidir qué incluir en un fichero fuente <ul><li>Cuando se empieza a agrupar las funciones en ficheros fuente debemos a...
3. Crear un fichero de proyecto en Borland C <ul><li>Cuando se quiere implementar un programa que utiliza más de un ficher...
3. Crear un fichero de proyecto en Dev C++ <ul><li>Cuando se quiere implementar un programa que utiliza más de un fichero ...
4. Las referencias externas <ul><li>Una referencia externa tiene la función de permitir que las funciones de un fichero pu...
4. Las referencias externas (cont.) <ul><li>Declarar un elemento presenta una diferencia respecto a definirlo. La declarac...
4. Las referencias externas (cont.) <ul><li>La variable i, declarada en cada uno de los ficheros fuente es única para dich...
5. Utilización de funciones externas <ul><li>La palabra clave extern le hace saber al compilador que esa variable ha sido ...
6. Escritura de ficheros cabecera para módulos externos <ul><li>Para utilizar variables y funciones que residan en otro fi...
7. Qué incluir en un fichero de cabecera <ul><li>El fichero de cabecera de un fichero fuente debe incluir todos aquellos e...
7. Qué incluir en un fichero de cabecera (cont.) <ul><li>Un fichero de cabecera puede incluir, a su vez, más directivas #i...
8. Utilización de las directivas de compilación    condicional en los ficheros de cabecera <ul><li>Algunos programas a men...
8. Utilización de las directivas de compilación    condicional en los ficheros de cabecera (cont.) <ul><li>#if [!]defined ...
8. Utilización de las directivas de compilación    condicional en los ficheros de cabecera (cont.) <ul><li>Con las directi...
8. Utilización de las directivas de compilación    condicional en los ficheros de cabecera (cont.) <ul><li>Si condicion_1 ...
8. Utilización de las directivas de compilación    condicional en los ficheros de cabecera (cont.) <ul><li>Si se utilizan ...
9. Ejercicios <ul><li>Veamos un ejemplo de aplicación distribuida en los siguientes ficheros: </li></ul><ul><li>Archivo de...
9. Ejercicios (cont.) <ul><li>/* ________________ VARIABLE.H _________________ */ </li></ul><ul><li>#ifndef _VARIABLE </li...
9. Ejercicios (cont.) <ul><li>/*________________ PROG1.C _________________ */ </li></ul><ul><li>#include <stdio.h> </li></...
9. Ejercicios (cont.) <ul><li>void multiplicar(void){ </li></ul><ul><li>/* Algoritmo para multiplicar matrices */ </li></u...
9. Ejercicios (cont.) <ul><li>/* _______________ PROG2.C___________ */ </li></ul><ul><li>#include <stdio.h> </li></ul><ul>...
9. Ejercicios (cont.) <ul><li>gotoxy(30,1);  </li></ul><ul><li>printf ( &quot;MATRIZ 2&quot;); </li></ul><ul><li>for(i =0;...
9. Ejercicios (cont.) <ul><li>int menu(void){ </li></ul><ul><li>int opcion; </li></ul><ul><li>gotoxy(20,10);printf(&quot;1...
9. Ejercicios (cont.) <ul><li>/* ________________  MAIN.C ___________ */ </li></ul><ul><li>#include <stdio.h> </li></ul><u...
9. Ejercicios (cont.) <ul><li>clrscr(); </li></ul><ul><li>gotoxy(37,12); </li></ul><ul><li>printf (&quot;F I N&quot;); </l...
Upcoming SlideShare
Loading in...5
×

Tema 12 www.fresymetal.com

767
-1

Published on

Published in: Travel, Business
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
767
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
18
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Tema 12 www.fresymetal.com

  1. 1. Tema 12 Utilización de más de un fichero fuente Fundamentos de Programación I.E.S. Juan de Garay
  2. 2. Tema 12: Utilización de más de un fichero fuente <ul><li>Introducción. </li></ul><ul><li>Decidir qué incluir en un fichero fuente. </li></ul><ul><li>Crear un fichero de proyecto en Borland C y DEV C++. </li></ul><ul><li>Las referencias externas. </li></ul><ul><li>Utilización de funciones externas. </li></ul><ul><li>Estructura de ficheros cabecera para módulos externos. </li></ul><ul><li>Qué incluir en un fichero de cabecera. </li></ul><ul><li>Utilización de las directivas de compilación condicional en los ficheros de cabecera. </li></ul><ul><li>Ejercicios. </li></ul>
  3. 3. 1. Introducción <ul><li>A medida que se crean programas mayores y más potentes habrá mayor dificultad a la hora de guardar todas las funciones en un mismo fichero fuente. Se debe agrupar las funciones que realizan tareas similares en el mismo fichero fuente. Luego se puede compilar cada fichero independientemente de todos los demás para crear un proyecto. </li></ul><ul><li>La división de un proyecto en pequeños módulos tiene las siguientes ventajas: </li></ul><ul><ul><ul><li>El seguimiento de la lógica del programa es más sencillo. Si todo el código de un gran proyecto está incluido en un solo fichero fuente, el tamaño de éste hace que el programa sea difícil de seguir. Al dividir el programa en trozos más pequeños, de forma lógica, se consigue que sea más fácil ver el diseño general del mismo. </li></ul></ul></ul><ul><ul><ul><li>Los procesos de modificación y depuración del programa son más sencillos. Si se tiene dividido el programa en varios ficheros fuente es más sencillo resolver un programa. Se puede encontrar más fácilmente el grupo de funciones que están causando el problema. </li></ul></ul></ul><ul><ul><ul><li>Agrupando las funciones implementadas en un mismo fichero fuente será fácil poderlas volver a utilizar en otros proyectos. </li></ul></ul></ul>
  4. 4. 2. Decidir qué incluir en un fichero fuente <ul><li>Cuando se empieza a agrupar las funciones en ficheros fuente debemos asegurarnos de que todas las que estén relacionadas se encuentran en el mismo fichero. Cada función debe encontrar los datos que necesita en el mismo fichero fuente en el que está definida. </li></ul><ul><li>Se deben agrupar las funciones de forma que se tengan grupos de funciones que se puedan incluir en otros programas fácilmente. </li></ul><ul><li>Al dividir un programa se debe recordar que sólo puede tener un fichero fuente con la función main (). Se puede incluir el número de funciones que se quiera dentro de cada fichero fuente, pero uno, y solamente uno, podrá contener la función main (). Algunos proyectos se construyen de forma que un fichero principal contenga la función main () siendo su única labor la de llamar a las otras funciones a medida que se vayan necesitando. </li></ul>
  5. 5. 3. Crear un fichero de proyecto en Borland C <ul><li>Cuando se quiere implementar un programa que utiliza más de un fichero fuente se necesita crear un archivo de proyecto adecuado. Un fichero de proyecto es una lista de los ficheros fuente necesarios y otra información necesaria para crear un fichero ejecutable. </li></ul><ul><li>La creación de un proyecto conlleva tres pasos básicos. El primero es crear un fichero del proyecto nuevo, el segundo es añadir los ficheros fuente y el tercero crear el fichero exe. </li></ul><ul><li>Para acceder a las funciones de gestión de proyectos utilizar la opción Project de la barra de menú. Para crear un fichero de proyecto nuevo seleccionar el comando Open del menú Project. Con el comando Open se puede abrir un proyecto existente o asignarle un nombre a uno nuevo. Después de seleccionar Open, aparece la ventana de diálogo Load Project File (carga de fichero de proyecto). En la ventana de diálogo se tiene que teclear el nombre y la ruta del fichero de proyecto. </li></ul><ul><li>Una vez abierto el fichero de proyecto se puede acceder a varias opciones nuevas del menú Project: Add item (añadir elemento), Delete item (borrar elemento), ... Para comenzar a añadir ficheros fuente al proyecto seleccionado, utilizar Add item. Seleccionar el botón Done cuando no se quiera añadir más ficheros. </li></ul>
  6. 6. 3. Crear un fichero de proyecto en Dev C++ <ul><li>Cuando se quiere implementar un programa que utiliza más de un fichero fuente se necesita crear un archivo de proyecto adecuado. Un fichero de proyecto es una lista de los ficheros fuente necesarios y otra información necesaria para crear un fichero ejecutable. </li></ul><ul><li>La creación de un proyecto conlleva tres pasos básicos. El primero es crear un fichero de proyecto nuevo, el segundo es añadir los ficheros fuente y el tercero crear el fichero exe. </li></ul><ul><li>Para crear un fichero de proyecto nuevo utilizar la opción Archivo Nuevo Proyecto de la barra de menú. En la ficha Basic seleccionar el icono Empty project. En nombre del proyecto escribir el nombre y seleccionar el botón de opción En C. En la siguiente ventana seleccionar la ruta donde guardareis el fichero de proyecto con extensión .dev. </li></ul><ul><li>Una vez abierto el fichero de proyecto se puede acceder a varias opciones nuevas del menú Proyecto: Añadir a proyecto (añadir ficheros con extensión .c), Borrar del proyecto (quitar ficheros fuente), ... Se pueden añadir varios ficheros al mismo tiempo. </li></ul>
  7. 7. 4. Las referencias externas <ul><li>Una referencia externa tiene la función de permitir que las funciones de un fichero puedan acceder a los datos y funciones de otro fichero fuente. Sin esta característica sería imposible utilizar varios ficheros fuente para un mismo programa. </li></ul><ul><li>La referencia a un elemento externo se compone de dos partes. Primero, el elemento debe estar correctamente definido en un fichero. Segundo, el elemento se debe declarar en cada uno de los ficheros que va a referenciarlo. </li></ul><ul><li>La palabra clave extern se utiliza en la declaración de aquellos elementos que se van a referenciar externamente. Esta palabra le indica al compilador que los datos que está declarando han sido definidos en otro fichero fuente. De esta forma, con extern, puede utilizar elementos que se han creado en otros ficheros fuente. </li></ul><ul><li>Por ejemplo: extern double ventas; </li></ul><ul><li>declara un número en punto flotante de doble precisión. Esta declaración es diferente a otras anteriores porque la variable ventas ha sido definida en otro fichero fuente. </li></ul>
  8. 8. 4. Las referencias externas (cont.) <ul><li>Declarar un elemento presenta una diferencia respecto a definirlo. La declaración le dice al compilador la clase de dato o elemento con el que va a trabajar. Sin embargo una declaración no reserva un espacio de memoria para el elemento. Una definición es un tipo de declaración especial que reserva memoria para el elemento declarado. Una definición permite crear un elemento, la declaración le da acceso a ese elemento. </li></ul><ul><li>Un elemento sólo puede definirse en un único fichero fuente. La definición del elemento produce que se asigne a ese elemento un determinado espacio de memoria. Una vez hecha la definición el elemento puede ser utilizado por cualquier fichero fuente. </li></ul>double ventas; ... int main () { int i; ... } extern double ventas; ... Calc () { int i; ... }
  9. 9. 4. Las referencias externas (cont.) <ul><li>La variable i, declarada en cada uno de los ficheros fuente es única para dicho fichero. En otras palabras, la variable i de uno de los ficheros fuente no se puede referenciar dentro del otro fichero. De hecho, a la variable i sólo se la puede referenciar dentro de la función en la que se ha declarado, ya que i es una variable local. Esta variable se crea cuando comienza la ejecución de la función y cuando ésta termina de ejecutarse, se destruye la variable y la memoria que ocupaba se libera. </li></ul><ul><li>Las variables a las que necesitan acceder funciones de otros ficheros se declaran como variables globales (se definen fuera de todas las funciones de un fichero fuente). Para utilizar estas variables, declararlas simplemente utilizando el especificador de clase de almacenamiento extern en el nuevo fichero. </li></ul>
  10. 10. 5. Utilización de funciones externas <ul><li>La palabra clave extern le hace saber al compilador que esa variable ha sido creada en otro fichero fuente. </li></ul><ul><li>Llamar a una función de otro fichero fuente es parecido a utilizar variables definidas en diferentes ficheros. Al utilizar las funciones externas se debe realizar dos pasos: primero definir la función en un fichero fuente y luego declararla en los otros ficheros. </li></ul><ul><li>No hay que hacer nada especial para definir una función que se pueda utilizar en varios ficheros fuente. Una función está disponible automáticamente para otros ficheros fuente. Lo único que no se debe olvidar es declarar la función en cada uno de los ficheros fuente que la vaya a utilizar. </li></ul><ul><li>La declaración de una función definida en otro fichero fuente no necesita el uso de la palabra clave extern como necesitaban las variables externas. Para utilizar una función de otro fichero fuente sólo hay que incluir el prototipo. </li></ul>
  11. 11. 6. Escritura de ficheros cabecera para módulos externos <ul><li>Para utilizar variables y funciones que residan en otro fichero fuente se necesita declarar esas funciones y variables en nuestro fichero. Si se utilizan muchos ficheros fuente diferentes el teclear todas las declaraciones extra puede llegar a ser muy pesado. Con los ficheros cabecera se puede evitar todo este trabajo extra. </li></ul><ul><li>Un fichero de cabecera es un fichero especial que contiene todas las declaraciones que se necesitan para poder utilizar funciones y variables de otro fichero fuente específico. Cuando se quiera utilizar funciones, o variables, que se encuentren en uno de los otros ficheros fuente, simplemente se debe utilizar, la directiva #include para incluir las declaraciones dentro del fichero fuente actual. </li></ul><ul><li>Dos de las ventajas de utilizar ficheros cabecera son la velocidad y la prevención de errores. Incluir un fichero de cabecera es mucho más rápido que teclear las declaraciones necesarias para las funciones y variables de otro fichero. Los ficheros cabecera también previenen los errores porque únicamente hay que teclear la declaración una sola vez. Una vez creado el fichero de cabecera correctamente no hay que preocuparse de los errores causados al teclear. </li></ul>
  12. 12. 7. Qué incluir en un fichero de cabecera <ul><li>El fichero de cabecera de un fichero fuente debe incluir todos aquellos elementos que se quieran referenciar externamente. Es decir, un fichero de cabecera debería contener las declaraciones de cualquier variable o función a la que se vaya a acceder desde otro fichero. </li></ul><ul><li>Al escribir en un fichero de cabecera las declaraciones de las variables que se van a poder utilizar desde otros ficheros, no hay que olvidar añadir el especificador de clase de almacenamiento extern en la declaración. Esto no es necesario en la declaración de las funciones. </li></ul><ul><li>Además de declaraciones de funciones y variables, un fichero de cabecera puede incluir definiciones de macros. Cuando el fichero de cabecera se incluye dentro de un fichero fuente podrá utilizar también todas las macros definidas en éste. </li></ul><ul><li>Para incluir nuestros propios ficheros cabecera, lo único que se necesita es utilizar la directiva #include. </li></ul><ul><li>Por ejemplo: #include “prog1.h” </li></ul>
  13. 13. 7. Qué incluir en un fichero de cabecera (cont.) <ul><li>Un fichero de cabecera puede incluir, a su vez, más directivas #include. Está completamente permitido anidar directivas #include. </li></ul><ul><li>Las comillas de la directiva include le indican al precompilador que se va a utilizar un fichero de cabecera del usuario. El precompilador busca primero en el directorio actual. Normalmente es ahí donde se localiza el fichero. Si, por el contrario, el fichero de cabecera no se encontrase ahí, lo buscará en los directorios donde busca los ficheros de cabecera de Borland C o de Dev C++. </li></ul><ul><li>Existe un compromiso entre el deseo de que cada archivo sólo tenga acceso a la información que necesita para su trabajo y la realidad práctica de que es más difícil mantener más archivos de cabecera. Hasta un tamaño moderado de programa, probablemente es mejor tener un archivo de cabecera que contenga todo lo que será compartido entre las partes del programa. Para un programa mucho más grande, se necesitaría más organización y más archivos de cabecera. </li></ul>
  14. 14. 8. Utilización de las directivas de compilación condicional en los ficheros de cabecera <ul><li>Algunos programas a menudo necesitan incluir durante la compilación muchos ficheros de cabecera. Cuando se incluyen varios ficheros de cabecera puede ocurrir que se definan algunos elementos varias veces. Se pueden repetir declaraciones más de una vez sin que ocurra nada. De todas maneras, para una buena programación es mejor asegurarse que las declaraciones se realizan sólo una vez. </li></ul><ul><li>Las directivas de compilación condicional tienen como propósito incluir o excluir ciertas secciones de código antes de que tenga lugar la compilación. Utilizando la directiva del precompilador #if se puede decidir qué secciones de código van a ser incluidas o excluidas. Las diferentes formas de la directiva #if permiten realizar varias comprobaciones lógicas antes de que comience la compilación. </li></ul><ul><li>#if [!] expresión_constante </li></ul><ul><li>#elif [!] expresión_constante </li></ul><ul><li>#else </li></ul><ul><li>#if [!] defined identificador </li></ul>
  15. 15. 8. Utilización de las directivas de compilación condicional en los ficheros de cabecera (cont.) <ul><li>#if [!]defined (identificador) </li></ul><ul><li>#ifdef identificador </li></ul><ul><li>#ifndef identificador </li></ul><ul><li>#endif </li></ul><ul><li>El símbolo [!] indica que se puede utilizar, opcionalmente, el operador lógico NOT en la expresión. </li></ul><ul><li>En la lista de las directivas de compilación condicional, expresión_constante puede ser cualquier expresión que se evalúe como un valor entero. Puede contener operadores aritméticos, lógicos y macros. Si al evaluarse toma un valor distinto de cero se considera verdadera, si toma el valor cero se considera falsa. </li></ul><ul><li>El identificador utilizado en la serie de directivas #if defined es cualquier símbolo creado por nosotros. Esta directiva determina si el símbolo indicado se ha definido previamente. El identificador puede estar, opcionalmente, encerrado entre paréntesis. </li></ul>
  16. 16. 8. Utilización de las directivas de compilación condicional en los ficheros de cabecera (cont.) <ul><li>Con las directivas #if, #elif, #else y #endif se puede crear una construcción lógica que incluya o excluya una sección de código basándose en una cierta condición. </li></ul><ul><li>#if condicion_1 </li></ul><ul><li><Primera sección de código> </li></ul><ul><li>#elif condicion_2 </li></ul><ul><li><Segunda sección de código> </li></ul><ul><li>#else </li></ul><ul><li><Sección de código por defecto> </li></ul><ul><li>#endif </li></ul><ul><li>Cuando el precompilador lea el grupo de directivas #if anteriores lo primero que hará será evaluar la condicion_1. Si al evaluarla el resultado es un valor distinto de 0, se incluirá la primera sección de código en la compilación. Las otras secciones de código no se incluirán en la compilación. </li></ul>
  17. 17. 8. Utilización de las directivas de compilación condicional en los ficheros de cabecera (cont.) <ul><li>Si condicion_1 produce el valor 0 el precompilador evaluará la condicion_2. La segunda sección de código se incluirá en la compilación del programa si condicion_2 resulta un valor distinto de 0. Si no son ciertas ni condicion_1 ni condicion_2, entonces se incluirá la sección de código por defecto que sigue a la directiva #else. </li></ul><ul><li>No es necesario que se incluya código en alguna de estas secciones. A veces, se puede necesitar crear una estructura de compilación condicional pero no se quiere incluir código para alguna de las condiciones. </li></ul><ul><li>La directiva #endif señala el final de la estructura #if. Se debe incluir una directiva #endif por cada #if que se utilice. </li></ul><ul><li>La directiva: </li></ul><ul><li>#if !defined _PROG1 </li></ul><ul><li>#define _PROG1 </li></ul><ul><li>... </li></ul><ul><li>#endif </li></ul><ul><li>hace que la sección de código que le sigue sea incluida únicamente si _PROG1 no se ha definido previamente. La primera acción que se realiza si _PROG1 no está definida es definirla. Una vez se haya definido, las declaraciones hechas en prog1.h no se repetirán si se incluye este fichero más de una vez. </li></ul>
  18. 18. 8. Utilización de las directivas de compilación condicional en los ficheros de cabecera (cont.) <ul><li>Si se utilizan construcciones como la anterior nos aseguramos de que nuestros ficheros cabecera incluirán otros ficheros de cabecera una sola vez. </li></ul><ul><li>La directiva : </li></ul><ul><li>#if defined _PROG1 </li></ul><ul><li>es equivalente a la directiva: </li></ul><ul><li>#ifdef _PROG1 </li></ul><ul><li>Se puede utilizar #if defined en cualquier lugar donde se pueda utilizar #ifdef. </li></ul><ul><li>También son equivalentes las directivas: </li></ul><ul><li>#if !defined _PROG1 </li></ul><ul><li>con: </li></ul><ul><li>#ifndef _PROG1 </li></ul>
  19. 19. 9. Ejercicios <ul><li>Veamos un ejemplo de aplicación distribuida en los siguientes ficheros: </li></ul><ul><li>Archivo de cabecera: </li></ul><ul><li>Variable.h </li></ul><ul><li>Archivos fuentes C: </li></ul><ul><li>Prog1.c </li></ul><ul><li>Prog2.c </li></ul><ul><li>Main.c </li></ul><ul><li>Archivo de proyecto: </li></ul><ul><li>Matriz.prj // en Borland C++ </li></ul><ul><li>Matriz.dev // en Dev-C++ </li></ul>
  20. 20. 9. Ejercicios (cont.) <ul><li>/* ________________ VARIABLE.H _________________ */ </li></ul><ul><li>#ifndef _VARIABLE </li></ul><ul><li>#define _VARIABLE </li></ul><ul><li>#define MAX 3 </li></ul><ul><li>extern int mat1[MAX][MAX]; </li></ul><ul><li>extern int mat2[MAX][MAX]; </li></ul><ul><li>extern int resul[MAX][MAX]; </li></ul><ul><li>void sumar(void); </li></ul><ul><li>void multiplicar(void); </li></ul><ul><li>void invertir(void); </li></ul><ul><li>void llenar_matriz(void); </li></ul><ul><li>int menu(void); </li></ul><ul><li>#endif </li></ul>
  21. 21. 9. Ejercicios (cont.) <ul><li>/*________________ PROG1.C _________________ */ </li></ul><ul><li>#include <stdio.h> </li></ul><ul><li>#include <conio.h> </li></ul><ul><li>#include &quot;variable.h&quot; </li></ul><ul><li>void sumar(void){ </li></ul><ul><li>int i,j; </li></ul><ul><li>for (i=0;i<MAX;i++) </li></ul><ul><li>for (j=0;j<MAX; j++){ </li></ul><ul><li>resul[i][j]=mat1[i][j]+mat2[i][j]; </li></ul><ul><li>} </li></ul><ul><li>for (i=0;i<MAX;i++) </li></ul><ul><li>for (j=0;j<MAX; j++){ </li></ul><ul><li>gotoxy(j*3+60,i+2);printf(&quot;%d&quot;,resul[i][j]); </li></ul><ul><li>} </li></ul><ul><li>} </li></ul>
  22. 22. 9. Ejercicios (cont.) <ul><li>void multiplicar(void){ </li></ul><ul><li>/* Algoritmo para multiplicar matrices */ </li></ul><ul><li>} </li></ul><ul><li>void invertir(void){ </li></ul><ul><li>/* Algoritmo para invertir una matriz */ </li></ul><ul><li>} </li></ul>
  23. 23. 9. Ejercicios (cont.) <ul><li>/* _______________ PROG2.C___________ */ </li></ul><ul><li>#include <stdio.h> </li></ul><ul><li>#include <conio.h> </li></ul><ul><li>#include &quot;variable.h&quot; </li></ul><ul><li>int mat1[MAX][MAX],mat2[MAX][MAX],resul[MAX][MAX]; </li></ul><ul><li>void llenar_matriz(void){ </li></ul><ul><li>int i,j; </li></ul><ul><li>clrscr(); </li></ul><ul><li>printf ( &quot;MATRIZ 1&quot;); </li></ul><ul><li>for(i =0;i<MAX;i++) </li></ul><ul><li>for (j=0;j<MAX;j++){ </li></ul><ul><li>gotoxy( j*3+1, i+2); </li></ul><ul><li>scanf (&quot;%d&quot;,&mat1[i][j]); </li></ul><ul><li>fflush(stdin); </li></ul><ul><li>} </li></ul>
  24. 24. 9. Ejercicios (cont.) <ul><li>gotoxy(30,1); </li></ul><ul><li>printf ( &quot;MATRIZ 2&quot;); </li></ul><ul><li>for(i =0;i<MAX;i++) </li></ul><ul><li>for (j=0;j<MAX;j++){ </li></ul><ul><li>gotoxy( j*3+30, i+2); </li></ul><ul><li>scanf (&quot;%d&quot;,&mat2[i][j]); </li></ul><ul><li>fflush(stdin); </li></ul><ul><li>} </li></ul><ul><li>} </li></ul>
  25. 25. 9. Ejercicios (cont.) <ul><li>int menu(void){ </li></ul><ul><li>int opcion; </li></ul><ul><li>gotoxy(20,10);printf(&quot;1.- SUMAR&quot;); </li></ul><ul><li>gotoxy(20,12);printf(&quot;2.- MULTIPLICAR&quot;); </li></ul><ul><li>gotoxy(20,14);printf(&quot;3.- INVERTIR&quot;); </li></ul><ul><li>gotoxy(20,16);printf(&quot;4.- Salir&quot;); </li></ul><ul><li>gotoxy(60,22);printf( &quot; ELIGE OPCION &quot;); </li></ul><ul><li>scanf(&quot;%d&quot;,&opcion); </li></ul><ul><li>while (opcion<1 || opcion>4){ </li></ul><ul><li>gotoxy(60,22);printf( &quot; ELIGE OPCION &quot;); </li></ul><ul><li>scanf(&quot;%d&quot;,&opcion); </li></ul><ul><li>} </li></ul><ul><li>return(opcion); </li></ul><ul><li>} </li></ul>
  26. 26. 9. Ejercicios (cont.) <ul><li>/* ________________ MAIN.C ___________ */ </li></ul><ul><li>#include <stdio.h> </li></ul><ul><li>#include <conio.h> </li></ul><ul><li>#include &quot;variable.h&quot; </li></ul><ul><li>int main(){ </li></ul><ul><li>int op; </li></ul><ul><li>llenar_matriz(); </li></ul><ul><li>while ((op=menu())>0 && op<4){ </li></ul><ul><li>switch(op){ </li></ul><ul><li>case 1: sumar(); </li></ul><ul><li> break; </li></ul><ul><li>case 2: multiplicar(); </li></ul><ul><li> break; </li></ul><ul><li>case 3: invertir(); </li></ul><ul><li> break; </li></ul><ul><li>} </li></ul><ul><li>return 0; </li></ul><ul><li>} </li></ul>
  27. 27. 9. Ejercicios (cont.) <ul><li>clrscr(); </li></ul><ul><li>gotoxy(37,12); </li></ul><ul><li>printf (&quot;F I N&quot;); </li></ul><ul><li>getch(); </li></ul><ul><li>} </li></ul>
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×