computacion 2009 c lase 4 programa pascal sentencias datos expresiones tipos declaración de...

45
COMPUTACION 2009 Clase 4

Upload: regulo-meraz

Post on 23-Jan-2016

226 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: COMPUTACION 2009 C lase 4 Programa PASCAL SENTENCIAS DATOS Expresiones Tipos Declaración de variables Declaración de variables Asignación Entrada/Salida

COMPUTACION2009

Clase 4

Page 2: COMPUTACION 2009 C lase 4 Programa PASCAL SENTENCIAS DATOS Expresiones Tipos Declaración de variables Declaración de variables Asignación Entrada/Salida

Programa PASCAL Programa PASCAL SENTENCIASSENTENCIAS

DATOSDATOS

ExpresionesExpresionesTiposTipos Declaración de

variables

Declaración de variables

AsignaciónAsignación

Entrada/SalidaEntrada/Salida

AritméticasAritméticas

LógicaLógica

RelacionalesRelacionales

CaracterCaracter

EstandarEstandar

IntegerInteger

RealReal

CharCharBooleanBoolean

Del programadorDel programador

DecisiónDecisión

EnumeradosEnumerados

SubrangosSubrangos

StringString

Repetición

Page 3: COMPUTACION 2009 C lase 4 Programa PASCAL SENTENCIAS DATOS Expresiones Tipos Declaración de variables Declaración de variables Asignación Entrada/Salida

04/21/23Computación - Fac. Ingeniería

- UNMDP 3

Marca Cilindrada Precio Stock

HONDA 100 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 100 5000 $ 7

HONDA 220 7800.50 $ 2

SUZUKI 450 14000 $ 3

HARLEY_D 800 50000 $ 0

KAWASAKI 650 30000 $ 3

Page 4: COMPUTACION 2009 C lase 4 Programa PASCAL SENTENCIAS DATOS Expresiones Tipos Declaración de variables Declaración de variables Asignación Entrada/Salida

04/21/23Computación - Fac. Ingeniería

- UNMDP 4

Problema 1: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;

Page 5: COMPUTACION 2009 C lase 4 Programa PASCAL SENTENCIAS DATOS Expresiones Tipos Declaración de variables Declaración de variables Asignación Entrada/Salida

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

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

Primera moto (moto:=1)

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

Según nuestros datos, en total tenemos cinco modelos

Page 6: COMPUTACION 2009 C lase 4 Programa PASCAL SENTENCIAS DATOS Expresiones Tipos Declaración de variables Declaración de variables Asignación Entrada/Salida

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

Page 7: COMPUTACION 2009 C lase 4 Programa PASCAL SENTENCIAS DATOS Expresiones Tipos Declaración de variables Declaración de variables Asignación Entrada/Salida

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

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

READLN(precio,marca);

IF precio<20000

THEN WRITELN(precio,marca);

REPETIR CINCO VECES

FIN REPETIR

Este sentencia es una mejor opción (logramos lo mismo y NO repetimos codigo)

Page 8: COMPUTACION 2009 C lase 4 Programa PASCAL SENTENCIAS DATOS Expresiones Tipos Declaración de variables Declaración de variables Asignación Entrada/Salida

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

SUMA:=0;

Read(A);

SUMA:=SUMA+A;

Read(A);

SUMA:=SUMA+A;

Read(A);

SUMA:=SUMA+A;

Page 9: COMPUTACION 2009 C lase 4 Programa PASCAL SENTENCIAS DATOS Expresiones Tipos Declaración de variables Declaración de variables Asignación Entrada/Salida

Código para leer y sumar tres valores numéricosCódigo para leer y sumar tres valores numéricos

SUMA:=0;

Read(A);

SUMA:=SUMA+A;

Read(A);

SUMA:=SUMA+A;

Read(A);

SUMA:=SUMA+A;

Page 10: COMPUTACION 2009 C lase 4 Programa PASCAL SENTENCIAS DATOS Expresiones Tipos Declaración de variables Declaración de variables Asignación Entrada/Salida

