Está en la página 1de 7

EJEMPLO 3.

ANALISIS ESTRUCTURADO
Enunciado del problema:
“Una compañía telefónica, cobra a sus clientes de acuerdo a los siguientes
parámetros:

Minutos utilizados Costo ($)


Menos de 75 25
Entre 75 y 150 25.00 + 0.05 por minuto utilizado
Más de 150 40.00 + 0.03 por minuto que
exceda los 150

Diseñe un programa que imprima la cuenta total de cada cliente, el número de


clientes que utilizó más de 150 minutos y el tiempo promedio (en minutos) de
todos los clientes”.

I. PLANTEAMIENTO GENERAL DEL PROBLEMA

Entrada de datos Salida de datos

 Número de minutos  Cuenta total de cada cliente


utilizados por cada  Nº de clientes que utilizó más de
cliente 150 minutos
 Tiempo promedio de todos los
clientes

II. TOP DOWN

Grandes pasos o cosas que hacer:


1. Pedir minutos utilizados y validar
2. Acumular el número de minutos
3. Contar número de clientes que utilizó más de 150 minutos
4. Calcular la cuenta del cliente
5. Mostrar promedio de tiempo

De estos, se diseñan 2 módulos y el principal:

Veamos ahora el Top down:

Principal

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

a. MÓDULO Principal:

** Qué Hace?
1. Recibe minutos utilizados de leer()
2. Acumula el número de minutos
3. Clasifica los minutos para calcular cuenta del cliente

Entrada de datos Salida de datos

 Recibe minutos utilizados de leer()  Cuenta total del cliente


 Número de clientes que
utilizó más de 150
minutos

** Cómo lo hace?

Variables de salida:

Nombre Tipo Descripción


Cuenta Real Contiene el total a pagar por el cliente

Parámetros utilizados:
Envía acumulador de minutos utilizados a Prom_time y número de clientes

Proceso:
Inicialmente: Sum_t = 0; m_150 = 0; b=1; c= 0
Invoca a t = leer()

¿Es t < 75?


Si,
Cuenta = 25
No,
¿Es t >=75 && t <= 150?
Si,
Cuenta = 25 + (t * 0.05)
No,
Cuenta = 40 + ( ( t -150) * 0.03)
m_150 = m_150 + 1

MIENTRAS c=c+1
b == 1 Sum_t = Sum_t + t

Desplegar “Su Cuenta es: $”, Cuenta

Leer b y validar

Invocar Prom_time(Sum_t , c)

Desplegar m_150

Variables de proceso:

Nombre Tipo Descripción


t Real Recibe el número de minutos utilizados por el cliente
Sum_t Real Suma todos los minutos de los clientes para después calcular
el promedio
c Entero Número de clientes
m_150 Entero Cuenta el número de clientes que utilizó más de 150 minutos
b Entero Bandera que controla lazo
Flujograma Principal
A

INICIO
MIENTRAS F
b!= 1 && b != 0
Sum_t =0 C
m_150 =0
c=0 “Error en
b=1 elección:
1:Si
0: No”

B Mientras b==1
b
C
t = leer ()

B
No Si
t < 75

No t >= 75 && t <= Si


75 Cuenta = 25
C
Cuenta = 25 +
Cuenta = 40 +
(t * 0.05)
(( t – 150) *
0.03)
Prom_time(Sum_t , c )

m_150 = m_150 + 1
“Nº Clientes >
150 minutos
utilizados:“,
m_150

c=c+1
FIN

Sum_t = Sum_t + t

“Su Cuenta es:


$”, Cuenta

“Otro Cliente?
1: Si
0: No”

A
b. MÓDULO leer:

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


1. Leer el número de minutos utilizados
2. Validar el número de minutos dados
3. Retornar el valor al módulo principal

Entrada de datos Salida de datos

 Número de minutos  Retorna número de minutos


utilizados

** Cómo lo hace?
Variables de entrada:

Nombre Tipo Descripción


nm Real Contiene el número de minutos utilizados por el cliente (Variable
de entrada)

Restricciones: nm >0

Proceso:

Leer nm
Desplegar “Error en Número de
Mientras minutos, Digite de nuevo”
nm <= 0 Leer nm

Retornar nm a módulo Principal


Subflujograma leer
leer ( )

nm

Mientras nm<=0

“Error en Número de
minutos, Digite de
nuevo”

nm

Retornar nm

c. MÓDULO Prom_time:

** Qué Hace?
1. Recibe Sum_t y c
2. Calcula el promedio
3. Imprime promedio

Entrada de datos

 Recibe la Suma total de  Promedio de tiempo de


minutos todos los clientes
 Recibe número de
clientes

** Cómo lo hace?

Variables utilizadas:

Nombre Tipo Descripción


Prom Real Contiene el promedio del tiempo utilizado de los clientes,
(variable de salida)

Parámetros utilizados
Recibe Sum_t en el parámetro formal s (tipo real) y c en el parámetro formal a
(tipo entero)
Proceso:

Prom = s / a

Desplegar Prom

Subflujograma Prom_time:

Prom_time (s, a)

Prom = s / a

“Promedio de minutos
utilizado de los
clientes:”, Prom

Retornar