Anda di halaman 1dari 21

Universidad de El Salvador Facultad Multidisciplinaria Paracentral Departamento de Informtica Programacin I Gt 01 Y Gt 02

Unidad III Anlisis Estructurado

Ciclo II/2013

Programacin I Ciclo II 2012

Programacin Modular.
Cuando los problemas que vamos a resolver son muy grandes o complejos, el disear la solucin se convierte en una actividad lenta, es aqu donde se utiliza la Programacin Modular, ya que este tipo de programacin facilita la tarea de programar y 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.

PROGRAMACIN MODULAR o ANLISIS ESTRUCTURADO. La Programacin modular es uno de los mtodos de diseo ms fciles, flexibles, y potentes para programar y mejorar la productividad de los 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 slo 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.

Inga. Virna Yasmina Urquilla MSC. Jossue Henrquez

Programacin I Ciclo II 2012

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 SUBALGORITMO. 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 podra 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 y6nJerrquica. En definitiva la tcnica consiste en: Dividir el problema en sub-problemas ms pequeos. 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

Inga. Virna Yasmina Urquilla MSC. Jossue Henrquez

Programacin I Ciclo II 2012

Tcnica de 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 jerrquicas, de forma que se puede considerar cada estructura desde dos puntos de vista: Qu hace esa etapa? Y Cmo lo hace?. En cada nivel de refinamiento o sub-problema (conocidos ahora como mdulo), las estructuras se consideran de la siguiente forma:

El diseo descendente o Top-down, puede verse de forma grafica as:

Inga. Virna Yasmina Urquilla MSC. Jossue Henrquez

Programacin I Ciclo II 2012

Proceso, Para dividir un problema en trozos ms pequeos, lo indicado es.


-Hacer una lista de las acciones o cosas que deben realizarse y- Agruparlas de alguna manera conveniente; -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, Como son las partes de todo algoritmo, 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 , y estos forman parte de los datos de entrada, 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

parmetros

Valor de

Retorno.
Concepto de mdulo: Un mdulo representa siempre una funcin o tarea determinada y en general consta de: Un conjunto de instrucciones que se procesan de una sola vez y se referirn mediante un nombre por el que posteriormente sern llamados o invocados desde diferentes puntos de un programa. Un mdulo debe tener un punto de entrada y un punto de salida y puede ser: un programa, una funcin, un procedimiento o subrutina.

Inga. Virna Yasmina Urquilla MSC. Jossue Henrquez

Programacin I Ciclo II 2012

Ejemplo Se desea disear un programa que lea una serie de n nmeros de un archivo o del teclado, los visualice ordenadamente y calcule la frecuencia de aparicin de cada uno de ellos. La descomposicin del problema en mdulos puede ser: Entrada de nmeros de la lista. Ordenar los nmeros de la lista. Visualizar lista ordenada. Calcular y visualizar frecuencia de aparicin.

Mdulo Raz

Entrada de nmeros de la lista

Ordenar lista

Visualizar lista

Calcular y visualizar frecuencia

Ejemplo de modularidad.

VENTAJAS DE UTILIZAR PROGRAMACIN MODULAR (o Anlisis Estructurado). La tcnica de Anlisis Estructurado se conoce tambin como la tcnica

Divide y

Vencers, ya que se descompone un problema en mdulos independientes ms simples,


que son fciles de resolver. Se disea la solucin de cada mdulo con independencia de los dems. Lo que nos facilita el anlisis, el diseo del algoritmo y desde luego su codificacin. Adems, como cada mdulo se considera independiente, varios programadores pueden disear por separado las soluciones a diferentes mdulos, con lo cual se minimiza el trabajo o esfuerzo personal y el tiempo de diseo para la solucin completa.

Inga. Virna Yasmina Urquilla MSC. Jossue Henrquez

Programacin I Ciclo II 2012

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.

REPRESENTACIN GRFICA DE UN ALGORITMO MODULAR La representacin grfica de la solucin de un problema mediante esta tcnica, tiene varios flujogramas: uno que representa el mdulo 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 llamada a un sub-flujograma o invocacin del sub-flujograma o sub rutina. 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. La representacin grfica (flujograma) de la solucin de un problema descompuesto en forma modular, adopta la estructura siguiente:

Inga. Virna Yasmina Urquilla MSC. Jossue Henrquez

Programacin I Ciclo II 2012