Código para leer y sumar tres valores numéricosCódigo para leer y sumar tres valores numéricos

SUMA:=0;

Read(A);

SUMA:=SUMA+A;

REPETIR 3 VECES

FIN REPETIR

Page 11: COMPUTACION 2009 C lase 4 Programa PASCAL SENTENCIAS DATOS Expresiones Tipos Declaración de variables Declaración de variables Asignación Entrada/Salida

04/21/23Computación - Fac. Ingeniería

- UNMDP 11

Las sentencias de repetición especifican que ciertas sentencias (escritas una sola vez) deben ejecutarse en forma repetitivaejecutarse 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 lógica sea verdadera (o falsa) según el caso.

Estas sentencias se conocen como CICLOS

Sentencias ejecutables de repetición

Page 12: COMPUTACION 2009 C lase 4 Programa PASCAL SENTENCIAS DATOS Expresiones Tipos Declaración de variables Declaración de variables Asignación Entrada/Salida

04/21/23Computación - Fac. Ingeniería

- UNMDP 12

Sentencias ejecutables deREPETICION

WHILE

REPEAT

FOR

Page 13: COMPUTACION 2009 C lase 4 Programa PASCAL SENTENCIAS DATOS Expresiones Tipos Declaración de variables Declaración de variables Asignación Entrada/Salida

la construcción mas apropiada es

WHILE o REPEAT.

la construcción mas apropiada es

WHILE o REPEAT.

Si el número de repeticiones

se conoce a-priori

Se recomienda FOR.

Se recomienda FOR.

NO SI

Page 14: COMPUTACION 2009 C lase 4 Programa PASCAL SENTENCIAS DATOS Expresiones Tipos Declaración de variables Declaración de variables Asignación Entrada/Salida

04/21/23Computación - Fac. Ingeniería

- UNMDP 14

Sentencias ejecutables deREPETICION

WHILE

REPEAT

FOR

Page 15: COMPUTACION 2009 C lase 4 Programa PASCAL SENTENCIAS DATOS Expresiones Tipos Declaración de variables Declaración de variables Asignación Entrada/Salida

WHILE

EXPRESIONLOGICA

EjecutarSENTENCIA

TRUE

Estructura de Control: WHILE-DOEstructura de Control: WHILE-DO

La sentencia se

ejecutó una vez

DO

Page 16: COMPUTACION 2009 C lase 4 Programa PASCAL SENTENCIAS DATOS Expresiones Tipos Declaración de variables Declaración de variables Asignación Entrada/Salida

WHILE

EXPRESIONLOGICA

EjecutarSENTENCIA

TRUE

Estructura de Control: WHILE-DOEstructura de Control: WHILE-DO

La sentencia se

ejecutó dos veces

DO

Page 17: COMPUTACION 2009 C lase 4 Programa PASCAL SENTENCIAS DATOS Expresiones Tipos Declaración de variables Declaración de variables Asignación Entrada/Salida

WHILE

EXPRESIONLOGICA

SIGUE EL PROGRAMA

FALSE

Estructura de Control: WHILE-DOEstructura de Control: WHILE-DO

La sentencia no

se ejecuta

Page 18: COMPUTACION 2009 C lase 4 Programa PASCAL SENTENCIAS DATOS Expresiones Tipos Declaración de variables Declaración de variables Asignación Entrada/Salida

04/21/23Computación - Fac. Ingeniería

- UNMDP 18

Sentencia WHILE-DOSentencia 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.

Page 19: COMPUTACION 2009 C lase 4 Programa PASCAL SENTENCIAS DATOS Expresiones Tipos Declaración de variables Declaración de variables Asignación Entrada/Salida

Sintaxis de WHILE-DOSintaxis de WHILE-DO

WHILE expresión lógica DOSentencia;

WHILE expresión lógica DObegin Sentencia1; Sentencia2; .................; Sentencian

