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

Post on 23-Jan-2016

224 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

COMPUTACION2009

Clase 4

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

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

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;

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

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 $

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)

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;

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;

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

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

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

- UNMDP 12

Sentencias ejecutables deREPETICION

WHILE

REPEAT

FOR

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

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

- UNMDP 14

Sentencias ejecutables deREPETICION

WHILE

REPEAT

FOR

WHILE

EXPRESIONLOGICA

EjecutarSENTENCIA

TRUE

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

La sentencia se

ejecutó una vez

DO

WHILE

EXPRESIONLOGICA

EjecutarSENTENCIA

TRUE

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

La sentencia se

ejecutó dos veces

DO

WHILE

EXPRESIONLOGICA

SIGUE EL PROGRAMA

FALSE

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

La sentencia no

se ejecuta

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.

Sintaxis de WHILE-DOSintaxis de WHILE-DO

WHILE expresión lógica DOSentencia;

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

end;

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;

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:

CICLOS TIPICOS

Ciclo controlado por contador

Ciclo controlado por centinela

Ciclo contador

Ciclo sumador

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.

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

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

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

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

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.

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

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

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

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)

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

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

- UNMDP 34

Sentencias ejecutables deREPETICION

WHILE

REPEAT

FOR

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

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

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)

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.

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.

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;

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

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

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

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.

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

top related