Académique Documents
Professionnel Documents
Culture Documents
Ing. Edwin O. Ramos Velsquez Carrera Profesional de Ingeniera de Sistemas Universidad Nacional Jos Mara Arguedas Apurmac, Andahuaylas 2012
Paso 1: Analizar el problema: Identificacin de variables Paso 2: Elaborar el algoritmo general Paso 3: Identificar los procesos y las variables INPUT y OUTPUT de c/u Paso 4: Elaborar el algoritmo del programa principal (con procedimientos/funciones) Paso 5: Elaborar algoritmo de cada procedimiento/funcin
H B
b*h A= 2
B: Base (Input) H: Altura (Input) A: Area (Output)
a) Variables:
A=
c) Salida de datos: A
b*h 2
(Output)
Ing. Edwin Ramos Velsquez
Output A
3
Leer: B
Leer: H
Print:
FIN
Output A
Ing. Edwin Ramos Velsquez 4
PASOS PARA CREAR EL MODELO Paso 1: Definir los procesos (agrupaciones de rutinas) y asignarles un nombre Paso 2: Identificar las variables de entrada (INPUT) por proceso Paso 3: Identificar las variables de salida (OUTPUT) por proceso Paso 4: Elaborar el diagrama principal, donde se invocan los procedimientos Paso5: Elaborar los diagramas de cada proceso (procedimiento/funcin)
Programa Principal()
Inicio
LeerDatos
Leer: B
LeerDatos(B, H)
Leer: H
HallarArea(A, B, H)
A (OUT)
Imprimir(A)
A (IN) Imprimir
Print: A
FIN
FIN
Parmetro de Entrada (IN): Parmetro que contiene un dato necesario para la ejecucin del procedimiento Ing. Edwin procedimiento Parmetro de Salida (OUT):Parmetro cuyo valor es alterado al interior de unRamos Velsquez
Inicio
B,H (OUT)
Inicio
Leer: B LeerDatos(B, H)
A (OUTPUT)
Leer: H FIN
HallarArea(A:Float; B, H: Integer) Inicio
FIN
HallarArea(A, B, H)
B,H (INPUT)
Imprimir(A)
A (INPUT)
A = (B * H )/ 2 FIN FIN
Parmetros: Son las variables declaradas entre los parntesis que acompaa a la declaracin de un procedimiento
Parmetro de entrada: Variable que ser utilizada por el procedimiento Parmetro de salida: Variable cuyo valor ser generado dentro del procedimiento Entrada = Input, Salida = Output
6
Programa Principal()
Programa Principal()
Inicio
Inicio
LeerDatos
Leer: B
LeerDatos(B, H)
Leer: H
LeerDatos(B, H)
HallarArea(A, B, H)
A = HallarArea(B, H)
A (OUT)
Imprimir(A)
Imprimir(A)
A (IN) Imprimir
Print: A
FIN
FIN
FIN
NOTA: Un procedimiento que tiene un nico parmetro de salida puede transformarse en funcin (Por ejemplo: el procedimiento
HallarArea(A:Float ; B,H: Integer), se transform en la funcin
7
Los procedimientos son subprogramas HallarArea(B,H: Integer): Ing. Edwin Ramos Velsquez Float Las funciones son subprogramas que devuelven un valor El Parmetro de Salida desaparece como parmetro
Programa Principal()
Inicio
LeerDatos(B, H: Integer)
Inicio Leer: B
Imprimir(A: Float)
Inicio Print: A
LeerDatos(B, H)
Leer: H FIN
FIN
A = HallarArea(B, H)
HallarArea(B, H: Integer): Float
Imprimir(A)
Inicio
A = (B * H )/ 2
FIN
return A FIN
Paso 1: Analizar el problema: Identificacin de variables Paso 2: Elaborar el algoritmo general Paso 3: Identificar los procesos y las variables INPUT y OUTPUT de c/u Paso 4: Elaborar el algoritmo del programa principal (con procedimientos/funciones) Paso 5: Elaborar algoritmo de cada procedimiento/funcin
EJEMPLO 02: Hallar el Mximo Comn Divisor (MCD) de dos nmeros usando el algoritmo de Euclides
Ing. Edwin Ramos Velsquez 9
Inicio
Leer: A
LeerDatos(A, B)
Leer: B FIN
A, B Input
HallarMCD(MCD, A, B )
Imprimir( MCD)
Programa Principal
FIN
FIN
Output MCD
Ing. Edwin Ramos Velsquez 10
a) Variables: Entrada A, B: Nmeros a Analizar (Input) Auxiliares: X, Y, R: Variables de proceso (Aux) Salida: MCD: Mximo Comn Divisor (Output) b)Proceso Interno(Modelo Matemtico):
Hacer X = A; Y = B ( donde A > B ) ( X = B; Y = A ( donde A < B) Hacer MCD = Y; Hacer R = X mod Y )
(Output)
Ing. Edwin Ramos Velsquez 11
SI X=A Y=B
IF A>B
NO X=B Y=A
721
448 273
Y
273 175
175 98
98 77
77 21
21 14
14 7
7 0 R = X mod Y MCD = Y
a) Variables:
A, B: Nmeros a Analizar (Input) X, Y, R: Variables de proceso (Aux) MCD: Mximo Comn Divisor (Output)
R = X mod Y MCD = Y
(Output)
Ing. Edwin Ramos Velsquez
FIN
12
SI X=A Y=B
IF A>B
NO X=B Y=A
INICIO
R = X mod Y MCD = Y
LeerDatos(A, B)
WHILE ( R<>0)
HallarMCD(MCD, A, B)
Imprimir(MCD)
R = X mod Y MCD = Y
FIN
FIN
13
SI X=A Y=B
IF A>B
NO X=B Y=A
INICIO
R = X mod Y MCD = Y
LeerDatos(A, B)
MCD = HallarMCD(A, B)
Imprimir(MCD)
R = X mod Y MCD = Y
FIN
FIN return MDC
EJEMPLO 03: Dado un nmero entero, implementar un programa que halle y muestre su equivalente en numeros romanos
Ing. Edwin Ramos Velsquez 15
Programa Principal
R
VI, IX
Output "X" " XI " " XII " " XIII " " XIV " " XV " " XVI " " XVII " " XVIII " " XIX "
OUTPUT "X"+"" "X"+"I" " X " + " II " " X " + " III " " X " + " IV " "X"+"V" " X " + " VI " " X " + " VII " " X " + " VIII " " X " + " IX "
Es decir "X"+"" "X"+"I" " X " + " II " " X " + " III " " X " + " IV " "X"+"V" " X " + " VI " " X " + " VII " " X " + " VIII " " X " + " IX "
ES DECIR: funcion(10) = " X " funcion(11) = " XI " funcion(12) = " XII " funcion(13) = " XIII " funcion(14) = " XIV " funcion(15) = " XV " funcion(16) = " XVI " funcion(17) = " XVII " funcion(18) = " XVIII " funcion(19) = " XIX " O TAMBIN funcion(10) = " X " + funcion(0) funcion(11) = " X " + funcion(1) funcion(12) = " X " + funcion(2) funcion(13) = " X " + funcion(3) funcion(14) = " X " + funcion(4) funcion(15) = " X " + funcion(5) funcion(16) = " X " + funcion(6) funcion(17) = " X " + funcion(7) funcion(18) = " X " + funcion(8) funcion(19) = " X " + funcion(9) 16
0 1 2 3 4 5 6 7 8 9
"" "I" " II " " III " " IV " "V" " VI " " VII " " VIII " " IX "
funcion(0) = " " funcion(1) = " I " funcion(2) = " II " funcion(3) = " III " funcion(4) = " IV " funcion(5) = " V " funcion(6) = " VI " funcion(7) = " VII " funcion(8) = " VIII " funcion(9) = " IX "
Solo Procedimientos
Programa Principal( )
Inicio
Teclado(IN) N (OUT)
Output
LeerDatos(N)
LeerDatos
Leer: B N
Input
Leer: H
N (IN) HallarRomano
A = (B * H )/ Subprograma: 2 HallarNroRomanoEquivalente()
HallarRomano( R, N)
R (OUT)
Output
A (IN) Imprimir
Print: A R
Imprimir(R)
FIN FIN
Input
17
LeerDatos( ):Integer
Inicio
Output
Inicio
LeerDatos(N)
N = LeerDatos( )
Leer: N
Input
R = HallarRomano( N )
return N
HallarRomano( R, N)
Imprimir(R)
FIN
Output
FIN
Input
FIN
18
CASE (Z)
Z=0 Z=1 Z=2 Z=3 Z=4 Z=9
R = " XX " + RomanoDeUnidad(N - 20) R = " XXX " + RomanoDeUnidad(N - 30) R = " XL " + RomanoDeUnidad(N - 40) R = " XC " + RomanoDeUnidad(N - 90)
N = LeerDatos( )
return R FIN
R = HallarRomano( N )
RomanoDeUnidad(N:Integer ): String
Imprimir(R)
Inicio
FIN
CASE (N)
HallarRomano(N:Integer ): String
Inicio
N=0 N=1 N=2 N=3 N=4 N=9
R="I"
R = " II "
R = " IV "
R="I"
return R FIN
CASE (Z)
Z=0
Z=1
Z=2
Z=3
Z=4
Z=9
R = RomanoDeUnidad(N - 0) R = " X " + RomanoDeUnidad(N -10) R = " XX " + RomanoDeUnidad(N - 20) R = " XXX " + RomanoDeUnidad(N - 30) R = " XL " + RomanoDeUnidad(N - 40) R = " XC " + RomanoDeUnidad(N - 90)
return R FIN
20
Problema: Realizar un programa que dado un valor N ledo desde teclado, imprima en pantalla la respectiva grfica, segn se muestra a continuacin:
Si N=3
1 2 3 1 2 1
Si N=5
1 1 1 1 1 2 3 4 5 2 3 4 2 3 2
Si N=6
1 1 1 1 1 1 2 2 2 2 2 3 4 5 6 3 4 5 3 4 3
Si N=7
1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 3 4 5 6 7 4 5 6 4 5 4
2. Implementar el programa
Programa Principal( ) Inicio
1. Analizar el problema
1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 3 4 5 6 7 4 5 6 4 5 4 ImprimirLinea(7) ImprimirLinea(6) ImprimirLinea(5) . . . . . . ImprimirLinea(1) For N
N = LeerDatos( )
ImprimirFigura(N)
Hasta 1
FIN
22
For k = N ------> 1
Leer: N
N = LeerDatos( ) ImprimirLinea(k)
return N
ImprimirFigura(N)
FIN
FIN FIN
For k = 1 ------> N
Print: k
FIN
23