end;

Page 20: COMPUTACION 2009 C lase 4 Programa PASCAL SENTENCIAS DATOS Expresiones Tipos Declaración de variables Declaración de variables Asignación Entrada/Salida

Moto:=1;

While moto<= 5 do

begin

readln(marca, precio);

if precio< 20000 then

writeln(marca,precio);

moto:=moto+1

end;

Moto:=1;

While moto<= 5 do

begin

readln(marca, precio);

if precio< 20000 then

writeln(marca,precio);

moto:=moto+1

end;

Page 21: COMPUTACION 2009 C lase 4 Programa PASCAL SENTENCIAS DATOS Expresiones Tipos Declaración de variables Declaración de variables Asignación Entrada/Salida

04/21/23Computación - Fac. Ingeniería

- UNMDP 21

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.

Observaciones:

Page 22: COMPUTACION 2009 C lase 4 Programa PASCAL SENTENCIAS DATOS Expresiones Tipos Declaración de variables Declaración de variables Asignación Entrada/Salida

CICLOS TIPICOS

Ciclo controlado por contador

Ciclo controlado por centinela

Ciclo contador

Ciclo sumador

Page 23: COMPUTACION 2009 C lase 4 Programa PASCAL SENTENCIAS DATOS Expresiones Tipos Declaración de variables Declaración de variables Asignación Entrada/Salida

04/21/23Computación - Fac. Ingeniería

- UNMDP 23

El ciclo consta de tres partes:El ciclo consta de tres partes:

InicializaciónInicializaciónEvaluaciónEvaluación

IncrementoIncremento

CICLO controlado por CICLO controlado por CONTADORCONTADORUn ciclo controlado por contador es aquel

que se

ejecuta un número determinado de veces. Este ciclo

está vigilado por una variable de control.

Page 24: COMPUTACION 2009 C lase 4 Programa PASCAL SENTENCIAS DATOS Expresiones Tipos Declaración de variables Declaración de variables Asignación Entrada/Salida

04/21/23Computación - Fac. Ingeniería

- UNMDP 24

I:=1; {Inicialización }WHILE I<5 DO {Evaluación} Begin . . . . . . . . . . . . I:=I+1 {Incremento} End;

Esquema del ciclo controlado por Esquema del ciclo controlado por contadorcontador

Variable de control

Page 25: COMPUTACION 2009 C lase 4 Programa PASCAL SENTENCIAS DATOS Expresiones Tipos Declaración de variables Declaración de variables Asignación Entrada/Salida

Ejemplo: leer tres númerosEjemplo: leer tres números enterosenteros

program itera; VAR I,A:integer;begin I:=1; WHILE I<=3 do begin READLN(A); I:=I+1; endend.

I I<=3 A

1

true

-234

2

true

1345

3

true

20987

4

false

Recordar que cada vez que A e I toma un nuevo valor, pierden el anterior

Lote de prueba:

-234,1345,20987

Page 26: COMPUTACION 2009 C lase 4 Programa PASCAL SENTENCIAS DATOS Expresiones Tipos Declaración de variables Declaración de variables Asignación Entrada/Salida

Ejemplo: leer N números enterosEjemplo: leer N números enteros

program iteratres; VAR I,N,A:integer;begin READLN(N); I:=1; WHILE I<=N do begin READLN(A); I:=I+1; endend.

Lote de prueba:5, -1,3,6,-234,4

Page 27: COMPUTACION 2009 C lase 4 Programa PASCAL SENTENCIAS DATOS Expresiones Tipos Declaración de variables Declaración de variables Asignación Entrada/Salida

04/21/23Computación - Fac. Ingeniería

- UNMDP 27

El centinela es un valor específico que toma una variable (el centinela) en el momento que deseamos terminar una tarea específica.

CICLO controlado por CENTINELACICLO controlado por CENTINELA

Page 28: COMPUTACION 2009 C lase 4 Programa PASCAL SENTENCIAS DATOS Expresiones Tipos Declaración de variables Declaración de variables Asignación Entrada/Salida

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.

