Site hosted by Angelfire.com: Build your free website today!

ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»      

º            ɻ˻ɻɻ˻ɻÉ˻ɻɻËɻɻɠ ɻ˻ɻɻËÉ»             º      

º            ̼̹ººº»Ì¹Ì¹ºÊºÌ¹º ºººººº  ººÌ¹Ì¹È»ºº              º      

º            Ê ÊÈȼȼÊÈÊÊÊ ÊÊÊȼÊȼ¼È¼  ȹʼÊÊȼÊȼ             º      

ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹      

º É˻ɻ˻»ÉË É»  É»  º                                          º      

º ºÊºººººººº ºº   ¹  º        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

 

Arriba     Contenido