Print this page
Martes, 31 Agosto 2021 03:39

Sentencias condicionales, de repetición y de control en Pascal

Written by
Rate this item
(0 votes)

Hasta ahora, hemos basado nuestros programas en la estructura de control más simple: Secuencia. Esto significa que todos nuestros programas hasta ahora estaban compuestos por instrucciones secuenciales ejecutadas una tras otra. Basando dicha programación en una estructura de control tan simple, no sería posible desarrollar programas complejos. Con solo instrucciones secuenciales, no será posible habilitar la toma de decisiones en el código o la repetición de código.

Por lo tanto, ahora es el momento de aprender las ramas más importantes de la programación: las declaraciones if - toma de decisiones, bucles for - iteraciones y el bucle repetir hasta - iteraciones. Estas 2 estructuras generales de control de programación son comunes en casi todos los lenguajes de programación que existen (programación procedimental, dirigida por eventos / orientada a objetos). Asegúrese de que cuando haya terminado de leer esta lección, los haya practicado lo suficiente antes de continuar aprendiendo Pascal.

Las estructuras de toma de decisiones requieren que el programador especifique una o más condiciones para ser evaluadas o probadas por el programa, junto con una declaración o declaraciones que se ejecutarán si se determina que la condición es verdadera y, opcionalmente, otras declaraciones que se ejecutarán si la condición se determina que es falso.

A continuación se muestra la forma general de una estructura típica de toma de decisiones que se encuentra en la mayoría de los lenguajes de programación:

gambas 088

No SeñorDeclaración y descripción
1 IF - THEN

Una declaración if - then consiste en una expresión booleana seguida de una o más declaraciones.

GIF

2 IF - THEN - ELSE

Una instrucción if - then puede ir seguida de una instrucción else opcional , que se ejecuta cuando la expresión booleana es falsa.

El enunciado si-entonces es la forma más simple de enunciado de control, de uso frecuente en la toma de decisiones y en el cambio del flujo de control de la ejecución del programa.

Sintaxis

La sintaxis de la declaración if-then es -

if condition then S

Donde condición es una condición booleana o relacional y S es una declaración simple o compuesta. Ejemplo de una declaración si-entonces es -

if (a <= 20) then
   c:= c+1;

Si la condición de la expresión booleana se evalúa como verdadera, entonces se ejecutará el bloque de código dentro de la instrucción if. Si la expresión booleana se evalúa como falsa, se ejecutará el primer conjunto de código después del final de la instrucción if (después del final de cierre;).

Pascal asume cualquier valor distinto de cero y distinto de cero como verdadero, y si es cero o nulo, entonces se asume como un valor falso.

Diagrama de flujo

decision making

Ejemplo

Probemos con un ejemplo completo que ilustraría el concepto:

program ifChecking;

var
{ local variable declaration }
   a:integer;

begin
   a:= 10;
   (* check the boolean condition using if statement *)
   
   if( a < 20 ) then
      (* if condition is true then print the following *) 
      writeln('a is less than 20 ' );
   writeln('value of a is : ', a);
end.
3 IF anidadas

Puede usar una instrucción if o else if dentro de otra instrucción if o else if .

Una instrucción if-then puede ir seguida de una instrucción else opcional , que se ejecuta cuando la expresión booleana es falsa .

Sintaxis

La sintaxis de la declaración if-then-else es -

if condition then S1 else S2;

Donde, S1 y S2 son declaraciones diferentes. Tenga en cuenta que la declaración S1 no va seguida de un punto y coma . En las sentencias if-then-else, cuando la condición de prueba es verdadera, se ejecuta la sentencia S1 y se omite S2; cuando la condición de prueba es falsa, entonces se pasa por alto S1 y se ejecuta la instrucción S2.

Por ejemplo,

if color = red then
   writeln('You have chosen a red car')

else
   writeln('Please choose a color for your car');

Si la condición de la expresión booleana se evalúa como verdadera, entonces se ejecutará el bloque de código if-then; de lo contrario, se ejecutará el bloque de código else.

Pascal asume cualquier valor distinto de cero y distinto de cero como verdadero, y si es cero o nulo, entonces se asume como un valor falso.

Diagrama de flujo

if else statement

Ejemplo

Probemos con un ejemplo completo que ilustraría el concepto:

program ifelseChecking;
var
   { local variable definition }
   a : integer;

