Estructuras de Decisión Simples y Doblesprofesordiegosancho.webs.com/UAM - PROGRA...

35
1 Estructuras de Decisión Simples y Dobles

Transcript of Estructuras de Decisión Simples y Doblesprofesordiegosancho.webs.com/UAM - PROGRA...

Page 1: Estructuras de Decisión Simples y Doblesprofesordiegosancho.webs.com/UAM - PROGRA I/SEMANA_07/S_7_8_… · Estructuras no secuenciales ... Flujo de control: Habilidad de definir

1

Estructuras deDecisión Simples yDobles

Page 2: Estructuras de Decisión Simples y Doblesprofesordiegosancho.webs.com/UAM - PROGRA I/SEMANA_07/S_7_8_… · Estructuras no secuenciales ... Flujo de control: Habilidad de definir

2

Estructuras no secuenciales

Los programas que hemos escrito hasta ahora hanconsistido en una serie de sentencias que se ejecutansecuencialmente, una después de la otra (asignación,lectura y escritura).

Flujo de control: Habilidad de definir el orden en el cuallas sentencias de un programa son ejecutadas.

Estructuras de decisión o selección.

Estructuras de repetición.

Page 3: Estructuras de Decisión Simples y Doblesprofesordiegosancho.webs.com/UAM - PROGRA I/SEMANA_07/S_7_8_… · Estructuras no secuenciales ... Flujo de control: Habilidad de definir

3

Estructuras de Decisión

Estructura de decisiónPermite seleccionar la próxima sentencia a ejecutarse basándoseen una condición (expresión lógica o una variable lógica) que esevaluada y, en función del resultado (cierto o falso) de laevaluación, se bifurcará a un determinado punto para continuar laejecución del programa.

Tipos de estructuras de decisión- Simple- Doble- Anidada

Page 4: Estructuras de Decisión Simples y Doblesprofesordiegosancho.webs.com/UAM - PROGRA I/SEMANA_07/S_7_8_… · Estructuras no secuenciales ... Flujo de control: Habilidad de definir

4

Estructura de Decisión Simple

Diagrama de flujo. Pseudocódigo en español.Si (<condición>) entonces

S1

….Sn

fin_si

Código en Cif (<condición>){

S1

….Sn

}

Page 5: Estructuras de Decisión Simples y Doblesprofesordiegosancho.webs.com/UAM - PROGRA I/SEMANA_07/S_7_8_… · Estructuras no secuenciales ... Flujo de control: Habilidad de definir

5

Estructura de Decisión Simple

Esta estructura evalúa la condición, luego:

Si la condición es cierta entonces ejecuta elconjunto de sentencias definidas por Si, i =

1 .. n.

Si la condición es falsa entonces no ejecutael conjunto de sentencias definidas por Si, i =

1 .. n.

Page 6: Estructuras de Decisión Simples y Doblesprofesordiegosancho.webs.com/UAM - PROGRA I/SEMANA_07/S_7_8_… · Estructuras no secuenciales ... Flujo de control: Habilidad de definir

6

Ejemplos I

If (x>0.0)printf(“x es positivo

\n”);

If (a<b){b+=a;}

NOTA:Observe que cuando hay unasola instrucción aejecutarse dentro del if,las llaves son opcionales.

Si (x > 0.0) entoncesEscribir (“x es

positivo”)Fin_si

Si (a<b) entoncesb = b + a

Fin_si

Código en NPseudocódigo en Español

Page 7: Estructuras de Decisión Simples y Doblesprofesordiegosancho.webs.com/UAM - PROGRA I/SEMANA_07/S_7_8_… · Estructuras no secuenciales ... Flujo de control: Habilidad de definir

7

Ejemplos II

if (nota > 15){ eximidos++;

println(“Estudianteeximido\n”); }

NOTA:Cuando hay dos o mássentencias asociadas al ifvan encerradas entre llaves{ }.

Si (nota > 15) entonceseximidos = eximidos + 1Escribir (“Estudiante

eximido”)Fin_si

Código en Net BeansPseudocódigo en Español

Page 8: Estructuras de Decisión Simples y Doblesprofesordiegosancho.webs.com/UAM - PROGRA I/SEMANA_07/S_7_8_… · Estructuras no secuenciales ... Flujo de control: Habilidad de definir

8

Ejemplos III

if (x >= 0.0){y += x;cont++;}

Si (x > 0.0) entoncesy = y + xcont = cont + 1

Fin_si

