Академический Документы
Профессиональный Документы
Культура Документы
Objetivo: Conocer y aplicar los conceptos relacionados con Anlisis Estructurado para la solucin de problemas y, aprender a codificar programas modulares en C. Contenido: Introduccin 1. Programacin Modular 2. Tcnicas de Diseo Modular 3. Ventajas de la programacin Modular 4. Cmo hacer el Anlisis Estructurado 5. Cmo utilizar Modularidad en C 6. Ejemplos 1 1 2 5 6 7 13
Introduccin Cuando los problemas que vamos a resolver son muy grandes o complejos, el disear la solucin se convierte en una actividad lenta y ardua, es aqu donde nos presta su mayor utilidad la Programacin Modular, ya que nos facilita la tarea de programar y nos permite elaborar estos programas de manera ms rpida y eficaz. La experiencia ha demostrado que la mejor manera de desarrollar una solucin y mantenerla, es construirla a partir de piezas pequeas, que la hacen ms manejable. A continuacin se presentan diferentes elementos que facilitan el diseo, implementacin, operacin y manteniendo de soluciones grandes para problemas grandes.
1.
La Programacin Modular es uno de los mtodos de diseo ms fciles, flexibles, y potentes para programar y mejorar la productividad de nuestros programas. Esta tcnica divide el problema en pequeas partes o sub-problemas y se debe disear una solucin para cada una de esas partes. A las divisiones o partes de un problema y a las soluciones o algoritmos que los resuelven, se les conoce como mdulos; cada mdulo debe realizar una tarea o actividad especfica. Para resolver cada sub-problema (o mdulo), ste se debe plantear, analizar, disear su algoritmo y codificarlo, individualmente. Recordemos que la solucin de cada sub-problema resuelve solo una parte del problema; la solucin completa del mismo est formada por el conjunto de todas y cada una de las pequeas soluciones diseadas y la interrelacin de todas ellas. Todo problema resuelto por esta tcnica tiene un algoritmo denominado PRINCIPAL, comnmente conocido como: mdulo raz, mdulo conductor o mdulo de control; ya que controla todo lo que sucede, tanto en ese mdulo como en todos los dems, transfiriendo el control de ejecucin a cada mdulo en el momento que sea requerido. De esa forma, cada mdulo puede realizar su funcin o tarea, pero al terminar regresa el control de ejecucin al algoritmo o mdulo principal.
La solucin de cada mdulo se le conoce como SUB-ALGORITMO. Un problema resuelto mediante programacin modular genera un algoritmo modular que consta de un algoritmo principal y uno o varios subalgoritmos. El algoritmo principal debe contener las llamadas a los sub-algoritmos y puede realizar una o varias tareas. Cada sub-algoritmo como representacin de la solucin de un mdulo tiene todas las propiedades de un algoritmo. Adems, estos pueden contener tareas simples que slo se ejecutan una vez o, lo que es ms frecuente, tareas repetitivas que se ejecutan varias veces y son llamadas para ejecutarse desde el algoritmo principal. Si la tarea asignada a un mdulo es muy compleja (o muy grande), debe dividirse todava en otro u otros mdulos ms pequeos. El proceso sucesivo de subdivisin de mdulos contina hasta que cada mdulo tenga solamente una tarea o accin especfica que ejecutar, esta tarea puede ser de entrada, salida, procesamiento o manipulacin de datos, control de otros mdulos o una combinacin de todos o algunos de estos. Los resultados producidos por un mdulo pueden ser utilizados por otro mdulo cuando se transfiera el control a ellos. Se disea cada mdulo con independencia de los dems, y siguiendo un mtodo ascendente o descendente, se llega hasta la descomposicin final del problema en mdulos en forma jerrquica. En pocas palabras, la tcnica implica dos partes: 1. Dividir el problema en sub-problemas ms pequeos. 2. Aplicar la Metodologa para resolver problemas a cada sub-problema; es decir para cada sub-problema se hace lo siguiente: Planteamiento (Qu hace?) Anlisis del problema (Cmo lo hace?) Diseo de la solucin o flujograma Codificacin o programa
que se va a hacer, o se cuenta con amplia pericia en la resolucin de problemas semejantes. Conforme se va alcanzando el desarrollo de mdulos ms grandes se plantea como objetivo final la resolucin global del problema. La tcnica de Botton Up es frecuentemente utilizada para la realizacin de pruebas a sistemas ya concluidos. WARNIER ORR: Es una tcnica que utiliza una representacin semejante a la de cuadros sinpticos para mostrar el funcionamiento y organizacin de los elementos que conforman el algoritmo. Bsicamente, utiliza una notacin de llaves para organizar los mdulos. El tipo de diseo que nosotros utilizaremos es el Dscendente, por lo que lo ampliaremos un poco ms.
2.2 Diseo Descendente o Top down. El diseo descendente o Top-down, esto es de arriba hacia abajo, es un procedimiento mediante el cual un problema se descompone en una serie de niveles o pasos sucesivos de refinamiento. La metodologa consiste en efectuar una relacin entre las etapas de estructuracin (o subproblemas), de modo que se conecten o comuniquen unas con otras, mediante entradas y salidas de informacin. Es decir, se descompone el problema en etapas o estructuras jerarquicas, de forma que se puede considerar cada estructura desde dos puntos de vista: Qu hace esa etapa? Y Cmo lo hace?. Cada nivel de refinamiento o sub-problema, conocidos ahora como mdulos, se debe consideran de la siguiente forma:
Mdulo 0
Mdulo 1
Mdulo 2
Mdulo 3
Mdulo 4
Mdulo 1-2
Mdulo 3-1
Mdulo 3-2
Mdulo 3-3
Mdulo 4-1
Mdulo 3-2-2
Mdulo 4-1-1
Para dividir un problema en trozos del mismo, ms pequeos, lo indicado es hacer una lista de las acciones o cosas que deben realizarse y agruparlas de alguna manera conveniente; adems debemos relacionarlas, indicando por medio de lneas la dependencia entre los mdulos, en la figura anterior, el mdulo 3-2-2 depende del mdulo 3-2, ste depende del mdulo 3 y ste a su vez del mdulo 0. Lo primero que podemos hacer es dividir el problema en tres partes: Entrada, Proceso y Salida, que como son las partes de todo algoritmo, casi siempre estn presentes y si el proceso en s es grande o complejo, se puede dividir en ms partes. Con la prctica veremos que se puede dejar la entrada de datos como parte del mdulo principal y que la salida puede ser un solo mdulo o formar parte de los mdulos de proceso; tambin podemos dejar la salida en el principal y disear un mdulo de entrada de datos y desde luego los de proceso. En fin que no hay una regla para dividir un problema, cada uno divide y disea los mdulos que considere necesarios. Cada mdulo puede contener acciones solo de entrada, solo de proceso, solo de salida de datos o, una combinacin de todos. Los datos con que trabaja un mdulo se conocen como parmetros, y estos forman parte de los datos de entrada, (pero no se leen), son enviados por el mdulo que lo precede por ejemplo en la figura anterior, los parmetros del mdulo 1-2, deben ser facilitados por el mdulo 1. Adems, cada mdulo puede producir resultados (datos de salida) que no se imprimen, sino que son requeridos por el mdulo que lo precede y, a estos datos, se les conoce como Valor de Retorno.
Algunas ventajas de programar modularmente son: Disminuir la complejidad Aumentar la claridad y fiabilidad. Posibilita el uso repetitivo de las rutinas en el mismo o en diferentes programas. Facilitar la ampliacin del programa mediante nuevos mdulos. Facilitar las modificaciones y correcciones al quedar automticamente localizadas en un mdulo, lo cual indica que un programa modular es fcil de mantener y modificar. Un programa modular es ms fcil de escribir y depurar (ejecutar, probar y poner a punto). Un programa modular es ms fcil de controlar. El desglose de un problema en mdulos permite encomendar los mdulos ms complejos a los programadores ms experimentados y los ms sencillos a los programadores con menos pericia o experiencia. Ahora bien, independientemente de la tcnica que se utilice para disear, para que este tipo de programacin sea realmente efectiva, se debe: Establecer un organigrama modular. En esta ocasin utilizamos la tcnica del TOP DOWN que se realiza mediante bloques, en el que cada bloque corresponde a un mdulo, y muestra grficamente la comunicacin entre el mdulo principal y los secundarios.
4.
La representacin grfica de la solucin de un problema mediante esta tcnica, tiene varios flujogramas: uno que representa el modulo principal y uno o varios ms, que representan a cada uno de los mdulos que se hayan diseado. A cada mdulo se le debe asignar un identificador o nombre, que lo diferencie de otros. Para indicar dentro del FLUJOGRAMA principal que se har uso de un subflujograma se utiliza el rectngulo con doble barra vertical, dentro del cual se escribe el nombre del mdulo, a esto se le conoce como invocacin del sub-flujograma o llamada a un sub-flujograma. Para diferenciar un subflujograma del flujograma principal, a los smbolos de inicio y fin se le aaden barras verticales; en el smbolo de inicio y fin, se escribe el identificador o nombre del mdulo y los parmetros de ste si los necesita; es muy comn terminar un sub-flujograma con la palabra retornar en el smbolo de fin, ya que al llegar a ste, se regresa el control de ejecucin al flujograma principal o, al sub-flujograma que lo ha utilizado o invocado, tambin se escribe aqu el valor de retorno si el mdulo produce alguno. Las siguientes figuras nos muestran los smbolos descritos anteriormente:
Nombre del mdulo(parmetros)
Nombre del modulo (Parmetros) Fin_Nombre del modulo, Valor de retorno
o tambin:
Retornar valor de retorno
Invocacin de un Sub-flujograma
Inicio de un Sub-flujograma
Fin de un Sub-flujograma
La representacin grfica (flujograma) de la solucin de un problema descompuesto en forma modular, adopta la estructura siguiente:
Inicio
Nombre2
Proceso3
Fin_Nombre1
Retornar Subflujogramas
Flujograma Principal
En donde: Proceso1, Proceso2 y Proceso3 pueden contener estructuras: Secuenciales (lectura, escritura, asignacin) Selectivas (seleccin simple, doble o mltiple) Iterativas (Mientras, Desde-hasta, Hasta que) Un sub-flujograma (mdulo) puede ser invocado desde el flujograma principal o desde otro subflujograma, al terminar de ejecutarse se retorna al flujograma principal o al sub-flujograma que lo invoc.
Con esa lista, ya podemos agrupar estas cosas en mdulos y formar el Top Down. 3. Aplicar la Metodologa para Resolver Problemas a cada Mdulo del Top Down Tomamos uno por uno de los mdulos del Top Down, y se resuelve cada uno como si ste fuera el nico problema, aplicando los 3 primeros pasos de la metodologa para resolver problemas: planteamiento (solo de este pequeo problema), anlisis y diseo de solucin. 4. Codificar el programa modular. Cuando se tienen las soluciones grficas o subflujogramas de todos los mdulos se codifican en C para formar un solo programa modular.
Declaracin de variables globales main() // Funcin Principal { Declaracin de variables locales; Sentencias; }
6.2 Variables Globales: Estas variables deben ser declaradas fuera de la funcin principal (main) y existen en memoria durante todo el tiempo de ejecucin del programa, por lo que, pueden ser referenciadas desde cualquier mdulo (funcin) o parte del programa. Lo cual significa que podemos utilizar estas variables en todas las funciones (o mdulos) del programa guardando su valor en todas ellas; y, ese valor se puede cambiar desde cualquiera de las funciones.
6.3 Variables Locales: Son variables que se declaran dentro de una funcin, y mantienen su valor mientras la funcin se est ejecutando, es decir que cuando se ejecuta otra funcin no existen en memoria, por lo tanto no se pueden utilizar, fuera de la funcin donde fueron declaradas. 6.4 Funcin: Una funcin es un conjunto de sentencias que realizan una tarea especfica, dicho de otra manera, una funcin es la codificacin en C de un mdulo; puede ser llamada o invocada desde cualquier parte del programa y devuelven un nico valor o ninguno. Para codificar en C una funcin necesitamos de las siguientes acciones: Declarar la funcin Definir la funcin Invocar la funcin. 6.5 Parmetros de una Funcin: Los parmetros o argumentos de una funcin son los datos, con los que se declara, define y se invoca la misma, una funcin puede tener o no parmetros. Los parmetros se comportan como variables locales, crendose al entrar a la funcin y destruyndose al salir de ella; es decir que, los parmetros reciben sus valores del mdulo o funcin que invoca la funcin, y con estos valores se trabajara en la funcin. Parmetros Formales, son los nombres de las variables con que se declaran y definen las funciones, estos se listan dentro de parntesis, separados por comas y cada parmetro debe indicar su tipo de dato. Parmetros Actuales, son los valores con que se invoca una funcin, es decir, los valores con que se va a ejecutar la funcin. Paso de parmetros: Los parmetros pueden ser trasladados a la funcin por valor o referencia, en esta asignatura utilizaremos nicamente el paso de parmetros por valor. El paso de parmetros por valor se conoce tambin como paso por copia, y significa que cuando C ejecuta la funcin y la sentencia que invoca la funcin, la funcin recibe una copia de los valores de los parmetros, si se cambia un parmetro afecta slo la funcin y no tiene efecto fuera de ella. 6.6 Declaracin de una Funcin o Prototipo de la funcin: Con la declaracin una funcin indicamos que el programa trabaja con esa funcin. declaracin de una funcin se le conoce tambin como prototipo de la funcin.
A la
Un prototipo de funcin consta de los siguientes elementos: tipo de dato que devuelve la funcin, nombre de la misma, lista de argumentos o parmetros tipificados y un punto y coma:
En donde: Tipo_retorno:
Es el tipo de dato del valor que devuelve la funcin: int, float, char, si no devuelve ningn valor se usa el tipo void.
Nombre_funcin:
Nombre o identificador de la funcin, se deben de seguir las normas para cualquier identificador. Lista_de_parmetros: Lista de las declaraciones de los parmetros que utiliza la funcin, separados por comas, conocidos como parmetros formales. Ejemplo: (int x, float y)
Como ejemplo de la sintaxis de la declaracin de una funcin, mostramos el siguiente prototipo de la funcin suma, que trabaja con dos parmetros enteros (n1 y n2) devuelve un valor entero:
Las funciones en C no se pueden anidar, lo que significa que una funcin no se puede declarar dentro de otra funcin; por lo tanto: TODAS LAS FUNCIONES UTILIZADAS EN UN PROGRAMA DEBEN SER DECLARADAS AL INICIO DE ESTE, DESPUS DE LAS MACROS DEL PREPROCESADOR y FUERA DE LA FUNCIN main()
6.7 Definicin de una Funcin: Cuando definimos una funcin, se hace despus de la funcin main, indicamos lnea por lnea que hace la funcin, es decir, contiene la codificacin de la solucin de un sub-problema. La definicin de una funcin consta de la cabecera de la funcin y, encerradas en llaves, el grupo de sentencias que detallan que hace. La primera lnea o cabecera es igual al prototipo de la funcin, pero sin el punto y coma al final. La estructura general de toda funcin se muestra a continuacin: Tipo_retorno nombre_Funcin (Lista_ Parmetros) { Declaraciones_variables_locales; Sentencias; return Expresin; }
Tipo de valor que devuelve la funcin o void si no devuelve ninguno. Identificador de la funcin. Lista de declaraciones de los parmetros de la funcin separados por comas.
Si la funcin no devuelve ningn valor, susde tipo void, en en la funcin. de return no es es tipos de datos, tal caso la lnea obligatoria, puede omitirse o escribir return 0; en ambos casos, el control de ejecucin regresa al mdulo (o funcin) que la invoc. Para ilustrar la definicin de una funcin utilizamos el siguiente ejemplo: La siguiente funcin suma dos nmeros enteros, es la definicin del prototipo del ejemplo de la pgina 9. int suma (int n1, int n2) { int sum; sum = n1+n2; return sum; } //n1 y n2 son los parmetros
7.8 Invocacin o Llamada a una Funcin: Las funciones para poder ser ejecutadas, deben ser llamadas o invocadas dentro de cualquier parte del programa. Para llamar una funcin basta con escribir el nombre de la funcin y la lista de sus parmetros encerrados en parntesis, conocidos como parmetros actuales. En la siguiente sentencia o lnea de programa, se invoca la funcin suma, declarada en el ejemplo de pg. 9 y definida en el numeral 7 de esta misma pgina: total = suma(2, 3); En esta lnea se utiliz la funcin suma con los valores (parmetros actuales) 2 y 3; el resultado de la funcin es asignado a la variable total; es decir, que al finalizar la ejecucin de esa lnea, total toma el valor resultante de ejecutar la funcin suma; en este caso total tendr el valor de 5. Cualquier expresin puede contener una llamada a una funcin que dirige el control de ejecucin del programa a la funcin invocada. La funcin llamada que recibe el control se ejecuta desde el principio y cuando termina sta, el control del programa vuelve a la funcin main o la funcin que la llam si no es main, segn se muestra a continuacin:
10
... void funcion1 ( ); void funcion2 ( ); int main() { ...; funcion1 ( ); funcion2 ( ); ...; return 0; } void funcion1 ( ) { ... return 0; } void funcion2 ( ) { ...; return 0; } El siguiente programa utiliza dos funciones que imprimen un mensaje, y se llaman desde la funcin principal, que tambin imprime otro mensaje:
#include <stdio.h> #include <conio.h> void funcion1 ( ); void funcion2 ( ); main( ) { puts (Esta es la FUNCION PRINCIPAL); funcion1( ); funcion2( ); getch(); return 0; }
//llamadas a funciones
void funcion1 ( ) //definicin primera funcion { puts(Estamos en la FUNCION UNO); } void funcion2( ) //definicin segunda funcin { puts(Estamos en la FUNCION DOS), return; }
11
Ejemplo de un programa completo, que utiliza la funcin suma: El siguiente programa calcula el promedio de 2 nmeros, utiliza la funcin suma de las pginas 7 y 9 #include <stdio.h> #include <conio.h> #define div 2.0 int suma(int n1, int n2); main() { int total; float media;
puts(digite dos nmeros positivos); scanf(%i %i, &a, &b); while ((a<=0) || (b<=0)) //validacin de datos { puts(debe ser positivo, digite de nuevo); scanf(%i %i, &a, &b); } total = suma(a,b) //invocacin a la funcin suma, el resultado de esta, se asigna a total. media= total/div; printf(\n La media es igual a: \t %.2f, media); getch(); return 0; } int suma(int n1, int n2) { int sum; sum = n1 + n2; return sum; } //Definicin de la funcin suma
NOTAS IMPORTANTES: Tipo de resultado: Es el tipo de dato que devuelve la funcin y aparece antes del nombre de la misma. Lista de parmetros: Es una lista de parmetros tipificados que utiliza la funcin. Cuerpo de la funcin: Se encierra entre llaves. No hay punto y como despus de la llave de cierre. No se pueden declarar funciones anidadas. Declaraciones locales: Las constantes y variables declaradas dentro de una funcin, son locales a la misma; por lo tanto se usan dentro de la misma y no existen fuera de ella. Antes de utilizar una funcin o de invocarla, debe ser declarada. La declaracin de una funcin contiene solo la cabecera de la misma, conocida tambin como prototipo. No se puede definir una funcin dentro de otra, las definiciones se hacen funcin por funcin y despus de la funcin principal.
12
I.
II.
TOP DOWN
Para disear el Top Down sirve de mucho hacer una lista de los grandes pasos o cosas que hacer: 1. Leer y validar los datos 2. Convertir a minutos 3. Convertir a segundos 4. Imprimir De estos, decidimos que disearemos 4 mdulos y el principal: uno de entrada o lectura de datos, que adems los valida; otro que convierte las horas en minutos; otro convierte los minutos a segundos y el cuarto que imprime los resultados. El mdulo principal, que se le llama Tiempos, por lo que se desea que haga; solo recibe los datos, invoca los otros mdulos en el orden debido y enva los parmetros. Veamos ahora el Top down: tiempos
leer
minutos
segundos
imprimir
13
III.
MDULO leer:
** Cmo lo hace?
Variables de Salida: No hay, devuelve el valor de la variable hora Variables de Entrada: Nombre Tipo Descripcin hora entero Representa el nmero de horas a convertir, variable local Parmetros: No hay, la funcin no tiene parmetros. Constantes Simblicas: No existen. Restricciones: Proceso: hora >0
No hay No hay
Variables de Proceso:
leer ( )
*
Mientras hora<=0
hora hora
Retornar hora
14
** Cmo lo hace?
Variables de Salida: No hay, devuelve el valor de la variable min Variables de Entrada: No hay. Parmetros: h: Nmero de horas a convertir, ledas en el mdulo leer. Constantes Simblicas: No existen. Restricciones: Proceso: No hay
min = 60 * h
Variables de Proceso: Nombre Tipo Descripcin min Entero Representa el nmero de minutos, variable local
minutos ( h )
min = 60 * h
Retornar min
15
Devuelve segundos
el
nmero
de
** Cmo lo hace?
Variables de Salida: No hay, devuelve el valor de la variable seg Variables de Entrada: No hay. Parmetros: m: Nmero de minutos a convertir, calculado en mdulo minutos. Constantes Simblicas: No existen. Restricciones: Proceso: No hay
seg = 60 * m
Variables de Proceso: Nombre Tipo Descripcin seg entero Representa el nmero de segundos, variable local
seg = 60 * m
Retornar seg
16
** Cmo lo hace?
Variables de Salida: Nombre Tipo Ho entero Mi entero Se entero Descripcin Representa el nmero de horas, variable local Representa el nmero de minutos, variable local Representa la cantidad de segundos, variable local
Variables de Entrada: No hay, recibe como parmetros ho, mi, se Parmetros: Ho, mi, se: Nmero de horas, minutos y segundos a imprimir ledos o Calculados en los otros mdulos. Constantes Simblicas: No existen. Restricciones: Proceso: No hay
No hay No hay
Variables de Proceso:
17
No. Horas, ho
Equivalentes a:
Retornar
MDULO principal:
** Qu Hace? Llama a los otros mdulos y Recibe-Asigna los resultados.
Entrada de datos Salida de datos
de y
** Cmo lo hace?
Variables de Salida: No hay, enva parmetros para la funcin imprimir. Variables de Entrada: No hay, recibe los valores de retorno de los otros mdulos: num_h,
num_m y num_s
Invoca los mdulos, y recibe-asigna los resultados: num_h = Leer( ) //resultado de Leer num_m = minutos( num_h ) //resultado de minutos num_s = segundos( num_m ) //resultdo de segundos
Variables de Proceso: Nombre Tipo Descripcin num_h entero Representa el nmero de horas, variable local num_m entero Representa el numero de minutos, variable local
18
num_s
num_s=segundos(num_m)
Fin
19
puts("estamos en la funcion minutos"); puts("conversion de horas a minutos"); min=60*h; puts("fin"); getch(); return min; }
int segundos(int m) { int seg; puts(Funcion segundos); puts("convertir minutos a segundos"); seg=60*m; getch(); return seg; }
int imprimir(int ho, int mi, int se) //Imprime horas, minutos y segundos. { puts( Funcion imprimir ); puts(" RESULTADOS "); printf("\n\n\n Numero de horas \t %i\n",ho); puts("EQUIVALENTES A:"); printf("\n %i \t minutos",mi); printf("\n %i \t segundos",se); getch(); return 0; }
Enunciado 2:
Disee un programa que simule una calculadora sencilla; es decir, que realice las operaciones aritmticas bsicas: SUMA, RESTA, MULTIPLICACIN Y DIVISIN. El programa debe permitir realizar varias operaciones e imprimir cada vez: el nombre de la operacin realizada, los datos, el resultado obtenido y, el nmero total de operaciones que se realizaron.
I.
PLANTEAMIENTO GENERAL
20
Entrada de datos
Salida de Datos
II.
TOP- DOWN
El tener una idea de lo que vamos a hacer ayuda mucho a decidir cuantos mdulos vamos a disear y la relacin que existe entre ellos; por lo tanto, las grandes cosas o pasos que se deben realizar son: 1. Leer datos 2. Elegir la Operacin 3. Operar (producir el resultado) 4. Imprimir el resultado 5. Contar las operaciones De aqu que podemos decir que vamos a tener un mdulo para cada operacin aritmtica; adems el modulo principal va a leer los datos y es necesario validarlos, luego los enva a los mdulos, tambin va a contar e imprimir el nmero de veces que se opera. El top-down queda as: Principal
suma
resta
multi
divi
III.
ANLISIS ESTRUCTURADO
MODULO suma
21
** Cmo lo Hace?:
Variables de Salida. Nombre Tipo a Real b Real r Real Descripcin El primer operando El segundo operando El resultado de la operacin
Variables de Entrada: No hay. Parmetros: a, b: Los dos nmeros que se van a sumar.
Retornar
MDULO principal
** Qu hace Principal?: Lee dos datos reales, elige la operacin a realizar y cuenta las operaciones hechas en total.
Entrada de datos Salida de Datos
22
** Cmo lo Hace?:
Variables de Salida: Descripcin El contador de las operaciones realizadas. Vf.? Debe enviar o mandar los dos nmeros a operar Variables de Entrada: Nombre Tipo x Real y Real op Entero otra Parmetros: Nombre i Tipo Real
Vi=0, Vc=1,
Descripcin El primer operando El segundo operando El tipo de la operacin a realizar 1: suma 2: resta multiplicacin 4: divisin Entero Indica si se requiere otra operacin, 1: otro clculo No hay, la funcin principal nunca tiene parmetros.
3.
Constantes Simblicas: No existen. Restricciones: op>=1 && op<=4. Proceso: i=0 leer otra leer x, y leer op Mientras otra==1 op =
23
Inicio i=0
op
Para hacer una operacin digite 1
1 2
otra
3
2
4 otra==1 Si
1: 2: 3: 4: Suma Resta Mutiplicacin Divisin 3
No
i=i+1
otra
op
Se realizaron: , i, operaciones
x, y Fin
1
24
MDULO divi ** Qu hace DIVI?: Divide dos nmeros e imprime: la palabra DIVISION, los nmeros divididos y el resultado de la divisin
Entrada de datos Salida de Datos
** Cmo lo Hace?:
Variables de Salida. Nombre Tipo a Real b Real r Real Descripcin El primer operando El segundo operando El resultado de la operacin
Variables de Entrada: No hay, Parmetros: a, b: Los dos nmeros que se van a dividir.
Constantes Simblicas: No existen. Restricciones: No hay. Proceso: Hay que recordar que la divisin por cero no se puede ejecutar, por lo tanto: b!=0? Si: r = a/b No: imprimir a, b no se pueden dividir Variables de Proceso: No hay.
divi(a,b)
b!=0
Retornar
25
MDULO resta ** Qu hace RESTA?: Resta dos nmeros e imprime: la palabra RESTA, los nmeros restados y el resultado de la diferencia
Entrada de datos Salida de Datos
** Cmo lo Hace?:
Variables de Salida. Nombre Tipo a Real b Real r Real Descripcin El primer operando El segundo operando El resultado de la operacin
Variables de Entrada: No hay, se reciben los datos a restar (a,b) Parmetros: a, b: Los dos nmeros que se van a restar.
Retornar
26
MDULO multi
** Cmo lo Hace?:
Variables de Salida. Nombre Tipo a Real b Real r Real Descripcin El primer operando El segundo operando El resultado de la operacin
Variables de Entrada: No hay. Parmetros: a, b: Los dos nmeros que se van a multiplicar.
multi(a,b)
MULTIPLICACIN r=a*b Datos, a,b Resultado de la operacin:, r
Retornar
27
28
puts("SUMA"); r = a+ b; printf("\n \n Resultado de la operacin: \t%.3f \n", r); } void resta(float a, float b) //FUNCION RESTA { float r; puts("RESTA"); r = a-b; printf("\n \n Resultado de la operacin: \t%.3f \n", r); } void multi(float a, float b) //FUNCION MULTI { float r; puts("MULTIPLICACION"); r = a*b; printf("\n \n Resultado de la operacin: \t%.3f\n", r); } //FUNCION DIVI void divi(float a, float b) { float r; puts("DIVISION"); if (b!=0) { r = a*b; printf("\n Datos:\t %.2f \t %.2f", a,b); printf("\n \n Resultado de la operacin: \t%.3f \n", r); } else printf("\n\n\n %.2f \t y \t %.2f t No se pueden dividir", a,b); return 0; }
Material editado por: Ing. Carolina Ayala e Ing. Milagro Castillo P. ciclo II 2011
29