En donde: Proceso1, Proceso2 y Proceso3 pueden contener estructuras: Secuenciales (lectura, escritura, asignacin) Selectivas (seleccin simple, doble o mltiple) Iterativas (Mientras, Desde-hasta, Hacer -mientras) 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.

MODULARIDAD EN C.

Para aprender a escribir en C un programa modular, se hace necesario recordar algunos conocimientos ya adquiridos.
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.

Inga. Virna Yasmina Urquilla MSC. Jossue Henrquez

Programacin I Ciclo II 2012

Variables locales. Las variables locales se declaran siempre dentro de la funcin y son locales a la funcin donde han sido declaradas; es decir, su mbito est confiado a esa funcin. Las variables locales definidas en funciones deferentes sern independientes unas de otras, incluso si tienen el mismo nombre. Cualquier variable declarada dentro de una funcin se interpreta como una variable local a menos que se incluya dentro de la declaracin de un tipo distinto de almacenamiento. Variables globales El mbito de las variables globales se extiende desde el punto de definicin hasta el resto del programa. Por tanto, generalmente abarcan dos o ms funciones y frecuentemente todo el programa. Como las variables globales se reconocen en todo el programa se puede acceder a las mismas desde cualquier funcin que se encuentre dentro de su mbito. Mantiene los valores asignados dentro de este mbito. Por tanto a una variable global se le puede asignar un valor dentro de una funcin y este valor puede usarse dentro de otra funcin. La utilizacin de variables globales proporciona un mecanismo adecuado de transferencia de informacin entre funciones. Todo programa en C consta de una o ms funciones. Una de estas funciones tiene que llamarse main. Se pueden subordinar funciones adicionales a main, y posiblemente una a otras. Si un programa contiene varias funciones, sus definiciones pueden aparecer en cualquier orden, pero deben ser independientes unas de otras. Esto es, una definicin de una funcin no puede estar incluida en otra. Cuando se accede a una funcin desde alguna parte determinada del programa, se ejecutan las instrucciones de que consta. Se puede acceder a una misma funcin desde varios lugares

Inga. Virna Yasmina Urquilla MSC. Jossue Henrquez

Programacin I Ciclo II 2012

distintos del programa. Una vez que se ha completado la ejecucin de una funcin, se devuelve el control al punto desde el que se accedi a ella. Generalmente una funcin procesar la informacin que le es pasada desde el punto del programa en donde se accede a ella y devolver un solo valor. La informacin se le pasa a la funcin mediante unos identificadores especiales llamados argumentos y es devuelta por medio de la instruccin devuelven nada.

return, sin embargo, algunas funciones

aceptan informacin pero no

Prototipos de funciones.
Los prototipos de funciones normalmente se escriben al comienzo del programa, delante de todas las funciones definidas por el programador. La forma general de un prototipo de funcin es:

Tipo-de-datos nombre (tipo1 arg1, tipo2 arg2,..tipo n argumento n);


En donde: tipo-de-datos representa el tipo de datos del elemento devuelto por la funcin, nombre representa el nombre de la funcin, tipo 1, tipo 2,.tipo n representan los tipos de datos de los argumentos arg 1, arg 2, .arg n. Observe que un prototipo de funcin es similar a la primera lnea de una funcin ( si bien un prototipo de funcin finaliza con un punto y coma). No es necesario declarar en ningn lugar del programa los nombres de los argumentos de un prototipo de funcin, puesto que estos son nombres de argumentos que solo se reconocen dentro del prototipo. Los tipos de datos de los argumentos son esenciales. Los prototipos facilitan la comprobacin de errores interior entre las llamadas a una funcin y la definicin de una funcin correspondiente.

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, reciben sus valores del mdulo o funcin que invoca la funcin, y con estos valores se trabajar 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. Los parmetros pueden ser trasladados a la funcin por valor o referencia, pero slo utilizaremos el paso de parmetros por valor.

10

Inga. Virna Yasmina Urquilla MSC. Jossue Henrquez

Programacin I Ciclo II 2012

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.

Ejemplo de la sintaxis de la declaracin de una funcin: Prototipo de una funcin llamada suma, trabaja con dos parmetros enteros (n1 y n2) devuelve un valor entero:

int suma (int n1, int n2);

Definicin de una funcin.


