You are on page 1of 15

CicloI_201

Objetivo:

Contenido

Metodolo









4

Aplicar la t
o:
Parte I


Parte II

Parte II
ga de traba


cnica de An
: Ejercicio
Primer
En el
Modula
Problem
: Program
I : Ejercicios
ajo:
Semana 1:

Semana 2:

UNIVERS
FACULTA
ESCUELA
INTRODU
1
Gua de
MO
nlisis Estruc
os para co
Ejemplo ha
Segundo
ridad. Debe
mas a cada m
mas aplicand
s propuesto

La Parte
debe com
De la Pa
para que
Se indica
formar pa
Estructur
cual ser
reporte e


Se recibi
3, segn
En la pa
dados, s
identifica
SIDAD DE E
AD DE INGE
A DE INGEN
UCCION A L
1

e laboratori
ODULARIDA
cturado a la
mpletar. Ut
ce falta dise
Ejemplo, se
e completar
mdulo.
do Programa
s.
I de la gu
mpletar con l
arte III, Ejerc
el estudiant
ar a los e
arejas para
rado, hasta
proporcio
escrito a Man
r el reporte
se indic.
rte Il, el est
iguiendo la
r el uso de P
L SALVADO
ENIERIA Y A
NIERA DE S
LA INFORMA
o No. 6
AD
solucin de
tilizando la
ear las solu
e dan los
rse aplicand
acin Modula
a, consta d
la ayuda de
cicios Propu
te ejercite la
estudiantes
desarrollar
el diseo
onado por c
no la prxim
e escrito del
tudiante dig
indicacin
Programaci
OR
ARQUITECT
SISTEMAS
ATICA C
problemas
Tcnica de
uciones para
primeros 2
do el Proce
ar.
de 2 ejemp
su instructo
uestos, se d
a Tcnica.
la TAREA
un enuncia
de solucion
cada Instruc
a semana.
l enunciado
ita y depura
que tiene c
n Modular e
TURA
INFORMT
iclo I_2014

y codificarla
e Modularid
a cada mdu
2 pasos pa
eso Solucio
los que el e
or.
dejarn 2 en
3, que con
ado aplicand
nes (Flujogr
ctor, presen
dejado com
a 2 de los p
cada uno. P
en Lenguaje
TICOS
as en C.
ad, en el
ulo.
ara aplicar
onador de
estudiante
nunciados,
nsistir en
do Anlisis
ramas), el
ntando un
mo TAREA
programas
Para lograr
e C.
CicloI_2014 2

PARTE I .
Aplicacin de Modularidad paso a paso en 2 ejemplos. Revise el desarrollo de
cada uno identificando las etapas del Anlisis Estructurado, complete segn se
le pida. Realice las consultas necesarias a su instructor.
Ejemplo 1





I Planteamiento General del Problema
Entrada de datos Salida de datos



Cantidad de empleados (15)
Salario Actual
Lmite de salario para aumento
($1000.00)
Porcentajes de aumento (15% y
12%)
Nuevo Salario del empleado
Nmero correlativo del empleado

II Diagrama Top-Down

Cosas que hacer: 1. Leer y validar el salario de un empleado
2. Calcular el nuevo salario
3. Imprimir el correlativo y el nuevo salario de cada empleado

Se disear un mdulo para cada una de las tareas anteriores y el principal que las controla:











III Metodologa para resolver problemas a cada mdulo






principal
leer calcular imprimir
Disee un flujograma que calcule el nuevo salario de 15 empleados de una empresa,
sabiendo que si el salario actual es menor que $1000.00 se le aumentar el 15% y en caso
contrario, se le aumenta el 12%. (Faltan los subflujogramas de cada mdulo y el flujograma
principal)
CicloI_2014 3



Mdulo Leer

Qu hace? Lee y valida el salario actual y lo retorna
Note que este mdulo es exactamente igual al mdulo leer del ejercicio anterior, solo cambia el tipo
de dato.

Entrada de datos Salida de datos




LEE Salario actual de
un empleado
Retorna el salario actual validado

Cmo lo hace?
Variables de Salida: No hay; retorna el valor del salario actual.

Variables de Entrada:
.Nombre Tipo Descripcin
sa Real Salario actual de un empleado

Restricciones: sa >0
.
Parmetros: No se utilizan.

Proceso: Leer sa
Mientras sa <=0 Error; intente de nuevo
Leer sa

Variables de Proceso: No hay

