2 - Curso Pascal II
[ keogh ]
Bueno aqui seguimos con la segunda parte del curso de pascal, espero que les este gustando.
CONTROL DE FLUJO DEL PROGRAMA
Sentencia IF...THEN...ELSE
Esta expresión es utilizada para ejecutar una sentencia en el caso que una condición establecida sea verdadera, o de lo ocntrario se podra ejecutar una sentencia distinta. Su sintaxis es:
IF <condicion> THEN
instrucciones...
ELSE
instrucciones
Si la condicion se cumple se realizarán las instrcciones despues del THEN, si la condición no se cumple realizara las instrucciones despues del ELSE. Si despues del THEN o ELSE se escribe más de una instruccion se debera comenzar con un BEGIN y terminar con un END;.
IF <condicion> THEN
BEGIN
instruccion1....
instruccion2....
instruccionN....
END
ELSE
BEGIN
instruccion1....
instruccion2....
instruccionN....
END;
Tambien se pueden utilizar los operadores logicos como son AND y OR. Ejemplos:
1. Capturar una edad si es mayor de 18 decir es mayor de edad, si no decir que es menor de edad.
PROGRAM mayor_de_edad;
USES crt;
VAR
edad:Integer;
BEGIN
CLRSCR;
writeln('Dame la edad: ');
Readln(edad);
IF edad>18 THEN
Writeln('Eres mayor de edad')
ELSE
Writeln('Eres menor de edad');
readln; {este readln sirve para que la pantalla se quede esperando un enter}
END.
2. Leer dos numeros, si el primero es mayor que 20 hacer una suma y resta de los dos e imprimir resultado, si no hacer una multiplicacion de los dos e imprimir resultado.
PROGRAM dos_numeros;
USES crt;
VAR
num1,num2,sum,res,mul:integer
BEGIN
CLRSCR;
Writeln('Dame el primer numero: ');
readln(num1);
Writeln('Dame el segundo numero: ');
readln(num2);
IF num1>20 THEN
BEGIN
sum:=n1+n2;
res:=n1-n2;
writeln('La suma es : ',sum);
writeln('La resta es: ',res)
END;
ELSE
BEGIN
mul:=n1*n2;
writeln('La multipicacion es: ',mul);
end;
readln;
END.
3. Leer un numero y si esta comprendido entre 70 a 100 escribir escribir "Buen Puntaje".
PROGRAM puntaje;
USES crt;
VAR
num:Integer;
BEGIN
CLRSCR;
writeln('Dame el numero : ');
readln(num);
if (num>70)AND(num<=100) THEN
Writeln('Buen Puntaje');
readln
END.
Como pudieron ver puse 3 ejemplos un de IF sencillo otro con multiples instrucciones y otro con operador logico. Tambien los IF se pueden anidar, o sea un if dentro de otro.
IF <condicion> THEN
BEGIN
instruccion...
instruccion...
IF <Condicion> THEN
instruccion;
END;
ELSE
BEGIN
IF <condicion> THEN
instruccion;
ELSE
instruccion;
END;
Ciclos FOR
El ciclo FOR repite una sentencia un determinado número de veces que se indica al momento de llamar el ciclo.
Lo que hace el FOR es que incrementa una variable en uno desde un valor inicial hasta un valor final ejecutando en cada incremento la sentencia que se quiere repetir. Su sintaxis es:
FOR identificador:=inicio TO fin DO
instrucción;
Donde identificador es la variable que se incrementará, inicio es el primer valor que tendrá dicha variable y fin es el valor hasta el cual se incrementará la misma.
Si despues de que se inicia el ciclo hay mas de una instruccion se procedera a poner un begin y terminar con un end; ej:
FOR identificador:=inicio TO fin DO
Begin
instruccion1;
Instruccion2;
............
............
instruccionN
end;
Ejemplos:
1. Un programa en Pascal que escriba en pantalla los numeros del 1 al 50.
PROGRAM ciclo_for1;
USES crt;
VAR
num:Integer;
BEGIN
clrscr;
FOR num:=1 to 50 DO
writeln(num);
readln;
END.
2. Un programa en Pascal que lea 5 calificaciones e imprima el promedio.
PROGRAM ciclo_for2;
USES crt;
VAR
cal,sum,prom,j:Integer;
BEGIN
clrscr;
sum:=0
FOR j:=1 to 5 DO
begin
writeln('Dame la calificacion : ');
readln(cal);
sum:=sum+1
end;
prom:=sum/5;
writeln('El promedio es: ',prom);
readln;
END.
3. Escribir la tabla de multiplicar que pida el usuario.
PROGRAM ciclo_for3;
USES crt;
VAR
num,j,mul:integer;
BEGIN
clrscr;
writeln('Dime la tabla de multiplicar que quieres: ');
readln(num);
mul:=0
FOR j:=1 to 10 DO
begin
mul:=num*j;
writeln(num,'X',j,'=',mul);
end;
readln;
END.
Es posible hacer que un ciclo cuente hacia atrás, es decir, que la variable en vez de incrementaese se decrementa. Para esto cambiamos la palabra TO por DOWNTO, y colocamos el valor mayor a la izquierda y el menor a la derecha.
Ejemplo:
4. Imprima los numeros del 50 al 1.
PROGRAM ciclo_for4;
USES crt;
VAR
j:integer;
BEGIN
clrscr;
FOR j:=50 DOWNTO 1 DO
writeln(j);
readln;
END.
CICLO WHILE
Los ciclos while ofrecen la ventaja de que la ejecucion se realiza mientras se cumpla una condición, por lo tanto es posible controlar el número de repeticiones una vez iniciado el ciclo. Su sintaxis es:
WHILE <condicion> DO
instrucción;
Donde condición es la condicion que se evaluara si es verdadera entra al ciclo, si no se sale o no entra. Si se utiliza mas de una instruccion se pondran las sentencias Begin y End como en el ciclo FOR:
WHILE <condicion> DO
begin
instruccion1;
Instruccion2;
............
............
instruccionN
end;
Ejemplos:
1. Programa que escriba los numeros del 1 al 50
PROGRAM ciclo_while1;
USES crt;
VAR
num:Integer;
BEGIN
clrscr;
num:=1
while num<=50 DO
Begin
writenln(num);
num:=num+1;
end;
readln;
END.
En el ejemplo anterior podemos ver que las sentencias se ejecutaran mientras num sea menor o igual a 50 y ademas de las instrucciones incrementamos la variable.
Ciclo Repeat-Until
Este tipo de ciclos es muy parecido a los ciclo While, la diferencia entre ambos es que en WHILE la condición se evalúa al principio del ciclo, en cambio en REPEAT-UNTIL se evelua al final, lo que significa que en un ciclo REPEAT-UNTIL la sentencia se ejecutará por lo menos una vez, cosa que no puede ocurrir en el ciclo WHILE. Ejemplo:
1. Imprimir los numeros del 1 al 50
PROGRAM ciclo_repeat_until1;
USES crt;
VAR
num:Integer;
BEGIN
clrscr;
num:=1;
REPEAT
writeln(num);
num:=num+1;
UNTIL num=50;
readln;
END.
Selecciones CASE
Esta forma de control se utiliza cuando se va a evaluar una expresión que puede contener varios datos diferentes y en cada dato deberá realizar una acción especial. Por ejemplo, si se crea un menú con diferentes opciones se realizará un determinado proceso para cada acción, aunque la selección por parte del usuario se haga desde un mismo lugar.
Sintaxis:
CASE identificador OF
<valor1>: instruccion;
<valor2>: instruccion;
<valorN>: instruccion;
ELSE
instruccion;
Donde valor1, valor2, valorN es el valor con el cual se ejecutaran las instrucciones.
Ejemplo:
1. Preguntar un numero del rango 1 al 5 y decir cual es, si no esta en el rago decirlo.
PROGRAM case1;
USES crt;
VAR
num:Integer;
BEGIN
clrscr;
writeln('Dame un numero del rango 1 al 5: ');
readln(num);
CASE num OF
1: Writeln('El numero es 1');
2: Writeln('El numero es 2');
3: Writeln('El numero es 3');
4: Writeln('El numero es 4');
5: Writeln('El numero es 5');
ELSE
writeln('El numero no estaba en el rango indicado');
readln;
END.
Esto es todo por esta entrega en la siguiente nos meteremos con funciones y procedimientos asi como las funciones mas comunes de pascal. Hasta la proxima.
s4lu2
by keogh