clase 2 selectiva

21
UNIVERSIDAD INCA GARCILASO DE LA VEGA Facultad de Ingeniería de Sistemas, Computo y Telecomunicaciones Asignatura Lenguaje de Programación I Tema Selectiva Profesor Lic. Carlos A. Ruiz De La Cruz Melo Correo: [email protected]

Upload: leonardo-chavez-trelles

Post on 01-Feb-2016

235 views

Category:

Documents


1 download

DESCRIPTION

fffffffffff

TRANSCRIPT

Page 1: Clase 2 Selectiva

UNIVERSIDAD INCA GARCILASO DE LA VEGAFacultad de Ingeniería de Sistemas, Computo y Telecomunicaciones

AsignaturaLenguaje de Programación I

Tema

Selectiva

ProfesorLic. Carlos A. Ruiz De La Cruz MeloCorreo: [email protected]

Page 2: Clase 2 Selectiva

En la solución de la mayoría de los problemas algorítmicos se requiere tomar decisiones en base a evaluaciones de expresiones lógicas que señalan el camino alternativo a seguir.

El tipo de resultado de una estructura selectiva es lógico (booleano), es decir verdadero o falso.

Las estructuras selectivas se clasifican en:

ESTRUCTURA SELECTIVA

Estructura de selección simple ( Si- Fin_si)Estructura de selección doble ( Si – Sino- Fin_si)Estructura de selección múltiple ( Si anidado y En caso sea –Fin_caso)

Page 3: Clase 2 Selectiva

Estructura de selección simple: Si- Fin_si

Evalúa una expresión lógica y si su resultado es verdadero, se ejecuta una acción determinada. Su sintaxis es:

Si (expresion_logica) entonces

Acción (s) Fin_si

La acción puede ser simple (una sola acción) o una acción compuesta (un conjunto de acciones)

Si la acción es falsa no se hace nada

PSEUDOCÓDIGO

Acción simple

Si (expresion_logica) entoncesAcción

Fin_si

Acción Compuesta

Si (expresion_logica) entoncesAcción1Acción2……AcciónN

Fin_si

Page 4: Clase 2 Selectiva

#include <iostream.h>#include <stdlib.h>int main(){ int nro; cout<<"\n ingresar numero: "; cin>>nro; if(nro<0) nro=- nro; cout<<"\n nro="<<nro<<"\n"; getch(); return 0;}

PSEUDOCÓDIGO Y PROGRAMA

Inicioentero: nroescribir ”Ingresar numero “Leer nroSi (nro < 0) entonces

nro - nroFin_si.

Escribir nroFin

Ejemplo

Haga el pseudocodigo que permita cambiar un numero negativo a un numero positivo

Page 5: Clase 2 Selectiva

Estructura de selección doble: Si - Sino-Fin_si

Se evalúa la expresión lógica, si este resultado es verdadero se ejecuta la accion1, si el resultado es falso se ejecuta la accion2. Su sintaxis es la siguiente:

Si (expresión_lógica) entoncesaccion1

Sinoaccion2

Fin_si

La acción1 o accion2, puede ser simple (una sola acción) o una acción compuesta (un conjunto de acciones)

Page 6: Clase 2 Selectiva

#include <iostream.h>#include <stdlib.h>int main(){ int nro; cout<<"\n ingresar numero: "; cin>>nro; if((nro % 2)==0) cout<<"\n es par\n"; else cout<<"\n es impar\n"; system("PAUSE"); return 0;}

InicioEntero: nroLeer (nro)Si (nro Mod 2 = 0 ) entonces

Escribir “par” Sino

Escribir “impar “Fin_si

Fin

Pseudocódigo y programa

Ejemplo

Haga el pseudocodigo para determinar si un número es par o impar

Page 7: Clase 2 Selectiva

IF ELSE

if (expresion) sentencia1

else sentencia2

Si expresión es verdadera se ejecuta sentencia1, si es falsa se ejecuta sentencia2

El else es opcional Tanto sentencia1 como sentencia2

pueden ser un bloque se sentencias entre llaves { }

Expresion no termina con ;

Page 8: Clase 2 Selectiva

ORDEN EN IF ELSE

Dado que el else es opcional, una sentencia else siempre va con el if inmediatamente anterior

if (n>0) if (a>b) cout<<"a es mayor que b"; else cout<<“n es menor que 0";

Este código es incorrecto:

Cuando n no sea mayor que 0 se desea que salga un mensaje con n es menor que 0, sin embargo no sera asi.

El else depende del segundo if.

Forma correcta

if (n>0) { if (a>b) cout<<"a es mayor que b";}else cout<<“n es menor que 0";

Page 9: Clase 2 Selectiva

if (expresion1) sentencia1 else if(expresion2) sentencia2 else if(expresion3) sentencia3 . . . else sentencian

Estructura de selección múltiple: Si- anidado

Un Si anidado es una sentencia Si que esta contenido dentro de otro Si o Sino. Su sintaxis es la siguiente:

