SlideShare una empresa de Scribd logo
1 de 44
Descargar para leer sin conexión
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
ValorAbsnumero ValorAbsNumero*(-1)
numero > 0
Si 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ón
Si
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"
Si
nota2 < 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 R
A 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
Porcen0.08 Porcen0.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"
Si
mb>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
Si
mb>700 y mb <=4700
mb, "USB 4.7 GB"
Si
mb>4700 y mb <=50000
mb, "CD BluRay"
Si
mb>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 = 01
Si 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 = 0
Si 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
DecenaTrunc((numero Mod 100)/10)
CentenaTrunc(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

Más contenido relacionado

La actualidad más candente (20)

Actividades seminario 9
Actividades seminario 9Actividades seminario 9
Actividades seminario 9
 
Tutorial PSEINT
Tutorial PSEINT Tutorial PSEINT
Tutorial PSEINT
 
arreglos y matrices
arreglos  y matricesarreglos  y matrices
arreglos y matrices
 
Unidad 1 arquitectura de computadoras
Unidad 1 arquitectura de computadorasUnidad 1 arquitectura de computadoras
Unidad 1 arquitectura de computadoras
 
Sistemas operativos procesos
Sistemas operativos   procesosSistemas operativos   procesos
Sistemas operativos procesos
 
Programa de Cola Estática
Programa de Cola EstáticaPrograma de Cola Estática
Programa de Cola Estática
 
Capas de abstracción de la arquitectura de ordenadores
Capas de abstracción de la arquitectura de ordenadoresCapas de abstracción de la arquitectura de ordenadores
Capas de abstracción de la arquitectura de ordenadores
 
Clases y funciones en java
Clases y funciones en javaClases y funciones en java
Clases y funciones en java
 
Formularios en excel_2010
Formularios en excel_2010Formularios en excel_2010
Formularios en excel_2010
 
Sintaxis de los algoritmos estructurados
Sintaxis de los algoritmos estructuradosSintaxis de los algoritmos estructurados
Sintaxis de los algoritmos estructurados
 
Suma binaria
Suma binariaSuma binaria
Suma binaria
 
Decimal empaquetado
Decimal empaquetadoDecimal empaquetado
Decimal empaquetado
 
Reporte metodos de busqueda y ordenamiento
Reporte metodos de busqueda y ordenamientoReporte metodos de busqueda y ordenamiento
Reporte metodos de busqueda y ordenamiento
 
Complemento A Dos
Complemento A DosComplemento A Dos
Complemento A Dos
 
Arreglos c++
Arreglos c++Arreglos c++
Arreglos c++
 
BASE DE DATOS
BASE DE DATOS BASE DE DATOS
BASE DE DATOS
 
Unidad aritmetico logica ALU
Unidad aritmetico logica ALUUnidad aritmetico logica ALU
Unidad aritmetico logica ALU
 
Ejercicios propuesto 3
Ejercicios propuesto 3Ejercicios propuesto 3
Ejercicios propuesto 3
 
Procedimientos_almacenados
Procedimientos_almacenadosProcedimientos_almacenados
Procedimientos_almacenados
 
Estructuras en c++
Estructuras en c++Estructuras en c++
Estructuras en c++
 

Similar a Estructura condicional y selectiva

Fundamentos de Programación - Unidad III Control de Flujo
Fundamentos de Programación - Unidad III Control de FlujoFundamentos de Programación - Unidad III Control de Flujo
Fundamentos de Programación - Unidad III Control de FlujoJosé Antonio Sandoval Acosta
 
Guia didactica programacion estructurada unidad 4
Guia didactica programacion estructurada unidad 4Guia didactica programacion estructurada unidad 4
Guia didactica programacion estructurada unidad 4Sol Hernández
 
Fundamentosdeprogramacion 2
Fundamentosdeprogramacion 2Fundamentosdeprogramacion 2
Fundamentosdeprogramacion 2agustin rojas
 
01 algoritmos
01 algoritmos01 algoritmos
01 algoritmosCarlos
 
01 algoritmos
01 algoritmos01 algoritmos
01 algoritmosCarlos
 
01 algoritmos
01 algoritmos01 algoritmos
01 algoritmosCarlos
 
Trabajos de gambas
Trabajos de gambasTrabajos de gambas
Trabajos de gambasmishelle1996
 
INTRODUCCIÓN ADSI - PARTE 3
INTRODUCCIÓN ADSI - PARTE 3INTRODUCCIÓN ADSI - PARTE 3
INTRODUCCIÓN ADSI - PARTE 3thefasp10
 
Estructuras de control algoritmos dq
Estructuras de control algoritmos   dqEstructuras de control algoritmos   dq
Estructuras de control algoritmos dqDorys Quiroz Quiroz
 
Ejercicios de consola y gráficos en gambas
Ejercicios de consola y gráficos en gambasEjercicios de consola y gráficos en gambas
Ejercicios de consola y gráficos en gambasMicco5W
 
Ejercicios gráficos y de consola en gambas
Ejercicios gráficos y de consola en gambasEjercicios gráficos y de consola en gambas
Ejercicios gráficos y de consola en gambasJimena AR
 
Visual basic actualizado y c -2-1212616707734961-8
Visual basic actualizado y c -2-1212616707734961-8Visual basic actualizado y c -2-1212616707734961-8
Visual basic actualizado y c -2-1212616707734961-8Alejandro Caro
 

Similar a Estructura condicional y selectiva (20)

Informe 1
Informe 1Informe 1
Informe 1
 
Fundamentos de Programación - Unidad III Control de Flujo
Fundamentos de Programación - Unidad III Control de FlujoFundamentos de Programación - Unidad III Control de Flujo
Fundamentos de Programación - Unidad III Control de Flujo
 
Guia didactica programacion estructurada unidad 4
Guia didactica programacion estructurada unidad 4Guia didactica programacion estructurada unidad 4
Guia didactica programacion estructurada unidad 4
 
Fundamentosdeprogramacion 2
Fundamentosdeprogramacion 2Fundamentosdeprogramacion 2
Fundamentosdeprogramacion 2
 
01 algoritmos
01 algoritmos01 algoritmos
01 algoritmos
 
01 algoritmos
01 algoritmos01 algoritmos
01 algoritmos
 
01 algoritmos
01 algoritmos01 algoritmos
01 algoritmos
 
ALGORITMOS
ALGORITMOSALGORITMOS
ALGORITMOS
 
Dfsi
DfsiDfsi
Dfsi
 
Gambas
GambasGambas
Gambas
 
Trabajos de gambas
Trabajos de gambasTrabajos de gambas
Trabajos de gambas
 
INTRODUCCIÓN ADSI - PARTE 3
INTRODUCCIÓN ADSI - PARTE 3INTRODUCCIÓN ADSI - PARTE 3
INTRODUCCIÓN ADSI - PARTE 3
 
Estructuras de control algoritmos dq
Estructuras de control algoritmos   dqEstructuras de control algoritmos   dq
Estructuras de control algoritmos dq
 
03 iteracion
03 iteracion03 iteracion
03 iteracion
 
Dfsi
DfsiDfsi
Dfsi
 
Ejercicios de consola y gráficos en gambas
Ejercicios de consola y gráficos en gambasEjercicios de consola y gráficos en gambas
Ejercicios de consola y gráficos en gambas
 
Ejercicios gráficos y de consola en gambas
Ejercicios gráficos y de consola en gambasEjercicios gráficos y de consola en gambas
Ejercicios gráficos y de consola en gambas
 
Visual basic actualizado y c -2-1212616707734961-8
Visual basic actualizado y c -2-1212616707734961-8Visual basic actualizado y c -2-1212616707734961-8
Visual basic actualizado y c -2-1212616707734961-8
 
Dfsi1
Dfsi1Dfsi1
Dfsi1
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 

Más de Ecler Mamani Vilca

Taller de tesis en informática por Ecler MV
Taller de tesis en informática por Ecler MVTaller de tesis en informática por Ecler MV
Taller de tesis en informática por Ecler MVEcler Mamani Vilca
 
Pizarra digital de bajo costo basado en Wiimote y su satisfacción por el Usuario
Pizarra digital de bajo costo basado en Wiimote y su satisfacción por el UsuarioPizarra digital de bajo costo basado en Wiimote y su satisfacción por el Usuario
Pizarra digital de bajo costo basado en Wiimote y su satisfacción por el UsuarioEcler Mamani Vilca
 
Fracasos y triunfos de la tecnología
Fracasos y triunfos de la tecnologíaFracasos y triunfos de la tecnología
Fracasos y triunfos de la tecnologíaEcler Mamani Vilca
 
6 libro fundamentos cap__modularidad_ecler mv
6 libro fundamentos cap__modularidad_ecler mv6 libro fundamentos cap__modularidad_ecler mv
6 libro fundamentos cap__modularidad_ecler mvEcler Mamani Vilca
 
Programación a través de la creación de mundos flisol
Programación  a través de la creación de mundos flisolProgramación  a través de la creación de mundos flisol
Programación a través de la creación de mundos flisolEcler Mamani Vilca
 
Ecler software educativo intercultural
Ecler software educativo interculturalEcler software educativo intercultural
Ecler software educativo interculturalEcler Mamani Vilca
 
Qué y cómo enseñar computación e informática
Qué y cómo enseñar computación e informáticaQué y cómo enseñar computación e informática
Qué y cómo enseñar computación e informáticaEcler Mamani Vilca
 
Virus de USB como detectar y eliminar
Virus de USB como detectar y eliminarVirus de USB como detectar y eliminar
Virus de USB como detectar y eliminarEcler Mamani Vilca
 

Más de Ecler Mamani Vilca (8)

Taller de tesis en informática por Ecler MV
Taller de tesis en informática por Ecler MVTaller de tesis en informática por Ecler MV
Taller de tesis en informática por Ecler MV
 
Pizarra digital de bajo costo basado en Wiimote y su satisfacción por el Usuario
Pizarra digital de bajo costo basado en Wiimote y su satisfacción por el UsuarioPizarra digital de bajo costo basado en Wiimote y su satisfacción por el Usuario
Pizarra digital de bajo costo basado en Wiimote y su satisfacción por el Usuario
 
Fracasos y triunfos de la tecnología
Fracasos y triunfos de la tecnologíaFracasos y triunfos de la tecnología
Fracasos y triunfos de la tecnología
 
6 libro fundamentos cap__modularidad_ecler mv
6 libro fundamentos cap__modularidad_ecler mv6 libro fundamentos cap__modularidad_ecler mv
6 libro fundamentos cap__modularidad_ecler mv
 
Programación a través de la creación de mundos flisol
Programación  a través de la creación de mundos flisolProgramación  a través de la creación de mundos flisol
Programación a través de la creación de mundos flisol
 
Ecler software educativo intercultural
Ecler software educativo interculturalEcler software educativo intercultural
Ecler software educativo intercultural
 
Qué y cómo enseñar computación e informática
Qué y cómo enseñar computación e informáticaQué y cómo enseñar computación e informática
Qué y cómo enseñar computación e informática
 
Virus de USB como detectar y eliminar
Virus de USB como detectar y eliminarVirus de USB como detectar y eliminar
Virus de USB como detectar y eliminar
 

Estructura condicional y selectiva

  • 1. 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++
  • 2. 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
  • 3. 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
  • 4. 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(); }
  • 5. 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.
  • 6. 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 ValorAbsnumero ValorAbsNumero*(-1) numero > 0 Si No En NS Inicio Escribir: "Ingrese un numero" Leer: numero Escribir: "El valor absoluto es ",ValorAbs Fin
  • 7. 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++
  • 8. 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ón Si 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.
  • 9. 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
  • 10. 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" Si nota2 < 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
  • 11. 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
  • 12. 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(); }
  • 13. 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 R A 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:
  • 14. 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
  • 15. 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
  • 16. 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
  • 17. 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(); }
  • 18. 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
  • 19. 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
  • 20. 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.
  • 21. 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
  • 22. 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º.
  • 23. 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 "
  • 24. 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(); }
  • 25. 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.
  • 26. 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 Porcen0.08 Porcen0.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.
  • 27. 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" Si mb>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.
  • 28. Pág. 28 Aprenda Programación con C++ y Python Fin Si mb>700 y mb <=4700 mb, "USB 4.7 GB" Si mb>4700 y mb <=50000 mb, "CD BluRay" Si mb>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.
  • 29. 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
  • 30. 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(); }
  • 31. 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
  • 32. 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
  • 33. 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 = 01 Si 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).
  • 34. 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.
  • 35. 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
  • 36. 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:
  • 37. 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.
  • 38. 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 = 0 Si 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.
  • 39. 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
  • 40. 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 DecenaTrunc((numero Mod 100)/10) CentenaTrunc(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.
  • 41. 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
  • 42. 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(); }
  • 43. 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
  • 44. Pág. 44 Aprenda Programación con C++ y Python