Solucin: Dibuje la solucin
------------------------------------------------------------------------------------------------------------------------------------
Mdulo Calcular
Qu hace? Calcula el nuevo salario, tomando como base el salario actual.
Devuelve el nuevo salario de un empleado
Entrada de datos Salida de datos



Porcentajes de aumento (15%
y 12%), lmite de salario
(1000)
Recibe el salario actual
Devuelve el nuevo salario

Cmo lo hace?

Variables de Salida: No hay; retorna el valor del nuevo salario

CicloI_2014 4

Variables de Entrada: No hay; recibe el salario actual


Restricciones: No hay.

Parmetros:
.Nombre Tipo Descripcin
sal Real Salario actual de un empleado

Proceso:
sal<1000?
si: nsal =sal +0.15*sal
no: nsal =sal +0.12*sal

Variables de Proceso:
.Nombre Tipo Descripcin
nsal Real Nuevo salario del empleado, es decir el
salario de un empleado con su aumento

Solucin: Dibuje el sub flujograma correspondiente.
----------------------------------------------------------------------------------------------------------------------------------------
Mdulo Imprimir

Qu hace? Imprime el nmero correlativo del vendedor y, su respectivo salario.

Entrada de datos Salida de datos



Recibe:
El nmero correlativo
Recibe el nuevo salario
Desplegar:
Nmero correlativo
Nuevo salario

Cmo lo hace?
Variables de Salida
Se desplegarn los valores de num y nu_s.

Variables de Entrada: No hay. Recibe el nmero correlativo y el nuevo salario del empleado

Restricciones: No hay.

Parmetros:
Nombre tipo Descripcin
num Entero Numero correlativo que identifica al empleado
nu_s Real El nuevo salario de un empleado.

Proceso: No hay. Slo imprime.

Variables de Proceso: No hay.

Solucin: DIBJ ELA . . .
----------------------------------------------------------------------------------------------------------------------------------------------------------------------

CicloI_2014 5

Mdulo Principal
Qu hace?: Invoca los otros mdulos.
Enva parmetros, si es necesario, y recibe los valores de retorno, proceso que repite 15 veces.

Entrada de datos Salida de datos



Recibe
El salario actual
El nuevo salario
Enva:
El salario actual
El nmero correlativo del vendedor
El nuevo salario

Cmo lo hace?
Variables de Salida: No hay; enva los valores de salario actual, nmero correlativo y el nuevo salario del
vendedor.

Variables de Entrada: No hay; recibe los valores de retorno s1 (salario actual) y s2 (salario final).

Restricciones: No hay
Parmetros: No hay

Proceso: No hay clculos, solamente invoca los otros mdulos para leer, calcular e imprimir; enva
parmetros y recibe valores de retorno, proceso que se realiza 15 veces.

DESDE s1 =leer() //invoca mdulo leer
i=1, s2 =calcular(s1) //invoca mdulo calcular
HASTA 15, 1 imprimir (i, s2) //invoca mdulo imprimir

Variables de Proceso:
Nombre Tipo Descripcin
i Enetro Contador de empleados
s1 Real Salario actual de cada empleado.
s2 Real Salario final o con aumento de cada empleado

Solucin: Dibjela......
Ejemplo 2







I PLANTEAMIENTO GENERAL DEL PROBLEMA:
Disee un flujograma para calcular lo que hay que pagar por un conjunto de llamadas
telefnicas. Por cada llamada se ingresa el tipo (internacional, nacional o local) y la duracin
en minutos. El criterio para calcular el costo de cada llamada es el siguiente:
Internacional Nacional Local
3 primeros minutos $7.56 3 primeros minutos $1.20 $ 0.2 por minuto
Cada minuto adicional $3.03 $0.48 por minuto adicional
El flujograma debe de imprimir el costo de cada llamada, la cantidad de llamadas realizadas y
el total a pagar por todas las llamadas hechas.
Usted debe aplicar la metodologa para resolver problemas a cada mdulo formulado.
CicloI_2014 6

Entrada de datos Salida de Datos



Tipo de llamada
Duracin, en minutos,
de cada llamada
Costo de cada llamada
Nmero de llamadas realizadas
Total a pagar por todas las
llamadas

II TOP DOWN:

Cosas por hacer:
1. Leer y validar datos (tipo y duracin llamada) //modulos leer1 y leer2
2. Calcular el costo de cada llamada //modulo costo
3. Acumular los costos y contar el nmero de llamadas //modulo principal
4. Imprimir datos salida. //modulo salida

Se tienen dos mdulos de lectura, uno para el tipo de llamada y otro para la duracin de la
llamada, ya que las restricciones son diferentes para cada tipo dato.

