4 libro fundamentos _condicional_oficio_2003_para_publicars_slidesharedoc

44
Pág. 1 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++

Transcript of 4 libro fundamentos _condicional_oficio_2003_para_publicars_slidesharedoc

Page 1: 4 libro fundamentos _condicional_oficio_2003_para_publicars_slidesharedoc

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++

Page 2: 4 libro fundamentos _condicional_oficio_2003_para_publicars_slidesharedoc

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

Page 3: 4 libro fundamentos _condicional_oficio_2003_para_publicars_slidesharedoc

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

Page 4: 4 libro fundamentos _condicional_oficio_2003_para_publicars_slidesharedoc

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();

}

Page 5: 4 libro fundamentos _condicional_oficio_2003_para_publicars_slidesharedoc

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.

Page 6: 4 libro fundamentos _condicional_oficio_2003_para_publicars_slidesharedoc

Pág. 6

Aprenda Programación con C++ y Python

b) Algoritmos

numero>0

ValorAbs numero

Si

ValorAbs numero * (-1)

No

Inicio

“Ingrese un numero”

numero

"El valor es ", ValorAbs

Fin

En DFD

En Pseudocódigo

//Ejm 02, algoritmo que permite generar //el valor absoluto de un número Inicio

Escribir "Ingrese un numero" Leer numero Si numero > 0 Entonces ValorAbs numero Sino ValorAbs numero * (-1) FinSi Escribir "El valor absoluto es ", valorAbs

Fin

ValorAbsnumero ValorAbsNumero*(-1)

numero > 0Si No

En NS

Inicio

Escribir: "Ingrese un numero"

Leer: numero

Escribir: "El valor absoluto es ",ValorAbs

Fin

Page 7: 4 libro fundamentos _condicional_oficio_2003_para_publicars_slidesharedoc

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++

Page 8: 4 libro fundamentos _condicional_oficio_2003_para_publicars_slidesharedoc

Pág. 8

Aprenda Programación con C++ y Python

Condición

//Procesos

Si

En DFD

//Procesos

No

Procesos

Si No

Procesos

Si

Condicion

En NS

CondiciónSi

Condicion

a) Análisis del problema

En la validación las notas deben ser valores entre 0 y 20, sino escribir error

Debemos ordenar comparando las notas y encontramos la nota menor

Calcular el promedio ((nota1 + nota2 + nota3 + nota4) - NotaMenor )/3

Declaración de variables e identificadores Variable de Entrada: Numérico real nota1, nota2, nota3, nota4

Variable de Salida: Numérico real promedio, NotaMenor

d) Algoritmos

Pseudocódigo //Ejem 03, elimina la nota más baja de 4 y promedia las restantes Inicio Escribir "Ingrese 4 notas" Leer nota1, nota2, nota3, nota4 //validado los datos Si ( nota1 < 0 o nota1 > 20 o nota2 < 0 o nota2 > 20 o nota3 < 0 o nota3 > 20 o nota4 < 0 o nota4 > 20) Entonces Escribir "Error en ingreso de datos" Sino // encuentra la nota menor NotaMenor nota1 Si (nota2 < NotaMenor ) Entonces NotaMenor nota2 FinSi Si (nota3 < NotaMenor) Entonces NotaMenor nota3 FinSi Si (nota4 < NotaMenor ) Entonces NotaMenor nota4 FinSi

Ejemplo 03: El docente del curso, otorga el beneficio de los 4 exámenes se anula la nota mas

baja y se promedia con tres restantes. Diseñar el algoritmo validando los datos.

Page 9: 4 libro fundamentos _condicional_oficio_2003_para_publicars_slidesharedoc

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

Page 10: 4 libro fundamentos _condicional_oficio_2003_para_publicars_slidesharedoc

Pág. 10

Aprenda Programación con C++ y Python

nota1 < 0 o

nota1 > 20 o nota2 < 0 o

nota2 > 20 o nota3 < 0 o

nota3 > 20 o nota4 < 0 o

nota4 > 20

Si No

Inicio

“Ingrese notas”

nota1, nota2, nota3, nota4

En DFD

Fin

"Error en ingreso de datos"

Sinota2 < NotaMenor

NotaMenor nota2

NotaMenor nota1

nota2 < NotaMenor

NotaMenor nota3

nota2 < NotaMenor

NotaMenor nota4

Si

Si

Promedio(nota1+nota2+nota3+nota4-NotaMenor )/3

"Nota eliminada",NotaMenor

"Promedio final", promedio

