COMPUTACION 2009 C lase 4 Programa PASCAL SENTENCIAS DATOS Expresiones Tipos Declaración de...
-
Upload
regulo-meraz -
Category
Documents
-
view
225 -
download
0
Transcript of COMPUTACION 2009 C lase 4 Programa PASCAL SENTENCIAS DATOS Expresiones Tipos Declaración de...
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