begin
   a := 100;
   (* check the boolean condition *)
   if( a < 20 ) then
      (* if condition is true then print the following *)
      writeln('a is less than 20' )
   
   else
      (* if condition is false then print the following *) 
      writeln('a is not less than 20' );
      writeln('value of a is : ', a);
end.
 

La declaración if-then-else if-then-else

Una instrucción if-then puede ir seguida de una instrucción else if-then-else opcional, que es muy útil para probar varias condiciones utilizando una instrucción if-then-else if única.

Al usar declaraciones if-then, else if-then, else, hay algunos puntos a tener en cuenta.

  • Una instrucción if-then puede tener cero o uno más y debe ir después de cualquier otro if.

  • Una declaración if-then puede tener de cero a muchos otros if y deben ir antes que el else.

  • Una vez que un else if tiene éxito, no se probará ninguno de los demás if o else.

  • No se da un punto y coma (;) antes de la última palabra clave else, pero todas las declaraciones pueden ser declaraciones compuestas.

Sintaxis

La sintaxis de una declaración if-then-else if-then-else en el lenguaje de programación Pascal es -

if(boolean_expression 1)then 
   S1 (* Executes when the boolean expression 1 is true *)

else if( boolean_expression 2) then 
   S2 (* Executes when the boolean expression 2 is true *)

else if( boolean_expression 3) then 
   S3 (* Executes when the boolean expression 3 is true *)

else 
   S4; ( * executes when the none of the above condition is true *)

Ejemplo

El siguiente ejemplo ilustra el concepto:

program ifelse_ifelseChecking;
var
   { local variable definition }
   a : integer;

begin
   a := 100;
   (* check the boolean condition *)
   if (a = 10)  then
      (* if condition is true then print the following *)
      writeln('Value of a is 10' )
   
   else if ( a = 20 ) then
      (* if else if condition is true *)
      writeln('Value of a is 20' )
   
   else if( a = 30 ) then 
      (* if else if condition is true  *)
      writeln('Value of a is 30' )
   
   else
      (* if none of the conditions is true *)
      writeln('None of the values is matching' );
      writeln('Exact value of a is: ', a );
end.
4 CASE

Una declaración de case permite probar la igualdad de una variable con una lista de valores.

Ha observado que las declaraciones if-then-else nos permiten implementar múltiples decisiones en un programa. Esto también se puede lograr utilizando la declaración de caso de una manera más simple.

Sintaxis

La sintaxis de la declaración del caso es:

case (expression) of
   L1 : S1;
   L2: S2;
   ...
   ...
   Ln: Sn;
end;

Donde, L1 , L2 ... son etiquetas de caso o valores de entrada, que pueden ser números enteros, caracteres, booleanos o elementos de datos enumerados. S1 , S2 , ... son declaraciones de Pascal, cada una de estas declaraciones puede tener una o más de una etiqueta de caso asociada. La expresión se denomina selector de casos o índice de casos . El índice de casos puede asumir valores que corresponden a las etiquetas de los casos.

El enunciado del caso siempre debe tener asociado un enunciado final .

Las siguientes reglas se aplican a una declaración de caso:

  • La expresión utilizada en una declaración de caso debe tener un tipo integral o enumerado o ser de un tipo de clase en el que la clase tiene una única función de conversión a un tipo integral o enumerado.

  • Puede tener cualquier número de declaraciones de casos dentro de un caso. A cada caso le sigue el valor con el que se va a comparar y dos puntos.

  • La etiqueta de caso para un caso debe ser del mismo tipo de datos que la expresión en la declaración de caso y debe ser una constante o un literal.

  • El compilador evaluará la expresión del caso. Si uno de los valores de la etiqueta del caso coincide con el valor de la expresión, se ejecuta la instrucción que sigue a esta etiqueta. Después de eso, el programa continúa después del final final.

  • Si ninguna de las etiquetas del caso coincide con el valor de la expresión, se ejecuta la lista de instrucciones después de la palabra clave else o else. Puede ser una lista de extractos vacía. Si no hay ninguna otra parte presente y ninguna constante de caso coincide con el valor de la expresión, el flujo del programa continúa después del final final.

  • Las declaraciones de casos pueden ser declaraciones compuestas (es decir, un bloque Begin ... End).

Diagrama de flujo

case statement

Ejemplo

El siguiente ejemplo ilustra el concepto:

