Monografias.com > Computación > Programación
Descargar Imprimir Comentar Ver trabajos relacionados

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

    Nota al lector: es posible que esta página no contenga todos los componentes del trabajo original (pies de página, avanzadas formulas matemáticas, esquemas o tablas complejas, etc.). Recuerde que para ver el trabajo en su versión original completa, puede descargarlo desde el menú superior.

    Todos los documentos disponibles en este sitio expresan los puntos de vista de sus respectivos autores y no de Monografias.com. El objetivo de Monografias.com es poner el conocimiento a disposición de toda su comunidad. Queda bajo la responsabilidad de cada lector el eventual uso que se le de a esta información. Asimismo, es obligatoria la cita del autor del contenido y de Monografias.com como fuentes de información.

    Categorias
    Newsletter