La definicin de una funcin tiene dos componentes principales: - la primera lnea (incluyendo las declaraciones de los argumentos) y el cuerpo de la funcin.
La primera lnea de definicin de una funcin contiene la especificacin del tipo de valor devuelto por la funcin, seguido del nombre de la funcin y un conjunto de argumentos, separados por comas y encerrados entre parntesis. Cada argumento viene precedido por su declaracin de tipo. Si la definicin de la funcin no incluye ningn argumento hay que incluir detrs del nombre de la funcin un par de parntesis vacos.

En trminos generales la primera lnea se puede escribir as: Tipo-de-dato nombre( tipo 1 arg 1, tipo 2 arg 2, .tipo n arg n){ Donde - tipo-de-dato representa el tipo de datos del valor que devuelve la funcin y nombre el nombre de la funcin, y tipo 1, tipo 2, tipo n representan los tipos de datos de los argumentos arg 1, arg 2..arg n. los tipos de datos se suponen enteros cuando no se indican explcitamente.
Los argumentos se denominan argumentos formales, ya que representan los nombres de los elementos que se transfieren a la funcin desde la parte del programa que hace la llamada. Tambin se llaman parmetros o parmetros formales (los argumentos correspondientes en la referencia a la funcin se denominan argumentos reales, ya que definen la informacin que realmente se transfiere). Los identificadores utilizados como argumentos formales son <<locales>>, en el sentido de que no son reconocidos fuera de la funcin.

Sintaxis de definicin de funcin


Tipo_retorno nombre_Funcin (Lista_ Parmetros) { Declaraciones_variables_locales; Sentencias; return Expresin; } En donde: Tipo_retorno: Tipo de valor que devuelve la funcin o void si no devuelve ninguno. Nombre_funcin: Identificador de la funcin.

11

Inga. Virna Yasmina Urquilla MSC. Jossue Henrquez

Programacin I Ciclo II 2012

Lista_parmetros: Lista de declaraciones de los parmetros de la funcin separados por comas. Declaraciones_variables_locales: Detalle de las variables que se utilizan y sus tipos de datos, en la funcin. Sentencias: Cuerpo de la funcin. Expresin: Valor que devuelve la funcin, normalmente es el nombre de una variable.

Ejemplo de definicin de una funcin:

Acceso a una funcin


Se puede acceder a una funcin especificando su nombre, seguido de una lista de argumentos encerrados entre parntesis y separados por comas, si la llamada a la funcin no requiere ningn argumento, se debe escribir a continuacin del nombre de la funcin un par de parntesis vacos. La llamada a la funcin puede formar parte de una expresin simple o puede ser uno de los operandos de una expresin ms compleja. Los argumentos que aparecen en la llamada a la funcin se denominan argumentos reales en contraste con los argumentos formales que aparecen en la primera lnea de la definicin de la funcin. Ejemplo de invocacin de una funcin: En esta sentencia o lnea de programa, se invoca la funcin suma, declarada en el ejemplo anterior 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. Los argumentos pueden ser constantes, variables simples o expresiones ms complejas. 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:

12

Inga. Virna Yasmina Urquilla MSC. Jossue Henrquez

Programacin I Ciclo II 2012

ES IMPORTANTE RECORDAR: 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. Ejemplo de la sintaxis completa del uso de funciones:
#include <stdio.h> #include<stdlib.h> void resta(int valor1, int valor2); int multiplica(int, int); int main() { int numero1, numero2, resultado; system("cls"); printf("Introduzca dos nmeros"); scanf("%d %d",&numero1,&numero2); resta(numero1, numero2); // llama a la funcin "resta" resta(numero2, numero1); // llama a la funcin resta

13

Inga. Virna Yasmina Urquilla MSC. Jossue Henrquez

Programacin I Ciclo II 2012 resultado = multiplica(numero1, numero2); // llama a la funcin multiplica y guarda el valor retornado en la variable //resultado printf("\n La multiplicacin de los dos valores es: %d", resultado); return 0; } void resta(int valor1, int valor2) { int sustraccion; // variable local sustraccion = valor1 - valor2; printf( "\nLa resta de los dos valores es:% d",sustraccion); } int multiplica(int valor1, int valor2) { int local; // variable local local = valor1 * valor2; return local; }

Ejemplo de variables globales


#include <stdio.h> #include<stdlib.h> void funcion1(int parametro); int global; int main() { int local1=5, i; global=10; system("cls"); printf("Introduzca un numero para la variable local1"); scanf("%d",&local1); printf("\n Local1 tiene: %d", local1); for(i=0; i<5; i++) { int local2; // valida solo dentro del bucle local2 = i; printf("\nlocal2 tiene: %d",local2); } printf("\nLa variable global vale:%d ",global); funcion1(local1); printf( "\nLa variable local1 vale:%d",local1); printf("\nLa variable global ahora vale:%d ",global); global=45; printf("\nLa variable global ahora vale:%d ",global); funcion1(3); return 0; } void funcion1(int parametro) { global =parametro+global; printf("\n global dentro de la funcin tiene %d",global); }

14

Inga. Virna Yasmina Urquilla MSC. Jossue Henrquez

Programacin I Ciclo II 2012 Ejemplo 3: Mostrar la serie fibonacci hasta un numero ledo desde el teclado.

Anlisis
Datos de entrada: Cantidad de nmeros amostrar de la serie Datos de salida Serie fibonacci Proceso: a=1 b=0 c=a+b b=a a=c Restricciones n tiene que ser > 0 tipo entero entero variable n a

main 0

Top-down

Captura 1.0

Resultado 1.1

Diagrama de flujo
inicio captura resultado(n)

captura

a=1 b=0

v n<0 fin i=1;i<=n;i=i+1 v f a

resultado(n)

c=a+b b=a

fin_captura

a=c

fin_resultado

15

Inga. Virna Yasmina Urquilla MSC. Jossue Henrquez

Programacin I Ciclo II 2012

Programa
#include<stdio.h> #include<stdlib.h>

/***** Prototipo de funcin*///// void captura( ); void resultado(int); /***************************////

/*------ funcin principal---------*///// main(){ captura(); / / llamada a la funcin camptura return 0; } /*------------------------*/////

/*------ Definicin de la funcin captura---------*///// void captura( ){ int n; system("cls"); do{ printf("Digite un nmero"); scanf("%d",&n);} while(n<=0); resultado(n); // llamada a la funcin resultado y pasa como parmetro n } /*------ termina la funcin captura---------*/////

/*------ Definicin de la funcin resultado---------*///// void resultado(int n){ int a=1,b=0,i,c; for(i=1;i<=n;i++){ printf("%d\t",a); c=a+b; b=a; a=c; } } /*------ termina la funcin resultado---------*/////

16

Inga. Virna Yasmina Urquilla MSC. Jossue Henrquez

Programacin I Ciclo II 2012

Ejercicios para desarrollar en clases


1. Realizar una funcin llamada ultima, que toma una cadena de hasta 10 caracteres como parmetro, y devuelve el ltimo carcter. Esa funcin debe devolver el ltimo carcter si no es vaca (es decir, si tiene caracteres); si es vaca () debe devolver un carcter terminador (\0) para indicar que era vaca. 2. Realizar una funcin llamada strlen2, que toma una cadena de hasta 1000 caracteres como parmetro, y devuelve un nmero entero que es el nmero de caracteres que tiene. NOTA: Debe recorrerse la cadena (vector de caracteres) desde la posicin 0 hasta que se encuentre el carcter terminador (\0). El nmero de caracteres que tiene coincide con la posicin donde est el terminador. 3. Realizar dos funciones: una llamada pedir, que no toma parmetros, y devuelve un nmero entero; y otra llamada triple, que toma un nmero entero como parmetro y devuelve un nmero entero. La funcin pedir debe pedir por teclado un nmero entero, y devolverlo. La funcin triple, debe calcular el triple del nmero que recibe como parmetro y devolver el resultado. 4. Escribir un programa que mediante funciones obtenga la distancia entre dos puntos que se encuentran en el plano a partir de la lectura de sus coordenadas. 5. Desarrolle el diagrama de flujo y el programa de acuerdo al siguiente top-down,
Main 0

captura 1.0

operacin 1.0

resultado 3.0

Suma 1.1

Resta 1.2

Divisin 1.3

multi 1.4

Modulo 1.5

De donde: Main; llama a la funcin captura, despus llama a la funcin operacin y por ltimo a la funcin resultado. Captura; captura don nmeros reales y la operacin a realizar; y le devuelve lo capturado a main. Operacin: dependiendo del tipo de operador capturado llamar al modulo correspondiente y le enviar los datos respectivos, adems retornar el resultado a main(). Resultado: mostrar el resultado que le ha enviado main, en pantalla. Suma; realizar la suma de los datos que le envi operacin y retornar el resultado

17

Inga. Virna Yasmina Urquilla MSC. Jossue Henrquez

Programacin I Ciclo II 2012

Resta, realizar la resta con los datos que le enve operacin y retornar el resultado Divisin; realizar la divisin con los datos que le enve operacin y retornar el resultado multi; realizar la multiplicacin con los datos que le enve operacin y retornar el resultado. modulo; obtendr el resto, con los datos que le enve operacin y retornar el resultado.

6. Desarrollar una solucin que obtenga el promedio de los nmeros pares, promedio de los impares, y la cantidad de nmeros primos, de n nmeros ingresados desde el teclado. Debe hacer uso de funciones donde una de ellas debe ser un men para elegir que se sedea visualizar. Ejemplo Men 1. Promedio Pares 2. Promedio impares 3. Cuantos primos 0. Salir. 7. Una persona desea invertir X cantidad de dinero en un negocio, el cual le otorga un % inters ingresado desde el teclado. Cul ser la cantidad de dinero que esta persona tendr al cabo de cinco aos si la ganancia de cada mes es reinvertida? 8. Calcule lo que debe pagar cada cliente en un almacn; si por cada compra el cliente tiene derecho a sacar un papelito, y dependiendo del color, se efectan diferentes descuentos. Si el color es blanco, se realiza un descuento del 3% sobre la cuenta, si es verde, un descuento de 5% y si es rojo, un descuento de 7%. se sabe adems que si es da lunes o viernes, el porcentaje de descuento es el doble.

9. Escribe una funcin que calcule el factorial de un nmero, dado como parmetro. A continuacin realiza un programa que lea por teclado un nmero entero n y muestre por pantalla los factoriales de los nmeros de 1 a n. El programa debe usar la funcin factorial previamente definida. 10. Realizar un programa que calcule el nmero e, utilizando el siguiente desarrollo en serie: e = 1 + 1/1! + 1/2!+ + 1/10! + El programa debe usar la funcin factorial definida en el ejercicio anterior. 11. Dos nmeros son amigos, si cada uno de ellos es igual a la suma de los divisores del otro. Por ejemplo, 220 y 284 son amigos, ya que: Suma de divisores de 284: 1 + 2 + 4 + 71 + 142 = 220 Suma de divisores de 220: 1 + 2 + 4 + 5 + 10 + 11 + 20 + 22 + 44 + 55 + 110 = 284 Hacer una funcin que determine si dos nmeros dados como parmetros son amigos o no. A continuacin realizar un programa que muestre todas las parejas de nmeros

18

Inga. Virna Yasmina Urquilla MSC. Jossue Henrquez

Programacin I Ciclo II 2012

amigos menores o iguales que n, siendo n un nmero introducido por teclado. El programa debe usar la funcin amigo previamente definido. 12. Escribir un programa que pida los 3 lados de un tringulo y a continuacin muestre los siguientes datos: Cuanto vale la hipotenusa, Cuanto el cateto mayor y cuanto el cateto menor, y Si el tringulo es equiltero, issceles o escaleno.
10. Realizar un programa que muestre por pantalla el siguiente men:

1.- Calcular el factorial de un nmero. 2.- Calcular el n e: 3.- Hallar si dos nmeros son amigos 0.- Salir del programa El usuario podr elegir cada una de las opciones del men. Si la opcin pulsada no es ninguna de las anteriores el programa debe mostrar un mensaje informando de tal error y no debe salirse hasta que se ingrese la opcin salir. 11. Construir un programa modular para tratamiento de cadenas de caracteres. Una cadena se construye a partir de un string de caracteres y tiene una longitud que describe el nmero de caracteres de la cadena. El programa proporciona las siguientes opciones: - Ingresar una nueva cadena - Obtener la longitud de una cadena - Obtener el texto de la cadena - Convertir la cadena a minsculas - Copiar una cadena - Concatenar dos cadenas - Comprobar si una cadena est vaca - Comparar dos cadenas, c1 y c2, para comprobar si: c1 = c2 c1 < c2 c1 > c2 12. Crear una funcin en C que permita al usuario escribir una palabra pero cuando se digite cada letra o carcter slo aparezca un asterisco como si estuviese ingresando una clave. Ejemplo si digita la palabra profesor aparecer en la pantalla ******** 13. Escribir una funcin en C que cuente el nmero de ocurrencias de cada vocal (tanto si es mayscula como minscula) en una cadena de caracteres y los muestre por pantalla. 14. Escribir una funcin que ingrese un numero cualquiera y que devuelva como resultado la suma de sus dgitos, ejemplo si el nmero fuera 23 la suma seria 5.

19

Inga. Virna Yasmina Urquilla MSC. Jossue Henrquez

Programacin I Ciclo II 2012

15. Escribir una funcin llamada "cantidad" que reciba como argumento un numero entero y un string y que luego diga si el string tiene la misma cantidad de letras que el numero entero ingresado. 16. Escribir una funcin que tenga como entrada una cadena y devuelva el numero de consonantes y dgitos de la cadena. 17. Crear un programa en C que solicite nmeros naturales hasta que el usuario desee terminar. Por cada nmero introducido se deber visualizar: - Si el nmero es primo: su factorial. - Y si el nmero no es primo: sus mltiplos menores que el mismo. 18. Pirmide. Escribir una funcin que imprima por pantalla una pirmide como la de la figura: * *** ***** ******* **** ***** El argumento de la funcin es la altura de la pirmide. 19. Si el cuadrado de un nmero es igual a la suma de los nmeros impares del numero (ejemplo 32 = 1+3+5) cree una funcin que calcule el cuadrado de un numero mediante sumas sucesivas de los nmeros impares. 20. Desarrollar un programa en c que permita obtener el permetro y rea de una figura de 4 lados y diga si es un cuadrado o un rectngulo. Esto mediante funciones. 21. Escribir un programa que imprima el equivalente en letras de una cantidad introducida en cifras (ejemplo= se introduce "190" y el programa me entregue "ciento noventa" 22. Escribir un programa que a travs de un men permita al usuario elegir el clculo del rea de cualquiera de las figuras geomtricas: circulo, cuadrado, rectngulo o triangulo, mediante funciones. 23. Desarrollar un programa que calcule el coeficiente del binomio con una funcin factorial. Nota: el factorial solo se le podrn sacar a nmeros enteros positivos.

m n

m! n!(m-n)!

24. Desarrollar un programa que lea dos nmeros enteros, luego los pase como parmetros a una funcin cuya tarea es visualizar todo el nmero que estn comprendidos entre los dos enteros.

20

Inga. Virna Yasmina Urquilla MSC. Jossue Henrquez

Programacin I Ciclo II 2012

25. Disear un programa que calcule el mximo comn divisor de dos nmeros mediante el algoritmo de Euclides. Sean dos nmeros A y B, el mtodo para hallar el mximo comn divisor (mcd) de dos nmeros A y B por el mtodo de Euclides es: Dividir el nmero mayor (A) por el menor (B). si el resto de la divisin es cero, el numero B es el mximo comn divisor. Sin la divisin no es exacta, se divide el nmero menor (B) por el resto de la divisin anterior. Se siguen los pasos anteriores hasta obtener un resto cero. El ltimo divisor es el MCD buscado. 26. Se introduce por el teclado una hora determinada con el formato; H, M, S (H: horas, M: minutos, S: segundos). Se pide calcular la hora que ser dentro de un segundo. 27. En un negocio de fotocopias, se ofrecen los siguientes servicios: Ventas varias: Lpiz = $ 0.75 Hojas Bond = $ 0.25 Folder = $ 1.25 Borrador = $ 3.66 Fastener = $ 1.00 Bolgrafo = $ 1.50 Fotocopiado: Tamao carta = $ 0.02 Tamao oficio = $ 0.03 Planos = $ 0.10 Colores = $ 0.25 (sin importar tamao) Procesamiento de texto: Slo texto = $ 0.15 Con grficos = $ 0.25 Disear un programa que calcule la cuenta total a pagar de un cliente, segn los servicios que haya requerido. Si el cliente no compra algn artculo o servicio puede introducir 0 unidades y desplegar el mensaje: Lo esperamos de nuevo. La cuenta total a pagar debe de ser expresada tanto en colones como en dlares y diferenciar los totales segn los rubros de servicio utilizados.

21

Inga. Virna Yasmina Urquilla MSC. Jossue Henrquez

Anda mungkin juga menyukai