Ejercicios de Pseudocódigo con sub-procesos usando PSeInt.
Programa que lee dos matrices y permite operar con ellas sumar , restar y multiplicar.
1 //Algoritmo para operar con
matrices.
2
3 SubProceso CrearMatriz(Nombre,
Filas por referencia, Columnas por referencia)
4 Escribir "Dime las
filas de la " , Nombre;
5 Leer Filas;
6 Escribir "Dime las
columnas de la ", Nombre;
7 Leer Columnas;
8 FinSubProceso
9
10 SubProceso LlenarMatriz(Matriz,
Filas, Columnas)
11 Definir i,j como entero;
12 Para i<-1 hasta Filas hacer
13 Para j<-1 hasta Columnas hacer
14 Matriz[i,j]
<- azar(10) ;
15 FinPara
16 FinPara
17 FinSubProceso
18
19 SubProceso MostrarMatriz(Matriz,Nombre,
Filas, Columnas)
20 Definir i,j como entero;
21 Escribir Nombre;
22 Para i<-1 hasta Filas hacer
23 Para j<-1 hasta Columnas hacer
24 Escribir Matriz[i,j]
, "
" Sin Saltar;
25 FinPara
26 Escribir "";
27 FinPara
28 FinSubProceso
29
30 SubProceso SumarMatrices(MatrizR,
Matriz1 ,Filas1, Columnas1, Matriz2,Filas2, columnas2)
31 Definir i,j como entero;
32 Si Filas1 <>
Filas2 | Columnas1 <> Columnas2 entonces
33 Escribir "Solo se
pueden sumar matrices de la misma dimension";
34 Sino
35 Para i<-1 hasta Filas1 hacer
36 Para j<-1 hasta Columnas1 hacer
37 MatrizR[i,j]
<- Matriz1[i,j] + Matriz2[i,j];
38 FinPara
39 FinPara
40 MostrarMatriz(MatrizR,
"Suma",Filas1,Columnas1);
41 FinSi
42 FinSubProceso
43
44 SubProceso RestarMatrices(MatrizR,
Matriz1 ,Filas1, Columnas1, Matriz2,Filas2, columnas2)
45 Definir i,j como entero;
46 Si Filas1 <>
Filas2 | Columnas1 <> Columnas2 entonces
47 Escribir "Solo se
pueden restar matrices de la misma dimension";
48 Sino
49 Para i<-1 hasta Filas1 hacer
50 Para j<-1 hasta Columnas1 hacer
51 MatrizR[i,j]
<- Matriz1[i,j] - Matriz2[i,j];
52 FinPara
53 FinPara
54 MostrarMatriz(MatrizR,
"Resta",Filas1,Columnas1);
55 FinSi
56 FinSubProceso
57
58 SubProceso MultiplicarMatrices(MatrizR,
Matriz1 ,Filas1, Columnas1, Matriz2,Filas2, columnas2)
59 Definir i,j,x
como
entero;
60 Si Columnas1 <>
Filas2 Entonces
61 Escribir "Solo se
pueden multiplicar si el número de columnas de la primera matriz coincida con
el número de filas de la segunda";
62 Sino
63 Para i<-1 hasta Filas1 Hacer
64 para j<-1 hasta Columnas2 Hacer
65 // Suma i,j es
Ain*Bnj
66 MatrizR[i,j]
<- 0;
67 para x<-1 hasta Columnas1 hacer
68 MatrizR[i,j]
<- MatrizR[i,j] + (Matriz1[i,x]
* Matriz2[x,j]);
69 FinPara
70 FinPara
71 FinPara
72 MostrarMatriz(matrizR,
"Poducto",Filas1, Columnas2);
73 FinSi
74 FinSubProceso
75
76 Proceso OpertarConMatrices
77 //Programa que
lee dos matrices y permite operar con ellas
78 // 1 = sumar ,
2 = restar , 3 = multiplicar , 4 = Fin
79 Definir FilasA , ColumnasA
como
entero;
80 Definir FilasB , ColumnasB
como
entero;
81 Definir MatrizA , MatrizB
Como
Real;
82
83 CrearMatriz( "Matriz
A", FilasA , ColumnasA);
84 Dimension MatrizA[FilasA,
ColumnasA];
85 LlenarMatriz(MatrizA,
FilasA, ColumnasA);
86 CrearMatriz("Matriz
b", FilasB, ColumnasB);
87 Dimension MatrizB[FilasB,
ColumnasB];
88 LlenarMatriz(MatrizB
, FilasB, ColumnasB);
89 MostrarMatriz(MatrizA,
"Matriz
A", FilasA , ColumnasA);
90 MostrarMatriz(MatrizB,
"Matriz
B", FilasB , ColumnasB);
91
92 Definir operacion Como Entero; //1 suma 2
resta 3 producto 4 salir
93 Definir MatrizS, MatrizP
como
real;
94 Dimension MatrizS[FilasA,
ColumnasA];
95 Dimension MatrizP[FilasA,
ColumnasB];
96 Repetir
97 Escribir "Dime la
operacion a realizar 1 Suma 2 Resta 3 Producto 4 Fin";
98 Leer Operacion;
99 segun Operacion hacer
100 1: //sumar
101 SumarMatrices(MatrizS, MatrizA, FilasA, ColumnasA,
MatrizB, FilasB, ColumnasB);
102 2: //Restar
103 RestarMatrices(MatrizS, MatrizA, FilasA, ColumnasA,
MatrizB, FilasB, ColumnasB);
104 3: //Producto
105 MultiplicarMatrices(MatrizP, MatrizA, FilasA,
ColumnasA, MatrizB, FilasB, ColumnasB);
106 FinSegun
107 Hasta Que operacion = 4
108 FinProceso
Escribir una programa que calcule y retorne el número de días que faltan hasta final de año, a partir de una determinada fecha (dia, mes, año) introducida por y teniendo en cuenta si el año es bisiesto.
1 //Algoritmo calculo dias fin de
año
2
3 SubProceso res <- EsBisiesto( a
)
4 Definir res como logico;
5 res <- falso;
6 si a % 100 = 0 entonces
7 si a % 400 = 0 entonces //Bisiesto
8 res <- Verdadero;
9 FinSi
10 sino
11 si a % 4 = 0 entonces //Bisiesto
12 res <- Verdadero;
13 FinSi
14 FinSi
15 FinSubProceso
16
17 SubProceso res<- DiasMes(m,
a)
18 Definir res como entero;
19 Segun M hacer
20 1: Res <- 31;
21 2: si EsBisiesto(a)
entonces
22 res<-29;
23 sino
24 res<-28;
25 FinSi
26 3: Res <- 31;
27 4: Res <- 30;
28 5: Res <- 31;
29 6: Res<- 30;
30 7: Res <- 31;
31 8: Res <- 31;
32 9: Res <- 30;
33 10: Res <- 31;
34 11: Res <- 30;
35 12: Res <- 31;
36 FinSegun
37 FinSubProceso
38
39
40 Proceso DiasFinAnyo
41 //Escribir una
programa que calcule y retorne el número de días
42 //que faltan
hasta final de año, a partir de una determinada
43 //fecha (dia mes
año) introducida por teclado
44 //y teniendo en
cuenta si el año es bisiesto.
45 Definir Dia, Mes,
Anyo como entero;
46 Escribir "Dime el dia
mes año";
47 Leer Dia, Mes ,
Anyo;
48
49 Definir MaxDias, i
como
entero;
50 Si esBisiesto(Anyo)
entonces
51 maxDias <- 366;
52 Sino
53 maxDias <- 365;
54 FinSi
55 Para i<-1 hasta Mes - 1 Con Paso 1 hacer
56 maxDias <- maxDias - DiasMes(i,
Anyo);
57 FinPara
58 maxDias <- MaxDias - Dia;
59
60 Escribir "Para fin de
año quedan " , MaxDias, " dias";
61
62
63 FinProceso
Otra opción para el mismo algoritmo.
1 //Algoritmo dias fin de año
2
3 SubProceso res <- EsBisiesto( a
)
4 Definir res como logico;
5 res <- falso;
6 si a % 100 = 0 entonces
7 si a % 400 = 0 entonces //Bisiesto
8 res <- Verdadero;
9 FinSi
10 sino
11 si a % 4 = 0 entonces //Bisiesto
12 res <- Verdadero;
13 FinSi
14 FinSi
15 FinSubProceso
16
17 SubProceso res<- DiasMes(m,
a)
18 Definir res como entero;
19 Segun M hacer
20 1,3,5,7,8,10,12: Res <- 31;
21 2: si EsBisiesto(a)
entonces
22 res<-29;
23 sino
24 res<-28;
25 FinSi
26 4,6,9,11: Res <- 30;
27 FinSegun
28 FinSubProceso
29
30
31 Proceso DiasFinAnyo
32 //Escribir una
programa que calcule y retorne el número de días
33 //que faltan
hasta final de año, a partir de una determinada
34 //fecha (dia
mes año) introducida por teclado
35 //y teniendo en
cuenta si el año es bisiesto.
36 Definir Dia, Mes,
Anyo como entero;
37 Escribir "Dime el dia
mes año";
38 Leer Dia, Mes ,
Anyo;
39
40 Definir MaxDias, i
como
entero;
41 Si esBisiesto(Anyo)
entonces
42 maxDias <- 366;
43 Sino
44 maxDias <- 365;
45 FinSi
46 Para i<-1 hasta Mes - 1 Con Paso 1 hacer
47 maxDias <- maxDias - DiasMes(i,
Anyo);
48 FinPara
49 maxDias <- MaxDias - Dia;
50
51 Escribir "Para fin de
año quedan " , MaxDias, " dias";
52
53
54 FinProceso
Un programa que lea una temperatura en grados centígrados o Fahrenheit y la convierta.
1 //Algotirmo conversor de
temperaturas
2
3 subProceso res <- CelsiusAFahrenheit(grados)
4 // F = (9 / 5)
* C + 32;
5 Definir res como real;
6 res <- ((9/5) * grados) + 32;
7 FinSubProceso
8 subProceso res <- FahrenheitACelsius(grados)
9 // C = ( F - 32
) * (5 /9)
10 Definir res como real;
11 res <- ( grados - 32) * (5/9);
12 FinSubProceso
13 Proceso ConvertirGradosCelsiusAFahrenheit
14 //Permite
convertir entre grados Celsius y Fahrenheit
15 //Leer de
consola temperatura y tipo de grado C o F
16 //Calcular le
tenperatura en la otra escala
17 Definir Grados, GradosCon
como
real;
18 Definir Escala Como Caracter; //C o F
19 Escribir "Dime la
temperatura a calcular";
20 Leer Grados;
21 Escribir "Dime la
escala de los grados introducidos";
22 Escribir "C=Celsius y
F=Fahrenheit";
23 Leer Escala;
24 Si Escala = "C" Entonces
25 GradosCon <- CelsiusAFahrenheit(Grados);
26 Sino
27 GradosCon <- FahrenheitACelsius(Grados);
28 FinSi
29 Escribir "Los grados
son: ", GradosCon;
30 FinProceso
Calcular cuota hipoteca.
1 //Calculo de la cuota mensual
hipoteca.
2
3 SubProceso InteresMensual <- CalcularInteresMensual(InteresAnual)
4 // Usando
tantos equivalentes
5 // 1 + interes
= ( 1 + InteresMensual)^12;
6 //InteresMensual
=((1+Interes)^(1/12)) - 1;
7 //Entradas y
salidas en %
8 Definir InteresMensual como real;
9 InteresMensual <- ((1 + (InteresAnual/100))^(1/12))-1;
10 InteresMensual <- InteresMensual *
100;
11 FinSubProceso
12
13 SubProceso CuotaMensual <- CalcularCuotaMensual(Capital,
InteresAnual, Plazos)
14 //Couta =
(Capital * Interes) /
15 // 100 * (1 -
(1+(interes/100))^ - plazo)
16 Definir CuotaMensual como real;
17 Definir A, B, InteresM
Como
Real;
18 Plazos <- -Plazos;
19 InteresM <- CalcularInteresMensual(InteresAnual);
20 A <- Capital * InteresM;
21 B <- 100 * ( 1 - (1 + (InteresM/100))^(Plazos));
22 CuotaMensual <- A / B;
23 FinSubProceso
24
25 Proceso CalcularCuotaHipoteca
26 //Lee los anos,
capital , interes anula en %
27 //Muestra la
couta con amortización constante.
28 Definir Anyos Como Entero;
29 Definir Capital, Interes
Como
Real;
30 Definir Cuota Como Real;
31 Escribir "Introduce
Capital";
32 Leer Capital;
33 Escribir "Introduce
Interes (%) ";
34 Leer Interes;
35 Escribir "Intrduce
Años";
36 Leer Anyos;
37 Cuota <- CalcularCuotaMensual(Capital,
Interes, Anyos * 12);
38 Escribir "la Cuota es
" , Cuota;
39 FinProceso
Hay unos multicines con 5 salas, y cada sala con 100 personas distribuidas en 20 asientos y 5 filas. Si yo pido entrada para una sala, implementar un programa que me diga si hay sitio en la sala.
1 //Entradas multicines
2
3 SubProceso InicializarCine(ElCine)
4 Definir S, F , A Como Entero;
5 Para S<-1 hasta 4 Hacer
6 Para F<-1 hasta 5 Hacer
7 Para A<-1 hasta 20 Hacer
8 ElCine[S,F,A] <- (Azar(2) = 1);
9 FinPara
10 FinPara
11 FinPara
12 FinSubProceso
13
14 SubProceso MostrarCines(ElCine)
15 Definir S, F , A Como Entero;
16 Para S<-1 hasta 4 Hacer
17 Escribir "Sala : ", S;
18 Para F<-1 hasta 5 Hacer
19 Para A<-1 hasta 20 Hacer
20 Si ElCine[S,F,A] entonces //Verdadero ocupado
21 Escribir " X " sin saltar;
22 sino
23 Escribir " . " sin saltar;
24 FinSi
25 FinPara
26 Escribir "";
27 FinPara
28 FinPara
29 FinSubProceso
30
31 SubProceso Ok <- ReservarEntradas(ElCine, Sala, CantEntradas, LasEntradas)
32 Definir Ok, SeguirBuscado como logico;
33 Definir EntradasResevadas, F, A como entero;
34 EntradasResevadas <-0;
35 F<-1;
36 A<-1;
37 SeguirBuscado<-Verdadero;
38 Mientras SeguirBuscado
39 si ElCine[Sala,F,A] = Falso Entonces
40 EntradasResevadas <- EntradasResevadas + 1;
41 LasEntradas[EntradasResevadas,1 ]<-Sala;
42 LasEntradas[EntradasResevadas,2 ]<-F;
43 LasEntradas[EntradasResevadas,3 ]<-A;
44 si EntradasResevadas = CantEntradas Entonces
45 SeguirBuscado<-falso;
46 Sino
47 A<-A+1;
48 Si A > 20 entonces
49 F <- F + 1;
50 A <- 1;
51 si F > 5 entonces
52 SeguirBuscado<- Falso;
53 FinSi
54 FinSi
55 FinSi
56 sino
57 A<-A+1;
58 Si A > 20 entonces
59 F <- F + 1;
60 A <- 1;
61 si F > 5 entonces
62 SeguirBuscado<- Falso;
63 FinSi
64 FinSi
65 FinSi
66 finMientras
67 Si F > 5 Entonces //sala ocupada
68 Ok<-Falso;
69 Sino
70 Ok<-Verdadero;
71 finsi
72 FinSubProceso
73
74 Proceso CinesVariasEntradas
75 //Hay unos multicines con 4 salas,
76 //y cada sala con 100 personas distribuidas
77 //en 20 asientos y 5 filas.
78 //Si yo pido un numeros de entradas para una sala, implementar
79 //un programa que me diga si hay sitio en la sala.
80 //Decir fila y asiento
81 Definir Cines como logico; //Verdadero es ocupado
82 Dimension Cines[4,5,20]; // 4 salas, 5 filas , 20 asientos
83 Definir S, F , A Como Entero;
84 InicializarCine(Cines);
85 MostrarCines(Cines);
86 Definir Sala, NumEntradas, Entradas Como Entero;
87 Dimension Entradas[15, 3]; // NumEntada(1)Sala (2)Fila (3)Asiento
88 Definir SeguirBuscado como logico;
89 Repetir
90 Escribir "Dime a que sala queires ir??";
91 Leer Sala;
92 Si Sala <> 0 Entonces
93 Escribir "Dime cuantas entradas max(15) ?";
94 Leer NumEntradas;
95 Borrar Pantalla;
96 Si ~ReservarEntradas(Cines, Sala, NumEntradas, Entradas) Entonces //sala ocupada
97 Escribir "Sala ocupada ";
98 Sino
99 Escribir "Tus Entradas:";
100 Para S<-1 Hasta NumEntradas Hacer
101 Sala <- Entradas[S,1 ];
102 F<-Entradas[S,2 ];
103 A<- Entradas[S,3 ];
104 Cines[Sala,F,A] <- Verdadero;
105 Escribir "Entrada " , S, " en S:" , Sala , " F:", F, " A:",A;
106 FinPara
107 FinSi
108 MostrarCines(Cines);
109 FinSi
110 Hasta Que Sala = 0
111 FinProceso