Page 11: 4 libro fundamentos _condicional_oficio_2003_para_publicars_slidesharedoc

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

Page 12: 4 libro fundamentos _condicional_oficio_2003_para_publicars_slidesharedoc

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();

}

Page 13: 4 libro fundamentos _condicional_oficio_2003_para_publicars_slidesharedoc

Pág. 13

Ecler Mamani Vilca

Estructura selectiva La estructura según, (switch = selector), Permite ejecutar una de varias acciones, en función del

valor de una expresión. Aquí no tenemos una condición que se debe cumplir sino el valor de una

variable. Dependiendo del valor se cumplirá un caso u otro, as tenemos las siguientes sintaxis:

La mayoría de los lenguajes de programación cuentan con ésta estructura, en Python aun no esta

implementado, en lugar de ello se usa una serie de bloques if-elif-else

V

1 2 3 De otro modo

A B C RA B

De otro

modo

V

C R

1 2 3

En NSEn DFD

Servicio Normal, costo del pasaje a 80, con descuento del 10%

Servicio Bus Cama, costo del pasaje a 100, con descuento del 15%

Servicio Premium, costo del pasaje a 130, con descuento del 20%

Servicio Presidencial, costo del pasaje a 150, con descuento del 30%

Hallar el costo, descuento y costo total del pasaje.

a) Análisis del problema

Crearemos un menú de opciones

Para hallar el descuento se tiene; descuento promo*precio

Segun variable Hacer

opcion_1: //procesos

opcion_2: //procesos

:

De Otro Modo:

//procesos

FinSegun

Pseudocódigo Variable

if Variable == 1:

//procesos

elif Num == 2:

//proceso

: else:

//procesos

Python switch ( variable ) {

case 1 : //procesos break;

case 2 : //procesos break;

:

default : //procesos

}

C++

Ejemplo 04: La empresa de Servicio a la capital de la República se encuentra de aniversario

por lo cual brinda en sus servicios las siguientes promociones:

Page 14: 4 libro fundamentos _condicional_oficio_2003_para_publicars_slidesharedoc

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

Page 15: 4 libro fundamentos _condicional_oficio_2003_para_publicars_slidesharedoc

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

Page 16: 4 libro fundamentos _condicional_oficio_2003_para_publicars_slidesharedoc

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

Page 17: 4 libro fundamentos _condicional_oficio_2003_para_publicars_slidesharedoc

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();

}

Page 18: 4 libro fundamentos _condicional_oficio_2003_para_publicars_slidesharedoc

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

Page 19: 4 libro fundamentos _condicional_oficio_2003_para_publicars_slidesharedoc

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

Page 20: 4 libro fundamentos _condicional_oficio_2003_para_publicars_slidesharedoc

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.

Page 21: 4 libro fundamentos _condicional_oficio_2003_para_publicars_slidesharedoc

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

Page 22: 4 libro fundamentos _condicional_oficio_2003_para_publicars_slidesharedoc

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º.

Page 23: 4 libro fundamentos _condicional_oficio_2003_para_publicars_slidesharedoc

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 "

Page 24: 4 libro fundamentos _condicional_oficio_2003_para_publicars_slidesharedoc

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();

}

Page 25: 4 libro fundamentos _condicional_oficio_2003_para_publicars_slidesharedoc

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.

Page 26: 4 libro fundamentos _condicional_oficio_2003_para_publicars_slidesharedoc

Pág. 26

Aprenda Programación con C++ y Python

a) Análisis del problema

El porcentaje de incremento en el sueldo depende del valor del sueldo actual, los sueldos más

bajos tienen un mayor incremento:

Si sueldo <= 2000, entonces % 10

Si sueldo <= 3000, entonces %8

Para cualquier caso %5

Aumento sueldo * porten

Nuevo sueldo Sueldo + aumento

Declaración de variables e identificadores

Variable de Entrada: Numérico Real sueldo

Variable de Salida: Numérico real Nuevosueldo

b) Algoritmo ( Pseudocódigo )

Porcen 0.10

Sueldo <= 2000

Si No

Inicio

Escribir: "Ingrese sueldo"

Leer: sueldo

Porcen0.08 Porcen0.05

Sueldo <= 3000

Si No

aumento Sueldo * Porcen

Nuevosueldo Sueldo + aumento

Escribir: " Sueldo Total S/.", Nuevosueldo

Fin

Ejercicio 07. Una empresa desea calcular los nuevos salarios de sus empleados de la siguiente

forma: quienes ganan hasta S/. 2000 tendrán un incremento del 10%, quienes obtienen más de