Código en Net BeansPseudocódigo en Español

Page 9: Estructuras de Decisión Simples y Doblesprofesordiegosancho.webs.com/UAM - PROGRA I/SEMANA_07/S_7_8_… · Estructuras no secuenciales ... Flujo de control: Habilidad de definir

9

Ejemplos IV

int main(){

char miPrimeraLogica, miSegundaLogica;

miPrimeraLogica = TRUE;miSegundaLogica = !miPrimeraLogica;if ( miSegundaLogica == TRUE)

printf("miSegundaLogica tiene el valor cierto (true)");if ( miSegundaLogica != TRUE)

printf("miSegundaLogica tiene el valor falso (false)");return 0;

}

Page 10: Estructuras de Decisión Simples y Doblesprofesordiegosancho.webs.com/UAM - PROGRA I/SEMANA_07/S_7_8_… · Estructuras no secuenciales ... Flujo de control: Habilidad de definir

10

Ejemplos V

Dados tres números enteros, determinar si la suma de cualquierpareja de ellos es igual al tercer número. Si se cumple estacondición, escribir “Iguales” y, en caso contrario, escribir “Distintos”.

Análisis E-P-SEntradas: A, B, C ∈ Z

Proceso:- Determinar si A + B = C ⇒ “Iguales”

- Determinar si A + C = B ⇒ “Iguales”

- Determinar si B + C = A ⇒ “Iguales”

- Si no se cumple ninguno de los anteriores⇒ “Distintos”

Salida: Mensaje indicando si la suma de dos números esigual “Iguales” o diferente “Distintos” a un tercero.

Page 11: Estructuras de Decisión Simples y Doblesprofesordiegosancho.webs.com/UAM - PROGRA I/SEMANA_07/S_7_8_… · Estructuras no secuenciales ... Flujo de control: Habilidad de definir

11

Ejemplos VIAlgoritmo

0. Inicio1. Escribir (“Introduzca tres números enteros”)2. Leer (A, B, C)3. Si (A + B = C) entonces

Escribir (“Iguales”)Fin_si

4. Si (A + C = B) entoncesEscribir (“Iguales”)Fin_si

5. Si (B + C = A) entoncesEscribir (“Iguales”)Fin_si

6. Si ((A + B = C) o (A + C = B) o (B + C = A)) entoncesEscribir (“Distintos”)Fin_si

7. Fin

Page 12: Estructuras de Decisión Simples y Doblesprofesordiegosancho.webs.com/UAM - PROGRA I/SEMANA_07/S_7_8_… · Estructuras no secuenciales ... Flujo de control: Habilidad de definir

12

Ejemplos VII Public static void main (){

int A, B, C;println(“Introduzca tres números enteros\n”);leer A,B,C);if (A + B == C)

{ println(“Iguales”);exit(0); }

if (A + C == B){ println(“Iguales”);exit(0); }

if (B + C == A){ println(“Iguales”);exit(0); }

if ((A + B != C) && (A + C != B) && (B + C != A))println(“Distintos”);

return 0;}

Page 13: Estructuras de Decisión Simples y Doblesprofesordiegosancho.webs.com/UAM - PROGRA I/SEMANA_07/S_7_8_… · Estructuras no secuenciales ... Flujo de control: Habilidad de definir

13

Ejemplos VIII

Corrida en Frio

Iguales363

Iguales-352

Diferentes241

ResultadoCBA

Page 14: Estructuras de Decisión Simples y Doblesprofesordiegosancho.webs.com/UAM - PROGRA I/SEMANA_07/S_7_8_… · Estructuras no secuenciales ... Flujo de control: Habilidad de definir

14

Estructuras de Decisión SimpleAnidadas

if (condición1)

{ // instruccionesif (condición2)

{instrucción1

instrucción2

…instrucciónn

}}

if (condición1)

if (condición2)

instrucciones

Si (condición1) entonces

…Si (condición2) entonces

instrucción1

instrucción2

…instrucciónn

Fin_SiFin_SiNOTA:Las estructuras de decisiónanidadas están contenidas unasdentro de otras.

Código en Net BeansPseudocódigo en Español

Page 15: Estructuras de Decisión Simples y Doblesprofesordiegosancho.webs.com/UAM - PROGRA I/SEMANA_07/S_7_8_… · Estructuras no secuenciales ... Flujo de control: Habilidad de definir

Estructuras de Decisión SimpleAnidadas

int x, y;…if (y>x)

