Tema 8 - Estructuras de control más avanzadas
8.1 Lo que ya conocemos:
Sabemos manejar algunas órdenes relacionadas con la estructuración de un programa:
- IF..THEN, para comprobar condiciones.
- ELSE, para indicar qué hacer cuando no se cumple una condición.
- FOR..NEXT, para cambiar de forma repetitiva el valor de una variable, y también para repetir una serie de órdenes.
- STEP, para no necesitar avanzar siempre de 1 en 1 en un FOR.
- GOSUB, para saltar a otro punto de un programa (y volver).
- ON..GOSUB, para saltar según sea el valor de una variable.
Pero hay alguna más. Por ejemplo WHILE, que no muchas versiones de Basic incorporan... pero sí el Locomotive Basic de los CPC.
8.2 WHILE...WEND
La orden FOR permite repetir un trozo de programa varias veces, según sea el valor de una variable. Pero también es frecuente tener que repetir una serie de operaciones mientras se de una condición (o varias). Hacer esto desde un "FOR" es trabajoso, usar un "IF...GOTO" es algo más sencillo pero poco legible, mientras que con la orden WHILE es muy sencillo. Se usa así:
WHILE condicion
lista_de_ordenes
WEND
Por ejemplo, podemos pedir a un usuario su contraseña de acceso al sistema repetidas veces, hasta que la teclee correctamente, haciendo:
10 ' Ejemplo de While
20 clave$ = "falsa"
30 correcta$ = "quetal"
40 WHILE clave$ <> correcta$
50 PRINT "Introduce tu clave: ";
60 INPUT clave$
70 WEND
80 PRINT "Acceso permitido"
8.3 TIME
Con TIME podemos saber el tiempo que hace que se encendió el ordenador, en unidades de 1/300 de segundo. Eso además nos permite hacer una primera forma sencilla de controlar tiempos y de hacer pausas (ya veremos otras más eficientes).
Por ejemplo, podemos hacer un programa que cuente segundos en pantalla hasta que se pulse una tecla así:
10 ' Ejemplo de While y Time
20 MODE 1
30 PRINT "Pulse una tecla"
40 instanteInicial = TIME
50 segundos = 0
60 WHILE INKEY$ = ""
70 LOCATE 2,4
80 PRINT "Segundos: "; segundos
90 IF (TIME - instanteInicial) > 300 THEN segundos = segundos + 1: instanteInicial = TIME
100 WEND
8.4 Ejercicio propuesto
Hacer un programa que pregunte al usuario la hora actual, y después muestre un menú en pantalla, mientras se visualiza un reloj en la esquina superior derecha de la pantalla (el reloj deberá actualizarse continuamente).