ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
º
ɻ˻ɻɻ˻ɻÉ˻ɻɻËɻɻÉ
ɻ˻ɻɻËÉ»
º
º
̼̹ººº»Ì¹Ì¹ºÊºÌ¹º ºººººº
ººÌ¹Ì¹È»ºº
º
º Ê
ÊÈȼȼÊÈÊÊÊ ÊÊÊȼÊȼ¼È¼
ȹʼÊÊȼÊȼ
º
ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹
º É˻ɻ˻»ÉË É»
É» º
º
º ºÊºººººººº ºº
¹ º
PROGRAMACION ESTRUCTURADA º
º Ê Êȼʼȼȼȼ
ȼ º
º
ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹
º
º
º
EN ESTA LECCION APRENDERAS...
º
º
º
º ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ º
º ³
³ º
º ³ þ Las distintas clases
de estructuras
³ º
º ³ de control
.................................... 2 ³ º
º ³ þ Estructuras
desicionales ......................
2 ³ º
º ³ þ La estructura
IF/THEN .........................
2 ³ º
º ³ þ La sintaxis de la
estructura IF/THEN ..........
3 ³ º
º ³ þ La estructura
IF/THEN/ELSE ....................
3 ³ º
º ³ þ La sintaxis de la
estructura IF/THEN ..........
3 ³ º
º ³ þ La estructura
IF/THEN/ELSE extendida ..........
3 ³ º
º ³ þ La sintaxis de la
estructura IF/THEN/ELSE ³ º
º ³ extendida
..................................... 4 ³ º
º ³ þ La estructura
SELECT-CASE .....................
4 ³ º
º ³ þ La sintaxis de la
estructura SELECT-CASE ......
4 ³ º
º ³ þ Las estructuras de
repetici¢n .................
5 ³ º
º ³ þ El Bucle DO-LOOP
..............................
5 ³ º
º ³ þ La sintaxis del
Bucle DO-LOOP .................
5 ³ º
º ³ þ El Bucle
DO-UNTIL-LOOP ........................ 5 ³ º
º ³ þ La sintaxis del
Bucle DO-UNTIL-LOOP ...........
6 ³ º
º ³ þ El Bucle
DO-LOOP-LOOP ......................... 6 ³ º
º ³ þ La sintaxis del
Bucle DO-LOOP-UNTIL ...........
6 ³ º
º ³ þ El Bucle
DO-WHILE-LOOP ........................ 6 ³ º
º ³ þ La sintaxis del
Bucle DO-WHILE-LOOP ...........
6 ³ º
º ³ þ El Bucle
DO-LOOP-WHILE ........................ 7 ³ º
º ³ þ La sintaxis del
Bucle DO-LOOP-WHILE ...........
7 ³ º
º ³
³ º
º ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ º
º
º
ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹
º É»Ë»Ë É»É»
É»ËÉ» º
º
º ººÌ¹º Ì º ¹ººº º ESTRUCTURAS DE CONTROL EN QBASIC º
º ȹʼȼȼȼ
ȼÊȼ º
º
ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
º É»Ë»Ë É»É»
É»ËÉ» º
º
º ººÌ¹º Ì º ¹ººº º ESTRUCTURAS DE CONTROL EN QBASIC º
º ȹʼȼȼȼ
ȼÊȼ º
º
ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
CLASES DE ESTRUCTURAS DE CONTROL
--------------------------------
En la lecci¢n 306, cuando tratamos el tema de los bloques de
construcci¢n, es decir, las
unidades estructurales de la
programaci¢n estructurada, vimos c¢mo el
programa ADIVINA UN
N£MERO estaba formado precisamente por
estas unidades.
Su
diagrama de flujo nos daba la apariencia de que
dicho programa
estaba formado de una serie de bloques, uno
detr s del otro,
caus ndonos la impresi¢n de que el
programa estaba escrito
secuencialmente.
Recuerda c¢mo fue que usamos dicho programa para descubrir
las siguientes estructuras de control:
þ Bloque de secuencia
(21-9)
þ Bloque de un bucle
en ramas (21-8)
þ Bloque de un bucle
sin contador (21-7)
þ Bloque de un bucle
con su contador despu‚s de la prueba
IF...THEN (21-6)
þ Bloque de un bucle
con su contador antes de la prueba
IF...THEN (21-7)
Pues bien, el Qbasic tiene dichas estructuras de una forma
m s definida y f ciles de usar. Las podemos
dividir en:
Estructuras decisionales (en ramas) y estructuras de
repetici¢n
(en bucles).
ESTRUCTURAS DECISIONALES
------------------------
Por medio de estas estructuras la computadora puede examinar
una situaci¢n y luego tomar una o varias decisiones seg£n
sea el
caso. Entre las estructuras decisionales tenemos: la
estructuras
IF/THEN, IF/THEN/ELSE, y SELECT-CASE.
LA ESTRUCTURA IF/THEN
---------------------
Esta estructura se usa cuando la computadora tiene que tomar
una decisi¢n donde se le presente una sola
alternativa. Su
sintaxis es...
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ QB310
ESTRUCTURAS DE CONTROL EN QBASIC 3
³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
IF respuesta = n£mero.pensado THEN PRINT "ADIVINASTE!"
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÙ ³
ÚÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄ¿
³ IF condici¢n THEN haz esto ³
³
---
³
ÚÄÅ IF condici¢n THEN ³
ÚÄÄÅÄÅÄ haz esto ³
ÚÄÄÅÄÄÅÄÅÄEND IF
³
³ ³ ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
³ ³ ³
³ ³ ÀIF respuesta =
n£mero.pensado THEN
³ ÀÄÄÄÄÄ PRINT
"ADIVINASTE!"
ÀÄÄÄÄÄ END IF
Aqu¡ la estructura IF/THEN examina la condici¢n presentada
(respueta=n£mero.pensado) Si la misma es
cierta, entonces la
sentencia (PRINT), despu‚s de la palabra THEN, es
ejecutada.
LA ESTRUCTURA IF/THEN/ELSE
--------------------------
Esta estructura se usa cuando la computadora tiene que tomar
una decisi¢n u otra.
En otras palabras, si rechaza la primera
alternativa, la segunda autom ticamente es tomada. Su sintaxis
es...
SUB
DiSiAdivinaste
'-----------------
CLS
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ÚÄÄ> IF tu.numero = numero.pensado
THEN
³ IF condici¢n THEN ÅÄÙÚÄ> DiQueAdivinaste
³ haz esto ÄÄÄÄÄÄÄÅÄÄÁÄ> EXIT SUB
³ ELSE ÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄ> ELSE
³ haz esto otro ÄÄÅÄÄÄÄ>
DiQueNoAdivinaste
³ END IF ÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄ> END IF
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ END SUB
LA ESTRUCTURA IF/THEN/ELSE EXTENDIDA
-------------------------------------
Para hacer que la estructura IF/THEN/ELSE pueda
ofrecer
m£ltiples alternativas hay que insertar
la cl usula ELSEIF
despu‚s de la primera cl usula THEN. Su sintaxis es...
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ QB310
ESTRUCTURAS DE CONTROL EN QBASIC 4
³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
SUB EscogeOperacion
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ '------------------
³ IF condici¢n1 THEN ÄÄÄÄÄÅÄÄ> IF
OP$="+" THEN
³ sigue instrucciones1 ÅÄÄ> LET resultado = n1 + n2
³ ELSEIF condici¢n2
THEN ÅÄÄ> ELSEIF
OP$="-" THEN
³ sigue instrucciones2 ÅÄÄ> LET resultado = n1 - n2
³ ELSEIF condici¢n3
THEN ÅÄÄ> ELSEIF
OP$="*" THEN
³ sigue instrucciones3 ÅÄÄ> LET resultado = n1 * n2
³ ELSEIF condici¢n4
THEN ÅÄÄ> ELSEIF
OP$="/" THEN
³ sigue instrucciones4 ÅÄÄ> LET resultado = n1 / n2
³ ELSE ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄ> ELSE
³ haz esto ÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄ> EXIT SUB
³ END IF ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄ> END IF
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ END SUB
LA ESTRUCTURA SELECT-CASE
-------------------------
La estructura IF/THEN/ELSE extendida se asemeja bastante a
la estructura SELECT-CASE en el
caso en que las condiciones
probadas comparan la misma expresi¢n pero con diferentes
valores.
La sintais simple para esta estructura es...
SUB EscogeOperacion
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ '------------------
³ SELECT CASE
expresion ÄÅÄÄÄÄ> SELECT CASE operacion$
³ CASE expresion1 ÄÄÄÄÄÅÄÄÄÄ> CASE "+"
³ sigue instruccion1ÄÅÄÄÄÄ> LET resultado = n1 +
n2
³ CASE expresion2 ÄÄÄÄÄÅÄÄÄÄ> CASE "-"
³ sigue instruccion2ÄÅÄÄÄÄ> LET resultado = n1 -
n2
³ CASE expresion3 ÄÄÄÄÄÅÄÄÄÄ> CASE "*"
³ sigue instruccion3ÄÅÄÄÄÄ> LET resultado = n1 *
n2
³ CASE expresion4 ÄÄÄÄÄÅÄÄÄÄ> CASE "/"
³ sigue instruccion4ÄÅÄÄÄÄ> LET resultado = n1 / n2
³ CASE ELSE ÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄ> CASE ELSE
³ haz esto ÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄ> EXIT SUB
³ END SELECT ÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄ> END SELECT
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ END SUB
La expresi¢n comparada puede ser una expresi¢n en Basic, una
variable, o una funci¢n.
Como habr s notado, las sintaxis para estas
estructuras
decisionales est n acompa¤adas con un ejemplo para
que puedas
entenderlas bien.
A medida que avances en este curso ver s m s
ejemplos de sus usos conjuntamente con
los nuevos ejemplos de
programas que estudiaremos luego.
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ QB310
ESTRUCTURAS DE CONTROL EN QBASIC 5
³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
ESTRUCTURAS DE REPETICI¢N
-------------------------
Las estructuras de repetici¢n llamadas tambi‚n bucles est n
hechas para repetir una o m s sentencias. Ahora veremos las
distintas formas y qu‚ significan.
EL BUCLE DO-LOOP
----------------
Este bucle se repite a medida que el contador llega a
su
valor m ximo indicado en la cl usula condicional IF/THEN EXIT
DO.
Su sintaxis es:
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ DO
³
ÚÄÄÄÄÄÄ´ Haz esto
³
³
³ IF condici¢n
salida THEN EXIT DO ³
³
³ LOOP
³
³
ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
Ejemplo: ³ DO
³
³ ³ Haz esto
³
³
³ IF condici¢n
salida THEN ÃÄÄÄÄÄ¿
³
³ EXIT
DO
³ ³
³
³ END IF
³ Ejemplo:
³
³ LOOP ³ ³
\³/ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ \³/
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ LET pausa = 0
³ ³ LET pausa = 0 ³
³ DO
³ ³ DO
³
³ LET pausa = pausa + 1 ³ ³ LET pausa = pausa + 1 ³
³ IF pausa = 6000 THEN EXIT DO ³ ³ IF pausa = 6000 THEN ³
³ LOOP
³ ³ EXIT DO ³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ ³ END IF
³
³ LOOP
³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
EL BUCLE DO-UNTIL-LOOP
----------------------
Este bucle puede usarse con una condici¢n de salida optativa
EXIT DO. En otras
palabras, puede tener dos salidas: la dada por
la cl usula DO UNTIL y la brindada por la cl usula EXIT
DO. Su
sint xis es:
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ QB310
ESTRUCTURAS DE CONTROL EN QBASIC 6
³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ let p = 0
ÚÄÄÅ DO UNTIL condici¢n
salida ÅÄ DO UNTIL p = 10
³ ³ [EXIT DO] ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄ IF C$="OK" THEN EXIT
DO
³ÚÄÅ Haz esto ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄ LET p = p + 1
ÚÄÅÅÄÅ LOOP ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄ LOOP
³ ³³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
³ ³³
³ ÀÅ DO UNTIL pausa =
6000
³ ÀÄ LET pausa = pausa + 1
ÀÄÄÄ LOOP
EL BUCLE DO-LOOP-UNTIL
----------------------
Este bucle es semejante al anterior con la £nica diferencia
de que examina la condici¢n de salida al final del
bucle. Esto
asegura que el bucle se ejecute por lo
menos una vez.
Su
sintaxis es:
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ let p = 0
ÚÄÄÄÄÅ DO ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄ DO
³ÚÄÄÄÅÄ Haz esto ÄÄÄÄÄÄÄÄÄÄÅÄ LET p = p + 1
³³ ³ [EXIT DO] ÄÄÄÄÄÄÄÄÄÅÄ IF C$="OK" THEN EXIT
DO
³³ÚÄÄÅ LOOP UNTIL condici¢n ÅÄ LOOP UNTIL p =
10
³³³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
³³³
³³³
ÀÅÅÄ DO
ÀÅÄ LET pausa = pausa + 1
ÀÄ LOOP UNTIL pausa =
6000
LOS BUCLES DO-WHILE-LOOP y DO-LOOP-WHILE
----------------------------------------
Siempre que queramos que una o varias
instrucciones se
repitan mientras una condici¢n no sea satisfecha podemos usar
las
estructuras de repetici¢n (bucles) cuya sint xis son:
EL BUCLE DO-WHILE-LOOP
----------------------
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ let p = 0
ÚÄÄÅ DO WHILE condici¢n
salida ÅÄ DO WHILE p < 11
³ ³ [EXIT DO] ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄ IF C$="OK" THEN EXIT
DO
³ÚÄÅ Haz esto ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄ LET p = p + 1
ÚÄÅÅÄÅ LOOP ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄ LOOP
³ ³³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
³ ³³
³ ÀÅ DO WHILE pausa <
6000
³ ÀÄ LET pausa = pausa + 1
ÀÄÄÄ LOOP
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ QB310
ESTRUCTURAS DE CONTROL EN QBASIC 7
³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
EL BUCLE DO-LOOP-WHILE
----------------------
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ let p=0
ÚÄÄÄÄÅ DO ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄ DO
³ÚÄÄÄÅÄ Haz esto ÄÄÄÄÄÄÄÄÄÄÅÄ LET p = p + 1
³³ ³ [EXIT DO] ÄÄÄÄÄÄÄÄÄÅÄ IF C$="OK" THEN EXIT
DO
³³ÚÄÄÅ LOOP WHILE condici¢n ÅÄ LOOP WHILE p <
11
³³³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
³³³
³³³
ÀÅÅÄ DO
ÀÅÄ LET pausa = pausa + 1
ÀÄ LOOP WHILE pausa
< 6000
Este bucle DO WHILE es equivalente al bucle WHILE-WEND...
Ejemplo:
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ WHILE condici¢n
³ ³ WHILE Pausa <
6000 ³
³ LET Pausa = Pausa + 1 ³ÄÄÄ>³ LET Pausa = Pausa + 1 ³
³ WEND
³ ³ WEND
³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
...que aparece en BASICA y GWBASIC y que tambi‚n QBASIC lo
tiene por razones de compatibilidad. Lo cierto es que este bucle
ya no se acostumbra a usar.
A continuaci¢n ver s el mismo bucle DO-WHILE,
con dos
condiciones de salida: la dada por la condici¢n indicada por
una
expresi¢n Basic y la dada
por la estructura condicional
IF/THEN/EXIT DO.
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ QB310
ESTRUCTURAS DE CONTROL EN QBASIC 8
³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
ÚÄÄÄÄÄÄÅ DO WHILE condici¢n1 ³
³ÚÄÄÄÄÄÅÄ haz
esto ³
³³ ÚÄÅÄÄ IF condici¢n2 THEN ³
³³ÚÄÄ´ ³ EXIT DO ³
³³³ ÀÄÅÄÄ END IF
³
³³³ ÚÄÄÅÄÄ haz esto ³
³³³ ³ ³ LOOP
³
³³³ ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
³³³ ³
³³³ ³ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
ÀÅÅÄÅÄÄÄÄ>³ DO WHILE turno <
11
³
ÃÅÄÅÄÄÄÄ>³ LET turno = turno + 1
³
³³ ³ ³ CLS
³
³³ ³ ³ COLOR 10, 0: LOCATE 1, 15: PRINT
"LLEVAS"; ³
³³ ³ ³ COLOR 13, 0: PRINT turno;
³
³³ ³ ³ COLOR 10, 0: PRINT "TURNOS DE
";
³
³³ ³ ³ COLOR 13, 0: PRINT "10"
³
³³ ³ ³ PRINT : PRINT
³
³³ ³ ³ COLOR 12, 0
³
³³ ³ ³ LINE INPUT "¨QUE
NUMERO PENSE "; numero$ ³
ÀÅÄÅÄÄÄÄ>³ LET tu.numero = VAL(numero$)
³
³ ³ ÚÄÄÅ> IF tu.numero =
numero.pensado OR turno = 10 THEN ³
ÀÄÅÄÄ´ ³ EXIT DO
³
³ ÀÄÄÅ> END IF
³
ÀÄÄÄÄÄÅ> DaOrejita
³
³ LOOP
³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
Tal vez pienses que es bastante dif¡cil
retener en la
memoria todas estas estructuras de control. El prop¢sito de
haberlas mencionado en esta ocasi¢n es que te
familiarices con
ellas, NO QUE TE LAS APRENDAS DE MEMORIA. La mejor forma de
aprenderlas en us ndolas.
Por eso, a medida que vayamos creando
nuevos programas, las iremos utilizando. De esta forma, te las
aprender s sin darte cuenta de ello.
A continuaci¢n ver s el listado del programa
ADIVINA UN
N£MERO.
Al leerlo, notar s
que hemos hecho cambios
significativos, sobre todo, en las estructuras de
control. Lee
el programa, pero s¢lo poni‚ndole atenci¢n a dichas
estructuras.
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ QB310
ESTRUCTURAS DE CONTROL EN QBASIC 9
³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
LISTADO DEL JUEGO ADIVINA UN NUMERO
-----------------------------------
CON CAMBIOS EN LAS ESTRUCTURAS DE CONTROL
-----------------------------------------
DECLARE SUB TocaMusica ()
DECLARE SUB Ctr40txt (row!, txt$)
DECLARE SUB Ctr80txt (row!, txt$)
DECLARE SUB DiSiAdivinaste ()
DECLARE SUB DaOrejita ()
DECLARE SUB DiIntentalo ()
DECLARE SUB DiQueAdivinaste ()
DECLARE SUB DiQueNoAdivinaste ()
DECLARE SUB HazPausa ()
DECLARE SUB Despidete ()
DECLARE SUB RepiteJuego ()
DECLARE SUB Adivinalo ()
DECLARE SUB PiensaNumero ()
DECLARE SUB DaInstrucciones ()
DECLARE SUB PresentaPrg ()
'Variables compartidas.
DIM SHARED turno
DIM SHARED
numero.pensado
DIM SHARED
tu.numero
DIM SHARED numero$
REM Juego de Adivina un N£mero
REM --------------------------
CLS : SCREEN 0: WIDTH 80
PresentaPrg
DaInstrucciones
PiensaNumero
Adivinalo
DiSiAdivinaste
RepiteJuego
Despidete
END
SUB Adivinalo
'------------
CLS : SCREEN 0:
WIDTH 40
DO WHILE turno <
11
LET turno = turno
+ 1
CLS
COLOR 10, 0: LOCATE
1, 15: PRINT "LLEVAS";
COLOR 13, 0: PRINT
turno;
COLOR 10, 0: PRINT
"TURNOS DE ";
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ QB310
ESTRUCTURAS DE CONTROL EN QBASIC 10 ³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
COLOR 13, 0: PRINT
"10"
PRINT : PRINT
COLOR 12, 0: LINE
INPUT "¨QUE NUMERO PENSE "; numero$
LET tu.numero =
VAL(numero$)
IF tu.numero =
numero.pensado OR turno = 10 THEN
EXIT
DO
END IF
DaOrejita
LOOP
END SUB
'Esta subrutina centraliza el texto cuando
'la pantalla tiene un ancho de 40 chrs.
'
SUB Ctr40txt (row, txt$)
'-----------------------
LOCATE row, INT(41
- LEN(txt$)) / 2
PRINT txt$;
END SUB
'Esta subrutina centraliza el texto cuando
'la pantalla tiene un ancho de 80 chrs.
'
SUB Ctr80txt (row, txt$)
'-----------------------
LOCATE row, INT(81
- LEN(txt$)) / 2
PRINT txt$;
END SUB
SUB DaInstrucciones
'------------------
CLS
COLOR 12, 0
Ctr80txt 4,
"*** INSTRUCCIONES ***"
COLOR 10, 0
Ctr80txt 7,
"LA COMPUTADORA TE PEDIRA "
Ctr80txt 9,
"QUE ADVINES UN NUMERO DEL 1 AL 100."
Ctr80txt 11,
"TIENES DIEZ OPORTUNIDADES"
Ctr80txt 13,
"PARA ADIVINARLO,"
Ctr80txt 15,
"AL CABO DE LAS CUALES"
Ctr80txt 17,
"TE DIRA SI LO ADIVINASTE O NO."
COLOR 12, 0
Ctr80txt 20,
"PRESIONA ENTER PARA CONTINUAR."
LET e$ = INPUT$(1)
END SUB
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ QB310
ESTRUCTURAS DE CONTROL EN QBASIC 11 ³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
SUB DaOrejita
'------------
PRINT
IF tu.numero <
numero.pensado THEN
'Di que numero es
mayor.
COLOR
13, 0: PRINT "NO, EL NUMERO ES MAYOR QUE";
COLOR
12, 0: PRINT tu.numero
ELSE
'Di que numero es menor.
COLOR
13, 0: PRINT "NO, EL NUMERO ES MENOR QUE";
COLOR
12, 0: PRINT tu.numero
END IF
PRINT : COLOR 27,
0: PRINT "INTENTALO OTRA VEZ"
PRINT : PRINT :
PRINT : PRINT : PRINT
COLOR 10, 0: PRINT
"PRESIONA ENTER PARA CONTINUAR."
LET e$ = INPUT$(1)
END SUB
SUB Despidete
'------------
CLS
COLOR 10, 0:
Ctr40txt 5, "ESPERO QUE TE HAYAS DIVERTIDO"
COLOR 12, 0:
Ctr40txt 7, "HASTA LUEGO!"
END SUB
SUB DiQueAdivinaste
'------------------
COLOR 12, 0
LOCATE 4, 1: PRINT
"CARAMBA, ADIVINASTE!"
COLOR 13, 0
LOCATE 7, 3: PRINT
"EL NUMERO ES"; numero.pensado
LOCATE 9, 3: PRINT
"LO ADIVINASTE EN"; turno; "TURNOS DE"; 10
LOCATE 11, 3:
PRINT "O EN UN"; INT((turno / 10) * 100);
PRINT "%
"; "DE LOS TURNOS"
END SUB
SUB DiQueNoAdivinaste
'--------------------
COLOR 11, 0
LOCATE 4, 1: PRINT
"LO SIENTO, NO LO ADIVINASTE."
COLOR 15, 0
LOCATE 6, 1: PRINT
"EL NUMERO PENSADO ES ";
COLOR 12, 0
PRINT
numero.pensado
END SUB
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ QB310
ESTRUCTURAS DE CONTROL EN QBASIC 12 ³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
SUB DiSiAdivinaste
'-----------------
CLS
IF tu.numero =
numero.pensado THEN
DiQueAdivinaste
EXIT SUB
ELSE
DiQueNoAdivinaste
END IF
END SUB
SUB HazPausa
'-----------
DO
LET pausa = pausa
+ 1
IF pausa = 6000
THEN EXIT DO
LOOP
'DO UNTIL pausa = 6000
' LET pausa = pausa
+ 1
'LOOP
'DO
' LET pausa = pausa
+ 1
' LOOP UNTIL pausa
= 6000
'DO WHILE pausa < 6000
' LET pausa = pausa
+ 1
'LOOP
'DO
' LET pausa = pausa
+ 1
' LOOP WHILE pausa
< 6000
'WHILE Pausa < 6000
' LET Pausa = Pausa
+ 1
'WEND
END SUB
SUB PiensaNumero
'---------------
CLS : SCREEN 0:
WIDTH 40
RANDOMIZE TIMER
LET numero.pensado
= INT(RND * 100) + 1
COLOR 11, 0
Ctr40txt 3,
"ESTOY PENSANDO EN UN"
Ctr40txt 5,
"NUMERO DEL 1 AL 100."
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ QB310
ESTRUCTURAS DE CONTROL EN QBASIC 13 ³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
COLOR 13, 0
Ctr40txt 7,
"POR FAVOR, ESPERA UN POCO..."
HazPausa
COLOR 10, 0
Ctr40txt 10,
"YA LO PENSE!"
COLOR 11, 0
Ctr40txt 13,
"PRESIONA ENTER PARA CONTINUAR."
LET e$ = INPUT$(1)
END SUB
SUB PresentaPrg
'--------------
CLS
COLOR 12, 0
Ctr80txt 4,
"QSoft PRESENTA"
COLOR 11, 0
Ctr80txt 6,
"EL JUEGO DE ADIVINA UN NUMERO"
COLOR 2, 0
Ctr80txt 8,
"Un programa escrito en QBasic"
Ctr80txt 9, "por
Reinaldo Acevedo"
Ctr80txt 10,
"para las computadoras IBM y compatibles."
COLOR 12, 0
Ctr80txt 12,
"DERECHOS RESERVADOS 1995"
COLOR 3, 0
Ctr80txt 17,
"PRESIONA ENTER PARA CONTINUAR."
TocaMusica
END SUB
SUB RepiteJuego
'--------------
COLOR 10, 0
LOCATE 14, 1: PRINT
STRING$(40, " ")
LOCATE 14, 1: LINE
INPUT "QUIERES JUGAR OTRA VEZ (S/N)"; decision$
IF decision$ =
"S" OR decision$ = "s" THEN
RUN 'Juego
otra vez.
ELSE
EXIT SUB
END IF
END SUB
SUB TocaMusica
'-------------
RANDOMIZE TIMER
DO
SOUND RND *
1000 + 37, 2
K$ = INKEY$
LOOP UNTIL K$
<> ""
END SUB