{ y -= x;z *= y;if (z == y)

printn(“z, y son iguales ”);}

Si (y > x) entoncesy = y – xz = z * ySi (z = y) entoncesEscribir (“z e y son iguales”)

Fin_SiFin_Si

Código en Pseudocódigo en Español

Page 16: Estructuras de Decisión Simples y Doblesprofesordiegosancho.webs.com/UAM - PROGRA I/SEMANA_07/S_7_8_… · Estructuras no secuenciales ... Flujo de control: Habilidad de definir

16

Estructuras de Decisión SimpleAnidadas

char letra;…if (letra > ‘f’)

{ if (letra < ‘j’)println(“Esta entre f e

i”);if (letra < ‘m’)println(“Esta entre j y

n”);}

Si (letra > ‘f’) entoncesSi (letra < ‘j’) entoncesEscribir (“Esta entre g e

i”)Fin_SiSi (letra < ‘m’) entoncesEscribir (“Esta entre j y

n”)Fin_Si

Fin_Si

Código en Net BeansPseudocódigo en Español

Page 17: Estructuras de Decisión Simples y Doblesprofesordiegosancho.webs.com/UAM - PROGRA I/SEMANA_07/S_7_8_… · Estructuras no secuenciales ... Flujo de control: Habilidad de definir

Ejercicios Propuestos

Evalúe los siguientes pedazos de código:int b=2, c=4;if (c%2 == 0) c%=3;if (b%c > 0)

print(“c*b es:\n”,c*b);TRUE 1float f=1.1;char b=TRUE;if ((!b) && (f/3 > 0))

print(“lograra imprimirse”);

Page 18: Estructuras de Decisión Simples y Doblesprofesordiegosancho.webs.com/UAM - PROGRA I/SEMANA_07/S_7_8_… · Estructuras no secuenciales ... Flujo de control: Habilidad de definir

18

Ejercicios Propuestos

Evalue los siguientes pedazos de código:int b=2, c=4;if (c/b == c%3*2) c%=3;printf(“ es : ”,c++);int b=2;int c=++b;int d=c++;c+=d*b;

Page 19: Estructuras de Decisión Simples y Doblesprofesordiegosancho.webs.com/UAM - PROGRA I/SEMANA_07/S_7_8_… · Estructuras no secuenciales ... Flujo de control: Habilidad de definir

19

Ejercicios Propuestos

Una persona desea invertir su dinero lo mejorposible a través de la compra-venta de dólares.Se sabe que durante el segundo trimestre delaño el dólar baja un 5% respecto al primertrimestre, y durante el cuarto trimestre aumentaun 10% respecto al tercer trimestre. Sabiendoque el precio del dólar a principio de año fue de500 ,calcule a cantidad de dólares que tieneun inversionista dada una cantidad en colonesy un mes específico del año.

Page 20: Estructuras de Decisión Simples y Doblesprofesordiegosancho.webs.com/UAM - PROGRA I/SEMANA_07/S_7_8_… · Estructuras no secuenciales ... Flujo de control: Habilidad de definir

21

Estructura de Decisión Doble

if (condición){ instrucción11

…instrucción1n

} else {instrucción21

…instrucción2m

}

Si (condición) entoncesinstrucción11

…instrucción1n

sinoinstrucción21

…instrucción2m

Fin_Si

Código en CPseudocódigo en Español

Page 21: Estructuras de Decisión Simples y Doblesprofesordiegosancho.webs.com/UAM - PROGRA I/SEMANA_07/S_7_8_… · Estructuras no secuenciales ... Flujo de control: Habilidad de definir

22

Estructura de Decisión Doble

Permite elegir entre dos opciones o alternativas posibles,en función del cumplimiento o no de la condición:

Si el resultado de evaluar la condición el CIERTO seejecutará un determinado grupo de instrucciones 1i,para i = 1, .., n.

Si el resultado de evaluar la condición es FALSO seejecutará otro grupo de instrucciones 2k, para

k = 1, .., m.

Page 22: Estructuras de Decisión Simples y Doblesprofesordiegosancho.webs.com/UAM - PROGRA I/SEMANA_07/S_7_8_… · Estructuras no secuenciales ... Flujo de control: Habilidad de definir

23

Estructura de Decisión Doble

if (nota <= 9){

if (nota >=7)nota = nota * 1.2;

elsenota = nota / 1.2;

} else {if (nota <= 15)

nota *= 1.12;}

