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

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

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

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

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

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

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

º ºÊºººººººº ºº   ¹  º        PROGRAMACION ESTRUCTURADA         º      

º Ê Êȼʼȼȼȼ  ȼ  º                                          º      

ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹      

º                                                               º

º                 EN ESTA LECCION APRENDERAS...                 º      

º                                                               º      

º  ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿  º      

º  ³                                                         ³  º

º  ³  þ  ¨Cu les son las unidades estructurales              ³  º

º  ³     de un programa? ..............................   2  ³  º

º  ³  þ  ¨Qu‚ es un diagrama de flujo? ................   3  ³  º

º  ³  þ  ¨Qu‚ es bucle? ...............................   5  ³  º

º  ³  þ  Lo que es un bloque de un bucle                     ³  º

º  ³     con su contador despu‚s de la prueba                ³  º

º  ³     IF/THEN ......................................   7  ³  º

º  ³  þ  Lo que es un bloque de un bucle                     ³  º

º  ³     con su contador antes de la prueba                  ³  º

º  ³     IF/THEN ......................................   7  ³  º

º  ³  þ  Lo que es un bloque de un bucle                     ³  º

º  ³     sin contador .................................   8  ³  º

º  ³  þ  Lo que es un bloque de un bucle                     ³  º

º  ³     en ramas .....................................   8  ³  º

º  ³  þ  Lo que es un bloque de secuencia .............   9  ³  º

º  ³  þ  La definici¢n completa de                        9  ³  º

º  ³     PROGRAMACION ESTRUCTURADA ....................  10  ³  º

º  ³  þ  Los bucles traducidos al ingl‚s                  9  ³  º

º  ³     con sus correspondientes diagramas                  ³  º

º  ³     de flujo .....................................  11  ³  º

º  ³                                                         ³  º

º  ³                                                         ³  º

º  ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ  º

º                                                               º

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

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

º ººÌ¹º Ì º    ¹ººÌ» º         BLOQUES DE CONSTRUCCION          º      

º ȹʼȼȼȼ  ȼȼȼ º                                          º      

ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ         


 

ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»      

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

º ººÌ¹º Ì º    ¹ººÌ» º         BLOQUES DE CONSTRUCCION          º      

º ȹʼȼȼȼ  ȼȼȼ º                                          º      

ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ         

 

 

 

              UNIDADES ESTRUCTURALES DE UN PROGRAMA

              -------------------------------------

                

     En  la lecci¢n QB000  sobre programaci¢n DE ARRIBA  A  ABAJO

(Top Down Programming)  hab¡amos indicado que dicha  programaci¢n

no era suficiente para escribir programas bien estructurados, que

necesit bamos  algo  m s.    Este  es precisamente  el  tema  que

discutiremos a continuaci¢n.

    

     Para  descubrir  ese "algo" necesario para  la  programaci¢n

estructurada,  consideraremos  el programa que estudiamos  en  la

lecci¢n  301:   el  juego titulado ADIVINA UN  N£MERO. 

          

     Vuelve  a leer el programa cuyo listado aparece al final  de

esta  lecci¢n.  L‚elo  cuidadosamente otra  vez.  Im ginate  c¢mo

funciona y lo que hace cada una de sus subrutinas.  Luego  de que

lo  hayas estudiado,  dig¡talo en  tu  computadora  y  ejec£talo. 

Estudia cuidadosamente c¢mo funciona realmente.

    

     En la pr¢xima p gina ver s su diagrama de flujo (flowchart). 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


 

ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿

³ QB306               BLOQUES DE CONSTRUCCION                 3 ³

ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

 

 

                      (EMPIEZA)                                

                          ³

      ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄ> [TURNO=1]

      ³                   ³

      ³SI                 ³ <ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿           

      ³                  \³/                              ³           

     / \                 / \                              ³           

   /     \      SI     / G=N \                            ³           

 / JUEGA   \ <ÄÄÄÄÄÄ /   or     \                         ³           

 \DE NUEVO /         \ TURNO=10 /                         ³           

   \  ?  /             \  ?  /                            ³           

     \ /                 \ /                              ³           

     \³/NO               \³/NO                            ³           