program checkCase;
var
   grade: char;
begin
   grade := 'A';

   case (grade) of
      'A' : writeln('Excellent!' );
      'B', 'C': writeln('Well done' );
      'D' : writeln('You passed' );
      'F' : writeln('Better try again' );
   end;     
   
   writeln('Your grade is  ', grade );
end.
5 CASE - IF

Es similar a la declaración if-then-else . Aquí, un término else sigue al enunciado del case .

La instrucción case-else usa un término else después de las etiquetas case , al igual que una construcción if-then-else .

Sintaxis

La sintaxis de la instrucción case-else es:

case (expression) of
   L1 : S1;
   L2 : S2;
   ...
   ...
   Ln: Sn;
else
   Sm;
end;

Diagrama de flujo

else case statement

Ejemplo

El siguiente ejemplo ilustra el concepto

program checkCase;
var
   grade: char;

begin
   grade := 'F';
   case (grade) of
      'A' : writeln('Excellent!' );
      'B', 'C': writeln('Well done' );
      'D' : writeln('You passed' );

   else
      writeln('You really did not study right!' );
    end;     
   
   writeln('Your grade is  ', grade );
end.
6 CASE anidado

Puede utilizar una declaración de case dentro de otra declaración de case .

Es posible tener un enunciado de caso como parte de la secuencia de enunciado de un enunciado de caso externo . Incluso si las constantes de caso del caso interno y externo contienen valores comunes, no surgirán conflictos.

Sintaxis

La sintaxis de una declaración de caso anidada es la siguiente:

case (ch1) of
   'A': begin
      writeln('This A is part of outer case' );
         case(ch2) of
            'A': writeln('This A is part of inner case' );
            'B': (* case code *)
            ...
         end; {end of inner case}
      end; (* end of case 'A' of outer statement *)
   'B': (* case code *)
   'C': (* case code *)
   ...
end; {end of outer case}

Ejemplo

El siguiente programa ilustra el concepto.

program checknestedCase;
var
   a, b: integer;
begin
   a := 100;
   b := 200;
   
   case (a) of
      100: begin
         writeln('This  is part of outer statement' );
         case (b) of
            200: writeln('This  is part of inner statement' );
            end;
         end; 
      end;
   
   writeln('Exact value of a is : ', a );
   writeln('Exact value of b is : ', b );
end.

 

Bucles

Puede haber una situación en la que necesite ejecutar un bloque de código varias veces. En general, las sentencias se ejecutan secuencialmente: la primera sentencia de una función se ejecuta primero, seguida de la segunda, y así sucesivamente.

Los lenguajes de programación proporcionan varias estructuras de control que permiten rutas de ejecución más complicadas.

Una declaración de bucle nos permite ejecutar una declaración o grupo de declaraciones varias veces y la siguiente es la forma general de una declaración de bucle en la mayoría de los lenguajes de programación:

loop architecture

El lenguaje de programación Pascal proporciona los siguientes tipos de construcciones de bucle para manejar los requisitos de bucle. Haga clic en los siguientes enlaces para verificar sus detalles.

No SeñorTipo de bucle y descripción
1 while-do

Repite una declaración o un grupo de declaraciones mientras una condición determinada es verdadera. Prueba la condición antes de ejecutar el cuerpo del bucle.

Una instrucción de bucle while-do en Pascal permite cálculos repetitivos hasta que se satisfaga alguna condición de prueba. En otras palabras, ejecuta repetidamente una declaración de destino siempre que una condición dada sea verdadera.

Sintaxis

La sintaxis de un bucle while-do es:

while (condition) do S;

Donde, condición es una expresión booleana o relacional cuyo valor sería verdadero o falso y S es una declaración simple o grupo de declaraciones dentro del bloque BEGIN ... END.

Por ejemplo,

while number>0 do
begin
   sum := sum + number;
   number := number - 2;
end;

Cuando la condición se vuelve falsa, el control del programa pasa a la línea que sigue inmediatamente al bucle.

Diagrama de flujo

pascal while do loop

Aquí, el punto clave del bucle while es que es posible que el bucle nunca se ejecute. Cuando se prueba la condición y el resultado es falso, se omitirá el cuerpo del bucle y se ejecutará la primera instrucción después del bucle while.

Ejemplo

program whileLoop;
var
   a: integer;