S/. 2000 y hasta 3000 recibirán un aumento del 8% y los demás del 5%. ¿Cuál será el valor del

aumento? ¿Cuál será el valor del nuevo sueldo?. Realizar un diagrama NS.

Page 27: 4 libro fundamentos _condicional_oficio_2003_para_publicars_slidesharedoc

Pág. 27

Ecler Mamani Vilca

a) Análisis del problema Es necesario conocer las capacidades de estas unidades de almacenamiento, para crear las

condiciones creando intervalos mediante uso de operadores lógicos.

CD-ROM tiene la capacidad de almacenar como máximo 700 Mb.

CD-DVD, almacena máximo 4700 Mb

USB 8GB almacena 8000 Mb

CD-BluRay almacena 50 000 Mb

Declaración de variables e identificadores

Variable de Entrada: Numérico Real mb

Variable de Salida: Mensaje

b) Algoritmo ( Pseudocódigo )

Mb < 0 o Mb > 12000

Si No

Inicio

"Ingrese el valor en MB"

Mb

"Archivo muy pequeño

o Grande"

Simb>0 y mb <=700

mb, "CD-ROM"

1

Ejercicio 08. Se desea almacenar un archivo “video.avi” en Mb, realizar un DFD que muestre

si este archivo, puede ser almacenado en un CD-ROM, CD-DVD, USB 8Gb ó CD-BluRay.

Page 28: 4 libro fundamentos _condicional_oficio_2003_para_publicars_slidesharedoc

Pág. 28

Aprenda Programación con C++ y Python

Fin

Simb>700 y mb <=4700

mb, "USB 4.7 GB"

Simb>4700 y mb <=50000

mb, "CD BluRay"

Simb>700 y mb <=4700

mb, "CD-DVD"

1

Ejercicio 09. Se cuenta con los votos obtenidos por Ollanta, PPK y Keiko en una elección

democrática a la presidencia de la República. Para ganar la elección se debe obtener como

mínimo el 50% de los votos más 1. En caso que no haya un ganador se repite las elecciones

debe ser anulada. Van a la segunda vuelta los dos candidatos que obtengan la más alta

votación. Realice el código en Phyton.

Page 29: 4 libro fundamentos _condicional_oficio_2003_para_publicars_slidesharedoc

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

Page 30: 4 libro fundamentos _condicional_oficio_2003_para_publicars_slidesharedoc

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();

}

Page 31: 4 libro fundamentos _condicional_oficio_2003_para_publicars_slidesharedoc

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

Page 32: 4 libro fundamentos _condicional_oficio_2003_para_publicars_slidesharedoc

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

Page 33: 4 libro fundamentos _condicional_oficio_2003_para_publicars_slidesharedoc

Pág. 33

Ecler Mamani Vilca

a) Análisis del problema El primer paso es validar los datos del código que deben ser 01 o 02, si esto es verdad se

procede a realizar el descuento si es código uno precio *0.10 sino precio*0.20.

Declaración de variables e identificadores Variable de Entrada: Numérico Entero codigo, precio

Cadena de caracteres NomProducto

Variable de Salida: Numérico real descuento, codigo, precio, precio-descuento

b) Algoritmo ( Pseudocódigo )

descuento = precio * 0.10 descuento = precio * 0.20

Codigo = 01Si No

Inicio

Leer: NomProducto

Escribir: "Ingrese numero de codigo (01-02)"

Leer: codigo

Escribir: " "Ingrese precio del producto"

Leer: precio

Escribir "Codigo = ",codigo

Escribir "Descuento S/.",descuento

Escribir "Total S/.", precio - descuento

Escribir "Nombre ", NomProducto

Es: “Error en ingreso

de clave”

Fin

Si No

codigo = 01 or codigo =02

Escribir: "Ingrese nombre del producto"

Ejercicio 13. Hacer un diagrama NS, que imprima el nombre de un artículo, clave, precio

original y su precio con descuento. El descuento lo hace en base a la clave, si la clave es 01 el

descuento es del 10% y si la clave es 02 el descuento en del 20% (solo existen dos claves).

Page 34: 4 libro fundamentos _condicional_oficio_2003_para_publicars_slidesharedoc

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.

Page 35: 4 libro fundamentos _condicional_oficio_2003_para_publicars_slidesharedoc

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

Page 36: 4 libro fundamentos _condicional_oficio_2003_para_publicars_slidesharedoc

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:

Page 37: 4 libro fundamentos _condicional_oficio_2003_para_publicars_slidesharedoc

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.