Page 29: COMPUTACION 2009 C lase 4 Programa PASCAL SENTENCIAS DATOS Expresiones Tipos Declaración de variables Declaración de variables Asignación Entrada/Salida

El código en azul se coloca antes de ingresar al ciclo y se repite como las ultimas lineas dentro del cuerpo del ciclo

El código en azul se coloca antes de ingresar al ciclo y se repite como las ultimas lineas dentro del cuerpo del ciclo

Program lectura; {ESQUEMA DE LECTURA ADELANTADA} Var num: real;Begin WRITE('Ingresar un numero:'); READLN(num); WHILE num <> 0 DO Begin IF num>23 THEN WRITELN(num); WRITE('Ingresar un numero:'); READLN(num); End End.

Num num<>0 num>23 SALIDA

10 true false

30 true true

1234 true true

-98 true false

23 true false

33 true true

0 false

30

1234

33

Lote de prueba:10,30,1234,-98,23,33,0

Page 30: COMPUTACION 2009 C lase 4 Programa PASCAL SENTENCIAS DATOS Expresiones Tipos Declaración de variables Declaración de variables Asignación Entrada/Salida

04/21/23Computación - Fac. Ingeniería

- UNMDP 30

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.

Ciclo CONTADORCiclo CONTADOR

Page 31: COMPUTACION 2009 C lase 4 Programa PASCAL SENTENCIAS DATOS Expresiones Tipos Declaración de variables Declaración de variables Asignación Entrada/Salida

Program cuenta; Var Contador:integer; num:real; 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.

Lote de prueba:

10, 189, 234,

155, 78 ,100, -9

Page 32: COMPUTACION 2009 C lase 4 Programa PASCAL SENTENCIAS DATOS Expresiones Tipos Declaración de variables Declaración de variables Asignación Entrada/Salida

04/21/23Computación - Fac. Ingeniería

- UNMDP 32

Un ciclo sumador suma un grupo de datos numéricos

Ejemplo: Sumar 4 números enteros. Escribir el resultado de la suma

Ejemplo: Sumar 4 números enteros. Escribir el resultado de la suma

Ciclo SUMADOR (o Ciclo SUMADOR (o acumulador)acumulador)

Page 33: COMPUTACION 2009 C lase 4 Programa PASCAL SENTENCIAS DATOS Expresiones Tipos Declaración de variables Declaración de variables Asignación Entrada/Salida

Program suma1;var I,A,suma:integer; BEGIN I:=1; suma:=0; WHILE I<5 do begin readln(A); suma:=suma+A; I:=I+1; end; WRITELN('El valor de suma es:',suma) end.

I suma I<5 A SALIDA

1 0 true 234

234

2 true -34

200

3 true 18

218

4 true 55

273

5 false 273

Lote de prueba:234,-34,18,55

Page 34: COMPUTACION 2009 C lase 4 Programa PASCAL SENTENCIAS DATOS Expresiones Tipos Declaración de variables Declaración de variables Asignación Entrada/Salida

04/21/23Computación - Fac. Ingeniería

- UNMDP 34

Sentencias ejecutables deREPETICION

WHILE

REPEAT

FOR

Page 35: COMPUTACION 2009 C lase 4 Programa PASCAL SENTENCIAS DATOS Expresiones Tipos Declaración de variables Declaración de variables Asignación Entrada/Salida

Estructura de Control: REPEAT-UNTILEstructura de Control: REPEAT-UNTIL

REPEAT

Ejecución de SENTENCIA

EXPRESIÓN LÓGICA

UNTIL

La sentencia

se ejecutó

una vez

Page 36: COMPUTACION 2009 C lase 4 Programa PASCAL SENTENCIAS DATOS Expresiones Tipos Declaración de variables Declaración de variables Asignación Entrada/Salida

Estructura de Control: REPEAT-UNTILEstructura de Control: REPEAT-UNTIL

