Descargar la presentación
La descarga está en progreso. Por favor, espere
Publicada porEurico Bandera Modificado hace 10 años
2
COMPUTACION 2009 C lase 3
3
4/26/2015 Computación - Fac. Ingeniería - UNMDP2 Marca Cilindrada Precio Stock HONDA dax 5000 $ 7 HONDA 220 7800.50 $ 2 SUZUKI 450 14000 $ 3 HARLEY_D 800 50000 $ 0 KAWASAKI 650 30000 $ 3 Marca Cilindrada Precio Stock HONDA dax 5000 $ 7 HONDA 220 7800.50 $ 2 SUZUKI 450 14000 $ 3 HARLEY_D 800 50000 $ 0 KAWASAKI 650 30000 $ 3
4
4/26/2015 Computación - Fac. Ingeniería - UNMDP3 Problema 1: Queremos una moto que valga menos de 20000 $ Cómo lo averiguamos? Preguntemos usando una expresión relacional: Si el precio< 20000 entonces compro la moto; sino, no la compro
5
4/26/2015 Computación - Fac. Ingeniería - UNMDP4 Problema 2: Queremos una moto que valga menos de 20000 $ y que sea una HONDA Cómo lo averiguamos? Preguntemos usando una expresión lógica: Si el (precio< 20000) AND (marca=HONDA) entonces compro la moto; sino, no la compro
6
4/26/2015 Computación - Fac. Ingeniería - UNMDP5 HD Procesador Monitor Precio Quantu 160G Intel Pentium II 266 Samsung LCD 2700 $ IBM 9.1G Intel Celeron 466 Philips plano 1890.10 $ Compak 9G Athlon 2400 Viewsonic 17 2500 $ Carry 20G AMD 2000 Rowland 17 1500.90 $ Quantum 80G Intel P. CORE Duo Philips 17 2800 $
7
4/26/2015 Computación - Fac. Ingeniería - UNMDP6 Problema 3: Queremos una computadora que tenga un disco rígido con por lo menos 120 gigabaytes y que no valga mas de 2200 $. Cómo lo averiguamos? Preguntemos usando una expresión lógica: Si el (HD> =120) AND (precio<=2200) entonces compro la computadora; sino, no la compro
8
Programa PASCAL SENTENCIAS DATOS Expresiones Tipos Declaración de variables Declaración de variables Asignación Entrada/Salida Aritméticas Lógica Relacionales Caracter Estandar Integer Real Char Boolean Del programador Decisión Enumerados Subrangos String Repetición
9
Sentencias de decisión (son dos) IF- THEN- ELSE CASE
10
Precio < 20000 VERDADERA Compro la moto Continua el programa
11
Precio<20000 FALSA No compro la moto Continua el programa
12
expresion logica verdadera Ejecuta la sentencia1 Continua el programa IF
13
expresion logica falsa Ejecuta la sentencia2 Continua el programa IF
14
expresion logica verdadera falsa Ejecuta la sentencia1 Ejecuta la sentencia2 Continua el programa IF
15
expresion logica THEN ELSE Ejecuta la sentencia1 Ejecuta la sentencia2 Continua el programa IF
16
4/26/2015 Computación - Fac. Ingeniería - UNMDP15 De aquí en mas se usará la palabra sentencia para indicar tanto una sentencia simple como compuesta ( o estructurada) La sentencia IF especifica que sentencia1(que sigue a THEN) debe ejecutarse solo si una cierta condición (= expresión lógica) es verdadera. Si es falsa, entonces se ejecuta sentencia2, que sigue al símbolo ELSE Sentencia IF-THEN-ELSE
17
4/26/2015 Computación - Fac. Ingeniería - UNMDP16 Sentencia de decisión Una sentencia de decisión es una sentencia estructurada (o compuesta). Esto significa que esta sentencia contiene otras sentencias Su función principal es decidir que sentencia/s se debe ejecutar siguiendo el resultado de una expresión. Tener en cuenta que cada vez que se evalua la expresión logica, se ejecuta la sentencia que sigue a THEN o la sentencia que sigue a ELSE, pero NO AMBAS.
18
4/26/2015 Computación - Fac. Ingeniería - UNMDP17 IF expresión lógica THEN sentencia1 ELSE sentencia2; Sintaxis de la sentencia IF-THEN- ELSE
19
Motos Program Motos; Var precio:real; compro:boolean; Begin WRITE('Ingrese precio'); READLN(precio); IF precio<=20000 THEN compro:=true ELSE compro:=false; End. Este punto y coma es obligatorio si a continuación hay otra sentencia; sino es asi, es opcional. Recordar que END no es sentencia
20
EJEMPLO: Se lee un par de coordenadas (x,y) de un punto del plano. Verificar si se encuentra en el interior o en el exterior de la circunferencia centrada en el origen y con radio 5. Escribir un cartel aclaratorio en cada caso. Program circunferencia; Var x,y:real; Begin WRITE('Ingrese dos valores reales'); READLN(x,y); IF x*x+y*y<=25 THEN writeln('punto dentro de la circunfer.') ELSE writeln(‘punto fuera de la circunfer.’); End.
21
EJEMPLO: Se lee un par de coordenadas (x,y) de un punto del plano. Si el punto se encuentra en el interior de la circunferencia centrada en el origen y con radio 5 escribir el valor de x 2 +y 2 ; en caso contrario aclararlo. Escribir un cartel aclaratorio en los dos casos. EJEMPLO: Se lee un par de coordenadas (x,y) de un punto del plano. Si el punto se encuentra en el interior de la circunferencia centrada en el origen y con radio 5 escribir el valor de x 2 +y 2 ; en caso contrario aclararlo. Escribir un cartel aclaratorio en los dos casos.
22
Program circunferencia; Var x,y,d:real; Begin WRITE('Ingrese dos valores reales'); READLN(x,y); d:=x*x+y*y; IF d<=25 THEN begin writeln('punto dentro circ.'); writeln(‘x*x+y*y=‘,d) end ELSE writeln(‘pto fuera de la circ.’) End. Sentencia compuesta: debe encerrarse entre los parentesis begin y end. Significa que si la condición es verdadera debe ejecutarse dos sentencias No se debe escribir punto y coma (;). Aquí no termina la sentencia IF-THEN-ELSE. Se debe colocar ; para separar las dos sentencias
23
4/26/2015 Computación - Fac. Ingeniería - UNMDP22 IF expresión lógica THEN sentencia; Si solo nos interesa ejecutar una sentencia cuando la expresión booleana es verdadera, se usa una estructura IF simplificada. Esta sentencia simplificada solo posee la sentencia que sigue a THEN: Sintaxis de la estructura IF-THEN
24
4/26/2015 Computación - Fac. Ingeniería - UNMDP23 Ejemplo de IF-THEN Dada una ecuación cuadrática, estimar e imprimir las raices complejas (solo parte de un programa). d:= b*b - 4*a*c ; IF d < 0 THEN begin real:= -b/(2*a); imag:= sqrt(abs(d))/(2*a); writeln(‘x=‘,real,’+/-’,imag,’ i’) end;
25
Observación Evitar el abuso de IF cuando se usa variables booleanas. Veamoslo con un ejemplo: sea encontrado una variable booleana IF a=b THEN encontrado:= true ELSE encontrado:=false; Mas simple y en forma equivalente tenemos: encontrado:= a=b;
26
4/26/2015 Computación - Fac. Ingeniería - UNMDP25 Como ya vimos, sentencia1 y sentencia2 puede ser una sentencia simple o una estructurada. Por lo tanto la sentencia IF-THEN- ELSE puede ser otra estructura de decisión. En este caso tendremos sentencias IF anidadas. Sentencias condicionales anidadas
27
4/26/2015 Computación - Fac. Ingeniería - UNMDP26 IF expresion logica THEN begin sentencia/s (IF,asignacion,E/S) end ELSE begin sentencia/s (IF,asignacion,E/S) END;
28
Analizar si la suma de dos números cualesquiera es positiva o negativa. En caso de ser cero, indicar que estos son números opuestos. Program anidamiento; Var a,b,suma:real; BEGIN READLN(a,b); suma:=a+b; IF suma>0 THEN writeln('suma positiva') ELSE IF suma<0 THEN writeln('suma Negativa') ELSE writeln('numeros Opuestos') END.
29
En el ejemplo anterior hemos tenido 3 condiciones mutuamente excluyentes: suma>0 suma<0 suma=0 Cada una de ellas desata acciones distintas. En estos casos el anidamiento de IF bien desarrollado evita preguntas superfluas (por ejemplo preguntar suma=0 porque la única opción que tenemos en el segundo ELSE es ese caso) Observación 1
30
OBSERVACION 2 A fin de evitar la ambigüedad sintáctica que surge de la construcción: IF exp_booleana1 THEN IF exp_booleana2 THEN sentencia1 ELSE sentencia2; Conviene usar la indentación y si desea puede poner los parentesis BEGIN/END a fin de incrementar la legibilidad y evitar la ambigüedad. Nos queda la construcción equivalente: IF exp_booleana1 THEN BEGIN IF exp_booleana2 THEN sentencia1 ELSE sentencia2 END;
31
Podemos aumentar la legibilidad de un programa usando apropiadamente las expresiones booleanas. OBSERVACION 3: el buen uso de las expresiones booleanas Ejemplo:imprimir el mínimo de tres números a,b,c (solo un caso): Podemos usar dos IF anidados IF a<b THEN IF a<c THEN writeln(a); O bien definir una expresión booleana mas compleja y usar UN solo IF: IF (a<b) and (a<c) THEN writeln(a);
32
4/26/2015 Computación - Fac. Ingeniería - UNMDP31 SENTENCIA CASE: estructura de decisión múltiple Cuando tenemos varias sentencias mutuamente excluyentes (mas de dos), con probabilidad de selección pareja, usamos CASE (con algunas restricciones).
33
4/26/2015 Computación - Fac. Ingeniería - UNMDP32 Ejemplo Un cobrador de peaje tiene el siguiente cuadro de categorías y lo que debe cobrar: Categoría Vehículo Tarifa 1 y 2 Bici y motos Gratis 3 Autos 2.50 4 Autos con trailer 5 5 Camiones 10
34
4/26/2015 Computación - Fac. Ingeniería - UNMDP33 PROGRAM peaje; TYPE Tipo=1..5;{tipo de dato enumerado} VAR Cate:tipo; Tarifa:real; error:boolean; Programa PASCAL usando IF anidados
35
BEGIN error:=false; READLN(cate); IF (cate=1)or(cate=2)THEN tarifa:=0 ELSE IF cate=3 THEN tarifa:=2.5 ELSE IF cate=4 THEN Tarifa:=5 ELSE IF cate=5 THEN Tarifa:=10 ELSE error:=true; IF error THEN WRITELN(‘Nro. Equivocado’) ELSE WRITELN(‘La TARIFA es =’,tarifa) END.
36
4/26/2015 Computación - Fac. Ingeniería - UNMDP35 Selección múltiple: CASE La sentencia CASE permite seleccionar una de entre varias sentencias según un selector. El selector es una expresión ordinal. No puede ser del tipo real.
37
4/26/2015 Computación - Fac. Ingeniería - UNMDP36 CASE selector OF Lista de ctes.1 : sentencia 1; Lista de ctes.2 : sentencia 2;...................... Lista de ctes.n : sentencia n; ELSE sentencia m END; Sintaxis de CASE
38
4/26/2015 Computación - Fac. Ingeniería - UNMDP37 PROGRAM peaje; TYPE Tipo=1..5; VAR Cate:tipo; Tarifa:real; error:boolean; BEGIN READLN(cate); error:=false; CASE cate OF 1,2 :tarifa:=0; 3 :tarifa:=2.5; 4 :tarifa:=5; 5 :tarifa:=10; ELSE error:=true END; IF error THEN WRITELN(‘Nro. Equivocado’) ELSE WRITELN(‘La tarifa es =’,tarifa) END. Los IF anidados pueden ser llevados a la sentencia CASE equivalente:
39
4/26/2015 Computación - Fac. Ingeniería - UNMDP38 CASE selecciona como siguiente sentencia a ejecutarse aquella cuya etiqueta (las ctes.) es igual al valor actual del selector Si el valor actual de selector (que es una expresión) no encuentra un valor igual en alguna de las listas de constantes ejecuta la sentencia que sigue a ELSE. ELSE es opcional El tipo de dato de la expresion selector debe ser ordinal (se excluye el tipo real y string) Cada constante debe ser única dentro de cada CASE. No usar intervalos de la forma 0.5<x<2.5 como etiqueta (de la lista de constantes) CASE selecciona como siguiente sentencia a ejecutarse aquella cuya etiqueta (las ctes.) es igual al valor actual del selector Si el valor actual de selector (que es una expresión) no encuentra un valor igual en alguna de las listas de constantes ejecuta la sentencia que sigue a ELSE. ELSE es opcional El tipo de dato de la expresion selector debe ser ordinal (se excluye el tipo real y string) Cada constante debe ser única dentro de cada CASE. No usar intervalos de la forma 0.5<x<2.5 como etiqueta (de la lista de constantes) OBSERVACIONES:
40
4/26/2015 Computación - Fac. Ingeniería - UNMDP39 Sintaxis de CASE: tipos de selector y etiquetas constantes CASE selector OF ´a´..´z´ :sentencia1; ´A´..´J´ :sentencia 2; ´Z´ :sentencia 3; ´4´ :sentencia 4; ´1´,´2´,´3´ :sentencia 5; ELSE sentencia 6 END; Tipo char
41
4/26/2015 Computación - Fac. Ingeniería - UNMDP40 Sintaxis de CASE: tipos de selector y etiquetas constantes CASE selector OF 4,5,6 :sentencia1; 1 :sentencia 2; 10..30 :sentencia 3; ELSE sentencia 4 END; Tipo integer
42
4/26/2015 Computación - Fac. Ingeniería - UNMDP41 Ejemplo 50<= cilindrada < 300 la moto es poco potente 300 <= cilindrada < 700 la moto es potente 700 <= cilindrada <1500 la moto es muy potente
43
4/26/2015 Computación - Fac. Ingeniería - UNMDP42 PROGRAM motos; VAR Categoria:string[15]; cilindrada:integer; error:boolean; BEGIN READLN(cilindrada); error:=false; CASE cilindrada OF 50..299 :categoria:=‘poco potente’; 300..699 :categoria:=‘potente’; 700..1500 :categoria:=‘muy potente’; ELSE error:=true END; IF error THEN WRITELN(‘valor equivocado’) ELSE WRITELN(‘La categoria es =’, categoria) END.
Presentaciones similares
© 2025 SlidePlayer.es Inc.
All rights reserved.