Universidad de Costa Rica
Escuela de Ciencias de la
Computación e Informática
Profesor Adolfo Di Mare
CI-1402
I Semestre 1998
[<=] [home] [<>] [\/] [=>]
CI-1402 Organización de Lenguajes de Programación

Tarea #2 [solución]

Programación de ciclos usando IF y WHILE

      En esta tarea usted implementará las diferentes variantes que los lenguajes de programación ofrecen para expresar ciclos. Al hacerlo, siga los siguientes pasos:
  1. Primero investigue en la literatura, por ejemplo en los libros de texto del curso [Pra­97], cuáles son los diferentes tipos de ciclos que existen (WHILE, REPEAT, FOR, DOWNTO, STEP, BREAK, etc.)
  2. Luego implemente cada uno de esos ciclos en su lenguaje preferido, pero usando únicamente las instrucciones IF y WHILE.
  3. Finalmente, implemente un programa, en dos lenguajes de programación de su predilección, para probar que cada una de las formas que usted ha programado produce efectivamente el resultado deseado. Recuerde entregar la documentación de su programa impresa, y no olvide incluirla también en su diskette.

      Sus programas de prueba no debe ser interactivo, y deben limitarse a emitir un mensaje de error cuando encuentran una falla. Recuerde que para cada caso de prueba usted debe definir tanto las Entradas como las Salidas esperadas [Mye­78].

      En sus programa usted codificará el ciclo y verificará que la versión que usted ha programado, usando únicamente las instrucciones IF y WHILE, produce exactamente el resultado deseado, que es el que usted debe haber definido previamente. Puede usar el siguiente código para su elaborar su trabajo.


PROGRAM T2;
TYPE
  TArray
    = ARRAY [-1..11] OF INTEGER;



FUNCTION Iguales(
  {+} VAR A,B : TArray;
  {+}     i,j : INTEGER
) : BOOLEAN;
{ RESULTADO
  Retrona TRUE si
  - i = j
  - A[] = B[] }
VAR
  k : INTEGER;
BEGIN
  IF i<>j THEN BEGIN
    Iguales := FALSE;
    EXIT;
  END

  FOR k := -1 TO 11 DO BEGIN
    IF A[k] <> B[k] THEN BEGIN
      Iguales := FALSE;
      EXIT;
     END;
  END;
  Iguales := TRUE;
END;

VAR
  A_while,
  A_repeat: TArray;
  i,j: INTEGER;

BEGIN { T2 }
  { inicializa los dos vectores }
  FOR i := -1 TO 11 DO BEGIN
    A_repeat[i] := i;
    A_while [i] := i;
  END;

  { ciclo REPEAT: Rango[1..10] }
  i := 0;
  REPEAT
    A_repeat[i] := 2 * A_repeat[i];
    INC(i);
  UNTIL i = 10;

  { ciclo WHILE-IF equivalente }
  j := 0;
  A_while[j] := 2 * A_while[j];
  WHILE NOT (j = 10) DO BEGIN
    A_while[j] := 2 * A_while[j];
    INC(j);
  END;

  IF NOT Iguales(A_repeat,A_while, i,j)
  THEN BEGIN
    WriteLn('Error: ...');
  END;
END.  { T2 }

Tiempo de entrega: 2 semanas
Modalidad: Grupos de 2 estudiantes

[Mye­78] Myers, Glenford: The Art of Software Testing, John Wiley & Sons, 1978.
[Pra­97] Pratt, Terrence W.: Lenguajes de Programación: Diseño e implementación, 3ra edición, Prentice-Hall Hispanoamericana, ISBN 970­17­0046­5, 1997.

[mailto:] Adolfo Di Mare <adolfo@di-mare.com>.
Copyright © 1998
Derechos de autor reservados © 1998
[home] <> [/\]