Upload
ecler-mamani-vilca
View
457
Download
4
Embed Size (px)
Citation preview
Pág. 1
Ecler Mamani Vilca
III. Estructura Condicional y Selectiva
DEFINICIÓN Las estructuras condicionales permiten comparar una variable contra otro(s) valor (es), para que en
base al resultado de esta comparación, se siga un curso de acción dentro del programa. Cabe
mencionar que la comparación se puede hacer contra otra variable o contra una constante, según se
necesite.
Aquí es donde cobran su importancia los datos booleanos y los operadores lógicos y relacionales
que aprendimos en el capítulo sobre los tipos de datos. Existen tres tipos básicos de estructuras
condicionales:
Simple
Compuesta
Múltiples (anidadas)
Selectivas
Estructura Condicional Simple (Si) Es una estructura de decisión que permite ejecutar un bloque de procesos, solo si cumple una
determinada condición dando respuesta solo al proceso verdadero, caso contrario no realiza nada.
Esta estructura esta constituida del siguiente modo:
Condición
//Procesos
Si
En DFD
Proceso
Condición
Si
En NS
Si (condición) Entonces
//Procesos
FinSi
Pseudocódigo
If condición :
//Procesos
Phyton If (condición ) {
//Procesos
}
C++
Pág. 2
Aprenda Programación con C++ y Python
a) Análisis del problema
Es necesario encontrar el total mediante: total prod1+prod2+prod3
La condición es; Si total > 200 Entonces descuento total * 0.15, para otro caso no se
realiza ningún procedimiento.
El costo total es: total-descuento
Declaración de variables e identificadores
Variable de Entrada: Numérico real prod1, prod2, prod3
Variable de Salida: Numérico real descuento, total
b) Algoritmos
Ejemplo 01: El centro comercial “Presto”, tiene una promoción con un descuento del 15%
por el consumo de tres producto cuyo costo sea mayor a S/. 200. Realice un algoritmo que
permita generar el descuento y precio total.
En pseudocódigo
//Ejm 01. Algoritmo que realiza un descuento de 15%
//por la compra de de mas S/.200 para tres productos Inicio
descuento 0 Escribir "Ingrese el precio de 3 productos " Leer prod1, prod2,prod3 total prod1+prod2+prod3 //se inicia la condición Si total > 200 Entonces descuento <- total * 0.15 FinSi //finaliza la condición Escribir "El total es S/.",total Escribir "Desc. 15% x cons. > 200 S/. ",descuento Escribir "El pago total es S/.",total-descuento
Fin
Inicio
Escribir: "Ingrese el precio de 3 productos "
Leer: prod1, prod2,prod3
descuento total * 0.15
Si
total > 200
total prod1+prod2+prod3
Escribir: "Total es S/.", total
Escribir: "Desc. 15% ", descuento
Escribir: "El pago total es S/.",total-descuento
Fin
En NS
Pág. 3
Ecler Mamani Vilca
Inicio
“Ingrese precio de 3 producto”
prod1, prod2, prod3
total > 200
descuento total * 0.15
Si
“Total ”,total
“Desc. X 15% ”,Descuento
"Total es ",total-descuento
Fin
total prod1+prod2+prod3
c) Prueba de escritorio
Prod1 Prod2 Prod3 Total Condición Valor Descuento Total
80 150 80 310 310>200 Si 310*0.15 = 46.5 310 – 46.5 = 263.5
30 23 50 103 103>200 ---- ---------- 103 – 0= 103
d) Codificación en lenguaje de programación En Python y C++, es necesario inicializar con algún valor aquellas variables que no tienen
valor, para nuestro caso, la variable descuento inicializaremos con cero.
descuento 0
En DFD
Pág. 4
Aprenda Programación con C++ y Python
En Python la estructura son identados (orden y tabulaciones), La forma más simple de un
estamento condicional es un if seguido de la condición a evaluar, dos puntos (:).
En C++, los procesos que son de una más de una línea, deben estar encerrados por llaves, las
llaves indica el inicio “{” y fin ”}”, como se muestra en el siguiente ejemplo.
En Python
#Ejm 01. Programa que realiza un descuento de 15% #por la compra de de mas S/.200 para tres productos descuento = 0 print "Ingrese el precio de 3 productos " prod1=float(input()) prod2=float(input()) prod3=float(input()) total = prod1+prod2+prod3 #se incia la condicion if total > 200 : descuento = total * 0.15 #finaliza la condición print "El total es S/.",total print "Desc. 15% x consumo > a 200: S/. ", descuento print "El pago total es S/.", total-descuento
En C++
//Ejm 01. Programa que realiza un descuento de 15%
//por la compra de de mas S/.200 para tres productos
#include<iostream>
#include<conio>
main() {
float descuento, prod1, prod2, prod3;
float total;
descuento=0;
cout<<"Ingrese el precio de 3 productos ";
cin>>prod1>>prod2>>prod3;
total=prod1+prod2+prod3;
if (total>200) { //inicio de la condicion
descuento=total*0.15;
} //fin de la condicion
cout<<"El total es S/."<<total<<endl;
cout<<"Desc. 15% x consumo > a 200: S/. "<<descuento<<endl;
cout<<"El pago total es S/."<<total-descuento<<endl;
getch();
}
Pág. 5
Ecler Mamani Vilca
Estructura Condicional doble (Si - Entonces) Las estructuras condicionales dobles permiten elegir entre dos opciones o alternativas posibles en
función de a la condición. Se representa de la siguiente forma:
Condición
//Procesos
Si
En DFD
//Procesos
No
Proceso Proceso
Condición > 5
Si No
En NS
a) Análisis del problema Para encontrar el valor absoluto de un número se debe:
La condición es; Si el numero > 0, ValorAbs numero, (el valor es el mismo)
Sino cambiamos de signo: ValorAbs numero * (-1)
Declaración de variables e identificadores
Variable de Entrada: Numérico real numero
Variable de Salida: Numérico real ValorAbs
Si (condición) Entonces
//Proceso1
Sino
//Proceso2
FinSi
Pseudocódigo if condición :
//procesos
else:
//procesos
Phyton if (condición ) {
//Procesos
}else{
//Procesos
}
C++
Ejemplo 02: Realizar un algoritmo para encontrar el valor absoluto de un número.
Pág. 6
Aprenda Programación con C++ y Python
b) Algoritmos
numero>0
ValorAbs numero
Si
ValorAbs numero * (-1)
No
Inicio
“Ingrese un numero”
numero
"El valor es ", ValorAbs
Fin
En DFD
En Pseudocódigo
//Ejm 02, algoritmo que permite generar //el valor absoluto de un número Inicio
Escribir "Ingrese un numero" Leer numero Si numero > 0 Entonces ValorAbs numero Sino ValorAbs numero * (-1) FinSi Escribir "El valor absoluto es ", valorAbs
Fin
ValorAbsnumero ValorAbsNumero*(-1)
numero > 0Si No
En NS
Inicio
Escribir: "Ingrese un numero"
Leer: numero
Escribir: "El valor absoluto es ",ValorAbs
Fin
Pág. 7
Ecler Mamani Vilca
c) Prueba de escritorio
numero Condición Valor ValorAbs
20 20 > 0 Si 20
-15 -15 > 0 No -15*-1=15
e) Codificación en lenguaje de programación
Estructura Condicional Múltiple Las estructuras de comparación múltiples, son tomas de decisión especializada que permiten
comparar variables contra distintos posibles resultados, ejecutando para cada caso una serie de
instrucciones específicas, las formas anidadas (son condiciones dentro de condiciones) o cascada
(una cadena de condiciones), y sus combinaciones varían según el planteamiento del problema
La forma común es la siguiente:
En Python
#Ejm 02. Programa que permite generar #el valor absoluto de un numero print "Ingrese un numero” numero=float(input()) if numero > 0 : valorAbs = numero else: valorAbs = numero * (-1) print "El valor absoluto es ", valorAbs
En C++
//Ejem. 02, programa que permite generar
//el valor absoluto de un numero
#include<iostream>
#include<conio>
main() {
float numero, ValorAbs;
cout<<"Ingrese un numero ";
cin>>numero;
if (numero > 0) {
ValorAbs=numero;
} else {
ValorAbs=numero*(-1);
}
cout<<"El valor absoluto es "<<ValorAbs;
getch();
}
Si (condición) Entonces
//Procesos
Else
Si (condición) Entonces
//Procesos
Finsi
FinSi
Pseudocódigo if condición :
//Procesos
else:
if condicion
Phyton if (condición ) {
//Procesos
}else{
if (condicion){
//Procesos
}
}
}
C++
Pág. 8
Aprenda Programación con C++ y Python
Condición
//Procesos
Si
En DFD
//Procesos
No
Procesos
Si No
Procesos
Si
Condicion
En NS
CondiciónSi
Condicion
a) Análisis del problema
En la validación las notas deben ser valores entre 0 y 20, sino escribir error
Debemos ordenar comparando las notas y encontramos la nota menor
Calcular el promedio ((nota1 + nota2 + nota3 + nota4) - NotaMenor )/3
Declaración de variables e identificadores Variable de Entrada: Numérico real nota1, nota2, nota3, nota4
Variable de Salida: Numérico real promedio, NotaMenor
d) Algoritmos
Pseudocódigo //Ejem 03, elimina la nota más baja de 4 y promedia las restantes Inicio Escribir "Ingrese 4 notas" Leer nota1, nota2, nota3, nota4 //validado los datos Si ( nota1 < 0 o nota1 > 20 o nota2 < 0 o nota2 > 20 o nota3 < 0 o nota3 > 20 o nota4 < 0 o nota4 > 20) Entonces Escribir "Error en ingreso de datos" Sino // encuentra la nota menor NotaMenor nota1 Si (nota2 < NotaMenor ) Entonces NotaMenor nota2 FinSi Si (nota3 < NotaMenor) Entonces NotaMenor nota3 FinSi Si (nota4 < NotaMenor ) Entonces NotaMenor nota4 FinSi
Ejemplo 03: El docente del curso, otorga el beneficio de los 4 exámenes se anula la nota mas
baja y se promedia con tres restantes. Diseñar el algoritmo validando los datos.
Pág. 9
Ecler Mamani Vilca
// calcula el promedio promedio ((nota1 + nota2 + nota3 + nota4) - NotaMenor )/3 // Salida de resultados Escribir "Nota eliminada", NotaMenor Escribir "Promedio final", promedio FinSi Fin
En NS
Inicio
Escribir: "Ingrese notas"
Leer: nota1, nota2, nota3, nota4
Fin
Es :
"Error en ingreso de
datos”
nota2 < NotaMenor
nota1 < 0 o nota1 > 20 o nota2 < 0 o nota2 > 20 o
nota3 < 0 o nota3 > 20 o nota4 < 0 o
nota4 > 20
NotaMenor nota2
Si
Si
NotaMenor nota1
nota3 < NotaMenor
NotaMenor nota3
Si
nota4 < NotaMenor
NotaMenor nota4
Si
Promedio (nota1+nota2+nota3+nota4-NotaMenor )/3
Es: "Nota eliminada", NotaMenor
Es: "Promedio final", promedio
No
Pág. 10
Aprenda Programación con C++ y Python
nota1 < 0 o
nota1 > 20 o nota2 < 0 o
nota2 > 20 o nota3 < 0 o
nota3 > 20 o nota4 < 0 o
nota4 > 20
Si No
Inicio
“Ingrese notas”
nota1, nota2, nota3, nota4
En DFD
Fin
"Error en ingreso de datos"
Sinota2 < NotaMenor
NotaMenor nota2
NotaMenor nota1
nota2 < NotaMenor
NotaMenor nota3
nota2 < NotaMenor
NotaMenor nota4
Si
Si
Promedio(nota1+nota2+nota3+nota4-NotaMenor )/3
"Nota eliminada",NotaMenor
"Promedio final", promedio
Pág. 11
Ecler Mamani Vilca
e) Prueba de escritorio
Nota1 Nota2 Nota3 Nota4 NotaMenor Condición Valor NotaMenor
18 12 05 14 18 -- -- 18
-- -- -- -- -- (nota2 < NotaMenor) 12<18 Si 12
-- -- -- -- -- (nota3 < NotaMenor) 05<12 Si 05
-- -- -- -- -- (nota4 < NotaMenor) 14<05 No 05
03 15 12 11 03 -- -- 03
-- -- -- -- -- (nota2 < NotaMenor) 15<03 No 03
-- -- -- -- -- (nota3 < NotaMenor) 12<03 No 03
-- -- -- -- -- (nota4 < NotaMenor) 11<03 No 03
f) Codificación en lenguaje de programación
En Python
#Ejem 03, elimina la nota más baja de 4 y promedia las restantes
print "Ingrese 4 notas"
nota1=float(input())
nota2=float(input())
nota3=float(input())
nota4=float(input())
#validado los datos
if (nota1 <0 or nota1>20 or nota2 <0 or nota2>20 or nota3 <0 or
nota3>20 or nota4 <0 or nota4>20) :
print "Error en ingreso de datos"
else:
#determina la nota menor
NotaMenor = nota1
if nota2 < NotaMenor :
NotaMenor = nota2
if nota3 < NotaMenor :
NotaMenor = nota3
if nota4 < NotaMenor :
NotaMenor = nota4
#determina el promedio
promedio =((nota1 + nota2 + nota3 + nota4) - NotaMenor )/3
#salida de resultados
print "Nota eliminada", NotaMenor
print "Promedio final",promedio
#fin de la condición general
Pág. 12
Aprenda Programación con C++ y Python
En C++
//Ejem 03, elimina la nota más baja de 4 y promedia las restantes
#include<iostream>
#include<conio>
main() {
float nota1,nota2,nota3,nota4;
float NotaMenor, promedio;
cout<<"Ingrese 4 notas ";
cin>>nota1>>nota2>>nota3>>nota4;
//validado los datos
if (nota1< 0 || nota1 > 20 || nota2 < 0 || nota2 > 20 ||
nota3< 0 || nota3 > 20 || nota4 < 0 || nota4 > 20) {
cout<<"Error en ingreso de datos"<<endl;
} else { //determina la nota menor
NotaMenor = nota1;
if (nota2<notamenor) {
NotaMenor = nota2;
}
if (nota3< NotaMenor) {
NotaMenor = nota3;
}
if (nota4< NotaMenor) {
NotaMenor = nota4;
}
//determina el promedio
promedio = ((nota1+nota2+nota3+nota4) - NotaMenor)/3;
cout<<"Nota eliminada"<<notamenor<<endl;
cout<<"Promedio final"<<promedio<<endl;
}
getch();
}
Pág. 13
Ecler Mamani Vilca
Estructura selectiva La estructura según, (switch = selector), Permite ejecutar una de varias acciones, en función del
valor de una expresión. Aquí no tenemos una condición que se debe cumplir sino el valor de una
variable. Dependiendo del valor se cumplirá un caso u otro, as tenemos las siguientes sintaxis:
La mayoría de los lenguajes de programación cuentan con ésta estructura, en Python aun no esta
implementado, en lugar de ello se usa una serie de bloques if-elif-else
V
1 2 3 De otro modo
A B C RA B
De otro
modo
V
C R
1 2 3
En NSEn DFD
Servicio Normal, costo del pasaje a 80, con descuento del 10%
Servicio Bus Cama, costo del pasaje a 100, con descuento del 15%
Servicio Premium, costo del pasaje a 130, con descuento del 20%
Servicio Presidencial, costo del pasaje a 150, con descuento del 30%
Hallar el costo, descuento y costo total del pasaje.
a) Análisis del problema
Crearemos un menú de opciones
Para hallar el descuento se tiene; descuento promo*precio
Segun variable Hacer
opcion_1: //procesos
opcion_2: //procesos
:
De Otro Modo:
//procesos
FinSegun
Pseudocódigo Variable
if Variable == 1:
//procesos
elif Num == 2:
//proceso
: else:
//procesos
Python switch ( variable ) {
case 1 : //procesos break;
case 2 : //procesos break;
:
default : //procesos
}
C++
Ejemplo 04: La empresa de Servicio a la capital de la República se encuentra de aniversario
por lo cual brinda en sus servicios las siguientes promociones:
Pág. 14
Aprenda Programación con C++ y Python
Declaración de variables e identificadores
Variable de Entrada: Numérico entero opcion
Variable de Salida: Numérico real descuento, promo, precio
b) Algoritmos
En Pseudocódigo
//Ejemplo 04. Imprime un boleto de venta con descuento
// de promoción por tipo de servicio a elegir
Inicio
//se muestra el menu de opciones
Escribir "======= Menu de opciones ======="
Escribir " 1. Servicio Normal "
Escribir " 2. Servicio Bus Cama "
Escribir " 3. Servicio Premiun "
Escribir " 4. Servicio Presidencial "
Escribir "======= Elija opción [1-3] ======="
Leer opcion
// Se inicia el selector
Segun opcion Hacer
1: Escribir "===Servicio Normal==="
promo 0.10
precio 80
2: Escribir "===Servicio Bus Cama==="
promo 0.15
precio 100
3: Escribir "===Servicio Premium==="
promo 0.20
precio 120
4: Escribir "===Servicio Presidencial==="
promo 0.30
precio 150
//En caso de no cumplirse (1 a 4)
De Otro Modo: Escribir "Opcion Incorrecta"
FinSegun
//finaliza selector
descuento <- promo*precio
//muestra resultado
Escribir "Costo del Boleto S/.", precio
Escribir "Descuento x promoción S/.", descuento
Escribir "Costo total S/.", precio – descuento
Fin
Pág. 15
Ecler Mamani Vilca
En NS
Es: “Servicio Normal”
promo 0.10
precio 80
opcion
Inicio
Es: "======= Menu de opciones ======="
Es: " 1. Servicio Normal "
Es: " 2. Servicio Bus Cama "
Es: " 3. Servicio Premiun "
Es: " 4. Servicio Presidencial "
Es: "======= Elija opción [1-3] ======="
Leer opcion
Es: “Serv. Bus cama”
promo 0.15
precio 100
Es: “Serv. Premium”
promo 0.20
precio 120
Es: “Serv. Presidencial”
promo 0.30
precio 150
Es: “Opción
incorrecta”
1 2 3 4
De otro
modo
opcion
Descuento promo*precio
Es: "Costo del boleto S/.", precio
Es: "Descuento x promoción S/.", descuento
Es: "Costo total del boleto S/.", precio - descuento
Fin
Inicio
"==== Menu de opciones ===="
" 1. Servicio Normal "
" 2. Servicio Bus Cama "
" 3. Servicio Premiun "
" 4. Servicio Presidencial "
"===== Elija opción [1-3] ===="
opcion
En DFD
1
Pág. 16
Aprenda Programación con C++ y Python
opcion
1 De otro modo
1
2 3 4
“Serv. Normal” “Ser. Bus cama” “Ser. Premium” “S.Presidencial” “Op. Incorrecta”
promo 0.15
precio 100
promo 0.10
precio 80
promo 0.20
precio 120
promo 0.30
precio 150
descuento promo*precio
"Costo del boleto S/.", precio
"Descuento x promoción S/.", descuento
"Costo total S/.", precio - descuento
Fin
c) Prueba de escritorio
Opcion Nota2 Descuento Costo Total
1 promo 0.10
precio 80 0.10*80=8 80 - 8 =72
2 promo 0.15
precio 100 0.15*100=15 100-15=85
3 promo 0.20
precio 120 0.20*120=24 120-24=96
4 promo 0.30
precio 150 0.30*150=45 150-45=105
Pág. 17
Ecler Mamani Vilca
d) Codificación en lenguaje de programación
En C++
//Ejemplo 04. Imprime un boleto de venta con descuento
//de promoción por tipo de servicio a elegir
#include<iostream>
#include<conio>
main() { //declaracion de variables
float descuento=0, opcion, precio=0, promo=0;
//se muestra el menu de opciones
cout<<"======= Menu de opciones ======="<<endl;
cout<<" 1. Servicio Normal "<<endl;
cout<<" 2. Servicio Bus Cama "<<endl;
cout<<" 3. Servicio Premiun "<<endl;
cout<<" 4. Servicio Presidencial "<<endl;
cout<<"======= Elija opción [1-3] ======="<<endl;
cin>>opcion;
// Se inicia el selector
switch (int(opcion)) {
case 1: cout<<"===Servicio Normal==="<<endl;
promo=0.10;
precio=80;
break;
case 2: cout<<"===Servicio Bus Cama==="<<endl;
promo=0.15;
precio=100;
break;
case 3: cout<<"===Servicio Premiun==="<<endl;
promo=0.20;
precio=120;
break;
case 4: cout<<"===Servicio Presidencial==="<<endl;
promo=0.30;
precio=150;
break;
//En caso de no cumplirse las opciones de (1 a 4)
default: cout<<"Opcion Incorrecta"; break;
} //finaliza selector
descuento=promo*precio;
//muestra resultado
cout<<"Costo del Boleto S/."<<precio<<endl;
cout<<"Descuento x promocion S/."<<descuento<<endl;
cout<<"Costo total S/."<<(precio-descuento);
getch();
}
Pág. 18
Aprenda Programación con C++ y Python
En Python
#Ejemplo 04. Imprime un boleto de venta con descuento
#de promoción por tipo de servicio a elegir
promo=0
precio=0
descuento = 0
#muestra el menu de opciones
print "======= Menu de opciones ======="
print " 1. Servicio Normal "
print " 2. Servicio Bus Cama "
print " 3. Servicio Premiun "
print " 4. Servicio Presidencial "
print "======= Elija opción [1-3] ======="
opcion=int (raw_input())
#Se inicia el condicional
if opcion == 1:
print "===Servicio Normal==="
promo = 0.10
precio = 80
elif opcion == 1:
print "===Servicio Bus Cama==="
promo= 0.15
precio = 100
elif opcion == 2:
print "===Servicio Bus Cama==="
promo= 0.15
precio = 100
elif opcion == 3:
print "===Servicio Premium==="
promo = 0.20
precio = 120
elif opcion == 4:
print "===Servicio Presidencial==="
promo = 0.30
precio = 150
#En caso de no cumplirse (1 a 4)
else:
print "Opcion Incorrecta"
#finaliza condiciones
descuento = promo*precio
#muestra resultado
print "Costo del Boleto S/.", precio
print "Descuento x promoción S/.", descuento
print "Costo total S/.", precio - descuento
Pág. 19
Ecler Mamani Vilca
Ejercicios
a) Análisis del problema
Si pasa de 40 horas:
Hallamos el numero de HorasExtra horas-40
El incremento del 50% por la tarifa, PagoExtra (tarifa*0.50)*Horasextra
El paga al obrero es: SNeto PagoExtra+horas*tarifa
Si no llega a las 40 horas: SNeto horas*tarifa
Declaración de variables e identificadores Variable de Entrada: Numérico entero horas
Variable de Salida: Numérico real Horasextra, PagoExtra, SNeto
Ejercicio 01: Una institución financiera realiza el pago a un obrero, si la cantidad de horas
trabajadas es mayor a 40 horas. La tarifa se incrementa en un 50% para las horas extras. Se
conoce que la tarifa hora es de S/. 25.00
Pág. 20
Aprenda Programación con C++ y Python
b) Algoritmos
a) Análisis del problema Si dividimos cualquier valor entre 3 y su resto es cero, es divisible por 3, el mismo caso será
para 5.
Si: numero mod 3 = 0, es múltiplo de 3
Si: numero mod 5 = 0, es múltiplo de 5
Declaración de variables e identificadores
Variable de Entrada: Numérico entero numero
Variable de Salida: Numérico entero numero
Mensaje
En Pseudocódigo
//Ejercicio Nº 01
// Si la cantidad de horas trabajadas es mayor a 40 horas
//La tarifa se incrementa en un 50% para las horas extras
Inicio
Escribir "Ingrese horas trabajadas:"
Leer horas
tarifa 25
Si (horas < = 40) Entonces
SNeto horas*tarifa
Sino //Si las horas son mayores a 40
HorasExtra horas-40
PagoExtra (tarifa*0.50)*Horasextra
SNeto PagoExtra+horas*tarifa
FinSi
// Mostrando resultados
Escribir "Horas extras = ",HorasExtra
Escribir "Pago Extra S/. ",PagoExtra
Escribir "El salario del trabajador es: ",SNeto
Fin
Ejercicio 02: Diseñe un diagrama NS que identifique si un número es múltiplo de 3 y 5, o
simplemente múltiplo de 3 o 5.
Pág. 21
Ecler Mamani Vilca
c) Algoritmos en NS
Es: numero, " es multiplo solo de 3" Es: numero,"no es multiplo de 3"
numero mod 3 = 0 Si No
Inicio
Escribir: "Ingrese un numero"
Leer: numero
Escribir: numero, " es multiplo de 3 y 5"
Si
Es: numero, " es multiplo solo de 5" Es: numero,"no es multiplo de 5"
numero mod 5 = 0 Si No
numero mod 3 =0 y numero mod 5=0
Fin
Cuestión previa.
Para generar números no predecibles se hace uso de una función denominado Azar en ingles
Radom, esta genera un número aleatorio R, donde 0 <= R <= X-1 para todo X>1 y R= 0 para
todo X<=1.
Ejemplo
Azar (8), genera {0, 1, 2, 3, 4, 5, 6 ,7 ,8}
Si deseamos anular el cero, para el caso del dado seria:
Azar (6) + 1, genera {1, 2, 3, 4, 5, 6}
a) Análisis del problema
Generamos el dado1 y dado2 con:
Ejercicio 03: En el juego de dados se tiene las siguientes reglas; Gana el que más puntaje
tiene en la suma del lanzamiento de dos dados, el jugador de Caja gana si el resultado es
empate. Realizar un DFD
Pág. 22
Aprenda Programación con C++ y Python
dado1 Azar(6)+1
dado2 Azar(6)+1
Si retador > caja, gana el retador, en todos los demás casos diferentes perderá.
Declaración de variables e identificadores Variable generados aleatoriamente: Numero entero dado1 y dado2
Variable de Salida: Numérico real dado1, dado2, retador, caja
b) Algoritmo en DFD
No
Inicio
Si
retador > caja
"Gana retador con ",retador
dado1 Azar(6)+1
dado2 Azar(6)+1
retador dado1 + dado2
"Retador ",dado1, " ",dado2
dado1 Azar(6)+1
dado2 Azar(6)+1
caja dado1 + dado2
"Caja ",dado1, " ",dado2
"Gana caja con ",caja
Fin
Ejercicio 04: Realizar un programa en Phyton que clasifiquen los ángulos según su medida en
función al valor ingresado en grados. El programa debe validar los datos entre 0º y 360º.
Pág. 23
Ecler Mamani Vilca
a) Análisis del problema
Generamos el dado1 y dado2 con:
dado1 Azar (6)+1
dado2 Azar (6)+1
Si retador > caja, gana el retador, en todos los demás casos diferentes perderá.
Declaración de variables e identificadores
Variable de Entrada: Numérico entero angulo
Variable de Salida: Mensaje
b) Codificación en Phyton
En Phyton
#Ejercicio Nº 04
#clasifica los tipos de ángulos por el valor ingresado
convexo = int(0)
print "======Clasificacion de los angulos segun su medida===="
print "Ingrese el valor de angulo (0-360)"
angulo= int(raw_input())
if angulo<0 or angulo >360 :
print "Los datos deben estar entre 0 y 360"
else:
if angulo == 0 :
print "Angulo nulo = ",angulo
if angulo == 90 :
print "Angulo recto = ",angulo
convexo=1
if angulo <90 and angulo>0 :
print "Angulo agudo = ",angulo
convexo =1
if angulo > 90 and angulo < 180 :
print "Angulo obtuso = ",angulo
convexo =1
if angulo > 180 and angulo < 360 :
print "Angulo no convexo = ",angulo
if angulo == 180 :
print "Angulo llano = ",angulo
if angulo == 360 :
print "Angulo de una vuelta = ",angulo
if convexo == 1 :
print "Tambien es convexo "
Pág. 24
Aprenda Programación con C++ y Python
a) Análisis del problema
Tomar en referencia el ejemplo 03 de este capitulo
Realizamos una doble comparación para ubicar el menor y mayor
Declaración de variables e identificadores Variable de Entrada: Numérico entero num1, num2, num3
Variable de Salida: Numérico entero min, max
Ejercicio 05: Realizar un programa en C++, que encuentra el mayor y menor de tres valores
ingresados.
En C++
// Ejercicio 05
/Encuentra el mayor y menor de tres valores
#include<iostream>
#include<conio>
main(){
int num1,num2,num3,min,max;
cout<<"ingrese tres numeros"l;
cin>>num1>>num2>>num3;
min=num1;
max=min;
//comparando el menor y mayor numero2
if(min<num2){
if(num2>max){
max=num2;
}
}
else{
min=num2;
}//comparando el menor y mayor numero3
if(min<num3){
if(num3>max){
max=num3;
}
}
else{
min= num3;
}
cout<<"el mayor numero es "<<max<<endl;
cout<<"el menor numero es "<<min<<endl;
getch();
}
Pág. 25
Ecler Mamani Vilca
a) Análisis del problema
Escala Richter Efectos del terremoto
Menos de 3.5 Generalmente no se siente, pero es registrado
3.5 - 5.4 A menudo se siente, pero sólo causa daños menores
5.5 - 6.0 Ocasiona daños ligeros a edificios
6.1 - 6.9 Puede ocasionar daños severos en áreas muy pobladas.
7.0 - 7.9 Terremoto mayor. Causa graves daños
8 o mayor Gran terremoto. Destrucción total a comunidades cercanas.
Declaración de variables e identificadores
Variable de Entrada: Numérico real escala
Variable de Salida: Mensaje
b) Algoritmo ( Pseudocódigo ) //Ejercicio 06: Permite describir los efectos del terremoto según la escala Richter.
Inicio
Escribir "Ingrese la magnitud según la escala de Ritcher"
Leer escala
Si (escala < 0 o escala > 10) Entonces //Validando los datos
Escribir "Los datos no son reales "
Sino Si (escala < 3.5) Entonces
Escribir "No se siente, pero es registrado"
FinSi
Si (escala >= 3.5 y escala <=5.4) Entonces
Escribir "A menudo se siente, pero sólo causa daños menores"
FinSi
Si (escala >= 5.5 y escala <=6) Entonces
Escribir "Ocasiona daños ligeros a edificios"
FinSi
Si (escala >= 6.1 y escala <=6.9) Entonces
Escribir "Puede ocasionar daños severos en áreas muy pobladas."
FinSi
Si (escala >= 7 y escala <=7.9) Entonces
Escribir "Terremoto mayor. Causa graves daños"
FinSi
Si (escala > 8 ) Entonces
Escribir "Gran terremoto. Destrucción total a comunidades cercanas."
FinSi
FinSi
Fin
Ejercicio 06. Realizar un pseudocódigo para un sismógrafo, que permita describir los efectos
del terremoto según la magnitud en la escala Richter.
Pág. 26
Aprenda Programación con C++ y Python
a) Análisis del problema
El porcentaje de incremento en el sueldo depende del valor del sueldo actual, los sueldos más
bajos tienen un mayor incremento:
Si sueldo <= 2000, entonces % 10
Si sueldo <= 3000, entonces %8
Para cualquier caso %5
Aumento sueldo * porten
Nuevo sueldo Sueldo + aumento
Declaración de variables e identificadores
Variable de Entrada: Numérico Real sueldo
Variable de Salida: Numérico real Nuevosueldo
b) Algoritmo ( Pseudocódigo )
Porcen 0.10
Sueldo <= 2000
Si No
Inicio
Escribir: "Ingrese sueldo"
Leer: sueldo
Porcen0.08 Porcen0.05
Sueldo <= 3000
Si No
aumento Sueldo * Porcen
Nuevosueldo Sueldo + aumento
Escribir: " Sueldo Total S/.", Nuevosueldo
Fin
Ejercicio 07. Una empresa desea calcular los nuevos salarios de sus empleados de la siguiente
forma: quienes ganan hasta S/. 2000 tendrán un incremento del 10%, quienes obtienen más de
S/. 2000 y hasta 3000 recibirán un aumento del 8% y los demás del 5%. ¿Cuál será el valor del
aumento? ¿Cuál será el valor del nuevo sueldo?. Realizar un diagrama NS.
Pág. 27
Ecler Mamani Vilca
a) Análisis del problema Es necesario conocer las capacidades de estas unidades de almacenamiento, para crear las
condiciones creando intervalos mediante uso de operadores lógicos.
CD-ROM tiene la capacidad de almacenar como máximo 700 Mb.
CD-DVD, almacena máximo 4700 Mb
USB 8GB almacena 8000 Mb
CD-BluRay almacena 50 000 Mb
Declaración de variables e identificadores
Variable de Entrada: Numérico Real mb
Variable de Salida: Mensaje
b) Algoritmo ( Pseudocódigo )
Mb < 0 o Mb > 12000
Si No
Inicio
"Ingrese el valor en MB"
Mb
"Archivo muy pequeño
o Grande"
Simb>0 y mb <=700
mb, "CD-ROM"
1
Ejercicio 08. Se desea almacenar un archivo “video.avi” en Mb, realizar un DFD que muestre
si este archivo, puede ser almacenado en un CD-ROM, CD-DVD, USB 8Gb ó CD-BluRay.
Pág. 28
Aprenda Programación con C++ y Python
Fin
Simb>700 y mb <=4700
mb, "USB 4.7 GB"
Simb>4700 y mb <=50000
mb, "CD BluRay"
Simb>700 y mb <=4700
mb, "CD-DVD"
1
Ejercicio 09. Se cuenta con los votos obtenidos por Ollanta, PPK y Keiko en una elección
democrática a la presidencia de la República. Para ganar la elección se debe obtener como
mínimo el 50% de los votos más 1. En caso que no haya un ganador se repite las elecciones
debe ser anulada. Van a la segunda vuelta los dos candidatos que obtengan la más alta
votación. Realice el código en Phyton.
Pág. 29
Ecler Mamani Vilca
a) Análisis del problema
El ejercicio se encuentra relacionado con el ejemplo de 03 de este capítulo, se trata de ordenar
los tres datos, agregándole los empates.
Para encontrar el 50% del VotoGanador ((vOllanta + vPPK + vkeiko)*0.5) + 1 y realizar
las comparaciones entre los tres datos.
Declaración de variables e identificadores
Variable de Entrada: Numérico entero vOllanta, vPPK, vkeiko
Variable de Salida: Mnesaje
c) Codificación ( Phyton )
En Phyton
#Ejercicios No 09, Determina el ganador de las elecciones de 3 candidatos
#Ingresando los votos
vOllanta=int(raw_input("Ingrese numero de votos de Ollanta "))
vPPK= int(raw_input( "Ingrese numero de votos de PPK "))
vkeiko=int(raw_input("Ingrese numero de votos de Keiko "))
#Determina el voto minimo
VotoGanador = ((vOllanta + vPPK + vkeiko)*0.5) + 1
#Determina el resultado de la elección
if vOllanta >= VotoGanador :
resultado = "Gana Ollanta "
else:
if vPPK >= VotoGanador :
resultado = "Gana PPK"
else:
if vkeiko >= VotoGanador :
resultado = "Gana Keiko"
else:
if vPPK > vOllanta and vkeiko > vOllanta :
resultado = "Pasan a la segunda vuelta PPK y Keiko"
else:
if vPPK > vkeiko and vOllanta > vkeiko :
resultado = "Pasan a la segunda vuelta PPK y Ollanta"
else:
if vkeiko > vPPK and vOllanta > vPPK :
resultado = "Pasan a la segunda vuelta Keiko y Ollanta "
else:
resultado = "las elecciones su anulan"
print resultado
Pág. 30
Aprenda Programación con C++ y Python
a) Análisis del problema Un número es capicúa, cuando el primer digito es igual al último digito, por ejemplo 121, es
capicúa.
unidad = numero mod 10
centena = trunc(numero/100)
Una vez identificado, debemos descomponer el número en unidad y centena, si unidad es
igual a centena, entonces es capicúa, sino, no lo es.
Declaración de variables e identificadores Variable de Entrada: Numérico entero numero
Variables auxiliares: Numérico entero unidad, centena
Variable de Salida: Mensaje
b) Código ( C++ )
Ejercicio 10. Codificar en C++, un programa que permita identificar si un numero de tres
dígitos es capicúa.
En C++
// Ejercicio No 10, programa que identifica un numero capicúa
#include<iostream>
#include<conio>
main(){ int numero; // variables de entrada
int unidad, centena;//variables auxiliares
cout<<"Ingrese un numero de tres digitos";
cin>>numero;
//validando datos
if (numero >=100 && numero<=99)
{
cout<<"El numero no esta en el rango";
}
else{ //descomponiendo el numero
unidad = numero % 10;
centena = int(numero/100);
if (unidad == centena)
cout<<numero<<" es capicua";
else
cout<<numero<<" no es capicua";
}
getch();
}
Pág. 31
Ecler Mamani Vilca
Rango notas Escala literal Descripción
0 - 10 C Inicio
11 - 13 B Proceso
14 -16 A Previsto
17 - 20 AD destacado
a) Análisis del problema Si observamos el cuadro, los rangos de notas se encuentran dentro de intervalos, estos
intervalos de controlan mediante los operadores lógicos para este caso particular, “ Y “ (and).
Declaración de variables e identificadores
Variable de Entrada: Numérico Entero nota
Variable de Salida: Cadena de Carácteres Valor
b) Algoritmo ( Pseudocódigo )
Ejercicio 11. Una profesora de educación primaria necesita automatizar el proceso de ingreso
de notas a la escala literal para niveles de logro de aprendizaje, según el siguiente cuadro:
En Pseudocódigo
//Ejercicio 11, Automatizar el proceso de ingreso de notas a la
//escala literal para niveles de logro de aprendizaje
Inicio
Escribir "Ingrese la nota obtenida”
Leer nota
//validando notas
Si (nota < 0 o nota > 20) Entonces
Escribir "Los valores no son correctos"
Sino //comparando notas
Si nota>=0 y nota<=10 Entonces
valor "C Inicio"
FinSi
Si nota>=11 y nota<=13 Entonces
valor " B en proceso"
FinSi
Si nota>=14 y nota<=16 Entonces
valor " A logro previsto"
FinSi
Si nota>=17 y nota<=20 Entonces
valor " AD logro destacado"
FinSi
//mostrando el valor obtenido
Escribir nota," es equivalente = ",valor
FinSi
Fin
Pág. 32
Aprenda Programación con C++ y Python
Rango notas Escala literal Descripción
0 - 10 C Inicio
11 - 13 B Proceso
14 -16 A Previsto
17 - 20 AD destacado
a) Análisis del problema Si observamos el cuadro, los rangos de notas se encuentran dentro de intervalos, estos
intervalos de controlan mediante los operadores lógicos para este caso particular, “ Y “ (and).
Declaración de variables e identificadores Variable de Entrada: Numérico Entero nota
Variable de Salida: Cadena de Carácteres Valor
b) Algoritmo ( Pseudocódigo )
Ejercicio 12. Una profesora de educación primaria necesita automatizar el proceso de ingreso
de notas a la escala literal para niveles de logro de aprendizaje, según el siguiente cuadro:
En Pseudocódigo
//Ejercicio 11, Automatizar el proceso de ingreso de notas a la
//escala literal para niveles de logro de aprendizaje
Inicio
Escribir "Ingrese la nota obtenida”
Leer nota
//validando notas
Si (nota < 0 o nota > 20) Entonces
Escribir "Los valores no son correctos"
Sino //comparando notas
Si nota>=0 y nota<=10 Entonces
valor "C Inicio"
FinSi
Si nota>=11 y nota<=13 Entonces
valor " B en proceso"
FinSi
Si nota>=14 y nota<=16 Entonces
valor " A logro previsto"
FinSi
Si nota>=17 y nota<=20 Entonces
valor " AD logro destacado"
FinSi
//mostrando el valor obtenido
Escribir nota," es equivalente = ",valor
FinSi
Fin
Pág. 33
Ecler Mamani Vilca
a) Análisis del problema El primer paso es validar los datos del código que deben ser 01 o 02, si esto es verdad se
procede a realizar el descuento si es código uno precio *0.10 sino precio*0.20.
Declaración de variables e identificadores Variable de Entrada: Numérico Entero codigo, precio
Cadena de caracteres NomProducto
Variable de Salida: Numérico real descuento, codigo, precio, precio-descuento
b) Algoritmo ( Pseudocódigo )
descuento = precio * 0.10 descuento = precio * 0.20
Codigo = 01Si No
Inicio
Leer: NomProducto
Escribir: "Ingrese numero de codigo (01-02)"
Leer: codigo
Escribir: " "Ingrese precio del producto"
Leer: precio
Escribir "Codigo = ",codigo
Escribir "Descuento S/.",descuento
Escribir "Total S/.", precio - descuento
Escribir "Nombre ", NomProducto
Es: “Error en ingreso
de clave”
Fin
Si No
codigo = 01 or codigo =02
Escribir: "Ingrese nombre del producto"
Ejercicio 13. Hacer un diagrama NS, que imprima el nombre de un artículo, clave, precio
original y su precio con descuento. El descuento lo hace en base a la clave, si la clave es 01 el
descuento es del 10% y si la clave es 02 el descuento en del 20% (solo existen dos claves).
Pág. 34
Aprenda Programación con C++ y Python
a) Análisis del problema
Es un ejemplo clásico cuyo objetivo es analizar cuidadosamente el procedimiento:
La compra total esta dada por: totcomp costopza * numpza
Veamos la primera condición, Si el monto total de la compra es mayor a S/. 5000, invierte
55% del monto de la compra, pedir prestado al banco un 30% y el resto lo pagara solicitando
un crédito al fabricante.
Si totcomp > 5000 entonces
cantinv totcomp * 0.55
prestamo totcomp * 0.30
credito totcomp * 0.15
Si el monto total de la compra no excede de S/. 5000, es el caso opuesto al anterior (Sino) la
empresa tendrá capacidad de invertir de su propio dinero un 70% y el restante 30% lo pagara
solicitando crédito al fabricante.
cantinv totcomp * 0.70
prestamo 0
credito totcomp * 0.30
El fabricante cobra por concepto de intereses un 20% sobre la cantidad que se le pague a
crédito.
int = credito * 0.20
Declaración de variables e identificadores Variable de Entrada: Numérico real costopza, numpza
Variable de Salida: Numérico real cantinv, prestamo, credito, int
Ejercicio 14. Una empresa quiere hacer una compra de varias piezas de la misma clase a una
fábrica de refacciones. La empresa, dependiendo del monto total de la compra, decidirá que
hacer para pagar al fabricante. Si el monto total de la compra excede de S/. 5000 la empresa
tendrá la capacidad de invertir de su propio dinero un 55% del monto de la compra, pedir
prestado al banco un 30% y el resto lo pagara solicitando un crédito al fabricante.
Si el monto total de la compra no excede de S/. 5000 la empresa tendrá capacidad de invertir
de su propio dinero un 70% y el restante 30% lo pagara solicitando crédito al fabricante.
El fabricante cobra por concepto de intereses un 20% sobre la cantidad que se le pague a
crédito.
Pág. 35
Ecler Mamani Vilca
b) Algoritmo ( DFD )
TotComp > 5000
Cantinv TotComp * 0.55
prestamo TotComp * 0.30
credito TotComp * 0.15
Si
Cantinv TotComp * 0.70
prestamo 0
credito TotComp * 0.30
No
Inicio
“Ingrese precio de la pieza”
CostoPza
"Cantidad invertido ", cantinv
Fin
“Ingrese numero de piezas”
NumPza
TotComp CostoPza * NumPza
int credito * 0.20
"Credito", credito
"Interes ", int
“Prestamo", prestamo
Pág. 36
Aprenda Programación con C++ y Python
Propiedad cancelativa: Si cbacabya 0
Propiedad antisimétrica: ba
ab
y
ba
Propiedad transitiva: ca
cb
y
ba
a) Análisis del problema Mediante el uso de operadores lógicos y relacionales tenemos:
Si a <> 0 y a*b =a*c Entonces, b = c ," Propiedad cancelativa"
Si a <= b y b <= a Entonces, a = b ," Propiedad antisimética"
Si a <= b y b <= c Entonces, a = c ," Propiedad transitiva"
Declaración de variables e identificadores
Variable de Entrada: Numérico Entero a, b, c
Variable de Salida: Mensaje
b) Algoritmo ( NS )
Inicio
Escribir: "Ingrese 3 numeros "
Leer: a, b, c
a <> 0 y a*b =a*c
Escribir b, " = ", c ," Propiedad cancelativa"
Si
a <= b y b <= a
Escribir a, " = ", b ," Propiedad antisimética"
Si
a <= b y b <= c Si
Escribir a, " = ", c ," Propiedad transitiva"
Fin
Ejercicio 15. En el conjunto Z de los número enteros se define la relación de orden “<=”.
Realizar un programa que identifique las siguientes propiedades:
Pág. 37
Ecler Mamani Vilca
a) Análisis del problema Cuando se tienes muchas condicionales, se hace uso de la estructura selectiva, esta permitirá
ejecutar uno de los 7 procesos así tenemos:
Caso 1: “Enero” Caso 5: “Mayo” Caso 9: “Setiembre”
Caso 2: “Febrero” Caso 6: “Junio” Caso 10: “Octubre”
Caso 3: “Marzo” Caso 7: “Julio” Caso 11: “Noviembre”
Caso 4: “Abril” Caso 8: “Agosto” Caso 12: “Diciembre”
Para cualquier otro caso distinto de 1 a 12, error en ingreso de datos
Declaración de variables e identificadores Variable de Entrada: Numérico Entero día
Variable de Salida: Mensaje
b) Algoritmo ( DFD )
1
mes
De otro modo
“Enero”
Fin
“Febrero”
“Marzo”
“Abril”
“Mayo”
“Junio”
“Julio”
“Agost”
“Set.”
“Octu”
“Novie.”
“Diciem.”
“Error”
2 3 4 5 6 7 8 9 10 11 12
Inicio
“Ingrese numero del mes ”
mes
Ejercicio 16. Ingresar números de 1 al 12, y que imprima el respectivo mes en letras. Realizar
su algoritmo en DFD.
Pág. 38
Aprenda Programación con C++ y Python
a) Análisis del problema Cuando se tienes muchas condicionales, se hace uso de la estructura selectiva, esta permitirá
ejecutar uno de los 7 procesos así tenemos:
Caso 1: Num1 + Num2 Caso 3: Num1 * Num2
Caso 2: Num1 - Num2 Caso 4: Num1 / Num2, Solo si Num2 diferente de cero. Para
cualquier otro caso distinto de 1 a 4, error en ingreso de datos.
Declaración de variables e identificadores
Variable de Entrada: Numérico real num1, num2
Variable de Salida: operación
b) Algoritmo ( DFD )
Es: “La suma es”,
Num1+Num2
opcion
Leer Num1, Num2
Escribir "******* Menú **********"
Escribir "1. Suma"
Escribir "2. Resta"
Escribir "3. Producto"
Escribir "4. División"
Escribir "***********************"
Escribir "Ingrese opcion entre [1-4]"
Leer opcion
Es: “La resta es”,
Num1-Num2
Es: “El producto es”,
Num1*Num2
Es: “Opción
incorrecta”
1 2 3 4
De otro
modo
opcion
Fin
Escribir "Ingrese 2 numeros"
Inicio
Es: "Error div 0" Es: num1/num2
num2 = 0Si No
c) Prueba de escritorio
Opcion Num1 Num2 Operación
1 25 5 25+5 =30
2 25 5 25-5=20
3 25 5 25*5 = 125
4 25 5 num2 = 0 : 25/5=5
Ejercicio 17. Realizar un diagrama NS con cuatro operaciones básicas, suma, resta, producto
y división, para dos valores.
Pág. 39
Ecler Mamani Vilca
a) Análisis del problema AFP SuelBruto*0.13
Essalud SuelBruto*0.09
NumHijos == 0 : SueldoNeto = (SuelBruto - (AFP+Essalud))
NumHijos == 1 : SueldoNeto = (SuelBruto - (AFP+Essalud))+50
NumHijos == 2 : SueldoNeto = (SuelBruto - (AFP+Essalud))+100
NumHijos == 3 : SueldoNeto = (SuelBruto - (AFP+Essalud))+150
NumHijos >= 4 : SueldoNeto = (SuelBruto - (AFP+Essalud))+200
Declaración de variables e identificadores Variable de Entrada: Numérico Real SuelBruto
Numérico Entero NumHijos
Variable de Salida: Numérico Real SueldoNeto
b) Codificación
Ejercicio 18. Realizar un programa que permita calcular el sueldo neto con descuento por AFP
de 13%, EsSalud 9% y un beneficio por el numero de hijos, si se tiene 1 se incrementara S/.
50, para 2 S/. 100, para 3 S/. 150 y mas de 4 S/. 200.
En Phyton
#Programa 18: Calclo del sueldo neto + incremento x números de hijos
SuelBruto=float(raw_input("Ingrese el sueldo bruto = "))
AFP = SuelBruto*0.13
Essalud = SuelBruto*0.09
NumHijos = int(raw_input("Ingrese el numero de hijos = "))
#validando datos
if NumHijos < 0:
print "Datos incorrectos"
else:
# Seleccionando numero de hijos y sueldo neto
if NumHijos == 0 :
SueldoNeto = (SuelBruto - (AFP+Essalud))
elif NumHijos == 1 :
SueldoNeto = (SuelBruto - (AFP+Essalud))+50
elif NumHijos == 2 :
SueldoNeto = (SuelBruto - (AFP+Essalud))+100
elif NumHijos == 3 :
SueldoNeto = (SuelBruto - (AFP+Essalud))+150
elif NumHijos >= 4 :
SueldoNeto = (SuelBruto - (AFP+Essalud))+200
# mostrando resultados
print "Numero de hijos = ",NumHijos
print "Sueldo Bruto = S/.",SuelBruto
print " Desc. AFP = S/.",AFP
print " Desc. ESsalud = S/.",Essalud
print "Sueldo Neto = S/. ",SueldoNeto
Pág. 40
Aprenda Programación con C++ y Python
a) Análisis del problema La solución para este problema es descomponer el número de tres dígitos como máximo, en
unidad, decena y centena.
Unidad numero Mod 10
DecenaTrunc((numero Mod 100)/10)
CentenaTrunc(numero/100)
Seguidamente tenemos el orden y el texto en Quechua:
Para Centena Para Decena Para Unidad Para Cero
100 = Pachaq 10 = Chunka 1 = Uq C’husaq
200 = Iskaypachaq 20 = Iskaychunka 2 = Iskay
300 = Kinsapachaq 30 = Kinsachunka 3 = Kinsa
400 = Tawapachaq 40 = Tawachunka 4 = Tawa
500 = Piscapachaq 50 = Pisqachunka 5 = Phisqa
600 = Suqtapachaq 60= Suqtachunka 6 = Suqta
700 = Canchispachaq 70 = Canchischunka 7 = Canchis
800 = Pusaqpachaq 80 = Pusaqchunka 8 = Pusaq
900 = Isqunpachaq 90 = Isqunchunka 9 = Isqun
Condiciones:
Cuando el numero sea cero, debe enviar al inicio cero (“C’husaq)
En el idioma quechua, un solo numero de la unidad y acompañado por otros digitos
en su escritura son diferentes, en el ejemplo se observa:
121 = Pachaq Iskaychunka Uqniyuq
001 = Uq
Por lo tanto si decena=0 y centena=0, mantiene la forma normal para la escritura de
la unidad que se observa en la tabla. Si no fuese así tendrá el sufijo “Yuq” o “Niyuq”
Con 1: Uqniyuq Con 4: Tawayuq Con 7: Canchisniyuq
Con 2: Iskayniyuq Con 5: Phisqayuq Con 8: Pusaqniyuq
Con 3: Kinsayuq Con 6: Suqtayuq Con 9: Isquniyuq
Ejercicio 19. Realizar un programa en C++, que permita convertir un numero de 3 dígitos a
letras en Quechua.
Pág. 41
Ecler Mamani Vilca
Declaración de variables e identificadores
Variable de Entrada: Numérico Entero numero
Variable de Salida: Mensaje de centena, decena y unidad
c) Codificación
En C++
// Prog. 19. Convierte un número máximo de 3 dígitos a letras en idioma Quechua.
//Desarrollado por Ecler MV
#include<iostream>
#include<conio>
#include<math> //por usar floor
main() {
//variables
int centena, decena, numero,unidad;
cout<<"=== CONVIERTE NUMERO MAX DE TRES DIGITOS A QUECHUA===" <<endl;
cout<<"Ingrese numero max de 3 digitos = ";
cin>>numero;
//En caso de que el número sea 0
if (numero == 0)
cout <<numero<< " ==> "<<"C'husaq"<<endl;
else{
//Descomponiendo numero
unidad = numero%10;
decena = floor((numero%100)/10);
centena = floor(numero/100);
cout <<endl<<numero<< " ==> ";
//Para el caso de centena
switch (centena) {
case 0: cout<<" "; break;
case 1: cout<<"Pachaq "; break;
case 2: cout<<"Iskaypachaq "; break;
case 3: cout<<"Kinsapachaq ";break;
case 4: cout<<"Tawapachaq "; break;
case 5: cout<<"Piscapachaq "; break;
case 6: cout<<"Suqtapachaq "; break;
case 7: cout<<"Canchispachaq "; break;
case 8: cout<<"Pusaqpacha "; break;
case 9: cout<<"Isqunpachaq "; break;
}
//Continua el código en la siguiente página
Pág. 42
Aprenda Programación con C++ y Python
//Para el caso de la decena
switch ( decena) {
case 0: cout<<" "; break;
case 1: cout<<"Chunka "; break;
case 2: cout<<"Iskaychunka "; break;
case 3: cout<<"Kinsachunka ";break;
case 4: cout<<"Tawachunka "; break;
case 5: cout<<"Pisqachunka "; break;
case 6: cout<<"Suqtachunka "; break;
case 7: cout<<"Canchischunka "; break;
case 8: cout<<"Pusaqchunka "; break;
case 9: cout<<"Isqunchunka "; break;
}
//Para el caso de cuando es solo unidad
if (decena==0 && centena==0){
switch (unidad) {
case 0: cout<<" "; break;
case 1: cout<<"Uq "; break;
case 2: cout<<"Iskay "; break;
case 3: cout<<"Kinsa ";break;
case 4: cout<<"Tawa "; break;
case 5: cout<<"Phisqa "; break;
case 6: cout<<"Suqta "; break;
case 7: cout<<"Canchis "; break;
case 8: cout<<"Pusaq "; break;
case 9: cout<<"Isqun "; break;
}
}
else{
switch (int(unidad)) {
case 0: cout<<" "; break;
case 1: cout<<"Uqniyuq "; break;
case 2: cout<<"Iskayniyuq "; break;
case 3: cout<<"Kinsayuq ";break;
case 4: cout<<"Tawayuq "; break;
case 5: cout<<"Phisqayuq "; break;
case 6: cout<<"Suqtayuq "; break;
case 7: cout<<"Canchisniyuq "; break;
case 8: cout<<"Pusaqniyuq "; break;
case 9: cout<<"Isquniyuq "; break;
}
}
}
getch();
}
Pág. 43
Ecler Mamani Vilca
a) Análisis del problema No hay mucho análisis para este problema, solo usaremos un selector que coincida el número
de lados y así pueda escribir al polígono al que pertenece.
Declaración de variables e identificadores Variable de Entrada: Numérico entero lados
Variable de Salida: Mensaje
d) Codificación
Ejercicio 20. Clasificar el tipo de polígono según el número de lados. Realizar un
Pseudocódigo.
En Pseudocódigo
//Ejem 19. Clasificacion de polígonos
//Desarrollado por ECLer MV
Inicio
Escribir "===Programa de Clasificación de Polígonos=="
Escribir "Ingrese en número de lados >3 y <15"
Leer lados
Segun lados Hacer
3: Escribir lados, " = Triángulo"
4: Escribir lados, " = Cuadrilátero"
5: Escribir lados, " = Pentágono"
6: Escribir lados, " = Hexágono"
7: Escribir lados, " = Heptágono"
8: Escribir lados, " = Hexágonos"
9: Escribir lados, " = Eneágono"
10: Escribir lados, " = Decágono"
11: Escribir lados, " = Endecágono"
12: Escribir lados, " = Dodecágono"
13: Escribir lados, " = Tridecágono"
14: Escribir lados, " = Tetradecágono"
15: Escribir lados, " = Pentadecágono"
de Otro Modo:
Escribir "No forma un polígono"
FinSegun
Fin
Pág. 44
Aprenda Programación con C++ y Python