agosto 13, 2012

Siempre hay más de una forma de hacerlo


Éste el lema de los programadores de PERL y propone que es relativamente sencillo hacer la misma tarea pero de muy diferentes maneras. Estas diferentes maneras, aunque hagan lo mismo, son muy distintas tanto en su ejecución, codificación y entendimiento.

En este ejemplo veremos con pseudocódigo como desplegar las tablas de multiplicar, del uno al diez, utilizando los tres principales tipos de ciclo: PARA, MIENTRAS y HASTA (for, while, until). Adicionalmente, se analiza solución sin ningún tipo de ciclo predefinido.

PARA: Siendo las tablas de multiplicar un secuencia de números predefinida, la solución más obvia y sencilla es con el ciclo “FOR”:
1.-    PARA X1 desde 1 a 10
2.-        IMPRIME “La Tabla de “ X1
3.-        PARA X2 desde 1 A 10
4.-            IMPRIME X1 “ * “ X2 “ = ” X1 * X2
5.-             SIGUIENTE X2(línea 3)
6.-        SIGUIENTE X1(línea 1)
7.-    FINALIZA


MIENTRAS: La segunda opción es utilizar el ciclo “WHILE”, donde se evalúa la condición al inicio del ciclo:
1.-    A X1 ponle 1
2.-    A X2 ponle 1
3.-    MIENTRAS X1 sea menor a 11 ENTONCES
4.-        IMPRIME “La Tabla de “ X1
5.-        MIENTRAS X2 sea menor a 11 entonces
6.-            IMPRIME X1 “ * “ X2 “ = ” X1 * X2
7.-            A X2 súmale 1
8.-            SIGUIENTE (línea 5)
9.-        A X1 súmale 1
10.-        SIGUIENTE (línea 3)
11.-    FINALIZA


HASTA: No es de extrañar que utilizar el ciclo UNTIL ocupe las mismas líneas que el WHILE, siendo que la única diferencia radica en que se evalúa la condición al final del ciclo:
1.-    A X1 ponle 1
2.-    A X2 ponle 1
3.-    HAZ
4.-        IMPRIME “La Tabla de “ X1
5.-        HAZ
6.-            IMPRIME X1 “ * “ X2 “ = ” X1 * X2
7.-            A X2 súmale 1
8.-            HASTA que X2 sea igual a 11 (línea 5)
9.-        A X1 súmale 1
10.-        HASTA que X1 sea igual a 11 (línea 3)
11.-    FINALIZA
 


SI: ¿Qué pasaría si cierto lenguaje no tuviera los ciclos anteriores? ¿Sería imposible hacer el ejercicio de las tablas de multiplicar? Tal como indica el lema mencionado al principio, siempre hay más de una forma de hacerlo. En el peor de los casos que un lenguaje no tuviera ciclos predefinidos, es posible simularlos con complejas sentencias condicionales y prohibitivos saltos:
1.-    A X1 ponle 1
2.-    A X2 ponle 1
4.-    IMPRIME “La Tabla de “ X1
6.-    IMPRIME X1 “ * “ X2 “ = ” X1 * X2
7.-    A X2 súmale 1
8.-    SI X2 es igual a 11 ENTONCES
9.-        A X1 súmale 1
10.-        SI X1 es igual a 11 ENTONCES
11.-            VE al paso 19
12.-            FIN SI
13.-        A X2 ponle 1
14.-        VE al paso  4
15.-        SINO ENTONCES
17.-        SALTA al paso 6
18.-        FIN SI
19.-    FINALIZA



No hay comentarios:

Publicar un comentario