Tendremos un mdulo costo que calcula el valor de cada llamada, recibe del principal el tipo
de llamada y de leer2 la duracin de la llamada.
La impresin se realiza en un mdulo aparte

En el mdulo principal se controla el ciclo repetitivo, se acumulan los costos de todas y cada
una de las llamadas y, se lleva el conteo del nmero de llamadas realizadas.




III Metodologa para resolver problemas:

a) Desarrolle cada mdulo.

Qu hace cada mdulo?:

Mdulo leer1: Lee y valida el tipo de llamada, retorna el tipo de llamada

Mdulo leer2: Lee y valida la duracin de una llamada, retorna la duracin.

Modulo costo: Invoca mdulo leer2, calcula el costo de una llamada,
imprime este costo y lo retorna.

Modulo salida: Imprime el nmero total de llamadas y el costo de todas ellas.


principal
costo salida leer1
leer2
CicloI_2014 7


Modulo principal: Invoca leer1, (recibe tipo de llamada), invoca costo (recibe el costo de
llamada); acumula costos de llamadas y cuenta las llamadas realizadas;
por ltimo invoca modulo salida. Enva PARMETROS ACTUALES a costo
y salida.

b) A manera de Ejercicio, Disee una nueva Solucin, con otro Top Down y completando la tcnica.
(Con el mismo enunciado)

PARTE I I Modularidad en C
1. Programa del algoritmo que calcula el nuevo salario de los empleados presentado en la Parte I.
Usted debe: Digitar, guardar (g6_ejer1.cpp), compilar y ejecutar.

#include <stdio.h>
#include <conio.h>
float leer(); //diseo de prototipo de lectura
float calcular(float sal);//diseo de prototipo de calcular
void imprimir(int num,float nu_s);//diseo de prototipo de imprimir

main()//diseo de modulo principal
{
int i;
float s1,s2;
for(i=1;i<=3;i++)
{
s1=leer();//Invoca funcion o modulo leer
s2=calcular(s1);//Invoca funcion o modulo calcular
imprimir(i,s2);//Invoca funcion o modulo imprimir
}
getch();
return 0;
}
float leer()//Diseo de funcion o modulo leer
{
float sa;
puts("\n\nDigite el salario actual del empleado\n");
scanf("%f",&sa);
while (sa<=0)
{
puts("\n\nError, intente de nuevo\n");
scanf("%f", &sa);
}
return sa;
}
void imprimir( int num, float nu_s)//Diseo de funcion o modulo imprimir

{
printf("\n\n Empleado numero:\t %i", num);
printf("\n\n Tiene como nuevo salario:\t$%.2f",nu_s);
}


CicloI_2014 8

float calcular( float sal)//Diseo de funcion o modulo calcular


{
float nsal;
if (sal<1000)
nsal =sal +0.15*sal;
else
nsal =sal +0.12*sal;
return nsal;
}

2. Programa correspondiente al problema presentado en la Parte I; contiene varios errores, que
usted debe corregir; para ello digite, guarde (g6_ejer2.cpp), compile y depure el programa:

#include <conio.h>
#include <stdio.h>
main()
{
int b, ti,ni=0;
float ct;
puts("Digite 1 si tiene datos");
scanf("%i",&b);
while (b=1)
{
ni++;
ti=leer1();
c=costo(ti);
ct+=c
puts("Digite 1 si tiene ms datos");
scanf("%i", &b);
}
imprimir(ct, ni),
getch();
return 0;
}

int leer1()
{
int tipo;
printf("\n\n Tipo de llamada:\n \t\t 1: internacional\n\t\t 2: nacional \n\t\t 3: local");
scanf("%i", &tipo);
while ( tipo<1 || tipo>3)
{
puts("Error, intente de nuevo");
scanf("%i", tipo);
}
return tipo;
}


CicloI_2014 9

float costo(float t)
{
float costo1;
int m;
m=leer2();

switch (t)
{
case 1:
if (m>3)
costo1=3*7.56+3.03*(m-3);
else
costo1=m*7.56;
break;
case 2:
if (m>3)
costo1=3*1.20+0.48*(m-3);
else
costo1=m*1.20;
break;
case 3:
costo1=m*0.2;
break;
}
printf("\n\n\n El costo de la llamada es \t$ ", costo1);
getch();
return costo1;
}
void imprimir (float total, int n)
{
printf("\n\n\n El numero de llamadas realizadas es:\t %i",n);
printf("\n Y se debe cancelar un total de: %i dolares", total);
return;
}
int leer2()
{
int min;
puts(Digite el tiempo de duracin de la llamada en minutos);
scanf("%i", &min);
while(min<=0)
{
puts("Error, intente de nuevo");
scanf("%i", &min);
}
return min;
}
CicloI_2014 10