Si (expresión_lógica1) entoncesaccion1

Sino Si(expresión_lógica2) entonces

accion2 Sino

accion3Fin_si

Fin_si

Page 10: Clase 2 Selectiva

Inicioentero: nrocadena: mescribir “Ingresar numero:”Leer nroSi (nro = 0 ) entonces

m “Cero”Sino

Si (nro>0) entonces m “Positivo” Sino m “Negativo”Fin_si

Fin_siEscribir nro, m

Fin

Inicio

Fin

SI

nro >0

m”negativo” m”positivo”

nro =0

mcero

Escribirnro, m

Escribir“ingresar numero”

Leer (nro)

NO

NO SI

Pseudocódigo y diagrama de flujo

Escribir un pseudocódigo, que lea un número y determine si es positivo, negativo o cero.

Ejemplo

Page 11: Clase 2 Selectiva

Cual seria el código en C?

Inicioentero: nrocadena: mescribir “Ingresar numero:”Leer nroSi (nro = 0 ) entonces

m “Cero”Sino

Si (nro>0) entonces m “Positivo” Sino m “Negativo”Fin_si

Fin_siEscribir nro, m

Fin

Page 12: Clase 2 Selectiva

Estructura selectiva múltiple: En caso sea-Fin_caso

Permite elegir un camino entre los “n” posibles, usando para ello una variable denominada selector. El selector se compara con una lista de constantes enteras o de carácter C1, C2, ..., Cn para cada una de las cuales hay una acción 1, 2, ..., N

En caso sea (selector) hacerc1: Acción 1c2: Acción 2

.cn: Acción N

SinoAccion c

Fin_Caso

Si el selector coincide con una constante de la lista, se ejecuta la acción correspondiente a dicha constante.

Si el selector no coincide con ninguna constante de la lista, se ejecuta la acción c correspondiente al SINO.

Page 13: Clase 2 Selectiva

En un centro de enseñanza se han incrementado las pensiones de acuerdo a la siguiente tabla:

Elaborar un pseudocódigo que permita calcular el nuevo monto de la pensión de un alumno que se encuentra en una categoría determinada.

CATEGORÍA INCREMENTO(%)

A 6

B 5

C 4

Ejemplo

InicioEntero: sw 0Real: pension, nuevaPensionEscribir (“Ingresar pension:”)Leer (pension)Escribir (“Ingresar categoria:”)Leer (cat)En caso sea (cat) hacer

‘A’ : inc 0.06 * pension‘B’ : inc 0.05 * pension‘C’ : inc 0.04 * pension

SinoEscribir (“Fuera de rango”)sw 1

Fin_CasoSi (sw = 0) entonces nuevaPension pension + inc Escribir (“pension “, nuevaPension)Fin_si

Fin

Page 14: Clase 2 Selectiva

InicioEntero: sw 0Real: pension, nuevaPensionLeer (pension)Escribir (“Ingresar categoria:”)Leer (cat)En caso sea (cat) hacer

‘A’ : inc 0.06 * pension‘B’ : inc 0.05 * pension‘C’ : inc 0.04 * pension

SinoEscribir (“Fuera de rango”)sw 1

Fin_CasoSi (sw = 0) entonces nuevaPension pension + inc Escribir (“pension “, nuevaPension)Fin_si

Fin

Pseudocódigo y diagrama de flujo

SInro =‘A’

m0.06*pension

EscribirPension, nueva Pension

Leer (cat)

NO

SI NO

m0.05*pension NO

sw1

sw =0

nuevaPensionpension+inc

FIN

INICIO

sw0

nro =‘B’

nro =‘C’

m0.04*pension

SI

SI

NO

Page 15: Clase 2 Selectiva

#include <conio.c>#include "iostream.h"int main(){ int sw=0; char cat; float pension, nuevaPension,inc; cout<<"\n ingresar pension: "; cin>>pension; cout<<"\n ingresar categoria: "; cin>>cat; switch(cat){ case 'A':inc=0.05*pension; break; case 'B':inc=0.05*pension;break; case 'C':inc=0.04*pension;break; default: cout<<"\n fuera de rango"; sw=1; } if(sw==0){ nuevaPension=pension+inc; cout<<"\n pension="<<pension; cout<<"\n nuevaPension="<<nuevaPension<<"\n"; } system("pause"); return 0; }

PROGRAMA

InicioEntero: sw 0Real: pension, nuevaPensionLeer (pension)Escribir (“Ingresar categoria:”)Leer (cat)En caso sea (cat) hacer

‘A’ : inc 0.06 * pension‘B’ : inc 0.05 * pension‘C’ : inc 0.04 * pension

SinoEscribir (“Fuera de rango”)sw 1

Fin_CasoSi (sw = 0) entonces nuevaPension pension + inc Escribir (“pension “, nuevaPension)Fin_si

Fin

Page 16: Clase 2 Selectiva

