ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
º
ɻ˻ɻɻ˻ɻÉ˻ɻɻËɻɻÉ
ɻ˻ɻɻËÉ»
º
º
̼̹ººº»Ì¹Ì¹ºÊºÌ¹º ºººººº
ººÌ¹Ì¹È»ºº
º
º Ê
ÊÈȼȼÊÈÊÊÊ ÊÊÊȼÊȼ¼È¼
ȹʼÊÊȼÊȼ
º
ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹
º É˻ɻ˻»ÉË É»
É» º
º
º ºÊºººººººº ºº
ɼ º LO BASICO
DEL BASIC
º
º Ê Êȼʼȼȼȼ
ȼ º
º
ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹
º
º
º
EN ESTA LECCION APRENDERAS...
º
º
º
º ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ º
º ³
³ º
º ³ þ Como saltar de una l¡nea a otra
por
³ º
º ³ medio de la sentencia
GOTO ..................
2 ³ º
º ³ þ La sintaxis de la setencia GOTO
............. 3 ³ º
º ³ þ ¨Qu‚ es una etiqueta?
.......................
4 ³ º
º ³ þ El bucle sin fin
............................
5 ³ º
º ³ þ Estructura de bifurcaci¢n
condicional
³ º
º ³ IF/THEN
..................................... 7 ³ º
º ³ þ Forma general para la estructura de
³ º
º ³ bifurcaci¢n
condicional IF/THEN ............. 8 ³ º
º ³ þ Forma general de la estructura
³ º
º ³ IF/OR/THEN
..................................
10 ³ º
º ³ þ ¨Qu‚ es una funci¢n? ........................ 11 ³ º
º ³ þ Sintaxis de la funci¢n UCASE$
............... 12 ³ º
º ³ þ Sintaxis de la funci¢n LCASE$
............... 12 ³ º
º ³
³ º
º ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ º
º
º
ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹
º É»Ë»Ë É»É» ɻɻɻ
º
º
º ººÌ¹º Ì º
ɼººÈ» º
SALTANDO DE UNA LINEA A OTRA º
º ȹʼȼȼȼ ȼȼȼ
º
º
ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
º É»Ë»Ë É»É» ɻɻɻ
º
º
º ººÌ¹º Ì º
ɼººÈ» º
SALTANDO DE UNA LINEA A OTRA º
º ȹʼȼȼȼ ȼȼȼ
º
º
ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
Hasta este momento, en las distintas versiones de
nuestro
programa de suma, habr s notado que las
l¡neas del mismo son
ejecutadas una despu‚s de la otra o en forma secuencial. En esta
lecci¢n aprender s c¢mo saltar de una l¡nea a otra, esto es,
c¢mo
transferir la ejecuci¢n del programa a una l¡nea diferente
a la
que secuencialmente deber¡a transferirse.
COMO SALTAR DE UNA
LINEA A OTRA POR MEDIO DE LA SENTENCIA GOTO
--------------------------------------------------------------
Volviendo a la versi¢n m s reciente de nuestro
programa
original...
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ REM Suma de dos
numeros ³
³ REM ------------------- ³
³
CLS
³
³ INPUT
"Entra el valor de a"; a ³
³ INPUT
"Entra el valor de b"; b ³
³ LET
total = a + b
³
³
REM
³
³ PRINT
"El Total es ="; total
³
³ END 'Programa
³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
...de seguro que habr s notado otro escollo m s en ‚l, y es
que al llegar a la sentencia END, al programa
termina, y si
quieres sumar otro par de n£meros, tienes que ejecutar
(RUN) el
programa nuevamente.
Una manera de corregir esta dificultad
ser¡a que, antes de que la ejecuci¢n del
programa llegue a la
sentencia END, brinquemos de nuevo al comienzo de la
ejecuci¢n,
que es donde se encuentra la sentencia CLS...
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ REM Suma de dos numeros ³
³ REM ------------------- ³
ÚÄÄÅÄ> CLS
³
³ ³ INPUT "Entra el valor
de a"; a ³
³ ³ INPUT "Entra el valor
de b"; b ³
³ ³ LET total = a + b
³
³ ³ REM
³
³ ³ PRINT "El Total es
="; total ³
ÀÄÄÅÄÄ
³
³ END 'Programa
³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ QB205
SALTANDO DE UNA LINEA A OTRA
3 ³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
SINTAXIS DE LA SENTENCIA GOTO
-----------------------------
¨C¢mo lograrlo?
La soluci¢n la encontraremos en
la
sentencia GOTO.
Esta es una sentencia que nos permite saltar de
un n£mero de l¡nea a otro o de una etiqueta (label) a
otra. Su
sintaxis es...
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ GOTO n£mero de l¡nea
³ ³ GOTO etiqueta ³
ÀÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÙ ÀÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÙ
³
³
GOTO 100
GOTO suma
Observa que
tenemos
dos versiones
para
GOTO. La
primera va
precedida por un n£mero de l¡nea: la l¡nea donde
se desea que el salto ocurra. Y la
segunda, va seguida de
un
label o etiqueta que no es otra cosa que un t¡tulo
que se le da
al sitio d¢nde queremos saltar.
Cuando estemos m s adentrado en nuestro curso
atenderemos
este asunto del label m s detenidamente. Ya sabes que el
QBasic no necesita los n£meros de l¡nea, y por
lo tanto, para
saltar de un sitio a otro lo £nico que requiere es
que le digas
d¢nde saltar.
Y esto se consigue con un label (etiqueta que
indica la direcci¢n donde se encuentra la instrucci¢n a
seguir).
Veamos, ahora, los cambios hechos a
nuestro programa de suma
introduciendo la sentencia GOTO en ‚l...
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ 100 REM Suma de dos
numeros ³
³ 110 REM
------------------- ³
³ 120 CLS
³
ÚÄÄÄÅ>130 'Suma
³
S ³ ³ 140 PRINT
³
A ³ ³ 150 INPUT "Entra el valor de
a"; a ³
L ³ ³ 160 INPUT "Entra el valor de
b"; b ³
T ³ ³ 170 LET total = a + b
³
O ³ ³ 180 REM
³
³ ³ 190 PRINT "El Total es =";
total ³
ÀÄÄÄÅ 200 GOTO 130 'Suma.
³
³ 210 END 'Programa
³
ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ PROGRAMA
BASICA o GWBASIC
³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ QB205 SALTANDO
DE UNA LINEA A OTRA
4 ³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
Nota como en la l¡nea 200, la sentencia GOTO hace
que el
programa vuelva a ejecutarse nuevamente
desde la l¡nea 130,
rotulada con una sentencia REM en forma de comilla
"'". Observa,
tambi‚n, c¢mo la l¡nea 200 est rotulada con otra
sentencia REM
en comillas. Esto,
como habr s notado, simplifica grandemente la
lectura del programa.
En la versi¢n QBasic...
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ REM Suma de dos numeros ³
³ REM ------------------- ³
³
CLS
³
ÚÄÄÄÅ>Suma:
³
³ ³ PRINT
³
S ³ ³ INPUT "Entra el valor
de a"; a ³
A ³ ³ INPUT "Entra el valor
de b"; b ³
L ³ ³ LET total = a + b
³
T ³ ³ REM
³
O ³ ³ PRINT "El Total es
="; total ³
ÀÄÄÄÅ GOTO Suma
³
³ END 'Programa
³
ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ PROGRAMA
QBASIC ³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
¨QUE ES UNA ETIQUETA?
---------------------
...en vez de n£meros, utilizamos etiquetas (labels)
para
identificar el sitio donde se har el
salto. Esto se
logra
escribiendo la etiqueta seguida del s¡mbolo :
(semicolon). El
semicolon (:), identifica el texto que
le precede como una
etiqueta, y ‚sta a su vez, indica el lugar donde se
encuentra la
direcci¢n a seguir.
Observa, adem s, que no fue necesario a¤adir
r¢tulos a las nuevas l¡neas ya que
el nombre mismo de las
etiquetas las identica.
Es importante que el n£mero de
l¡nea o la etiqueta
correspondiente a la cual se desea saltar, exista. Si no existe,
el aviso de error...
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ Label not
defined ³
ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ < OK > < help > ³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
...ser desplegado en pantalla.
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ QB205
SALTANDO DE UNA LINEA A OTRA
5 ³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
Con la introducci¢n de la sentencia de control
GOTO (se
llama as¡ porque altera la ejecuci¢n del programa
transfiri‚ndola
a otro lugar en el mismo programa), ahora
podemos ejecutar el
programa cuantas veces querramos sin necesidad de
interrumpirlo
para introducir nuevos valores a las variables a y b. Es decir,
siempre que digitemos los valores de las variables a y b,
y
presionemos ENTER, la computadora desplegar
el resultado e
inmediatamente pedir nuevos valores.
Sin embargo, por m s que quisi‚ramos detener el programa no
podr¡amos. Este seguir ejecut ndose
ininterrumpidamente. Por
eso, a la sentencia GOTO se le llama sentencia
de trasferencia
incondicional. Es
decir, no se establece ninguna condici¢n para
detener la ejecuci¢n del programa.
EL BUCLE SIN FIN (an endless loop)
----------------------------------
A esta ejecuci¢n
"de nunca acabar" se le llama un bucle
sin fin (an endless loop) y la £nica forma que
puedes detenerlo
es presionando las teclas Ctrl C al mismo tiempo. Sin embargo,
el hecho de que el
programa se mantenga ejecut ndose
indefinidamente no es nada pr ctico. De modo
que tenemos que
buscar la forma de detnerlo. He aqu¡ c¢mo hemos resuelto este
problema...
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ 100 REM Suma de dos
numeros
³
³ 110 REM
-------------------
³
³ 120 CLS
³
ÚÄÄÄÅ>130 'Suma
³
³ ³ 140 PRINT
³
³ ³ 150 INPUT "Entra el valor de
a"; a
³
³ ³ 160 INPUT "Entra el valor de
b"; b
³
³ ³ 170 LET total = a + b
³
³ ³ 180 REM
³
³ ³ 190 PRINT "El Total es =";
total
³
³ ³ 192 PRINT
³
³ ³ 194 INPUT "¨Quieres terminar
(S/N)"; Y$
³
³ ÚÄÅ 196
IF Y$ = "S" THEN GOTO 202 'Termina.
³
ÀÄÅÄÅ 200
GOTO 130 'Suma.
³
ÀÄÅ>202 'Termina
³
³ 210 END
'Programa
³
ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ PROGRAMA
BASICA o GWBASIC
³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ QB205
SALTANDO DE UNA LINEA A OTRA
6 ³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
Como puedes ver, hemos
a¤adido las l¡neas...
ÚÄÄÄ> 130 'Suma
³
:
el (;), pone signo de ?
³
: ³
³
194 INPUT
"¨Quieres terminar (S/N)"; Y$
³ ÚÄÄ 196
IF Y$ = "S" THEN GOTO 202 'Termina.
ÀÄÅÄÄ 200
GOTO 130 'Suma.
ÀÄ> 202
'Termina
210 END 'Programa
...194, 196 y 202. La l¡nea
194, tiene una sentencia INPUT
que le pide al usuario si quiere terminar de
sumar. Si este es
el caso, que digite S, si no que digite
N. Cuando el usuario
hace su elecci¢n, digamos que quiera terminar el programa,
digita
S. Este valor
literal se almacena en la variable alfanum‚rica
Y$. Como
sabes, una variable alfanum‚rica, adem s de almacenar
n£meros, tambi‚n almacena letras. Por eso se
la llama
ALFA(letras del alfabeto) NUMERICA (n£meros).
Pues bien, cuando la ejecuci¢n del programa
llega a la
l¡neas 196, la computadora busca el valor de la variable
Y$, si
es "S", entonces (THEN) utiliza la sentencia GOTO
para transferir
la ejecuci¢n del programa a la l¡nea
202, que no se ejecuta
porque es una l¡nea de comentario. De modo que, la
ejecuci¢n
contin£a hasta llegar a la l¡nea 210 donde
la sentencia END
detiene el programa.
En el caso de que el usuario conteste "N" en la l¡nea
196,
la variable alfanum‚rica Y$ tomar el valor de
"N". Cuando la
ejecuci¢n del programa llega a la l¡nea 196,
encuentra que la
variable alfanum‚rica YS no tiene el valor de "S". Por lo tanto,
la computadora no modifica la ejecuci¢n del programa
dejando que
‚sta fluya normalmente. Cuando llega a la l¡nea 200,
la
ejecuci¢n del programa es
transferida a la l¡nea 130,
repiti‚ndose de esta forma una nueva suma.
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ QB205
SALTANDO DE UNA LINEA A OTRA
7 ³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
La versi¢n del programa para QBasic es la siguiente...
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ REM Suma de dos
numeros
³
³ REM
-------------------
³
³ CLS
³
ÚÄÄÄÄÅ>Suma:
³
³ ³ PRINT
³
³ ³ INPUT "Entra el valor
de a"; a
³
³ ³ INPUT "Entra el valor
de b"; b
³
³ ³ LET total = a + b
³
³ ³ REM
³
³ ³ PRINT "El Total es
="; total
³
³ ³ PRINT
³
³ ³ INPUT "¨Quieres terminar
(S/N)"; Y$ ³
³ ÚÄÅÄÄÄ IF Y$ = "S" THEN GOTO
Termina
³
ÀÄÄÅÄÅÄÄÄ GOTO Suma
³
ÀÄÅ>Termina:
³
³ END 'Programa
³
ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³
PROGRAMA QBASIC
³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
ESTRUCTURA
DE BIFURCACION CONDICIONAL IF/THEN
---------------------------------------------
La estructura...
IF Y$ = "S" THEN GOTO Termina
...establece que la ejecuci¢n del programa ser transferida
a la etiqueta Termina con la condici¢n
de que la variable Y$
tenga un valor de "S". En otras palabras, condiciona el flujo
de la ejecuci¢n del programa de acuerdo
con las condiciones
establecidas. Por
eso se llama tambi‚n estructura de bifurcaci¢n
condicional. Estudiaremos estas y otras estructura
similares con
lujo de detalle en lecciones posteriores.
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ QB205
SALTANDO DE UNA LINEA A OTRA
8 ³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
FORMA
GENERAL PARA LA ESTRUCTURA DE BIFURCACION CONDICIONAL
-----------------------------------------------------------
IF/THEN (SI/ENTONCES)
---------------------
La forma general para esta estructura es...
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ IF condici¢n THEN haz lo siguiente ³
ÀÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÙ
ÚÄÄÁÄÄÄÄ¿ ÚÄÄÄÄÄÁÄÄÄÄ¿
IF Y$ = "S" THEN GOTO Termina
IF Y$ = "N" THEN STOP
Si ejecutamos el programa...
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ REM Suma de dos
numeros ³
³ REM
-------------------
³
³ CLS
³
³ Suma:
³
³ PRINT
³
³ INPUT "Entra el valor
de a"; a
³
³ INPUT "Entra el valor
de b"; b
³
³ LET total = a + b
³
³ REM
³
³ PRINT "El Total es
="; total
³
³ PRINT
³
³ INPUT "¨Quieres
terminar (S/N)"; Y$ ³
³ IF Y$ =
"S" THEN GOTO Termina
³
³ GOTO Suma
³
³ Termina:
³
³ END 'Programa
³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
...y contestamos con una "s"
min£scula a la pregunta
"¨Quires terminar (S/N)?, notaremos que el
programa empieza una
ejecuci¢n nueva en vez de
detenerse. Ello
es porque la
computadora £nicamente reconoce la letra may£scula S
como valor
verdadero en la variable Y$ (es as¡ como la estructura
IF/THEN lo
establece) para que el programa se detenga. Una s min£scula no
es un valor verdadero para dicha
variable, as¡ que no es
reconocido.
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ QB205
SALTANDO DE UNA LINEA A
OTRA
9 ³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
Tal dificultad puede corregirse de la siguiente manera...
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ REM Suma de dos
numeros
³
³ REM
-------------------
³
³ CLS
³
³ Suma:
³
³ PRINT ³
³ INPUT "Entra el valor
de a"; a
³
³ INPUT "Entra el valor
de b"; b
³
³ LET total = a + b
³
³ REM
³
³ PRINT "El Total es
="; total
³
³ PRINT
³
³ INPUT "¨Quieres
terminar? (S/N)?"; Y$ ³
³ IF Y$ =
"S" THEN GOTO Termina
³
ÄÄÄÄÅÄÄÄ> IF Y$ = "s" THEN GOTO
Termina
³
³ GOTO Suma
³
³ Termina:
³
³ END 'Programa
³
ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³
PROGRAMA QBASIC
³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
...a¤adiendo la l¡nea...
IF Y$ = "s" THEN GOTO Termina
...despu‚s de la primera estructura condicional
IF/THEN.
Ahora, habiendo dos estructuras condicionales IF/THEN, una con
un
valor alfa "S" y la otra con un valor alfa
"s", la computadora
reconocer ambos valores como verdaderos. De modo que, en este
nuevo programa puedes entrar una "S" o una
"s" indistintamente
para detener el programa, y ‚ste se detendr .
Sin embargo, estas dos l¡neas condicionales...
IF Y$ = "S" THEN GOTO Termina
IF Y$ = "s" THEN GOTO Termina
...pueden combinarse para producir una £nica l¡nea...
IF Y$ = "S" OR Y$ = "s" THEN GOTO Termina
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ QB205 SALTANDO DE UNA LINEA A OTRA
10 ³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
...y nuestro programa ser¡a entonces...
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ REM Suma de dos
numeros ³
³ REM
-------------------
³
³ CLS
³
³ Suma:
³
³ PRINT
³
³ INPUT "Entra el valor
de a"; a
³
³ INPUT "Entra el valor
de b"; b
³
³ LET total = a + b
³
³ REM
³
³ PRINT "El Total es
="; total
³
³ PRINT
³
³ INPUT "¨Quieres
terminar (S/N)?"; Y$ ³
ÄÄÅÄÄ> IF Y$ = "S" OR Y$ =
"s" THEN GOTO Termina ³
³ GOTO Suma
³
³ Termina:
³
³ END 'Programa
³
ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³
PROGRAMA QBASIC
³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
Si te fijas bien, notar s que esta l¡nea no es otra cosa que
una operaci¢n l¢gica OR (lecci¢n
QB105). Nos invita a
que
escojamos dos alternativas: "S" ¢
"s", y que ambas deben ser
ciertas. Su
sintaxis es...
FORMA GENERAL DE LA ESTRUCTURA IF/OR/THEN
-----------------------------------------
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ IF condici¢n OR
condici¢n THEN haz esto ³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÙ
ÚÄÄÄÁÄÄ¿ ÚÄÄÁÄÄÄ¿
ÚÄÄÄÄÁÄÄÄÄÄ¿
IF Y$ =
"S" OR Y$ =
"s" THEN GOTO Termina
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ QB205
SALTANDO DE UNA LINEA A OTRA
11 ³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
Otra manera manera m s corta de resolver este problema es...
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ REM Suma de dos
numeros
³
³ REM
-------------------
³
³ CLS
³
³ Suma:
³
³ PRINT
³
³ INPUT "Entra el valor
de a"; a ³
³ INPUT "Entra el valor
de b"; b ³
³ LET total = a + b
³
³ REM
³
³ PRINT "El Total es
="; total
³
³ PRINT
³
³ INPUT "¨Quieres seguir
(S/N)"; Y$ ³
ÄÄÄÄÅÄÄ> LET Y$ = UCASE$(Y$)
³
³ IF Y$ =
"N" THEN GOTO Termina
³
³ GOTO Suma
³
³ Termina:
³
³ END 'Programa
³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
En la l¡nea...
LET Y$ = UCASE$(Y$)
...UCASE$ tiene la funci¢n de convertir la letra asignada a
la variable alfa Y$, en may£scula, si es min£scula,
y la deja
igual si es may£scula.
Por ejemplo, si el valor entrado de Y$ es
"n", Y$="n". Cuando la
ejecuci¢n del programa llega a la l¡nea
donde aparece UCASE$, ‚sta convierte el valor de Y$
que es "n"
min£scula a
"N" may£scula.
Y$="n"
Y$ = UCASE$(Y$) = UCASE$("n") ="N"
¨QUE ES UNA FUNCION?
--------------------
Como habr s notado, UCASE$ tiene la funci¢n determinada de
convertir letras min£sculas a may£sculas. Es como un
miniprograma
bastante abreviado que puede tener o pedir uno
o m s valores
reteni‚ndolo(s) en una variable. Por eso se le llama la funci¢n
UCASE$. As¡ que...
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ QB205
SALTANDO DE UNA LINEA A OTRA
12 ³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³
UNA FUNCION
³
³ ES COMO UN MINIPROGRAMA
BASTANTE ABREVIADO ³
³ QUE PUEDE TENER O PEDIR UNO O MAS VALORES
³
³
RETENIENDOLO(S) EN UNA VARIABLE ³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
Hay una funci¢n de conversi¢n de caracteres
similar que
convierte las letras may£sculas a
min£sculas. Y
esta es
Y$=LCASE$(Y$). Las
correspondientes sintaxis para ambas son:
SINTAXIS DE LA FUNCION UCASE$
-----------------------------
UCASE$(Y$)
³
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ UCASE$(expresi¢n en
cadena de caracteres) ³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
³
UCASE$("letra")
Ejemplo:
Si Y$ = "s", entonces,
Y$ = UCASE$(Y$)
Y$ = UCASE$("s")
Y$="S"
SINTAXIS DE LA FUNCION LCASE$
-----------------------------
LCASE$(Y$)
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ LCASE$(expresi¢n en
cadena de caracteres) ³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
LCASE$("LETRA")
Ejemplo:
Si Y$ = "S", entonces,
Y$ = LCASE$(Y$)
Y$ = LCASE$("S")
Y$="s"
UCASE significa Upper Case (may£scula), y LCASE
significa
Lower Case (min£scula).
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ QB205 SALTANDO
DE UNA LINEA A OTRA
13 ³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
Si crees que hemos acabado con las dificultades
en esta
£ltima versi¢n de nuestro programa de suma, te equivocas. A£n el
programa tiene que ser mejorado. Por ejemplo, ¨qu‚ pasar¡a si en
vez de un n£mero, entraras como
valor de las letras a y b
respectivamente en las l¡neas...
INPUT "Entra el valor de a"; a
INPUT "Entra el valor de b"; b
Si obraras as¡, la computadora desplegar¡a el
siguiente
mensaje en pantalla...
Redo from start
Eso significa que el valor entrado en la variable a ¢ b, no
es aceptado por ser un valor alfa y no num‚rico. Una variable
num‚rica, exige un n£mero y una alfanum£rica,
n£meros o letras.
Como a y b son variables num‚ricas
no aceptan letras como
valores. As¡
que hasta que no entres un n£mero, la computadora
no dejar de desplegar el mensaje arriba mencionado.
Ahora bien, ¨qu‚ ocurrir¡a con estas mismas variables (a y
b) si como valor recibieran un espacio (" ") o
nada ("" equivale
a presionar la tecla ENTER en vez de un valor)? Lo que pasar¡a
ser¡a que las variables retendr¡an el valor de
"0" previamente
asignado por el int‚rprete Basic como valor inicial. En Qbasic,
todas las variables num‚ricas tienen "0"
asignado como valor
inicial.
Y si ambas variables a y b, son cero, el
Total al
sumarlas ser tambi‚n "0".
En una lecci¢n posterior aprender s c¢mo evitar
que una
variable num‚rica no acepte valores alfa. En la pr¢xima lecci¢n
mejoraremos m s nuestro programa de SUMA. Hasta luego, pues!