DEL CLAVO AL ORDENADOR CON LOGO
Resumen de los aspectos más significativos relacionados con Logo, tomados del curso "Del clavo al ordenador" impartido de forma interactiva en el servidor del Plan de Nuevas Tecnologías de la Información y la Comunicación (http://www.pntic.mec.es). Este curso está coordinado por Carmen Candioti.

Parte V. SENTENCIAS CONDICIONALES

1. METODOLOGÍA

Retomamos la definición expresada en anteriores entregas del curso: Programar es analizar, dividir un problema en pequeños módulos, engarzados entre sí por medio de unas sentencias condicionales.

Nuestro alumnado, ha ido realizando programas que se ejecutaban de forma lineal, en el orden de la escritura occidental; los programas se engarzaban entre sí llamándose unos a otros. En este apartado presentaremos la posibilidad que nos ofrece LOGO de crear bifurcaciones, distintos caminos que serán recorridos opcionalmente en función de sentencias condicionales.

No insistiremos en la explicación de la sintaxis de la primitiva SI pues ya fue expuesta en el Anexo I. Simplemente recordaremos el funcionamiento interno de sus dos opciones.

Se puede expresar SI Condición [Acción].

Esta sintaxis presenta dos caminos, realizar la acción o no realizarla; Expresado de otro modo, tomar un desvío o no tomarlo. En ambos casos, seguirá con la ejecución de la línea principal del programa, retomará el camino principal si se ha desviado.

La otra expresión será SI Condición [Acción1] [Acción2]

En esta ocasión, obligará a tomar un desvío u otro en función de cumplirse o no la condición expuesta, y en ambos casos, volverá al programa principal una vez ejecutadas una u otra acción.

Para presentar estas sentencias con un ejemplo, nos apoyaremos en el gráfico que hicimos al principio de este capítulo en el que estructurábamos el programa ACABAR_JORNADA.

Insistiremos en la diferencia que existe entre los condicionales:

SI soy responsable o SI tengo clase de inglés; puesto que en ambos casos o se toma el desvío o se sigue el camino principal.

Con el condicional SI tengo tareas, que nos llva a un desvío o a otro para acabar en ambos casos en el programa principal.

En estos primeros pasos podemos presentar sencillos programas para que el alumnado realice los esquemas y comente cuál será el posible flujo en función de las posibles respuestas dadas, antes de escribirlo en el ordenador.

Otro ejemplo que podemos diseñar para mostrar estas diferencias sería el dado por el programa MACHISMO. En un primer momento, usaremos sólo el condicional SI LC=»o, pero al comprobar que las letras mayúsculas provocan un efecto «femenino», aprovecharemos para introducir la sintaxis de la expresión lógica O (MACHISMOO), que permitirá la entrada de la O mayúscula como válida.

2. LOS FILTROS

Una de las utilidades prácticas de las sentencias condicionales es la de la elaboración de filtros que impidan las interrupciones que pueden producirse en el flujo de los programas por la introducción por parte del usuario de datos no idóneos. La motivación que tendremos para presentarlos a nuestros alumnos y alumnas deberá ser, la necesidad de proteger nuestros programas de los errores de los posibles usuarios de los mismos.

Partiremos de programas ya diseñados como CIRGLO Y CIRCEN o los que hemos creado para presentar algunas primitivas como PULSA. Empezaremos ejecutándolos e introduciendo en ellos datos no idóneos:

En CIRGLO a la pregunta «Escribe la cifra del avance», escribiremos la letra O.

En CIRCEN para escribir la longitud del radio escribiremos DIEZ y pulsaremos intro.

Al observar la ruptura del programa y el mensaje de error que nos comunica, plantearemos a nuestro alumnado la necesidad de contar con un filtro que, discriminando la entrada dada por el usuario, compruebe si es o no idónea y en este caso, desvíe el flujo del programa hacia el inicio para evitar su interrupción.

Presentaremos la primitiva NUMERO? obj como condición a introducir en una sentencia y que al devolver Cierto o Falso nos permitirá retroceder o seguir según le indiquemos a continuación entre corchetes.

PARA FILNUM :MOD
SI NO NUMERO? :MOD [ES [Este dato no es un número, escríbelo correctamente] CIRGLO]
FIN

Ya solo necesitamos modificar el programa CIRGLO colocando este filtro después de la creación de la variable «MOD

PARA CIRGLO
.....
.....
HAZ «MOD LC
FILNUM :MOD
CIRVAR :MOD
....
FIN

El mismo filtro nos servirá para proteger a CIRCEN con sólo modificar el nombre del programa al que deberá volver si se comete un error en la entrada. De todos modos, aunque como solución del problema planteado es suficiente, se aprecia que el retorno, en este caso, adolece del defecto de volver al inicio y no al lugar donde se cometió el fallo, con lo que lo primero que ejecutará el programa en su retorno será un BT que impedirá la lectura. Ni que decir tiene que un ESPERA antes de CIRGLO parcheará el problema, pero debemos aclarar entonces que si queremos mejorar el programa, es preferible olvidar la estructura anterior dándole una estructura modular nueva.

3. LOS MENÚS

Otra aplicación de las sentencias condicionales la tenemos en la posibilidad que ofrece al programador para presentar menús con varias opciones para que el usuario pueda optar entre ellas.

Intentaremos presentarlas por medio de una aplicación inmediata a los programas creados en este mismo tema. Propondremos que sirva como pantalla de presentación y menú de elección algunos de los programas desarrollados en este tema: CIRGLOBAL, CIRCENTRAL, y CIR. Posteriormente, introduciremos modificaciones para que se puedan introducir también,aquellos programas que se confeccionaron con variables locales y propusimos fueran llamados por otros que después de crear una variable global, llamaban a estos para ejecutarlos. CUAINS, EXAIN, CUACIR, EXACIR, etc. El programa base (CIRCUMLOQUIO), lo daremos confeccionado para que lo completen y mejoren pudiendo además, servirnos de engarce con los recursivos.

- Completar el menú incluyendo otros programas diseñados anteriormente con variables globales y mensajes en la pantalla que dirigen su ejecución.