COMPUTACION 2009 Clase 4 Programa PASCAL SENTENCIAS Asignacin

  • Slides: 45
Download presentation
COMPUTACION 2009 Clase 4

COMPUTACION 2009 Clase 4

Programa PASCAL SENTENCIAS Asignación DATOS Decisión Tipos Declaración de variables Expresiones Aritméticas Del programador

Programa PASCAL SENTENCIAS Asignación DATOS Decisión Tipos Declaración de variables Expresiones Aritméticas Del programador Enumerados Repetición Entrada/Salida String Subrangos Lógica Estandar Relacionales Real Boolean Caracter Char Integer

Marca Cilindrada Precio Stock HONDA 100 5000 $ 7 HONDA 220 7800. 50 $

Marca Cilindrada Precio Stock HONDA 100 5000 $ 7 HONDA 220 7800. 50 $ 2 SUZUKI 450 14000 $ 3 HARLEY_D 800 KAWASAKI 650 9/26/2020 50000 $ 30000 $ Computación - Fac. Ingeniería UNMDP 0 3 3

Problema 1: Ø Ø Ø Queremos conocer marca y precio de todas las motos

Problema 1: Ø Ø Ø Queremos conocer marca y precio de todas las motos que valga menos de 20000 $ Cómo lo averiguamos? Por cada moto, preguntamos usando la siguiente decisión: Si el precio< 20000 entonces imprimir marca y precio; 9/26/2020 Computación - Fac. Ingeniería UNMDP 4

Primera moto (moto: =1) Conocer datos de todas las motos que valgan menos de

Primera moto (moto: =1) Conocer datos de todas las motos que valgan menos de 20000 $ READLN(precio, marca); IF precio<20000 THEN WRITELN(precio, marca); Segunda moto (moto: =2) READLN(precio, marca); IF precio<20000 THEN WRITELN(precio, marca); Según nuestros datos, en total tenemos cinco modelos

