Programación con Amstrad CPC
Por Nacho Cabanes, versión 0.32, de 29-May-2008

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:

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 freucuente 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 condición
 órdenes
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).