- Acerca del curso
- Entrada y salida
básica - Sentencias de control
selectivas - Sentencias de control
repetitivas - Funciones
matematicas - Programación
estructurada - Manipulación de cadenas
de texto - Manejo de
archivos
¡Por fin he terminado!. Debido a cuestiones
ajenas a mi no pude terminar este cursillo mas temprano como
hubiera querido, pero ya esta… asi que ¡Welcome to
Jamaica!… ¡no!, quiero decir ¡Bienvenido al
cursillo de
QuicBASIC!.
Puede que a alguna gente le parezca ridículo que, a
estas alturas del partido y en pleno siglo XXI, todavía
alguien piense en programar en BASIC. Al empezar a escribir este
cursillo no faltó quien me dijera cosas alentadoras como:
"¿para que programas en
BASIC?"; "el Basic ya esta obsoleto"; "mejor haz uno de Delphi o
Visual Basic,
ahora se usa la programación
orientada a objetos"; "en Internet hay miles de
tutoriales de
BASIC"; "ya el BASIC ni existe, ahora se usa Java y C++"
etcétera, etc. Esto me puso a reflexionar y después
de una taza de café y
algo de Hallowen y
Genitallica llegue a las siguientes conclusiones:
- La primera es que hay mucha gente ignorante (que por
desgracia abunda o abundamos ;-)) hablando de cosas que no
sabe. Esa gente que nada conoce y carece del más
mínimo sentido del programador se deja llevar
fácilmente por el efecto que causa la palabra
programación orientada a objetos, sin saber ni
siquiera lo que es un método o
un puntero. - Para aprender programación orientada a objetos es
indispensable tener una muy buena base de
programación estructurada, ya que la programación
orientada a objetos no es más que una parte más
avanzada de esta. - El BASIC llegó para quedarse… bueno, al menos
durante mucho tiempo
más. El BASIC es el lenguaje
que más se ha usado en la historia de la
informática, el lenguaje de
programación más popular y práctico,
el más facil de aprender. - El aprender programación estructurada con
QuickBASIC facilita terriblemente el aprender otros lenguajes
como C o Pascal, lo digo
por experiencia ;-). Además si piensas dedicarte a la
programación profesionalmente, deberás aprender
Visual Basic
como mínimo, y si conoces el BASIC tendrás la
mitad de la pelea ganada d;-).
Este curso se presenta como una herramienta para ayudarte a
INTRODUCIRTE en el mundo de la programación
estructurada y como una manera de aprender un lenguaje de
programación que te servirá como una herramienta
para que TU puedas desarrollar aplicaciones simples como
inventarios,
relaciones de personal,
métodos
numéricos, juegos, etc.
Si eres un usuario de Pascal o conoces C, mejor esfúmate
de aquí porque tal vez esto te parezca aburrido, sin
embargo si tienes curiosidad por el BASIC puedes leerte el curso.
Para este curso estoy basándome en un compilador llamado
Microsoft
QuickBASIC en su versión 4.5, aunque puedes usar el
interprete QBasic e incluso Turbo Basic de Borland, aunque para
que puedas sacarle todo el jugo a este curso sería bueno
que usareis el QuickBASIC.
Puedes buscarlo en Internet utilizando un sabueso como
Altavista o Lycos y tipeando cosas como QB.zip, QBasic, BASIC,
QB45, QuickBASIC, etcétera, etc. Por ahí
saldrá…
Tal vez términos como compilador,
intérprete, programación orientada a objetos
los intuyas pero no sepas lo que significan; sin embargo no
tengas apuro, en la Introducción se explican estos conceptos.
Hasta el capítulo 5 sigo la misma métrica, la cual
se basa en explicar detalladamente cada cosa, comprender lo hecho
e ir describiendo los pormenores de cada cosa, además de
que a lo largo de todos los capítulos incluyo varios
ejemplos probados que puedes copiar y pegar para correrlos. Desde
el capitulo 6 me desligo un poco de pormenorizar y me enfoco mas
a la práctica y a lo objetivo,
imaginándome que fácilmente lo podrás
seguir.
Esta es la "primera edición" de este cursillo, por lo que sin
duda habrá errores y le faltarán muchas cosas, pero
de ti depende que sea la ultima o que haya más.
Envíame tus comentarios y sugerencias a mi
correo, cuya dirección encontrarás al final de
cada capítulo, dime si te gusta, si tengo horrores…
¡digo errores!, si necesita algo, si le sobra, si
vale más darle aire, si es
útil, etc. He decidido crear los capitulos de este
cursillo en formato Word 97 ya que
es el más popular y me permite crear efectos graficos y
tablas facilmente, además que a ti te permitirá
insertar marcadores (Insertar/Marcador…) para que puedas tener
un mejor control si en un
momento dado quieres saber donde te quedaste leyendo en
determinado día, configurar la impresión, insertar
saltos, copiar y pegar los ejemplos, etc.
Este texto se
entrega "tal cual", esto es, sin garantía de ningún
tipo tanto explícita como implícita, no me hago
responsable del uso que le des tanto al material como al caso de
estudio, sin embargo mi intención es que te sirva de
algo.
Este texto esta protegido por las leyes de derechos de
autor, en México y
en otros paises, cualquier modificación y/o distribución ilicita corresponde a
sanciones civiles y/o penales que seran……. ja, ja, jua, (que
dijeron, a este que mosca le pico jeje). Puedes distribuirlo,
copiarlo y/o modificarlo por cualquier medio que te dé tu
regalada gana, siempre y cuando dejes la nota que va al final de
cada capítulo. Gracias 😉
En la actualidad es imprescindible acelerar y automatizar
lo más posible diversas tareas en las empresas,
escuelas, dependencias, así como en nuestra vida diaria.
Tareas como llevar el control del personal de una
compañía, realizar cálculos
matemáticos de manera fiable, rápida y certera;
simular el comportamiento
de una molécula bajo ciertas condiciones, encontrar una
buena receta para cocinar un pato, regular la temperatura de
una habitación, guardar datos de nuestros
amigos, o simplemente matar el tiempo con algún juego, pueden
realizarse mediante un programa de computadora.
Para crear un programa
computacional es necesario conocer un lenguaje de
programación, es decir, la herramienta que nos
ayudará a mediar con los recursos de
la
computadora. En los inicios de la era Informática crear un programa era un
verdadero drama, ya que esto requería de muchísimo
tiempo y dedicación y generaba muy poco. A
continuación vamos a dar un paseíllo a
través de la evolución de los lenguajes de
programación.
EL lenguaje nativo de una computadora se
conoce como "lenguaje máquina" y esta basado en secuencias
de 0 y 1 (código
binario) que le indican a la máquina una cierta
instrucción. Este tipo de programación es
demasiado tedioso y es más lo que consume que lo que
genera. Un método inventado por los programadores para
simplificar esta desgastante tarea fue la creación del
lenguaje ensamblador.
0001, 01010011, 1100, 100110
El lenguaje
ensamblador encierra las diferentes ordenes que se dan con 0
y 1 en un número de instrucciones y símbolos limitado y fácil de
recordar. El lenguaje ensamblador
convierte estas palabras reconocidas y operadores a lenguaje
máquina y a continuación ejecuta el programa. El
problema con este lenguaje radica en que no es portable,
es decir, un programa escrito en lenguaje ensamblador en una
maquina con un microprocesador
de determinado tipo no se puede ejecutar en otra maquina con
diferente microprocesador. Para crear un programa igual para ese
otro CPU, las
instrucciones son diferentes. Ahora, el problema radicaba en
crear un tipo de lenguaje que en una sola sentencia pudiera crear
la misma instrucción para uno y otro procesador. Esto
llevó a los desarrolladores de software a la
creación de los lenguajes de alto nivel.
LES DI, T
MOV BX, WORD PTR ES:[DI]
MOV AX, 4400H
INT 21H
TEST DX, 0080H
Los lenguajes de alto nivel utilizan palabras reservadas
generalmente en inglés
o composiciones de estas para darle ordenes a la máquina;
lo mismo es una orden de alto nivel para un procesador por
ejemplo Pentium, un Cyrix
o un AMD. Los lenguajes de alto nivel se dividen en dos grupos:
Compiladores e intérpretes. Un interprete
generalmente ejecuta las instrucciones del código
fuente (el programa que nosotros escribimos) línea por
línea; es decir nuestro programa no se ejecuta solo, sino
que tiene que ser un programa reconocedor del lenguaje
(intérprete) el que ejecute nuestro programa. En cambio los
compiladores hacen lo siguiente: toman el código fuente,
luego lo convierten en un código o programa objeto
(compilación) -que generalmente tiene una
extensión .obj-
para después combinarlo con las librerías (a
este proceso se le
llama link, linker o enlace) y formar finalmente el
programa en código reconocible por la máquina o
programa ejecutable (con extensión
.exe).
+
Nota: Existen dos
conceptos fundamentales al hablar de programación:
Programación estructurada y programación
orientada a objetos (POO). La programación
estructurada, como su nombre lo dice, estructura un
programa en diferentes subprogramas (que comúnmente se
llaman procedimientos o
funciones) que
hacen cada uno una determinada tarea para el programa en general.
La POO es un tipo de programación estructurada en la que
un programa esta formado por conjuntos de
datos y subprogramas llamados "objetos".
Algunos de los lenguajes de alto nivel más
difundidos son:
FORTRAN: (FORmula
TRANslator, Traductor de fórmulas) Es considerado
por los estudiosos como el primer lenguaje de alto nivel que se
creó. Desarrollado allá por 1954, fue creado
originalmente por IBM para ayudar a los ingenieros y
científicos a trabajar con complejas fórmulas
matemáticas, actualmente se sigue
utilizando en investigación e ingeniería, y cabe mencionar que es muy
utilizado por la NASA en el desarrollo de
varios proyectos.
C: (Llamado así por su
predecesor, el lenguaje B) Es un lenguaje desarrollado por Dennis
Ritchie y Brian Kerninghan en los laboratorios AT&T en E.U,
por ahí de 1974. Es un lenguaje que combina sentencias de
alto y bajo nivel, es muy portable y es utilizado principalmente
por los programadores intermedios-avanzados y avanzados ya que es
un poco más difícil de aprender que otros
lenguajes, aunque es muy productivo y potente. Es muy utilizado y
se considera un excelente lenguaje.
C++: ( Se pronuncia en
español
Se plus plus) Una versión orientada a objetos del
lenguaje C
creada a mediados de los 80’s por Bjarne Strousptrup
también en los laboratorios AT&T, basándose en
la filosofía de la reutilización de código y
una mayor independencia
e integración de procedimientos y funciones.
Se considera excelente lenguaje y es de los más utilizados
para el desarrollo de aplicaciones.
Java: Creado a mediados de los
90’s por la compañía Sun Microsystems
basándose en el C++. Es un lenguaje de POO que es
utilizado principalmente para crear aplicaciones para redes e Internet. Es un
interprete, corre en una "maquina virtual" y es el mejor
considerado actualmente, ya que es totalmente portable. Corre en
todos los sistemas
operativos más usados (Solaris, Linux, Windows, etc.)
y en todas las plataformas (PowerPC, Intel, SPARC, Cyrix,
AMD).
Pascal: (En honor al
matemático francés Blaise Pascal) Fue creado por el
profesor suizo
Niklaus Wirth con el propósito de enseñar
programación estructurada y metódicamente,
allá por 1973. Es un lenguaje imperativo y muy estricto,
fuertemente tipeado y esta muy bien considerado por los
programadores. Se suele enseñar como primer o segundo
lenguaje a principiantes. Aunque existen varias versiones del
Pascal como TMT Pascal y Microsoft QuickPascal, el Pascal
ganó popularidad gracias a Turbo Pascal,
que fue un compilador lanzado al mercado por la
compañía Borland International (ahora Inprise
Corp.) a principios de los
80's. Turbo Pascal era un compilador que se lanzó al
mercado como un experimento, pero resulto ser todo un éxito
ya que era endemoniadamente veloz, valía solo $ 49.99 (US)
y trabajaba en sistemas IBM.
Posteriormente el Turbo Pascal se fue actualizando hasta llegar a
la versión 7.x que soportaba POO desde la versión
5.5, esto sin perder el campeonato en velocidad.
Breve historia del BASIC
BASIC: (Acrónimo de
Begginers All-purpouse Simbolic Instruction Code,
Código de instrucciones simbólicas multiuso para
principiantes) Fue desarrollado por Tomas Kurtz y John Kemeny
en Dartmouth College como un dialecto del Fortran para
enseñar programación de una manera fácil a
los que en ese tiempo (1964) se querían introducir al
mundo de la informática. El BASIC es un lenguaje
"orientado a personas", es el más popular y el más
utilizado en la historia de la informática pero por
desgracia esta muy mal considerado entre los programadores
llamados "profesionales", ya que según ellos se tiende a
hacer programas poco legibles. Cuando recién se crearon
las PC, el lenguaje BASIC se convirtió en la primera
lengua franca
de las computadoras
gracias a Microsoft BASIC, ya que este venía instalado
junto con los ordenadores IBM y su uso era muy fácil. El
lenguaje BASIC es el lenguaje de programación del que se
han creado más versiones y dialectos, pero ganó su
popularidad debido a algunas implementaciones como Apple BASIC
(para computadoras Apple), y sobre todo a GW-BASIC y BASICA
(ambos de Microsoft). Lo malo hasta aquí era que el
lenguaje requería de números de línea, era
un interprete y era miserablemente estructurado.
Posteriormente vinieron dos potentes versiones del BASIC:
Microsoft QuickBASIC y luego Turbo Basic (de Borland). Ambas
versiones presentaban un lenguaje estructurado, considerablemente
mejorado y muy amigable con el programador tanto novato como
avanzado. Aunque debido a tantas versiones que habían
salido del lenguaje BASIC se trato inútilmente de crear un
estándar, este lo vinieron a marcar los BASIC de Microsoft
(como siempre…): BASICA y GW-BASIC. Esto es, todas las
versiones salidas posteriormente "tendrían" que ser
compatibles con BASICA o GW-BASIC. Aunque Turbo Basic y
QuickBASIC eran compatibles con los BASIC de Microsoft, de ambas
versiones la que ganó mas popularidad fue QuickBASIC a
pesar de que nada tenía a que hacer frente a Turbo Basic
en cuanto a velocidad de compilación. Por el otro lado,
QuickBASIC desde la versión 4.0 (hasta donde sé)
contaba con un completo sistema de ayuda
que mejoró sustancialmente en la versión 4.5,
soporte de ratón; capacidad de obtener amplia ayuda,
ejemplos y pormenores sobre una sentencia con solo dar un
clic con el botón secundario del ratón sobre
ella, lo cual resultaba muy útil, cómodo y
amigable. Además contenía otras muchas más
comodidades con respecto al Turbo como tipos de variables
definidos por el usuario, editor inteligente, un gestor de
ventanas, y capacidad de declarar variables y constantes de una
manera más potente. Posteriormente se fue perfeccionando
hasta llegar a su versión 6.0 llamada desde ahí y
hasta la versión 7.1 BASIC PDS (Profesional
Development System, Sistema de desarrollo
profesional). Posteriormente Microsoft distribuyó
junto con las últimas versiones de MS-DOS un
interprete llamado Qbasic, del cual salió la
versión 1.0 y luego la 1.1 que corregía algunas
deficiencias de su predecesor. Cabe aclarar que a raíz de
esto, mucha gente usa el término Qbasic para
referirse a los anteriores compiladores
QuickBASIC. Este intérprete (Qbasic) es compatible con
GW-BASIC, BASICA y QuickBASIC, salvo por algunas cosillas.
Actualmente el lenguaje BASIC es ya estructurado, compilado y
cuenta con gran utilización en las empresas gracias a
Visual Basic, ya que incorpora varias mejoras como por
ejemplo su utilización en procesadores de
texto, hojas de
calculo, bases de datos,
páginas
Web, etc. Como
cultura general, solo mencionaré que Visual Basic es
una potente herramienta basada en el lenguaje BASIC y en la
programación orientada a objetos (POO) que permite
programación pornográfica…¡digo
gráfica! para GüinDOS e Internet, capaz de
desarrollar aplicaciones rápidamente (RAD por sus
siglas en inglés: Rapid Aplication
Development, Desarrollo Rápido de
Aplicaciones) y con un mínimo de código.
Pero a pesar de todo, el propósito fundamental con que
fue creado el lenguaje BASIC fue el servir como instrumento para
enseñar a programar a principiantes de una manera
fácil, y es ideal para aprender rápidamente otros
lenguajes considerados más difíciles como Pascual o
C. Pero bueno, como ya me extendí mucho y hemos
hecho nada, pasemos "a lo que te truje Chencha", que es aprender
a programar (¡yea, vámonos!… d:-)).
SENTENCIAS REM, PRINT, CLS,
END
Escribamos en el editor de QB el siguiente
programa:
rem Simple saludo (saludo.bas)
rem 17/08/2000
cls
print "¡¡¡ BIENVENIDO A QUICKBASIC 4.5
🙂 !!!"
end
¿Qué es lo que hace el programa anterior?.
Presiona <F5>. Nos muestra en la
pantalla el texto "¡¡¡ BIENVENIDO A
QUICKBASIC 4.5 🙂 !!!". Ahora, lo que hace la sentencia
REM (abreviatura de la palabra inglesa remark) es
insertar un comentario dentro de nuestro programa fuente; esto
es, el comentario no será tomado en cuenta por el
compilador, solo sirve para insertar datos que sirvan como
referencia al programa, para saber quien lo hizo, cuándo,
para qué sirve, etc. Es bueno insertar comentarios de
manera regular en nuestros programas como referencia a una orden
o a algo que sea de interés
para nosotros o para quien vaya a utilizar nuestro programa
fuente, especialmente si trabajamos en grupo o
distribuimos nuestras fuentes. Lo
que sigue es la sentencia CLS que borra la pantalla. Es
primordial limpiar la pantalla cada vez que iniciemos un
programa, esto para poder trabajar
mejor y que se vea más sexy. Para los que todavía
no capich, PRINT es la orden que nos permite la salida por
la pantalla, en este caso es la cadena de texto
¡¡¡ BIENVENIDO A QUICKBASIC 4.5 😉 !!!.
Cuando queremos que con la orden PRINT salga texto, este ha de ir
entre comillas dobles ("").
Para los que no estén familiarizados con los
smailis o "emoticones", estos son formas de representar
expresiones por medio de caracteres; son muy utilizados en el
chat para
"ahorrar" tiempo y escribir menos. Por ejemplo el emoticón
;-) de lado parece una carilla guiñando un ojo,
¿ya capik?. Cada quién puede crear sus emoticones
según tenga imaginación, algunos que yo uso son
:
🙂 Carita sonriente
<:-) De party
0:) Niño bueno
😉 Guiñando un ojo
:.-( Llorando
🙁 Tristeza
(.) (.) Busto
:-0 Asombro
d:) Cachucha de lado
:^ Un respiro
]:-> Diablillo
😡 Me voy a callar
:-I Serio
–ß
ß @ Una
flor
:-{ Alguien con bigote
Dejémonos de emoticones y sigamos; la sentencia
END nos indica que nuestro programa ha
terminado.
Ahora analicemos este otro programa:
REM Salida de texto con color
(saludo2.bas)
CLS
COLOR 10 ‘Color verde brillante
PRINT "¡¡¡ BIENVENIDO A QUICKBASIC 4.5
:)!!!"
END
En realidad este programa hace lo mismo que el anterior,
solo que el texto sale con un color verde. La sentencia
COLOR nos permite dar color al texto que saldrá por
la pantalla:
Sintaxis:
COLOR principal [,de fondo] [,de borde]
- El color principal va del 0 al 15 y del 16 al 31 con
parpadeo. - El color de fondo es opcional y va del 0 al
7 - El color de borde es opcional y va del 0 al
15
Pero ¿qué es ese ‘ y el texto
que esta enseguida?. Como se puede adivinar, el apóstrofe
(‘) es otra manera de insertar un comentario y es lo
mismo que REM.
Si sales a DOS cuando termines de ejecutar el programa,
verás que el prompt quedará del color del texto
(verde). Para que el símbolo de DOS quede con su color
original, solo hay que agregar COLOR 7 (Gris) o CLS antes de END,
solo que si le aplicamos el CLS es obvio que el texto que
imprimimos se borrará inmediatamente antes de terminar el
programa. Luego veremos como mejorarlo.
CARACTERES Y
OPERACIONES
BÁSICAS
Veamos ahora como realizar las operaciones más
básicas:
REM Manejo de operadores (operador.bas)
numero1 = 5
numero2 = 5
suma = numero1 + numero2
multi = numero1 * numero2
divi = numero1 / numero2
resta = numero1 – numero2
expo = numero1 ^ numero2
CLS
PRINT "La suma de"; numero1; "más"; numero2; "es
igual a"; suma
PRINT "El producto de";
numero1; "por"; numero2; "es igual a"; multi
PRINT "El cociente de"; numero1; "entre"; numero2; "es
igual a"; divi
PRINT "La resta de"; numero1; "menos"; numero2; "es
igual a"; resta
PRINT "El resultado de elevar"; numero1;"a la"; numero2
;"es"; expo
END
Como se puede apreciar en el ejemplo anterior, hacemos 5
operaciones básicas con 2 números ambos iguales a 5
y guardamos el resultado en cuatro variables cuyo nombre
indica más o menos que operación se hizo con los
números. Luego imprimimos en la pantalla 4 mensajes
alusivos a las diversas operaciones que realizamos utilizando las
variables numero1 y numero2. Cuando imprimimos
variables, estas no van entre comillas ya que si las
ponemos entre comillas QB las entenderá como si fueran
texto e imprimirá solo el nombre de la variable. Por esto
pusimos punto y coma (;) para diferenciarlas del texto y
además indicar que después del texto se deje un
espacio para que no se amontone el número con el texto
anterior o siguiente.
Veamos este otro ejemplo:
REM Manejo PRINT y variables (prin1var.bas)
numero1 = 5
numero2 = 27
CLS
PRINT "El primer número es igual a";
numero1
PRINT "El segundo número es igual a";
numero2
PRINT "La suma de ambos es igual a"; numero1 +
numero2
END
Como podemos ver, también podemos realizar
operaciones dentro de la misma sentencia PRINT y no hay
purrún. Las operaciones básicas son las
siguientes:
Operador | Función |
* | Multiplicación |
+ | Suma |
– | Resta |
^ | Exponenciación |
/ | División |
Existe también el operador
MOD que da el residuo de una división de dos
números enteros hasta donde el cociente es entero. Por
ejemplo 14 MOD 5 retorna 4:
Hasta aquí el cociente es entero y el
residuo es 4.
Si por ejemplo ponemos 14 MOD 4.6, entonces 4.6
será redondeado a 5 ya que no podemos utilizar
reales con MOD, solo enteros.
También existe el operador división
entera que se representa por la diagonal invertida ()
y cuya función es
obtener el cociente entero de una división. Siguiendo con
el ejemplo anterior, 14 5 retornara 2:
Hasta aquí el cociente es
entero.
Ahora analicemos el siguiente ejemplo:
REM Manejo de operadores (triangu.bas)
baze = 10 ‘Debe ser baze y no base.
Ojo…
altura = 5
CLS
PRINT "El área de un triángulo cuya base
mide"; baze;
PRINT "y cuya altura mide"; altura; "es:"
PRINT baze * altura / 2
END
Como podemos apreciar, el punto y coma al final
de una sentencia PRINT sirve para juntar en una misma
línea de la pantalla otra sentencia PRINT que esta en otro
renglón en nuestra fuente. ¿Si ponemos una coma
(,) en vez de punto y coma que pasará?. Ponle (,)
en vez de (;) y córrelo (<F5>). Como puedes ver, lo
que esta después de una coma se separa una
tabulación (generalmente 7 espacios).
El modificador TAB(n) va después de PRINT
y nos permite colocar texto en una determinada posición
del renglón en uso, y donde n es la posición donde
queremos que se empiece a imprimir nuestro texto:
REM Uso de TAB (tab.bas)
CLS
PRINT TAB(3); "Hello, world!"
PRINT TAB(23); "¡Hola, mundo!"
END
Aquí el texto Hello, world! se
imprimirá después de 3 espacios, y el texto
¡Hola mundo! en otro renglón y desde la
posición 23.
+
Nota: La pantalla en modo
texto consta de 70 columnas y 25 renglones.
Los tipos de datos
que se manejan en QuickBASIC son los siguientes:
Nombre | Descripción | Rango | Declaración | Espacio en |
Integer | Entero corto con signo | -32768 a 32767 | % | 2 bytes (16 bits) |
Long | Entero largo con signo | -2,147,483,648 a 2,147,483,647 | & | 4 bytes (32 bits) |
Single | Real de simple precisión con signo y con 7 | 1.5 E-45 a 3.4 E38 | ! | 4 bytes (32 bits) |
Double | Real de doble precisión con signo y 15 | 5.0 D-324 a 1.7 D308 | # | 8 bytes (64 bits) |
String | Cadena de caracteres | 0 a 256 caracteres | $ | 1 byte p/caracter |
Por default, todas las variables que utilizamos sin
declarar el tipo se asumen como Single.
Pero…¿Cómo declaramos los tipos de las
variables?. Para declarar, por ejemplo, una variable que vaya a
almacenar una dirección de una persona (por lo
tanto será de tipo String) que se llame
direccion la declaramos de la siguiente forma:
direccion$ = "Morelos y 4ª S/N, Barrio El
Paso Blanco"
Para declarar una variable de un tipo basta con poner
el identificador al final. Ahora, cuando nosotros guardamos
una cadena de texto en una variable de tipo String, el texto debe
de ir entre comillas dobles ("").
Para declarar una variable de tipo real, por ejemplo de
simple precisión (Single) y que vaya a guardar el numero
5.123 x 1024 la declaramos de la siguiente
forma:
numero! = 5.123E24
Ahora una de doble precisión (Double) que se
llame numero2 y que tenga el valor
de
1.45877 x 10-298
numero2# = 1.45877D-298
+
Observación: Para
declarar un exponencial en una variable Single utilizamos
E y para declararlo en una variable de tipo Double
utilizamos D.
'————–
'Ejemplo de tipos de datos (tipos.bas)
'————–
cadena$ = "Soy una cadena "
enterocorto% = 1200
enterolargo& = 198108
simplereal! = 1.5688
doblereal# = 3.458D+301
CLS
PRINT cadena$
PRINT "Yo soy un entero corto:"; enterocorto%
PRINT "Yo soy un entero largo:";
enterolargo&
PRINT "Yo soy un real simple:"; simplereal!
PRINT "Yo soy un real doble:"; doblereal#
END
RESTRICCIONES Y
NOTAS IMPORTANTES
Una de las ventajas y a la vez desventaja que tiene
el lenguaje BASIC frente a otros lenguajes de programación
es que podemos crear variables en cualquier parte del programa
según las vayamos necesitando. Cuando creamos una nueva
variable, QB automáticamente reserva un espacio en
memoria para
almacenar el valor de esa variable, en el caso de los
números la variable almacena un 0 y en el caso de las
cadenas se almacena la cadena nula (""). Esta es un arma de dos
filos ya que podemos caer en errores como el
siguiente:
numeroquevalepi=3.141592
CLS
PRINT "El valor de pi es";
numeroqevalepi
END
Nosotros declaramos una variable (Single por default)
que se llama numeroquevalepi y que almacena el valor
3.141597 y al tratar de imprimirla escribimos mal el nombre de la
variable y ponemos numeroqevalepi (sin la u) y lo que
hicimos fue crear una nueva variable que por default toma el
valor de 0 en memoria, así lo que se imprimirá en
pantalla será:
El valor de pi es 0
Esta es la "desgracia" que tiene marcado al lenguaje
BASIC y la mayor causa por la cual esta mal considerado entre los
programadores "profesionales". Esto en programas cortos es
fácil de detectar, pero en programas largos es un poco
más difícil; aun así, esto permite una
programación más fluida, y es ideal para usar
variables "sobre la marcha", cosa que no tienen otros lenguajes
como Pascual o Modula-2. Con la práctica es muy
fácil de detectar este tipo de errores.
Por fortuna Mocosoft…¡digo Microsoft!,
pensó en esto y agregó la opción de
requerir la declaración de las variables en el Visual
Basic; o sea, si una variable es hallada en el programa y no
tiene declaración, se marca un error.
Bueno, pero eso es otra historia.
Otra observación es que no podemos usar
palabras reservadas para nombrar una variable, por ejemplo,
no podemos utilizar una variable que se llame Print, Base, Rem,
Cls, End, Len, Right$, Color, etc. ni en mayúsculas ni en
minúsculas; tambien las variables no pueden empezar por
un número o por un identificador de tipo como #perro,
!cosa, 3cadenas, etc., ni tener espacios,
operadores, la ñ o el guión
bajo (_).
Una manera más fácil de declarar el tipo
de una variable es con DIM.
Permite la declaración de variable de un tipo
determinado.
'————–
'Ejemplo de tipos de datos usando DIM
(tipos2.bas)
'————–
DIM cadena AS STRING
DIM enterocorto AS INTEGER
DIM enterolargo AS LONG
DIM simplereal AS SINGLE
DIM doblereal AS DOUBLE
cadena = "Soy una cadena "
enterocorto = 1200
enterolargo = 198108
simplereal = 1.5688
doblereal = 3.458D+301
CLS
PRINT cadena$
PRINT "Yo soy un entero corto:"; enterocorto
PRINT "Yo soy un entero largo:"; enterolargo
PRINT "Yo soy un real simple:"; simplereal
PRINT "Yo soy un real doble:"; doblereal
END
La orden DIM permite una mejor manera de declarar
variables y evita tener que poner los identificadores de tipo
cada vez que la utilicemos, lo cual ahorra una muy tediosa tarea
en programas largos.
+
Nota: Si estas utilizando
Turbo Basic (de Borland) no puedes declarar variables de esta
manera.
ENTRADA DE DATOS: LA ORDEN INPUT
Hasta ahora hemos visto como guardar valores y como
sacarlos por la pantalla, ahora vamos a ver dejar que el usuario
los introduzca:
' Ejemplo de INPUT (input.bas)
CONST pi = 3.1416 ' Con CONST se declara una
constante cuyo valor no
' cambiará durante el programa (solo
QB).
CLS : COLOR 10 ' Podemos utilizar mas de dos ordenes en
una misma línea
' separándolas por dos puntos (:).
PRINT TAB(33); "AREA DE UN CIRCULO"
PRINT : PRINT
COLOR 7
INPUT "¿Cuál es el radio del
círculo"; radio
area = pi * (radio ^ 2)
PRINT "El área del circulo es"; area
END
La sentencia INPUT se compone por:
- Un letrero (opcional) entre comillas, seguido de un
(;) que le pondrá un signo de interrogación al
final del letrero al salir por la pantalla. - Una o más variables donde se almacenaran
valores.
En el caso de que queramos que el usuario nos dé
2 o más mas valores en una misma sentencia INPUT se hace
de la siguiente manera:
' Ejemplo de INPUT con mas de un valor
(input2.bas)
CLS : COLOR 10
PRINT TAB(33); "AREA DE UN TRIANGULO"
PRINT : PRINT
COLOR 7
INPUT "Introduzca la base y la altura del
triángulo (separados entre sí por una coma) =>
", b, h
a = (b * h) / 2
PRINT "El área del triángulo es"; a :
END
Si no queremos que aparezca un signo de
interrogación (?) al final de nuestro letrero debemos
ponerle una coma (,) . Para almacenar más de una variable
en una misma sentencia INPUT, estas deben ir separadas entre
si por comas; de igual manera el usuario debe de introducir
los datos que se le piden separados entre si por una coma. Por
ejemplo, si el programa anterior pide
Introduzca la base y la altura del triángulo
(separados entre sí por una coma) => _
El usuario puede introducir
5.6, 4
CAPITULO II
SENTENCIAS DE CONTROL SELECTIVAS
Los operadores relacionales nos sirven para
determinar la relación que tiene una
expresión con otra. Los operadores relacionales que
manejaremos en QB son los siguientes:
Operador o | Significa | Ejemplo | Se lee |
= | Igual que | x = y | x igual a y |
< | Menor que | x < y | x menor que y |
> | Mayor que | x > y | x mayor que y |
<= | Menor o igual | x <= y | x menor o igual a y |
>= | Mayor o igual | x >= y | x mayor o igual a y |
<> | Diferente de | x <> y | x diferente de y |
Muchas veces se nos presentan situaciones en las que
tenemos que evaluar una condición o situación. Si
la condición es verdadera o "cumple", entonces ejecutamos
una o más instrucciones; si no, ejecutamos otra u otras
instrucciones. Veamos el siguiente ejemplo:
CLS
PRINT TAB(20); "VALIDA SI UN NUMERO ES NEGATIVO O
POSITIVO"
PRINT : PRINT
INPUT "Introduce un entero -> ", numero
IF numero < 0 THEN
PRINT "El número es negativo"
ELSE
PRINT "El número es positivo"
END IF
END
El programa anterior valida si un entero es positivo o
negativo de la siguiente forma:
- El programa pide un número.
- Si (if) el numero introducido es menor que cero
(esta es la condición a evaluar) entonces (then)
se imprime el mensaje "El número es
negativo". - Si no (else) es negativo, entonces se imprime el
mensaje "El número es positivo".
Un bloque de instrucciones
IF…THEN…ELSE debe terminar siempre con
END IF para indicar que nuestro proceso de selección
IF ha terminado. Ahora, las condiciones que se manejan en las
sentencias IF pueden ser verdaderas (True, en
inglés) o falsas (False). Si por ejemplo corremos
el programa anterior y al pedirse el numero nosotros introducimos
un –1, entonces la sentencia IF verá que la
condición es verdadera (en efecto el número es
menor que 0) y ejecutará la sentencia o sentencias que
siguen al IF hasta encontrar el ELSE, luego se pasará
hasta el END IF para luego seguir con el curso del programa. De
otra forma si nosotros introducimos un 81, entonces la sentencia
IF verá que las condición es falsa (false) y no
ejecutará las sentencias que le siguen, luego se
pasará hasta la sentencia ELSE y se ejecutaran las
sentencias que le siguen hasta que termine el bloque (END IF),
para luego continuar el curso del programa.
Las condiciones suelen también ser afectadas por los
operadores lógicos. Los operadores lógicos
nos sirven para evaluar condiciones tales como:
- "Si numero1 no es igual
a cero entonces…"
(IF NOT numero1 = 0 THEN…)
- "Si numero1 es igual a cero o menor a 1 entonces…"
(IF numero1 = 0 OR numero1 > 1
THEN…)
- "Si numero1 es igual a 1 y numero2 es menor que cero
entonces…"
(IF numero1 = 1 AND numero2 < 0
THEN)
- "Si numero1 es igual a cero ó menor que 0
entonces…"
(IF numero1 = 0 XOR numero <= 0
THEN)
Valores de: | Valor retornado por el operador | ||||||
X | y | NOT x | x AND y | x OR y | x XOR y | x EQV y | x IMP y |
V | v | f | v | v | f | v | V |
V | f | f | f | v | v | f | F |
F | v | v | f | v | v | v | F |
F | f | v | f | f | f | v | V |
Para que esto quede más claro que el agua de "El
Tintero", veamos estas expresiones cotidianas que nos
ayudarán a ver más claro que son los operadores
lógicos:
NOT
Una chica le pregunta a otra:
- "¿Vas a ir al baile?. La otra
contesta: - No, no iré.
- Si no vas al baile no verás a Fernando
Antonio Del Valle Santiesteban…
Aquí si la chica no va al baile, entonces no
podrá ver a Fernando A. Del V. Santiesteban. Si va,
entonces lo verá.
INPUT "¿Irá Petra al baile (si = 1, no =
0)?. Introduzca un número"; baile
si = 1
no = 0
IF NOT baile = si THEN
PRINT "No verá a Fernando"
ELSE
? "Verá a Fernando" ‘ El signo ? es lo
mismo que PRINT
END IF
END
AND
Una persona va a sacar la cartilla y la
secretaría le dice:
- Necesitas el acta de nacimiento original y un
comprobante de domicilio.
Para que esa persona pueda obtener su cartilla necesita
el acta y un comprobante de domicilio. Si le falta
cualquiera de estos papeles entonces no se la
dan.
PRINT "Introduzca la respuesta siendo SI = 1 Y NO =
0
INPUT "¿Trajo el acta de nacimiento -> ";
acta
INPUT "¿Trajo el comprobante de domicilio ->
"; domicilio
si = 1
no = 0
IF acta = si AND domicilio = si THEN
PRINT "Toma tu cartilla"
ELSE
PRINT "Vaya por lo que le falta y vuelva cuando tenga
todos los papeles"
END IF
END
OR
El escuincle a la mamá en la
nevería:
- ¿Mamá me compras una
nieve?. La mamá le dice - De cual quieres hijo, de fresa o de
limón. El escuincle goloso le
contesta: - Quiero de las dos.
- Esta bien hijo.
Aquí si el escuincle escoge de fresa, de
limón o de ambas, de todas maneras comerá
nieve.
INPUT "¿Quieres nieve de fresa (si = 1, no = 0)";
fresa
INPUT "¿Quieres nieve de limón (si = 1, no
= 0)"; limon
si = 1
no = 0
IF fresa = si OR limon = si THEN
PRINT "Toma tu nieve"
ELSE
PRINT "No comerás nieve" ‘ Si el lepe
quisiera "otro sabor" o no quisiera ninguna de las dos
END IF
END
A este tipo de o se le llama o inclusivo, ya que
puede incluir a ambos.
XOR
El escuincle le dice a la mamá en la
nevería:
- ¿Mamá me compras una nieve?. La
mamá le dice: - De cual quieres hijo, de fresa ó de
limón. El escuincle goloso le
contesta: - Quiero de las dos.
- No, hijo: fresa ó limón, de las dos
no.
? "Escoge solo un sabor (si = 1, no = 0)
INPUT "¿Quieres nieve de fresa"; fresa
INPUT "¿Quieres nieve de limón";
limon
si = 1
no = 0
IF fresa = si XOR limón = si THEN
‘ Si fresa y limón son si, la
condición no se cumple (XOR retorna false) y por lo tanto
no se ejecuta.
? "Toma tu nieve" ‘ Si el lepe quiere solo alguna
de las dos
ELSE
? "Fresa o limón pero no de las dos o de
otra
END IF
END
A este ó le llamamos también ó
exclusivo porque excluye a una
opción.
EQV
Cuando aumenta la temperatura, todos los metales se
dilatan en proporción a su respectivo coeficiente de
dilatación.
CLS
INPUT "¿Aumentó la temperatura (si = 1, no
= 0)"; temp
INPUT "¿Se dilató la varilla (si = 1, no
=0)";delta
si = 1
no = 0
IF temp = si EQV delta = si THEN
PRINT "Correcto :-)"
ELSE
PRINT "Mentiroso ;-)"
END IF
END
IMP
"Si estudias para el examen pasarás". Aquí
estamos afirmando que si se estudia, entonces se
pasará.
CLS
? "si = 1, no = 0"
INPUT "¿Estudiaste ->"; estudiar
INPUT "¿Pasaste el examen ->";
examen
si = 1
no = 0
IF estudiar = si IMP examen = si THEN
? "Si te creo"
ELSE
? "Es difícil que alguien que estudie repruebe un
examen"
END IF
END
+
Nota: Puede que alguien
piense en cosas como que pasaría si tuviéramos algo
como
a = x AND y
en un programa. En este caso los operadores
lógicos producen operaciones binarias entre
los valores de
las variables; esto es, operaciones al nivel de ceros y
unos.
Dentro de un programa podemos evaluar ciertas
condiciones utilizando sentencias IF dentro de más
bloques IF…THEN…ELSE. A este conjunto de sentencias agrupadas
se les llama "IF anidados".
CLS
INPUT "Introduce un número del 1 al 10-> ",
n
PRINT "El número introducido fue ";
COLOR 10
IF n < 5 THEN
IF n = 1 THEN PRINT "uno"
IF n = 2 THEN PRINT "dos"
IF n = 3 THEN PRINT "tres"
IF n = 4 THEN PRINT "cuatro"
ELSE
IF n = 5 THEN PRINT "cinco"
IF n = 6 THEN PRINT "seis"
IF n = 7 THEN PRINT "siete"
IF n = 8 THEN PRINT "ocho"
IF n = 9 THEN PRINT "nueve"
IF n = 10 THEN PRINT "diez"
END IF
COLOR 7
END
El programa anterior simplemente divide los posibles
valores de n en dos partes: los números menores que 5, y
los números iguales o menores que 5. En el ejemplo
podemos ver algunas cosillas:
- La sentencias IF pueden ejecutarse sin necesidad
de que haya un ELSE después. O sea, si la sentencia
se cumple la orden se ejecuta y si no, no pasa
nada. - Si la sentencia IF solo tiene una orden que
ejecutar, esta puede ir inmediatamente después del
THEN. - El END IF solo se pone cuando existe un bloque
IF…THEN..ELSE, o cuando existe un IF que si se cumple
ejecutará varias instrucciones, sin que después
haya un ELSE; esto es:
IF condición THEN
instrucción 1
instrucción 2
instrucción 3
…
instrucción n
END IF
Ahora veamos un ejemplo algo más
"complejo":
CLS
PRINT "PROGRAMA QUE DETERMINA SI UN CARACTER
ES:"
PRINT "1) Letra minúscula de 'a' hasta 'e'
"
PRINT "2) Letra mayúscula de 'A' hasta 'E'
"
PRINT "3) Numero del 1 al 5"
PRINT "4) Operador matemático"
PRINT "5) Otro caracter"
COLOR 7
INPUT "Introduce un caracter -> ", c$
PRINT "El caracter introducido es ";
COLOR 10
IF c$ = "1" XOR c$ = "2" XOR c$ = "3" XOR c$ = "4" XOR
c$ = "5" THEN
PRINT "número"
ELSE
IF c$ = "+" XOR c$ = "-" XOR c$ = "*" XOR c$ = "/" XOR
c$ = "" XOR c$ = "^" THEN
PRINT "operador matemático"
ELSE
IF c$ = "a" XOR c$ = "b" XOR c$ = "c" XOR c$ = "d" XOR
c$ = "e" THEN
PRINT "letra minúscula"
ELSE
IF c$ = "A" XOR c$ = "B" XOR c$ = "C" XOR c$ = "D" XOR
c$ = "E" THEN
PRINT "letra mayúscula"
ELSE
PRINT "otro caracter diferente de letra (a – e),
número (1 – 5) u operador
matemático"
END IF
END IF
END IF
END IF
END
- Como el caracter introducido solo puede ser uno
particular usamos XOR. - Existen bloques IF…THEN…ELSE
anidados. - Si un IF no se cumple, entonces se salta al ELSE
inmediato que da lugar a otro IF. - Cada bloque IF…THEN…ELSE termina con el END IF
que le queda más cerca. Por ejemplo, el ultimo bloque
IF…THEN…ELSE termina con el primer END IF; luego, el bloque
que contenía a este bloque, termina con el segundo END
IF, y así sucesivamente.
Si lo ejecutas paso por paso (F8), verás mejor
como funciona.
En pocas palabras, ELSEIF es un "IF
inmediatamente después de un ELSE" o también lo
podemos definir como "un ELSE que evalúa una
condición". Veamos el ejemplo anterior usando
ELSEIF.
INPUT "Introduce un caracter -> ", c$
PRINT "El caracter introducido es ";
COLOR 10
IF c$ = "1" XOR c$ = "2" XOR c$ = "3" XOR c$ = "4" XOR
c$ = "5" THEN
PRINT "número"
ELSEIF c$ = "+" XOR c$ = "-" XOR c$ = "*" XOR c$ = "/"
XOR c$ = "" XOR c$ = "^" THEN
PRINT "operador matemático"
ELSEIF c$ = "a" XOR c$ = "b" XOR c$ = "c" XOR c$ = "d"
XOR c$ = "e" THEN
PRINT "letra minúscula"
ELSEIF c$ = "A" XOR c$ = "B" XOR c$ = "C" XOR c$ = "D"
XOR c$ = "D" THEN
PRINT "letra mayúscula"
ELSE
PRINT "otro caracter diferente de letra (a – e),
número (1 – 5) u operador
matemático"
END IF
END
- La sentencia ELSEIF es también una parte
opcional de un bloque IF…THEN…ELSE. Podemos
también tener uno o varios ELSEIF dentro de un solo
bloque IF…THEN…ELSE - Si el primer IF no se cumple, QB
automáticamente va hasta el ELSEIF donde la
condición se cumple y evalúa las ordenes que
están después de este hasta que se topa con otro
ELSEIF, entonces saldrá del bloque
IF…THEN…ELSE. - Si ni el IF ni los ELSEIF se cumplen, entonces el
programa se va hasta ELSE.
ELSEIF constituye una manera muy potente de evaluar
condiciones.
ERRORES
FRECUENTES Y CONSIDERACIONES
- Como ya vimos anteriormente, podemos tener programas
como el siguiente en el que haya IF "sueltos", es decir, sin
ELSE y sin END IF.
CLS
INPUT "Un número (1 – 4) -> ",
n
IF n < 3 THEN
IF n = 1 PRINT "uno"
IF n = 2 PRINT "dos"
ELSE
IF n = 3 PRINT "tres"
IF n = 4 PRINT "cuatro"
END IF
END
- Sin embargo, no debemos poner ELSE "sueltos"
(o colgantes), es decir, sentencias ELSE que vayan
después de otras sentencias ELSE y que además
no contengan ninguna condición a evaluar, es
decir, que no contengan un IF después de
ellas:
CLS
INPUT "Número (1-3) -> ", n
IF n = 1 THEN
PRINT "uno"
ELSE
PRINT "dos"
ELSE ‘ No hay
condición a evaluar, solo una orden PRINT
enseguida.
PRINT "tres"
END IF
END
Lo que hará el programa anterior es evaluar el
IF, si se cumple se saltará el primer ELSE pero no el
segundo y lo ejecutará. Luego si hubiera más
ELSE "sueltos", ejecutará uno no y otro
sí,
uno no y otro sí, así sucesivamente. En el
caso de que la condición no se cumpliera, se
ejecutará
el primer ELSE y se saltará el siguiente hasta
terminar el bloque. Si hubiera mas ELSE se saltaría el
siguiente ELSE y ejecutaría el otro, se salta uno y
ejecuta el otro, y así sucesivamente. Lo correcto
podría ser:
CLS
INPUT "Número (1-3) -> ", n
IF n = 1 THEN
PRINT "uno"
ELSEIF n = 2 THEN
PRINT "dos"
ELSEIF n = 3 THEN
PRINT "tres"
ELSE
PRINT "fuera de rango"
END IF
END
- Un error que se comete muy frecuentemente cuando se
anidan IF es que nos falte poner un END IF.
Ejemplo:
CLS
PRINT "PROGRAMA QUE DETERMINA SI UN CARACTER
ES:"
PRINT "1) Letra minúscula de 'a' hasta 'e'
"
PRINT "2) Letra mayúscula de 'A' hasta 'E'
"
PRINT "3) Numero del 1 al 5"
PRINT "4) Operador matemático"
PRINT "5) Otro caracter"
COLOR 7
INPUT "Introduce un caracter -> ", c$
PRINT "El caracter introducido es ";
COLOR 10
IF c$ = "1" XOR c$ = "2" XOR c$ = "3"
XOR c$ = "4" XOR c$ = "5" THEN
PRINT "número"
ELSE
IF c$ = "+" XOR c$ = "-" XOR c$ = "*"
XOR c$ = "/" XOR c$ = "" XOR c$ = "^" THEN
PRINT "operador matemático"
ELSE
IF c$ = "a" XOR c$ = "b" XOR c$ = "c"
XOR c$ = "d" XOR c$ = "e" THEN
PRINT "letra minúscula"
ELSE
IF c$ = "A" XOR c$ = "B" XOR c$ = "C"
XOR c$ = "D" XOR c$ = "E" THEN
PRINT "letra mayúscula"
ELSE
PRINT "otro caracter diferente de letra (a – e),
número (1 – 5) u operador
matemático"
END IF
END IF
END IF
‘ aquí falta un END IF indice
END
QuickBASIC nos marcará el error "bloque IF sin
END IF"
Una cosa que yo hago para evitar este error es escribir
el bloque completo y dentro de este ir escribiendo las
instrucciones que se vayan necesitando. Sería bueno que te
acostumbrarás a esta práctica d;-).
SELECCIÓN MÚLTIPLE: SELECT
CASE
Aquí utilizaremos una sentencia nueva: el bloque
SELECT CASE. El bloque SELECT CASE nos sirve para
seleccionar de entre múltiples valores que pudiera tener
una expresión.
Veamos el siguiente ejemplo:
CLS
PRINT "1) Opción 1"
PRINT "2) Opción 2"
PRINT "3) Opción 3"
INPUT "Escoge una opción -> ", op
SELECT CASE op ‘ Seleccionamos valor de
op:
CASE IS = 1 ‘ Si la opción introducida es
la 1…
PRINT "Escogiste la opción 1"
CASE IS = 2 ‘ Si la opción introducida
es la 2…
PRINT "Escogiste la opción 2"
CASE IS = 3 ‘ Si la opción introducida
es la 3…
PRINT "Escogiste la opción 3"
CASE ELSE ‘ Si la opción no es ninguna de
las anteriores…
PRINT "Escogiste una opción no
válida"
END SELECT ‘ Fin de seleccionar valor
END
El ejemplo anterior nos presenta un pequeño
menú con 3 opciones a escoger, luego selecciona los
posibles valores que pudiera tener la variable ‘op’
(SELECT CASE op); si escogemos la opción 1, y por tanto le
damos a la variable ‘op’ el valor de uno, entonces se
ejecutaron las instrucciones que corresponden al caso de
que la variable sea igual a 1 (CASE IS = 1), si escogemos la
opción 2, entonces se ejecutarán las instrucciones
que corresponden al caso de que la variable sea igual a 2 (CASE
IS = 2), etc.
Dentro de cada caso que tenga la expresión
podemos ejecutar una o más instrucciones, incluyendo
bloques IF…THEN…ELSE y anidar bloques SELECT CASE si nos
fuera necesario.
CLS
DIM edad AS INTEGER
PRINT "Las edades del hombre
(masculino)"
INPUT "Introduce tu edad -> ", edad
SELECT CASE edad
CASE IS <= 9
PRINT "Eres un niño!"
PRINT "Vivirás muchos años"
CASE IS <= 12
PRINT "¡Eres un púbero!"
PRINT "Estas en la edad de la punzada"
CASE IS <= 18
PRINT "Eres un adolescente"
PRINT "Estas en la edad del mono: te mantienes pelando
la banana…"
CASE IS <= 30
PRINT "Eres un joven"
PRINT "Estas en la edad del colibrí: nada
más picando florecitas…"
CASE IS <= 45
PRINT "Ya eres un adulto (???)"
PRINT "Estas en la edad del león: no se te va
nada…"
CASE IS <= 60
PRINT "Ya has vivido muuucho"
PRINT "Estas en la edad del loro: habla mucho y no hace
nada"
CASE IS <= 80
PRINT "Viejos los cerros… y todavía
enverdecen"
PRINT "Estas en la edad del cóndor: con dolor
aquí, con dolor allá…"
CASE IS < 100
PRINT "Sin comentarios…"
CASE IS >= 100
PRINT "No ma…no, otra de esas y…"
PRINT "Si te la creo te empicas"
END SELECT
El caso ELSE (CASE ELSE) es opcional.
SENTENCIAS DE CONTROL
REPETITIVAS
Ahora veamos como podemos repetir partes de un
programa mientras que cierta condición se cumpla o
sea verdadera…
' Ejemplo de WHILE… WEND
' Calcula áreas de 5 círculos
CONST pi = 3.1416
CLS
PRINT TAB(30); "AREA DE 5 CIRCULOS"
contador = 0 ' Inicializamos el contador
WHILE contador < 5 'Inicio del ciclo. Contador < 5
porque empezamos en cero
INPUT "Radio -> ", radio
PRINT "El área es"; pi * radio * radio
contador = contador + 1 ' El contador se incrementa en
1
WEND ' Seguir
END
El bloque WHILE ("mientras")… WEND
("seguir") nos sirve para que mientras una condición se
cumpla (en este caso, mientras contador < 5) repetir
una serie de instrucciones, desde donde empieza el WHILE hasta
que se encuentre el WEND. En este tipo de ciclos o bucles
generalmente el valor de la condición ya ha sido
inicializado desde antes de entrar al ciclo (contador =
0) y se incrementa dentro del ciclo (contador =
contador + 1). El ciclo se ejecutará mientras la
condición sea verdadera, por lo que si desde antes de
entrar al bucle la condición ya es falsa, el programa no
ejecutará el ciclo. Veamos…
' Ejemplo de un bucle WHILE…WEND que no se
ejecutará
i = 0
CLS
WHILE i = 1 ' Mientras i = 1…pero como i = 0 y no
igual a 1…
PRINT "HOLA"
i = i + 1
WEND
PRINT "Fin del programa"
END
+
Nota: Si lo ejecutas paso
a paso <F8> verás mejor la secuencia.
También podemos caer en ciclos
infinitos; esto es, ciclos que no tengan fin y
terminarán nunca…
' Ejemplo de un bucle WHILE…WEND infinito
i = 1 ' Inicializamos la variable
CLS
WHILE i = 1 ' Mientras i = 1…
PRINT "HOLA, MUNDO…"
WEND '…
PRINT "Fin del programa"
END
+
Nota: Para poder salir de
un bucle infinito debemos utilizar la combinación de
teclas CTRL + Pause o CTRL + Scroll. En Turbo Basic
asegúrate de la opción Keyboard Break del
menú Optionseste en ON.
¿Qué podemos observar en el programa
anterior? En efecto el programa entrará en el ciclo ya que
la condición es verdadera (i = 1), pero i
siempre será igual a 1 ya que no hay nada que la modifique
dentro del bucle y así poder dar una salida. Este tipo de
errores suele ocurrir si por ejemplo…
' Ejemplo de un bucle WHILE…WEND infinito por error
interno
cont = 1 ' Inicializamos la
variable
CLS WHILE cont
= 1 ' Mientras cont = 1…
PRINT "HOLA, MUNDO…"
cont = con + 1 ‘ ¿¿ con ??.
Si con = 0, entonces cont = 0 + 1 = 1 (:-O)
WEND ' …
PRINT "Fin del programa"
END
También no necesariamente tiene que ser un
incremento el que nos dé la salida…
' Ejemplo de un bucle WHILE…WEND utilizando un
método de salida diferente
salir = 0 ' Inicializamos la variable
CLS
WHILE salir = 0 ' Mientras salir = 0…
PRINT "HOLA, MUNDO…"
INPUT "¿Quieres salir (si = 1, no = 0)? ",
salir
WEND ' seguir.
PRINT "Fin del programa"
END
Si usamos un contador, también podemos
incrementarlo como queramos…
' Sacando raíz cuadrada usando
WHILE…WEND.
CLS
PRINT TAB(26); "CALCULO DE LA RAIZ CUADRADA"
INPUT "Introduce un número positivo -> ",
n
WHILE (cont * cont) < n
cont = cont + .0001
WEND
PRINT "La raíz cuadrada de"; n; "es";
cont
END
- No necesitamos declarar una variable cont = 0
ya que al crearla automáticamente asume este
valor. - Si n llegara a ser negativo, la
condición sería falsa (en efecto, 0 por 0 no es
menor que un número negativo) y el bucle no se
ejecutaría. - Entre más pequeño sea el incremento de
cont, n se acercará más a su raíz,
ya que cont por cont debe ser lo más igual posible a
n.
El bloque DO ("hacer")…LOOP ("vuelta)
tiene 4 variantes. Veamos la primera:
DO WHILE…LOOP
Este tipo de bloque es muy parecido a WHILE…WEND, ya
que la condición regularmente se conoce por adelantado, y
existe la posibilidad de que nunca se ejecute el ciclo.
Mientras la condición sea verdadera, el
ciclo se ejecutará. Este tipo de bloque proporciona una
forma más potente que WHILE…WEND.
Sintaxis:
DO WHILE <condición>
instrucción1
instrucción2
instrucción3
[EXIT DO]
….
instrucciónn
LOOP
Ejemplo:
' Ejemplo de DO WHILE…LOOP
i = 0 ‘ Inicializamos la variable
PRINT "El valor de i al empezar el ciclo es";
i
DO WHILE I < 10
I = I + 1
? "Luego i vale"; i ;"…"
LOOP
END
Cuando LOOP encuentra a la condición falsa se
termina el ciclo. Si no quisiéramos que se ejecutara el
ciclo…
‘ Ejemplo de DO WHILE…LOOP que nunca se
ejecutará
CLS
i = 1 ‘ Inicializamos la variable
PRINT "Iniciamos el programa…"
DO WHILE i < 1 ‘¿Es i < 1?
PRINT "Estamos dentro del ciclo"
i = i + 1
LOOP
PRINT "fin del programa"
END
DO…LOOP WHILE
En este tipo de ciclos las instrucciones se
ejecutarán por lo menos 1 vez, ya que la
condición se evalúa cuando se termina de ejecutar
el bloque de instrucciones. Se ejecutara el ciclo mientras
la condición sea verdadera.
Sintaxis:
DO
instrucción1
instrucción2
instrucción3
[EXIT DO]
….
instrucciónn
LOOP WHILE <condición>
Veamos el siguiente ejemplo:
' Ejemplo de DO…LOOP WHILE. Calculo de la velocidad de
un vehículo con MRU
CLS
COLOR 10 ‘ Verde brillante
PRINT TAB(20); "CALCULO DE LA VELOCIDAD DE UN
VEHICULO"
COLOR 7: PRINT ‘ Color gris normal
DO ‘ Hacer…
INPUT "Distancia recorrida por el vehículo (m)
-> ", d
INPUT "Tiempo en recorrerla (s) -> ", t
v = d / t
PRINT "La velocidad con que viajó el
vehículo es"; v; "m / s"
INPUT "¿Desea calcular otra vez (si = 1, no =
0)"; desea
LOOP WHILE desea = 1 ‘Mientras desea =
1
END
+
Nota: La sentencia EXIT DO
nos permite salir de un bloque DO en cualquier
momento.
DO UNTIL…LOOP: (1)
DO… LOOP UNTIL (1)
CAPITULO IV
FUNCIONES MATEMATICAS (1)
CONCEPTO MATEMÁTICO DE
FUNCIÓN
FUNCIONES MATEMÁTICAS Y
ARITMETICAS
FUNCIONES DE CONVERSIÓN
NUMÉRICA
ARREGLOS ESTÁTICOS Y
DINÁMICOS
CAPITULO
V PROGRAMACION
ESTRUCTURADA (1)
MANEJO DE
PARAMETROS Y ARGUMENTOS
FUNCIONES
Y PROCEDIMIENTOS ESTÁTICOS
CAPITULO VI
MANIPULACION DE CADENAS DE TEXTO (1)
MANEJO DE
ARCHIVOS (1)
TIPOS DE DATOS DEFINIDOS POR EL
USUARIO.
(1) Para ver el texto completo
seleccione la opción "Descargar" del menú
superior
Hola a todos:
Me he encontrado un manual muy bueno
sobre QBASIC O QUICK BASIC, este estaba dividido originalmente en
nueve documentos .doc
ya que el autor da permiso para hacer lo que se venga en gana con
la información de este manual claro con fines
meramente didácticos lo he vuelto un solo documento y le
creado un menú con hipervinculos para hacer mas
fácil su estudio.
Me tome tanta molestia por lo
siguiente:
No es fácil encontrar un buen manual de qbasic
en estas épocas cosa grave ya que este leguaje es el mas
apto para dar los primeros pasos para aquellos que queremos
aprender a programar de forma mas o menos decente e indecente.
Bueno sea como sea el caso es: si quieres ser programador
algún día deberías comenzar por leerte este
manual para que luego no te den en la cabeza lenguajes como c++
pascal etc.
Por favor escriban al autor en cuestión de
este Curso de QuickBASIC, por Tadeo E. Ortega Ch.
para darle las gracias.
Y a mi por tan ardua labor de buscarlo y mejorarlo
para ustedes me pueden escribir a:
las niñas lindas me puden emviar
foto.
En el siquente enlace encutras barias versiones de
QBASIC
http://www.upseros.net/compiladores/compiladores.php
si quieres mas sobre QBASIC visita www.qbasic.com.ar
si eres de Colombia y vives
en Bogotá te recomiendo 99.1 radio difusora nacional
frecuencia
http://www.inravision.gov.co/seccionradiodifusora/9911.htm
joven, si no búscala en el realaudio asta luego y
espero que les sirva para algo.
Tadeo Emmanuel Ortega
Chávez