Tercera moto (moto: =3) READLN(precio, marca); IF precio<20000 THEN WRITELN(precio, marca); Cuarta moto (moto:

Tercera moto (moto: =3) READLN(precio, marca); IF precio<20000 THEN WRITELN(precio, marca); Cuarta moto (moto: =4) READLN(precio, marca); IF precio<20000 THEN WRITELN(precio, marca); Quinta moto (moto: =5) READLN(precio, marca); IF precio<20000 THEN WRITELN(precio, marca); Para lograr la ejecución de la pregunta para cada moto, hemos repetido código 5 veces

Conocer datos de todas las motos que valgan menos de 20000 $ REPETIR CINCO

Conocer datos de todas las motos que valgan menos de 20000 $ REPETIR CINCO VECES Este sentencia es una mejor opción (logramos lo READLN(precio, marca); mismo y NO repetimos IF precio<20000 codigo) THEN WRITELN(precio, marca); FIN REPETIR

Código para leer y sumar tres valores numéricos. Por ejemplo: 6, 12 y 2

Código para leer y sumar tres valores numéricos. Por ejemplo: 6, 12 y 2 SUMA: =0; Read(A); SUMA: =SUMA+A;

Código para leer y sumar tres valores numéricos SUMA: =0; Read(A); SUMA: =SUMA+A;

Código para leer y sumar tres valores numéricos SUMA: =0; Read(A); SUMA: =SUMA+A;

Código para leer y sumar tres valores numéricos SUMA: =0; REPETIR 3 VECES Read(A);

Código para leer y sumar tres valores numéricos SUMA: =0; REPETIR 3 VECES Read(A); SUMA: =SUMA+A; FIN REPETIR

Sentencias ejecutables de repetición ØLas sentencias de repetición especifican que ciertas sentencias (escritas una

Sentencias ejecutables de repetición ØLas sentencias de repetición especifican que ciertas sentencias (escritas una sola vez) deben ejecutarse en forma repetitiva ØLa ejecución repetitiva puede hacerse indicando la cantidad de veces (como en el ejemplo anterior) o señalando que se ejecute una sentencia (simple o compuesta) mientras una expresión lógica sea verdadera (o falsa) según el caso. ØEstas sentencias se conocen como CICLOS 9/26/2020 Computación - Fac. Ingeniería UNMDP 11

Sentencias ejecutables de REPETICION FOR WHILE REPEAT 9/26/2020 Computación - Fac. Ingeniería UNMDP 12

Sentencias ejecutables de REPETICION FOR WHILE REPEAT 9/26/2020 Computación - Fac. Ingeniería UNMDP 12

Si el número de repeticiones SI NO se conoce a-priori la construcción mas apropiada

Si el número de repeticiones SI NO se conoce a-priori la construcción mas apropiada es WHILE o REPEAT. Se recomienda FOR.

Sentencias ejecutables de REPETICION FOR WHILE REPEAT 9/26/2020 Computación - Fac. Ingeniería UNMDP 14

Sentencias ejecutables de REPETICION FOR WHILE REPEAT 9/26/2020 Computación - Fac. Ingeniería UNMDP 14

Estructura de Control: WHILE-DO WHILE EXPRESION LOGICA TRUE DO La sentencia se ejecutó una

Estructura de Control: WHILE-DO WHILE EXPRESION LOGICA TRUE DO La sentencia se ejecutó una vez Ejecutar SENTENCIA

Estructura de Control: WHILE-DO WHILE EXPRESION LOGICA TRUE DO La sentencia se ejecutó dos

Estructura de Control: WHILE-DO WHILE EXPRESION LOGICA TRUE DO La sentencia se ejecutó dos veces Ejecutar SENTENCIA

Estructura de Control: WHILE-DO WHILE FALSE EXPRESION LOGICA La sentencia no se ejecuta SIGUE

Estructura de Control: WHILE-DO WHILE FALSE EXPRESION LOGICA La sentencia no se ejecuta SIGUE EL PROGRAMA

Sentencia WHILE-DO La sentencia WHILE-DO provoca la ejecución de una sentencia mientras una expresión

Sentencia WHILE-DO La sentencia WHILE-DO provoca la ejecución de una sentencia mientras una expresión lógica sea verdadera. Ø ØCuando la expresión lógica es falsa, termina la ejecución. 9/26/2020 Computación - Fac. Ingeniería UNMDP 18

Sintaxis de WHILE-DO WHILE expresión lógica Sentencia; DO WHILE expresión lógica DO begin Sentencia

Sintaxis de WHILE-DO WHILE expresión lógica Sentencia; DO WHILE expresión lógica DO begin Sentencia 1; Sentencia 2; . . . . ; Sentencian end;

Moto: =1; While moto<= 5 do begin readln(marca, precio); if precio< 20000 then writeln(marca,

Moto: =1; While moto<= 5 do begin readln(marca, precio); if precio< 20000 then writeln(marca, precio); moto: =moto+1 end;

Observaciones: ØNotar que, si al iniciarse el ciclo WHILE la expresión lógica es falsa,

Observaciones: ØNotar que, si al iniciarse el ciclo WHILE la expresión lógica es falsa, no se ejecuta la/s sentencia/s. ØEn la expresión lógica debe figurar alguna/s variable/s que la modifiquen durante la ejecución del ciclo. 9/26/2020 Computación - Fac. Ingeniería UNMDP 21

CICLOS TIPICOS Ciclo controlado por contador Ciclo controlado por centinela Ciclo contador Ciclo sumador

CICLOS TIPICOS Ciclo controlado por contador Ciclo controlado por centinela Ciclo contador Ciclo sumador

CICLO controlado por CONTADOR ØUn ciclo controlado por contador es aquel que se ejecuta

CICLO controlado por CONTADOR ØUn ciclo controlado por contador es aquel que se ejecuta un número determinado de veces. Este ciclo está vigilado por una variable de control. El ciclo consta de tres partes: Inicialización 9/26/2020 Evaluación Computación - Fac. Ingeniería UNMDP Incremento 23

Esquema del ciclo controlado por contador I: =1; {Inicialización } WHILE I<5 DO {Evaluación}

Esquema del ciclo controlado por contador I: =1; {Inicialización } WHILE I<5 DO {Evaluación} Begin. . . I: =I+1 End; Variable de control 9/26/2020 {Incremento} Computación - Fac. Ingeniería UNMDP 24

Ejemplo: leer tres números enteros Lote de prueba: I I<=3 1 true -234, 1345,

Ejemplo: leer tres números enteros Lote de prueba: I I<=3 1 true -234, 1345, 20987 program itera; VAR I, A: integer; begin I: =1; WHILE I<=3 do begin READLN(A); I: =I+1; end. A -234 2 true 1345 3 true 20987 4 false Recordar que cada vez que A e I toma un nuevo valor, pierden el anterior

Ejemplo: leer N números enteros program iteratres; VAR I, N, A: integer; begin READLN(N);

Ejemplo: leer N números enteros program iteratres; VAR I, N, A: integer; begin READLN(N); I: =1; WHILE I<=N do begin Lote de prueba: 5, -1, 3, 6, -234, 4 READLN(A); I: =I+1; end.

CICLO controlado por CENTINELA ØEl centinela es un valor específico que toma una variable

CICLO controlado por CENTINELA ØEl centinela es un valor específico que toma una variable (el centinela) en el momento que deseamos terminar una tarea específica. 9/26/2020 Computación - Fac. Ingeniería UNMDP 27

EJEMPLO: Luego de leer una cantidad de datos cuya cantidad no se conoce de

EJEMPLO: Luego de leer una cantidad de datos cuya cantidad no se conoce de antemano (se sabe que los datos son distintos de cero), escribir los que sean mayores que 23. Como todos los datos válidos a procesar son distintos de cero, tomamos como centinela al valor cero.

Program lectura; {ESQUEMA DE LECTURA ADELANTADA} Var num: real; Begin Num num<>0 num>23 SALIDA

Program lectura; {ESQUEMA DE LECTURA ADELANTADA} Var num: real; Begin Num num<>0 num>23 SALIDA WRITE('Ingresar un numero: '); 10 true false READLN(num); 30 true WHILE num <> 0 DO 30 Begin IF num>23 THEN 1234 true WRITELN(num); 1234 WRITE('Ingresar un numero: '); -98 false El códigotrue en azul se READLN(num); coloca antes 23 true defalse End ingresartrue al ciclotrue y se 33 End. repite como las ultimas 33 lineas dentro del 0 false cuerpo del ciclo Lote de prueba: 10, 30, 1234, -98, 23, 33, 0

Ciclo CONTADOR ØUn ciclo contador cuenta la cantidad de veces que ocurre algún hecho.

Ciclo CONTADOR ØUn ciclo contador cuenta la cantidad de veces que ocurre algún hecho. Ejemplo: En un lote de números positivos, cuya cantidad no se conoce a-priori, contar cuantos números hay entre 100 y 200. 9/26/2020 Computación - Fac. Ingeniería UNMDP 30

Program cuenta; Lote de prueba: Var Contador: integer; 10, 189, 234, num: real; 155,

Program cuenta; Lote de prueba: Var Contador: integer; 10, 189, 234, num: real; 155, 78 , 100, -9 Begin Contador: =0; WRITE('Ingresar un numero: '); READLN(num); WHILE num>0 DO Begin IF (num>=100) AND (num<=200) THEN Contador: =Contador+1; WRITE('Ingresar un numero: '); READLN(num) End; WRITELN('La cantidad de datos es', Contador) End.

Ciclo SUMADOR (o acumulador) ØUn ciclo sumador suma un grupo de datos numéricos Ejemplo:

Ciclo SUMADOR (o acumulador) ØUn ciclo sumador suma un grupo de datos numéricos Ejemplo: Sumar 4 números enteros. Escribir el resultado de la suma 9/26/2020 Computación - Fac. Ingeniería UNMDP 32

I suma I<5 Program suma 1; 1 0 true var 234 I, A, suma:

I suma I<5 Program suma 1; 1 0 true var 234 I, A, suma: integer; 2 true BEGIN 200 I: =1; 3 true suma: =0; 218 WHILE I<5 do 4 true begin readln(A); 273 suma: =suma+A; 5 false I: =I+1; end; WRITELN('El valor de suma es: ', suma) end. Lote de prueba: 234, -34, 18, 55 A SALIDA 234 -34 18 55 273

Sentencias ejecutables de REPETICION FOR WHILE REPEAT 9/26/2020 Computación - Fac. Ingeniería UNMDP 34

Sentencias ejecutables de REPETICION FOR WHILE REPEAT 9/26/2020 Computación - Fac. Ingeniería UNMDP 34

Estructura de Control: REPEAT-UNTIL REPEAT Ejecución de SENTENCIA La sentencia se ejecutó UNTIL una

Estructura de Control: REPEAT-UNTIL REPEAT Ejecución de SENTENCIA La sentencia se ejecutó UNTIL una vez EXPRESIÓN LÓGICA

Estructura de Control: REPEAT-UNTIL REPEAT Ejecución de SENTENCIA La sentencia se ejecutó UNTIL dos

Estructura de Control: REPEAT-UNTIL REPEAT Ejecución de SENTENCIA La sentencia se ejecutó UNTIL dos veces EXPRESIÓN LÓGICA FALSE

Estructura de Control: REPEAT-UNTIL REPEAT La sentencia no se ejecuta Fin del REPEAT (continúa

Estructura de Control: REPEAT-UNTIL REPEAT La sentencia no se ejecuta Fin del REPEAT (continúa el programa) TRUE EXPRESIÓN LÓGICA

Sentencia REPEAT-UNTIL ØLa entrada a esta sentencia se hace por la palabra reservada REPEAT.

Sentencia REPEAT-UNTIL ØLa entrada a esta sentencia se hace por la palabra reservada REPEAT. Pascal ejecuta la sentencia/s entre REPEAT y UNTIL. ØLuego evalúa la expresión lógica. 9/26/2020 Computación - Fac. Ingeniería UNMDP 38

Sentencia REPEAT-UNTIL ØSi esta es falsa, el control de ejecución vuelve a REPEAT y

Sentencia REPEAT-UNTIL ØSi esta es falsa, el control de ejecución vuelve a REPEAT y continúa ejecutando la sentencia/s. Este proceso continúa mientras la expresión lógica sea falsa (formándose así un ciclo) ØSi esta es verdadera, termina el ciclo. 9/26/2020 Computación - Fac. Ingeniería UNMDP 39

Sintaxis de la estructura de control: REPEAT-UNTIL REPEAT Sentencia UNTIL Expresión Lógica; Sentencia_1; .

Sintaxis de la estructura de control: REPEAT-UNTIL REPEAT Sentencia UNTIL Expresión Lógica; Sentencia_1; . . ; La sentencia es ejecutada, por lo menos, una vez Sentencia_n UNTIL Expresión lógica; Computación - Fac. Ingeniería 9/26/2020 UNMDP 40

Ejemplo: Escribir los cuatro primeros números naturales A program repeat 1; var A: integer;

Ejemplo: Escribir los cuatro primeros números naturales A program repeat 1; var A: integer; begin A: =1; repeat writeln(A); A: =A+1; until A>4; end. A>4 1 1 2 false 2 3 false 3 4 false 4 5 true

Comparación de repeat con while A program repeat 1; var A: integer; begin A:

Comparación de repeat con while A program repeat 1; var A: integer; begin A: =1; repeat writeln(A); A: =A+1; until A>4; end. A>4 1 1 2 false 2 3 false 3 4 4 5 false true program repeat 1; var A: integer; begin A: =1; while A<=4 do begin writeln(A); A: =A+1; end. A A<=4 1 true 1 2 true 2 3 true 3 4 true 4 5 false

Ejemplo n n Hallar el máximo y el mínimo de un conjunto de datos

Ejemplo n n Hallar el máximo y el mínimo de un conjunto de datos reales. Hagamos un razonamiento top-down 9/26/2020 Computación - Fac. Ingeniería UNMDP 43

Program maxmin; Var cantnum, i: integer; num, max, min: real; BEGIN read(cantnum); read(num) min:

Program maxmin; Var cantnum, i: integer; num, max, min: real; BEGIN read(cantnum); read(num) min: =num; max: =num; i: =2; while i<=cantnum do begin read(num); if num<min then min: =num else if num>max then max: =num; i: =i+1 end; END. Computación - Fac. Ingeniería 9/26/2020 UNMDP 44

EJERCICIO Se lee una cantidad no conocida a priori de números reales positivos. Además

EJERCICIO Se lee una cantidad no conocida a priori de números reales positivos. Además se leen 4 reales positivos A, B, C y D tal que A<B<C<D. Hacer un programa PASCAL para contar cuantos números reales positivos se encuentran en c/u los siguientes 3 sub- intervalos: A B C D Para contar no tener en cuenta a A, B, C y D. Para numeros menores que A y mayores que D no contar.