Subir arriba

miércoles, 15 de julio de 2015

Unidad 3

Unidad de Competencia III
Desarrolla sentencias Condicionales y Ciclos Repetitivos

Objetivos


Al terminar la unidad de competencia, el estudiante estará en capacidad:

1. Desarrollar la sentencia IF y Case, teniendo pendiente la correcta sintaxis de los códigos e implementándola en el cuerpo de un algoritmo.
2. Utilizar cada uno de los tipos de ciclos repetitivos en un algoritmo, tomando en cuenta la sintaxis correspondiente a cada uno de ellos.
3. Desarrollar algoritmos, comprobándolos en pascal


Sintaxis IF-Then-Else

Toma una expresión lógica y la evalúa, si el valor de verdad de la expresión lógica es verdadero entonces se ejecuta la instrucción después del THEN, en caso de que al momento de evaluar la expresión sea falso se ejecuta la instrucción después de ELSE.

SINTAXIS
IF <expresión lógica> THEN
<acción A>
ELSE
<acción B>;


EJEMPLO: Escriba un programa en PASCAL que le permita a un estudiante calcular la nota definitiva de tres notas, que tienen el mismo valor porcentual. El programa debe imprimir la nota definitiva y un mensaje adecuado que diga 'Gano la Materia', 'Perdió la materia' según que la nota sea mayor o igual que 3.0 o menor que 3.0.



PROGRAM Ejemplo;
VAR
nota1,
nota2,
nota3 :REAL ;
definitiva :REAL ;
BEGIN
WRITELN('Entre tres notas ');
READLN(nota1,nota2,nota3);
definitiva := (nota1+nota2+nota3)/3;
IF definitiva >= 3.0 THEN
WRITELN('Su nota =',definitiva:10:2,'Gano la materia')
ELSE
WRITELN('Su nota =',definitiva:10:2,'Perdió la materia');
END.

Otra versión del programa usando las instrucciones que hemos visto es:

PROGRAM Ejemplo;
CONST
gano ='Gano la materia' ;
perdió ='Perdió la materia' ;
VAR
nota1,nota2,
nota3 :REAL ;
definitiva :REAL ;
mensaje :STRING ;
BEGIN
WRITELN('Entre tres notas ');
READLN(nota1,nota2,nota3);
definitiva := (nota1+nota2+nota3)/3;
IF definitiva >= 3.0 THEN
mensaje:=gano
ELSE
mensaje := perdió ;
WRITELN('Su nota =',definitiva:10:2,mensaje:24)
END.

Sentencias Compuestas



Cuando sea necesario que después del THEN o el ELSE se ejecuten no solo una instrucción sino varias, es necesario escribir lo que llamamos una sentencia compuesta; que no es más que varias instrucciones simples encerradas entre BEGIN y END.

If Anidados

Tendremos situaciones lógicas en las cuales después de hacernos una pregunta se nos hace necesario hacer una nueva pregunta, en esos caso tenemos entonces que después del THEN y/o ELSE es necesario volver a tener una sentencia IF THEN ELSE decimos entonces que anidamos IF. 
EJEMPLO: Se requiere un programa que lea A y permita evaluar la función 
PROGRAM EJEMPLO;
VAR 
a, y :REAL;
BEGIN 
WRITE('Entre un número ');
READLN(a);
IF a<3 THEN
y := 5*A +SQR(A+1)
ELSE
IF (A>=3) AND (A<=9) THEN
y := A + 5 ‑(A + 2)/3
ELSE
y:= EXP(3*LN(A)) + 7*A;
WRITELN('y(',a:6:2,')=',y:10:2);
END.

Observe que el IF después del ELSE no se encierra entre BEGIN y END, pues IF THEN ELSE es una solo instrucción.
Observe como se construye una expresión lógica con los operadores AND, OR.

Sentencias Case

La sentencia case se utiliza para elegir entre diferentes alternativas. Una sentencia case se compone de varias sentencias simples. Cuando case se ejecuta, una (y solo una ) de las sentencias simples se selecciona y ejecuta.

EJEMPLO:   Escriba un programa que lea un número entero entre 0 y 6 si el número que se le entra es 0 imprime Domingo, si se entra 1 imprime Lunes, 2 imprime Martes, 3 imprime Miércoles, 4 imprime Jueves, 5 Viernes, 6 Sábado, si entra un número distinto imprime un mensaje de advertencia.

PROGRAM días;
VAR
dia :INTEGER;
BEGIN
WRITE('Entre el numero del Dia ');
READLN(dia);
CASE dia OF
0: WRITELN('Domingo');
1: WRITELN('Lunes');
2: WRITELN('Martes');
3: WRITELN('Miércoles');
4: WRITELN('Jueves');
5: WRITELN('Viernes');
6: WRITELN('Sábado');
ELSE
WRITELN('No clasificado');
END;{ Fin del Case }
END.


Definición de ciclos