#include <conio.c>#include "iostream.h"int main(){ int sw=0; char cat; float pension, nuevaPension,inc; cout<<"\n ingresar pension: "; cin>>pension; cout<<"\n ingresar categoria: "; cin>>cat; switch(cat){ case 'A':inc=0.05*pension; break; case 'B':inc=0.05*pension;break; case 'C':inc=0.04*pension;break; default: cout<<"\n fuera de rango"; sw=1; } if(sw==0){ nuevaPension=pension+inc; cout<<"\n pension="<<pension; cout<<"\n nuevaPension="<<nuevaPension<<"\n"; } system("pause"); return 0; }

PROGRAMA

Page 17: Clase 2 Selectiva

En caso sea múltipleSe presenta de dos formas:

A) Cuando mas de una alternativa debe ejecutar la misma acción.

B) Cuando se presentan selecciones basadas en dos o mas niveles.

Ejemplo

Mostrar la estación al cual pertenece, si se ingresa el numero de mes:

Verano: enero, febrero, marzoOtoño: abril, mayo, junioInvierno: julio, agosto, setiembrePrimavera: octubre, noviembre, diciembre

InicioEntero: nroMesLeer (nroMes)En caso sea (nroMes) hacer

1: 2: 3: Escribir(“Verano”)4: 5: 6: Escribir(“Otoño”)7: 8: 9: Escribir(“Invierno”)10: 11: 12: Escribir(“Primavera”)

SinoEscribir (“Fuera de rango”)

Fin_CasoFin

Page 18: Clase 2 Selectiva

#include <conio.c>#include "iostream.h"int main(){

int nroMes; cout<<"\n Ing Num de mes: "; cin>>nroMes; switch(nroMes){ case 1: case 2: case 3:cout<<"\n verano\n"; break; case 4: case 5: case 6:cout<<"\n otoño\n";break; case 7: case 8: case 9:cout<<"\n invierno\n";break; case 10: case 11: case 12:cout<<"\n primavera\n";break; default: cout<<"\n fuera de rango"; } system("pause"); return 0;

}

PROGRAMA

Page 19: Clase 2 Selectiva

Cuando se presentan selecciones basadas en dos o mas niveles.

ejemplo Pseudocódigo para calcular la pensión

que tiene que pagar un alumno de un instituto cuya cuota de matricula tiene un porcentaje de descuento que se establece en la siguiente tabla y esta en función del colegio de procedencia del alumno y de las tres categorías que existe en el instituto. Considere que la pensión esta exonerada de impuesto.

Colegio de procedencia

categoría

A B C

Nacional 50 40 30

Particular 15 20 25

Pensión Colegio Categoría Descuento Pensión final

1000 Nacional A 1000*0.50=500 500

1500 Particular B 1500*0.20=300 1200

En la siguiente tabla se muestran resultados para diferentes valores de las variables:

Page 20: Clase 2 Selectiva

Inicio real: cuota, dscto, importe 0 caracter: colegio, categoría entero: sw 0 Leer (colegio) Escribir (“Ingresar categoría (A, B, C):”) Leer (categoria) Escribir (“Ingresar cuota:”) Leer (cuota) En caso sea (colegio) hacer ‘N’: En caso sea (categoria) hacer ‘A’ : dscto 0.50 * cuota ‘B’ : dscto 0.40 * cuota ‘C’ : dscto 0.30 * cuota Sino Escribir (“Opción no contemplada”) sw 1 Fin_caso

‘P’: En caso sea (categoria) hacer ‘A’ : dscto 0.25 * cuota ‘B’ : dscto 0.20 * cuota ‘C’ : dscto 0.15 * cuota Sino Escribir (“Opción no contemplada”) sw 1 Fin_caso Sino Escribir (“Opción no contemplada”) sw 1 Fin_caso Si (sw = 0) entonces importe cuota – dscto Escribir(“El importe a pagar es: ”, importe) Fin_siFin

Pseudocodigo Cual seria el código en C?

Page 21: Clase 2 Selectiva

1. Escriba un pseudocódigo lea como dato el sueldo de un trabajador, aplique un aumento del 15% si su sueldo es inferior a 500 y 10% en caso contrario. Imprima el nuevo sueldo del trabajador.

2. Escriba un pseudocódigo que calcule el total a pagar por la compra de camisas. Si se compran cinco camisas o más se aplica un descuento del 25% sobre el total de la compra, sino se aplica un descuento del 10%.

3. En una tienda se realizan descuentos en las compras en función del importe total de dichas compras. Se desea calcular el importe que se cobra a un cliente, teniendo en cuenta los siguientes supuestos:

Si el importe total de la compra es menor de 200 soles no hay descuentos.

Si el importe total de la compra está comprendido entre 200 y 800 se hace un descuento del 10%

Si el importe total de la compra es mayor de 800 se hace un descuento del 20%.

Se pide mostrar el nombre del cliente, el importe total, el descuento y el importe a cobrar a un cliente cualquiera

EJERCICIOS