REPEAT

Ejecución de SENTENCIA

EXPRESIÓN LÓGICA

FALSE

UNTIL

La sentencia

se ejecutó

dos veces

Page 37: COMPUTACION 2009 C lase 4 Programa PASCAL SENTENCIAS DATOS Expresiones Tipos Declaración de variables Declaración de variables Asignación Entrada/Salida

Estructura de Control: REPEAT-UNTILEstructura de Control: REPEAT-UNTIL

REPEAT

EXPRESIÓN LÓGICA

La sentencia

no se ejecuta

TRUE

Fin del REPEAT (continúa el programa)

Page 38: COMPUTACION 2009 C lase 4 Programa PASCAL SENTENCIAS DATOS Expresiones Tipos Declaración de variables Declaración de variables Asignación Entrada/Salida

04/21/23Computación - Fac. Ingeniería

- UNMDP 38

Sentencia REPEAT-UNTILSentencia 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.

Page 39: COMPUTACION 2009 C lase 4 Programa PASCAL SENTENCIAS DATOS Expresiones Tipos Declaración de variables Declaración de variables Asignación Entrada/Salida

04/21/23Computación - Fac. Ingeniería

- UNMDP 39

Sentencia REPEAT-UNTILSentencia 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.

Page 40: COMPUTACION 2009 C lase 4 Programa PASCAL SENTENCIAS DATOS Expresiones Tipos Declaración de variables Declaración de variables Asignación Entrada/Salida

04/21/23Computación - Fac. Ingeniería

- UNMDP 40

Sintaxis de la estructura de control: Sintaxis de la estructura de control: REPEAT-UNTILREPEAT-UNTIL

La sentencia es ejecutada, por lo menos, una vez

La sentencia es ejecutada, por lo menos, una vez

REPEAT

Sentencia_1;

..........;

Sentencia_n

UNTIL Expresión lógica;

REPEAT SentenciaUNTIL Expresión Lógica;

Page 41: COMPUTACION 2009 C lase 4 Programa PASCAL SENTENCIAS DATOS Expresiones Tipos Declaración de variables Declaración de variables Asignación Entrada/Salida

program repeat1;var A:integer;begin A:=1; repeat writeln(A); A:=A+1; until A>4; end.

Ejemplo: Escribir los cuatro primeros números naturales

A A>4

1

2 false

3 false

4 false

5 true

1

2

3

4

Page 42: COMPUTACION 2009 C lase 4 Programa PASCAL SENTENCIAS DATOS Expresiones Tipos Declaración de variables Declaración de variables Asignación Entrada/Salida

program repeat1;var A:integer;begin A:=1; repeat writeln(A); A:=A+1; until A>4; end.

Comparación de repeat con while

program repeat1;var A:integer;begin A:=1; while A<=4 do begin writeln(A); A:=A+1; endend.

A A>4

1

2 false

3 false

4 false

5 true

1

2

3

4

A A<=4

1 true

2 true

3 true

4 true

5 false

1

2

3

4

Page 43: COMPUTACION 2009 C lase 4 Programa PASCAL SENTENCIAS DATOS Expresiones Tipos Declaración de variables Declaración de variables Asignación Entrada/Salida

Ejemplo Hallar el máximo y el mínimo de un

conjunto de datos reales. Hagamos un razonamiento top-down

04/21/23Computación - Fac. Ingeniería

- UNMDP 43

Page 44: COMPUTACION 2009 C lase 4 Programa PASCAL SENTENCIAS DATOS Expresiones Tipos Declaración de variables Declaración de variables Asignación Entrada/Salida

04/21/23Computación - Fac. Ingeniería

- UNMDP 44

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.

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.

Page 45: COMPUTACION 2009 C lase 4 Programa PASCAL SENTENCIAS DATOS Expresiones Tipos Declaración de variables Declaración de variables Asignación Entrada/Salida

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.

EJERCICIOEJERCICIO