You are on page 1of 9

EJEMPLO 1.

ANALISIS ESTRUCTURADO
Enunciado del problema:
“Diseñe un programa que calcule los minutos y segundos que equivalen a una
cantidad de horas”.

I. PLANTEAMIENTO GENERAL DEL PROBLEMA

Entrada de datos Salida de datos

 Cantidad de  Número de minutos


horas a convertir  Número de segundos

II. TOP DOWN

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 diseñaremos 4 módulos y el principal:


• Uno de entrada o lectura de datos, que además los valida;
• Otro que convierte las horas en minutos;
• Otro convierte los minutos a segundos y
• El cuarto que imprime los resultados.
El módulo principal, solo recibe los datos, invoca los otros módulos en el orden debido
y envía los parámetos.

Veamos ahora el Top down:

Principal

leer minutos segundos imprimir


III. APLICACIÓN DE LA METODOLOGÍA PARA RESOLVER PROBLEMAS
para cada módulo

a. MÓDULO leer:

** Qué Hace? Lee y valida los datos.


Entrada de datos Salida de datos

 Cantidad de  Devuelve el número de


horas a convertir horas

** Cómo lo hace?
Variables de Salida: No hay, devuelve el valor de la variable hora

Variables de Entrada:
Nombre Tipo Descripción
hora entero Representa el número de horas a convertir, variable local

Restricciones: hora >0

Proceso: No hay

Variables de Proceso: No hay

Diseño de solución

Subflujograma leer
leer ( )

“Digite el
número de
horas:”

hora

Mientras hora<=0

“Debe ser positivo”

hora

Retornar hora
b. MÓDULO minutos:

** Qué Hace? Convierte las horas en minutos.

Entrada de datos Salida de datos

 Recibe la  Devuelve el número


cantidad de de minutos
horas

** Cómo lo hace?

Variables de Salida: No hay, devuelve el valor de la variable min

Variables de Entrada: No hay

Parámetros:
Recibe como parámetro h, (número de horas a convertir, leídas en módulo leer)

Constantes simbólicas: No existen

Restricciones: No hay

Proceso: min = 60 * h

Variables de Proceso:
Nombre Tipo Descripción
min Entero Representa el número de minutos, variable local

Diseño de Solución
Subflujograma minutos:

minutos ( h )

min = 60 * h

Retornar min
c. MÓDULO segundos:

** Qué Hace? Convierte los minutos en segundos.

Entrada de datos Salida de datos

 Recibe la  Devuelve el número de


cantidad de segundos
minutos

** Cómo lo hace?

Variables de Salida: No hay, devuelve el valor de la variable seg

Variables de Entrada: No hay.

Parámetros:
Recibe como parámetro m, (número de minutos a convertir, calculado en módulo
minutos)

Constantes simbólicas: No existen

Restricciones: No hay

Proceso: seg = 60 * m

Variables de Proceso:
Nombre Tipo Descripción
seg entero Representa el número de segundos, variable local

Subflujograma segundos:

segundos ( m )

seg = 60 * m

Retornar seg
d. MÓDULO imprimir:

** Qué Hace? Imprime horas, minutos y segundos.

Entrada de datos Salida de datos

 Recibe la cantidad  Cantidad de horas


de horas, minutos  Cantidad de minutos
y segundos  Cantidad de segundos

** Cómo lo hace?

Variables de Salida:

Nombre Tipo Descripción


Ho entero Representa el número de horas, variable local
Mi entero Representa el número de minutos, variable local
Se entero Representa la cantidad de segundos, variable local

Variables de Entrada: No hay

Parámetros:
Recibe como parámetros ho (Número de horas), mi (Número de minutos), y se
(Número de segundos) leídos o calculados en los otros módulos.

Constantes simbólicas: No existen

Restricciones: No hay

Proceso: No hay

Variables de Proceso: No hay

Diseño de solución

Subflujograma imprimir:

imprimir ( ho, mi, se )

“No. Horas”, ho

“Equivalentes a:”,

mi, “Minutos” se,


“ Segundos”

Retornar
e. MÓDULO Principal:

** Qué Hace? Llama a los otros módulos y Recibe-Asigna los resultados.

Entrada de datos Salida de datos

 Recibe la cantidad de Envía la cantidad de


horas horas, minutos y
 Recibe la cantidad de segundos
minutos
 Recibe la cantidad de
segundos

** Cómo lo hace?

Variables de Salida: No hay.

Variables de Entrada: No hay, recibe los valores de retorno de los otros módulos
num_h, num_m y num_s

Parámetros: No hay.

Constantes simbólicas: No existen

Restricciones: No hay

Proceso: Invoca los módulos, y recibe-asigna los resultados:

num_h = Leer( ) //resultado de Leer

num_m = minutos( num_h ) //resultado de minutos

num_s = segundos( num_m ) //resultado de segundos

Variables de Proceso:

Nombre Tipo Descripción


num_h entero Representa el número de horas, variable local
Num_m entero Representa el numero de minutos, variable local
Num_s entero Representa el número de segundos, variable local
Diseño de Solución
Flujograma Principal:

Inicio

num_h = Leer()

num_m=minutos(num_h)

num_s=segundos(num_m)

Imprimir( num_h, num_m,


num_s)

Fin
IV. CODIFICACION DE LA SOLUCION

//Primer programa con Funciones

#include<conio.h>
#include<stdio.h>

//Declaracion de prototipos
int leer();
int minutos(int h);
int segundos(int m);
int imprimir(int ho, int mi, int se);

main() //Funcion principal


{
int num_h, num_m, num_s;

puts("Estamos en la funcion principal");


num_h = leer();
num_m = minutos(num_h);
num_s = segundos(num_m);
imprimir(num_h,num_m, num_s);
printf("\nTerminamos la funcion principal");
getch();
return 0;
}

//Definicion de cada funcion

int leer() //Lee y valida el numero de horas


{
int hora;

printf("\n\n");
puts("Ahora llega a la Funcion leer");
puts("Digite el numero de horas");
scanf("%i",&hora);
while(hora <= 0)
{
puts("debe ser positivo");
scanf("%i",&hora);
}
printf("\nTerminamos de Leer\n");
getch();
return hora;
}

int minutos(int h) //Convierte las horas en minutos


{
int min;

printf("\n\n");
puts("Estamos en la funcion minutos");
puts("Conversion de horas a minutos");
min=60*h;
puts("Fin conversion a minutos");
getch();
return min;
}

int segundos(int m) //Convierte minutos en segundos


{
int seg;

printf("\n\n");
puts("Ahora en 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
{
printf("\n\n");
puts("Finalmente Funcion imprimir ");
puts(" RESULTADOS ");
printf("\n\nNumero de horas \t %i\n",ho);
puts("EQUIVALENTES A:");
printf("\n %i \t minutos",mi);
printf("\n %i \t segundos",se);
getch();
return 0;
}

You might also like