Page 38: 4 libro fundamentos _condicional_oficio_2003_para_publicars_slidesharedoc

Pág. 38

Aprenda Programación con C++ y Python

a) Análisis del problema Cuando se tienes muchas condicionales, se hace uso de la estructura selectiva, esta permitirá

ejecutar uno de los 7 procesos así tenemos:

Caso 1: Num1 + Num2 Caso 3: Num1 * Num2

Caso 2: Num1 - Num2 Caso 4: Num1 / Num2, Solo si Num2 diferente de cero. Para

cualquier otro caso distinto de 1 a 4, error en ingreso de datos.

Declaración de variables e identificadores

Variable de Entrada: Numérico real num1, num2

Variable de Salida: operación

b) Algoritmo ( DFD )

Es: “La suma es”,

Num1+Num2

opcion

Leer Num1, Num2

Escribir "******* Menú **********"

Escribir "1. Suma"

Escribir "2. Resta"

Escribir "3. Producto"

Escribir "4. División"

Escribir "***********************"

Escribir "Ingrese opcion entre [1-4]"

Leer opcion

Es: “La resta es”,

Num1-Num2

Es: “El producto es”,

Num1*Num2

Es: “Opción

incorrecta”

1 2 3 4

De otro

modo

opcion

Fin

Escribir "Ingrese 2 numeros"

Inicio

Es: "Error div 0" Es: num1/num2

num2 = 0Si No

c) Prueba de escritorio

Opcion Num1 Num2 Operación

1 25 5 25+5 =30

2 25 5 25-5=20

3 25 5 25*5 = 125

4 25 5 num2 = 0 : 25/5=5

Ejercicio 17. Realizar un diagrama NS con cuatro operaciones básicas, suma, resta, producto

y división, para dos valores.

Page 39: 4 libro fundamentos _condicional_oficio_2003_para_publicars_slidesharedoc

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

Page 40: 4 libro fundamentos _condicional_oficio_2003_para_publicars_slidesharedoc

Pág. 40

Aprenda Programación con C++ y Python

a) Análisis del problema La solución para este problema es descomponer el número de tres dígitos como máximo, en

unidad, decena y centena.

Unidad numero Mod 10

DecenaTrunc((numero Mod 100)/10)

CentenaTrunc(numero/100)

Seguidamente tenemos el orden y el texto en Quechua:

Para Centena Para Decena Para Unidad Para Cero

100 = Pachaq 10 = Chunka 1 = Uq C’husaq

200 = Iskaypachaq 20 = Iskaychunka 2 = Iskay

300 = Kinsapachaq 30 = Kinsachunka 3 = Kinsa

400 = Tawapachaq 40 = Tawachunka 4 = Tawa

500 = Piscapachaq 50 = Pisqachunka 5 = Phisqa

600 = Suqtapachaq 60= Suqtachunka 6 = Suqta

700 = Canchispachaq 70 = Canchischunka 7 = Canchis

800 = Pusaqpachaq 80 = Pusaqchunka 8 = Pusaq

900 = Isqunpachaq 90 = Isqunchunka 9 = Isqun

Condiciones:

Cuando el numero sea cero, debe enviar al inicio cero (“C’husaq)

En el idioma quechua, un solo numero de la unidad y acompañado por otros digitos

en su escritura son diferentes, en el ejemplo se observa:

121 = Pachaq Iskaychunka Uqniyuq

001 = Uq

Por lo tanto si decena=0 y centena=0, mantiene la forma normal para la escritura de

la unidad que se observa en la tabla. Si no fuese así tendrá el sufijo “Yuq” o “Niyuq”

Con 1: Uqniyuq Con 4: Tawayuq Con 7: Canchisniyuq

Con 2: Iskayniyuq Con 5: Phisqayuq Con 8: Pusaqniyuq

Con 3: Kinsayuq Con 6: Suqtayuq Con 9: Isquniyuq

Ejercicio 19. Realizar un programa en C++, que permita convertir un numero de 3 dígitos a

letras en Quechua.

Page 41: 4 libro fundamentos _condicional_oficio_2003_para_publicars_slidesharedoc

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

Page 42: 4 libro fundamentos _condicional_oficio_2003_para_publicars_slidesharedoc

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();

}

Page 43: 4 libro fundamentos _condicional_oficio_2003_para_publicars_slidesharedoc

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

Page 44: 4 libro fundamentos _condicional_oficio_2003_para_publicars_slidesharedoc

Pág. 44

Aprenda Programación con C++ y Python