[TERMINA MENSAJE]  [PIENSA UN NUMERO]                     ³           

      ³                  \³/                      [TURNO=TURNO+1]     

    (FIN)                / \                             /³\          

                       /     \   CORRECTO                 ³           

                     /ADIVINALO\ ÄÄÄÄÄÄÄÄÄÂÄ> [DI QUE     ³           

                     \         /          ³  ADIVINASTE]  ³                  

                       \  ?  /            ³      ÀÄÄÄÄÄÄÄÄ´           

                         \ /              ³               ³           

                         \³/INCORRECTO    ³               ³           

                   [DA OREJITA]           ³               ³           

                         \³/              ³               ³           

                       [PAUSA]            ³               ³           

                         \³/              ³               ³           

                         / \              ³               ³           

                       /     \  CORRECTO  ³               ³           

                     /ADIVINALO\ ÄÄÄÄÄÄÄÄÄÙ               ³           

                     \         /                          ³           

                       \  ?  /                            ³           

                         \ /                              ³           

                          ³INCORRECTO                     ³           

                         \³/                              ³           

                     [DI QUE NO                           ³           

                     ADIVINASTE]                          ³           

                          ³                               ³    

                          ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ    

                                                                

                                                                 

 

 

                                                                  

-----------------------------------------------------------------

Nota:   En  el  diagrama  de flujo de  arriba  los  OVALOS  est n

indicados con  par‚ntesis ( ) y las CAJAS con par‚ntesis [ ].  De

esta manera ahorramos espacio y podemos dibujar todo el  diagrama

de flujo en una p gina solamente.                               

-----------------------------------------------------------------


 

ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿

³ QB306               BLOQUES DE CONSTRUCCION                 4 ³

ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

 

 

     ¨Qu‚ notas en el diagrama de flujo?  Una serie de bloques de

ARRIBA A ABAJO, uno detr s del otro, d ndonos la impresi¢n de que

el programa est  escrito en secuencia, justamente de la manera en

que  leemos.    No  notamos brincos que nos  desv¡en  de  nuestra

lectura.    Estos bloques hacen que el programa se pueda  leer  y

entender sin ning£n esfuerzo de nuestra parte.  

 

     Sin embargo, cuando leemos detenidamente rutinas como...

 

AdivinaNumero:

'------------

LET turno = 1

RepiteTurno:    <ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿

 CLS                                                           ³

 LOCATE 1, 20: PRINT "TURNO"; turno; " DE"; 10                 ³

 PRINT                                                         ³

 INPUT "ADIVINA UN NUMERO DEL 1 AL 100"; numero.intentado      ³

   IF numero.intentado = numero.pensado OR turno = 10 THEN     ³

     GOTO TerminaTurno  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿                        ³

   END IF                             ³                        ³

 GOSUB DaOrejita                      ³                        ³

 GOSUB Pausa                          ³                        ³

 LET turno = turno + 1                ³                        ³

 GOTO RepiteTurno   ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

TerminaTurno:  <ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ                        

RETURN

 

     ...descubrimos  algunos  brincos GOTO'S  que  desvanecen  la

impresi¢n  inicial  que ten¡amos del diagrma de flujo de  que  el

programa carec¡a de saltos.   Sin embargo,  a  pesar de que  esta

subrutina  tiene  saltos,   estos no son fuera de la  misma  sino

dentro.    Es  decir,   al leer la subrutina,  nuestra  vista  es

desviada  un poco,  ya  que  los saltos se producen en  la  misma

subrutina.    De  modo  que,  la lectura de la  misma  se  afecta

m¡nimamente.

    

     Ahora bien, otra cosa que notamos es que cuando seguimos los

saltos,   estos  se detienen en una l¡nea que explica  el  mismo