Si (nota <= 9) entoncesSi (nota >= 7) entonces

nota = nota * 1.2;sino

nota = nota / 1.2;Fin_Si

sinoSi (nota <= 15)

nota = nota * 1.12;Fin_Si

Fin_Si

Código en Net BeansPseudocódigo en Español

Page 23: Estructuras de Decisión Simples y Doblesprofesordiegosancho.webs.com/UAM - PROGRA I/SEMANA_07/S_7_8_… · Estructuras no secuenciales ... Flujo de control: Habilidad de definir

25

Ejemplo I

int main(){

int miEntero;

println(“Introduzca un numero entero”);lea miEntero;if ( miEntero == 0 )

println("miEntero es igual a cero”);else

printf("miEntero no es igual a cero”);println(“fin del programa\n”);return 0;

}

Page 24: Estructuras de Decisión Simples y Doblesprofesordiegosancho.webs.com/UAM - PROGRA I/SEMANA_07/S_7_8_… · Estructuras no secuenciales ... Flujo de control: Habilidad de definir

Ejemplo II

public static void main(){

int m;

printf(“Introduzca un numero entero\n”);lea(m);if ( (m >= 1) && (m <= 10) )

println(“ esta entre 1 y 10" + m);else

println( m + “ no esta entre 1 y 10");}

Page 25: Estructuras de Decisión Simples y Doblesprofesordiegosancho.webs.com/UAM - PROGRA I/SEMANA_07/S_7_8_… · Estructuras no secuenciales ... Flujo de control: Habilidad de definir

28

Ejemplo III

Algoritmo0. Inicio1. Escribir (“Introduzca el numero de horas trabajadas”)2. Leer (HST)3. Escribir (“Introduzca el precio por hora”)4. Leer (PH)5. Si (HST < 40) entonces

SM = HST * PHsino

SM = 40 * PH + PH* 2 *(HST-40)Fin_Si

6. Escribir (“Salario mensual”, SM)7. Fin

Page 26: Estructuras de Decisión Simples y Doblesprofesordiegosancho.webs.com/UAM - PROGRA I/SEMANA_07/S_7_8_… · Estructuras no secuenciales ... Flujo de control: Habilidad de definir

34

Estructuras de Decisión Anidadas

if (condición1)

sentencia1

elseif (condición2)

sentencia2

elseif (condición3)

sentencia3

NOTA:A veces es importanteutilizar las llaves paraaclarar el sentido semánticode los if anidados.

Si (condición1) entonces

sentencias1

Si noSi (condición2) entonces

sentencias2

Si noSi (condición3) entonces

sentencias3

Fin_SiFin_Si

Fin_Si

Código en Net BeansPseudocódigo en Español

Page 27: Estructuras de Decisión Simples y Doblesprofesordiegosancho.webs.com/UAM - PROGRA I/SEMANA_07/S_7_8_… · Estructuras no secuenciales ... Flujo de control: Habilidad de definir

Programación Digital I 35

Ejemplo I

void main (){

int = a1;

println(“Introduzca un valor entero\n”);lea a1;if ( a1 >= 0 )

if ( a1 <= 10 )printf(“el numero esta entre 0 y 10\n”);

elseprintf(“el numero no esta entre 0 y 10\n”);

}

Page 28: Estructuras de Decisión Simples y Doblesprofesordiegosancho.webs.com/UAM - PROGRA I/SEMANA_07/S_7_8_… · Estructuras no secuenciales ... Flujo de control: Habilidad de definir

Ejemplo II

public static void main (){

int = a1;

println(“Introduzca un valor entero\n”);lea a1;if ( a1 >= 0 ){

if ( a1 <= 10 )println(“el numero esta entre 0 y 10\n”);

a1++;}else

println (" el numero es negativo ");}

Page 29: Estructuras de Decisión Simples y Doblesprofesordiegosancho.webs.com/UAM - PROGRA I/SEMANA_07/S_7_8_… · Estructuras no secuenciales ... Flujo de control: Habilidad de definir

24/04/05

Ejemplo III. Algoritmo el del Centro.

0. Inicio1. Escribir (“Introduzca tres

números enteros”)2. Leer (A, B, C)3. Si (A > B) entonces

Si (B > C) entoncescentral = B

sino // B < CSi (A > C) entonces

central = Csino // A < C

central = AFin_siFin_si

sino // A < BSi (A > C) entonces

central = ASino // A < C

Si (C > B) entoncescentral = B

sino // C < Bcentral = C

Fin_SiFin_Si

Fin_Si4. Escribir (“el número centrales = “, central)5. Fin

Page 30: Estructuras de Decisión Simples y Doblesprofesordiegosancho.webs.com/UAM - PROGRA I/SEMANA_07/S_7_8_… · Estructuras no secuenciales ... Flujo de control: Habilidad de definir

39

Ejemplo III. Codificación.

void main (){

int A, B, C, central;

println(“Introduzca tresnúmeros enteros\n”);lea A,B,C);if (A > B)

if (B > C)central = B;

else // B <= Cif (A > C)

central = C;else // A <= C

central = A;else // A <= B

if (A > C)central = A;

else // A <= Cif (C > B)

central = B;else // C <= B

central = C;println(“el número central es " +central);

}

Page 31: Estructuras de Decisión Simples y Doblesprofesordiegosancho.webs.com/UAM - PROGRA I/SEMANA_07/S_7_8_… · Estructuras no secuenciales ... Flujo de control: Habilidad de definir

40

Ejercicios Propuestos.

Realice el análisis E-P-S, algoritmo y codificación paracada uno de los siguientes problemas:

Leer un número entero n y calcular e imprimir su inverso1/n. Considerar el caso especial del valor 0, en cuyocaso el programa deberá escribir el mensaje "ERROR-división por cero".

Leer el valor de un año e indicar si es o no un añobisiesto. Recordar la regla:"Un año es bisiesto si es divisible por 400, o bien si esdivisible por 4 pero no por 100”

Page 32: Estructuras de Decisión Simples y Doblesprofesordiegosancho.webs.com/UAM - PROGRA I/SEMANA_07/S_7_8_… · Estructuras no secuenciales ... Flujo de control: Habilidad de definir

41

Ejercicios Propuestos

Leer un instante de tiempo expresado en horas yminutos y escribir como respuesta uno de los mensajes"Buenos días", "Buenas tardes" o "Buenas noches", deacuerdo con las siguientes reglas:

a) Se considera que es de día desde las 7:30 horashasta las 14:00 horas.

b) Se considera que es por la tarde desde las 14:01horas hasta las 20:30 horas.

c) Se considera que es de noche desde las 20:31 horashasta las 7:29 horas.

Page 33: Estructuras de Decisión Simples y Doblesprofesordiegosancho.webs.com/UAM - PROGRA I/SEMANA_07/S_7_8_… · Estructuras no secuenciales ... Flujo de control: Habilidad de definir

Ejercicios Propuestos

Leer un carácter y deducir si está o no comprendidoentre las letras I y M ambas inclusive.

Emitir la factura correspondiente a una compra de unartículo determinado del que se adquieren una o variasunidades. El IVI a aplicar es del 15.5% y si el preciobruto (precio de venta + IVI) es mayor de B.¢ 50.00, seaplicará un descuento del 5%.

Leer las coordenadas cartesianas (x, y) de un punto delplano y calcular e imprimir el cuadrante al cual perteneceel punto (I, II, III, IV).

Page 34: Estructuras de Decisión Simples y Doblesprofesordiegosancho.webs.com/UAM - PROGRA I/SEMANA_07/S_7_8_… · Estructuras no secuenciales ... Flujo de control: Habilidad de definir

Programación Digital I 4424/04/05

Ejercicios Propuestos

Determinar el precio de un pasaje de ida y vuelta enavión. El pasaje tiene un descuento del 30% si ladistancia a viajar es superior a los 800km y si el númerode días de estancia es superior a 7. El precio por km. es¢ 25.000 colones.

Dado un reloj de 24 horas y un tiempo representado enforma de entero de la forma hhmm, donde hh representalas horas (00 a 23) y mm representa los minutos (00 a59), determinar el tiempo después de que han pasado hhoras y m minutos.

Page 35: Estructuras de Decisión Simples y Doblesprofesordiegosancho.webs.com/UAM - PROGRA I/SEMANA_07/S_7_8_… · Estructuras no secuenciales ... Flujo de control: Habilidad de definir

Ejercicios Propuesto

Escribir un programa que convierta de grados

Fahrenheit a Celsius y viceversa. El programa deberá

leer en primer lugar un número entero que indicará si se

va a convertir de grados Fahrenheit a Celsius (1) o de

grados Celsius a Fahrenheit (2). Seguidamente leerá el

valor de la temperatura, realizará la conversión

aplicando la fórmula adecuada e imprimirá.