Professional Documents
Culture Documents
1. Definicin
La programacin estructurada es un conjunto de tcnicas utilizadas para escribir
programas de forma clara.
La programacin estructurada se basa en el diseo descendente, esto es, se
plantea una operacin como un todo y se divide en segmentos ms sencillos o de
menor complejidad, facilitando as el desarrollo de un programa; una vez terminado
todos los segmentos del programa se procede a unirlos.
La programacin estructurada logra minimizar la complejidad y errores de los
programas.
La principal desventaja de la programacin estructurada, es que en el momento de
hacerse demasiado grande puede resultar bastante problemtico su manejo, ya que
todo se constituye en un solo bloque.
Utiliza nicamente tres estructuras: la secuencial, la selectiva y la iterativa.
2. Estructura secuencial
Se representa por una sentencia un conjunto de sentencias (a la que en adelante
llamaremos accin) que se ejecutan una a continuacin de otra a modo de
secuencia. Las sentencias se suceden de tal modo que la salida de una es la
entrada de la siguiente, y as sucesivamente hasta finalizar el algoritmo. Su sintaxis
es:
Pseudocodigo
Diagrama de flujo
inicio
Inicio
Accin1
Accin2
.
.
.
AccinN
Accion1
Accion2
.
.
.
Fin
AccionN
Fin
2.1.
Ejercicios resueltos
Ejemplo 01
Pseudocdigo para sumar dos nmeros.
Lectura de datos
nro1, nro2
Impresin de datos
suma
nro1 + nro2
suma
Impresin de datos
area
base * altura
area
Impresin de datos
nro
suma
unidades
nro Mod 10
nro
nro Div 10
decenas
nro Mod 10
nro
nro Div 10
centenas
nro Mod 10
unidades + decenas + centenas
suma
Ejemplo 04
Pseudocdigo para sumar dos tiempos dados en horas, minutos y segundos.
Por ejemplo:
Tiempo 1 = 8:15:56
Tiempo 2 = 10:58:43
1
8
10
19
:
:
19
1
15
58
74
60
14
:
:
60
1
:
56
43
99
60
39
60
1
Para el desarrollo del pseudocdigo se suman los segundos de los dos tiempos, el
resultado de esta suma se divide entre 60, siendo el residuo de esta divisin el total
de segundos y el cociente se suma a los minutos, de igual forma se realiza la suma
de los minutos, el resultado de esta suma se divide entre 60, siendo el residuo de
la divisin el total de minutos y el cociente se suma a las horas.
Lectura de datos
hor1, min1, seg1
hor2, min2, seg2
Impresin de datos
seg
seg1 + seg2
llevaMin
seg Div 60
seg
seg Mod 60
min
llevaMin + min1 + min2
llevaHora
min Div 60
min
min Mod 60
hor
llevaHora + hor1 + hor2
llevaHora
min Div 60
min
min Mod 60
hor
llevaHora + hor1 + hor2
// Salida de resultados
Escribir (La suma de los 2 tiempos es , hor, min, seg)
Fin
Ejemplo 05
Pseudocdigo que permita pasar de grados centgrados a grados Farenheit sabiendo
que:
9
F
C 32
5
El siguiente cuadro muestra resultados con datos de prueba, para diferentes
valores de la variable centi.
centi
10
20
30
40
faren
50
68
86
104
Lectura de datos
centi
Impresin de datos
faren
Impresin de datos
suma
nro*(nro+1)/2
suma
Factor de conversin
Es una fraccin en la que el numerador y denominador son medidas iguales
expresadas en unidades distintas, de tal manera, que esta fraccin vale la unidad.
Mtodo efectivo para cambio de unidades y resolucin de ejercicios sencillos
dejando de utilizar la regla de tres.
Ejemplo 1: Pasar 15 pulgadas a centmetros (1 pulgada = 2.54 cm)
15 pulgadas (2.54 cm / 1 pulgada) = 15 2.54 cm = 38.1 cm.
Ejemplo 2: Pasar 25 metros por segundo a kilmetros por hora (1 kilmetro =
1000 metros, 1 hora = 3600 segundos)
25 m/s (1 km / 1000 m ) (3600 s / 1 h) = 90 km/h.
Ejemplo 07
Pseudocdigo para convertir una longitud dada en metros a sus equivalentes en
milmetros, centmetros, pies, pulgadas y yardas. Se sabe que:
1
1
1
1
1
1
Milmetros
5000
10000
20000
50000
70000
Centmetros
500
1000
2000
5000
7000
Pulgadas
196.85
393.701
787.402
1968.50
2755.91
Pies
16.4042
32.8084
65.6168
164.042
229.659
Yardas
5.46807
10.9361
21.8723
54.6807
76.5529
Kilmetros
0.005
0.01
0.02
0.05
0.07
Impresin de datos
Lectura de datos
metros
mili
1000*metros
cent
metros*100
pulg
cent/2.54
pies
pulg/12
yarda
pies/3
km
m /1000
Miligramos
500000
300000
20000
50000
900000
Kilogramos
0.5
0.3
0.6
0.7
0.9
Onza
17.6367
10.5822
21.1644
24.6918
31.7466
Libra
1.10229
0.66139
1.32277
1.54324
1.98416
Toneladas
0.0005
0.0003
0.0006
0.0007
0.0009
Lectura de datos
Impresin de datos
mili
kilo
onza
libra
gramo
1000*gramo
gramo/1000
gramo/28.35
gramo/453.6
sus
km = 1000 metros
minuto = 60segundos
hora = 3600 segundos
nudo = 1.852 km
pie = 12 pulgadas =0.3048 metros
milla =1.609 km
Km/hora
36
72
108
144
180
Km/seg
0.01
0.02
0.03
0.04
0.05
Pies/seg
32.8084
65.6168
98.4252
131.234
164.042
Milla/hora
22.3741
44.7483
67.1224
89.4966
111.871
Nudo
19.4384
38.8769
58.3153
77.7538
97.1922
Lectura de datos
metroSeg
Impresin de datos
kmHora
metroSeg * 3.6
kmSeg
metroSeg/1000
piesSeg
100 * metroSeg /30.48
millaHora
3600 * metroSeg /1609
nudo
3600 * metroSeg /1852
kmHora, kmSeg,
piesSeg, millaHora,
nudo
Impresin de datos
compra
precio * cantidad
desc
0.15 * compra
montoAPagar
compra - desc
desc, compra
// Definir variables
entero: cantidad
real: precio, desc, compra, montoAPagar
// Lectura de datos
Escribir (Ingresar precio del producto)
Leer (precio)
Escribir (Ingresar cantidad)
Leer (cantidad)
// Proceso de calculo
compra
precio * cantidad
desc
0.15 * compra
montoAPagar
compra - desc
// Salida de resultados
Escribir (El monto del descuento es , desc)
Escribir (El monto a pagar es , montoAPagar)
Fin
Ejemplo 11
Pseudocdigo que determina el porcentaje de varones y de mujeres que hay en un
saln de clase.
Lectura de datos
cvar, cmuj
Impresin de datos
total
cvar + cmuj pvar
(cvar * 100) / total pmuj
100 - pvar
pvar, pmuj
Impresin de datos
unro1
unro2
nro1
nro1
nro2
nro2
nro1 Mod 10
nro2 Mod 10
unro1 + unro2
unro2 + unro1
nro1, nro2
hora
Impresin de datos
hor
entero (hora)
hora
hora - hor
minuto
hora * 60
min
entero (minuto)
minuto
minuto - min
segundo
minuto * 60
seg
entero (segundo)
segundo
segundo seg
cs
segundo * 100
min
seg
cs
minuto entero
segundo entero
centsimo de segundos entero
Inicio
// Definir variables
real: hora, minuto, segundo
entero: hor, min, seg, cs
// Lectura de datos
Escribir (Ingresar hora)
Leer (hora)
// Proceso de clculo
hor
entero (hora)
hora
hora - hor
minuto
hora * 60
min
entero (minuto)
minuto
minuto - min
segundo
minuto * 60
seg
entero (segundo)
segundo
segundo seg
cs
segundo * 100
// Salida de resultados
Escribir (El equivalente es , hor, min, seg, cs)
Fin
Ejemplo 14
Pesudocdigo para calcular el monto final que se paga por la compra de un auto al
crdito, al precio de venta se le aumenta el 4% de impuestos estatales, de tal
forma que el cliente tendr que pagar como cuota inicial el 20% de este nuevo
precio, el monto financiado tendr un inters del 7% anual.
Lectura de datos
precio, tiempo
Impresin de datos
imp
0.04 * precio
precio
precio + imp
cuota
0.20 * precio
finan
precio - cuota
inter
0.07 * finan * tiempo
total
cuota + finan + inter
total
Leer (tiempo)
// Proceso de clculo
imp
0.04 * precio
precio
precio + imp
cuota
0.20 * precio
finan
precio - cuota
inter
0.07 * finan * tiempo
total
cuota + finan + inter
// Salida de resultados
Escribir (El total a pagar es , total)
Fin
Ejemplo 15
Pseudocdigo para calcular la cantidad de arena que se necesita para pulir una
pared, se conoce las medidas de la pared (largo y alto) y se sabe que se necesita
0,5 metros cbicos de arena por cada metro cuadrado de pared.
Lectura de datos
largo, alto
Impresin de datos
area
arena
largo * alto
0.5 * area
arena
Impresin de datos
recor
vel, radio
(2 * 3.1416 * radio) * 2
tiempo
recor / vel
tiemdes
(recor Div 100) * 2
tiempo
tiempo + tiemdes
tiempo
Impresin de datos
precio
diam * 0.48
adic
extra * diam
recar
(precio + adic) * 1.2
venta
precio + adic + recar
venta
// Proceso de clculo
precio
diam * 0.48
adic
extra * diam
recar
(precio + adic) * 1.2
venta
precio + adic + recar
// Salida de resultados
Escribir (El precio de venta es , venta)
Fin
Ejemplo 18
Pesudocdigo para calcular el mnimo de monedas de 2.00, 1.00, 0.50, 0.20 y 0.10
que una mquina electrnica da como vuelto por la compra de un paquete de
galletas, dicha maquina solo acepta monedas de 5 soles.
Lectura de datos
precio
Impresin de datos
vuelto
5 precio
vueltoEnt
entero (vuelto)
vueltoReal
(vuelto vueltoEnt) * 100
m2
vueltoEnt Div 2
m1
vueltoEnt Mod 2
m50
vueltoReal Div 50
vueltoReal
vueltoReal Mod 50
m20
vueltoReal Div 20
m10
vueltoReal Mod 20
Fin
Escribir (Se recibe , m2, monedas de 2.00 soles, m1, monedas de 1.00
sol, m50, monedas de 0.50 cntimos, m20, monedas de 0.20 cntimos,
m10, monedas de 0.10 cntimos)
Ejemplo 19
Pseudocdigo para calcular el tiempo, en horas y minutos que emplea un profesor
para calificar un grupo de exmenes. Se tienen tres tipos de examen A, B, C y el
tiempo en minutos requerido para cada tipo son: A = 5 min, B = 7 min y C = 8
min.
Lectura de datos
Impresin de datos
tiempo
ca, cb, cc
hor, min
3. Estructura selectiva
Para poder desarrollar aplicaciones, no basta con ejecutar sentencias secuenciales,
tambin resulta esencial tomar decisiones en base a evaluaciones de expresiones
lgicas que nos sealaran el camino alternativo a seguir.
El tipo de resultado de una estructura selectiva es lgico (booleano), es decir,
verdadero (true) o falso (false).
Las estructuras selectivas que se utilizan para tomar decisiones podemos
clasificarlas en: simple, doble y mltiple.
exFin
promP
14
10
16
14
12
15
promedio =
(exPar+exFin+promP)/3
14.00
13.00
mensaje
aprobado
aprobado
// Calcula promedio
promedio
(exPar + exFin + promP) / 3
Si (promedio >= 10.5) entonces
Escribir (El promedio es , promedio, "aprobado)
Fin_si
Fin
Explicacin
Para resolver el ejemplo planteado se definen las variables reales exPar, exFin,
promP y promedio:
real: exPar, exFin, promP, promedio
Se ingresa tres notas exPar, exFin, promP:
Escribir (Ingresar tres notas)
Leer (exPar, exFin, promP)
Posteriormente se calcula el promedio de las tres notas ingresadas exPar, exFin,
promP:
promedio
(exPar + exFin + promP) / 3
Con el promedio calculado se evalua la expresin lgica (promedio >= 10.5) si
esta condicin es verdadera se imprime el mensaje solicitado:
Si (promedio>=10.5) entonces
Escribir (El promedio es , promedio, "aprobado)
Fin_si
Ejemplo 02
Pseudocdigo que lea el sueldo de un trabajador, aplique un aumento del 15%
si su sueldo es inferior a 500 e imprima el nuevo sueldo.
Variables a utilizar en el pseudocdigo
sueldo
sueldo aum
aumento nuevoSueldo
nuevo sueldo
Inicio
// Definir variables
real: sueldo, nuevoSueldo, aum
0
// Lectura de datos
Escribir (Ingresar sueldo: )
Leer (sueldo)
// Calcula el sueldo
Si (sueldo >=0 and sueldo < 500) entonces
aum
0.15*sueldo
Fin_si
nuevoSueldo
sueldo + aum
Escribir (Nuevo sueldo , nuevoSueldo)
Fin
Ejemplo 03
Pseudocdigo calcula el monto final que se paga por un consumo en un
restaurante, sabiendo que por consumos mayores a S/.100.00 se aplica un
descuento del 20%.
Variables a utilizar en el pseudocdigo
consumo
monto del consumo
desc
descuento
montoFinal monto final a pagar
Inicio
// Definir e inicializar variables
real: consumo, desc
0, montoFinal
// Lectura de datos
Escribir (Ingresar consumo: )
Leer (consumo)
// Calcula el descuento
Si (consumo > 100) entonces
desc
0.20 * consumo
Fin_si
montoFinal
consumo - desc
Escribir (El total a pagar es , montoFinal)
Fin
Ejemplo 04
Pseudocdigo que calcula el sueldo semanal de un obrero que trabaja por horas,
si durante la semana trabaj ms de 40 horas se le paga por cada hora extra
dos veces la tarifa normal.
Variables a utilizar en el pseudocdigo
tarifa
tarifa de cada hora trabajada
horas
total de horas trabajadas
extra
pago extra
sueldo
sueldo del obrero
Inicio
// Definir e inicializar variables
real: tarifa, sueldo, extra
0
entero: horas
// Lectura de datos
Escribir (Ingresar tarifa: )
Leer (tarifa)
Escribir (Ingresar horas trabajadas: )
Leer (horas)
// Calcula el sueldo
sueldo
horas * tarifa
Si (horas > 40) entonces
extra
(horas 40) * (2*tarifa)
Fin_si
sueldo
sueldo +extra
Escribir (El sueldo final es , sueldo)
Fin
Ejemplo 05
Pseudocdigo para hallar el menor de 4 nmeros.
Variables a utilizar en el pseudocdigo
nro1
primer nmero
nro2
segundo nmero
nro3
tercero nmero
nro4
cuarto nmero
menor
menor nmero
Inicio
// Definir variables
entero: nro1, nro2, nro3, nro4, menor
// Lectura de datos
Escribir (Ingresar 4 nmeros: )
Leer (nro1, nro2, nro3, nro4)
// Proceso
menor
nro1
Si (nro2 < menor) entonces
menor
nro2
Fin_si
Si (nro3 < menor) entonces
menor
nro3
Fin_si
Si (nro4 < menor) entonces
menor
nro4
Fin_si
Escribir (El menor es , menor)
Fin
3.2. Estructura selectiva doble: Si Sino Fin_si
Se
evala la expresin-lgica, si este resultado es verdadero se ejecuta la
Accion1, si el resultado es falso se ejecuta la Accion2. En ambos casos, luego de
finalizar la accin seleccionada, se termina la sentecia Si Sino - Fin_si y la
ejecucin del pseudocdigo proseguir con la primera sentencia que sigue al Si
- Sino - Fin_si. Su sintaxis es la siguiente:
Si (expresin_lgica) entonces
Accin1
Sino
Accin2
Fin_si
Funcionamiento de la estructura selectiva Si Sino - Fin_si
Cuando la sentencia Si Sino - Fin_si inicia su ejecucin, se suceden los
siguientes pasos:
a) Se evala expresin-lgica, obteniendo un resultado lgico.
b) Si este resultado es verdadero, se ejecuta la Accin1 y se va al paso d.
c) Si este resultado es falso, se ejecuta la Accin2 y se va al paso d.
d) La ejecucin del pseudocdigo proseguir con la siguiente sentencia que
sigue al Fin_si
Ejemplo 06
Pseudocdigo para hallar el mayor de dos nmeros.
El siguiente cuadro muestra resultados con datos de prueba:
nro1
14
12
nro2
16
10
mayor
16
12
Fin
// Lectura de datos
Escribir (Ingresar dos nmeros: )
Leer (nro1, nro2)
// Calcula el mayor de dos nmeros
Si (nro1 > nro2) entonces
mayor
nro1
Sino
mayor
nro2
Fin_si
Escribir ("El mayor de dos nmeros es:", mayor)
Explicacin
Para resolver el ejemplo planteado se definen las variables enteras nro1, nro2,
mayor:
entero: nro1, nro2, mayor
Se lee dos nmeros:
Leer (nro1, nro2)
Se evalua la expresin logica (nro1 > nro2) si esta condicion es verdadera se
asigna nro1 a mayor, de lo contrario se asigna nro2 a mayor.
Si (nro1 > nro2) entonces
mayor
nro1
Sino
mayor
nro2
Fin_si
Ejemplo 07
Pseudocdigo para hallar el mayor de tres nmeros
El siguiente cuadro muestra los resultados con datos de prueba:
nro1
14
12
08
nro2
16
14
05
nro3
18
11
04
mayor
18
14
08
t
nro2
Fin_si
Si (t > nro3) entonces
mayor
t
Sino
mayor
nro3
Fin_si
Escribir (El mayor de tres nmeros es: , mayor)
Fin
Ejemplo 08
Pseudocdigo que lea el espacio recorrido por un auto y su tiempo empleado en
este recorrido. Se pide hallar la velocidad del recorrido. Frmula:
velocidad = espacio / tiempo.
Tenga en cuenta que en caso de que el tiempo sea igual a cero la velocidad no
se podr calcularse.
Variables a utilizar en el pseudocdigo
espacio
espacio recorrido
tiempo
tiempo empleado
velocidad
velocidad del recorrido
Inicio
// Definir variables
real : espacio, tiempo, velocidad
// Lectura de datos
Escribir (Ingresar espacio recorrido y tiempo)
Leer (espacio, tiempo)
// Calcula velocidad
Si (tiempo <> 0) entonces
velocidad
espacio / tiempo
Escribir (La velocidad es: , velocidad)
Sino
Escribir (Error)
Fin_si
Fin
Ejemplo 09
Pseudocdigo que lea tres valores tal como a, b, c. Calcular el resultado de la
siguiente expresin:
y = (a - b) / c
Donde: a > b > c, adems c no puede ser cero.
Variables a utilizar en el pseudocdigo
a
primer valor
b
segundo valor
c
tercer valor
y
resultado de la expresin
Inicio
// Definir variables
real: a, b, c, y
// Lectura de datos
exFin
promP
14
10
16
08
12
06
promedio =
(exPar+exFin+promP)/3
14.00
8.0
mensaje
aprobado
desaprobado
nro2
5
6
2
Mensaje a mostrar
20 es mltiplo de 5
18 es mltiplo de 6
9 no es mltiplo de 2
a utilizar en el pseudocdigo
primer nmero
segundo nmero
residuo de dos nmeros
Inicio
// Definir variables
entero: nro1,nro2, r
// Lectura de datos
Escribir (Ingresar dos numeros)
Leer (nro1, nro2)
// Calcular mltiplo
r
nro1 Mod nro2
Si (r = 0) entonces
Escribir (nro1, es mltiplo de, nro2)
sino
Escribir (nro1, no es mltiplo de, nro2)
Fin_si
Fin
Ejemplo 13
Pseudocdigo que lea tres nmeros e imprima su producto si el primero de ellos
es positivo, en caso contrario imprima su suma.
Por ejemplo:
a = 4, b = 3, c = 2
entonces su producto es p = a * b * c = 42
a = -4, b = 3, c = 2
entonces la suma es s = a + b + c = 1
Variables
a
b
c
a utilizar en el pseudocdigo
primer nmero
segundo nmero
tercer nmero
p
s
producto
suma
Inicio
// Definir variables
entero: a, b, c, p, s
// Lectura de datos
Escribir (Ingresar primer numero:)
Leer (a)
Escribir (Ingresar segundo nmero:)
Leer (b)
Escribir (Ingresar tercer nmero:)
Leer (c)
Si (a > 0) entonces
p
a*b*c
Escribir (El producto es igual , p)
Sino
s
a+b+c
Escribir (La suma es igual , s)
Fin_si
Fin
Ejemplo 14
Pseudocdigo que lea dos nmeros y diga si la suma de los nmeros es par o
impar.
Por ejemplo:
a = 4, b = 3
a = 4, b = 4
Variables
a
b
s
entonces su suma es s = a + b = 7
entonces la suma es s = a + b = 8
es impar
es par
a utilizar en el pseudocdigo
primer nmero
segundo nmero
suma
Inicio
// Definir variables
entero: a, b, s
// Lectura de datos
Escribir ("Ingresar primer numero:")
Leer (a)
Escribir ("Ingresar segundo nmero:")
Leer (b)
s
a+b
Si (s Mod 2 = 0) entonces
Escribir (s, La suma es par)
Sino
Escribir (s, La suma es impar)
Fin_si
Fin
Ejemplo 15
Pseudocdigo que determine si un ao es bisiesto. Un ao es bisiesto si es
mltiplo de 4 y no de 100 o cuando es mltiplo de 400.
Un ao es bisiesto si es mltiplo de 4. Para esto tendremos que verificar si el
residuo de la divisin del ao entre 4 es igual a cero.
a Mod 4 = 0
Adems, se sabe que no debe ser mltiplo de 100 para lo cual escribimos
a Mod 100 <> 0
Sea mltiplo de 400.
a Mod 400 = 0
Entonces un ao es bisiesto si mltiplo de 4, que no debe ser multiplo de 100 a
menos que sea mltiplo de 400
(((a Mod 4 = 0 ) and (a Mod 100 <> 0)) or (a Mod 400 = 0))
Variables a utilizar en el pseudocdigo
a
ao
Inicio
// Definir variable
entero: a
// Lectura de datos
Escribir ("Ingresar ao:")
Leer (a)
Si (((a Mod 4 = 0) and (a Mod 100 <> 0)) or (a Mod 400 = 0)) entonces
Escribir (El ao es bisiesto)
Sino
Escribir (El ao no es bisiesto)
Fin_si
Fin
Ejemplo 16
Pseudocdigo que calcule el total a pagar por la compra de camisas. Si se
compran tres camisas o ms se aplica un descuento del 20% sobre el total de
la compra, sino se aplica un descuento del 10%.
Variables a utilizar en el pseudocdigo
precio
precio de cada camisa
cant
cantidad a comprar
compra
monto de la compra
desc
descuento
total
total a pagar
Inicio
// Definir variables
entero: cant
real: precio, compra, desc, total
// Lectura de datos
Escribir ("Ingresar precio unitario:")
Leer (precio)
Escribir ("Ingresar cantidad de camisas:")
Leer (cant)
compra
cant * precio
Si (compra >=3) entonces
desc
0.20 * compra
Sino
desc
0.10 * compra
Fin_si
total
compra desc
Escribir (El total a pagar es , total)
Fin
Ejemplo 17
Pseudocdigo que calcule el total que se paga en una playa de estacionamiento,
en el que se registra la hora de ingreso y la hora de salida del vehculo en
HH:MM, la tarifa por hora o fraccin de S/.2.00.
Por ejemplo:
Hora de inicio:4:20
Hora de trmino: 7:10
Total a pagar: 7:10- 4:20= 2: 40 = 6
Hora de inicio:3:20
Hora de termino: 8:40
Total a pagar: 8:40- 3:20= 5: 20 = 12
Variables a utilizar en el pseudocdigo
h1, m1
hora de ingreso
h2, m2
hora de salida
pago
total a pagar
Inicio
// Definir e inicializar variables
entero: h1, m1, h2, m2, min, hor
0
real : pago
// Lectura de datos
Escribir ("Ingresar hora de ingreso:")
Leer (h1, m1)
Escribir ("Ingresar hora de salida:")
Leer (h2, m2)
Si (m2 >= m1) entonces
min
m2 m1
Sino
min
(m2 + 60) m1
h2
h2 - 1
Fin_si
hor
h2 h1
Si (min > 0)
hor
hor + 1
Fin_si
pago
hor * 2
Escribir (El total a pagar es , pago)
Fin
3.3.Estructura selectiva mltiple
3.3.1. Estructura selectiva mltiple: Si anidado
Un Si anidado es una sentencia Si que esta contenido dentro de otro Si o
Sino. Cuando se anidan Si, cada sentencia Sino siempre se corresponde a la
sentencia Si mas prxima dentro del mismo bloque y que no este asociada
con otro Sino. Un caso particular de una sentencia Si anidada es la
siguiente:
Si (expresin_lgica1) entonces
Accin1
Sino
Si (expresin_lgica2) entonces
Accin2
Sino
Fin_si
Fin_si
Accin3
Fin
// Definir variables
entero: nro
cadena: mensa
// Lectura de datos
Escribir (Ingresar numero:)
Leer (nro)
Si (nro = 0 ) entonces
mensa
Cero
Sino
Si (nro>0) entonces
mensa
Positivo
Sino
mensa
Negativo
Fin_si
Fin_si
Escribir (nro, mensa)
Explicacin
Para resolver el ejemplo planteado se define la variable entera nro y la
variable cadena mensa:
entero: nro
cadena: mensa
Se ingresa un nmero cualquiera:
Escribir (Ingresar numero:)
Leer (nro)
Se evalua la expresin lgica (nro = 0) en caso de cumplirse la igualdad se
asigna Cero a la variable mensa:
Si (nro = 0 ) entonces
mensa
Cero
Despus de esta asignacin la ejecucin pasa a la sentencia escribir y
finaliza el pseudocodigo:
Escribir (nro, mensa)
Pero, si la expresin lgica (nro = 0) resulta ser falsa, se ejecuta el SINO
asociado al primer SI:
SINO
Este sino esta conformado por un SI que evalua la expresin logica (nro >
0), si la asignacin es verdadera se asigna Positivo a la variable mensa:
Si (nro>0) entonces
mensa
Positivo
Despus de esta asignacin la ejecucin pasa a la sentencia escribir y
finaliza el pseudocodigo:
Escribir (nro, mensa)
Pero, si la expresin logica resulta ser falsa se ejecuta el SINO asociado al
segundo SI en la cual se asigna Negativo a la variable mensa:
mensa
Negativo
Despus de esta asignacin la ejecucin pasa a la sentencia escribir y
finaliza el pseudocodigo:
Escribir (nro, mensa)
Ejemplo 19
En una tienda comercial se realizan descuentos en las compras en funcin
del importe total de dichas compras. Se desea calcular el importe que se
cobra a un cliente, teniendo en cuenta los siguientes supuestos:
Si el importe total de la compra es menor de 200 soles no hay
descuentos.
Si el importe total de la compra esta comprendido entre 200 y 800 se
hace un descuento del 10%
Si el importe total de la compra es mayor de 800 se hace un descuento
del 20%.
Se pide mostrar el nombre del cliente, el importe total, el descuento y el
importe a cobrar a un cliente cualquiera
Variables a utilizar en el pseudocdigo
nombre
nombre del cliente
importeTotal
importe total
descto
descuento
importeACobrar
importe a cobrar
Inicio
// Definir variables
real: importeTotal, descto, importeACobrar
cadena: nombre
// Lectura de datos
Escribir (Ingresar nombre del cliente:)
Leer (nombre)
Escribir (Ingresar monto total de la compra:)
Leer (importeTotal)
// Calcula el importe a Cobrar
Si (importeTotal >= 0 and importeTotal < 200) entonces
descto
0
Sino
Si (importeTotal <= 800) entonces
descto
0.10*importeTotal
Sino
descto
0.20*importeTotal
Fin_si
Fin_si
ImporteACobrar
importeTotal - descto
Escribir (Cliente: , nombre)
Escribir (Descuento: , descto)
Escribir (Importe total: , importeTotal)
Escribir (Importe a cobrar: , importeACobrar)
Fin
Ejemplo 20
Una compaa de gaseosas est realizando una promocin por la compra de
su producto. Dentro de cada chapa viene un nmero que determina el
premio que obtiene un comprador.
Si la chapa tiene un nmero entre 1 y 5 el comprador obtiene como
premio el doble del precio pagado por la gaseosa.
Si la chapa tiene un nmero entre 6 y 8 el comprador obtiene como
premio la devolucin del precio pagado por la gaseosa.
Si chapa tiene un nmero entre 9 y 10 el comprador no gana ningn
premio.
Escribir un pseudocdigo que muestre los diferentes resultados que se
podra obtener al comprar una gaseosa.
El siguiente cuadro muestra los resultados con datos de prueba:
nro
corrida
1
2
3
4
datos
precio nroChapa
0.50
5
1.00
4
3.00
9
5.00
7
Premio
(soles)
1.0
2.0
0.0
5.0
Sino
Si (nroChapa >=9 and nroChapa<=10) entonces
premio
0
Fin_si
Fin
Fin_si
Fin_si
Escribir (Premio: , premio)
Ejemplo 21
El precio de venta de DVD vara de acuerdo a la cantidad que se compra:
S/.2.50 si se compran unidades separadas hasta 9.
S/.2.20 si se compran entre 10 unidades hasta 99.
S/.1.90 entre 100 y 499 unidades
S/.1.50 para mas de 500
El vendedor gana por cada CD vendido el 20% del costo. Realizar un
pseudocdigo que calcule el pago total y la ganancia para el vendedor.
Variables a utilizar en el pseudocdigo
cant
cantidad de dvd
pago
pago total
ganan
ganancia del vendedor
Inicio
// Definir variables
entero: cant
real: pago, ganan
// Lectura de datos
Escribir (Ingresar cantidad de DVD: )
Leer (cant)
Si (cant < 10) entonces
pago
2.50 * cant
Sino
Si (cant < 100) entonces
pago
2.20 * cant
Sino
Si (cant < 500) entonces
pago
1.90 * cant
Sino
pago
1.50 * cant
Fin_si
Fin_si
Fin_si
ganan
0.20 * pago
Escribir (El pago total es: , pago)
Escribir (La ganancia del vendedor es: , ganan)
Fin
Ejemplo 22
Pseudocdigo que calcule el sueldo neto de un trabajador, que tiene los
siguientes descuentos:
11% del sueldo bruto si pertenece a la AFP A
10% del sueldo bruto si pertenece a la AFP B
7% del sueldo bruto por seguro si gana mas de 4000
6% del sueldo bruto por seguro si gana mas de 3000
5% del sueldo bruto por seguro si gana menos o igual a 3000
Descuento (%)
0
10
15
20
Elaborar un pseudocdigo que calcule el monto final que paga un cliente por
una compra.
Variables a utilizar en el pseudocdigo
montoCompra
monto de la compra
desc
descuento
montoFinal
monto final
Inicio
// Definir variables
Fin
Ejemplo 24
En empresa ensambladora de computadoras oferta a sus clientes descuentos
que varan de acuerdo al nmero de computadoras que se compre. Si se
compra hasta cinco computadoras se descontar el 10%, si se compra entre
6 y 10 computadoras se descuenta el 20% y si se compra ms de 10
computadoras se descuenta el 40%.
Elaborar un pseudocdigo que calcule el monto final que se paga por un
cierto nmero de computadoras.
Variables a utilizar en el pseudocdigo
precio
precio de venta
total
total a pagar
desc
descuento
cant
cantidad de computadoras
Inicio
// Definir variables
real: precio, total, desc
entero: cant
// Lectura de datos
Escribir (Ingresar precio: )
Leer (precio)
Escribir (Ingresar cantidad: )
Leer (cant)
total
precio * cant
Si (cant <= 5) entonces
desc
0.10 * total
Sino
Si (cant <= 10) entonces
desc
0.20 * total
Sino
desc
0.40 * total
Fin_si
Fin_si
total
total desc
Escribir (El total a pagar es: , total)
Fin
Ejemplo 25
Pseudocdigo que compruebe si tres lados forman un tringulo, de ser as
calcule su rea y muestre que tipo de triangulo forma: equiltero, issceles
o escaleno.
Teorema: En todo tringulo cada lado es menor que la suma de los otros dos
lados, pero mayor que su diferencia.
Para hallar el rea de un tringulo conociendo sus lados se aplica la
siguiente frmula:
area
p( p a)( p b)( p c)
Donde, p es el semipermetro.
Variables a utilizar en el pseudocdigo
a, b, c
lados del tringulo
p
semipermetro
area
rea del tringulo
Inicio
// Definir variables
real: p, area
entero: a, b, c
// Lectura de datos
Escribir (Ingresar lados: )
Leer (a, b, c)
Si ((a < b + c) and (b < a + c) and (c < a + b)) entonces
Escribir (Forman un tringulo)
p
(a + b + c) /2
area
raiz (p * (p - a) * (p - b) * (p - c))
Si (a = b and b = c) entonces
Escribir (Equiltero)
Sino
Si (a = b or b = c or a = c) entonces
Escribir (Issceles)
Sino
Escribir (Escaleno)
Fin_si
Fin_si
Escribir (El rea es , area)
Sino
Escribir (No forman un tringulo)
Fin_si
Fin
Ejemplo 26
Pseudocdigo que calcula la calificacin de un alumno en base a 3 notas,
validar el ingreso de notas entre 0 y 100, considerar la siguiente tabla:
Promedio
90 100
80 89
70 79
Calificacin
A
B
C
50 69
0 49
D
E
Mximo De consultas
8
6
4
Fin
Texto a mostrar
Lunes
Jueves
Sbado
Descripcin
Sobresaliente
Notable
Aprobado
Insuficiente
Nota no esta en el rango
Incremento (%)
25
20
15
10
Mximo de Letras
36
24
Inters (%)
7
6
12
El cliente solo puede financiar una compra hasta el mximo de letras que se
indica en el cuadro anterior, en caso contrario la venta no debe proceder.
Calcular el monto de cada letra por pagar as como el monto total.
Variables a utilizar en el pseudocdigo
tipo
tipo de tarjeta
monto
monto de la compra
cant
cantidad de letras que se desea financiar
max
mximo de letras a financiar
inte
inters del la compra
letra
monto de cada letra
Inicio
// Definir variables
entero: cant, max, sw
0
real: monto, inte, letra
caracter: tipo
// Lectura de datos
Escribir (Ingresar tipo de tarjeta)
Leer (tipo)
Escribir (Ingresar monto de la compra)
Leer (monto)
Escribir (Ingresar cantidad de letras a financiar)
Leer (cant)
En caso sea (tipo) hacer
A: max
36
inte
0.07 * monto
B: max
24
inte
0.06 * monto
C: max
12
inte
0.05 * monto
Sino
Escribir (Tipo de tarjeta no existe)
sw
1
Fin_caso
Si (sw = 0) entonces
monto
monto + inte
Si (cant <= max) entonces
letra
monto / cant
Escribir (El monto total a pagar es , monto)
Escribir (El monto de cada letra es , letra)
Sino
Escribir (La venta no procede)
Fin_si
Fin_si
Fin
Ejemplo 35
Calcular el consumo de combustible y el total que se invirti en el recorrido
de un automvil. Para esto se debe disear un algoritmo en el que se
ingresa los kilometrajes con el que inicia y termina el recorrido, as como la
cantidad de galones de combustible con el que se inicia y termina el
recorrido. Adems calcular la cantidad de galones que consume el auto por
cada 100 kilmetros. Los precio por cada galn de combustible son:
Tipo de combustible
Gasolina 97
Gasolina 95
Gasolina 89
Diesel
Ejemplo 36
Pseudocdigo que determine si un nmero que se encuentre en el rango de
1 a 9, es par o impar.
El siguiente cuadro muestra resultados con datos de prueba, para diferentes
valores de la variable nro.
Nro de
corrida
1
2
3
5
Nro
Resultado
5
2
9
10
impar
par
impar
Error fuera de rango
Factor
0
6
9
10
0:
factor
0
1: 2: 3: 4: 5:
factor
6
6: 7: 8:
factor
9
9: 10:
factor
10
Sino
Escribir (Fuera de rango)
sw
1
Fin_Caso
Si (sw = 0) entonces
nuevoPuntaje
puntaje + factor
Escribir (El nuevo puntaje es , nuevoPuntaje)
Fin_si
Fin
Ejemplo 38
Pseudocdigo que permita calcular cuntos das tiene un mes, teniendo en
cuenta lo siguiente:
a) El orden del calendario indica que enero es 1, febrero es 2, etc.
b) Enero, marzo, mayo, julio, agosto, octubre y diciembre tienen 31 das.
c) Abril, junio, setiembre y noviembre tienen 30 das.
d) Febrero tiene 28 das o 29 das si el ao bisiesto. Un ao es bisiesto si es
mltiplo de 4 y no de 100 o cuando es mltiplo de 400.
En la siguiente tabla se muestra resultados para diferentes valores de las
variables:
Nro
corrida
1
2
3
4
5
6
datos
Mes
Ao
2
2004
4
2016
2
2001
2
2000
10
2006
4
2007
Resultado
Da
29
29
28
29
31
30
100 <> 0) or
Fin
b) Cuando se presentan selecciones basadas en dos o ms niveles; en estos
casos se utiliza la sentencia En caso sea anidado.
Ejemplo 39
Pseudocdigo para calcular la pensin que tiene que pagar un alumno de un
instituto cuya cuota de matricula tiene un porcentaje de descuento que se
establece en la siguiente tabla y esta en funcin del colegio de procedencia
del alumno y de las tres categoras que existe en el instituto. Considere que
la pensin esta exonerada de impuesto.
Colegio de
procedencia
Nacional
Particular
A
50
15
Categora
B
40
20
C
30
25
Colegio
Nacional
Particular
Categora
A
B
Descuento
1000*0.05=500
1500*0.20=300
Pensin final
500.0
1200.0
C : dscto
0.15 * cuota
Sino
Escribir (Opcin no contemplada)
sw
1
Fin_caso
Sino
Fin
Ejemplo 40
Calcular el pago de un obrero que trabaja al destajo. El pago que recibe el
obrero por cada unidad producida depende de su categora y del tipo de
producto que produce, como se muestra en el siguiente cuadro:
Categora
A
B
C
Bonificacin (%)
0.00
50.00
100.00
150.00
Fin
Leer (cant)
// Clculos
En caso sea (prod) hacer
T:
En caso sea (cat) hacer
A : pago
2.50 * cant
B : pago
2.00 * cant
C : pago
1.50 * cant
Sino
Escribir (Categora no existe)
sw
1
Fin_caso
L:
En caso sea (cat) hacer
A : pago
2.00 * cant
B : pago
1.50 * cant
C : pago
1.00 * cant
Sino
Escribir (Categora no existe)
sw
1
Fin_caso
Sino
Escribir (Producto no existe)
sw
1
Fin_caso
Si (sw = 0) entonces
Si (cant <= 250) entonces
bonf
0
Sino
Si (cant <= 500) entonces
bonf
50.00
Sino
Si (cant <= 1000) entonces
bonf
100.00
Sino
bonf
150.00
Fin_si
Fin_si
Fin_si
pago
pago + bonf desc
// Salida de resultados
Escribir (El pago del obrero es: , pago)
Fin_si
3.4.Ejercicios propuestos
1. Evaluar la siguiente funcin:
fx
x 2
x / 6
x
x 3 5
si ( x Mod 4 )
si ( x Mod 4 )
si ( x Mod 4 )
si ( x Mod 4 )
x
x, si x 0
- x, si x 0
Por Ejemplo:
De -7 su valor absoluto es: -(-7) = 7 (cuando es negativo se cambia de
signo)
De 7 su valor absoluto es: (7) = 7 (cuando es positivo nos da el mismo
nmero)
4. Escribir un programa para leer dos nmeros a, b y obtenga el valor
numrico de la funcin.
2 a b, si a2 - b 2 0
f x a2 - 2b, si a2 - b 2 0
a b,
si a2 - b 2 0
11. Una persona desea iniciar un negocio, para lo cual piensa verificar cuanto
dinero le prestar el banco por hipotecar su casa. Tiene una cuenta
bancaria, pero no quiere disponer de ella a menos que el monto por
hipotecar su casa sea muy pequeo. Si el monto de la hipoteca es menor
que $30,000 entonces invertir el 50% de la inversin total y un socio
invertir el otro 50%. Si el monto de la hipoteca es de $30,000 o mas,
entonces invertir el monto total de la hipoteca y el resto del dinero que se
necesite para cubrir la inversin total se repartir a partes iguales entre el
socio y el.
12. Elaborar un algoritmo que tenga como entrada los valores de dos ngulos,
expresados en grados, minutos y segundos, obtenga el valor de su suma de
la misma forma. Se supone que las entradas son correctas, en el sentido de
que cada ngulo est expresado como tres nmeros enteros, en los rangos
respectivos (0 - 360), (0 - 60) y (0 - 60). La salida debe estar expresada de
la misma manera.
13. El ministerio de agricultura ha distribuido la siembra de 3 productos en
terrenos con ms de 1000 hectreas de la siguiente manera:
Producto
Terreno (%)
Papa
50
Zanahoria
30
Camote
20
Si la superficie del terreno es menor o igual 1000 hectreas, se deber
sembrar de la siguiente manera:
Producto
Terreno (%)
Papa
60
Zanahoria
25
Camote
15
Se desea saber la cantidad de toneladas de papa, zanahoria y camote que se
espera cosechar, si se sabe que se obtiene 2 toneladas de papa, zanahoria y
camote en 10, 8 y 9 hectreas respectivamente.
14. Una empresa elctrica dispone de la siguiente tabla de costos:
Cod. de tarifa
Descripcin Tarifa 1 kw/hora (S/.) Porcentaje (%)
1
Domestico
35.00
1.5
2
Industrial
80.00
2.5
3
Comercial
100.00
3
Adems se dispone del cobro de un impuesto especial que esta dado por los
porcentajes mencionados en el cuadro anterior, as como el cobro por
arbitrios municipales:
Alumbrado pblico 4.5%
Limpieza pblica
10%
Parques y jardines 2.5%
15. Calcular el costo del servicio de mudanza, de acuerdo a la distancia entre el
punto de partida y de llegada, el tipo de carga y al nmero de viajes ida y
vuelta. Para calcular el costo se debe tener en cuenta:
a) Si la distancia por cada viaje es mayor o igual a 5 Km., se cobrar
S/.5.00 por kilmetro, de lo contrario se cobrar el monto bsico que
ser igual a S/.25.00.
b) La carga puede ser frgil o no frgil. Solo si la carga es frgil al monto
calculado anteriormente se le aumentar 20%.
c) El monto resultante de acuerdo a la distancia y al tipo de carga se
multiplicar por el nmero de viajes.
16. Una empresa calcula las bonificaciones de sus empleados teniendo en
cuenta lo siguiente: si el sueldo del empleado es menor a S/.750, recibe una
bonificacin del 15% del sueldo, si el sueldo esta entre S/.750 y S/.1200,
4. Estructura repetitiva
Las estructuras repetitivas se utilizan cuando es necesaria la repeticin de una o
mas sentencias, en un nmero determinado de veces, tantas veces como lo
permita el resultado de una expresin lgica. Los controles de esta estructura son:
mientras, repetir y para.
Dentro de las estructuras repetitivas intervienen los contadores y acumuladores,
que son variables que toman valores iniciales antes de que empiece el proceso
repetitivo, para que luego, dentro del proceso repetitivo, incrementar sus valores
segn la lgica de solucin del problema.
4.1.Conceptos bsicos
Contador
Es una variable numrica entera que se incrementa o decrementa cada vez que
se ejecuta la accin que lo contiene, toma un valor inicial de cero o uno, segn
sea el caso. En la siguiente figura la variable i representa a un contador.
i
valor actual
valor anterior
cantidad a incrementar
Acumulador o totalizador
Es una variable numrica que se incrementa o decrementa de forma no
constante, toma un valor inicial de cero o uno segn sea el caso. En la siguiente
figura, la variable total representa a un acumulador y la variable parcial es la
cantidad que se incrementar el acumulador en cada iteracin.
total
valor actual
= total
+ parcial
valor anterior
cantidad a incrementar
Bucle
Es un mecanismo de programacin que repite un segmento de un programa
(una o mas sentencias) un cierto nmero de veces. Los bucles se implementan
utilizando las sentencias repetitivas: mientras, repetir y para.
Cuerpo del bucle
Son las sentencias que se ejecutarn repetidamente un cierto nmero de veces.
Iteracin
Representa cada repeticin del cuerpo de bucle.
4.2.Estructura repetitiva Mientras Fin_mientras
Repite una o mas acciones mientras el resultado de una expresin lgica es
verdadera (true). Si el resultado de la expresin lgica es falsa (false), este
proceso de repeticin termina, y la ejecucin del programa contina con la
siguiente sentencia que sigue al Fin_mientras. Su sintaxis es la siguiente:
Cuando la expresin logica (nro > 0) llega a ser falsa, se ejecuta la sentencia
escribir y finaliza el pseudocdigo:
Escribir (El nmero invertido de , nro1, es , nroinvertido)
Por ejemplo si el nmero es 134, entonces el nmero invertido ser 431. Para
ir reduciendo cada nmero emplearemos la operacin:
nro
nro Div 10
As tenemos:
134 Div 10 = 13
13 Div 10 = 1
Se detiene cuando
es cero
1 Div 10 = 0
A la vez, para obtener cada dgito emplearemos la operacin:
digito
digito Mod 10
As tenemos:
134 Mod 10 = 4
13 Mod 10 = 3
1 Mod 10 = 1
10 * 43+ 1 = 431
Inicialmente nroinvertido = 0
La siguiente tabla muestra los resultados de la corrida del algoritmo.
Iteracin
nro
Valores
de nro
Expresin
Lgica
nro > 0
Resultado
de la
Expresin
Lgica
1
2
3
---
134
13
1
0
134>0
13 >0
1> 0
0>0
True
True
True
False
4
3
1
nroinvertido =
10*nroinvertido
+ digito
nro =
nro Div 10
4
43
431
Fin del Mientras
Ejemplo 02
Pseudocdigo que multiplique dos nmeros enteros utilizando el siguiente
algoritmo:
Proceso de divisin: Se divide por 2 el primer nmero y se obtiene un
cociente. Se divide por 2 este cociente y se obtiene otro cociente. Se
contina este proceso de divisin por 2, hasta que el nmero cociente sea 1.
13
1
0
5 Div 2 = 2
2 Div 2 = 1
Se detiene cuando
es 1
32 * 2 = 64
suma + nro2
con
con + 1
suma
suma + m
m
m+n
Fin_mientras
Escribir (La suma es: , suma)
Escribir (La cantidad de mltiplos de , m, encontrados en los , n,
primeros nmeros naturales es , con)
Fin
Ejemplo 05
Pseudocdigo que calcule el cuadrado de un nmero realizando slo sumas. El
cuadrado de un nmero n es la suma de los n primeros nmeros impares.
Ejemplo: 32 = 1 + 3 + 5 = 9.
Variables a utilizar en el pseudocdigo
n
nmero ingresado
ter
nmeros impares
cuad
nmero al cuadrado
con
contador
Inicio
// Definir e inicializar variables
entero: n, cuad
0, ter
1, con
// Leer Datos
Escribir (Ingresar nmero:)
Leer (n)
// Calcula serie y suma
con
1
Mientras (con <= n) Hacer
cuad
cuad + ter
ter
ter + 2
con
con + 1
Fin_mientras
Escribir (El cuadrado de , n, es: , cuad)
Fin
Ejemplo 06
Pseudocdigo que imprima la serie y calcule el producto de los n trminos de:
1/12
3/22
5/32
7/42
Se detiene
cuando es cero
digito Mod 10, que
3897 Mod 10 = 7
389 Mod 10 = 9
38 Mod10 = 8
3 Mod 10 = 3
Para calcular la suma de los dgitos de un nmero emplearemos la
operacin: suma
suma + digito
Para calcular la cantidad total de dgitos de un nmero emplearemos un
contador tal como: c
c+1
Para calcular la cantidad de dgitos pares e impares evaluamos cada dgito,
un dgito es par si el residuo de la divisin del dgito entre 2 es cero, en caso
contrario ser impar. De manera se irn acumulando en dos contadores
diferentes la cantidad total de dgitos pares y de dgitos impares.
Variables a utilizar en el pseudocdigo
nro
nmero ingresado
digito
cada dgito del nmero
suma
la suma total de dgitos
c
contador que guarda la cantidad de dgitos
cpar
contador que guarda la cantidad de dgitos pares
cimpar
contador que guarda la cantidad de dgitos impares
Inicio
// Definir e inicializar variables
entero: nro, digito, suma
0, c
0, cpar
0, cimpar
// Leer Datos
Escribir (Ingresar nmero:)
Leer (nro)
Mientras (nro>0) Hacer digito
nro Mod 10 suma
suma + digito c
c+
1
Si (digito Mod 2 = 0) entonces
cpar
cpar + 1
Sino
cimpar
cimpar + 1
Fin_si
nro
nro Div 10
Fin_mientras
Escribir (La suma es: , suma)
Escribir (El total de dgitos es: , c)
Escribir (La cantidad de digitos pares es: , cpar)
Escribir (La cantidad de digitos impares es: , cimpar)
Fin
Ejemplo 09
Pseudocdigo que calcula los salarios de un conjunto de N trabajadores,
conociendo la tarifa por hora y las horas trabajadas, asi como, la cantidad de
trabajadores que reciben un salario mayor o igual a S/.700. Considerar una
nica tarifa por hora para todos los trabajadores.
Variables a utilizar en el pseudocdigo
n
cantidad de trabajadores
tar
tarifa por hora
hor
horas trabajadas
salario
salario
conS
contador de trabajadores con salario mayor o igual a S/.700
con
contador
Inicio
// Definir e inicializar variables
entero: tar, n, con, hor, salario, conS
0
// Leer Datos
Escribir (Ingresar tarifa:)
Leer (tar)
Escribir (Ingresar cantidad de trabajadores:)
Leer (n)
// Calculo
con
1
Mientras (con <= n) Hacer
Escribir (Ingresar horas trabajadas del trabajador, con, :)
Leer (hor)
salario
hor * tar
Si (salario >= 700) entonces
conS
conS + 1
Fin_si
con
con + 1
Escribir (El salario del trabajador , con, es , salario)
Fin_mientras
Escribir (La cantidad de trabajadores con salarios mayores o iguales a
S/.700.00 es: , conS)
Fin
Ejemplo 10
Durante un censo se registra los datos de n personas como: sexo (masculino,
femenino), edad y estado civil (soltero, casado, viudo, divorciado). Elaborar un
pseudocdigo que muestre el nmero de jvenes solteras que tienen entre 18 y
30 aos.
Variables a utilizar en el pseudocdigo
n
cantidad de personas
sexo
sexo de la persona
edad
edad de la persona
estCiv
estado civil
conM
cantidad de mujeres solteras entre 18 y 30 aos
con
contador
Inicio
// Definir e inicializar variables
entero: n, edad, con 1 , conM
0
caracter: sexo, estCiv
// Leer Datos
Escribir (Ingresar cantidad de personas:)
Leer (n)
// Calculo
con
1
Mientras (con <= n) Hacer
Escribir (Ingresar sexo (M)asculino, (F)emenino:)
Leer (sexo)
Escribir (Ingresar edad:)
Leer (edad)
Escribir (Ingresar estado civil (S)oltero, (C)asado, (V)iudo, (D)ivorsiado:)
Leer (estCiv)
Si (sexo = F and estCiv = S and edad>=18 and edad <=30) entonces
conM
conM + 1
Fin_si
con
con + 1
Fin_mientras
Escribir (La cantidad de mujeres solteras entre 18 y 30 aos son: , conM)
Fin
Ejemplo 11
Una organizacin de bienestar familiar registra los pesos de las N personas de
un centro poblado, a partir de estos datos, se desea determinar el promedio de
peso de los nios, jvenes, adultos y ancianos que existen en la zona.
Considerar la siguiente tabla de categoras:
Categora
Nios
Jvenes
Adultos
Ancianos
Edad
0 12
13 29
30 59
60 ms
conJ
Sino
sumaJ
sumaJ + peso
conJ + 1
Si (edad <= 59) entonces
sumaA
sumaA + peso
conA
conA + 1
Sino
sumaC
sumaC + peso
conC
conC + 1
Fin_si
Fin_si
Fin
Fin_si
Fin_mientras
promN
sumaN / conN
promJ
sumaJ/ conJ
promA
sumaA / conA
promC
sumaC / conC
Escribir (El promedio de
Escribir (El promedio de
Escribir (El promedio de
Escribir (El promedio de
peso
peso
peso
peso
de
de
de
de
los
los
los
los
Ejemplo 12
Pseudocdigo para calcular el mximo comn divisor (M.C.D.) de dos nmeros a
y b, empleando el algoritmo de Euclides.
El algoritmo consiste en:
a) Dividir el mayor nmero entre el menor nmero, obteniendo el cociente q1 y
el resto r1.
b) Si r1 < > 0, se divide el menor nmero entre r1, obteniendo el cociente q2
y el resto r2.
c) Si r2 < > 0, se divide r1 entre r2 obteniendo cociente q3 y resto r3.
d) Este proceso continua hasta obtener un resto igual a 0.
e) El mximo comn divisor (M.C.D.) es el resto anterior al resto igual a 0.
Por ejemplo se queremos hallar el M.C.D. de 1560 y 432, dividimos el mayor
entre el menor.
b
Cociente
1560
Residuo
432
264
264
168
168
r1<>0
r2<>0
r3<>0
r4<>0
r5<>0
r6 = 0
El M.C.D. es 24
Observamos que a toma el valor de b y b toma el valor del residuo para lo cual
escribimos a
byb
residuo.
Variables a utilizar en el pseudocdigo
n1
primer nmero ingresado
n2
segundo nmero ingresado
a
b
residuo
dividendo
divisor
residuo
Inicio
// Definir variables
entero: a, b, residuo, n1, n2
// Leer Datos
Escribir (Ingresar dos nmeros:)
Leer (n1, n2)
// Calculo
Si (n1 > n2) entonces
a
n1
b
n2
Sino
a
n2
b
n1
Fin_si
Mientras (b > 0) Hacer
residuo
a Mod b
a
b
b
residuo
Fin_mientras
Escribir (El mximo comn divisor es: , a)
Fin
Ejemplo 13
Para convertir un nmero en base diferente de 10 a base 10, emplearemos la
descomposicin polinmica, se denomina as por que tiene la caracterstica de
un polinomio donde la variable del polinomio viene a estar dado por la base en
la cual se ha escrito el nmero. Se pide realizar un Pseudocdigo para realizar la
descomposicin polinmica
La siguiente tabla muestra la descomposicin polinmica:
Numero a
convertir y su
correspondiente
base
344(7
1304(5
Resultado
de la
conversin
Proceso de Conversin
(descomposicion polinomica)
3*72 + 4*71 + 4*70 = 3*49 + 4*7 + 4
*1= 147 + 28 + 4
179
204
3 Div 10 = 0
344 Mod 10 = 4
34 Mod 10 = 4
3 Mod 10 = 3
Se puede ir formando la descomposicin polinmica multiplicando el primer
residuo por la base elevado a la cero, el segundo residuo multiplicado por la
base elevado a la 1 y as sucesivamente, guardando el resultado de esta
operacin en un acumulador suma, expresado mediante la operacin: suma
suma + digito * baseexpo , as, inicializando suma en cero tenemos:
0 + 4 * 70 = 4
4 + 4 * 71 = 32
32 + 3 * 72 = 179
Variables a utilizar en el pseudocdigo
digito
cada dgito del nmero
base
base del nmero
nro
nmero a realizar la descomposicin polinmica
nro1
variable auxiliar donde guardamos el nro
expo
exponente
suma
resultado de la descomposicin polinmica
Inicio
// Definir e inicializar variables
entero: nro, nro1, base, digito, suma
0, expo
0
// Leer datos
Escribir (Ingresar un nmero y su base)
Leer (nro, base)
nro1
nro
Mientras( nro > 0) hacer
digito
nro Mod 10
suma
suma + digito * base ^ expo
expo
expo +1
nro
nro Div 10
Fin_mientras
Escribir (El nmero , nro1, en base 10 es , suma)
Fin
Ejemplo 14
Pseudocdigo para convertir un nmero decimal a una base que puede ser
binario u octal.
Existe varios sistemas de numeracin como:
El sistema binario utiliza los dgitos 0, 1
El sistema octal usa ocho dgitos 0, 1, 2, 3, 4, 5, 6 y 7.
El sistema hexadecimal utiliza 16 dgitos, del 0 al 9 y para los otros seis se
usan las letras A, B, C, D, E y F, que tienen valores 10, 11, 12, 13, 14 y 15,
respectivamente. Se usan indistintamente maysculas y minsculas.
En la tabla se muestran los primeros diecisiete nmeros decimales con su
respectiva equivalencia binaria, octal y hexadecimal.
Decimal
0
1
2
3
4
Binario
0000
0001
0010
0011
0100
Octal
0
1
2
3
4
Hexadecimal
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
10000
10001
5
6
7
10
11
12
13
14
15
16
17
20
21
5
6
7
8
9
A
B
C
D
E
F
10
11
nuevonro
nuevonro + coeficiente * residuo
coeficiente 10*coeficiente
nro
nro Div base
Fin_mientras
Si (base = 2) entonces
mensa
"Binario"
Fin_si
Si (base = 8) entonces
mensa
"Octal"
Fin_si
Escribir (El nmero ,nro1, en , mensa, es , nuevonro)
Fin
b) Se plantea una segunda solucin usando cadenas, permitiendo concatenar
cada digito del nmero.
Concatenar significa unir, enlazar elementos de texto en uno solo.
digito = nro Mod base
12 Mod 2 = 0
6 Mod 2 = 0
3 Mod 2 = 1
1 Mod 2 = 1
Concatenar ( unir)
cadena = digito + cadena
0+=0
0 + 0 = 00
1 + 00 = 100
1 + 100 = 1100
El resultado es 1100.
Variables a utilizar en el pseudocdigo
residuo
residuo de nro y base
base
base que puede se binario u octal
nro
nmero al cual vamos a convertir a otra base
nro1
variable auxiliar donde guardamos nro
mensa
guardamos el texto correspondiente, si el nmero es
binario u octal
nuevonro
nmero convertido a otra base
Inicio
// Definir e inicializar variables
entero: nro,nro1,base,residuo
cadena: nuevonro , mensa
// Lectura de datos
Escribir (Ingrese numero en base decimal:)
Leer (nro)
Escribir (Ingrese base:)
Leer (base)
nro1 nro
Mientras (nro >0) hacer residuo
nro Mod base nuevonro
residuo + nuevonro nro
nro
Div base
Fin_mientras
Si (base = 2) entonces
mensa
Binario
Fin_si
Si (base = 8) entonces
mensa
Octal
Fin_si
// Lectura de datos
Escribir (Ingresar nmero en base dcimal: )
Leer (nro)
Escribir (Ingresar base: )
Leer (base)
nro1
nro
Mientras (nro > 0) hacer
residuo
nro Mod base
Si (residuo <= 9) entonces
nuevonro
residuo + nuevonro
Fin_si
Si (residuo <= 10) entonces
nuevonro
a + nuevonro
Fin_si
Si (residuo <= 11) entonces
nuevonro
b + nuevonro
Fin_si
Si (residuo <= 12) entonces
nuevonro
c + nuevonro
Fin_si
Si (residuo <= 13) entonces
nuevonro
c + nuevonro
Fin_si
Si (residuo <= 14) entonces
nuevonro
d + nuevonro
Fin_si
Si (residuo <=15 ) entonces
nuevonro
f + nuevonro
Fin_si
Si (base = 2) entonces
Fin
mensa
Binario
Fin_si
Si (base = 8) entonces
mensa
Octal
Fin_si
Si (base = 16) entonces
mensa
Hexadecimal
Fin_si
nro
nro Div base
Fin_mientras
Escribir (nro1, en base , mensa, es , nuevonro)
Ejemplo 15
Pseudocdigo que imprime los 10 primeros trminos de la serie:
1, 3, 5, 7, ...
Observamos que cada trmino de la serie se incrementa en 2, para lo cual
emplearemos la operacin termino
termino + 2.
Para imprimir los 10 primeros trminos se requiere de un contador que empieza
en 1 y acaba en 10, de esta manera cada vez que se obtiene un trmino el
contador se incrementa en 1 para lo cual usaremos con
con + 1.
Variables a utilizar en el pseudocdigo
con
controla la estructura repetitiva repetir - hasta_que
termino
cada uno de los trminos de la serie
Inicio
// Definir e inicializar variables
entero: termino
1, con
1
// Calcula e imprime termino
Repetir
Escribir (termino)
termino
termino + 2
con
con + 1
Resultados del
cuerpo del bucle
Expresin
lgica
con
Escribir termino
termino =
termino + 2
con =
con + 1
con = 10
Resultado
de la
Expresin
lgica
1
2
3
..
..
10
1
3
5
19
3
5
7
..
..
21
2
3
4
.
..
10
2 = 10
3 = 10
4 = 10
10 = 10
false
false
false
..
true
Ejemplo 16
Pseudocdigo que encuentra el menor nmero, de un conjunto de nmeros
positivos ingresados. El pseudocdigo termina cuando se ingresa el cero o un
nmero negativo.
Asumimos que el valor inicial del menor nmero es un nmero grande:
menor
99999, para poder iniciar la comparacin con todos los nmeros
ingresados.
Variables a utilizar en el pseudocdigo
nro
cada nmero ingresado
menor
menor nmero
Inicio
// Definir e inicializar variables
entero: nro, menor
99999
// Calcula e imprime trmino
Repetir
Escribir (Ingresar nmero)
Leer (nro)
Si (nro < menor) entonces
menor
nro
Fin_si
Hasta_que (nro <= 0)
Escribir (El menor nmero ingresado es , menor)
Fin
Ejemplo 17
Pseudocdigo que genere una secuencia de nmeros utilizando el siguiente
algoritmo:
Que empiece con cualquier nmero entero positivo.
Si es par, lo dividimos por dos, si es impar lo multiplicamos por tres y le
sumamos 1.
Repetimos el paso anterior con el nmero resultante, la secuencia se puede
repetir indefinidamente.
Por ejemplo si ingresemos el nmero 7, la secuencia generada seria:
22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1 4
2 1
Proceso
7 es impar, entonces 7 * 3 + 1 = 22
22 es par, entonces 22 / 2 = 11
11 es impar, entonces 11 * 3 + 1 =34
34 es par, entonces 34 / 2 = 17
17 es impar, entonces 17 * 3 + 1 = 52
52 es par, entonces 52 / 2 = 26
26 es par, entonces 26 / 2 = 13
13 es impar, entonces 13 * 3 + 1 = 40
40 es par, entonces 40 / 2 = 10
10 es par, entonces 10 / 2 = 5
5 es impar, entonces 5 * 3 + 1 = 16
16 es par, entonces 16 / 2 = 8
8 es par, entonces 8 / 2 = 4
4 es par, entonces 4 / 2 = 2
2 es par, entonces 2 / 2 = 1
nro
nro
nro Div 2
3 * nro + 1
Fin
consumo
consumo desc
Escribir (El monto final del consumo es , consumo)
total
total + consumo
con
con +1
Hasta_que (con = n)
Escribir (El total que recauda el restaurante es , total)
Ejemplo 20
Pseudocdigo que calcula la compra de N productos de diferentes precios, dicha
compra se realiza hasta que el cliente ya no desea seguir comprando. Mostrar el
monto total que paga el cliente.
Variables a utilizar en el pseudocdigo
cant
cantidad de productos
precio
precio del producto
subTot
monto del subtotal
total
monto total
resp
respuesta
Inicio
// Definir e inicializar variables
entero: cant
real: precio, subTot, total
0
caracter: resp
// Clculo
Repetir
Escribir (Ingresar precio del producto)
Leer (precio)
Escribir (Ingresar cantidad de productos)
Leer (cant)
subTot
precio * cant
total
total + subTot
Escribir (Desea seguir comprando (S/N)?)
Leer (resp)
Hasta_que(resp = N)
Escribir (El total a pagar es , total)
Fin
Ejemplo 21
Pseudocdigo que calcula el monto total que se paga por una entrada a un
evento cultural, los precios varan de acuerdo al tipo de entrada:
Tipo
Vip
Platea
Popular
Precio (S/.)
70.00
50.00
30.00
Adems el precio tiene un incremento del 12% por impuesto. Validar el ingreso
de datos.
Variables a utilizar en el pseudocdigo
tipo
tipo de entrada
precio
precio del producto
inc
incremento
Inicio
Fin
// Definir variables
real: precio, inc
caracter: tipo
// Clculo
Repetir
Escribir (Ingresar tipo de entrada (V)ip, (P)latea, Popu(L)ar)
Leer (tipo)
Si (tipo <> V and tipo <> P and tipo <> L)
Escribir (Tipo no existe)
Fin_si
Hasta_que (tipo = V or tipo = P or tipo = L)
Segn sea (tipo)
V: precio
70.00
P: precio
50.00
L: precio
30.00
Fin_segn
inc
precio * 0.12
precio
precio + inc
Escribir (El precio final a pagar es , precio)
Ejemplo 22
Un entrenador le ha propuesto a un atleta recorrer una ruta de cinco kilmetros
durante 10 das, para determinar si es apto para competir. Para que el atleta
sea considerado apto debe cumplir por lo menos una de las siguientes
condiciones:
Que en ninguna de las pruebas haga un tiempo mayor a 16 minutos.
Que su promedio de tiempos sea menor o igual a 15 minutos.
Variables a utilizar en el pseudocdigo
tpo
tiempo en minutos
ct
cantidad de dias que recorre en mas de 16 minutos
suma
suma de tiempos
con
contador
prom
promedio de tiempos
Inicio
// Definir e inicializar variables
entero: tpo, ct
0, suma
0, con
0 real: prom
// Clculo
Repetir
Escribir (Ingresar tiempo en minutos)
Leer (tpo)
Si (tpo > 16) entonces
ct
ct + 1
Fin_si
suma
suma + tpo
con
con + 1
Hasta_que (con = 10)
prom
suma / 10
Si ((ct = 0) or (prom <= 15))
Escribir (Si es apto para competir)
Sino
Escribir (No es apto para competir)
Fin_si
Fin
Ejemplo 23
Se ingresan los resultados de la evaluacin de un cierto nmero de alumnos del
curso de Programacin; por cada alumno se informa: su asistencia (1 =
presente; 0 = ausente) y su calificacin. A partir de esta informacin se debe
calcular:
La cantidad y el porcentaje de alumnos presentes.
Promedio de calificaciones de alumnos presentes.
Si un alumno esta ausente no se registra su calificacin. El pseudocdigo
termina cuando se ingresa como asistencia un valor diferente a 1 0.
Variables a utilizar en el pseudocdigo
asis
asistencia del alumno
calf
calificacin
suma
suma de calificaciones de los alumnos presentes
cap
cantidad de alumnos presentes
caa
cantidad de alumnos ausentes
cant
cantidad de alumnos registrados
porp
porcentaje de alumnos presentes
prom
promedio de calificaciones de los alumnos presentes
Inicio
// Definir e inicializar variables
entero: asis, calf, suma
0, cap
0, caa
0, cant
0 real: porp, prom
// Clculo
Repetir
Escribir (Ingresar asistencia (1)Presente, (0)Ausente)
Leer (asis)
Si (asis = 1)
Escribir (Ingresar calificacin)
Leer (calf)
suma
suma + calf
Fin_si
Segn sea (asis) hacer
1 : cap
cap + 1
0 : caa
caa + 1
Fin_segn
cant
cant + 1
Hasta_que (asis <> 0 or asis <>1)
porp
(cap * 100) / cant
prom
suma / cap
Escribir (La cantidad de alumnos presentes es , cap)
Escribir (El porcentaje de alumnos presentes es , porp)
Escribir (El promedio de calificaciones de los alumnos presentes es , prom)
Fin
Ejemplo 24
Pseudocdigo que lee de forma consecutiva y aleatoria una serie de nmeros, y
finalice cuando se ingresa un nmero mayor que la suma de los dos nmeros
anteriores ingresados, mostrndose la cantidad de nmeros ingresados y los
tres nmeros que cumplieron la condicin.
Variables a utilizar en el pseudocdigo
nro
cada nmero ingresado
n1
primer nmero antes del nmero ingresado
n2
segundo nmero antes del nmero ingresado
con
suma
sw
contador de nmeros
suma del primer y segundo nmero antes del nmero ingresado
bandera
Inicio
// Definir e inicializar variables
entero: nro, sw
0, n1
0, n2
0, con
0, suma
// Clculo
Repetir
Escribir (Ingresar nmero)
Leer (nro)
Si (con >= 2)
suma
n1 + n2
Si (nro > suma) entonces
sw
1
Fin_si
Fin_si
Si (sw = 0) entonces
Si (con Mod 2 = 0) entonces
n1
nro
Sino
n2
nro
Fin_si
Fin_si
con
con + 1
Hasta_que (sw = 1)
Escribir (La cantidad de nmeros ingresados es , con)
Escribir (Los nmeros que cumplieron la condicion son , n1, n2, nro)
Fin
Ejemplo 25
Pseudocdigo que lee nmeros de forma consecutiva y aleatoria hasta que se
ingrese el nmero 0 (cero). Calcular la suma de todos los nmeros ingresados
antes de que aparezca el primer nmero mayor a 150, asi como la suma de
todos los nmeros que entran a continuacin de ste, hasta la aparicin del
cero.
Mostrar la cantidad de nmeros ingresados (sin contar el cero ni el primer
nmero mayor de 150), en la primera y la segunda suma.
Contemplar la posibilidad de que entre antes el 0 que el primer nmero mayor
de 150.
Variables a utilizar en el pseudocdigo
nro
cada nmero ingresado
suma1
primera suma
suma2
segunda suma
con
contador de nmeros
sw
bandera
Inicio
// Definir e inicializar variables
entero: nro, sw
0, suma1
0, suma2
// Clculo
Repetir
Escribir (Ingresar nmero)
Leer (nro)
Si (nro <> 0) entonces
con
con + 1
0, con
Fin
Fin_si
Si (sw = 1) entonces
suma2
suma2 + nro
Fin_si
Si ((nro < 150) and (sw = 0)) entonces
suma1
suma1 + nro
Sino
sw = 1
con
con - 1
Fin_si
Hasta_que (nro = 0)
Escribir (La cantidad de nmeros ingresados es , con)
Escribir (La primera suma es , suma1)
Escribir (La segunda suma es , suma2)
Ejemplo 26
Suponga que se piden X soles prestados a un banco, con el acuerdo de devolver
Y soles cada mes hasta devolver el prstamo completo. Parte del pago mensual
sern los intereses calculados como el i por ciento del capital por devolver en
ese momento. El resto del pago mensual se aplica a reducir el capital a
devolver. El algoritmo debe determinar:
La cantidad de intereses que se paga cada mes.
La cantidad de dinero aplicada cada mes al capital por devolver.
La cantidad acumulada de intereses.
La cantidad del prstamo an pendiente al final de cada mes.
La cantidad probable que se devuelve en el ltimo pago.
Por ejemplo, si se pide prestado S/.1000.00 prestados a un banco a un interes
del 15% se tiene:
Nro
Amortizacin
Inters
1
2
3
4
5
6
7
8
9
10
50.00
57.50
66.125
76.0438
87.4503
100.568
115.653
133.001
152.951
160.708
1000.00
150.00
142.50
133.875
123.956
112.55
99.4321
84.347
66.999
47.0489
24.1062
Interes
Acumulado
150.00
292.50
426.375
550.331
662.881
762.3131
846.6601
913.6591
960.708
984.8142
Prstamo
Pendiente
950.00
892.50
826.375
750.3312
662.8809
562.3129
446.6599
313.6589
160.7079
0
Couta
(Y)
200
200
200
200
200
200
200
200
200
200
Para realizar el ejercicio planteado se definen las variables enteras n, nro, cuad,
cubo y se define e inicializa en cero las variables sumaCuad, sumaCubo:
entero: n, nro, cuad, cubo, sumaCuad
0, sumaCubo
0
Se ingresa la cantidad de nmeros que se desea sumar mediante la variable n:
Escribir (Ingresar cantidad de nmeros naturales)
Leer (n)
Enseguida se ejecuta la sentencia Desde, en el que se asigna a la variable nro el
valor de 1 y se evala la expresin lgica (nro<=n), si es verdadera se ejecuta
las cuatro sentencias que tiene esta estructura, luego se incrementa en una
unidad el valor de la variable nro, en ese momento la sentencia Desde vuelve a
verificar la expresin logica (nro<=n) si es verdadero continua el bucle:
Desde (nro
1) hasta (nro <= n) con incremento 1 Hacer
cuad
nro * nro
sumaCuad
sumaCuad + cuad
cubo
nro * nro * nro
sumaCubo
sumaCubo + cubo
Fin_desde
Cuando la expresin lgica (nro<=n) llega a ser falso el bucle termina y se
ejecuta la sentencia escribir y finaliza el pseudocdigo:
Escribir(La suma de los cuadrados es , sumaCuad)
Escribir(La suma de los cubos es , sumaCubo)
Ejemplo 28
Pseudocdigo que calcula el numero PI, de acuerdo a la siguiente frmula:
PI/4 = 1 - 1/3 + 1/5 - 1/7 + ...
El nmero de trminos debe ser ingresado.
Variables a utilizar en el pseudocdigo
n
cantidad de nmeros
num
numerador
den
denminador
con
contador
suma
suma
pi
valor de PI
Inicio
// Definir e inicializar variables
entero : n, con
real : pi, suma
0, num
1, den
1
// Leer dato
Escribir (Ingresar cantidad de trminos)
Leer (n)
Desde (con
1) hasta (con <= n) con incremento 1 Hacer
suma
suma + (num / den)
num
num * -1
den
den + 2
Fin_desde
pi
suma * 4
Escribir (El valor de PI es , pi)
Fin
Ejemplo 29
ejemplo:
= 1
= 1*2=2
= 1*2*3=6
= 1 * 2 * 3 * 4 = 24
= 3 ! * 4 = 24
fact * i
Expresin
lgica
i<=5
1<= 5
2<= 5
3 <=5
4 <=5
5<= 5
6<= 5
Valor de la
Expresin
lgica
true
true
true
true
true
false
Resultados
del cuerpo
Incremento
del bucle
i=i+1
fact = fact * i
1
2
2
3
6
4
24
5
120
6
Finaliza la sentencia desde
Ejemplo 31
Pseudocdigo que obtenga el cuadrado de un nmero entero utilizando
formula:
2
n = 1 + 3 + 5 + . . . + 2n-1.
la
2*11=1
2*2-1=3
2*31=5
0+1
1+3
4+5
Inicio
// Definir e inicializar variables
entero: a, b, nro, suma 0, con
0
real: prom
// Leer Datos
Escribir (Ingresar lmites:)
Leer (a, b)
Si (a > b) entonces
n1
a
n2
b
Sino
n1
b
n2
a
Fin_si
Desde (nro
n1) hasta (nro <= n2) con incremento 1 hacer
Si (nro Mod 2 = 0) entonces
Escribir (nro)
suma
suma + nro
con
con +1
Fin_si
Fin-desde
prom
suma / con
Escribir (El promedio es , prom)
Fin
Ejemplo 34
Pseudocdigo que lee dos nmeros, el primero representa el nmero a ser
transformado, y el segundo el transformador, se debe hacer girar hacia la
derecha el nmero a transformarse, tantas veces lo indique el transformador, e
ir desplegando el nmero despus de cada transformacin.
Ejemplo: Primer nmero: 35241, Segundo nmero: 4
Girado a la derecha se tiene
Nmero de giros
1
2
3
4
Transformaciones
13524
41352
24135
52413
Fin
cd
cd + 1
aux
aux Div 10
Fin_mientras
cd
cd - 1
Desde (con
0) hasta (con < n2) con incremento 1 Hacer
dig
n1 Mod 10
n1
n1 Div 10
dig
dig * 10 ^ cd
n1
dig + n1
Fin_desde
Escribir(El nmero transformado es , n1)
Ejemplo 35
Pseudocdigo para averiguar si un nmero ingresado es primo. Un nmero es
primo, si solo tiene como divisores al mismo nmero y a la unidad.
Variables a utilizar en el pseudocdigo
d
posibles divisores del nmero ingresado
con
contador de divisores del nmero
nro
numero ingresado
Inicio
// Declarar e inicializar variables
entero: nro, d, con
0
// Leer Datos
Escribir (Ingresar nmero:)
Leer (nro)
Desde (d
1) hasta (d <= nro) con incremento 1 hacer
Si (nro Mod d = 0) entonces
con
con + 1
Fin_si
Fin-desde
Si (con <= 2)
Escribir (El nmero es primo)
Sino
Escribir (El nmero no es primo)
Fin_si
Fin
Ejemplo 36
Una empresa almacena los datos de N empleados, para esto, en un proceso
repetitivo se ingresa el sexo (masculino, femenino) y el salario de cada
empleado. Se pide calcular:
a) El mayor y el menor salario
b) El promedio de salarios.
c) La cantidad de mujeres y varones que trabajan en esa empresa
Variables a utilizar en el pseudocdigo
n
cantidad de empleados
sexo
sexo del empleado
sal
salario
mayor
mayor salario
menor
menor salario
suma
suma de salarios
conVar
contador de empleados varones
conMuj
contador de empleadas mujeres
prom
con
promedio de salarios
contador de empleados
Inicio
// Definir e inicializar variables
entero: n, con, conVar
0, conMuj
0
real: sal, mayor
0, menor
99999, suma
0,
prom caracter: sexo
// Leer dato
Escribir (Ingresar cantidad de empleados)
Leer (n)
Desde (con
1) hasta (con <= n) con incremento 1 Hacer
Escribir (Ingresar sexo)
Leer (sexo)
Escribir (Ingresar salario)
Leer (sal)
Si (sal > mayor) entonces
mayor
sal
Fin_si
Si (sal < menor) entonces
menor
sal
Fin_si
suma
suma + sal
Segn sea (sexo) hacer
M : conVar
conVar + 1
F : conMuj
conMuj + 1
Fin_segn
Fin_desde
prom
suma / n
Escribir (El mayor salario es , mayor)
Escribir (El menor salario es , menor)
Escribir (El promedio de salarios es , prom)
Escribir (La cantidad de varones que trabajan en la empresa es , conVar)
Escribir (La cantidad de mujeres que trabajan en la empresa es , conMuj)
Fin
Ejemplo 37
Pseudocdigo que indica mediante un mensaje si dos nmeros son amigos o no.
Se dice que dos nmeros son amigos si la suma de los divisores del primer
nmero (excepto l mismo) coincide con el segundo nmero y viceversa.
Por ejemplo 220 y 284 son amigos, porque:
La suma de los divisores de 220 es:
1 + 2 + 4 + 5 + 10 + 11 + 20 + 22 + 44 + 55 + 110 = 284
Y la suma de los divisores de 284 es:
1 + 2 + 4 + 71 + 142 = 220
Variables a utilizar en el pseudocdigo
nro1
primer nmero ingresado
nro2
segundo nmero ingresado
d
posibles divisores de los nmeros ingresados sin incluir el
mismo nmero
suma1
suma de los divisores del primer nmero ingresado
suma2
suma de los divisores del segundo nmero ingresado
Inicio
// Definir e inicializar variables
entero: nro1, nro2, d, suma1
0, suma2
0
// Leer Datos
Escribir (Ingresar primer nmero:)
Leer (nro1)
Escribir (Ingresar segundo nmero:)
Leer (nro2)
Desde (d
1) hasta (d <= (nro1 Div 2)) con incremento 1 hacer
Si (nro1 Mod d = 0) entonces
suma1
suma1 + d
Fin_si
Fin-desde
Desde (d
1) hasta (d <= (nro2 Div 2)) con incremento 1 hacer
Si (nro2 Mod d = 0) entonces
suma2
suma2 + d
Fin_si
Fin-desde
Si (suma1 = nro2 and suma2 = nro1)
Escribir (Los nmeros , nro1, y , nro2, son amigos)
Sino
Escribir (Los nmeros , nro1, y , nro2, no son amigos)
Fin_si
Fin
Ejemplo 38
Se ha seleccionado n nmeros de personas para realizar una encuesta, en un
proceso repetitivo se ingresa el grado de instruccin y la edad de cada persona.
Se desea saber el promedio de edades, la mayor edad y el porcentaje de
personas con instruccin Primaria, Secundaria y Superior (P, S, R).
Variables a utilizar en el pseudocdigo
n
cantidad de personas encuestadas
edad
edad de cada persona
grad
grado de instruccin de cada persona
suma
suma de edades
prom
promedio de edades
mayor
mayor edad
conp
cantidad de personas con instruccin primaria
cons
cantidad de personas con instruccin secundaria
conr
cantidad de personas con instruccin superior
p1
porcentaje de personas con instrcuccin primaria
p2
porcentaje de personas con instrcuccin secundaria
p3
porcentaje de personas con instrcuccin superior
con
contador
Inicio
// Definir e inicializar variables
entero: n, con, edad, suma
0, mayor
0, conp
0, cons
0, conr
0 real: prom, p1, p2, p3
caracter: grad
// Leer Datos
Escribir (Ingresar cantidad de personas:)
Leer (n)
Desde (con
1) hasta (con <= n) con incremento 1 hacer
Escribir (Ingrese grado de instruccin (P)rimaria, (S)ecunadaria, supe(R)ior:)
Leer (grad)
Fin
2 * 12 = 24
Observamos que en la tabla del 1, el primer nmero aparece fijo mientras
que el segundo nmero varia de 1 a 12, incrementndose cada nmero en
1, lo mismo sucede en la tabla del 2.
Para calcular el producto emplearemos la operacin:
m=i*j
Tenemos bucles anidados donde el bucle externo vara de 1 a 2, y el bucle
interno de 1 a 12
Variables a utilizar en el pseudocdigo
i
controla el bucle externo
j
controla el bucle interno
m
producto de los nmeros i, j
Inicio
//Definir variables
entero: i, j, m
Desde (i
1) hasta (i <= 2) con incremento 1 Hacer
Escribir (Tabla de multiplicar del , i)
Desde (j
1) hasta (j <= 12) con incremento 1 Hacer
m
i*j
Escribir (i , * , j, = , m )
Fin_desde
Fin-desde
Fin
Ejemplo 40
Un centro de estudios desea saber cul ha sido el promedio ms alto, de un
conjunto de 120 alumnos, sabiendo que cada alumno a llevado 5
asignaturas.
Variables a utilizar en el pseudocdigo
nota
nota de cada una de las 5 asignaturas
suma
suma de las 5 notas
prom
promedio de cada alumno
mayor
mayor promedio
con1
contador, que cuenta cada alumno
con2
contador, que cuenta cada nota
Inicio
// Definir e inicializar variables
entero: nota, suma
0, prom, mayor
0, con1
1, con2
// Calculo
Mientras (con1 <= 120) Hacer
Mientras (con2 <= 5) Hacer
Escribir (Ingresar nota de asignatura, con, :)
Leer (nota)
suma
suma + nota
Fin_mientras
prom
suma / 5
Si (prom > mayor) entonces
mayor
prom
Fin_si
Fin_mientras
Escribir (El mayor promedio es: , mayor)
Fin
Ejemplo 41
Pesudocdigo que reduce una fraccin a su mnima expresin.
Por ejemplo:
Si se ingresa 36 / 48
num
36
18
9
3
den
48
24
12
4
2
2
3
En su mnima expresin es 3 / 4
Variables a utilizar en el pseudocdigo
num
numerador
den
denominador
d
divisor
Inicio
// Definir e inicializar variables
entero: num, den, d
2
// Leer Datos
Escribir (Ingresar fraccin:)
Leer (num, den)
// Calcula serie y multiplica
Mientras ((d < num) and (d < den)) Hacer
Mientras ((num mod d = 0) and (den mod d = 0)) Hacer
num
num Div d
den
den Div d
Fin_mientras
d
d+1
Fin_mientras
Escribir (La fraccin en su mnima expresin es: , num, /, den)
Fin
Ejemplo 42
Pseudocdigo que lea N notas de un estudiante y calcule su promedio,
sabiendo que se elimina la nota mas baja. Se debe validar el ingreso de
notas, que debe estar comprendido entre 0 y 20.
Variables a utilizar en el pseudocdigo
n
cantidad de notas
nota
nota
suma
suma de notas
menor
nota mas baja
prom
promedio
con
contador
Inicio
// Definir e inicializar variables
entero: n, con, nota, menor
21
real: suma
0, prom
Escribir (Ingresar cantidad de notas)
Leer (n)
// Calculo
con
1
Fin
Ejemplo 44
Pseudocdigo para buscar el nmero del tarot de una persona; para hallar el
nmero del tarot, se tiene que sumar cada uno de los nmeros de la fecha
de nacimiento de una persona y a continuacin reducirlos hasta obtener un
solo dgito.
Por ejemplo, para una fecha: 17/10/1970, se realiza:
17 + 10+ 1970 = 1997
1 + 9 + 9 + 7 = 26
2+6=8
17 + 10 + 1970 = 1997
Fin
entero: d, m, a, nro
0, digito, tarot
0
// Leer datos
Escribir (Ingresar fecha)
Leer (d, m, a)
nro
d+m+a
Mientras (nro >9) Hacer
tarot
0
Mientras (nro > 0) Hacer
digito
nro Mod 10
tarot
tarot + digito
nro
nro Div 10
Fin_mientras
nro
tarot
Fin_mientras
Escribir (El nmero del tarot es , tarot)
Ejemplo 45
Pseudocdigo para hallar los nmeros primos en un rango dado, un nmero
es primo si es divisible por si mismo y por la unidad. Algunos nmeros
primos son:
1
11
13
Fin
Desde (k
1) hasta (k <= nro) con incremento 1 hacer
Si (nro Mod k = 0) entonces
p
p+1
Fin_si
Fin_desde
Si (p <= 2 ) entonces
Escribir (nro)
Fin_si
Fin_desde
Ejemplo 46
Pseudocdigo que solicite un valor no negativo (si se ingresa un valor
negativo volver a pedir el nmero hasta que se ingrese un nmero
positivo), una vez ingresado el nmero mostrar los nmeros naturales desde
el 1 hasta el nmero ingresado de forma consecutiva de manera que se vaya
mostrando un nmero menos hasta que se muestre solo la unidad.
Por ejemplo, si se ingreso n=6, se mostrar:
123456
12345
1234
123
12
1
Variables a utilizar en el pseudocdigo
nro
nmero ingresado
aux
guarda el valor original del nmero ingresado
con
contador de lneas de impresin
n
cada nmero impreso
Inicio
// Definir variables
entero: nro, aux, con, n
// Leer Datos
Repetir
Escribir (Ingresar nmero:)
Leer (nro)
Hasta_que (nro>0)
aux
nro
Desde (con
1) hasta (con <= aux) con incremento 1 hacer
Desde (n
1) hasta (n <= nro) con incremento 1 hacer
Escribir (n)
Fin_desde
nro
nro -1
Fin-desde
Fin
Ejemplo 47
Pseudocdigo que permita ingresar nmeros enteros, y calcule el factorial de
cada nmero ingresado. El algoritmo termina cuando se ingresa un nmero
negativo.
Variables a utilizar en el pseudocdigo
nro
nmero ingresado
fact
factorial
con
contador
Inicio
// Definir variables
entero: nro, fact, con
// Leer Datos
Repetir
Escribir (Ingresar nmero:)
Leer (nro)
fact
1
Si (nro >= 0) entonces
Desde (con
1) hasta (con <= nro) con incremento 1 hacer
fact
fact * con
Fin_desde
Escribir (El factorial de , nro, es , fact)
Fin_si
Hasta_que (nro < 0)
Fin
Ejemplo 48
Se desea calcular los sueldos semanales de N obreros; durante los 5 das de
la semana se registran la cantidad de horas diarias y el turno en el que
trabaj el obrero. Un obrero puede alternar su trabajo en cualquiera de los
dos turnos. La tarifa de cada hora trabajada para el turno maana es de
S/23.00 y para el turno tarde S/25.40. Adems, si un obrero trabaj durante
una semana ms de 40 horas, se le pagar S/.12.00 por cada hora adicional
a las 40.
Variables a utilizar en el pseudocdigo
n
cantidad de obreros
hor
horas trabajadas
dia
cada dia de la semana
totHor
total de horas que trabaja un obrero durante una semana
con
contador de obreros
tur
turno en el que trabaja un obrero
pagoDia
pago del da
pagoSem
pago de la semana
pagoExtra
pago extra
Inicio
// Definir e inicializar variables
entero: n, hor, dia, con
0, totHor
caracter: tur
real: pagoDia, pagoSem, pagoExtra
// Leer Datos
Escribir (Ingresar cantidad de obreros:)
Leer (n)
Repetir
pagoSem
0
totHor
0
Desde (dia
1) hasta (dia <= 5) con incremento 1 hacer
Escribir (Ingresar turno (M)aana, (T)arde)
Leer (tur)
Escribir (Ingresar cantidad de horas trabajadas)
Leer (hor)
Segn sea (tur) hacer
M: pagoDia
hor * 23.00
T : pagoDia
hor * 25.40
Fin_segn
pagoSem
pagoSem + pagoDia
totHor
totHor + hor
Fin_desde
Si (totHor >40) entonces
pagoExtra
(hor 40) * 12.00
Fin_si
pagoSem
pagoSem + pagoExtra
Escribir (El pago semanal es , pagoSem)
con
con + 1
Hasta_que (con = n)
Fin
4.5.2. Bucles infinitos
Son bucles que nunca terminan (no tienen fin). Pueden implementarse
fcilmente utilizando las sentencias Mientras o Repetir Hasta_que.
Generalmente son condiciones no deseadas y el programador las utiliza
segn su criterio, colocando en su interior una instruccin que fuerza la
terminacin del bucle, para nuestro caso se utiliza la palabra Salir (break).
Para este caso, reemplazamos en la expresin_lgica por verdadero (true)
Mientras (verdadero) Hacer
instrucciones
Si (condicin) entonces
Accin
Salir //termina el bucle infinito
Fin_si
Accin
Fin_Mientras
Repetir
instrucciones
Si (condicin) entonces
Accin
Salir //termina el bucle infinito
Fin_si
Accin
Hasta_que (verdadero)
Ejemplo 49
Pseudocdigo que genera una secuencia de nmeros utilizando el siguiente
algoritmo:
Empezamos por cualquier nmero entero positivo
Si es par, Lo dividimos por dos, si es impar lo multiplicamos por tres y le
sumamos 1
Repetimos el segundo paso con el nmero resultante, la secuencia se
puede repetir indefinidamente, detenerlo hasta que aparezca el primer
nmero 1
Por ejemplo si ingresemos el nmero 20, la secuencia generada seria:
10 5 16 8 4 2 1 4 2 1.
Observar que la serie comienza a repetir la serie 4 2 1 indefinidamente, el
algoritmo debe de leer el nmero inicial, imprimir el nmero de valores
encontrados hasta la aparicin de un valor 1 en la secuencia.
Variables a utilizar en el pseudocdigo
nro
cada nmero de la serie
Inicio
// Definir variable
entero: nro
Fin
// Leer Datos
Escribir (Ingresar nmero que inicia la serie:)
Leer (nro)
Mientras (verdadero) hacer
// bucle infinito
Si (nro Mod 2 = 0)
nro
nro / 2
Sino
nro
3*nro + 1
Fin_si
Escribir (nro)
Si (nro = 1) entonces
// cuando nro es igual a 1
Salir
// termina el bucle infinito
Fin_si
Fin_mientras
Ejemplo 50
Pseudocdigo que muestra el mensaje BUCLE INFINITO infinitas veces.
Variables a utilizar en el pseudocdigo
No es necesario el uso de ninguna variable
Inicio
Mientras (verdadero)
Escribir (BUCLE INFINITO)
Fin_mientras
Fin
Ejemplo 51
Pseudocdigo que imprima el mensaje es par o impar, en caso se ingrese un
nmero entre 3 y 13, sino est en el intervalo, imprimir el mensaje fuera de
rango.
Variables a utilizar en el pseudocdigo
nro
nmero que se evala como par o impar
Inicio
// Definir e inicializar variable
lgico: r
falso
Repetir
Escribir (Ingresar nmero)
Leer (nro)
Si (nro >= 3 and nro <= 13) entonces
Si ( nro Mod 2 = 0 ) entonces
Escribir (Es par)
// es par
Sino
Escribir (Es impar) // es impar
Fin_si
r
verdadero
// r se hace verdadero para que
// salga del bucle infinito
Sino
Escribir (No esta entre 3 y 13)
r
falso
// r se hace falso para que siga en
el bucle infinito
Fin_si
Hasta_que (r)
Fin
4.6.Ejercicios propuestos
1. Determinar el factorial de los N primero nmeros pares
Nmero Factorial
2
2
4
24
6
720
8
40320
2. Escribir un pseudocdigo muestre todos los nmeros de tres cifras tales que
la suma de los cuadrados de sus dgitos sea igual al cociente de la divisin
entera del nmero entre 3.
3. Los nmeros amigos son aquellos en los que la suma de los divisores de uno
es el otro.
220 = 1+2+4+5+10+11+20+22+44+55+110 = 284
284 = 1+2+4+71+142 = 220
Este par de nmeros amigos era conocido por los griegos (220, 284). El
siguiente par de nmeros amigos fue descubierto en el siglo XIII y
redescubierto por Fermat en 1636 (los nmeros 17296 y 18416). Descartes
descubri el siguiente par: 9363584 y 9437056. Todos estos grandes
matemticos se saltaron el par 1184-1210 que fue descubierto por un nio
italiano de 16 aos Niccol Paganini. Elaborar un pseudocdigo que
encuentre todos estos nmeros amigos.
4. El horscopo de la alquimia, basado en la numerologa y las
correspondencias planetarias, te permitir conocer qu poderosas energas,
llegadas del cielo en forma de metales, rigen tu vida. Las civilizaciones
antiguas consideraban los metales como la carne de los dioses, y eran
conscientes de sus poderes mgicos.
Crearon el horscopo de los metales, gracias al cul no slo conocers qu
metal te corresponde por tu fecha de nacimiento, sino tambin el que te rige
cada ao. Ponerte joyas con el metal que te pertenezca o llevarlo
simplemente en el bolsillo aumentar los dones que te concede ste y te
aportar proteccin y suerte.
Elaborar un pseudocdigo que averige a qu metal pertenece una persona,
para esto sume los nmeros de tu fecha de nacimiento y a continuacin
reducirlos a un slo dgito. Una vez que tengas el nmero busca en la tabla
siguiente el metal correspondiente.
Por ejemplo, alguien nacido el 12 de marzo de 1973 estara bajo la
influencia de:
Metal de nacimiento: 1+2+3+1+9+7+3= 26 (2+6) = 8= Nquel
Nmero
Metal
Virtudes
1
Plata
Seductores y volubles
2
Hierro
Dinmicos y combativos
3
Mercurio
Locuaces y simpticos
4
Zinc
Impulsivos y serviciales
5
Estao
Inconstantes y sociables
6
Plomo
Pesimistas y tmidos
7
Platino
Intelectuales y apasionados
8
Niquel
Vagabundos y poetas
9
Oro
Altruistas y encantadores
0
Cobre
Afectuosos y detallistas
Slo en el caso de que la suma resultante sea 10, 20, 30, 40, 50, 60, 70, 80
90, no se reducir y se tomar el 0 como nmero y el Cobre como metal
correspondiente.
5 X 9 = 45
15. Un almacn se encuentra de aniversario y ha programado una serie de
ofertas con la finalidad de brindar facilidades a sus clientes y al a vez de
incrementar sus ventas. Estas ofertas se basan especficamente en un