(sigue  las  flechas  y lo notar s).   As¡ que,   al  leer  esta

subrutina, encontramos dos cosas importantes:

    

     Primero,   que los saltos est n confinados dentro del bloque

AdivinaNumero,  no fuera de ‚l.   Por lo tanto, la legibilidad de

la misma, no se afecta casi nada.

    

     Segundo,  si seguimos los saltos veremos que los mismos caen

en  l¡neas que los explican.   

 

    


 

ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿

³ QB306               BLOQUES DE CONSTRUCCION                 5 ³

ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

 

 

     Volviendo nuevamente a la subrutina AdivinaNumero.  Nota que

hay una sentencia IF/THEN GOTO que detiene la repetici¢n,  y otro

GOTO que la causa. 

    

     Como puedes ver,  estas SENTENCIAS DE CONTROL son esenciales

para repetir instrucciones y para detenerlas.   Observa, que esta

subrutina AdivinaNumero, est  formada por un grupo de sentencias,

o  UNIDAD EN BLOQUE,   que lleva a cabo una tarea en  particular. 

Si observas nuevamente el diagrama de flujo del  programa entero,

ver s que est  compuesto de varios bloques de sentencias.

 

     Ahora  bien,   si  vuelves a leer  nuevamente  la  subrutina

AdivinaNumero,  pero esta vez siguiendo las flechas,  notar s que

una  se  dirige  al  mensaje RepiteTurno y  la  otra  al  mensaje

TerminaTurno.  Nota, como dentro de estas dos etiquetas (labels),

hay una serie de instrucciones en  las  que  la instrucci¢n final

(GOTO  RepiteTurno),  hace que  se repitan hasta que la condici¢n

final (TerminaTurno) es ejecutada. 

    

                        ¨QUE ES UN BUCLE?

                        -----------------

 

     En  otras  palabras,  tales instrucciones se repiten  varias

veces hasta que una condici¢n final detiene su repetici¢n.   Esto

se  asemeja a un bucle de pelo (loop-pelo enroscado),  que parece

que da vueltas y m s vueltas hasta que se detiene al final.

 

     As¡ que, podemos decir que...

 

                ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿

                ³   UNA SERIE DE INSTRUCCIONES  ³

                ³ QUE SE REPITEN UNA Y OTRA VEZ ³

                ³       SE LLAMA UN BUCLE       ³

                ³       (Loop, en ingl‚s)       ³   

                ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

    

     Por  supuesto,  que  no  queremos  ejecutar  una  serie   de

instrucciones para siempre.   De modo que,  tenemos que usar  una

sentencia,  o m s bien,  un grupo de sentencias que las detengan. 

En   nuestro  bucle  (loop)  RepiteTurno,   usamos  la  sentencia

condicional IF/THEN/GOTO, para pararlo.

    

     Si escribamos el bucle nuevamente,  pero  con  solamente las

l¡neas  que lo causan,  lo explican,  lo generan y  lo  terminan,

tenemos...

 

 

 

 


 

ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿

³ QB306               BLOQUES DE CONSTRUCCION                 6 ³

ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

 

 

AdivinaNumero:

'------------

LET turno = 1  <ÄÄÄÄÄ Se inicia contador fuera del bucle.      

RepiteTurno:   <ÄÄÄÄÄ Entrada al bucle.

 ------------     ÚÄÄ Condici¢n para salir del bucle.          

 ------------     ³                                            

 ------------    \³/                                           

   IF numero.intentado = numero.pensado OR turno = 10 THEN     

     GOTO TerminaTurno                                          

   END IF                                                      

 ------------                                                  

 ------------                                                  

 LET turno = turno + 1  <ÄÄÄÄÄ aumenta contador del bucle      

 GOTO RepiteTurno  <ÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Repetici¢n del bucle.       

TerminaTurno:  <ÄÄÄÄÄÄ Salida del bucle                        

RETURN

 

     Y si lo reducimos m s a£n, tenemos...

 

AdivinaNumero:

