ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
º
ɻ˻ɻɻ˻ɻÉ˻ɻɻËɻɻÉ
ɻ˻ɻɻËÉ»
º
º
̼̹ººº»Ì¹Ì¹ºÊºÌ¹º ºººººº
ººÌ¹Ì¹È»ºº
º
º Ê
ÊÈȼȼÊÈÊÊÊ ÊÊÊȼÊȼ¼È¼
ȹʼÊÊȼÊȼ
º
ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹
º É˻ɻ˻»ÉË É»
É» º
º
º ºÊºººººººº ºº
¹ º
PROGRAMACION ESTRUCTURADA º
º Ê Êȼʼȼȼȼ
ȼ º
º
ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹
º
º
º
EN ESTA LECCION APRENDERAS...
º
º
º
º ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ º
º ³
³ º
º ³ þ C¢mo llenar la
subrutina Adivinalo ............
3 ³ º
º ³ þ Cuando usar el
bloque de un bucle con su ³ º
º ³ contador despu‚s de la
prueba IF/THEN .........
3 ³ º
º ³ þ C¢mo llenar la
subrutina DiSiAdivinaste .......
5 ³ º
º ³ þ Cuando usar el
bloque de un bucle
³ º
º ³ en ramas
...................................... 6 ³ º
º ³ þ C¢mo llenar la
subrutina RepiteJuego ..........
7 ³ º
º ³ þ Cuando usar el
bloque de un bucle
³ º
º ³ sin contador
..................................
8 ³ º
º ³ þ C¢mo llenar la
subrutina Despidete ............
8 ³ º
º ³
³ º
º ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ º
º
º
ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹
º É»Ë»Ë É»É» ɻɻɻ
º
º
º ººÌ¹º Ì º
¹ººÌ¹ º
¨QUE BLOQUES USAR? - PARTE II º
º ȹʼȼȼȼ ȼȼȼ
º
º
ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
º É»Ë»Ë É»É» ɻɻɻ
º
º
º ººÌ¹º Ì º
¹ººÌ¹ º
º
º ȹʼȼȼȼ ȼȼȼ
º
º
ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
Como tu computadora corre a 33mhz, ejecuta la instrucci¢n
Pausa = Pausa + 1, 1200 veces en un segundo. Esto quiere decir,
que si quieres que tu computadora
pause por 5 segundos,
necesitas que lleve a cabo 1200 x 5, o sea, 6000
instrucciones,
al cabo de las cuales se termina la pausa.
Si ahora, ejecutas el programa, ver s que la
computadora
pausar por 5 segundos antes de desplegar el
mensaje, YA LO
PENSE!
LLENANDO LA SUBRUTIBA Adivinalo
-------------------------------
Una vez que el n£mero es pensado, hay diez
oportunidades
(turnos) para adivinarlo. ¨Qu‚ te sugiere eso? UNA REPETICI¢N.
¨Y qu‚ bloque incluye en su interior un conjunto de
instrucciones
que se repiten un n£mero fijo de veces? Pues el...
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ BLOQUE DE UN BUCLE CON SU CONTADOR ³
³ DESPU‚S DE LA
PRUEBA IF...THEN
³
ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ LET contador =
1
³
³ Bucle:
³
³ -------------
³
³ IF condici¢n salida
THEN
³
³ GOTO
TerminaBucle
³
³ END IF
³
³ -------------
³
³ LET contador = contador +
1 ³
³ GOTO Bucle
³
³ TerminaBucle:
³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
Ahora, esribamos el bloque mencionado dentro de la subrutina
esquem tica...
SUB Adivinalo
'------------
PRINT
"Adivinalo"
END SUB
...as¡...
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ QB308 ¨QUE BLOQUES USAR? - PARTE
II
3 ³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
SUB Adivinalo
'------------
LET contador
= 1
Bucle:
-------------
IF condici¢n
salida THEN
GOTO TerminaBucle
END IF
-------------
LET contador
= contador + 1
GOTO
Bucle
TerminaBucle:
END SUB
...y despu‚s de haberle a¤adido
las instrucciones
adicionales que creas pertinente y, adem s, despu‚s
de cambiar
el nombre de las etiquetas generales, obtendr s...
SUB Adivinalo
'------------
CLS : SCREEN 0: WIDTH 40
LET turno = 1
RepiteTurno:
CLS
LOCATE 1, 15:
PRINT "LLEVAS"; turno; "TURNOS DE 10"
PRINT : PRINT
INPUT "¨QUE
NUMERO PENSE"; tu.numero
IF
tu.numero = numero.pensado OR turno = 10 THEN
GOTO TerminaTurno
END IF
DiIntentalo
LET turno = turno
+ 1
GOTO RepiteTurno
TerminaTurno:
END SUB
Antes de que la ejecutes, examinemos esta subrutina con m s
detenimiento.
Una cosa importante que debes notar, es que esta
subrutina es el CUERPO DEL PROGRAMA. Es donde se ejecutan las
acciones principales del juego. La computadora presenta
el
n£mero pensado y t£ tratas que adivinarlo unas diez veces. Estas
acciones son precisamente la base del
juego. Por eso
esta
subrutina de Adivinalo (el n£mero), es la m s
importante del
programa.
Observa que hemos repetido el conjunto de instrucciones...
CLS : SCREEN 0: WIDTH 40
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ QB308 ¨QUE
BLOQUES USAR? - PARTE II
4 ³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
...que limpian la pantalla y la establecen para recibir s¢lo
textos ASCII y adem s que los caracteres del mismo sean el doble.
Esto, como viste antes, facilita la lectura de los mismos. Como
ya lo hab¡amos usado en la subrutina PiensaNumero no es
necesario
usarlo aqu¡. De
modo que es opcional.
Lo he puesto aqu¡ para asegurarme que los caracteres
sean
grandes. Hay veces,
que al a¤adir nuevas subrutinas para mejorar
el programa cambias el formato de pantalla, y sino te percatas
de
ello, cuando la ejecuci¢n llegue a esta subrutina el formato
ser
otro.
Hay dos maneras de que se termine el bucle RepiteTurno. Una
es cuando das con el n£mero pensado, y la
otra, cuando se te
acaban las oportunidades de adivinarlo (turnos). De modo que,
esto te sugiere dos formas de salir del bucle:
Cuando tu.numero = numero.pensado, y...
Cuando el turno = 10
Por eso utilic‚ la estructura...
IF
tu.numero = numero.pensado OR turno = 10 THEN
GOTO TerminaTurno
END IF
...para salir del bucle.
Es
obvio que si no adivinas en cualquiera de tus intentos, el
bucle pasar al pr¢ximo. Sin embargo, sino
haces que la
computadora despliegue un mensaje que
te avise que sigas
tratando, el di logo entre ella y t£ se
perder¡a. Adem s, si
est s avisado, tratar s, en el pr¢ximo
intento, de estar m s
alerta.
Por eso fue que instru¡ a la computadora que avise que
lo
intentes nuevamente, en caso de que falles en adivinar. Observa
que para ello, us‚ una nueva subrutina llamada DiIntentalo. Esto
evitar que esta subrutina se llene de una
gran cantidad de
instrucciones que dificulten su lectura.
Como esta nueva subrutina es
de car cter meramente
informativo, el bloque que
utilic‚ para introducir las
instrucciones fue el secuencial. He aqu¡ la misma:
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ QB308 ¨QUE
BLOQUES USAR? - PARTE II
5 ³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
SUB DiIntentalo
'--------------
PRINT : PRINT
PRINT "NO,
ESE NO ES EL NUMERO"
PRINT
PRINT
"INTENTALO OTRA VEZ"
PRINT : PRINT
PRINT
"PRESIONA ENTER PARA CONTINUAR."
LET e$ =
INPUT$(1)
END SUB
LLENANDO LA SUBRUTINA DiSiAdivinaste
------------------------------------
Si adivinas el n£mero pensado, o si se te
terminan los
turnos, saldr s del bucle RepiteTurno as¡ como de la
subrutina
Adivinalo.
La ejecuci¢n del programa continuar en la pr¢xima
subrutina llamada en la Rutina Principal, que es...
SUB DiSiAdivinaste
'-----------------
CLS
IF tu.numero =
numero.pensado THEN
GOTO
Adivinaste
END IF
NoAdivinaste:
DiQueNoAdivinaste
GOTO
TerminaMensaje
Adivinaste:
DiQueAdivinaste
TerminaMensaje:
END SUB
Como
puedes ver, en esta subrutina, el prop¢sito principal
es hacer que la computadora despliegue un mensaje en
pantalla en
el caso de que hayas adivinado el n£mero pensado y en el
caso de
que no, tambi‚n.
En otras palabras, si adivinas el n£mero, la
computadora desplegar un mensaje felicit ndote,
sino, tambi‚n
desplegar un mensaje dici‚ndote cu l fue el n£mero pensado.
Como puedes ver, la computadora tiene que hacer una decisi¢n
entre dos alternativas: si adivinaste o no
adivinaste. Es
decir, la computadora tiene que decidirse por cu l camino
habr
de ir. Cuando la
computadora tiene que tomar una decisi¢n u
otra entra en un...
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ QB308 ¨QUE BLOQUES USAR? - PARTE
II
6 ³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³
BLOQUE DE UN BUCLE ³
³ EN
RAMAS
³
ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ IF condicion THEN
GOTO Verdadero ³
³ Falso:
³
³ ------------
³
³ GOTO
TerminaCondicion
³
³ Verdadero:
³
³ ------------
³
³
TerminaCondicion:
³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
Una cosa que tienes que notar es,
que una vez que la
computadora ha elegido el camino a tomar, este est en
forma de
otra subrutina.
Esto es, que para que esta subrutina no se
atapone de instrucciones, decid¡ usar subrutinas
para llenarlas
luego. Otra ventaja
que tiene este modo de proceder, es que al
hacer esta subrutina me despreocupo de las instrucciones
conque
voy a llenar las subrutinas creadas aqu¡.
Para
saber si la subrutina DiSiAdivinaste funciona, lleno
las creadas con un mensaje en un enunciado
PRINT. En otras
palabras, al crear estas nuevas
subrutinas lo hago en forma
esquem tica, de la misma manera que
lo hice al crear las
subrutinas en la RUTINA PRINCIPAL...
SUB DiSiAdivinaste
'-----------------
CLS
IF tu.numero =
numero.pensado THEN ÚÄ> SUB
DiQueNoAdivinaste
GOTO
Adivinaste
³
'--------------------
END IF
³ PRINT
"No adivinaste"
NoAdivinaste:
³ END SUB
DiQueNoAdivinaste ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
GOTO
TerminaMensaje
Adivinaste:
Ú> SUB DiQueAdivinaste
DiQueAdivinaste ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ '------------------
TerminaMensaje:
PRINT "Adivinaste"
END SUB
END SUB
Una vez que ejecuto el programa, y el mismo trabaja
bien,
entonces lleno las
subrutinas DiQueNoAdivinaste
y
DiQueAdivinaste.
Como s‚ que s¢lo necesito sentencias PRINT para
llenarlas, s‚ tambi‚n que
debo introducirlas en bloques
secuenciales. He
aqu¡ como llen‚ ambas subrutinas...
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ QB308 ¨QUE
BLOQUES USAR? - PARTE II
7 ³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
SUB DiQueAdivinaste
'------------------
PRINT : PRINT : PRINT
PRINT
"CARAMBA, ADIVINASTE!"
PRINT
PRINT "EL
NUMERO ES"; numero.pensado
PRINT
PRINT "LO
ADIVINASTE EN"; turno; "TURNOS DE"; 10
PRINT
PRINT "O EN
UN"; INT((turno / 10) * 100); "% "; "DE LOS TURNOS"
END SUB
SUB DiQueNoAdivinaste
'--------------------
PRINT : PRINT : PRINT
PRINT
"FALLASTE EN ADIVINARLO!"
PRINT
PRINT "EL
NUMERO PENSADO ES"; numero.pensado
END SUB
LLENADO LA SUBRUTINA RepiteJuego
--------------------------------
Una vez que que la subrutina DiSiAdivinaste, as¡ como
las
llamadas por ella: DiQueNoAdivinaste
y DiQueAdivinaste, son
llenadas y probadas, la ejecuci¢n del
programa pasar a la
pr¢xima subrutina dentro de la RUTINA PRINCIPAL...
SUB RepiteJuego
'--------------
PRINT : PRINT :
PRINT
Decidete:
INPUT
"QUIERES JUGAR OTRA VEZ (S/N)"; decision$
IF
decision$ = "S" OR decision$ = "s" THEN RUN 'Juega otra
vez.
IF
decision$ = "N" OR decision$ = "n" THEN GOTO
TerminaDecision
GOTO Decidete
'otra vez.
TerminaDecision:
END SUB
Como puedes deducir de su lectura, esta subrutina te
pide
que te decidas si quieres jugar otra vez o deseas
terminar el
juego. A
primera vista, parece que con s¢lo usar un bucle en
ramas ser¡a suficiente para llenar la misma. Sin embargo, no te
debes olvidar de que siempre que la computadora
nos pide una
informaci¢n via la sentencia INPUT, debes asegurarte
de que la
misma es la correcta.
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ QB308 ¨QUE
BLOQUES USAR? - PARTE II
8 ³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
Si la informaci¢n introducida es incorrecta, el
programa
puede terminar s£bitamente con un mensaje de error. De modo que,
tienes que incluir una sentencia estructural IF/THEN para
probar
la informaci¢n entrada. En caso de que la misma no sea
la
correcta, tendr s que incluir, en su lugar, una sentencia GOTO
que env¡a la ejecuci¢n del programa nuevamente al
inicio de la
subrutina para introducir de nuevo la informaci¢n pedida.
Esta sentencia GOTO,
convertir la subrutina en un...
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³
BLOQUE DE UN BUCLE ³
³
SIN CONTADOR
³
ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ Bucle:
³
³ -------------
³
³ IF condici¢n salida
THEN
³
³ GOTO TerminaBucle
³
³ END IF
³
³ -------------
³
³ GOTO Bucle
³
³ TerminaBucle:
³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
...y como puedes ver, eso es lo que es precisamente
esta
subrutina RepiteJuego.
LLENADO LA SUBRUTINA Despidete
En caso de que decidas no continuar jugando, la
ejecuci¢n
del programa regresa a la RUTINA PRINCIPAL
para llamar a la
pr¢xima subrutina...
SUB Despidete
'------------
CLS
PRINT : PRINT :
PRINT : PRINT
PRINT " ESPERO QUE TE HAYAS
DIVERTIDO"
PRINT
PRINT " HASTA
LUEGO!"
END SUB
Como puedes notar, esta subrutina no es m s que un conjunto
de sentencias PRINT una detr s de las otras: bloque
secuencial.
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ QB308 ¨QUE BLOQUES
USAR? - PARTE II
9 ³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
DECLARE SUB DiSiAdivinaste ()
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
'
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
LET turno = 1
RepiteTurno:
CLS
LOCATE 1, 15:
PRINT "LLEVAS"; turno; "TURNOS DE 10"
PRINT : PRINT
INPUT "¨QUE
NUMERO PENSE"; tu.numero
IF
tu.numero = numero.pensado OR turno = 10 THEN
GOTO TerminaTurno
END IF
DiIntentalo
LET turno = turno
+ 1
GOTO RepiteTurno
TerminaTurno:
END SUB
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ QB308 ¨QUE
BLOQUES USAR? - PARTE II
10 ³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
SUB DaInstrucciones
'------------------
CLS
PRINT : PRINT :
PRINT
PRINT "
*** INSTRUCCIONES ***"
PRINT : PRINT
PRINT "
LA COMPUTADORA TE PEDIRA "
PRINT "
QUE ADVINES UN NUMERO DEL 1 AL 100."
PRINT
PRINT "
TIENES DIEZ OPORTUNIDADES"
PRINT "
PARA ADIVINARLO,"
PRINT "
AL CABO DE LAS CUALES"
PRINT "
TE DIRA SI LO ADIVINASTE O NO."
PRINT : PRINT
PRINT "
PRESIONA ENTER PARA CONTINUAR."
LET e$ = INPUT$(1)
END SUB
SUB Despidete
'------------
CLS
PRINT : PRINT :
PRINT : PRINT
PRINT " ESPERO QUE TE HAYAS
DIVERTIDO"
PRINT
PRINT "
HASTA LUEGO!"
END SUB
SUB DiIntentalo
'--------------
PRINT : PRINT
PRINT "NO,
ESE NO ES EL NUMERO"
PRINT
PRINT
"INTENTALO OTRA VEZ"
PRINT : PRINT
PRINT
"PRESIONA ENTER PARA CONTINUAR."
LET e$ = INPUT$(1)
END SUB
SUB DiQueAdivinaste
'------------------
PRINT : PRINT : PRINT
PRINT
"CARAMBA, ADIVINASTE!"
PRINT
PRINT "EL
NUMERO ES"; numero.pensado
PRINT
PRINT "LO
ADIVINASTE EN"; turno; "TURNOS DE"; 10
PRINT
PRINT "O EN
UN"; INT((turno / 10) * 100); "% "; "DE LOS TURNOS"
END SUB
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ QB308 ¨QUE
BLOQUES USAR? - PARTE II
11 ³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
SUB DiQueNoAdivinaste
'--------------------
PRINT : PRINT : PRINT
PRINT
"FALLASTE EN ADIVINARLO!"
PRINT
PRINT "EL
NUMERO PENSADO ES"; numero.pensado
END SUB
SUB DiSiAdivinaste
'-----------------
CLS
IF tu.numero =
numero.pensado THEN
GOTO
Adivinaste
END IF
NoAdivinaste:
DiQueNoAdivinaste
GOTO
TerminaMensaje
Adivinaste:
DiQueAdivinaste
TerminaMensaje:
END SUB
SUB HazPausa
'-----------
LET Pausa = 0
RepitePausa:
LET Pausa = Pausa
+ 1
IF Pausa = 6000
THEN GOTO TerminaPausa
GOTO RepitePausa
TerminaPausa:
END SUB
SUB PiensaNumero
'---------------
CLS : SCREEN 0:
WIDTH 40
RANDOMIZE TIMER
LET
numero.pensado = INT(RND * 100) + 1
PRINT : PRINT
PRINT "
ESTOY PENSANDO EN UN"
PRINT
PRINT "
NUMERO DEL 1 AL 100."
PRINT
PRINT " POR FAVOR, ESPERA UN
POCO..."
HazPausa
PRINT : PRINT
PRINT " YA LO
PENSE!"
PRINT : PRINT
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ QB308 ¨QUE
BLOQUES USAR? - PARTE II
12 ³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
PRINT " PRESIONA ENTER PARA
CONTINUAR."
LET e$ = INPUT$(1)
END SUB
SUB PresentaPrg
'--------------
CLS
PRINT : PRINT :
PRINT
PRINT "
QSoft PRESENTA"
PRINT "
EL JUEGO DE ADIVINA UN NUMERO"
PRINT
PRINT "
Un programa escrito en QBasic"
PRINT "
por Reinaldo Acevedo"
PRINT "
para las computadoras IBM y compatibles."
PRINT : PRINT
PRINT " DERECHOS
RESERVADOS 1995"
PRINT : PRINT :
PRINT
PRINT "
PRESIONA ENTER PARA CONTINUAR."
LET e$ = INPUT$(1)
END SUB
SUB RepiteJuego
'--------------
PRINT : PRINT :
PRINT
Decidete:
INPUT "QUIERES
JUGAR OTRA VEZ (S/N)"; decision$
IF decision$
= "S" OR decision$ = "s" THEN RUN 'Juega otra vez.
IF decision$
= "N" OR decision$ = "n" THEN GOTO TerminaDecision
GOTO Decidete 'otra
vez.
TerminaDecision:
END SUB