viernes, 25 de marzo de 2011

ESTRUCTURAS DE CONTROL

Estructuras de Control - Iteración


Tal como se explicó anteriormente esta estructura permite condicionar una acción en base a una condición
lógica. La forma simple es:
Decisiones simples (If-Then)
IF


Ejemplos:
expresión lógica THEN sentencia
If a>b then write (a);
If a<b then
BEGIN
Read m,n;
Writeln(m+n);
End;
END.
􀂾


La estructura de control vista en el apunte anterior en la página 5 se puede codificar en Pascal de la siguiente
manera:
Decisiones dobles (If-Then-Else)
IF


El ejemplo 3, de la misma página del apunte anterior, quedaría codificado en Pascal:
expresión lógica THEN sentencia1 ELSE sentencia2
PROGRAM EJEMPLO(INPUT,OUTPUT);
VAR a,b,x:=real
BEGIN
Read (a,b);
if a<b
then x:=a*b
else x:=a+b;
write (x);
END.


La estructura


CASE
selector1: sentencia1;
selector2: sentencia2;
selector3: sentencia3;
selector4: sentencia4;
:
:
:
selectorn: sentencian
END


La expresión puede ser cualquier tipo que no sea real. A menudo, se trata de una sola variable de tipo simple.
Los selectores, representan valores
presentarán valores enteros dentro de un rango determinado. Los selectores pueden o no presentarse en orden, pero
no deben repetirse. Las sentencias pueden ser simples o estructuradas. El uso de sentencias estructuradas es bastante
común. Las sentencias no tienen porque ser únicas (Una misma sentencia se puede usar con dos o más selectores.
Cada sentencia se ejecutará solamente si el selector coincide con la expresión.
El ejemplo de la pagina 7 del apunte anterior, queda codificado:


PROGRAM EJEMPLO2(INPUT,OUTPUT);
VAR nota:integer;
BEGIN
read (nota);
if (nota >= 1) and (nota <= 10) then
Begin
CASE nota OF
1,2,3: write('Aplazado');
4,5: write('Regular');
6,7,8,9,10: write('Aprobado');
end;
end;
END.
Decisiones Múltiples (Case) CASE, vista en la página 7 del apunte anterior, se codifica en pascal en forma general: expresión OF posibles de la expresión. Así si la expresión es de tipo entero, los selectores


La estructura de


WHILE


La parte de la sentencia de la estructura se ejecutará repetidamente en tanto la expresión lógica sea
La sentencia puede ser simple o estructurada, aunque generalmente, es una sentencia compuesta que puede modificar el valor de la expresión lógica.
Lazo condicional (While-Do) While-Do permite un control repetitivo condicional. La forma general de ésta estructura es: expresión lógica DO sentencia cierta.
El ejemplo de la página, queda entonces como:
PROGRAM SUMA_ITERATIVA(INPUT,OUTPUT);
VAR n,cant:integer;
VAR suma,numero:real;
BEGIN
read (n);
cant:=0;
suma:=0;
WHILE cant<n DO
BEGIN
read (numero);
suma:=suma+numero;
cant:=cant+1;
end;
write(suma);
end.


La estructura de
estrutura


REPEAT


Las sentencias se ejecutarán hasta que la expresión lógica sea cierta. Nótese que al menos una vez, las
sentencias se ejecutarán, ya que la estructura chequea la expresión lógica recién al final de la misma.
Otra diferencia entre While-Do y Repeat-Until es que mientras la primera sólo permite una sentencia (Aunque
permite que sea compuesta), la estructura Repeat-Until permite que las sentencias
Begin-End.
Utilizando esta estructura, el ejemplo de la página, queda codificado:


PROGRAM SUMA_ITERATIVA_REP(INPUT,OUTPUT);
VAR n,cant:integer;
VAR suma,numero:real;
BEGIN
read (n);
cant:=0;
suma:=0;
REPEAT
read (numero);
suma:=suma+numero;
cant:=cant+1;
UNTIL CANT=N;
write(suma);
end.
Lazo condicional (Repeat-Until) Repeat-Until permite un control repetitivo condicional similar al proporcionado por laWhile-Do. La forma general de expresar el lazo es: sentencias UNTIL expresión lógica no estén comprendidas entre


La estructura For (
estructura permite que una acción se repita una determinada cantidad de veces. La forma general de la estructura es:


FOR


La sentencia de la estructura puede ser simple o estructurada, aunque generalmente es una sentencia compuesta
que puede incluir estructuras de control. Esta sentencia se ejecutará para cada uno de los valores sucesivos asignados
Estructura repetitiva (For) ver Parte 3 Pag18) se emplea para realizar bucles incondicionales en Pascal. Es decir, esta variable de control := valor1 TO valor2 DO sentencia
a la variable de control. El número de valores asignados a la variable de control determina el número de veces que la
sentencia se ejecutará.
La variable de control debe ser una variable simple de cualquier tipo, menos real. Normalmente, será una
variable entera. Inicialmente, a ésta variable, se le asigna el
el valor siguiente cada vez que el lazo se cierra, hasta que alcanza el
incrementará en 1 cada vez que se complete el bucle, por lo que la sentencia se ejecutara (
1Usando esta estructura, el ejemplo de la página 12 del apunte anterior, queda codificado:


PROGRAM SUMA_ITERATIVA_DESDE(INPUT,OUTPUT);
VAR n,cant:Integer;
VAR suma,numero:Real;
BEGIN
read (n);
suma:=0;
FOR cant:=1 TO N DO
begin
read(numero);
suma:=suma+numero;
end;
write ('La suma de los ',N,' n£meros es ',suma);
end.
valor1. La variable de control toma automáticamentevalor2.Si la variable de control es entera, sevalor2 - valor1 +) veces.
Otra manera de usar ésta estructura permite que el incremento de la variable de control sea negativo. Eso se
logra utilizando -en lugar de TO- la palabra DownTO.
Como resultado, la expresión de la estructura quedaría de la siguiente manera:
FOR


La operación es similar a la anterior, excepto que la variable de control decrementa su valor desde


hasta llegar al
que
cierra un bucle y es de -1.
Si en el ejemplo anterior, modificamos la línea que contiene la sentencia For, el programa funcionaria de la
misma manera, salvo que la variable de control estaría tomando valores en el orden inverso al del caso anterior. Por
lo tanto, en vez de contar desde 1 hasta n, contaría desde n hasta 1, decrementando el valor de n en 1 cada vez que el
bucle se completa.
Debe entenderse que el
Finalmente, una vez que concluye el bucle, la variable de control toma un valor indefinido, que suele ser el
valor final del bucle + 1


PROGRAM SUMA_ITERATIVA_DESDE_DEC(INPUT,OUTPUT);
VAR n,cant:Integer;
VAR suma,numero:Real;
BEGIN
read (n);
suma:=0;
FOR cant:=n DOWNTO 1 DO
begin
read(numero);
suma:=suma+numero;
end;
write ('La suma de los ',N,' n£meros es ',suma);
end.variable de control := valor1 DOWNTO valor2 DO sentencia valor1 valor2. Si ambos valores son iguales, la sentencia se ejecutará sólo una vez; y si valor1 es menorvalor2 la sentencia no se ejecutará nunca. El decremento de la variable de control se hace cada vez que sevalor1 y valor2 se evalúan sólo una vez, antes del primer paso por el bucle.

De lo expuesto referente a estructuras que permitían controlar en lógicamente los algoritmos, se llega a la
codificación en Pascal de esas estructuras.
Las estructuras que fueron tratadas en particular, obtienen una codificación muy similar a lo visto, con lo cual,
no hay demasiada dificultad para obtener códigos en base a esos algoritmos con estructuras de control

No hay comentarios:

Publicar un comentario