'------------

LET turno = 1                                                   

RepiteTurno:                                              

 ------------                                                  

   IF numero.intentado = numero.pensado OR turno = 10 THEN     

     GOTO TerminaTurno                                          

   END IF                                                      

 ------------                                                  

 LET turno = turno + 1                                         

 GOTO RepiteTurno                                               

TerminaTurno:                                                  

RETURN                                

 

     ...y  si hacemos algunos cambios de etiqueta (label),   para

generalizarlo, tenemos...

                                                                

AdivinaNumero:

'------------

LET contador = 1                                               

Bucle:                                            

 ------------                                                   

   If condici¢n de salida THEN

     GOTO TerminaBucle

   END IF

 ------------                                                  

 LET contador = contador + 1                                   

 GOTO Bucle                                               

TerminaBucle:                                                  

RETURN                                


 

ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿

³ QB306               BLOQUES DE CONSTRUCCION                 7 ³

ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

 

 

     Observa que lo que tenemos ahora es un...

 

           ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿

           ³   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:                           ³     

           ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ     

 

     Habr   ocasiones en que tengas que usar el contador antes de

la prueba IF/THEN...

 

           ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿

           ³            BLOQUE DE UN BUCLE           ³

           ³             CON SU CONTADOR             ³

           ³      ANTES DE LA PRUEBA IF...THEN       ³

           ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

           ³ LET contador=0                          ³

           ³ Bucle:                                  ³     

           ³    LET contador= contador +1            ³     

           ³      IF condici¢n salida THEN           ³

           ³        GOTO TerminaBucle                ³

           ³      END IF                             ³

           ³    GOTO Bucle                           ³     

           ³ TerminaBucle:                           ³     

           ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ     

 

     Si consideramos la subrutina...

 

RepiteJuego:

'----------

 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:

RETURN

 


 

ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿

³ QB306               BLOQUES DE CONSTRUCCION                 8 ³

ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

 

 

     ...y  re-escribimos su bucle interno,  obtendremos el bloque

de un bucle sin contador...

 

           ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿

           ³            BLOQUE DE UN BUCLE           ³

           ³               SIN CONTADOR              ³

           ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

           ³ Bucle:                                  ³

           ³    -------------                        ³     

           ³    IF condici¢n salida THEN             ³     

           ³      GOTO TerminaBucle                  ³

           ³    END IF                               ³

           ³    -------------                        ³      

           ³    GOTO Bucle                           ³     

           ³ TerminaBucle:                           ³     

           ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ     

 

     Si hacemos lo mismo con la subrutina...

 

DaOrejita:

'--------

 PRINT

  IF numero.intentado < numero.pensado THEN

    GOTO DiNumeroEsMayor

  END IF

DiNumeroEsMenor:

  PRINT "NO, EL NUMERO PENSADO ES MENOR QUE "; numero.intentado

  GOTO TerminaOrejita

DiNumeroEsMayor:

  PRINT "NO, EL NUMERO PENSADO ES MAYOR QUE"; numero.intentado

TerminaOrejita:

RETURN

 

     ...tendremos un bloque de bucle en ramas.

 

           ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿

           ³            BLOQUE DE UN BUCLE           ³

           ³                 EN RAMAS                ³

           ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

           ³ IF condicion THEN GOTO Verdadero        ³

           ³   Falso:                                ³     

           ³   ------------                          ³     

           ³     GOTO TerminaCondicion               ³     

           ³   Verdadero:                            ³     

           ³   ------------                          ³     

           ³ TerminaCondicion:                       ³

           ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ     

 

 


 

ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿

³ QB306               BLOQUES DE CONSTRUCCION                 9 ³

ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

 

 

     Ahora, si re-escribimos el bloque interno de la subrutina...

 

DiQueAdivinaste:

'--------------

 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"

