Descargar

Cursillo de QuicBASIC

Enviado por jafet_81


    1. Acerca del curso
    2. Entrada y salida básica
    3. Sentencias de control selectivas
    4. Sentencias de control repetitivas
    5. Funciones matematicas
    6. Programación estructurada
    7. Manipulación de cadenas de texto
    8. Manejo de archivos

    ACERCA DEL CURSO

    ¡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 😉

    INTRODUCCION

    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 máquina

    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

    Lenguaje ensamblador

    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

    Lenguajes de alto nivel

    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:-)).

    CAPITULO I

    ENTRADA Y SALIDA BASICA

    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.

    SENTENCIA COLOR

    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

    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.

    TIPOS DE DATOS

    Los tipos de datos que se manejan en QuickBASIC son los siguientes:

    Nombre

    Descripción

    Rango

    Declaración

    Espacio en memoria

    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 decimales

    1.5 E-45 a 3.4 E38

    !

    4 bytes (32 bits)

    Double

    Real de doble precisión con signo y 15 decimales

    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.

    ORDEN 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

    OPERADORES RELACIONALES

    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 signo

    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

    SENTENCIA IF…THEN…ELSE

    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 IFTHENELSE 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 lógico:

    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.

    IF ANIDADOS

    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"

    PRINT

    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.

    ELSEIF

    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"

    PRINT

    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"

    PRINT

    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)"

    PRINT

    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.

    CAPITULO III

    SENTENCIAS DE CONTROL REPETITIVAS

    EL BLOQUE WHILE… WEND

    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"

    PRINT

    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

    PRINT

    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

    PRINT

    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"

    PRINT

    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…LOOP

    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"

    PRINT

    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)

    EL CICLO FOR..NEXT (1)

    CAPITULO IV FUNCIONES MATEMATICAS (1)

    CONCEPTO MATEMÁTICO DE FUNCIÓN

    FUNCIONES MATEMÁTICAS Y ARITMETICAS

    NÚMEROS ALEATORIOS

    FUNCIONES DE CONVERSIÓN NUMÉRICA

    INTRODUCCION A LOS ARREGLOS

    ARREGLOS ESTÁTICOS Y DINÁMICOS

    CAPITULO V PROGRAMACION ESTRUCTURADA (1)

    COMO USAR GOSUB Y RETURN

    MANEJO DE PARAMETROS Y ARGUMENTOS

    VALORES POR REFERENCIA

    PASANDO ARREGLOS

    PASANDO VALORES POR VALOR

    FUNCIONES RECURSIVAS

    FUNCIONES Y PROCEDIMIENTOS ESTÁTICOS

    ALCANCE DE LAS VARIABLES

    VARIABLES ENTRE MÓDULOS

    CAPITULO VI MANIPULACION DE CADENAS DE TEXTO (1)

    MANEJO DE ARCHIVOS (1)

    ACCESO ALEATORIO

    TIPOS DE DATOS DEFINIDOS POR EL USUARIO.

    ERRORES FRECUENTES

    (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