begin
   a := 10;
   while  a < 20  do
   
   begin
      writeln('value of a: ', a);
      a := a + 1;
   end;
end.
2 for-do 

Ejecuta una secuencia de declaraciones varias veces y abrevia el código que administra la variable de bucle.

Un bucle for-do es una estructura de control de repetición que le permite escribir de manera eficiente un bucle que necesita ejecutarse un número específico de veces.

Sintaxis

La sintaxis para el bucle for-do en Pascal es la siguiente:

for < variable-name > := < initial_value > to [down to] < final_value > do 
   S;

Donde, el nombre de la variable especifica una variable de tipo ordinal, llamada variable de control o variable de índice; Los valores initial_value y final_value son valores que puede tomar la variable de control; y S es el cuerpo del ciclo for-do que podría ser una declaración simple o un grupo de declaraciones.

Por ejemplo,

for i:= 1 to 10 do writeln(i);

Aquí está el flujo de control en un ciclo de for-do:

  • El paso inicial se ejecuta primero y solo una vez. Este paso le permite declarar e inicializar cualquier variable de control de bucle.

  • A continuación, se evalúa la condición. Si es cierto, se ejecuta el cuerpo del bucle. Si es falso, el cuerpo del ciclo no se ejecuta y el flujo de control salta a la siguiente instrucción justo después del ciclo for-do.

  • Una vez que se ejecuta el cuerpo del ciclo for-do, el valor de la variable aumenta o disminuye.

  • La condición ahora se evalúa nuevamente. Si es cierto, el bucle se ejecuta y el proceso se repite (cuerpo del bucle, luego paso de incremento, y luego condición de nuevo). Una vez que la condición se vuelve falsa, el ciclo for-do termina.

Diagrama de flujo

pascal for do loop

Ejemplo

program forLoop;
var
   a: integer;

begin
   for a := 10  to 20 do
   
   begin
      writeln('value of a: ', a);
   end;
end.
3 repeat-until 

Como una instrucción while, excepto que prueba la condición al final del cuerpo del bucle.

A diferencia de los bucles for y while, que prueban la condición del bucle en la parte superior del bucle, el bucle repetir ... hasta que Pascal comprueba su condición en la parte inferior del bucle.

Un ciclo repeat ... until es similar a un ciclo while, excepto que se garantiza que un ciclo repeat ... until se ejecutará al menos una vez.

Sintaxis

repeat
   S1;
   S2;
   ...
   ...
   Sn;
until condition;

Por ejemplo,

repeat
   sum := sum + number;
   number := number - 2;
until number = 0;

Observe que la expresión condicional aparece al final del ciclo, por lo que las declaraciones en el ciclo se ejecutan una vez antes de que se pruebe la condición.

Si la condición es falsa, el flujo de control vuelve a subir para repetirse y las declaraciones en el ciclo se ejecutan nuevamente. Este proceso se repite hasta que se cumple la condición dada.

Diagrama de flujo

pascal repeat until loop

Ejemplo

program repeatUntilLoop;
var
   a: integer;

begin
   a := 10;
   (* repeat until loop execution *)
   repeat
      writeln('value of a: ', a);
      a := a + 1
   until a = 20;
end.
4 Bucles anidados

Puede usar uno o más bucles dentro de cualquier otro bucle while, for o repetir hasta.

Pascal permite usar un bucle dentro de otro bucle. La siguiente sección muestra algunos ejemplos para ilustrar el concepto.

La sintaxis para una declaración de bucle for-do anidada en Pascal es la siguiente:

for variable1:=initial_value1 to [downto] final_value1 do

begin
   for variable2:=initial_value2 to [downto] final_value2 do
   
   begin   
      statement(s);
   end;
end;   

La sintaxis para una declaración de bucle while-do anidada en Pascal es la siguiente:

while(condition1)do

begin
   while(condition2) do
   
   begin
      statement(s);
   end;
   statement(s);
end;

La sintaxis para una repetición anidada ... hasta que el bucle Pascal es la siguiente:

repeat
   statement(s);
   repeat
      statement(s);
   until(condition2);
until(condition1);

Una nota final sobre el anidamiento de bucles es que puede colocar cualquier tipo de bucle dentro de cualquier otro tipo de bucle. Por ejemplo, un bucle for puede estar dentro de un bucle while o viceversa.

Ejemplo