RETURN

 

     ...tendremos un bloque de secuencia...

 

             ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿

             ³         BLOQUE DE SECUENCIA           ³

             ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

             ³            -------------              ³

             ³            -------------              ³

             ³            -------------              ³

             ³                  .                    ³

             ³ PUEDE CONSISTIR DE UN ENUNCIADO VAC¡O ³

             ³     UN SOLO ENUNCIADO DE ACCI¢N       ³

             ³          O VARIOS DE ELLOS            ³

             ³                 ---                   ³

             ³         PERO NO PUEDEN SER            ³

             ³     ENUNCIADOS DE CONTROL COMO:       ³

             ³        GOTO, IF..THEN, ECT.           ³

             ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

 

     Volviendo a nuestro programa de ADIVINA UN NUMERO,  te  dije

antes,  que  un  programa ideal debe ser  aqu‚l  que  no contenga

saltos.  Es decir, un programa que s¢lo consista de una secuencia

de sentenmcias.  Como puedes ver, esto es imposible de conseguir. 

Para instruir a la computadora a que ejecute una acci¢n repetida,

por  ejemplo,   ser¡a imposible sin que ‚sta haga  uno  o  varios

saltos a otras l¡neas de programa o etiquetas. 

 

     Pero  hay  una cosa que s¡ podemos hacer, y es evitar que la

computadora d‚ largos saltos, y confinar los mismos dentro de sus

subrutinas.  De esta forma, encontraremos de inmediato a donde se

dirige el salto.   Mejor a£n,  podemos dirigir el mismo hacia una

l¡nea con un mensaje REM que explique la naturaleza del salto. 

    

     Otra cosa  que  podemos hacer es escribir nuestros programas

usando solamente los tres bloques que hemos estudiado:  EL BLOQUE

SECUENCIAL, DE BUCLE Y EL DE RAMAS. 

    


 

ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿

³ QB306               BLOQUES DE CONSTRUCCION                10 ³

ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

 

 

     Y  esta es precisamente la forma en que el programa  ADIVINA

UN   NUMERO   est   estructurado.    ES  UNA  SERIE  DE   BLOQUES

SECUENCIALES,  DE BUCLES Y DE RAMAS.   Estos bloques unidos a  la

programaci¢n de ARRIBA A ABAJO o DESCENDENTE (Top Down) forman un

programa bien estructurado.  De modo que...

 

  ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿

  ³                LA PROGRAMACI¢N ESTRUCTURADA                ³

  ³                        ES UN M‚TODO                        ³

  ³        PARA ESCRIBIR UN PROGRAMA BIEN ESTRUCTURADO         ³

  ³            EN CUALQUIER LENGUAJE DE COMPUTADORA            ³

  ³                  QUE FACILITA SU LECTURA,                  ³

  ³                     SU MANTENIMIENTO,                      ³

  ³                     Y SU MODIFICACI¢N;                     ³

  ³                    Y QUE HACE TODO ESO,                    ³

  ³          USANDO LA PROGRAMACI¢N DE ARRIBA A ABAJO          ³

  ³            Y ESTAS TRES UNIDADES ESTRUCTURALES:            ³

  ³ LOS BLOQUES DE SECUENCIA, DE REPETICI¢N (loop) y DE RAMAS. ³

  ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

    

     A continuaci¢n ver s los bucles traducidos al ingl‚s y con

sus correspondientes diagramas de flujos.  Est£dialos.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


 

ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿

³ QB306               BLOQUES DE CONSTRUCCION                11 ³

ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

 

 

           ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿

           ³            BLOQUE DE UN BUCLE           ³

           ³             CON SU CONTADOR             ³

           ³      DESPU‚S DE LA PRUEBA IF...THEN     ³

           ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

           ³ LET counter=1                           ³

           ³ 'Loop                                   ³     

           ³    -------------                        ³     

           ³    IF exit condition THEN GOTO End loop ³     

           ³    -------------                        ³     

           ³    LET counter = counter + 1            ³     

           ³    GOTO Loop                            ³     

           ³ 'End loop.                              ³     

           ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´     

           ³ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄ¿                         ³         

           ³ ³LET counter=1³                         ³         

           ³ ÀÄÄÄÄÄÄÂÄÄÄÄÄÄÙ                         ³          

           ³       \³/                               ³         

           ³  ÚÄÄÄÄÄÄÄÄÄÄÄ¿                          ³        

           ³  ³   Loop    ³<ÄÄÄÄÄÄÄÄÄÄÄ¿             ³        

           ³  ÀÄÄÄÄÄÂÄÄÄÄÄÙ            ³             ³        

           ³       \³/                 ³             ³        

           ³  ÚÄÄÄÄÄÄÄÄÄÄÄÄ¿           ³             ³        

           ³  ³ ---------- ³ ÚÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄ¿ ³        

           ³  ÀÄÄÄÄÄÂÄÄÄÄÄÄÙ ³LET counter=counter+1³ ³        

           ³       \³/       ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ ³          

           ³       / \                /³\            ³             

           ³     / IF  \   False ÚÄÄÄÄÄÁÄÄÄÄÄÄ¿      ³                

           ³   /  exit   \ ÄÄÄÄÄ>³ ---------- ³      ³             

           ³   \condition/ THEN  ÀÄÄÄÄÄÄÄÄÄÄÄÄÙ      ³               

           ³     \     /                             ³           

           ³       \ /                               ³           

           ³   True ³ THEN                           ³               

           ³       \³/                               ³         

           ³   ÚÄÄÄÄÄÄÄÄ¿                            ³         

           ³   ³End Loop³                            ³         

           ³   ÀÄÄÄÄÄÄÄÄÙ                            ³        

           ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ  

 

 

 

 

 

 

 

 

 

 

 


 

ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿

³ QB306               BLOQUES DE CONSTRUCCION                12 ³

ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

 

 

           ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿

           ³            BLOQUE DE UN BUCLE           ³

           ³             CON SU CONTADOR             ³

           ³      ANTES DE LA PRUEBA IF...THEN       ³

           ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

           ³ LET counter=0                           ³

           ³ 'Loop                                   ³     

           ³    LET counter = counter + 1            ³     

           ³    IF exit condition THEN GOTO End loop ³     

           ³    GOTO Loop                            ³     

           ³ 'End loop.                              ³     

           ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´     

           ³       ÚÄÄÄÄÄÄÄÄÄÄÄÄÄ¿                   ³         

           ³       ³LET counter=0³                   ³         

           ³       ÀÄÄÄÄÄÄÂÄÄÄÄÄÄÙ                   ³          

           ³             \³/                         ³         

           ³        ÚÄÄÄÄÄÄÄÄÄÄÄ¿                    ³        

           ³        ³   Loop    ³<ÄÄÄÄÄÄÄÄÄÄÄ¿       ³        

           ³        ÀÄÄÄÄÄÂÄÄÄÄÄÙ            ³       ³        

           ³             \³/                 ³       ³        

           ³    ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿      ³       ³        

           ³    ³LET counter=counter+1³      ³       ³        

           ³    ÀÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÙ      ³       ³        

           ³             \³/                 ³       ³          

           ³             / \                 ³       ³             

           ³           / IF  \   False       ³       ³               

           ³         /  exit   \ ÄÄÄÄÄÄÄÄÄÄÄÄÙ       ³              

           ³         \condition/ THEN                ³               

           ³           \     /                       ³           

           ³             \ /                         ³           

           ³         True ³ THEN                     ³               

           ³             \³/                         ³         

           ³         ÚÄÄÄÄÄÄÄÄ¿                      ³         

           ³         ³End Loop³                      ³         

           ³         ÀÄÄÄÄÄÄÄÄÙ                      ³        

           ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ  

 

 

 

 

 

 

 

 

 

 

 

 

 


 

ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿

³ QB306               BLOQUES DE CONSTRUCCION                13 ³

ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

 

 

           ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿

           ³            BLOQUE DE UN BUCLE           ³

           ³               SIN CONTADOR              ³

           ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

           ³ 'Loop                                   ³

           ³    -------------                        ³     

           ³    IF exit condition THEN GOTO End loop ³     

           ³    -------------                        ³     

           ³    GOTO Loop                            ³     

           ³ 'End loop.                              ³     

           ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´     

           ³  ÚÄÄÄÄÄÄÄÄÄÄÄ¿                          ³         

           ³  ³Repeat Loop³<ÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿          ³         

           ³  ÀÄÄÄÄÄÂÄÄÄÄÄÙ               ³          ³          

           ³       \³/                    ³          ³         

           ³  ÚÄÄÄÄÄÄÄÄÄÄÄÄ¿              ³          ³        

           ³  ³Do something³              ³          ³        

           ³  ÀÄÄÄÄÄÂÄÄÄÄÄÄÙ              ³          ³        

           ³       \³/                    ³          ³        

           ³       / \                    ³          ³        

           ³     / IF  \     False  ÚÄÄÄÄÄÁÄÄÄÄÄÄ¿   ³        

           ³   /  exit   \ ÄÄÄÄÄÄÄÄ>³Do something³   ³        

           ³   \condition/   THEN   ÀÄÄÄÄÄÄÄÄÄÄÄÄÙ   ³          

           ³     \     /                             ³             

           ³       \ /                               ³               

           ³   True ³ THEN                           ³             

           ³       \³/                               ³               

           ³   ÚÄÄÄÄÄÄÄÄ¿         NO COUNTER         ³           

           ³   ³End Loop³    LOOP BLOCK FLOWCHART    ³           

           ³   ÀÄÄÄÄÄÄÄÄÙ                            ³               

           ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ  

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


 

ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿

³ QB306               BLOQUES DE CONSTRUCCION                14 ³

ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

 

 

           ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿

           ³            BLOQUE DE UN BUCLE           ³

           ³                 EN RAMAS                ³

           ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

           ³ IF condition THEN GOTO True             ³

           ³   'False                                ³     

           ³      Do something                       ³     

           ³    GOTO End IF                          ³     

           ³   'True                                 ³     

           ³      Do something                       ³     

           ³ 'End IF                                 ³

           ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´     

           ³        / \                              ³         

           ³      / IF  \     True                   ³         

           ³    /         \ ÄÄÄÄÄÄÄÄ¿                ³          

           ³    \condition/   THEN  ³                ³         

           ³      \     /           ³                ³        

           ³        \ /             ³                ³        

           ³   False ³ THEN         ³                ³        

           ³        \³/             ³                ³        

           ³ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿       ³                ³        

           ³ ³ Do something ³<ÄÄÄÄÄÄÙ                ³        

           ³ ÀÄÄÄÄÄÄÄÂÄÄÄÄÄÄÙ                        ³        

           ³        \³/                              ³          

           ³     ÚÄÄÄÄÄÄÄÄ¿                          ³             

           ³     ³ End IF ³                          ³               

           ³     ÀÄÄÄÄÄÄÄÄÙ                          ³             

           ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ  

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


 

ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿

³ QB306               BLOQUES DE CONSTRUCCION                15 ³

ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

 

 

             ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿

             ³         BLOQUE DE SECUENCIA          ³

             ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

             ³            -------------             ³

             ³            -------------             ³

             ³            -------------             ³

             ³                  .                   ³

             ³ PUEDE CONSISTR DE UN ENUNCIADO VAC¡O ³

             ³     UN SOLO ENUNCIADO DE ACCI¢N      ³

             ³          O VARIOS DE ELLOS           ³

             ³                 ---                  ³

             ³         PERO NO PUEDEN SER           ³

             ³     ENUNCIADOS DE CONTROL COMO:      ³

             ³        GOTO, IF..THEN, ECT.          ³

             ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´

             ³          ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿            ³

             ³          ³ ------------ ³            ³

             ³          ÀÄÄÄÄÄÄÂÄÄÄÄÄÄÄÙ            ³

             ³                 ³                    ³

             ³                \³/                   ³

             ³          ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿            ³

             ³          ³ ------------ ³            ³

             ³          ÀÄÄÄÄÄÄÂÄÄÄÄÄÄÄÙ            ³

             ³                 ³                    ³       

             ³                \³/                   ³       

             ³                 .                    ³        

             ³                 .                    ³       

             ³                 .                    ³

             ³           PR¢XIMA L¡NEA              ³

             ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

                                                                 


 

ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿

³ QB306               BLOQUES DE CONSTRUCCION                16 ³

ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

 

 

              LISTADO DEL PROGRAMA ADIVINA UN NUMERO

 

REM ADIVIMA UN NUMERO

REM -----------------

CLS : SCREEN 0: WIDTH 80

   GOSUB PiensaUnNumero

   GOSUB AdivinaNumero

   GOSUB DiSiGanaste

   GOSUB RepiteJuego

   GOSUB TerminaJuego

END

 

PiensaUnNumero:

'-------------

  RANDOMIZE TIMER

  LET numero.pensado = INT(RND * 100) + 1

RETURN

 

AdivinaNumero:

'------------

  LET turno = 1

RepiteTurno:

  CLS

  LOCATE 1, 20: PRINT "TURNO"; turno; " DE"; 10

  PRINT

  INPUT "ADIVINA UN NUMERO DEL 1 AL 100"; numero.intentado

    IF numero.intentado = numero.pensado OR turno = 10 THEN

      GOTO TerminaTurno

    END IF

  GOSUB DaOrejita

  GOSUB Pausa

  LET turno = turno + 1

  GOTO RepiteTurno

TerminaTurno:

RETURN

 

DaOrejita:

'--------

PRINT

  IF numero.intentado < numero.pensado THEN

    GOTO DiNumeroEsMayor

  END IF

DiNumeroEsMenor:

  PRINT "NO, EL NUMERO PENSADO ES MENOR QUE "; numero.intentado

  GOTO TerminaOrejita

DiNumeroEsMayor:

  PRINT "NO, EL NUMERO PENSADO ES MAYOR QUE"; numero.intentado

TerminaOrejita:

RETURN


 

ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿

³ QB306               BLOQUES DE CONSTRUCCION                17 ³

ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

 

 

Pausa:

'----

  LET Pausa = 0

RepitePausa:

  LET Pausa = Pausa + 1

  IF Pausa = 40000 THEN GOTO TerminaPausa

  GOTO RepitePausa

TerminaPausa:

RETURN

 

DiSiGanaste:

'----------

CLS

 IF numero.intentado = numero.pensado THEN

   GOTO Adivinaste

 END IF

NoAdivinaste:

 GOSUB DiQueNoAdivinaste

 GOTO TerminaMensaje

Adivinaste:

 GOSUB DiQueAdivinaste

TerminaMensaje:

RETURN

 

RepiteJuego:

'----------

 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:

RETURN

 

DiQueAdivinaste:

'--------------

 PRINT "­CARAMBA, ADIVINASTE!"

 PRINT

 PRINT "EL NUMERO ES"; numero.pensado

 PRINT

 PRINT "LO ADINASTE EN "; turno; " TURNOS DE "; 10

 PRINT

 PRINT "O EN UN"; INT((turno / 10) * 100); "% "; "DE LOS TURNOS"

RETURN

 

 

 

 


 

ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿

³ QB306               BLOQUES DE CONSTRUCCION                18 ³

ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

 

 

DiQueNoAdivinaste:

'----------------

 PRINT "­FALLASTE EN ADIVINARLO!"

 PRINT

 PRINT "EL NUMERO ES"; numero.pensado

RETURN

 

TerminaJuego:

'-----------

 CLS

 PRINT

 PRINT "ESPERO QUE TE HAYAS DIVERTIDO"

 PRINT

 PRINT "HASTA LUEGO"

 FOR Pausa = 1 TO 6000: NEXT Pausa

RETURN

 

 

 

Arriba     Contenido