Llamaremos ciclo repetitivo a un conjunto de instrucciones que se repiten un número finito de veces.
Para que un conjunto de instrucciones se repita es necesario que se tenga alguna condición que se satisfaga, diremos entonces que el ciclo se repite mientras se cumple una determinada condición, también existen ciclos que se repiten hasta cuando una condición deja de cumplirse, diremos que el ciclo se repita hasta que la condición fue verdadera o mientras la condición fue falsa.
Para cualquiera de los casos tenemos en PASCAL instrucciones que nos permiten simular esos procesos con un computador.

Instrucción While

Repite un conjunto de instrucciones mientras se cumple la condición.
WHILE <expresion lógica> DO 
BEGIN
Instrucciones a repetir
END 


La instrucción WHILE se comporta de la siguiente manera:
1. Si en el momento de llegar al WHILE y evaluar la expresión lógica esta es falsa entonces el computador no ejecuta las instrucciones a repetir.
2. Si la evaluación de la expresión lógica es verdadera en el momento de llegar al WHILE, se ejecutan las instrucciones que conforman el ciclo.
3. Una vez se ejecutan las instrucciones del ciclo se vuelve a ejecuta la evaluación de la condición y si es verdadera se vuelven a ejecutar la instrucciones que conforman el ciclo.
4. El proceso anterior se repite hasta que en algún momento de la la evaluación de la expresión lógica de FALSE.

PROGRAM EJEMPLO
VAR 
numero, n : INTEGER ;
BEGIN 
WRITE('Hasta que número escriba?')
READLN(N);
numero:=1; { Le doy valor 1 a número}
WHILE numero <= n DO 
BEGIN 
WRITELN(numero);
{ Incremento en 1 el número }
numero:=numero+1;
END;
END.

EJEMPLO: Escriba un programa que lea n, y calcule el factorial de n.
Recuerde que:
n!= 1*2*3*4*5*6*7*8*....*n‑1*n
PROGRAM FACTORIALES;
VAR 
n, factorial
factor :LONGINT ;
BEGIN 
WRITE('Escriba el número al que le debo calcular el factorial');
READLN(N);
factor := 1 ;
factorial:= 1 ;
WHILE factor<=n DO 
BEGIN 
factorial:=factorial*factor;
factor:=factor+1;
END;
WRITELN(n:5,'!=',factorial:7);
END.

En el programa anterior la variable numero va cambiando su valor en uno cada que el ciclo se ejecuta, logrando de esta manera generar todos los números de 1 a N.

Instrucción Repeat



La instrucción REPEAT permite definir procesos repetitivos, que se ejecutan mientras la evaluación de la expresión lógica en el UNTIL de falso.
El proceso se deja de repetir cuando la evaluación de la expresión da verdadero.
Sintaxis:
REPEAT 

Instrucciones a repetir Instrucciones a repetir
UNTIL < expresion lógica > ;

La instrucción Repeat realiza las instrucciones a repetir por lo menos una vez, y repite el proceso solo si la expresión lógica es falsa.
En el momento en que la condición se hace verdadera el computador continua la ejecución en la instrucción siguiente al UNTIL.

EJEMPLO: Escribir un programa en pascal que escriba 3 veces en pantalla el mensaje "COLOMBIA ES GRANDE".
PROGRAM EJEMPLO;
USES CRT;
CONST
MENSAJE ='COLOMBIA ES GRANDE';
VAR
contador :INTEGER;
BEGIN
contador := 0; { inicia la variable en cero }
REPEAT
WRITELN ('Colombia es grande');
Contador := Contador + 1;
UNTIL Contador = 3 ;
END

La variable de nombre contador cuenta las veces que se imprime el mensaje 'COLOMBIA ES GRANDE'.

EJEMPLO: Escribir un programa que lea un número N el cual le debe indicar al computador hasta que número queremos que nos imprima en pantalla empezando en 1 y terminando en N
PROGRAM EJEMPLO;
VAR
n, contador :INTEGER;
BEGIN
WRITE('Hasta que número escribo?');
READLN (n);
contador := 1;
REPEAT
WRITELN(contador);
Contador := Contador + 1;
UNTIL Contador = N+1 ;
END.


Instrucción For




Permite repetir un conjunto de instrucciones mientras el valor de la variable de control es menor o igual que un valor Vf.
FOR < variable de control> := Vi TO Vf DO
BEGIN
Instrucciones a repetir
END;

La variable de control es una variable que debe estar declarada de tipo CHAR, INTEGER, BOOLEAN, ENUMERADO.
El valor de la variable de control se incrementa en uno cada que se llega al END.
Si se quiere hacer un ciclo en que el valor de la variable de control decremente se reemplaza la palabra TO por DOWNTO, solo en ese caso el valor de Vi >= Vf y el valor de la variable se decrementa en uno cada que se ejecuta el ciclo.
Si la instrucción a repetir es una sola no se necesita BEGIN y END.

EJEMPLO: Use la instrucción FOR para calcular el factorial de un número n en cualquier momento.
PROGRAM FACTORIAL;
VAR
Facto,N : LONGINT ;
Factor : REAL ;
BEGIN
WRITE('Entre el N');
READLN(N);
Facto := 1
FOR Factor := 1 TO N DO
Facto:= Facto*Factor;
WRITELN(Facto:10:0);
END.






No hay comentarios.:

Publicar un comentario