3. El siguiente programa determina si un ao es bisiesto o no, imprime el ao y el mensaje
que corresponda (es bisiesto o no es bisiesto). Trabaja con aos de 1900 en adelante y
puede probar con varios aos a conveniencia del usuario para lo cual se utiliza un ciclo
while y una bandera. Guardarlo como: (g6_ejer3.cpp), compile y depure el programa:




/* Este programa tiene como objetivo calcular si un ao es bisiesto o no utilizando modularidad o
funciones */

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

main()
{
int year, bisiesto, otro=1;
system("cls");
while( otro !=1)
{
printf("\nIntroduzca el anyo: ");
scanf("%i", &year);
while(year <1900);
{
printf("\nPor Favor vuelva a Introducir el ao: ");
scanf("%i", &year);
}
Bisiesto =Bisiesto(year); // invocacion de la funcion
system("cls");
if (bisiesto ==1)
printf("\n\t El anyo %d es Bisiesto\n", year);
else
printf("\n\t El anyo %d No es Bisiesto\n\n\n", year);
printf("\n\nquiere comprobar otro anyo? si digite 1 no digite 0\t");
scanf("%i", &otro);
while(otro !=1 || otro 1=0)
{
puts("Error digite 1 o 0 as:");
puts("otro ao =1, no ms aos =0);
scanf("%i", &otro);
}
printf("\n\n\t Para finalizar presione cualquier tecla......") ;
getch();
}



Mdulo principal:
Lee y valida un ao (>1900)
Invoca el mdulo Bisiesto, enva el ao
ledo, recibe el resultado del mdulo.
Imprime el ao y el mensaje adecuado
Mdulo Bisiesto:
Recibe el ao a trabajar
Comprueba si el ao en cuestin es
bisiesto (1) o no (0)
CicloI_2014 11

// Definicion de Funciones
int Bisiesto(int agno);
{
/* Funcion que se encarga de calcular si un ao es bisiesto o no si el ao es bisiesto retornara 1;
sino retornara 0 */
int bisi;
if ((agno%4 1=0) && (agno%100 ==0) || (agno%400 !=0))
bisi =0;
else
bisi =1;
return;
}


4. El siguiente programa convierte una longitud en metros a yardas o pies, segn
requiera el usuario. (g6_ejer4.cpp), compile y depure el programa:


























Modulo principal:

Invoca el mdulo leer y recibe la cantidad de
metros
Invoca el modulo leer1 y recibe el tipo de
conversin deseada
Invoca el modulo yardas o pies, segn el tipo
de conversin, recibe el resultado. Enva la
cantidad de metros
Invoca el mdulo imprimir, enva la cantidad
de metros, el resultado de la conversin
hecha y el tipo de conversin realizada
Mdulo leer:
Lee un nmero real (cantidad de
metros a procesar)
Valida el nmero ledo
Retorna el nmero ledo y
validado

Mdulo leer1:
Lee un nmero entero (representa
el tipo de conversin a realizar)
Valida el nmero ledo
Retorna el nmero ledo y
validado

Mdulo yardas:
Recibe la cantidad de metros a convertir
Convierte a yardas
Retorna el nmero de yardas

Mdulo pies
Recibe la cantidad de metros a
convertir
Convierte a pies
Retorna el nmero de pies

Mdulo Imprimir
Recibe la cantidad de metros, el tipo de
conversin y el resultado

CicloI_2014 12



/*Este programa convierte metros en yardas y yardas a pies*/
#include <conio.h>
#include <stdio.h>

main () //funcin principal
{
float cant_mts;
int c;
leer() ;
c =leer1();
if (c==1)
res =yardas(cant_mts);
else
res =pies(cant_mts);

imprimir(cant_mts, res, c) ;
printf("\n\n\t Para finalizar presione cualquier tecla......") ;
getch() ;
}

// modulo que lee y valida la cantidad de metros a convertir, de tipo real
float leer()
{
float metros;
printf("Introduzca la cantidad de metros ") ;
scanf("%f", &metros);
while (!(metros >=0))
{
printf("Por Favor Introduzca una cantidad positiva para los metros ");
scanf("%f", &metros);
}
return metros;
}

//funcion que lee y valida el tipo de conversion
int leer1()
{
int tipo;
puts("digite el tipo de conversion desea:");
puts("1: metros a yardas");
puts("2: metros a pies");
scanf("%i", &tipo);
while(tipo!=1 && tipo !=2)
{
puts("error digite 1 para convertir a yardas");
puts(" o 2 para obtener pies");
scanf("%i",&tipo);
}
return;
}
CicloI_2014 13

// funcion que convierte metros a yardas


float yardas(m);
{
float yrd ;
yrd =m / 1.09 ;
return yrd ;
}

// funcion que convierte metros a pies
void pies(float mt)
{
float ft ;
ft =mt*3.28;
return ft ;
}

// funcin que imprime datos y resultados
void imprime(float mts, float res, int tipo)
{
print("\n\n\n %.3f metros", mts);
if (tipo =1)
printf("\t\t son equivalentes a %.3f yardas", resp);
else
printf("\t\t son equivalentes a %.3f pies", resp);
return 0;
}


CicloI_2014 14

PARTE I I I
Los siguientes ejercicios propuestos se deben resolver aplicando la
Tcnica de Anlisis Estructurado (Modularidad)

Guarde sus archivos de la siguiente manera: g6_prob1, en el caso de que se trate del primer
problema y as sucesivamente.

1. Disee un programa que imprima el resultado de la siguiente expresin:

x = (a +b)
2
sabiendo que a y b son nmeros enteros.
3


2. Se tienen como datos la altura y la base de un rectngulo, disee un programa que calcule el
permetro y la superficie del mismo.

3. Dados el costo de un artculo vendido y la cantidad de dinero entregada por el cliente, calcule e
imprima el cambio que debe entregrsele al mismo.

4. Se desea calcular el pago de planilla de sueldo de 5 trabajadores, teniendo las horas trabajadas
durante la semana y la clase de puesto que desempea cada trabajador, disee una solucin que
permita desplegar los datos del empleado y su sueldo semanal; sabiendo que el trabajador clase
1 se le paga $ 7.00/hora, la clase 2 $ 8.50/hora, la clase 3 $ 10.00/hora y la clase 4 $ 12.50/hora;
tambin se pide desplegar el total de la planilla.

5. Una persona compr una estancia en un pas sudamericano. La extensin de la estancia est
especificada en acres. Disee un programa que convierta la dimensin en acres a hectreas, si
sabemos que: 1 acre = 4047 m
2

1 hectrea =10000 m
2


6. Disee un programa que permita leer la estura en metros de varias personas, adems se conoce
la edad de cada persona. Se requiere calcular la edad promedio y la estatura promedio. Adems
se necesita conocer la edad de la persona mas alta y la estatura de la persona mas joven.

7. Disee un programa calcule el resultado de la siguiente funcin val, que depende de dos
variables de tipo entero: num y v:
si num=1 val=100*v
si num=2 val=100
v

si num=3 val=100/v
cualquier otro valor val=0



8. Tomando en cuenta la categora y el salario de un empleado, disee un programa que calcule el
aumento correspondiente de acuerdo a la siguiente tabla:

Categora Aumento
1 20
2 15
3 10
4 7

Debe imprimirse el nombre, la categora y el nuevo salario del empleado.
CicloI_2014 15


9. Disee un programa que permita a un profesor que calific 25 exmenes de sus alumnos y
necesita calcular la nota promedio de todos ellos, la nota mas alta y cuntos aprobaron y
reprobaron el examen. Adems se deber imprimir el nombre y la nota de cada estudiante.

10. Disee un programa que teniendo un grupo de datos enteros y positivos, imprima cada uno de los
nmeros y sus respectivos cubos.

11. Calcule el aumento de salarios para n empleados de una empresa, bajo el siguiente criterio:
Si el salario es menor a $1000.oo aumento 12%
Si el salario est comprendido
Entre $1000.oo y $2500.o aumento 10%
Si el sueldo es mayor a $2500.oo aumento 8%

12. Disee un programa que permita calcular e imprimir el total a cobrar por una venta y el descuento
total aplicado a una cantidad desconocida de ventas de productos realizadas en un almacn,
sabiendo que si la venta es menor de $ 100 se le aplica un 10%, caso contrario se le aplica un
20%.

13. En una empresa con varios empleados se necesita obtener cierta informacin. Por cada
empleado se ingresan los siguientes datos: edad, sexo y salario. Disee un programa para
calcular lo siguiente:
Nmero de hombres
Nmero de mujeres
Nmero de mujeres que ganen ms de $1000.oo
Nmero de hombres menores de 40 aos que ganan menos de $1000.oo
Nmero de empleados mayores de 50 aos.

You might also like