El siguiente programa usa un bucle for anidado para encontrar los números primos del 2 al 50:

program nestedPrime;
var
   i, j:integer;

begin
   for i := 2 to 50 do
   
   begin
      for j := 2 to i do
         if (i mod j)=0  then
            break; {* if factor found, not prime *}
      
      if(j = i) then
         writeln(i , ' is prime' );
   end;
end.

 

Declaraciones de control de bucle

Las sentencias de control de bucle cambian la ejecución de su secuencia normal. Cuando la ejecución abandona un ámbito, todos los objetos automáticos que se crearon en ese ámbito se destruyen.

Pascal admite las siguientes declaraciones de control. Haga clic en los siguientes enlaces para verificar sus detalles.

No SeñorDeclaración de control y descripción
1 break

Termina la instrucción de bucle o caso y transfiere la ejecución a la instrucción que sigue inmediatamente a la instrucción de bucle o caso.

La declaración break en Pascal tiene los siguientes dos usos:

  • Cuando la instrucción break se encuentra dentro de un bucle, el bucle se termina inmediatamente y el control del programa se reanuda en la siguiente instrucción que sigue al bucle.

  • Se puede utilizar para terminar un caso en el enunciado de caso (que se trata en el capítulo siguiente).

Si está utilizando bucles anidados (es decir, un bucle dentro de otro bucle), la instrucción break detendrá la ejecución del bucle más interno y comenzará a ejecutar la siguiente línea de código después del bloque.

Sintaxis

La sintaxis de una declaración break en Pascal es la siguiente:

break;

Diagrama de flujo

cpp break statement

Ejemplo

program exBreak;
var
   a: integer;

begin
   a := 10;
   (* while loop execution *)
   while  a < 20 do
   
   begin
      writeln('value of a: ', a);
      a:=a +1;
      
      if( a > 15) then
         (* terminate the loop using break statement *)
      break;
   end;
end.
2 continue

Hace que el bucle omita el resto de su cuerpo e inmediatamente vuelva a probar su condición antes de reiterar.

La instrucción continue en Pascal funciona de manera similar a la instrucción break . Sin embargo, en lugar de forzar la terminación, continuar obliga a que se lleve a cabo la siguiente iteración del bucle, omitiendo cualquier código intermedio.

Para el ciclo for-do , la instrucción continue hace que se ejecuten las porciones de prueba e incremento condicional del ciclo. Para los bucles while-do y repeat ... until , la instrucción continue hace que el control del programa pase a las pruebas condicionales.

Sintaxis

La sintaxis de una instrucción continue en Pascal es la siguiente:

continue;

Diagrama de flujo

cpp break statement

Ejemplo

program exContinue; 
var
   a: integer;

begin
   a := 10;
   (* repeat until loop execution *)
   repeat
      if( a = 15) then
      
      begin
         (* skip the iteration *)
         a := a + 1;
         continue;
      end;
      
      writeln('value of a: ', a);
      a := a+1;
   until ( a = 20 );
end.
3 goto

Transfiere el control a la declaración etiquetada. Aunque no se recomienda utilizar la instrucción goto en su programa.

Una instrucción goto en Pascal proporciona un salto incondicional de la instrucción goto a una instrucción etiquetada en la misma función.

NOTA - El uso de la instrucción goto se desaconseja en cualquier lenguaje de programación porque dificulta el seguimiento del flujo de control de un programa, lo que hace que el programa sea difícil de entender y difícil de modificar. Cualquier programa que use un goto se puede reescribir para que no necesite el goto.

Sintaxis

La sintaxis de una instrucción goto en Pascal es la siguiente:

goto label;
   ...
   ...
label: statement;

Aquí, la etiqueta debe ser una etiqueta de número entero sin signo, cuyo valor puede estar comprendido entre 1 y 9999.

Diagrama de flujo

cpp goto statement

Ejemplo

El siguiente programa ilustra el concepto.

program exGoto;
label 1; 
var
   a : integer;

begin
   a := 10;
   (* repeat until loop execution *)
   1: repeat
      if( a = 15) then
      
      begin
         (* skip the iteration *)
         a := a + 1;
         goto 1;
      end;
      
      writeln('value of a: ', a);
      a:= a +1;
   until a = 20;
end.

 

Read 67 times Last modified on Martes, 31 Agosto 2021 04:23
Super User

Latest from Super User

Related items