Programación estructurada - …files.clusterportable.webnode.es/200000042-b8ae3b9a8c/parte...
-
Upload
hoanghuong -
Category
Documents
-
view
228 -
download
0
Transcript of Programación estructurada - …files.clusterportable.webnode.es/200000042-b8ae3b9a8c/parte...
Programación estructurada
1. Definición
La programación estructurada es un conjunto de técnicas utilizadas para escribir
programas de forma clara. La programación estructurada se basa en el diseño descendente, esto es, se
plantea una operación como un todo y se divide en segmentos más 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 programación estructurada logra minimizar la complejidad y errores de los
programas.
La principal desventaja de la programación estructurada, es que en el momento de
hacerse demasiado grande puede resultar bastante problemático 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 acción) que se ejecutan una a continuación 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
Acción1
Acción2
.
.
.
AcciónN
Fin
inicio
Accion1
Accion2
.
.
. AccionN
Fin
2.1. Ejercicios resueltos Ejemplo 01 Pseudocódigo para sumar dos números.
Lectura de datos Impresión de datos
nro1, nro2 suma nro1 + nro2 suma
Variables a utilizar en el pseudocódigo
nro1 primer número nro2 segundo número
suma suma dos números
Inicio
// Definir variables
entero: nro1, nro2, suma
// Lectura de datos
Escribir (“Ingresar dos valores”)
Leer (nro1, nro2)
// Calcular suma suma nro1 + nro2
Escribir (“La suma de ambos números es: ” , suma)
Fin Explicación
Los Pseudocódigos están delimitados por las palabras: Inicio y Fin.
Los comentarios son mensajes de texto opcionales que se utiliza para
documentar un programa haciéndolo fácilmente entendibles a los lectores.
Empieza con los caracteres “//” seguido a continuación del comentario deseado.
En nuestro ejemplo se ha utilizado:
// Definir e inicializar variables
// Lectura de datos
// Calcular suma
Se definen todas las variables que se van a utilizar en el desarrollo del
algoritmo. En nuestro ejemplo:
entero: nro1, nro2, suma
Aqui se define el tipo de dato de las variables y a continuación la lista de
variables separadas por comas.
Se utiliza la palabra Leer para introducir el valor de una variable a través del
teclado o algún otro medio. En nuestro ejemplo:
Leer (nro1, nro2)
Se asigna un valor a una variable, a través del símbolo flecha ( ) que dice que
el valor a la derecha tiene que ser asignado a la variable que esta a la izquierda. En nuestro ejemplo:
suma nro1 + nro2
Se suman los números nro1 y nro2 utilizando el operador “+”. Luego este resultado es asignado a la variable suma.
Se usa la palabra Escribir para identificar una salida estándar a través del
monitor o consola. En nuestro ejemplo:
Escribir (“La suma de ambos números es: ”, suma)
De esta forma, se muestra en la pantalla el siguiente texto: La suma de ambos
números es: … , en este caso el operador “,” une el texto La suma de ambos
números es: con el contenido de la variable suma. Ejemplo 02
Pseudocódigo para calcular el área de un rectángulo, donde la base y la altura serán ingresados. La fórmula es:
Lectura de datos
base, altura
area = base * altura
area base * altura
Impresión de datos
area
Variables a utilizar en el pseudocódigo
base base del rectángulo
altura altura del rectángulo
area área del rectángulo
Inicio
// Definir variables
entero: base, altura, area
// Lectura de datos
Escribir (“Ingrese la base y la altura”) Leer (base, altura)
// Proceso: calculo del area
area base * altura
// Salida de resultados
Escribir (“El área del rectángulo es ”,area)
Fin Ejemplo 03
Pseudocódigo para determinar la suma de las cifras de un número entero positivo
de 3 cifras.
Por ejemplo para sumar las cifras del número 257 se tiene:
2 + 5 + 7 = 14
Para obtener cada cifra del número será necesario realizar divisiones sucesivas entre 10.
Lectura de datos
Impresión de datos
nro
unidades nro Mod 10
nro nro Div 10
decenas nro Mod 10
nro nro Div 10
centenas nro Mod 10
suma unidades + decenas + centenas
suma
Variables a utilizar en el pseudocódigo
nro número ingresado de tres dígitos
suma suma de los dígitos del número
unidades unidades del número
decenas decenas del número
centenas centenas del número
Inicio
// Definir e inicializar variables
entero: nro, unidades, decenas, centenas, suma 0
// Lectura de datos
Leer (nro)
// Proceso de cálculo
unidades nro Mod 10
nro nro Div 10
decenas nro Mod 10
nro nro Div 10
centenas nro Mod 10
suma unidades + decenas + centenas
// Salida de resultados Escribir (“La suma de los dígitos es ”, suma)
Fin
Ejemplo 04
Pseudocódigo para sumar dos tiempos dados en horas, minutos y segundos.
Por ejemplo:
Tiempo 1 = 8:15:56
Tiempo 2 = 10:58:43
1 1
8 : 15 : 56
10 : 58 : 43
19 74 60 99 60
60 1 60 1
19 : 14 : 39
Para el desarrollo del pseudocódigo se suman los segundos de los dos tiempos, el
resultado de esta suma se divide entre 60, siendo el residuo de esta división 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 división el total de minutos y el cociente se suma a las horas. Lectura de datos Impresión de datos
hor1, min1, seg1 hor2, min2, seg2
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
hor, min, seg
Variables a utilizar en el pseudocódigo
hor1 horas del primer tiempo
min1 minutos del primer tiempo
seg1 segundos del primer tiempo
hor2 horas del segundo tiempo min2 minutos del segundo tiempo
seg2 segundos del segundo tiempo
llevaMin minutos que se lleva
llevaHora hora que se lleva
hor horas resultante min minutos resultante
seg segundos resultante
Inicio
// Definir variables
entero: hor1, min1, seg1, llevaMin,hor2, min2, seg2, llevaHora, hor, min, seg
// Lectura de datos
Escribir (“Ingresar primer tiempo”)
Leer (hor1, min1, seg1)
Escribir (“Ingresar segundo tiempo”)
Leer (hor2, min2, seg2)
// Determina la cantidad total de segundos entre los dos tiempos
seg seg1 + seg2
llevaMin seg Div 60
seg seg Mod 60
min llevaMin + min1 + min2
Fin
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)
Ejemplo 05
Pseudocódigo que permita pasar de grados centígrados a grados Farenheit sabiendo que:
º F 9
º C 32 5
El siguiente cuadro muestra resultados con datos de prueba, para diferentes
valores de la variable centi.
centi faren 10 50 20 68 30 86 40 104
Lectura de datos Impresión de datos
centi faren 9/5*centi +32 faren
Variables a utilizar en el pseudocódigo
centi medida ingresada en centígrado
faren medida en farenheit
Inicio
// Definir variables
real: centi, faren
// Lectura de datos
Escribir (“Ingresar grados centígrados”)
Leer (centi) // Proceso de cálculo: conversión de temperatura
faren 9 / 5 * centi +32
// Salida de resultados
Escribir (centi, “ centígrado equivale a ”, faren, “ Farenheit“)
Fin Ejemplo 06 Pseudocodigo calcular la suma de los “n” primeros números naturales. Emplear la
fórmula:
suma n (n 1)
2
Lectura de datos Impresión de datos
nro suma nro*(nro+1)/2 suma
Variables a utilizar en el pseudocódigo
nro nro ingresado
suma suma de los nros
Inicio
// Definir variables
entero: nro, suma
// Lectura de datos
Escribir (“Ingresar cantidad de números a sumar”)
Leer (nro)
// Proceso de cálculo: Suma de los “n” nros naturales suma nro * (nro + 1) / 2
// Salida de resultados
Escribir (“La suma es ”, suma)
Fin
Factor de conversión
Es una fracción en la que el numerador y denominador son medidas iguales expresadas en unidades distintas, de tal manera, que esta fracción vale la unidad.
Método efectivo para cambio de unidades y resolución de ejercicios sencillos
dejando de utilizar la regla de tres.
Ejemplo 1: Pasar 15 pulgadas a centímetros (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 kilómetros por hora (1 kilómetro =
1000 metros, 1 hora = 3600 segundos)
25 m/s × (1 km / 1000 m ) × (3600 s / 1 h) = 90 km/h.
Ejemplo 07
Pseudocódigo para convertir una longitud dada en metros a sus equivalentes en milímetros, centímetros, pies, pulgadas y yardas. Se sabe que:
1 metro = 1000 milímetros
1 metro = 100 centímetros
1 pulgada = 2.54 centímetros
1 pie = 12 pulgadas
1 yarda = 3 pies
1 Kilómetro = 1000 metros
El siguiente cuadro muestra resultados con datos de prueba, para diferentes
valores:
Metros Milímetros Centímetros Pulgadas Pies Yardas Kilómetros
5 5000 500 196.85 16.4042 5.46807 0.005 10 10000 1000 393.701 32.8084 10.9361 0.01 20 20000 2000 787.402 65.6168 21.8723 0.02 50 50000 5000 1968.50 164.042 54.6807 0.05 70 70000 7000 2755.91 229.659 76.5529 0.07
Lectura de datos
metros
mili 1000*metros
cent metros*100
pulg cent/2.54
pies pulg/12
yarda pies/3 km m /1000
Impresión de datos
mili, cent, pulg, pies, yardas, km
Variables a utilizar en el pseudocódigo
metros medida ingresada en metros mili medida en milímetros
cent medida en centímetros
pies medida en pies
pulg medida en pulgadas
yarda medida en yardas
Inicio
// Definir variables
real: metros, mili, cent, pies, pulg, yarda, km
// Lectura de datos
Escribir (“Ingresar medida en metros”) Leer (metros)
// Proceso de cálculo: conversiones métricas
mili 1000 * metros
cent metros * 100
pulg cent / 2.54
pies pulg / 12
yarda pies / 3
km metros / 1000
// Salida de resultados
Escribir (metros, “metros equivale a ”, mili, “ milímetros ”, cent,
“Centímetros ”, pulg, “pulgadas ”, pies, “ pies ”, yarda, “ yardas ”, km,
“Kilómetros”)
Fin Ejemplo 08
Pseudocódigo para convertir pesos, dado en gramos a sus equivalentes en
miligramos, kilogramos, onza y libras. Se sabe que:
1 gramo = 1000 miligramos
1 kilogramo = 1000 gramos
1 onza = 28.35 gramos
1 libra = 16 onzas = 453.6 gramos
1 tonelada = 2000 libras El siguiente cuadro muestra resultados con datos de prueba, para diferentes
valores:
Gramos Miligramos Kilogramos Onza Libra Toneladas 500 500000 0.5 17.6367 1.10229 0.0005 300 300000 0.3 10.5822 0.66139 0.0003 600 20000 0.6 21.1644 1.32277 0.0006 700 50000 0.7 24.6918 1.54324 0.0007 900 900000 0.9 31.7466 1.98416 0.0009
Lectura de datos Impresión de datos
gramo
mili 1000*gramo
kilo gramo/1000
onza gramo/28.35
libra gramo/453.6
mili, kilo, onza, libra
Variables a utilizar en el pseudocódigo
gramo peso ingresada en gramos
mili peso en miligramos
kilo peso en kilos
onza peso en onza
libra peso en libra
tm peso en toneladas
Inicio
// Definir variables
real: gramo, mili, kilo, onza, libra, tm
// Lectura de datos
Escribir (“Ingresar peso en gramos”)
Leer (gramo)
// Proceso de cálculo: conversiones de pesos mili 1000 * gramo
kilo gramo / 1000
onza gramo / 28.35
libra gramo / 453.6
tm libra / 2000
// Salida de resultados Escribir (gramo, “gramos equivale a ”, mili, “ miligramos “, kilo, “
Kilogramos ”, onza, “ Onzas ”, libra, “ Libra ”, tm , “ toneladas ”)
Fin Ejemplo 09
Pseudocódigo para convertir velocidades dada en metros/segundos a sus
equivalentes en km/hora, km/seg, pies/seg, milla/hora, nudo. Se sabe que:
1 km = 1000 metros
1 minuto = 60segundos
1 hora = 3600 segundos
1 nudo = 1.852 km
1 pie = 12 pulgadas =0.3048 metros
1 milla =1.609 km El siguiente cuadro muestra resultados con datos de prueba, para diferentes
valores:
Mts/seg Km/hora Km/seg Pies/seg Milla/hora Nudo 10 36 0.01 32.8084 22.3741 19.4384 20 72 0.02 65.6168 44.7483 38.8769 30 108 0.03 98.4252 67.1224 58.3153 40 144 0.04 131.234 89.4966 77.7538 50 180 0.05 164.042 111.871 97.1922
Lectura de datos Impresión de datos
metroSeg 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
Variables a utilizar en el pseudocódigo
metroSeg medida ingresada en metros/ seg
kmHora medida en kilómetros/ Hora
kmSeg medida en kilómetros/seg
piesSeg medida en pies/ seg
millaHora medida en millas /hora
nudo medida en nudos
Inicio
// Definir variables
real: metroSeg, kmHora, kmSeg, piesSeg, millaHora, nudo
// Lectura de datos
Escribir (“Ingresar velocidad en metros y segundos”) Leer (metroSeg)
// Proceso de cálculo: conversiones de velocidades
kmHora metroSeg * 3.6
kmSeg metroSeg / 1000 piesSeg
metroSeg / 0.3048 millaHora 3600
* metroSeg / 1609
nudo 3600 * metroSeg / 1852
// Salida de resultados
Escribir (metroSeg, “ Metros/seg equivale a ”, kmHora, “ Kilómetros/hora ”,
kmSeg, “ Kilómetros /seg ”, piesSeg, “ Pie/seg ”, millaHora, “ Millas/hora ”, nudo, “ Nudo ”)
Fin Ejemplo 10 En una tienda se ha puesto en oferta la venta de cierto tipo de producto ofreciendo
un descuento fijo del 15% del monto de la compra. Elabore un algoritmo que
determine el monto del descuento y el monto a pagar por la compra de cierta cantidad de unidades del producto.
Lectura de datos Impresión de datos
precio, cantidad compra precio * cantidad
desc 0.15 * compra
montoAPagar compra - desc
desc, compra
Variables a utilizar en el pseudocódigo
cantidad cantidad de productos a comprar
precio precio del producto
desc monto descontado
compra monto de la compra
montoAPagar monto a pagar
Inicio
Fin
// 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)
Ejemplo 11
Pseudocódigo que determina el porcentaje de varones y de mujeres que hay en un salón de clase.
Lectura de datos Impresión de datos
cvar, cmuj total cvar + cmuj pvar
(cvar * 100) / total pmuj
100 - pvar
pvar, pmuj
Variables a utilizar en el pseudocódigo
cvar cantidad de varones
cmuj cantidad de mujeres
total total de alumnos pvar porcentaje de varones pmuj porcentaje de mujeres
Inicio
// Definir variables
entero: cvar, cmuj, total
real: pvar, pmuj
// Lectura de datos
Escribir (“Ingresar cantidad de varones”)
Leer (cvar)
Escribir (“Ingresar cantidad de mujeres”)
Leer (cmuj)
// Proceso de calculo
total cvar + cmuj
pvar (cvar * 100) / total
pmuj 100 - pvar
// Salida de resultados Escribir (“El porcentaje de varones es ”, pvar)
Escribir (“El porcentaje de mujeres es ”, pmuj)
Fin Ejemplo 12
Pseudocódigo que intercambie las cifras de las unidades de dos números naturales.
Por ejemplo:
Número 1: 2485
Número 2: 17
Intercambiando sus unidades se obtiene: 2487 y 15.
Lectura de datos
nro1, nro2
unro1 nro1 Mod 10
unro2 nro2 Mod 10
nro1 nro1 – unro1 + unro2
nro2 nro2 – unro2 + unro1
Impresión de datos
nro1, nro2
Variables a utilizar en el pseudocódigo
nro1 primer número ingresado
nro2 segundo número ingresado
unro1 unidades del primer número
unro2 unidades del segundo número
Inicio
// Definir variables
entero: nro1, nro2, unro1, unro2
// Lectura de datos
Escribir (“Ingresar dos números”) Leer (nro1, nro2)
// Proceso de calculo
unro1 nro1 Mod 10
unro2 nro2 Mod 10
nro1 nro1 – unro1 + unro2
nro2 nro2 – unro2 + unro1
// Salida de resultados
Escribir (“Los números intercambiados son ”, nro1, nro2)
Fin Ejemplo 13 Pseudocódigo que convierte una hora expresada como un número real a su
equivalente en horas, minutos y segundos.
Por ejemplo:
Hora: 16.235
Equivale a: 16 horas, 14 minutos y 6 segundos
Lectura de datos
hora
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
Impresión de datos
hor, min, seg, cs
Para la resolución de este ejemplo se hace uso de la función predefinida entero().
Variables a utilizar en el pseudocódigo
hora hora real
minuto minuto real
segundo segundo real hor hora entera
min minuto entero
seg segundo entero
cs centésimo 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 cálculo
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
Pesudocódigo para calcular el monto final que se paga por la compra de un auto al
crédito, 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 interés del 7% anual.
Lectura de datos
precio, tiempo
imp 0.04 * precio
precio precio + imp
cuota 0.20 * precio
finan precio - cuota inter 0.07 * finan * tiempo
total cuota + finan + inter
Impresión de datos
total
Variables a utilizar en el pseudocódigo imp impuesto estatal
precio precio del auto
cuota cuota inicial
finan monto financiado
inter intereses generados total total a pagar
tiempo tiempo a financiar
Inicio
// Definir variables
real: imp, precio, cuota, finan, inter, total
// Lectura de datos
Escribir (“Ingresar precio”)
Leer (precio)
Escribir (“Ingresar años financiados”)
Fin
Leer (tiempo)
// Proceso de cálculo 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)
Ejemplo 15
Pseudocódigo 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 cúbicos de arena por cada metro cuadrado de pared.
Lectura de datos
largo, alto
area largo * alto
arena 0.5 * area
Impresión de datos
arena
Variables a utilizar en el pseudocódigo largo largo de la pared
ancho ancho de la pared
area área total de la pared
arena cantidad de arena que se necesita
Inicio
// Definir variables
real: largo, alto, area, arena
// Lectura de datos
Escribir (“Ingresar largo y alto de la pared”)
Leer (largo, alto)
// Proceso de cálculo area largo * alto
arena 0.5 * area
// Salida de resultados Escribir (“Se necesita ”, arena, “metros cúbicos de arena”)
Fin Ejemplo 16
Pesudocódigo para calcular el tiempo que tarda el atleta en dar 2 vueltas a una
pista de atletismo, se tiene como datos la velocidad en metros/segundos y el radio
de la circunferencia de la pista, se sabe además que el atleta descansa 1 minuto
cada 100 metros.
Lectura de datos
vel, radio
recor (2 * 3.1416 * radio) * 2
tiempo recor / vel
tiemdes (recor Div 100) * 2 tiempo tiempo + tiemdes
Impresión de datos
tiempo
Variables a utilizar en el pseudocódigo
vel velocidad que corre el atleta radio radio de la pista de atletismo
recor recorrido total
tiemdes tiempo que descansa el atleta
tiempo tiempo empleado en dar 2 vueltas a la pista
Inicio
// Definir variables
real: vel, radio, recor, tiempo, tiemdes
// Lectura de datos
Escribir (“Ingresar velocidad”)
Leer (vel)
Escribir (“Ingresar radio”)
Leer (radio)
// Proceso de cálculo recor (2 * 3.1416 * radio) * 2 tiempo recor / vel
tiemdes (recor Div 100) * 2
tiempo tiempo + tiemdes
// Salida de resultados
Escribir (“El tiempo empleado en dar 2 vueltas es ”, tiempo)
Fin Ejemplo 17
Pseudocódigo para calcular el precio de venta de una pizza; el tamaño de la pizza
varía según la solicitud del cliente, quien determina el diámetro en centímetros que
tendrá la pizza. El costo básico (pizza sin ingredientes extras) es de 0,48 soles por
cm, el costo de cada ingrediente extra agregado a la pizza base es de 0,10 soles
por cm, el precio de venta de la pizza se obtiene recargando un 120% en costo total.
Lectura de datos
diam, extra
precio diam * 0.48
adic extra * diam
recar (precio + adic) * 1.2
venta precio + adic + recar
Impresión de datos
venta
Variables a utilizar en el pseudocódigo
diam diámetro de la pizza
extra cantidad de ingredientes extras
precio precio base de la pizza
adic monto adicional por los ingredientes extras
recar monto recargado
venta precio de venta
Inicio
// Definir variables
entero: diam, extra
real: precio, adic, recar, venta
// Lectura de datos
Escribir (“Ingresar diámetro de la pizza”)
Leer (diam)
Escribir (“Ingresar cantidad de ingredientes extras”)
Leer (extra)
Fin
// Proceso de cálculo
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)
Ejemplo 18
Pesudocódigo para calcular el mínimo de monedas de 2.00, 1.00, 0.50, 0.20 y 0.10 que una máquina electrónica da como vuelto por la compra de un paquete de
galletas, dicha maquina solo acepta monedas de 5 soles.
Lectura de datos
precio
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
Impresión de datos
m1, m2, m50, m20, m10
Variables a utilizar en el pseudocódigo
precio precio de la galleta
vuelto vuelto de la compra vueltoEnt parte entera del vuelto expresado como valor entero
vueltoReal parte fraccionaria del vuelto expresado como valor entero m2 cantidad de monedas de 2.00 soles
m1 cantidad de monedas de 1.00 sol
m50 cantidad de monedas de 0.50 céntimos
m20 cantidad de monedas de 0.20 céntimos
m10 cantidad de monedas de 0.10 céntimos
Inicio
// Definir variables
entero: vueltoEnt, vueltoReal, m1, m2, m50, m20, m10
real: precio, vuelto
// Lectura de datos
Escribir (“Ingresar precio de la galleta”)
Leer (precio) // Proceso de cálculo
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
// Salida de resultados
Fin
Escribir (“Se recibe ”, m2, “monedas de 2.00 soles”, m1, “monedas de 1.00
sol”, m50, “monedas de 0.50 céntimos”, m20, “monedas de 0.20 céntimos”,
m10, “monedas de 0.10 céntimos”)
Ejemplo 19
Pseudocódigo para calcular el tiempo, en horas y minutos que emplea un profesor
para calificar un grupo de exámenes. 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 Impresión de datos
ca, cb, cc
tiempo (ca*5) + (cb*7) + (cc*8)
hor tiempo Div 60 min tiempo Mod 60
hor, min
Variables a utilizar en el pseudocódigo
ca cantidad de exámenes tipo a
cb cantidad de exámenes tipo b
cc cantidad de exámenes tipo c
hor horas empleadas para calificar los exámenes min
minutos empleados para calificar los exámenes tiempo
tiempo en horas,minutos para calificar los exámenes
Inicio
// Definir variables
entero: ca, cb, cc, hor, min
// Lectura de datos
Escribir (“Ingresar cantidad de exámenes tipo A”) Leer (ca)
Escribir (“Ingresar cantidad de exámenes tipo B”)
Leer (cb)
Escribir (“Ingresar cantidad de exámenes tipo C”)
Leer (cc)
// Proceso de cálculo
tiempo (ca * 5) + (cb * 7) + (cc * 8)
hor tiempo Div 60
min tiempo Mod 60
// Salida de resultados
Escribir (“Se emplea ”, hor, “horas con”, min, “minutos”)
Fin
2.2.Ejercicios Propuestos
1. Dada las siguientes ecuaciones:
a = b + 2c + 3m
c = a + 3b + n
z = m + n + 5a
Diseñe un pesudocódigo que determine los valores de m y z conociendo los
valores de a, b, y c.
2. Una persona tiene 2 recipientes llenos de gasolina cuyas capacidades están
dadas en galones y pies cúbicos, respectivamente. Diseñe un pesudocódigo que determine la cantidad total de gasolina en metros cúbicos, pies cúbicos
y yardas cúbicas. Considere los siguientes factores de conversión:
1 pie cúbico = 0.0283 metros cúbicos
1 galón = 3.79 litros
1 metro cúbico = 1000 litros
1 yarda cúbica = 27 pies cúbicos
3. Diseñe un pesudocódigo que calcule las HH:MM:SS transcurridos entre dos
tiempos. Ambos tiempos vienen dados en el formato HH:MM:SS. 4. Diseñe un pesudocódigo que lea la hora actual del día HH:MM:SS y
determine cuantas horas, minutos y segundos restan para culminar el día.
5. El sueldo neto de un vendedor se calcula como la suma de un sueldo básico
más el 12% del monto total que ha vendido. Diseñe un pesudocódigo que
determine el sueldo neto de un vendedor sabiendo que hizo tres ventas en el mes.
6. Elaborar un pseudocódigo que permita convertir un volumen dado en litros a
sus equivalentes en mililitros, hectolitro, pie cúbico, pinta, galones. Se sabe
que:
1 litro = 1000 mililitros
1 hectolitro = 100 litros
1 pie cúbico = 28.32 litros
1 onza fluida = 29.57 mililitro
1 pinta = 16 onza fluida
1 galón = 3.785 litros
7. Desarrollar un programa que dado el largo y el ancho de un campo, permita
determinar cuantos metros de alambre serán necesarios para colocar al
perímetro 5 hilos de alambrado.
8. Una empresa exportadora de trigo trabaja con 2 proveedores; el primer proveedor le brinda una cierta cantidad de trigo en gramos y el segundo
proveedor otra cierta cantidad de trigo en libras. Se pide elaborar un
pesudocódigo que calcule la cantidad total de trigo que obtiene la empresa.
1 libras = 16 onzas
1 onza = 28.35 gramos
1 kilogramo = 1000 gramos
1 tonelada = 1000 kilogramos
9. Calcular el perímetro de una circunferencia dado su radio. Luego calcule el
perímetro de la misma si se reduce al 50%, y el perímetro de la misma si se
reduce al 25% con respecto al resultado anterior.
10. La calificación final de un estudiante viene dada por tres calificaciones: nota
de laboratorio que cuenta un 30% del total, nota de examen parcial que
cuenta un 20% del total y nota de examen final que cuenta el 50% restante. Diseñar un pesudocódigo que lea la nota de laboratorio, la nota del examen
parcial y la nota del examen final de un estudiante y muestre el tanto por
ciento correspondiente a cada una de las notas así como la calificación final.
11. Diseñe un algoritmo que lea un número de 4 dígitos luego intercambie el
primer digito con el último dígito.
12. Una empresa constructora ofrece departamentos al crédito, para adquirir un
departamento se abona una cuota inicial del 12% y se determina la cantidad
de años que se financia. Al monto financiado se le aplica un interés del 10% anual. Diseñar un pesudocódigo que calcule el monto mensual que se paga
por un departamento.
13. Tres personas deciden invertir su dinero para fundar una empresa. Cada una
de ellas invierte una cantidad distinta. Obtener el porcentaje que cada
persona invierte con respecto a la cantidad total invertida.
3. Estructura selectiva Para poder desarrollar aplicaciones, no basta con ejecutar sentencias secuenciales,
también resulta esencial tomar decisiones en base a evaluaciones de expresiones
lógicas que nos señalaran el camino alternativo a seguir. El tipo de resultado de una estructura selectiva es lógico (booleano), es decir,
verdadero (true) o falso (false).
Las estructuras selectivas que se utilizan para tomar decisiones podemos clasificarlas en: simple, doble y múltiple.
3.1.Estructura selectiva simple: Si - Fin_si
Evalúa una expresión lógica y si su resultado es verdadero (true), se ejecuta
una acción determinada. Su sintaxis es la siguiente:
Si (expresión_lógica) entonces
Acción(es)
Fin_si
Funcionamiento de la estructura selectiva Si - Fin_si Cuando la sentencia Si - Fin_si inicia su ejecución, se suceden los siguientes
pasos:
a) Se evalúa una expresión_lógica, obteniéndose un resultado lógico.
b) Si este resultado es verdadero (true), se ejecuta una acción, luego el pseudocódigo proseguirá con la siguiente acción que sigue al Fin_si.
c) Si este resultado es falso (false), la ejecución del pseudocódigo saltará a la
acción que sigue al Fin_si, es decir, no se ejecuta la acción que se encuentra a continuación del Si.
Ejemplo 01
Pseudocódigo que lea tres notas de un alumno: examen parcial, examen final y promedio de prácticas imprima el promedio final del estudiante y el mensaje
“aprobado”, solo si el promedio final es mayor o igual que 10.5.
El siguiente cuadro muestra los resultados con datos de prueba:
exPar
exFin
promP promedio =
(exPar+exFin+promP)/3
mensaje
14 16 12 14.00 aprobado 10 14 15 13.00 aprobado
Variables a utilizar en el pseudocódigo
exPar examen parcial
exFin examen final
promP promedio de prácticas
promedio promedio final
Inicio
// Definir variables
real: exPar, exFin, promP, promedio
// Lectura de datos
Escribir (“Ingresar tres notas:”)
Leer (exPar, exFin, promP)
// Calcula promedio
promedio (exPar + exFin + promP) / 3
Si (promedio >= 10.5) entonces
Escribir (“El promedio es ”, promedio, "aprobado”)
Fin_si
Fin
Explicación
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 expresión lógica (promedio >= 10.5) si esta condición es verdadera se imprime el mensaje solicitado:
Si (promedio>=10.5) entonces
Escribir (“El promedio es ”, promedio, "aprobado”) Fin_si
Ejemplo 02
Pseudocódigo 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 pseudocódigo
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 Pseudocódigo 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 pseudocódigo
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 Pseudocódigo que calcula el sueldo semanal de un obrero que trabaja por horas,
si durante la semana trabajó más de 40 horas se le paga por cada hora extra
dos veces la tarifa normal.
Variables a utilizar en el pseudocódigo 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
Pseudocódigo para hallar el menor de 4 números.
Variables a utilizar en el pseudocódigo
nro1 primer número
nro2 segundo número
nro3 tercero número
nro4 cuarto número menor menor número
Inicio
// Definir variables
entero: nro1, nro2, nro3, nro4, menor
// Lectura de datos
Escribir (“Ingresar 4 números: ”) 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 evalúa la expresión-lógica, 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 acción seleccionada, se termina la sentecia Si – Sino - Fin_si y la
ejecución del pseudocódigo proseguirá con la primera sentencia que sigue al Si
- Sino - Fin_si. Su sintaxis es la siguiente:
Si (expresión_lógica) entonces
Acción1
Sino
Fin_si
Acción2
Funcionamiento de la estructura selectiva Si – Sino - Fin_si
Cuando la sentencia Si – Sino - Fin_si inicia su ejecución, se suceden los siguientes pasos:
a) Se evalúa expresión-lógica, obteniendo un resultado lógico.
b) Si este resultado es verdadero, se ejecuta la Acción1 y se va al paso d.
c) Si este resultado es falso, se ejecuta la Acción2 y se va al paso d.
d) La ejecución del pseudocódigo proseguirá con la siguiente sentencia que
sigue al Fin_si
Ejemplo 06
Pseudocódigo para hallar el mayor de dos números.
El siguiente cuadro muestra resultados con datos de prueba:
nro1 nro2 mayor 14 16 16 12 10 12
Variables a utilizar en el pseudocódigo
nro1 primer número
nro2 segundo número
mayor mayor de dos números
Inicio
// Definir variables
entero: nro1, nro2, mayor
Fin
// Lectura de datos
Escribir (“Ingresar dos números: ”) Leer (nro1, nro2)
// Calcula el mayor de dos números
Si (nro1 > nro2) entonces
mayor nro1
Sino
mayor nro2
Fin_si
Escribir ("El mayor de dos números es:", mayor)
Explicación
Para resolver el ejemplo planteado se definen las variables enteras nro1, nro2,
mayor:
entero: nro1, nro2, mayor
Se lee dos números:
Leer (nro1, nro2)
Se evalua la expresión 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
Pseudocódigo para hallar el mayor de tres números
El siguiente cuadro muestra los resultados con datos de prueba:
nro1 nro2 nro3 mayor 14 16 18 18 12 14 11 14
08 05 04 08
Variables a utilizar en el pseudocódigo
nro1 primer número
nro2 segundo número
nro3 tercer número
t variable temporal mayor mayor de tres números
Inicio
// Definir variables
entero: nro1, nro2, nro3, t, mayor
// Lectura de datos
Escribir (“Ingresar tres números:”)
Leer (nro1, nro2, nro3)
// Calcula el mayor de tres números
Si (nro1 > nro2) entonces t nro1
Sino
Fin
t nro2
Fin_si
Si (t > nro3) entonces mayor t
Sino
mayor nro3
Fin_si
Escribir (“El mayor de tres números es: ”, mayor)
Ejemplo 08
Pseudocódigo que lea el espacio recorrido por un auto y su tiempo empleado en
este recorrido. Se pide hallar la velocidad del recorrido. Fórmula:
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 pseudocódigo
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 Pseudocódigo que lea tres valores tal como a, b, c. Calcular el resultado de la
siguiente expresión:
y = (a - b) / c
Donde: a > b > c, además c no puede ser cero.
Variables a utilizar en el pseudocódigo
a primer valor
b segundo valor
c tercer valor
y resultado de la expresión
Inicio
// Definir variables
real: a, b, c, y
// Lectura de datos
Fin
Escribir (“Ingresar tres números”)
Leer (a, b, c)
// Calcula expresión
Si (c <> 0 ) entonces
y (a - b ) / c
Escribir (y) Sino
Escribir (“No se puede calcular la expresión”)
Fin_si
Ejemplo 10
Pseudocódigo que lea tres notas de un alumno: examen parcial, examen final y promedio de prácticas, imprima el promedio y el mensaje aprobado en caso de
que el promedio es mayor o igual que 10.5, si su promedio es menor de 10.5
imprimir el promedio y el mensaje desaprobado.
El siguiente cuadro muestra los resultados con datos de prueba:
exPar exFin promP promedio =
(exPar+exFin+promP)/3 mensaje
14 16 12 14.00 aprobado 10 08 06 8.0 desaprobado
Variables a utilizar en el pseudocódigo
exPar examen parcial
exFin examen final
promP promedio de practicas
promedio promedio final
Inicio
// Definir variables
real: exPar, exFin, promP, promedio
// Lectura de datos
Escribir ("Ingrese tres notas: ")
Leer (exPar, exFin, promP)
// Calcula promedio
promedio (exPar + exFin + promP) / 3
Si (promedio >= 10.5) entonces
Escribir (promedio, “aprobado”)
sino
Escribir (promedio, “desaprobado”)
Fin_si
Fin
Ejemplo 11 Pseudocódigo que lea como dato el sueldo de un trabajador, aplique un
aumento del 15% si su sueldo es inferior a 500 y 10% en caso contrario.
Imprima el nuevo sueldo del trabajador.
Variables a utilizar en el pseudocódigo sueldo sueldo
aum aumento
nuevoSueldo nuevo sueldo
Inicio
// Definir variables
Fin
real: sueldo, aum, nuevoSueldo
// Lectura de datos Escribir (“Ingrese sueldo)
Leer (sueldo)
// Calcula sueldo
Si (sueldo < 500) entonces aum 0.15 * sueldo
sino
aum 0.10 * sueldo
Fin_si
nuevoSueldo sueldo + aum
Escribir (“Nuevo sueldo ”, nuevoSueldo)
Ejemplo 12 Pseudocódigo que determine si un número es múltiplo de otro. Un número a es
múltiplo de otro numero b, cuando el residuo de la división de a entre b es cero.
En la siguiente tabla se muestra resultados para diferentes valores de las
variables:
nro1 nro2 r = nro1 Mod nro2 Mensaje a mostrar 20 5 0 20 es múltiplo de 5 18 6 0 18 es múltiplo de 6 9 2 1 9 no es múltiplo de 2
Variables a utilizar en el pseudocódigo
nro1 primer número
nro2 segundo número
r residuo de dos números
Inicio
// Definir variables
entero: nro1,nro2, r
// Lectura de datos
Escribir (“Ingresar dos numeros”)
Leer (nro1, nro2)
// Calcular múltiplo
r nro1 Mod nro2
Si (r = 0) entonces
Escribir (nro1, “es múltiplo de”, nro2)
Fin
sino Fin_si
Escribir (nro1, “no es múltiplo de”, nro2)
Ejemplo 13
Pseudocódigo que lea tres números 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 utilizar en el pseudocódigo
a primer número
b segundo número c tercer número
p producto
s suma
Inicio
// Definir variables
entero: a, b, c, p, s
// Lectura de datos
Escribir (“Ingresar primer numero:”)
Leer (a)
Escribir (“Ingresar segundo número:”)
Leer (b)
Escribir (“Ingresar tercer número:”)
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 Pseudocódigo que lea dos números y diga si la suma de los números es par o
impar.
Por ejemplo:
a = 4, b = 3 entonces su suma es s = a + b = 7 es impar a = 4, b = 4 entonces la suma es s = a + b = 8 es par
Variables a utilizar en el pseudocódigo
a primer número
b segundo número
s suma
Inicio
// Definir variables
entero: a, b, s
// Lectura de datos
Escribir ("Ingresar primer numero:")
Leer (a)
Escribir ("Ingresar segundo número:")
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 Pseudocódigo que determine si un año es bisiesto. Un año es bisiesto si es
múltiplo de 4 y no de 100 o cuando es múltiplo de 400.
Un año es bisiesto si es múltiplo de 4. Para esto tendremos que verificar si el
residuo de la división del año entre 4 es igual a cero.
a Mod 4 = 0
Además, se sabe que no debe ser múltiplo de 100 para lo cual escribimos a Mod 100 <> 0
Sea múltiplo de 400. a Mod 400 = 0
Entonces un año es bisiesto si múltiplo de 4, que no debe ser multiplo de 100 a
menos que sea múltiplo de 400
(((a Mod 4 = 0 ) and (a Mod 100 <> 0)) or (a Mod 400 = 0))
Variables a utilizar en el pseudocódigo
a año
Inicio
// Definir variable entero: a
// Lectura de datos
Escribir ("Ingresar año:")
Leer (a)
Si (((a Mod 4 = 0) and (a Mod 100 <> 0)) or (a Mod 400 = 0)) entonces
Escribir (“El año es bisiesto”)
Sino
Escribir (“El año no es bisiesto”)
Fin_si
Fin
Ejemplo 16
Pseudocódigo que calcule el total a pagar por la compra de camisas. Si se
compran tres camisas o más se aplica un descuento del 20% sobre el total de
la compra, sino se aplica un descuento del 10%.
Variables a utilizar en el pseudocódigo
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
Pseudocódigo 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 vehículo en
HH:MM, la tarifa por hora o fracción de S/.2.00.
Por ejemplo:
Hora de inicio:4:20
Hora de término: 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 pseudocódigo
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 múltiple
3.3.1. Estructura selectiva múltiple: 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 próxima dentro del mismo bloque y que no este asociada
con otro Sino. Un caso particular de una sentencia Si anidada es la
siguiente:
Si (expresión_lógica1) entonces Acción1
Sino Si (expresión_lógica2) entonces
Acción2
Fin_si
Sino Fin_si
Acción3
Funcionamiento de Si anidado: Si – Sino - Si ...
Cuando la sentencia si múltiple inicia su ejecución, se suceden los siguientes
pasos:
a) Se evalúa expresión_lógica1, obteniendo un resultado lógico.
b) Si este resultado es verdadero (true), se ejecuta la Accion1 y se va al
paso d.
c) Si este resultado es falso, se evalúa expresión_lógica2, obteniendo un
resultado lógico, si este resultado es verdadero, se ejecuta la Accion2 y
se va al paso d, si este resultado es falso, se ejecuta la Accion3 y se va al paso d.
d) La ejecución del pseudocódigo proseguirá con la siguiente sentencia que
sigue al ultimo Fin_si
Ejemplo 18
Pseudocódigo que lea un número y determine si es positivo, negativo o cero.
Variables a utilizar en el pseudocódigo
nro número a ingresar
mensa mensaje a mostrar
Inicio
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)
Explicación
Para resolver el ejemplo planteado se define la variable entera nro y la
variable cadena mensa: entero: nro
cadena: mensa
Se ingresa un número cualquiera:
Escribir (“Ingresar numero:”)
Leer (nro)
Se evalua la expresión lógica (nro = 0) en caso de cumplirse la igualdad se
asigna “Cero” a la variable mensa:
Si (nro = 0 ) entonces
mensa “Cero”
Después de esta asignación la ejecución pasa a la sentencia escribir y
finaliza el pseudocodigo:
Escribir (nro, mensa)
Pero, si la expresión lógica (nro = 0) resulta ser falsa, se ejecuta el SINO
asociado al primer SI:
SINO
Este sino esta conformado por un SI que evalua la expresión logica (nro > 0), si la asignación es verdadera se asigna “Positivo” a la variable mensa:
Si (nro>0) entonces mensa “Positivo”
Después de esta asignación la ejecución pasa a la sentencia escribir y
finaliza el pseudocodigo:
Escribir (nro, mensa)
Pero, si la expresión logica resulta ser falsa se ejecuta el SINO asociado al
segundo SI en la cual se asigna “Negativo” a la variable mensa:
mensa “Negativo”
Después de esta asignación la ejecución 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 función
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 pseudocódigo
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
Fin_si
Si (importeTotal <= 800) entonces
descto 0.10*importeTotal
Sino
descto 0.20*importeTotal
Fin_si
Fin
ImporteACobrar importeTotal - descto
Escribir (“Cliente: ”, nombre)
Escribir (“Descuento: ”, descto)
Escribir (“Importe total: ”, importeTotal)
Escribir (“Importe a cobrar: ”, importeACobrar)
Ejemplo 20
Una compañía de gaseosas está realizando una promoción por la compra de su producto. Dentro de cada chapa viene un número que determina el
premio que obtiene un comprador.
Si la chapa tiene un número entre 1 y 5 el comprador obtiene como
premio el doble del precio pagado por la gaseosa.
Si la chapa tiene un número entre 6 y 8 el comprador obtiene como
premio la devolución del precio pagado por la gaseosa.
Si chapa tiene un número entre 9 y 10 el comprador no gana ningún
premio.
Escribir un pseudocódigo que muestre los diferentes resultados que se podría obtener al comprar una gaseosa.
El siguiente cuadro muestra los resultados con datos de prueba:
nro
corrida datos Premio
(soles) precio nroChapa 1 0.50 5 1.0 2 1.00 4 2.0 3 3.00 9 0.0 4 5.00 7 5.0
Variables a utilizar en el pseudocódigo
nroChapa numero de chapa
precio precio de la gaseosa
premio premio a recibir
Inicio
// Definir variables entero: nroChapa
real: premio, precio
// Lectura de datos
Escribir (“Ingresar precio y nro de chapa: ”)
Leer (precio, nroChapa)
Si (nroChapa >=1 and nroChapa<=5 ) entonces
premio 2*precio
Sino Si (nroChapa >=6 and nroChapa<= 8) entonces
premio precio
Sino Si (nroChapa >=9 and nroChapa<=10) entonces
premio 0
Fin_si
Fin_si
Fin_si
Fin
Escribir (“Premio: ”, premio)
Ejemplo 21
El precio de venta de DVD varía 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 pseudocódigo que calcule el pago total y la ganancia para el vendedor.
Variables a utilizar en el pseudocódigo
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
Fin_si
Fin_si
Sino
Fin_si
pago 1.50 * cant
Fin
ganan 0.20 * pago
Escribir (“El pago total es: ”, pago)
Escribir (“La ganancia del vendedor es: ”, ganan)
Ejemplo 22
Pseudocódigo 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
Variables a utilizar en el pseudocódigo
afp afp al que pertenece el empleado sueldoBruto sueldo bruto
desc1 descuento por AFP
desc2 descuento por seguro
sueldoNeto sueldo neto
Inicio
// Definir variables
caracter: afp
real: sueldoBruto, desc1, desc2, sueldoNeto
// Lectura de datos
Escribir (“Ingresar sueldo bruto: ”) Leer (sueldoBruto)
Escribir (“Ingresar AFP: ”)
Leer (afp)
Si (afp = „A‟) entonces
desc1 0.11 * sueldoBruto
Sino Si (afp = „B‟) entonces
desc1 0.10 * sueldoBruto
Fin_si
Fin_si
Si (sueldoBruto > 4000) entonces
desc2 0.07 * sueldoBruto
Sino Si (sueldoBruto > 3000) entonces
desc2 0.06 * sueldoBruto
Fin_si
Sino Fin_si
desc2 0.05 * sueldoBruto
Fin
sueldoNeto sueldoBruto – desc1 – desc2
Escribir (“El sueldo neto es: ”, sueldoNeto)
Ejemplo 23
Un supermercado ofrece a sus clientes descuentos de acuerdo al monto de
compra, como se muestra en el siguiente cuadro:
Compra (S/.) Descuento (%) 0 – 250
251 – 500
501 – 1000
1001 – más
0
10
15
20
Elaborar un pseudocódigo que calcule el monto final que paga un cliente por
una compra.
Variables a utilizar en el pseudocódigo
montoCompra monto de la compra
desc descuento
montoFinal monto final
Inicio
// Definir variables
real: montoCompra, desc, montoFinal
// Lectura de datos Escribir (“Ingresar monto compra: ”)
Leer (montoCompra)
Si (montoCompra <= 250) entonces
desc 0
Sino Si (montoCompra <= 500) entonces
desc 0.10 * montoCompra
Sino Si (montoCompra <= 1000) entonces
desc 0.15 * montoCompra
Fin_si
Fin_si
Sino
Fin_si
desc 0.20 * montoCompra
Fin
montoFinal montoCompra – desc
Escribir (“El total a pagar es: ”, montoFinal)
Ejemplo 24
En empresa ensambladora de computadoras oferta a sus clientes descuentos
que varían de acuerdo al número 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 más de 10
computadoras se descuenta el 40%.
Elaborar un pseudocódigo que calcule el monto final que se paga por un
cierto número de computadoras.
Variables a utilizar en el pseudocódigo 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
Fin_si
Sino
Fin_si
desc 0.40 * total
total total – desc
Escribir (“El total a pagar es: ”, total)
Fin
Ejemplo 25 Pseudocódigo que compruebe si tres lados forman un triángulo, de ser así
calcule su área y muestre que tipo de triangulo forma: equilátero, isósceles
o escaleno.
Teorema: En todo triángulo cada lado es menor que la suma de los otros dos
lados, pero mayor que su diferencia.
Para hallar el área de un triángulo conociendo sus lados se aplica la
siguiente fórmula:
area
Donde, p es el semiperímetro.
p( p a)( p b)( p c)
Variables a utilizar en el pseudocódigo
a, b, c lados del triángulo
p semiperímetro
area área del triángulo
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 triángulo”)
p (a + b + c) /2
area raiz (p * (p - a) * (p - b) * (p - c))
Si (a = b and b = c) entonces Escribir (“Equilátero”)
Sino Si (a = b or b = c or a = c) entonces
Escribir (“Isósceles”)
Fin_si
Sino Fin_si
Escribir (“Escaleno”)
Fin
Sino Fin_si
Escribir (“El área es ”, area)
Escribir (“No forman un triángulo”)
Ejemplo 26
Pseudocódigo que calcula la calificación de un alumno en base a 3 notas, validar el ingreso de notas entre 0 y 100, considerar la siguiente tabla:
Promedio Calificación 90 – 100
80 – 89
70 – 79
A B
C
50 – 69 D
0 – 49 E
Variables a utilizar en el pseudocódigo
nt1 nota 1
nt2 nota 2
nt3 nota 3
caft carácter de calificación prom promedio
Inicio
// Definir variables
entero: nt1, nt2, nt3, prom
caracter: calf
// Lectura de datos
Escribir (“Ingresar tres notas: ”)
Leer (nt1, nt2, nt3)
Si ((nt1 >= 0 and nt1 <= 100) and (nt2 >= 0 and nt2 <= 100) and
(nt3 >= 0 and nt3 <= 100)) entonces
prom (nt1 + nt2 + nt3) Div 3
Si (prom > 89) entonces calf „A‟
Sino Si (prom > 79) entonces
calf „B‟
Sino Si (prom > 69) entonces
calf „C‟
Sino Si (prom > 49) entonces
calf „D‟
Sino calf „E‟
Fin_si
Fin_si
Fin_si
Fin_si
Fin
Escribir (“La calificación es: ”, calf)
Sino
Escribir (“Ingreso incorrecto”) Fin_si
Ejemplo 27 Una clínica ofrece tres tipos de seguro:
Tipo Máximo De consultas Pago mensual (S/.)
A
B
C
8
6
4
80.00
60.00
40.00
Si el cliente realiza más consultas de las indicadas en el cuadro anterior
tendrá que pagar S/.8.50 por cada consulta adicional si el seguro es de tipo
A, S/.6.50 por cada consulta adicional si el seguro es de tipo B, y S/.5.00
mensuales por cada consulta adicional si el seguro es de tipo C. Calcular el
monto que paga un cliente durante un mes.
Variables a utilizar en el pseudocódigo
tipo tipo de seguro cant cantidad de consultas realizadas en el mes
max maximo número de consultas
padic pago adicional
pago pago mensual
Inicio
// Definir variables
entero: cant, max
real: pago 0, padic
caracter: tipo
entero: cant
// Lectura de datos
Escribir (“Ingresar tipo de seguro: ”)
Leer (tipo)
Escribir (“Ingresar cantidad de consultas: ”)
Leer (cant)
Si (tipo = „A‟) entonces
pago 80.00
max 8
padic 8.50
Sino Si (tipo = „B‟) entonces
pago 60.00
max 6
padic 6.50
Sino Si (tipo = „C‟) entonces
pago 40.00
max 4
padic 5.00
Fin_si
Fin_si
Fin_si
Si (cant > max) entonces padic padic * (cant - max)
Fin
Fin_si
pago pago + padic
Escribir (“El total a pagar es: ”, pago)
Ejemplo 28
Un centro comercial bonifica a sus clientes con puntos los cuales son
reemplazados por obsequios. Por compras menores a S/.10.00 el cliente
recibe 1 punto, por compras de S/.10.00 a más el cliente recibe 2 puntos
por cada S/.10.00 y un punto por el monto adicional. Elaborar un pseudocódigo que calcule la cantidad de puntos que obtiene un cliente en
una compra.
Por ejemplo:
Si la compra es de S/.7.00 el cliente recibe 1 punto
Si la compra es de S/.23.00 el cliente recibe 5 puntos (2 puntos por cada
S/.10.00 y 1 punto por los S/.3.00).
Si la compra es de S/.40.00 el cliente recibe 8 puntos (2 puntos por cada
S/.10.00)
Variables a utilizar en el pseudocódigo
punto puntos obtenidos monto monto de la compra parEnt valor
entero de la compra
resto1 residuo del valor entero de la compra
resto2 valor real de la compra
c10 cantidad de montos de S/.10.00
Inicio
// Definir variables
entero: punto 0, parEnt, resto2, c10
real: monto, resto1 0
// Lectura de datos
Escribir (“Ingresar monto de la compra: ”)
Leer (monto)
Si (monto < 10) entonces punto 1
Sino parEnt entero (monto)
resto1 monto – parEnt
resto2 parEnt Mod 10
c10 parEnt Div 10
Si (resto1 > 0 or resto2 >0) entonces punto (2 * c10) + 1
Fin_si
Sino Fin_si
punto 2 * c10
Fin
Escribir (“Los puntos obtenidos son: ”, punto)
Ejemplo 29
Un grupo de alumnos de un centro educativo, desea saber cuanto se va a gastar en pasajes para realizar el viaje de promoción, el precio de cada
pasaje varía de acuerdo al día en que viajan y al número de alumnos que
viajan:
Cantidad de
alumnos Precio x pasaje ($)
Hasta el día 15 del mes Después del día 15 del mes 1 – 10
11 – 20
21 – mas
60
55
50
50
45
40 Elaborar un pseudocódigo que muestre el costo total de los pasajes.
Variables a utilizar en el pseudocódigo
dia dia del mes en el que se desea viajar
cant cantidad de alumnos
total monto total a pagar por los pasajes
Inicio
// Definir variables
entero: dia, cant
real: total
// Lectura de datos
Escribir (“Ingresar día del mes: ”)
Leer (dia)
Escribir (“Ingresar cantidad de alumnos: ”)
Leer (cant)
Si (dia <= 15) entonces
Si (cant < 11) entonces
total 60 * cant
Sino Si (cant < 21) entonces
total 55 * cant
Sino
Fin_si
Sino Fin_si
total 50 * cant
Si (cant < 11) entonces total 50 * cant
Sino Si (cant < 21) entonces
total 45 * cant
Fin_si
Fin_si
Sino
Fin_si
total 40 * cant
Fin
Escribir (“El costo total de los pasajes es: ”, total)
3.3.2. Estructura selectiva múltiple: En caso sea – Fin_caso
Ejecuta una acción dependiendo del resultado del selector. Se presenta
como una alternativa de la sentencia Si anidada, ya que en ocasiones resulta
ser más comprensible y ordenado. Su sintaxis es la siguiente:
En caso sea (selector) hacer c1: Acción 1
c2: Acción 2
.
.
.
cn: Acción N Sino
Accion c
Fin_Caso
Donde: Selector, cuyo valor se compara con cada una de las alternativas (c1, c2,
etc).
c1, c2, etc., son constantes enteras o de tipo caracter compatibles con el
selector. Si es de tipo caracter c1, c2, etc. deben de ir encerradas entre
comillas simples, es decir „c1’, ‘c2’, etc.
Sino, cuando toma un valor distinto de las alternativas (c1, c2, etc). El Sino es opcional, si se omite y no hay coincidencia finaliza la sentencia
En caso sea – Fin_caso sin ejecutar nada.
Las sentencias si anidadas pueden aplicarse a cualquier tipo de dato simple,
en contraste con la sentencia En caso – Fin_caso donde solo puede aplicarse
al selector variables: enteras y caracteres.
Funcionamiento de En caso sea – Fin_caso
Cuando la sentencia En caso sea – Fin_caso inicia su ejecución, se suceden los siguientes pasos:
a) Se evalúa el Selector, obteniéndose un resultado de tipo entero o
carácter.
b) Se compara este resultado con las alternativas (constantes) c1, c2, etc.
c) Si algunas de estas constantes es igual al valor del selector, entonces se
ejecutan la acción correspondiente a esa alternativa y se va al paso e.
d) Si no existe coincidencia con las alternativas, se ejecutará la acción
correspondiente al Sino y se va al paso e.
e) La ejecución del pseudocódigo proseguirá con la siguiente sentencia que
sigue al Fin_Caso
Ejemplo 30
Pseudocódigo que lea una variable entera, que representa un día de la
semana y que muestre el texto correspondiente al día. Por ejemplo: Lunes si
es 1, Martes si es 2, …, Domingo si es 7.
El siguiente cuadro muestra resultados con datos de prueba:
Día Texto a mostrar 1 Lunes 4 Jueves 6 Sábado
Variables a utilizar en el pseudocódigo
dia día de la semana
Inicio
// Definir variable
entero: dia
// Lectura de datos
Escribir (“Ingresar dia:”)
Leer (dia)
En caso sea (dia) hacer
1 : Escribir (“lunes”)
2 : Escribir (“martes”)
3 : Escribir (“miércoles”)
4 : Escribir (“jueves”)
5 : Escribir (“viernes”)
6 : Escribir (“sábado”) 7 : Escribir (“domingo”)
Sino Escribir (“Fuera de rango”)
Fin
Fin_Caso
Explicación
Para resolver el ejemplo planteado se define la variable entera dia:
entero: dia
Se ingresa la variable dia
Escribir (“Ingresar dia:”)
Leer (dia)
Y se evalua el contenido de la variable dia mediante la sentencia En caso sea
- hacer, si coincide con algunos de los valores de 1 a 7 se ejecuta la sentencia correspondinte al valor que coincide y la ejecución del
pseudocódigo proseguira con la siguiente sentencia a Fin_caso:
En caso sea (dia) hacer
1 : Escribir (“lunes”)
2 : Escribir (“martes”)
3 : Escribir (“miércoles”)
4 : Escribir (“jueves”)
5 : Escribir (“viernes”)
6 : Escribir (“sábado”)
7 : Escribir (“domingo”)
Si no coincide con algunos de los valores de la sentencia En caso sea – hacer
se ejecuta la sentencia Sino, ejecutándose:
Sino
Escribir (“Fuera de rango”)
Ejemplo 31
Pseudocódigo que permite ingresar una calificación expresada con un
caracter (a, b, c o d) y averiguar su equivalencia correspondiente de acuerdo a la siguiente tabla:
Nota Descripción
A Sobresaliente B Notable C Aprobado D Insuficiente
Otra letra Nota no esta en el rango
Variables a utilizar en el pseudocódigo
nota nota del alumno
Inicio
// Definir variable caracter: nota
// Lectura de datos
Escribir (“Ingresar nota”)
Leer (nota)
En caso sea (nota) hacer
„A‟: Escribir (“Sobresaliente”)
„B‟: Escribir (“Notable”)
„C‟: Escribir (“Aprobado”)
„D‟: Escribir (“Insuficiente”)
Sino
Escribir (“Nota no esta en el rango”) Fin_caso
Fin
Ejemplo 32. Una compañía incrementa el sueldo actual de sus empleados de acuerdo a
su categoría como se muestra en el siguiente cuadro:
Categoría Incremento (%) A
B
C
25
20
15
D 10
Además recibe un aumento especial de 2.5% de su sueldo actual por cada
hijo que tuviese. Así mismo si el nuevo sueldo excede a S/.2000 se
descuenta el 3% por impuesto de solidaridad. Construir un pesudocódigo
que permita calcular el sueldo neto que recibe un empleado de dicha
compañía.
Variables a utilizar en el pseudocódigo cat categoría del empleado
sueldo sueldo del empleado
cant cantidad de hijos del empleado
aum aumento
adic pago adicional por cada hijo
desc descuento de solidaridad
sueldoNeto sueldo neto
sw bandera que cambia de valor cuando se ingresa una
categoría no existente
Inicio
// Definir e inicializar variables
entero: cant
real: sueldo, aum, adic, desc, sueldoNeto
caracter: cat
// Lectura de datos
Escribir (“Ingresar categoría”)
Leer (cat)
Escribir (“Ingresar sueldo”)
Leer (sueldo)
Escribir (“Ingresar cantidad de hijos”) Leer (cant)
En caso sea (cat) hacer
„A‟: aum 0.25 * sueldo
„B‟: aum 0.20 * sueldo
„C‟: aum 0.15 * sueldo
„D‟: aum 0.10 * sueldo
Sino
Escribir (“Categoría no existe”)
sw 1
Fin_caso
Si (sw = 0) entonces
sueldo sueldo + aum
Si (cant > 0) entonces
adic 0.025 * sueldo * cant
Fin_si
sueldo sueldo + adic
Si (sueldo > 2000) entonces
desc 0.03 * sueldo
Fin_si
sueldoNeto sueldo - desc
Escribir (“El sueldo neto del empleado es ”, sueldoNeto)
Fin_si
Fin
En ocasiones es necesario el uso de una variable que altere el
funcionamiento del algoritmo, cambiando su valor entre 0 y 1 ó entre
verdadero y falso, a esta variable también se le conoce como switch o
bandera. Para nuestro ejemplo se ha utilizado la variable sw inicializado en
cero; este valor cambia a 1 al entrar al sino del En caso sea, luego de
identificar que se ha ingresado una categoría diferente a las existentes; esto
permite que una vez impreso el mensaje de error ya no se realice los
siguientes cálculos.
Ejemplo 33 Pseudocódigo que actúe como una calculadora, permitiendo realizar las
operaciones de suma, resta, multiplicación y división entre dos números
cualquiera.
Variables a utilizar en el pseudocódigo
n1 primer número
n2 segundo número
res resultado de la operación
oper operador
sw bandera que cambia de valor cuando en la división se ingresa un divisor igual a 0
Inicio
// Definir e inicializar variables
real: n1, n2, res
caracter: oper
entero: sw 0
// Lectura de datos
Escribir (“Ingresar primer número”)
Leer (n1)
Escribir (“Ingresar operador”)
Leer (oper)
Escribir (“Ingresar segundo número”)
Leer (n2)
En caso sea (oper) hacer
„+‟: res n1 + n2
„-‟ : res n1 - n2
„*‟: res n1 * n2
„/‟ : Si (n2 <>0)
res n1 / n2
Sino
Sino
Fin_si
Escribir (“Error”)
sw 1
Escribir (“Operador no válido”)
sw 1
Fin_caso
Si (sw = 0) entonces
Escribir (“El resultado es ”, res)
Fin
Fin_si
Ejemplo 34
Un centro comercial ofrece ventas financiadas por medio de 3 tipos de
tarjetas de crédito como indica a continuación:
Tipo de Tarjeta Máximo de Letras Interés (%) A
B 36
24 7
6
C 12 5
El cliente solo puede financiar una compra hasta el máximo 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 pseudocódigo
tipo tipo de tarjeta monto monto de la compra
cant cantidad de letras que se desea financiar
max máximo de letras a financiar
inte interés 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
Fin
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
Ejemplo 35
Calcular el consumo de combustible y el total que se invirtió en el recorrido
de un automóvil. Para esto se debe diseñar 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. Además calcular la cantidad de galones que consume el auto por
cada 100 kilómetros. Los precio por cada galón de combustible son:
Tipo de combustible Precio (S/.) x galón Gasolina 97 16.98 Gasolina 95 15.60 Gasolina 89 13.50 Diesel 10.20
Variables a utilizar en el pseudocódigo
kil1 kilometraje de incio de recorrido kil2 kilometraje fin del recorrido
gal1 galones de inicio de recorrido
gal2 galones fin de recorrido
tipo tipo de combustible
kilRec kilómetros recorridos totGal total de galones
total total que se invirtio en el recorrido
c100 cantidad de galones que consume el auto por cada 100 km
Inicio
// Definir variables
entero: tipo real: kil1, kil2, gal1, gal2, kilRec 0, totGal 0, total, c100
// Lectura de datos
Escribir (“Ingresar kilometraje de inicio y fin del recorrido”)
Leer (kil1, kil2)
Escribir (“Ingresar galones con el que inicia y termina el recorrido”)
Leer (gal1, gal2)
Escribir (“Ingresar tipo de combustible que usa el automóvil
(1)Gasolina 97, (2)Gasolina 95, (3)Gasolina 89, (4)Diesel”)
Leer (tipo)
Si (tipo > 0 and tipo < 5) entonces
En caso sea (tipo) hacer
1 : precio 16.98
2 : precio 15.60
3 : precio 13.50
4 : precio 10.20
Fin_caso kilRec kil2 – kil1 totGal gal2 – gal1
total totGal * precio
c100 (totGal * 100) / kilRec
Escribir (“El total de combustible que se consumió es ”, totGal) Escribir (“El total de se invirtió en el recorrido es ”, total)
Escribir (“El consumo por cada 100 kilómetros es ”, c100)
Sino
Escribir (“El tipo de combustible no es válido”)
Fin_si
Fin
3.3.3. Estructura selectiva múltiple: En caso sea múltiple
La sentencia En caso sea múltiple se presenta de dos formas:
a) Cuando más de una alternativa debe ejecutar la misma acción; para
estos casos se agrupan todas las alternativas con acciones comunes.
Ejemplo 36
Pseudocódigo que determine si un número 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
Nro
Resultado
1 5 impar 2 2 par 3 9 impar 5 10 Error fuera de rango
Variables a utilizar en el pseudocódigo
nro número a determinar si es par o impar
Inicio
// Definir variable entero: nro
// Lectura de datos
Escribir (“Ingresar número:”)
Leer (nro)
En caso sea (nro) hacer
1: 3: 5: 7: 9: Escribir (“impar”)
2: 4: 6: 8 : Escribir (“par” )
sino Escribir (“Fuera de rango”)
Fin
Fin_Caso
Ejemplo 37 En un campeonato de tiro al blanco se ha llegado a un acuerdo entre los
participantes para que el puntaje obtenido sea calculado en base al puntaje
original (el que esta entre 0 y 10) alcanzado en el tiro multiplicado por un
factor el cual se muestra en el siguiente cuadro. Hacer un pseudocódigo que muestre el nuevo puntaje obtenido por cualquier participante.
Puntaje original Factor
0 0 Entre 1 y 5 6 Entre 6 y 8 9 Entre 9 y 10 10
Variables a utilizar en el pseudocódigo
puntaje puntaje original
factor factor multiplicativo
nuevoPuntaje nuevo puntaje del participante
sw bandera que condiciona el cálculo del nuevo puntaje
Inicio
// Definir e inicializar variables
entero: factor, puntaje, nuevoPuntaje, sw 0
// Lectura de datos
Escribir (“Ingresar puntaje:”) Leer (puntaje)
// Calcula puntaje
En caso sea (puntaje) hacer
Fin
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
Ejemplo 38
Pseudocódigo que permita calcular cuántos días 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 días. c) Abril, junio, setiembre y noviembre tienen 30 días.
d) Febrero tiene 28 días o 29 días si el año bisiesto. Un año es bisiesto si es
múltiplo de 4 y no de 100 o cuando es múltiplo de 400.
En la siguiente tabla se muestra resultados para diferentes valores de las
variables:
Nro
corrida datos Resultado
Mes Año Día 1 2 2004 29 2 4 2016 29 3 2 2001 28 4 2 2000 29 5 10 2006 31 6 4 2007 30
Variables a utilizar en el pseudocódigo
dia día que tiene un mes
mes mes del año
year año a determinar si es bisiesto
Inicio // Definir variables
entero: mes, year, dias
// Lectura de datos
Escribir (“Ingresar mes, año ”)
Leer (mes, year)
En caso sea (mes) Hacer
1: 3: 5: 7: 8: 10: 12: dias 31
4: 6: 9: dias 30
2: Si (year Mod 4 = 0) and (year Mod 100 <> 0) or
(year Mod 400 = 0)) entonces
dias 29
Sino
dias 28
Fin_si
Fin_Caso
Escribir (mes, year, dias)
Fin
b) Cuando se presentan selecciones basadas en dos o más niveles; en estos
casos se utiliza la sentencia En caso sea anidado.
Ejemplo 39
Pseudocódigo para calcular la pensión 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 función del colegio de procedencia
del alumno y de las tres categorías que existe en el instituto. Considere que
la pensión esta exonerada de impuesto.
Colegio de
procedencia Categoría
A B C Nacional 50 40 30 Particular 15 20 25
En la siguiente tabla se muestra resultados para diferentes valores de las
variables:
Pensión Colegio Categoría Descuento Pensión final 1000 Nacional A 1000*0.05=500 500.0 1500 Particular B 1500*0.20=300 1200.0
Variables a utilizar en el pseudocódigo colegio
colegio de procedencia categoria
categoría dentro del instituto dscto
descuento a realizar cuota pago mensual
importe importe a pagar
Inicio
// Definir e inicializar variables real: cuota, dscto, importe 0
caracter: colegio, categoría
entero: sw 0
// Lectura de datos
Escribir (“Ingresar colegio de procedencia (N)acional, (P)articular:”)
Leer (colegio) Escribir (“Ingresar categoría (A, B, C):”)
Leer (categoria)
Escribir (“Ingresar cuota:”)
Leer (cuota)
// Cálculos
En caso sea (colegio) hacer
„N‟: En caso sea (categoria) hacer
„A‟ : dscto 0.50 * cuota
„B‟ : dscto 0.40 * cuota
„C‟ : dscto 0.30 * cuota
Sino Escribir (“Opción no contemplada”)
sw 1
Fin_caso
„P‟: En caso sea (categoria) hacer
„A‟ : dscto 0.25 * cuota
„B‟ : dscto 0.20 * cuota
Sino
„C‟ : dscto 0.15 * cuota Escribir (“Opción no contemplada”) sw 1
Sino
Fin_caso Escribir (“Opción no contemplada”)
sw 1
Fin_caso
Si (sw = 0) entonces
importe cuota – dscto
Escribir(“El importe a pagar es: ”, importe)
Fin
Fin_si
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 categoría y del tipo de
producto que produce, como se muestra en el siguiente cuadro:
Categoría Tarifa (S/. x unidad)
Tejas Losetas A
B
C
2.50
2.00
1.50
2.00
1.50
1.00
Así mismo, el obrero recibe una bonificación especial de acuerdo a la
cantidad que produce:
Unidades Producidas Bonificación (%) 1 – 250
251 – 500
501 – 1000
1001 – mas
0.00
50.00
100.00
150.00
Además del total de ingresos se descuenta S/.25.00 por seguro.
Variables a utilizar en el pseudocódigo
cat categoría del obrero
prod producto que se produce cant cantidad producida
pago pago del obrero
bonf bonificación desc descuento
sw bandera
Inicio
// Definir e inicializar variables
entero: cant, sw 0
real: pago, bonf, desc 25.00
caracter: cat, prod
// Lectura de datos
Escribir (“Ingresar categoría:”) Leer (cat)
Escribir (“Ingresar producto que produce (T)ejas, (L)osetas”)
Leer (prod)
Escribir (“Ingresar cantidad producida:”)
3
Leer (cant)
// Cálculos
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 (“Categoría 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 (“Categoría no existe”)
sw 1
Sino
Fin_caso 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
Fin_si
Fin_si
Sino
Fin_si
bonf 150.00
Fin
Fin_si
pago pago + bonf – desc
// Salida de resultados
Escribir (“El pago del obrero es: ”, pago)
3.4.Ejercicios propuestos
1. Evaluar la siguiente función:
x2
x / 6
f x
si ( x Mod 4 ) 0
si ( x Mod 4 ) 1
x
x 5
si ( x Mod 4 ) 2
si ( x Mod 4 ) 3
2. Una compañía de gaseosas esta realizando una promoción por la compra de
sus productos. Dentro de cada chapa viene un número que determina el
premio que obtiene un comprador.
Si la chapa tiene un número entre 1 y 5 el comprador obtiene como premio
el doble del precio pagado por la gaseosa. Si la chapa tiene un número entre 6 y 8 el comprador obtiene como premio
la devolución del precio pagado por la gaseosa
Si chapa tiene un número entre 9 y 10 el comprador no gana ningún premio
Se pide mostrar los diferentes resultados que podría obtener un comprador
al comprar una gaseosa. Utilizar la sentencia En caso sea. 3. Escribir un programa para hallar el valor absoluto de un número:
0, si x 0
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
número) 4. Escribir un programa para leer dos números a, b y obtenga el valor
numérico de la función.
2
a b,
si a2 - b2 0
f x a2 - 2b, si a2 - b2 0
a b,
si a2 - b2 0
5. Pseudocódigo que determine si un número es divisible por 5. Un número es
divisible por 5 cuando acaba en cero 0 en 5. 6. Mostrar el nombre correspondiente a un número de mes y además mostrar
la estación al cual pertenece. Considerar 3 meses por estación.
Verano = enero, febrero, marzo Otoño = abril, mayo, junio
Invierno = julio, agosto, setiembre
Primavera = octubre, noviembre, diciembre.
7. Ingresar cuatro valores por el teclado a, b, c, d. Se desea redondear a la
centena más próxima y visualizar la salida. Por ejemplo:
a = 2, b = 3, c = 6 y d = 2 entonces n = 2362 el resultado redondeado será
2400.
Si n = 2342 el resultado redondeado será 2300
Si n = 2962 el resultado redondeado será 3000
8. Pseudocódigo que lea tres números y diga si la suma de los dos primeros
números es igual al tercer número.
9. Una empresa de bienes y raíces ofrece casas de interés social bajo las
siguientes condiciones: si el ingreso mensual del comprador es menos de
S/2250 la cuota inicial será igual al 15% del costo de la casa y el resto se
distribuirá en 120 cuotas mensuales. Si el ingreso mensual del comprador es
mayor o igual a S/.2250 la cuota inicial será igual al 30% del costo de la
casa y el resto se distribuirá en 75 cuotas mensuales. Diseñe un algoritmo
que permita determinar cuanto debe pagar un comprador por concepto de
cuota inicial y cuanto por cada cuota mensual.
10. En una escuela la colegiatura de los alumnos se determina según el número
de materias que cursan. El costo de todas las materias es el mismo. Se ha
establecido un programa para estimular a los alumnos, el cual consiste en lo
siguiente: si el promedio obtenido por un alumno en el ultimo periodo es mayor o igual que 15, se le hará un descuento del 30% sobre la colegiatura
y no se le cobrara impuesto; si el promedio obtenido es menor que 15
deberá pagar la colegiatura completa, la cual incluye el 10% de impuesto.
Obtener cuanto debe pagar un alumno.
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 pequeño. Si el monto de la hipoteca es menor
que $30,000 entonces invertirá el 50% de la inversión 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 inversión 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 números 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 más de 1000 hectáreas de la siguiente manera:
Producto Terreno (%) Papa
Zanahoria
Camote
50
30
20 Si la superficie del terreno es menor o igual 1000 hectáreas, se deberá
sembrar de la siguiente manera:
Producto Terreno (%) Papa
Zanahoria
Camote
60
25
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 hectáreas respectivamente.
14. Una empresa eléctrica dispone de la siguiente tabla de costos:
Cod. de tarifa Descripción Tarifa 1 kw/hora (S/.) Porcentaje (%)
1
2
3
Domestico
Industrial
Comercial
35.00
80.00
100.00
1.5
2.5
3 Además 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 público 4.5%
Limpieza pública 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 número 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 kilómetro, de lo contrario se cobrará el monto básico que
será igual a S/.25.00.
b) La carga puede ser frágil o no frágil. Solo si la carga es frágil 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 número 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
bonificación del 15% del sueldo, si el sueldo esta entre S/.750 y S/.1200,
recibe una bonificación del 10% y si el sueldo es superior a los S/.1200,
recibe una bonificación del 7%.
4. Estructura repetitiva Las estructuras repetitivas se utilizan cuando es necesaria la repetición de una o
mas sentencias, en un número determinado de veces, ó tantas veces como lo
permita el resultado de una expresión lógica. 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
según la lógica de solución del problema.
4.1.Conceptos básicos
Contador Es una variable numérica entera que se incrementa o decrementa cada vez que
se ejecuta la acción que lo contiene, toma un valor inicial de cero o uno, según
sea el caso. En la siguiente figura la variable i representa a un contador.
i = i + 1
valor actual valor anterior cantidad a incrementar
Acumulador o totalizador Es una variable numérica que se incrementa o decrementa de forma no
constante, toma un valor inicial de cero o uno según 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 iteración.
total = total + parcial
valor actual valor anterior cantidad a incrementar
Bucle
Es un mecanismo de programación que repite un segmento de un programa
(una o mas sentencias) un cierto número de veces. Los bucles se implementan
utilizando las sentencias repetitivas: mientras, repetir y para.
Cuerpo del bucle
Son las sentencias que se ejecutarán repetidamente un cierto número de veces.
Iteración
Representa cada repetición del cuerpo de bucle.
4.2.Estructura repetitiva Mientras – Fin_mientras
Repite una o mas acciones mientras el resultado de una expresión lógica es verdadera (true). Si el resultado de la expresión lógica es falsa (false), este
proceso de repetición termina, y la ejecución del programa continúa con la
siguiente sentencia que sigue al Fin_mientras. Su sintaxis es la siguiente:
Mientras (expresión_lógica) hacer
Acción
Fin_Mientras
Funcionamiento de Mientras – Fin_mientras Cuando la sentencia Mientras inicia su ejecución, se suceden los siguientes
pasos:
a) Se evalúa expresión_lógica, obteniéndose un resultado lógico.
b) Si este resultado es verdadero (true), se ejecuta la acción y se retorna al
paso a. c) Si este resultado es falso (false), la ejecución del pseudocódigo proseguirá
con la sentencia siguiente al Fin_Mientras.
Ejemplo 01
Pseudocódigo que invierta un número entero positivo.
Variables a utilizar en el pseudocódigo
nro número a invertir
nro1 variable auxiliar donde guardamos el número nro
nroinvertido número invertido
digito dígito
Inicio
// Definir e inicializar variables
entero: nro, nro1, digito, nroinvertido 0
// Leer Datos
Escribir (“Ingresar número:”)
Leer (nro)
// Calcular número invertido
nro1 nro
Mientras (nro > 0) hacer
digito nro Mod 10
nroinvertido 10 * nroinvertido + digito nro nro Div 10
Fin_Mientras
Escribir (“El número invertido de ”, nro1, “es ”, nroinvertido)
Fin
Explicación
Para resolver el ejemplo planteado se definen las variables enteras: nro, nro1,
dígito y se inicializa en cero la variable nroinvertido entero: nro, nro1, digito, nroinvertido 0
Se ingresa la variable nro:
Escribir (“Ingresar número:”)
Leer (nro)
Y se asigna nro a una nueva variable nro1, para conservar el valor original del número ingresado:
nro1 nro
La sentencia Mientras ejecuta tres sentencias, mientras que la expresión lógica (nro > 0) es verdadera, en estas sentencia se va extrayendo cada dógito del
número ingresado:
Mientras (nro > 0) hacer digito nro Mod 10
nroinvertido 10 * nroinvertido + digito
nro nro Div 10
Fin_Mientras
Cuando la expresión logica (nro > 0) llega a ser falsa, se ejecuta la sentencia
escribir y finaliza el pseudocódigo:
Escribir (“El número invertido de ”, nro1, “es ”, nroinvertido)
Por ejemplo si el número es 134, entonces el número invertido será 431. Para
ir reduciendo cada número emplearemos la operación:
Así tenemos:
nro nro Div 10
134 Div 10 = 13
13 Div 10 = 1
1 Div 10 = 0
Se detiene cuando
es cero
A la vez, para obtener cada dígito emplearemos la operación:
digito digito Mod 10
Así tenemos:
134 Mod 10 = 4
13 Mod 10 = 3
1 Mod 10 = 1
Se puede ir formando el número invertido multiplicando el mismo número
invertido por 10 y agregándole cada digito empleando la operación:
nroinvertido = 10 * nroinvertido + digito
Que en valores es:
10 * 0 + 4 = 4 10 * 4 + 3 = 43
10 * 43+ 1 = 431
Inicialmente nroinvertido = 0
La siguiente tabla muestra los resultados de la corrida del algoritmo.
Iteración nro
Valores de nro
Expresión
Lógica
nro > 0
Resultado de la
Expresión Lógica
Resultados del cuerpo del bucle
digito =
nro Mod 10 nroinvertido =
10*nroinvertido + digito
nro =
nro Div 10
1 134 134>0 True 4 4 13 2 13 13 >0 True 3 43 1 3 1 1> 0 True 1 431 0
--- 0 0 > 0 False Fin del Mientras
Ejemplo 02
Pseudocódigo que multiplique dos números enteros utilizando el siguiente
algoritmo:
Proceso de división: Se divide por 2 el primer número y se obtiene un
cociente. Se divide por 2 este cociente y se obtiene otro cociente. Se
continúa este proceso de división por 2, hasta que el número cociente sea 1.
Proceso de Multiplicación: Se multiplica por 2 el segundo número y se
obtiene un número. Se multiplica por 2 este número y se obtiene otro
número. Se continúa este proceso de multiplicación por 2 hasta que el
cociente obtenido en el paso 1 sea igual a 1.
Se suma el segundo número con todos los valores obtenidos al multiplicar el
segundo número por 2 siempre y cuando sus correspondientes valores al
dividir el primer número por 2 sea impar. El resultado de esta suma será la
multiplicación de ambos números.
Por ejemplo si se tiene los números 23 y 4, emplearemos para el proceso de división la operación:
nro1 nro1 Div 2
mediante el cual se obtiene los siguientes valores:
23 Div 2 = 11 11 Div 2 = 5
5 Div 2 = 2
2 Div 2 = 1
Se detiene cuando
es 1
Para el proceso de multiplicación emplearemos la operación: nro2 nro2 * 2
que permite obtener los siguientes valores:
4 * 2 = 8 8 * 2 = 16
16 * 2 = 32
32 * 2 = 64
Para sumar los valores de la multiplicación emplearemos la operación:
suma suma + nro2
que permite obtener los siguientes valores: 4 + 8 + 16 + 64 = 92, que es
igual al valor de multiplicar 23 * 4.
Variables a utilizar en el pseudocódigo
nro1, nro2 números a multiplicar
suma producto de dos números
Inicio
// Definir e inicializar variables
entero: nro1, nro2, suma 0
// Leer Datos
Escribir (“Ingresar dos números:”)
Leer (nro1, nro2)
// Calcula multiplicación
Mientras (nro1 >= 1) Hacer
Si (nro1 Mod 2 = 1) entonces suma suma + nro2
Fin
Fin_si
nro1 nro1 Div 2
nro2 nro2 * 2
Fin_mientras
Escribir (“El producto es: ”, suma)
Ejemplo 03
Pseudocódigo que muestre los n términos de la siguiente serie y calcule su
suma:
2 + 5 + 8 + 11 + 14 + …
Variables a utilizar en el pseudocódigo n cantidad de términos de la serie
ter cada término de la serie
suma suma de los elementos de la serie con contador
Inicio
// Definir e inicializar variables
entero: n, ter 2, con , suma 0
// Leer Datos
Escribir (“Ingresar cantidad de términos:”)
Leer (n)
// Calcula serie y suma
con 1
Mientras (con <= n) Hacer
Escribir (ter)
suma suma + ter
ter ter + 3
con con + 1
Fin_mientras
Escribir (“La suma es: ”, suma)
Fin
Ejemplo 04 Pseudocódigo que calcule la suma total y determine cuantos números múltiplos
de M hay en los N primeros números naturales, tal que M <= N.
Por ejemplo: Si se desea saber cuantos múltiplos de 7 hay en los primeros 80 números
naturales.
Diremos que existen 11 números y son:
7, 14, 21, 28, 35, 42, 49, 56, 63, 70, 77
Variables a utilizar en el pseudocódigo n cantidad de números naturales
m múltiplo a validar
suma suma de los múltiplos de m
con contador
Inicio
// Definir e inicializar variables entero: n, m, con, suma 0
// Leer Datos
Escribir (“Ingresar cantidad de números:”) Leer (n)
Escribir (“Ingresar múltiplo a validar:”)
Leer (m)
// Calcula serie y suma con 1
Mientras (m <= n) Hacer
Escribir (m)
Fin
con con + 1
suma suma + m
m m + n
Fin_mientras
Escribir (“La suma es: ”, suma)
Escribir (“La cantidad de múltiplos de ”, m, “encontrados en los ”, n, “primeros números naturales es ”, con)
Ejemplo 05
Pseudocódigo que calcule el cuadrado de un número realizando sólo sumas. El cuadrado de un número n es la suma de los n primeros números impares.
Ejemplo: 32 = 1 + 3 + 5 = 9.
Variables a utilizar en el pseudocódigo
n número ingresado ter números impares
cuad número al cuadrado
con contador
Inicio // Definir e inicializar variables
entero: n, cuad 0, ter 1, con
// Leer Datos
Escribir (“Ingresar número:”)
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
Pseudocódigo que imprima la serie y calcule el producto de los n términos de:
1/12 * 3/22 * 5/32 * 7/42 * …
Variables a utilizar en el pseudocódigo
n cantidad de términos de la serie num numerador
den denominador
prod producto de los términos de la serie con contador
Inicio
// Definir e inicializar variables
entero: n, con real : num 1, den 1, prod 1
// Leer Datos
Escribir (“Ingresar cantidad de términos:”)
Leer (n)
// Calcula serie y multiplica
con 1
Fin
Mientras (con <= n) Hacer
Escribir (num, “/”, den, “^2”) prod prod * (num/(den^2))
num num + 2
den den + 1
con con + 1
Fin_mientras
Escribir (“El producto es: ”, prod)
Ejemplo 07
Pseudocódigo que imprima la serie y calcule la suma de los n términos de:
1 + 2 + 5 + 10 + 17 + 26 + …
Variables a utilizar en el pseudocódigo
n cantidad de términos de la serie
ter término de la serie
inc incremento
suma suma de los términos de la serie
con contador
Inicio
// Definir e inicializar variables
entero: n, con, ter 1, suma 0, inc 1
// Leer Datos
Escribir (“Ingresar cantidad de términos:”)
Leer (n)
con 1
// Calcula serie y suma
Mientras (con <= n) Hacer
Escribir (ter) suma suma + ter ter ter + inc
inc inc + 2
con con + 1
Fin_mientras
Escribir (“La suma es: ”, suma)
Fin
Ejemplo 08
Pseudocódigo en el que se ingresa un número entero y se calcula:
a) La suma de sus dígitos
b) El número total (cantidad) de dígitos.
c) La cantidad de dígitos pares e impares
Por ejemplo si se tiene el número 3897, es necesario reducir el número empleando la operación nro nro Div 10, que en valores es:
3897 Div 10 = 389
389 Div 10 = 38
38 Div 10 = 3
3 Div 10 = 0
Se detiene cuando es cero
Para obtener cada digito emplearemos la operación digito digito Mod 10, que
en valores es:
3897 Mod 10 = 7 389 Mod 10 = 9
38 Mod10 = 8
3 Mod 10 = 3
Para calcular la suma de los dígitos de un número emplearemos la operación: suma suma + digito
Para calcular la cantidad total de dígitos de un número emplearemos un contador tal como: c c + 1
Para calcular la cantidad de dígitos pares e impares evaluamos cada dígito,
un dígito es par si el residuo de la división del dígito entre 2 es cero, en caso
contrario será impar. De manera se irán acumulando en dos contadores diferentes la cantidad total de dígitos pares y de dígitos impares.
Variables a utilizar en el pseudocódigo
nro número ingresado
digito cada dígito del número
suma la suma total de dígitos
c contador que guarda la cantidad de dígitos cpar contador que guarda la cantidad de dígitos pares
cimpar contador que guarda la cantidad de dígitos impares
Inicio
// Definir e inicializar variables
entero: nro, digito, suma 0, c 0, cpar 0, cimpar 0
// Leer Datos
Escribir (“Ingresar número:”)
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 dígitos es: ”, c)
Escribir (“La cantidad de digitos pares es: ”, cpar)
Escribir (“La cantidad de digitos impares es: ”, cimpar)
Fin
Ejemplo 09 Pseudocódigo 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 pseudocódigo
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
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)
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
pseudocódigo que muestre el número de jóvenes solteras que tienen entre 18 y
30 años.
Variables a utilizar en el pseudocódigo
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 años
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
Fin_si
conM conM + 1
Fin
con con + 1
Fin_mientras
Escribir (“La cantidad de mujeres solteras entre 18 y 30 años son: ”, conM)
Ejemplo 11
Una organización 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 niños, jóvenes, adultos y ancianos que existen en la zona.
Considerar la siguiente tabla de categorías:
Categoría Edad Niños
Jóvenes
Adultos
Ancianos
0 – 12
13 – 29
30 – 59
60 – más
Variables a utilizar en el pseudocódigo n cantidad de personas del centro poblado
edad edad de cada persona
peso peso de cada persona
con contador
sumaN suma de los pesos de los niños
sumaJ suma de los pesos de los jóvenes
sumaA suma de los pesos de los adultos
sumaC suma de los pesos de los ancianos
conN contador de niños
conJ contador de jóvenes
conA contador de adultos conC contador de ancianos
promN promedio de peso de los niños
promJ promedio de peso de los jóvenes
promA promedio de peso de los adultos
promC promedio de peso de los ancianos
Inicio
// Definir e inicializar variables
entero: n, edad, con 1, conN 0, conJ 0, conA 0, conC 0 real: peso, sumaN 0, sumaJ 0, sumaA 0, sumaC 0,
promN,
promJ, promA, promC
// Leer Datos
Escribir (“Ingresar cantidad de población”)
Leer (n) // Calculo
con 1
Mientras (con <= n) Hacer
Escribir (“Ingresar edad”)
Leer (edad)
Escribir (“Ingresar peso”)
Leer (peso)
Si (edad <= 12) entonces
sumaN sumaN + peso conN conN + 1
Sino Si (edad <= 29) entonces
Cociente
1560 432 264 168
Residuo 264 168
Sino
sumaJ sumaJ + peso
conJ conJ + 1
Si (edad <= 59) entonces
sumaA sumaA + peso
conA conA + 1
Fin_si
Fin_si
Sino
Fin_si
sumaC sumaC + peso
conC conC + 1
Fin
Fin_mientras promN sumaN / conN
promJ sumaJ/ conJ
promA sumaA / conA
promC sumaC / conC
Escribir (“El promedio de peso de los niños es: ”, promN)
Escribir (“El promedio de peso de los jóvenes es: ”, promJ)
Escribir (“El promedio de peso de los adultos es: ”, promA)
Escribir (“El promedio de peso de los ancianos es: ”, promC)
Ejemplo 12
Pseudocódigo para calcular el máximo común divisor (M.C.D.) de dos números a y b, empleando el algoritmo de Euclides.
El algoritmo consiste en:
a) Dividir el mayor número entre el menor número, obteniendo el cociente q1 y
el resto r1.
b) Si r1 < > 0, se divide el menor número 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 máximo común 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
a
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 b y b residuo.
Variables a utilizar en el pseudocódigo
n1 primer número ingresado
n2 segundo número ingresado
a dividendo
b divisor
residuo residuo
Inicio
// Definir variables
entero: a, b, residuo, n1, n2
// Leer Datos
Escribir (“Ingresar dos números:”) 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 máximo común divisor es: ”, a)
Fin
Ejemplo 13 Para convertir un número en base diferente de 10 a base 10, emplearemos la
descomposición polinómica, se denomina así por que tiene la característica de
un polinomio donde la variable del polinomio viene a estar dado por la base en
la cual se ha escrito el número. Se pide realizar un Pseudocódigo para realizar la
descomposición polinómica
La siguiente tabla muestra la descomposición polinómica:
Numero a
convertir y su
correspondiente
base
Proceso de Conversión
(descomposicion polinomica)
Resultado
de la
conversión
344(7 3*72 + 4*71 + 4*70 = 3*49 + 4*7 + 4
*1= 147 + 28 + 4 179
1304(5 1*53 + 3*52 + 0*51 + 4*50 = 1*125 +
3*25 + 0*5 + 4*1 = 125 + 75 + 0 + 4 204
Por ejemplo, sea el número 344.
Para ir reduciendo cada número emplearemos la operación nro nro Div 10,
que en valores es:
344 Div 10 = 34
34 Div 10 = 3
3 Div 10 = 0
Se detiene cuando es cero
Para obtener cada dígito emplearemos la operación digito digito Mod 10, que
en valores es:
344 Mod 10 = 4
34 Mod 10 = 4
3 Mod 10 = 3
Se puede ir formando la descomposición polinómica 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 operación en un acumulador suma, expresado mediante la operación: 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 pseudocódigo
digito cada dígito del número
base base del número
nro número a realizar la descomposición polinómica
nro1 variable auxiliar donde guardamos el nro
expo exponente
suma resultado de la descomposición polinómica
Inicio
// Definir e inicializar variables
entero: nro, nro1, base, digito, suma 0, expo 0
// Leer datos
Escribir (“Ingresar un número 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 número ”, nro1, “en base 10 es ”, suma)
Fin
Ejemplo 14
Pseudocódigo para convertir un número decimal a una base que puede ser binario u octal.
Existe varios sistemas de numeración como:
El sistema binario utiliza los dígitos 0, 1
El sistema octal usa ocho dígitos 0, 1, 2, 3, 4, 5, 6 y 7.
El sistema hexadecimal utiliza 16 dígitos, 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 mayúsculas y minúsculas.
En la tabla se muestran los primeros diecisiete números decimales con su
respectiva equivalencia binaria, octal y hexadecimal.
Decimal Binario Octal Hexadecimal 0 0000 0 0 1 0001 1 1 2 0010 2 2 3 0011 3 3 4 0100 4 4
10
0
5 0101 5 5 6 0110 6 6 7 0111 7 7 8 1000 10 8 9 1001 11 9 10 1010 12 A 11 1011 13 B 12 1100 14 C 13 1101 15 D 14 1110 16 E 15 1111 17 F 16 10000 20 10 17 10001 21 11
Para convertir un número de base decimal a cualquier base, se emplea el
método de las divisiones sucesivas que consiste en dividir sucesivamente el
número decimal y los cocientes que se van obteniendo entre la base, hasta que
una de las divisiones se haga 0. La unión de todos los restos obtenidos escritos
en orden inverso, nos proporcionan el número inicial expresado en el sistema
deseado. Por ejemplo convertir el número 10 en base 2, obtenemos:
10(10)=1010(2)
a) Se plantea una primera solución mediante el empleo de una fórmula
aritmética que permita calcular la conversión del número.
Variables a utilizar en el pseudocódigo
digito cada digito del número
base base que puede ser binario u octal
nro número al cual vamos a convertir a otra base nro1 variable auxiliar donde guardamos nro
coeficiente forma los coeficientes del nro
mensa guardamos el texto correspondiente, si el número es
binario u octal
nuevonro número convertido a otra base
Inicio
// Definir e inicializar variables
entero: nro, nro1, base, residuo, nuevonro 0, coeficiente 1
cadena: 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
Fin
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 número ”,nro1,“ en ”, mensa, “es ”, nuevonro)
b) Se plantea una segunda solución usando cadenas, permitiendo concatenar
cada digito del número.
Concatenar significa unir, enlazar elementos de texto en uno solo.
digito = nro Mod base Concatenar ( unir)
cadena = digito + cadena
nro = nro / base
12 Mod 2 = 0 0 + “ ” = 0 12 Div 2 = 6 6 Mod 2 = 0 0 + 0 = 00 6 Div 2 = 3 3 Mod 2 = 1 1 + 00 = 100 3 Div 2 = 1 1 Mod 2 = 1 1 + 100 = 1100 1 Div 2 = 0
El resultado es 1100.
Variables a utilizar en el pseudocódigo
residuo residuo de nro y base
base base que puede se binario u octal
nro número al cual vamos a convertir a otra base
nro1 variable auxiliar donde guardamos nro
mensa guardamos el texto correspondiente, si el número es
binario u octal
nuevonro número 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
Fin
Escribir (“El número ”,nro1,“ en ”, mensa, “es ”, nuevonro)
c) Se plantea una tercera solución usando cadenas, pero en este caso se
procede a calcular conversiones a cualquier base incluyendo la base
hexadecinal.
Para hexadecimal tenemos que tener en cuenta las letras a, b, c, d, e, f para
ello preguntamos si dígito es 10, 11, 12, 13, 14, 15 para lo cual hacemos las
asignaciones correspondientes mediante la operación binario "letra" +
binario.
Si los dígitos son menores o igual que 9 para formar la conversión correspondiente hacemos la operación binario digito + binario.
Variables a utilizar en el pseudocódigo
residuo residuo de nro y base
base base que puede se binario, octal o hexadecimal
nro número al cual vamos a convertir a otra base
nro1 variable auxiliar donde guardamos el nro
mensa variable donde guardamos si el numero es binario, octal
o Hexadecimal
nuevonro número convertido a otra base
Inicio // Definir e inicializar variables
entero: nro, base, residuo, nro1 cadena: nuevonro “ ”, mensa “ ”
// Lectura de datos Escribir (“Ingresar número 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_si
mensa “Binario”
Si (base = 8) entonces mensa “Octal”
Fin_si
Si (base = 16) entonces
mensa “Hexadecimal”
Fin
Fin_si
nro nro Div base
Fin_mientras
Escribir (nro1, “ en base ”, mensa, “ es ”, nuevonro)
4.3.Estructura repetitiva Repetir – Hasta_que
Esta sentencia repite una sentencia o más sentencias hasta que el resultado de
una expresión lógica sea verdadero (true), momento en que termina la
sentencia Repetir y se continúa con el resto del algoritmo. Su sintaxis es la
siguiente:
Repetir
Acción
Hasta_que (expresión_lógica)
Funcionamiento de Repetir – Hasta_que
Cuando la sentencia Repetir – hasta_que inicia su ejecución, se suceden los
siguientes pasos:
a) Se ejecuta la acción (o conjunto de sentencias). b) Se evalúa Expresión_lógica, obteniéndose un resultado lógico.
c) Si este resultado es falso (false), se retorna al paso a.
d) Si este resultado es verdadero (true), la ejecución del pseudocódigo
proseguirá con sentencia siguiente al hasta_que.
Ejemplo 15
Pseudocódigo que imprime los 10 primeros términos de la serie:
1, 3, 5, 7, ...
Observamos que cada término de la serie se incrementa en 2, para lo cual emplearemos la operación termino termino + 2.
Para imprimir los 10 primeros términos se requiere de un contador que empieza en 1 y acaba en 10, de esta manera cada vez que se obtiene un término el
contador se incrementa en 1 para lo cual usaremos con con + 1.
Variables a utilizar en el pseudocódigo
con controla la estructura repetitiva repetir - hasta_que
termino cada uno de los términos 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
Fin
Hasta_que (con = 10)
La siguiente tabla muestra los resultados de la corrida del algoritmo.
Iteración
numero
con
Resultados del
cuerpo del bucle Expresión
lógica
con = 10
Resultado
de la
Expresión lógica
Escribir termino termino =
termino + 2 con =
con + 1
1 1 3 2 2 = 10 false 2 3 5 3 3 = 10 false 3 5 7 4 4 = 10 false
…..
….. ……
…… …..
….. ….
….. ……
…… ……
….. 10 19 21 10 10 = 10 true
Ejemplo 16 Pseudocódigo que encuentra el menor número, de un conjunto de números
positivos ingresados. El pseudocódigo termina cuando se ingresa el cero o un
número negativo.
Asumimos que el valor inicial del menor número es un número grande:
menor 99999, para poder iniciar la comparación con todos los números
ingresados.
Variables a utilizar en el pseudocódigo
nro cada número ingresado
menor menor número
Inicio // Definir e inicializar variables entero: nro, menor 99999
// Calcula e imprime término
Repetir
Escribir (“Ingresar número”) Leer (nro)
Si (nro < menor) entonces
menor nro
Fin
Fin_si
Hasta_que (nro <= 0)
Escribir (“El menor número ingresado es ”, menor)
Ejemplo 17
Pseudocódigo que genere una secuencia de números utilizando el siguiente algoritmo:
Que empiece con cualquier número 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 número resultante, la secuencia se puede
repetir indefinidamente.
Por ejemplo si ingresemos el número 7, la secuencia generada seria:
22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1 4 2 1 …
Que se obtuvo de la siguiente manera:
Número Proceso
7
22
11
34
17
52
26
12
40
10
5
16
8
4
2
1
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
Observar que la serie comienza a repetir la serie 4 2 1 indefinidamente, el
algoritmo debe de leer el número inicial, imprimir el número de valores
encontrados hasta la aparición de un valor 1 en la secuencia.
Para los números pares emplearemos la operación: nro nro Div 2
Para los números impares emplearemos la operación: nro 3 * nro + 1
Variables a utilizar en el pseudocódigo
residuo residuo del numero
nro numero inicial de la serie
Inicio
// Definir variables
entero: nro, residuo
// Leer Datos
Escribir (“Ingresar número:”) Leer (nro)
// Calcula la serie
Repetir
residuo nro Mod 2
Si (residuo = 0) entonces
nro nro Div 2
Sino
Fin_si
nro 3 * nro + 1
Fin
Escribir (nro) Hasta_que (nro = 1)
Ejemplo 18
Pseudocódigo que calcule el promedio de números positivos y el promedio de números negativos de un conjunto de números ingresados. El pseudocódigo
termina cuando se ingresa el cero.
Variables a utilizar en el pseudocódigo nro
cada número ingresado sumap
suma de números positivos suman
suma de números negativos
cp contador de números positivos cn
contador de números negativos promp
promedios de los números positivos promn
promedios de los números negativos
Inicio
// Definir e inicializar variables
entero: nro, sumap 0, suman 0, cp 0, cn
0 real: promp, promn
// Ingreso y cálculo
Repetir
Escribir (“Ingresar número”)
Leer (nro)
Si (nro > 0) entonces
sumap sumap + nro
cp cp + 1
Sino Si (nro < 0) entonces
suman suman + nro cn cn + 1
Fin_si
Fin_si
Fin
Hasta_que (nro = 0)
promp sumap / cp
promn suman / cn
Escribir (“El promedio de los números positivos es ”, promp) Escribir (“El promedio de los números negativos es ”, promn)
Ejemplo 19
Pseudocódigo que lee N consumos de un restaurante. Si el consumo ingresado
excede los S/.70.00, se le descontará el 15%. Mostrar el monto de cada
consumo realizado y el total que recauda el restaurante por todos los consumos.
Variables a utilizar en el pseudocódigo
n cantidad de consumos consumo monto consumido
desc descuento
total total que recauda el restaurante con contador
Inicio
// Definir e inicializar variables
entero: n, con 0
real: consumo, desc 0, total 0
Escribir (“Ingresar cantidad de consumos”)
Leer (n)
// Cálculo
Repetir
Escribir (“Ingresar consumo”)
Leer (consumo)
Si (consumo > 70.00) entonces
desc 0.15 * consumo
Fin_si
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 Pseudocódigo 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 pseudocódigo
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
// Cálculo
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 Pseudocódigo que calcula el monto total que se paga por una entrada a un
evento cultural, los precios varían de acuerdo al tipo de entrada:
Tipo Precio (S/.) Vip
Platea
Popular
70.00
50.00
30.00
Además el precio tiene un incremento del 12% por impuesto. Validar el ingreso
de datos.
Variables a utilizar en el pseudocódigo
tipo tipo de entrada
precio precio del producto
inc incremento
Inicio
// Definir variables
real: precio, inc
caracter: tipo
// Cálculo
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
Fin_si Hasta_que (tipo = „V‟ or tipo = „P‟ or tipo = „L‟)
Según sea (tipo)
„V‟: precio 70.00
„P‟: precio 50.00
„L‟: precio 30.00
Fin_según 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 kilómetros durante 10 días, 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 pseudocódigo
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
// Cálculo
Repetir
Escribir (“Ingresar tiempo en minutos”) Leer (tpo)
Si (tpo > 16) entonces
ct ct + 1
Fin
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
Ejemplo 23
Se ingresan los resultados de la evaluación de un cierto número de alumnos del curso de Programación; por cada alumno se informa: su asistencia (1 =
presente; 0 = ausente) y su calificación. A partir de esta información 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 calificación. El pseudocódigo
termina cuando se ingresa como asistencia un valor diferente a 1 ó 0.
Variables a utilizar en el pseudocódigo
asis asistencia del alumno
calf calificación
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
// Cálculo
Repetir Escribir (“Ingresar asistencia (1)Presente, (0)Ausente”)
Leer (asis)
Si (asis = 1)
Escribir (“Ingresar calificación”)
Leer (calf)
suma suma + calf
Fin
Fin_si
Según sea (asis) hacer
1 : cap cap + 1
0 : caa caa + 1
Fin_según
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)
Ejemplo 24
Pseudocódigo que lee de forma consecutiva y aleatoria una serie de números, y
finalice cuando se ingresa un número mayor que la suma de los dos números
anteriores ingresados, mostrándose la cantidad de números ingresados y los
tres números que cumplieron la condición.
Variables a utilizar en el pseudocódigo
nro cada número ingresado
n1 primer número antes del número ingresado
n2 segundo número antes del número ingresado
con contador de números
suma suma del primer y segundo número antes del número ingresado sw bandera
Inicio
// Definir e inicializar variables
entero: nro, sw 0, n1 0, n2 0, con 0, suma
// Cálculo
Repetir
Escribir (“Ingresar número”) 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
Fin_si
Sino
Fin_si
n2 nro
Fin
con con + 1
Hasta_que (sw = 1)
Escribir (“La cantidad de números ingresados es ”, con)
Escribir (“Los números que cumplieron la condicion son ”, n1, n2, nro)
Ejemplo 25
Pseudocódigo que lee números de forma consecutiva y aleatoria hasta que se
ingrese el número 0 (cero). Calcular la suma de todos los números ingresados
antes de que aparezca el primer número mayor a 150, asi como la suma de
todos los números que entran a continuación de éste, hasta la aparición del
cero.
Mostrar la cantidad de números ingresados (sin contar el cero ni el primer número mayor de 150), en la primera y la segunda suma.
Contemplar la posibilidad de que entre antes el 0 que el primer número mayor
de 150.
Variables a utilizar en el pseudocódigo
nro cada número ingresado
suma1 primera suma
suma2 segunda suma
con contador de números sw bandera
Inicio
// Definir e inicializar variables
entero: nro, sw 0, suma1 0, suma2 0, con 0
// Cálculo
Repetir Escribir (“Ingresar número”)
Leer (nro)
Si (nro <> 0) entonces
con con + 1
Fin_si
Si (sw = 1) entonces suma2 suma2 + nro
Fin_si
Si ((nro < 150) and (sw = 0)) entonces
suma1 suma1 + nro
Sino
Fin_si
sw = 1
con con - 1
Fin
Hasta_que (nro = 0)
Escribir (“La cantidad de números 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 préstamo completo. Parte del pago mensual
serán 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 préstamo aún 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 Amortización Interés Interes
Acumulado Préstamo
Pendiente Couta
(Y) 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
150.00
142.50
133.875
123.956
112.55
99.4321
84.347
66.999
47.0489
24.1062
150.00
292.50
426.375
550.331
662.881
762.3131
846.6601
913.6591
960.708
984.8142
950.00
892.50
826.375
750.3312
662.8809
562.3129
446.6599
313.6589
160.7079
0
200
200
200
200
200
200
200
200
200
200
1000.00
Variables a utilizar en el Pseudocódigo
x monto prestado i interes
y monto que se devuelve
ma monto aplicado al capital
inte interés generado
suma suma de intereses
Inicio
// Definir e inicializar variables real: x, i, inte, y, ma, suma 0
// Leer dato
Escribir (“Ingresar monto prestado”) Leer (x)
Escribir (“Ingresar interes”)
Leer (i)
Escribir (“Ingresar monto que se devuelve”)
Leer (y)
Repetir
inte (i/100) * x
Escribir (“El interes del mes es”, inte)
ma y - inte
Si (y > x) entonces Escribir (“El monto aplicado al capital es ”, x)
Sino
Fin_si
Escribir (“El monto aplicado al capital es ”, ma)
x x - ma
Si (x < 0) entonces
Escribir (“El monto pendiente es 0”) Escribir (“Se le devuelve ”, -x)
Sino
Fin_si
Escribir (“El monto pendiente es ”,x)
Fin
suma suma + inte
Hasta_que (x > 0)
Escribir (“La cantidad acumulada de interés es ”, suma)
4.4.Estructura repetitiva Desde – Fin_desde
La sentencia Desde, repite una o más acciones un número determinado de
veces. Se utiliza cuando se conoce por anticipado el número de veces que se
van a repetir estas acciones. Su sintaxis es la siguiente:
Desde (i Valor_Inicial) hasta (expresión_Lógica) con incremento N hacer
Acción
Fin_desde
Valor_Inicial: especifica el primer valor asignado a la variable de control.
Esta inicialización se realiza solo la primera vez que se repite el bucle.
Expresión_Lógica: esta expresión debe ser verdadera para que se ejecute el
bucle. La expresión_Lógica se compara con la variable de control cada vez
que se repite el bucle.
Incremento N: indica el valor que va ha aumentar o disminuir a la variable de control.
Funcionamiento de Desde – Fin_desde
Cuando la sentencia Desde inicia su ejecución, se suceden los siguientes pasos:
Se asigna un Valor_Inicial a la variable de control, en nuestro caso i.
Si la variable de control cumple la expresión_Lógica, se ejecuta la acción
luego se incrementa (o disminuye) la variable de control. Si la variable de control no cumple la Condición se ejecuta la sentencia
siguiente a Fin_desde.
Ejemplo 27
Pseudocódigo que calcule la suma de los cuadrados y los cubos de los N
primeros números naturales.
Variables a utilizar en el pseudocódigo n cantidad de números naturales
nro cada número natural
cuad cuadrado del número
cubo cubo del número
raiz raíz cuadrada del número
Inicio
// Definir e inicializar variables
entero: n, nro, cuad, cubo, sumaCuad 0, sumaCubo 0
// Leer dato
Escribir (“Ingresar cantidad de números naturales”)
Leer (n) 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
Escribir(“La suma de los cuadrados es ”, sumaCuad)
Escribir(“La suma de los cubos es ”, sumaCubo)
Fin
Explicación
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 números que se desea sumar mediante la variable n:
Escribir (“Ingresar cantidad de números naturales”)
Leer (n)
Enseguida se ejecuta la sentencia Desde, en el que se asigna a la variable nro el
valor de 1 y se evalúa la expresión lógica (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 expresión 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 expresión lógica (nro<=n) llega a ser falso el bucle termina y se
ejecuta la sentencia escribir y finaliza el pseudocódigo: Escribir(“La suma de los cuadrados es ”, sumaCuad)
Escribir(“La suma de los cubos es ”, sumaCubo)
Ejemplo 28 Pseudocódigo que calcula el numero PI, de acuerdo a la siguiente fórmula:
PI/4 = 1 - 1/3 + 1/5 - 1/7 + ...
El número de términos debe ser ingresado.
Variables a utilizar en el pseudocódigo
n cantidad de números
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 términos”)
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
Pseudocódigo para encontrar todos los divisores de un número ingresado. Un
número a es divisor de otro número b, cuando el residuo de la división de b
entre a es cero, en otras palabras cuando el residuo es exacto.
Así pues, decimos que 5 es divisor de 20, porque 20 Mod 5 nos da residuo cero.
Por ejemplo, los divisores de 24 son: 1, 2, 3, 4, 6, 8, 12, 24, para hallar estos
valores es necesario dividir al número 24 con valores comprendidos entre 1 y
24, los cuales se trabajarán mediante la variable i, si el residuo de la división
del número 24 entre i es cero entonces i es uno de los divisores de 24.
Nro Mod i
24 Mod 1 = 0 entonces 1 es divisor de 24
24 Mod 2 = 0 entonces 2 es divisor de 24
24 Mod 3 = 0 entonces 3 es divisor de 24
24 Mod 4 = 0 entonces 4 es divisor de 24
24 Mod 5 <> 0 entonces 5 no es divisor de 24 y así sucesivamente
Variables a utilizar en el pseudocódigo
nro número al cual calculamos sus divisores
i divisor del numero
Inicio
// Definir e inicializar variables entero: nro, i 1
// Leer datos
Escribir (“Ingresar número”)
Leer (nro) Desde (i 1) hasta (i <= nro) con incremento 1 hacer
Si (nro Mod i = 0) entonces Escribir (i)
Fin
Fin_si
Fin_desde
Ejemplo 30 Pseudocódigo que calcule el factorial de un número entero. El factorial de un
número n se representa por n! y su fórmula es:
n ! = 1 * 2 * 3 * 4 * … * (n-2) * (n-1) * n
Así por ejemplo:
1 ! = 1
2 ! = 1 * 2 = 2
3 ! = 1 * 2 * 3 = 6
4 ! = 1 * 2 * 3 * 4 = 24
4 ! = 3 ! * 4 = 24
Se observa que el factorial de 4 es el factorial de 3 multiplicado por 4, quiere
decir que el factorial de n es el factorial de (n -1) multiplicado por n.
n! = (n-1)! * n
Esto nos sirve para implementar la lógica del programa empleando:
fact fact * i
Variables a utilizar en el pseudocódigo
i controla el bucle desde fact calcula el factorial
nro numero al cual se va a calcular el factorial
Inicio
// Definir e inicializar variables entero i, nro, fact 1
// Leer Datos
Escribir (“Ingresar número:”)
Leer (nro)
// Calcula el factorial
Desde (i 1) hasta (i <= nro) con incremento 1 hacer
fact fact * i
Fin_desde
Escribir (“El factorial es: ”, fact)
Fin
La siguiente tabla muestra los resultados de la corrida del algoritmo para 5!
Iteración Nro
i
Expresión
lógica
i<=5
Valor de la
Expresión
lógica
Resultados
del cuerpo
del bucle
Incremento
i = i + 1 fact = fact * i 1 1<= 5 true 1 2 2 2<= 5 true 2 3 3 3 <=5 true 6 4 4 4 <=5 true 24 5 5 5<= 5 true 120 6 6 6<= 5 false Finaliza la sentencia desde
Ejemplo 31
Pseudocódigo que obtenga el cuadrado de un número entero utilizando la
formula:
n2
= 1 + 3 + 5 + . . . + 2n-1.
Para obtener cada termino de la serie emplearemos la fórmula 2 * n – 1.
Si n = 1 2 * 1 – 1 = 1
Si n = 2 2 * 2 - 1 = 3
Si n = 3 2 * 3 – 1 = 5
Posteriormente es necesario sumar cada uno de los términos empleando la operación suma suma + termino.
1 0 + 1
4 1 + 3
9 4 + 5
Variables a utilizar en el pseudocódigo
i controla el bucle desde suma cuadrado de un número
termino cada termino de la serie
nro número al cual se va a calcular su cuadrado
Inicio
Fin
// Definir e inicializar variables
entero: nro, i, termino, suma 0
// Leer Datos
Escribir (“Ingresar número:”)
Leer (nro) Desde (i 1) hasta (i <= nro) con incremento 1 hacer
termino 2 * i - 1
Escribir (termino)
suma suma + termino
Fin-desde
Escribir (“El número al cuadrado es : ”, suma)
Ejemplo 32
Pseudocódigo para determinar si un año es bisiesto en un rango dado. Un año es bisiesto si es múltiplo de 4 pero no múltiplo de 100 excepto los múltiplos de
400.
Como tenemos que hallar los años bisiestos en un rango, empleamos un bucle
repetitivo que permita recorrer los años determinados en el rango añoinicio y
añotermino que definen el año de inicio y término respectivamente, de esta
manera usamos un contador año que empieza en añoinicio y termina en
añotermino que se irá incrmentando en 1, el mismo que definirá cada año que se evalúa como bisiesto. De esta manera, dentro del bucle realizamos los
cálculos correspondientes
Variables a utilizar en el pseudocódigo añoinicio año el cual vamos a empezar la búsqueda
añotermino año el cual vamos a terminar la búsqueda
a cada uno de los años comprendidos en un rango
Inicio
// Definir variables
entero: añoinicio, añotermino, a
// Leer dato
Escribir (“Ingresar año inicial y año final”)
Leer (añoinicio, añotermino) Desde (a añoinicio) hasta (a <= añotermino) con incremento 1 Hacer
Si ((a Mod 4 = 0) and (a Mod 100 <> 0) or (a Mod 400 = 0)) entonces Escribir (“El año ”, a, “es bisiesto”)
Fin
Fin_si
Fin_desde
Ejemplo 33
Pseudocódigo que muestra y calcula el promedio de todos los números pares
comprendidos entre a y b. Indistintamente a puede ser menor que b o b menor
que a.
Variables a utilizar en el pseudocódigo
a, b límites
n1, n2 auxiliares
nro número evaluado como par entre los límites a y b
suma suma de números pares
con contador de números pares prom promedio
Inicio
// Definir e inicializar variables entero: a, b, nro, suma 0, con 0
real: prom
// Leer Datos Escribir (“Ingresar límites:”)
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
Fin_si
Fin-desde
prom suma / con
Escribir (“El promedio es ”, prom)
Ejemplo 34
Pseudocódigo que lee dos números, el primero representa el número a ser
transformado, y el segundo el transformador, se debe hacer girar hacia la
derecha el número a transformarse, tantas veces lo indique el transformador, e ir desplegando el número después de cada transformación.
Ejemplo: Primer número: 35241, Segundo número: 4 Girado a la derecha se tiene
Número de giros Transformaciones
1
2
3
4
13524
41352
24135
52413
Variables a utilizar en el Pseudocódigo
n1 número a transformar
n2 número transformador
aux auxiliar
dig dígito
cd cantidad de dígitos
con contador
Inicio
// Definir e inicializar variables
entero: n1, n2, aux, dig, cd 0, con
// Leer dato
Escribir (“Ingresar dos números”)
Leer (n1, n2) aux n1
Mientras (aux > 0) hacer dig aux Mod 10
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 número transformado es ”, n1)
Ejemplo 35
Pseudocódigo para averiguar si un número ingresado es primo. Un número es
primo, si solo tiene como divisores al mismo número y a la unidad.
Variables a utilizar en el pseudocódigo
d posibles divisores del número ingresado
con contador de divisores del número
nro numero ingresado
Inicio // Declarar e inicializar variables
entero: nro, d, con 0
// Leer Datos
Escribir (“Ingresar número:”)
Leer (nro)
Desde (d 1) hasta (d <= nro) con incremento 1 hacer
Si (nro Mod d = 0) entonces con con + 1
Fin
Fin_si
Fin-desde
Si (con <= 2)
Escribir (“El número es primo”)
Sino
Escribir (“El número no es primo”)
Fin_si
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 pseudocódigo
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 promedio de salarios
con 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
Fin_si
suma suma + sal
Según sea (sexo) hacer
„M‟ : conVar conVar + 1
„F‟ : conMuj conMuj + 1
Fin_según
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)
Ejemplo 37
Pseudocódigo que indica mediante un mensaje si dos números son amigos o no.
Se dice que dos números son amigos si la suma de los divisores del primer
número (excepto él mismo) coincide con el segundo número 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 pseudocódigo nro1 primer número ingresado
nro2 segundo número ingresado
d posibles divisores de los números ingresados sin incluir el
mismo número
suma1 suma de los divisores del primer número ingresado
suma2 suma de los divisores del segundo número ingresado
Inicio
// Definir e inicializar variables
entero: nro1, nro2, d, suma1 0, suma2 0
// Leer Datos
Escribir (“Ingresar primer número:”)
Leer (nro1) Escribir (“Ingresar segundo número:”)
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
Fin_si
Fin-desde
Si (suma1 = nro2 and suma2 = nro1)
Escribir (“Los números ”, nro1, “y ”, nro2, “son amigos”)
Sino
Escribir (“Los números ”, nro1, “y ”, nro2, “no son amigos”)
Fin_si
Ejemplo 38
Se ha seleccionado n números de personas para realizar una encuesta, en un
proceso repetitivo se ingresa el grado de instrucción y la edad de cada persona.
Se desea saber el promedio de edades, la mayor edad y el porcentaje de
personas con instrucción Primaria, Secundaria y Superior (P, S, R).
Variables a utilizar en el pseudocódigo
n cantidad de personas encuestadas
edad edad de cada persona
grad grado de instrucción de cada persona
suma suma de edades
prom promedio de edades
mayor mayor edad
conp cantidad de personas con instrucción primaria
cons cantidad de personas con instrucción secundaria
conr cantidad de personas con instrucción superior
p1 porcentaje de personas con instrcucción primaria
p2 porcentaje de personas con instrcucción secundaria
p3 porcentaje de personas con instrcucción 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 instrucción (P)rimaria, (S)ecunadaria, supe(R)ior:”) Leer (grad)
Escribir (“Ingrese edad:”)
Leer (edad)
suma suma + edad
Si (edad > mayor) entonces mayor edad
Fin
Fin_si
Según sea (grad) hacer
„P‟: conp conp + 1
„S‟: cons cons + 1
„R‟: conr conr + 1
Fin_según
Fin-desde
prom suma / n
p1 (conp * 100) / n p2 (cons * 100) / n
p3 (conr * 100) / n
Escribir (“El promedio de edades es ”, prom)
Escribir (“La mayor edad es ”, mayor)
Escribir (“El porcentaje de personas con instrucción primaria es ”, p1) Escribir (“El porcentaje de personas con instrucción secundaria es ”, p2)
Escribir (“El porcentaje de personas con instrucción superior es ”, p3)
4.5.Variantes de las estructuras repetitivas
4.5.1. Bucles anidados Los bucles anidados, son bucles incluidos dentro de otro bucle. Se pueden
tener los siguientes tipos de anidamiento:
a) Un bucle Mientras dentro de un bucle Mientras, Repetir – Hasta_que o
Desde.
b) Un bucle Repetir – Hasta_que dentro de un bucle Repetir – Hasta_que,
Mientras o Desde.
c) Un bucle Desde dentro de un bucle Desde, Mientras o Repetir –
Hasta_que.
Consideraciones a tener en cuenta al trabajar con bucles
Un bucle interno debe de estar completamente dentro del bucle externo que lo contiene de lo contrario si los bucles se cruzan se obtendrían
resultados no previstos.
Cuando se construyan los bucles anidados considere cada bucle como
una sentencia y siga la sintaxis ya definida para ellas.
Ejemplo 39 Bucle anidado Desde dentro de otro Desde, para hallar la tabla de multiplicar
del 1 y del 2. Se pide la siguiente salida:
Tabla de multiplicar del 1
1 * 1 = 1
1 * 2 = 2
…….
1 * 12 = 12
Tabla de multiplicar del 2
2 * 1 = 2
2 * 2 = 4
……
2 * 12 = 24
Observamos que en la tabla del 1, el primer número aparece fijo mientras
que el segundo número varia de 1 a 12, incrementándose cada número en
1, lo mismo sucede en la tabla del 2.
Para calcular el producto emplearemos la operación:
m = i * j
Tenemos bucles anidados donde el bucle externo varía de 1 a 2, y el bucle interno de 1 a 12
Variables a utilizar en el pseudocódigo
i controla el bucle externo
j controla el bucle interno
m producto de los números 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 cuál ha sido el promedio más alto, de un
conjunto de 120 alumnos, sabiendo que cada alumno a llevado 5
asignaturas.
Variables a utilizar en el pseudocódigo
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 1
// 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
Pesudocódigo que reduce una fracción a su mínima expresión. Por ejemplo:
Si se ingresa 36 / 48
num den
36 48 2
18 24 2
9 12 3 3 4
En su mínima expresión es 3 / 4
Variables a utilizar en el pseudocódigo
num numerador
den denominador
d divisor
Inicio
// Definir e inicializar variables
entero: num, den, d 2
// Leer Datos
Escribir (“Ingresar fracción:”) 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 fracción en su mínima expresión es: ”, num, “/”, den)
Fin
Ejemplo 42
Pseudocódigo 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 pseudocódigo
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
Mientas (con <= n)
Repetir Escribir (“Ingresar nota”)
Leer (nota)
Hasta_que(nota >= 0 and nota <= 20)
suma suma + nota con con + 1
Si (nota < menor)
menor nota
Fin_si
Fin_mientras
prom (suma – menor) / (n – 1)
Escribir (“El promedio es ”, prom)
Ejemplo 43
Pseudocódigo para encontrar todos los números que sean capicúas en un rango dado. Un número es capicúa o poliandro, si al invertir el número nos
da el mismo número.
Por ejemplo, los siguientes números son capicúas.
44 44 373 373 18481 18481
Así, para determinar si el número 44 es capicúa, emplearemos la variable
inver que guardará el resultado de invertir el número 44, de esta manera, si inver es igual a 44 entonces es número capicúa.
Es necesario guardar el número 44 en otra variable por que al calcular el
número invertido perderá su valor original, que es indispensable para
realizar la comparación final.
Se pide que hallar los capicúas de un rango determinado, para esto
utilizamos las variable vi y vf que representan los valores inicial y final
respectivamente, el contador i que indica cada uno de los números que
existe dentro del rango dado, este contador empieza en vi y termina en vf incrementándose en una unidad. Dentro del bucle guardamos i en nro, para
no perder el valor original del número que se esta evaluando.
El bucle interno se encarga de invertir nro, y guardarlo en la variable inver
cuando acaba este bucle incrementamos i para empezar nuevamente el ciclo
externo.
Variables a utilizar en el pseudocódigo
digito cada digito del número
vi número inicial
vf número final
nro variable auxiliar donde guardamos cada número a invertir
inver número invertido
Inicio
// Definir e inicializar variables
entero: vi, vf, nro, digito, inver 0, i
// Leer datos
Escrbir (“Ingresar el valor inicial y final de un rango de números”) Leer (vi, vf)
// Calcula número capicúa
Desde (i vi) hasta (i<= vf) com incremento 1 Hacer nro i
inver 0
Mientras (nro >0) Hacer digito nro Mod 10
inver 10 * inver + digito
nro nro Div 10
Fin_ mientras
Si (inver = i) entonces
Escribir (inver)
Fin
Fin_si
Fin_desde
Ejemplo 44
Pseudocódigo para buscar el número del tarot de una persona; para hallar el
número del tarot, se tiene que sumar cada uno de los números de la fecha
de nacimiento de una persona y a continuación reducirlos hasta obtener un
solo dígito.
Por ejemplo, para una fecha: 17/10/1970, se realiza:
17 + 10+ 1970 = 1997 1 + 9 + 9 + 7 = 26 2 + 6 = 8
El número del tarot calculado es 8
Para realizar este calculo, el algoritmo pide una fecha en el formato
dd/mm/aa, donde dd es el dia, mm es el mes y aa es el año.
La suma de cada una de estas variables que compone la fecha, se realiza
mediante la operación: nro dd + mm + aa, que en valores es:
nro 17 + 10 + 1970 = 1997
Luego, tenemos que descomponer nro, hallando cada dígito e ir sumándolo.
Para este caso emplearemos las operaciones:
digito nro Mod 10, para hallar cada dígito.
tarot tarot + digito, para sumar cada dígito
nro nro Div 10, para acortar el número
Al acabar la primera iteración del bucle, obtendremos el valor de 26 para la
variable tarot, pero como el enunciado nos pide que el número del tarot sea
de un solo digito, entonces es necesario repetir el mismo proceso, para lo
cual hacemos nro tarot utilizando otro bucle que sea externo.
Variables a utilizar en el pseudocódigo
digito cada digito del número d día de nacimiento
m mes de nacimiento
a año de nacimiento
nro número al cual vamos a calcular el tarot
tarot número de tarot
Inicio
// Definir e inicializar variables
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 número del tarot es ”, tarot)
Ejemplo 45
Pseudocódigo para hallar los números primos en un rango dado, un número es primo si es divisible por si mismo y por la unidad. Algunos números
primos son:
1 2 3 5 7 11 13
Por ejemplo, si queremos determinar si el número 11 es primo, primero
hallamos todos los divisores del número y mediante un contador calculamos
la cantidad de divisores que tiene el número, luego comparamos si la
cantidad de divisores es menor o igual que 2, entonces el número evaluado
es número primo.
Como tenemos que hallar los números primos en un rango determinado, es
necesario usar dos bucles repetitivos. Un primer bucle al que llamamos bucle
externo, que nos permite recorrer cada número (nro) definido en el rango vi
y vf. Un segundo bucle, llamado bucle interno que se encarga de calcular la
cantidad de divisores que tiene cada número del rango, mediante un
contador p. Finalmente, al acabar el bucle interno se pregunta si p <= 2 si
cumple es primo, luego se incrementa nro para ir nuevamente al bucle
externo.
Variables a utilizar en el pseudocódigo digito cada digito del número
vi número inicial
vf número final
nro variable auxiliar donde guardamos el nro
p contador de números primos
k contador que representa los posibles divisores
i controla el bucle mientras
Inicio
// Definir variables
entero: vi, vf, nro, k, p
// Leer datos
Escribir (“Ingresar valor inicial y final de un rango”)
Leer (vi, vf)
// Calcula los números primos
Desde (nro vi) hasta (nro <= vf) con incremento 1 hacer
p 0
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
Fin_si
Fin_desde
Ejemplo 46
Pseudocódigo que solicite un valor no negativo (si se ingresa un valor
negativo volverá a pedir el número hasta que se ingrese un número positivo), una vez ingresado el número mostrar los números naturales desde
el 1 hasta el número ingresado de forma consecutiva de manera que se vaya
mostrando un número 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 pseudocódigo
nro número ingresado
aux guarda el valor original del número ingresado
con contador de líneas de impresión
n cada número impreso
Inicio // Definir variables
entero: nro, aux, con, n
// Leer Datos
Repetir
Escribir (“Ingresar número:”)
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
Pseudocódigo que permita ingresar números enteros, y calcule el factorial de
cada número ingresado. El algoritmo termina cuando se ingresa un número
negativo.
Variables a utilizar en el pseudocódigo
nro número ingresado
fact factorial
con contador
Inicio
// Definir variables
entero: nro, fact, con
// Leer Datos
Repetir
Escribir (“Ingresar número:”)
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 días 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 mañana es de
S/23.00 y para el turno tarde S/25.40. Además, si un obrero trabajó durante
una semana más de 40 horas, se le pagará S/.12.00 por cada hora adicional a las 40.
Variables a utilizar en el pseudocódigo
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 día
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)añana, (T)arde”)
Leer (tur)
Escribir (“Ingresar cantidad de horas trabajadas”) Leer (hor)
Según sea (tur) hacer
„M‟: pagoDia hor * 23.00
Fin
„T‟ : pagoDia hor * 25.40
Fin_según 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)
4.5.2. Bucles infinitos
Son bucles que nunca terminan (no tienen fin). Pueden implementarse
fácilmente utilizando las sentencias Mientras o Repetir – Hasta_que.
Generalmente son condiciones no deseadas y el programador las utiliza
según su criterio, colocando en su interior una instrucción que fuerza la
terminación del bucle, para nuestro caso se utiliza la palabra Salir (break).
Para este caso, reemplazamos en la expresión_lógica por verdadero (true)
Mientras (verdadero) Hacer
instrucciones
Si (condición) entonces
Acción
Salir //termina el bucle infinito
Fin_si
Acción
Fin_Mientras
Repetir
instrucciones
Si (condición) entonces
Acción
Salir //termina el bucle infinito
Fin_si
Acción
Hasta_que (verdadero)
Ejemplo 49
Pseudocódigo que genera una secuencia de números utilizando el siguiente
algoritmo:
Empezamos por cualquier número 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 número resultante, la secuencia se
puede repetir indefinidamente, detenerlo hasta que aparezca el primer número 1
Por ejemplo si ingresemos el número 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 número inicial, imprimir el número de valores
encontrados hasta la aparición de un valor 1 en la secuencia.
Variables a utilizar en el pseudocódigo
nro cada número de la serie
Inicio
// Definir variable
entero: nro
// Leer Datos
Escribir (“Ingresar número que inicia la serie:”) Leer (nro)
Mientras (verdadero) hacer // bucle infinito
Si (nro Mod 2 = 0)
nro nro / 2
Sino
Fin_si
nro 3*nro + 1
Escribir (nro)
Si (nro = 1) entonces // cuando nro es igual a 1
Salir // termina el bucle infinito
Fin
Fin_si
Fin_mientras
Ejemplo 50
Pseudocódigo que muestra el mensaje “BUCLE INFINITO” infinitas veces.
Variables a utilizar en el pseudocódigo
No es necesario el uso de ninguna variable
Inicio
Mientras (verdadero)
Escribir (“BUCLE INFINITO”)
Fin_mientras
Fin
Ejemplo 51
Pseudocódigo que imprima el mensaje es par o impar, en caso se ingrese un
número entre 3 y 13, sino está en el intervalo, imprimir el mensaje “fuera de
rango”.
Variables a utilizar en el pseudocódigo
nro número que se evalúa como par o impar
Inicio
// Definir e inicializar variable lógico: r falso
Repetir
Escribir (“Ingresar número”) Leer (nro)
Si (nro >= 3 and nro <= 13) entonces
Si ( nro Mod 2 = 0 ) entonces Escribir (“Es par”) // es par
Sino
Fin_si
Escribir (“Es impar”) // es impar
r verdadero // r se hace verdadero para que
// salga del bucle infinito
Sino
Fin_si
Hasta_que (r)
Escribir (“No esta entre 3 y 13”) r falso // r se hace falso para que siga en
el bucle infinito
Fin
4.6.Ejercicios propuestos
1. Determinar el factorial de los N primero números pares
Número Factorial 2
4
6
8
2
24
720
40320 2. Escribir un pseudocódigo muestre todos los números de tres cifras tales que
la suma de los cuadrados de sus dígitos sea igual al cociente de la división
entera del número entre 3.
3. Los números 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 números amigos era conocido por los griegos (220, 284). El
siguiente par de números amigos fue descubierto en el siglo XIII y
redescubierto por Fermat en 1636 (los números 17296 y 18416). Descartes
descubrió el siguiente par: 9363584 y 9437056. Todos estos grandes matemáticos se saltaron el par 1184-1210 que fue descubierto por un niño
italiano de 16 años Niccolò Paganini. Elaborar un pseudocódigo que
encuentre todos estos números amigos.
4. El horóscopo de la alquimia, basado en la numerología y las
correspondencias planetarias, te permitirá conocer qué poderosas energías,
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 mágicos. Crearon el horóscopo de los metales, gracias al cuál no sólo conocerás qué
metal te corresponde por tu fecha de nacimiento, sino también el que te rige
cada año. Ponerte joyas con el metal que te pertenezca o llevarlo
simplemente en el bolsillo aumentará los dones que te concede éste y te
aportará protección y suerte.
Elaborar un pseudocódigo que averigüe a qué metal pertenece una persona,
para esto sume los números de tu fecha de nacimiento y a continuación
reducirlos a un sólo dígito. Una vez que tengas el número busca en la tabla
siguiente el metal correspondiente.
Por ejemplo, alguien nacido el 12 de marzo de 1973 estaría bajo la
influencia de: Metal de nacimiento: 1+2+3+1+9+7+3= 26 (2+6) = 8= Níquel
Número Metal Virtudes 1 Plata Seductores y volubles 2 Hierro Dinámicos y combativos 3 Mercurio Locuaces y simpáticos 4 Zinc Impulsivos y serviciales 5 Estaño Inconstantes y sociables 6 Plomo Pesimistas y tímidos 7 Platino Intelectuales y apasionados 8 Niquel Vagabundos y poetas 9 Oro Altruistas y encantadores 0 Cobre Afectuosos y detallistas
Sólo 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 número y el Cobre como metal
correspondiente.
Producto Precio Descuento (%) A
B
C
15.20
12.47
10.50
5. Escribir un pseudocódigo que encuentre el siguiente primo dado un número
ingresado por el usuario. Por ejemplo: si el número ingresado es 20, el
siguiente primo seria 23. 6. Escribir un pseudocódigo que lea un número y lo despliegue como sumas
sucesivas de números. Por ejemplo:
numero = 15245
10000 + 5000 + 200 + 40 + 5
7. Escribir un pseudocódigo para buscar un número cuyo cuadrado sea igual o
más cercano a un número ingresado.
Por ejemplo:
Si se ingresa 14 el cuadrado más cercano es 3.
Si se ingresa 16 el cuadrado más cercano es 4.
8. Escribir un pseudocódigo que lea 100 números positivos de forma aleatoria y consecutiva, calcular y mostrar el mayor número por cada 10 números
ingresados. Además mostrar el mayor número ingresado y diga en que
decena se ingresó.
9. Construir un algoritmo que permita ingresar números enteros, calcular la
suma de los dígitos pares y la suma de sus dígitos impares de cada número
positivo ingresado. El algoritmo termina cuando se ingresa el cero.
10. Se registran las N aulas de la sección secundaria de un centro educativo, y por cada sección se registran los promedios finales de sus M alumnos.
Elaborar un algoritmo que muestre el nombre del mejor alumno de cada
aula y el mejor alumno de toda la sección secundaria, así mismo calcular el
promedio general del aula. 11. Un número perfecto es aquel cuya suma de sus divisores excluyendo el
mismo número da como resultado el número. Por ejemplo 6 es un número
perfecto, porque 1 + 2 + 3 = 6. Se pide elaborar un algoritmo que muestre
los 5 primeros números perfectos.
12. Los números Amstrong o cubos perfectos, son aquellos que sumados sus dígitos al cubo nos da el mismo número. Por ejemplo 153 es un número
Amstrong pues 13 + 53 + 33 = 153. Elaborar un algoritmo que encuentre los 3 primeros números Amstrong.
13. Un centro comercial ofrece tres tipos de productos, como se muestra en el
siguiente cuadro.
El centro comercial vende dichos productos a N número de clientes. Un
cliente cualquiera puede comprar M productos de cada tipo. Se pide elaborar
un algoritmo que calcule el total que paga cada cliente y el total que recauda
el centro comercial.
14. Escribir un pseudocódigo en el que se ingrese un número entre el 1 y el 9
(se pedirá el ingreso de dicho número hasta que cumpla la condición), una vez ingresado el número correcto mostrar la tabla de multiplicar de ese
número, después de mostrar la tabla, el pseudocódigo debe preguntar:
¿Desea ingresar otro número? S/N, si la respuesta es S, se volverá a
ingresar otro número y si la respuesta es N finalizará el pesudocódigo. Las
tablas de multiplicar debe tener el siguiente formato:
5 X 1 = 5
5 X 2 = 10
…
5 X 9 = 45
15. Un almacén 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 específicamente en un
porcentaje de descuento sobre el total de compra el cual varía de acuerdo al
monto:
Por un monto mayor o igual a $500 se hará un descuento del 30%
Por un monto menor de $500 pero mayor o igual a 200 se hará un
descuento del 20%
Por un monto menor de $200 pero mayor o igual a 100 se hará un
descuento del 10%
Se pide elaborar un algoritmo que calcule el monto total que recauda el
almacén, así como, el monto final que paga un cliente. El algoritmo termina
cuando se ingresa una compra negativa.
16. El un proceso repetitivo se ingresa números enteros, se pide elaborar un
algoritmo que calcule el promedio de números negativos. El pseudocódigo
termina cuando se ingresa el número cero.
17. Hacer un algoritmo que lea N consumos de un restaurante. Si el consumo
ingresado excede los 70 soles, el descuento será de 5%. Se pide mostrar el
monto que paga cada cliente.
18. Construir un algoritmo que muestre el mayor y el menor dígito de un
número ingresado.
19. Determinar la suma de los términos que ocupan las posiciones pares y la
suma de los términos que ocupan las posiciones impares, de la siguiente serie, considerando los n primeros términos:
1/3 + 2/5 + 3/7 + 4/9 + 5/11 + ...
20. Un almacén se encuentra de aniversario y ha programado una serie de ofertas. Estas ofertas se basan específicamente en un porcentaje de
descuento sobre el total de compra, de esta manera:
Por una compra mayor o igual a S/.350.00 se hará un descuento del
30%.
Por una compra menor de S/.350.00 pero mayor o igual a S/.200.00 se
hará un descuento del 20%.
Por un monto menor de S/.200.00 pero mayor o igual a S/.100.00 se
hará un descuento del 10%.
Se pide elaborar un algoritmo que calcule el monto total que recauda el almacén por las 25 primeras compras realizadas, así como, el monto final
que paga cada cliente.
21. Una compañía de seguros está preparando un estudio concerniente de todos
sus asegurados. Por cada asegurado se registra los siguientes datos: año de
nacimiento y sexo („M‟ o „F‟), se pide calcular:
El porcentaje de asegurados menores de 30 años
El porcentaje de asegurados de sexo femenino y masculino
La mayor y la menor edad de los asegurados
El registro de asegurados finaliza cuando se ingresa un año negativo. 22. El Ministerio de transportes desea saber, de los N autos que entran a
nuestro país, cuántos entran con calcomanía de cada color. Conociendo el
último dígito de la placa de cada automóvil se puede determinar el color de
la calcomanía, como se muestra en el siguiente cuadro:
Dígito Color 1 o 2
3 o 4
5 o 6
7 o 8
9 o 0
amarilla
negro
rojo
verde
azul 23. Ingresar números enteros y mostrar la cantidad de dígitos que tiene cada
número ingresado. El pseudocódigo termina cuando se ingresa el número
100.
24. Construir un pseudocódigo que calcule y muestre el sueldo de los N empleados de un empresa que trabajan por horas, la tarifa por cada hora
trabajada es única (igual) para todos los empleados, asimismo, calcular la
cantidad de empleados que reciben un sueldo menor a S/.500.00, la
cantidad de empleados que reciben un sueldo entre S/.500.00 y S/.1200.00
y la cantidad de empleados que reciben un sueldo mayor a S/.1200.00. 25. La oficina de bienestar social del ministerio de vivienda, realiza un muestreo
en 10 departamentos de nuestro país, de esta manera por cada
departamento se registran los datos de N personas, como edades y pesos.
Se pide elaborar un algoritmo que determine la cantidad de los niños,
jóvenes, adultos y adultos mayores registrados en cada departamento, el
mayor y el menor peso en cada departamento. Se sabe que:
De 0 a 12 años, es niño
De 13 a 29 años, es joven
De 30 a 59 años, es adulto
De 60 a más años, es adulto mayor.