0% encontró este documento útil (0 votos)
37 vistas34 páginas

Biotecnologia - Programacion - QBasic

El documento aborda el proceso de programación, definiendo conceptos clave como programas, metodologías, lenguajes de programación y entornos de desarrollo. Se detalla la importancia de la programación en el ciclo de vida de un proyecto, así como las fases del desarrollo de software y los elementos constitutivos de un programa. Además, se exploran diferentes clasificaciones de lenguajes de programación y técnicas para mejorar la creación y mantenimiento de software.

Cargado por

Astro Nomica
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
37 vistas34 páginas

Biotecnologia - Programacion - QBasic

El documento aborda el proceso de programación, definiendo conceptos clave como programas, metodologías, lenguajes de programación y entornos de desarrollo. Se detalla la importancia de la programación en el ciclo de vida de un proyecto, así como las fases del desarrollo de software y los elementos constitutivos de un programa. Además, se exploran diferentes clasificaciones de lenguajes de programación y técnicas para mejorar la creación y mantenimiento de software.

Cargado por

Astro Nomica
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Universidad Nacional Informática – Programación

del Chaco Austral Lic. en Biotecnología

Programación
Introducción:
Codificar es el un proceso para convertir especificaciones generales de un sistema en
instrucciones utilizables por la máquina, que produzcan los resultados deseados. Se le conoce
también como desarrollo de software.
La programación es una de las etapas más importantes del ciclo de vida de un proyecto y requiere
un método de trabajo. La programación es el instrumento que permite la ejecución de las tareas
automatizadas de un sistema informático.

Las herramientas que utilizaremos para programar son los lenguajes de programación, a través de
las cuales codificaremos los programas.

Glosario para tener en cuenta:

Programa
Conjunto de instrucciones entendibles por el ordenador que permiten realizar un trabajo o
resolver un problema.
Un programa debe ser finito, es decir, tiene que tener un inicio y un fin. Tiene que estar
bien confeccionado para que, al introducir un dato, salga una solución y si se volviese a introducir
el mismo dato, saliese de nuevo la misma solución.

Metodología de la programación
Se entiende como metodología de la programación al conjunto de normas, métodos y
anotaciones que nos indican la forma de programar.
Cada lenguaje de programación sigue una metodología distinta.

Lenguaje de programación
Es un conjunto de reglas semánticas así como sintácticas que los programadores usan
para la codificación de instrucciones de un programa o algoritmo de programación.
Existen varios lenguajes de programación. Basic, Pascal, Visual Basic, Java, Etc.

Entorno de programación o entorno de desarrollo o ambientes de programación


Es el conjunto de herramientas utilizadas para la elaboración de un programa. Y son:
a) Editor de textos: de línea, de pantalla y basados en ventanas
b) Intérprete o compilador
c) Sistemas de manejo de archivos
d) Editores de enlaces (linkeditores): para rehusar rutinas o combinar varios módulos que
constituyen el sistema.

La evolución de las herramientas para cubrir las necesidades de la ingeniería de software causó la
aparición de nuevos módulos, entre los que cabe mencionarse:
a) Analizador dinámico de frecuencia: que permite ejecutar un programa con datos típicos y
determinar que porciones del mismo se ejecutan más a menudo, y por consiguiente
deberían optimizarse con respecto al tiempo
b) Optimizadores de programas fuente
c) Manejadores de distintas versiones

Clasificación según el entorno de programación

Finalmente, existen otros conceptos tomados en cuenta para agrupar los lenguajes, que dan
origen a diversas clasificaciones, entre los que destacan las siguientes:

Página 1 de 34
Universidad Nacional Informática – Programación
del Chaco Austral Lic. en Biotecnología

 Lenguajes de cuarta generación 4GL: Estos lenguajes se distinguen por formar parte de
un entorno de desarrollo, que comprende el manejador de una base de datos, y todo lo
que de esto se deriva, como la administración de un diccionario de datos, el control de
accesos, el manejo de la consistencia de la información y otras características enfocadas a
facilitar los programas de acceso y explotación de la información. Como ejemplos podemos
citar a los 4 grandes: POSTGRE, SYSBASE, INFORMIX, y ORACLE.
 Lenguajes Visuales. Se les llama de esta manera a los lenguajes que forman parte de
una aplicación dotada de una Interface gráfica, la cual por medio de iconos y otras
herramientas visuales y simbólicas, pretenden facilitar las tareas rutinarias de los
programadores, como son el diseño y desarrollo de formularios e informes. Los ejemplos
más comerciales de estos lenguajes son: VISUAL BASIC, VISUAL CAFE, VISUAL FOX,
etc.
 Metalenguajes: Son lenguajes como XML, SGML y HTML que sirven para definir otros
lenguajes, cuyo objetivo es llevar a cabo la estructuración de textos mediante un conjunto
de etiquetas, de manera tal, que puedan ser entendidos por los humanos y también
procesado por los ordenadores. Estos lenguajes están teniendo un gran auge sobre la
plataforma de Internet, en la cual son usados para la creación de documentos, y el
intercambio o transferencia de información.
 Lenguajes de propósito específico: Son aquellos lenguajes desarrollados con la
finalidad de resolver problemas de una naturaleza muy determinada, tal como SPSS para
problemas estadísticos, MATLAB para cálculos científicos y de ingeniería, CAD/CAM para
el diseño de piezas y programación de máquinas de control numérico, como tornos y
fresadoras, GPSS para simulación de sistemas, CORBA para el manejo de interfaces en
ambientes cliente-servidor, etc.
 Lenguajes Script: Son lenguajes como JAVASCRIPT, VBSCRIPT o PHP, que se utilizan
en ambientes clientes servidor, mediante la incrustación de código en las páginas HTML, y
así permitir la programación del lado del cliente, buscando fundamentalmente, hacer más
atractivos los interfaces gráficos de las páginas.

Esta gran cantidad de lenguajes, señala de manera clara que existe un esfuerzo continuo en la
creación, y mejora de los lenguajes de programación, en aras, de hacer más fácil la tarea del
programador y/o hacer un uso más eficiente de los recursos computacionales.
La búsqueda de los objetivos antes mencionados, así como la guerra mercantil de las compañías
dedicadas a la producción de herramientas de software, han diversificado las opciones que los
programadores pueden elegir. Sin embargo, hasta nuestros días, podemos decir que realmente no
existe ningún lenguaje, o grupo de ellos, que destaque en la totalidad de las aplicaciones
informáticas que se desarrollan actualmente, ya que cada uno, tiene cualidades que lo hacen más
convenientes para algunos propósitos, pero al mismo tiempo, cuentan con inconvenientes para
otros.

Ingeniería de Software
Se refiere a un conjunto de principios que permiten desarrollar software de calidad y de
alta rentabilidad.

Recursos:
Conjunto de componentes hardware que utilizaremos para la elaboración de un programa
(cpu, disco duro…..).

Datos:
Son las características propias de cualquier entidad. Por ejemplo: los datos de una
persona como su edad, fecha de nacimiento, domicilio, número de teléfono, etc.

Página 2 de 34
Universidad Nacional Informática – Programación
del Chaco Austral Lic. en Biotecnología

Información:
Es el conocimiento relevante producido como resultado del procesamiento de datos y
adquirido por la gente para realzar el entendimiento y cumplir ciertos propósitos.

Procesamiento de datos:
Consiste en la recolección de datos de entrada que son evaluados y ordenados para ser
colocados de manera que produzcan información útil.

ACTIVIDADES DEL PROCESAMIENTO DE DATOS


I. Captura de datos de entrada
II. Manejo de los datos (incluye clasificación, ordenación, cálculo y sumarización de éstos)
III. Administración de la salida resultante.

Herramientas de programación
Las dos herramientas más utilizadas para el diseño son:
Diagramas de flujo o flowchart: representación gráfica de un algoritmo.
Pseudocódigo: las instrucciones se escriben de forma similar al inglés o español, facilitando tanto
la escritura como la lectura de programas

CONCEPTO DE PROGRAMA: Un programa de computadora es un conjunto de instrucciones –


órdenes dadas a la máquina – que producirán la ejecución de una determinada tarea. En esencia,
un programa es un medio para conseguir un fin.

Es un conjunto de instrucciones dirigidas a la computadora para que esta lleve a cabo una
secuencia de acciones con el objetivo de realizar una o más operaciones que permitan solucionar
un problema.

El proceso de programación es, por consiguiente, un proceso de solución de problemas y el


desarrollo de un programa requiere las siguientes fases:

1. definición y análisis del problema;


2. diseño de algoritmos:
. diagrama de flujo,
. pseudo código;
3. codificación del programa;
4. depuración y verificación del problema;
5. documentación;
6. mantenimiento.

PARTES CONSTITUTIVAS DE UN PROGRAMA

Tras la decisión de desarrollar un programa, el programador debe establecer el conjunto de


especificaciones que debe contener el programa: entrada, salida y algoritmos de resolución, que
incluirán las técnicas para obtener las salidas a partir de las entradas.
Conceptualmente, un programa puede ser considerado como una caja negra, como se
muestra en la Figura La caja negra o el algoritmo de resolución, en realidad, es el conjunto de
códigos que transforman las entradas del programa (datos) en salida (resultados).

Entrada Programa Salida


(algoritmo)
de
resolución) Página 3 de 34
Universidad Nacional Informática – Programación
del Chaco Austral Lic. en Biotecnología

El programador debe establecer de donde provienen las entradas al programa. Las


entradas, en cualquier caso, procederán de un dispositivo de entrada –teclado, disco...
– El proceso de introducir la información de entrada –datos- en la memoria de la
computadora se denomina entrada de datos, operación de lectura o acción de leer.
Las salidas de datos se deben presentar en dispositivos periféricos de salida:
pantalla, impresoras, disco, etc. La operación de salida de datos se conoce también
como escritura o acción de escribir.

ELEMENTOS BÁSICOS DE UN PROGRAMA


En programación se debe separar la diferencia entre el diseño del algoritmo y su
implementación en un lenguaje específico. Por ello, se debe distinguir claramente entre los
conceptos de programación y el medio en que ellos se implementan en un lenguaje
específico. Sin embargo, una vez que se comprendan los conceptos de programación,
como utilizarlos, la enseñanza de un nuevo lenguaje es relativamente fácil.
Los lenguajes de programación –como los restantes lenguajes- tienen elementos
básicos que se utilizan como bloques constructivos, así como reglas para las que esos
elementos se combinan. Estas reglas se denominan sintaxis del lenguaje. Solamente las
instrucciones sintácticamente correctas pueden ser interpretadas por la computadora y los
programas que contengan errores de sintaxis con rechazados por la máquina.

Los elementos básicos constitutivos de un programa o algoritmo son:

. palabras reservadas (inicio, fin, si –entonces..., etc),


. identificadores (nombres de variables esencialmente),
. Caracteres especiales (coma, apóstrofo, etc.),
. constantes,
. variables,
. expresiones,
. instrucciones.

Además de estos elementos básicos, existen otros elementos que forman parte de los
programas, cuya comprensión y funcionamiento será vital para el correcto diseño de un algoritmo
y naturalmente la codificación del programa.

Estos elementos son:

. bucles, . estructuras:
. contadores, - secuenciales,
. acumuladores, - selectivas,
. interruptores, - repetitivas.

Palabras reservadas
Son palabras con un significado especial y no pueden ser utilizadas para otros propósitos. No
pueden ser definidas por el usuario. Cada lenguaje de programación tiene sus propias palabras
reservadas.
Por ejemplo Pascal tiene las siguientes palabras reservadas:

ABSOLUTE IN VAR RECORD


BEGIN PROGRAM GOTO ELSE
ARRAY FUNCTION ?PACKED WHILE
REPEAT FILE TO LABEL

Página 4 de 34
Universidad Nacional Informática – Programación
del Chaco Austral Lic. en Biotecnología

FILE FOR DIV END


FORWARD OF *INLINE WITH
NIL THEN PROCEDURE MOD

Identificadores

Es una secuencia de caracteres de cualquier longitud para representar objetos en un programa


(constantes, variables, tipos de datos, funciones, procedimientos, campos de registro, programas)

Identificadores válidos

Nombre
Cadena
Edad_Maxima
X_Y_Z
Etiqueta2

Elección de identificadores

La elección de identificadores permite una mejor lectura y comprensión de un programa.


No es aconsejable utilizar identificadores que no sugieran ningún significado. De acuerdo
al lenguaje de programación utilizado pueden existir restricciones acerca de la longitud.

Constantes

Son objetos que mantienen su valor durante toda la ejecución del programa

Etiquetas

Es un identificador que se compone de una secuencia de letras y dígitos y que a diferencia del
identificador clásico puede comenzar con dígitos. Se utilizan con la sentencia goto. Su uso no está
recomendado.

Contadores

Los procesos repetitivos son la base del uso de las computadoras. En estos procesos se
necesitan normalmente contar los sucesos o acciones internas del bucle, como pueden ser los
elementos de un fichero, el número de iteraciones a realizar por el bucle, etc. Una forma de
controlar un bucle es mediante un contador.
Un contador es una variable cuyo valor se incrementa o decremento en una cantidad constante en
cada iteración.
El contador puede ser positivo (incrementos, uno en uno) o negativo (decrementos, uno en uno).

INSTRUCCIONES

El proceso de diseño del algoritmo o posteriormente de codificación del programa consiste en


definir las acciones o instrucciones que resolverán al problema.
Las acciones o instrucciones se deben escribir y posteriormente almacenar en memoria en
el mismo orden en que han de ejecutarse, es decir, en secuencia.
Un programa puede ser lineal o no lineal.
Página 5 de 34
Universidad Nacional Informática – Programación
del Chaco Austral Lic. en Biotecnología

Un programa es lineal si las instrucciones se ejecutan secuencialmente, sin bifurcaciones,


decisión ni comparaciones.

Instrucciones 1
Instrucciones 2
.
.
.
instrucciones n

En el caso del algoritmo las instrucciones se suelen conocer como acciones, y se tendría:
Acción 1
Acción 2
.
.
.
Acción n

Un programa es no lineal cuando se interrumpe la secuencia mediante instrucciones de


bifurcación:

Acción 1
Acción 2
.
.
Acción x
.
Acción n

Bucles

Un bucle o lazo (loop) es un segmento de un algoritmo o programa, cuya instrucciones se repiten


un número determinado de veces mientras se cumple una determinada condición (existe o es
verdadera la condición). Se debe establecer un mecanismo para determinar las tareas repetitivas.
Este mecanismo es una condición que puede ser verdadera o falsa y que se comprueba una vez a
cada paso o iteración del bucle (total de instrucciones que se repiten en el bucle).
Un bucle consta de tres partes:
. decisión,
. cuerpo del bucle,
. salida del bucle.

Bucles anidados

En un algoritmo pueden existir varios bucles. Los bucles pueden ser anidados o independientes.
Los bucles son anidados cuando están dispuestos de tal modo que unos son interiores a otros;
los bucles son independientes cuando son externos unos a otros.

Página 6 de 34
Universidad Nacional Informática – Programación
del Chaco Austral Lic. en Biotecnología

Inicio inicio inicio

bucle A

bucle B

bucle C

fin fin fin


Bucles independientes bucles anidados bucles cruzados
(no es correcto su diseño)

Acerca de Algoritmos y Programas


Un algoritmo es una secuencia no ambigua, finita y ordenada de instrucciones que han de
seguirse para resolver un problema. Un programa normalmente implementa (traduce a un
lenguaje de programación concreto) un algoritmo. Nótese que es la secuencia de instrucciones en
sí (la ejecución) la que debe ser finita, no el número de pasos realizados.

Los programas suelen subdividirse en partes menores (módulos), de modo que la complejidad
algorítmica de cada una de las partes sea menor que la del programa completo, lo cual ayuda al
desarrollo del programa.

Según Niklaus Wirth, un programa está formado por algoritmos y estructura de datos.
Se han propuesto diversas técnicas de programación cuyo objetivo es mejorar tanto el proceso de
creación de software como su mantenimiento. Entre ellas, se pueden mencionar las siguientes:

 programación estructurada
 programación modular
 programación orientada a objetos (POO)
 programación declarativa

La programación estructurada es una forma de escribir programas de ordenador (programación


de computadora) de forma clara. Para ello utiliza únicamente tres estructuras: secuencia,
selección e iteración; siendo innecesario y no permitiéndose el uso de la instrucción o
instrucciones de transferencia incondicional (GOTO, EXIT FUNCTION, EXIT SUB o múltiples
RETURN).

 Ventajas de la programación estructurada


Con la programación estructurada, elaborar programas de computador sigue siendo una labor que
exige esfuerzo, creatividad, habilidad y cuidado. Sin embargo, con este estilo podemos obtener las
siguientes ventajas:
Página 7 de 34
Universidad Nacional Informática – Programación
del Chaco Austral Lic. en Biotecnología

1. Los programas son más fáciles de entender, ya que pueden ser leídos de forma secuencial, sin
necesidad de hacer seguimiento a saltos de línea (GOTO) dentro de los bloques de código para
entender la lógica.
2. La estructura del programa es clara, puesto que las instrucciones están más ligadas o
relacionadas entre sí.
3. Reducción del esfuerzo en las pruebas. El seguimiento de los fallos o errores del programa
("debugging") se facilita debido a la estructura más visible, por lo que los errores se pueden
detectar y corregir más fácilmente.
4. Reducción de los costos de mantenimiento de los programas.
5. Programas más sencillos y más rápidos (ya que es más fácil su optimización).
6. Los bloques de código son auto explicativos, lo que facilita la documentación.
7. Los GOTO se reservan para construir las instrucciones básicas. Aunque no se usan de forma
directa, por estar prohibida su utilización, están incluidas implícitamente en las instrucciones de
selección e iteración.
8. Un programa escrito de acuerdo a estos principios no solamente tendrá una mejor estructura
sino también una excelente presentación.
9. La programación estructurada ofrece estos beneficios, pero no se la debe considerar como una
panacea ya que el desarrollo de programas es, principalmente, una tarea de dedicación, esfuerzo
y creatividad.

Inconvenientes de la programación estructurada

El principal inconveniente de este método de programación es que se obtiene un único bloque de


programa, que cuando se hace demasiado grande puede resultar problemático su manejo; esto se
resuelve empleando la programación modular, definiendo módulos interdependientes
programados y compilados por separado (en realidad esto no es necesario, pero es recomendable
para su mantenimiento y funcionalidad). Un método un poco más sofisticado es la programación
por capas, en la que los módulos tienen una estructura jerárquica en la que se pueden definir
funciones dentro de funciones o de procedimientos.

La programación modular es un paradigma de programación que consiste en dividir un


programa en módulos ó subprogramas con el fin de hacerlo más legible y manejable.
Se presenta históricamente como una evolución de la programación estructurada para
solucionar problemas de programación más grandes y complejos de lo que ésta puede resolver.
Al aplicar la programación modular, un problema complejo debe ser dividido en varios
subproblemas más simples, y estos a su vez en otros subproblemas más simples. Esto debe
hacerse hasta obtener subproblemas lo suficientemente simples como para poder ser resueltos
fácilmente con algún lenguaje de programación. Ésta técnica se llama refinamiento sucesivo,
divide y vencerás ó análisis descendente (Top-Down).
Un módulo es cada una de las partes de un programa que resuelve uno de los
subproblemas en que se divide el problema complejo original. Cada uno de estos módulos tiene
una tarea bien definida y algunos necesitan de otros para poder operar. En caso de que un
módulo necesite de otro, puede comunicarse con éste mediante una interfaz de comunicación que
también debe estar bien definida.
Si bien un modulo puede entenderse como una parte de un programa en cualquiera de
sus formas y variados contextos, en la práctica es común representarlos con procedimientos y
funciones. Adicionalmente, también pueden considerarse módulos las librerías que pueden
incluirse en un programa o, en programación orientada a objetos, la implementación de un tipo de
dato abstracto.

La Programación Orientada a Objetos (POO u OOP según sus siglas en inglés) es un


paradigma de programación que usa objetos y sus interacciones para diseñar aplicaciones y
programas de computadora. Está basado en varias técnicas, incluyendo herencia, modularidad,

Página 8 de 34
Universidad Nacional Informática – Programación
del Chaco Austral Lic. en Biotecnología

polimorfismo y encapsulamiento. Su uso se popularizó a principios de la década de 1990.


Actualmente son muchos los lenguajes de programación que soportan la orientación a objetos.
Los objetos son entidades que combinan estado, comportamiento e identidad:
El estado está compuesto de datos, será uno o varios atributos a los que se habrán asignado unos
valores concretos (datos).
El comportamiento está definido por los procedimientos o métodos con que puede operar dicho
objeto, es decir, qué operaciones se pueden realizar con él.
La identidad es una propiedad de un objeto que lo diferencia del resto, dicho con otras palabras,
es su identificador (concepto análogo al de identificador de una variable o una constante).

La programación orientada a objetos expresa un programa como un conjunto de estos objetos,


que colaboran entre ellos para realizar tareas. Esto permite hacer los programas y módulos más
fáciles de escribir, mantener y reutilizar.

De esta forma, un objeto contiene toda la información que permite definirlo e identificarlo frente a
otros objetos pertenecientes a otras clases e incluso frente a objetos de una misma clase, al poder
tener valores bien diferenciados en sus atributos. A su vez, los objetos disponen de mecanismos
de interacción llamados métodos que favorecen la comunicación entre ellos. Esta comunicación
favorece a su vez el cambio de estado en los propios objetos. Esta característica lleva a tratarlos
como unidades indivisibles, en las que no se separan ni deben separarse el estado y el
comportamiento.

Los métodos (comportamiento) y atributos (estado) están estrechamente relacionados por la


propiedad de conjunto. Esta propiedad destaca que una clase requiere de métodos para poder
tratar los atributos con los que cuenta. El programador debe pensar indistintamente en ambos
conceptos, sin separar ni darle mayor importancia a ninguno de ellos, hacerlo podría producir el
hábito erróneo de crear clases contenedoras de información por un lado y clases con métodos que
manejen a las primeras por el otro. De esta manera se estaría realizando una programación
estructurada camuflada en un lenguaje de programación orientado a objetos.
Esto difiere de la programación estructurada tradicional, en la que los datos y los procedimientos
están separados y sin relación, ya que lo único que se busca es el procesamiento de unos datos
de entrada para obtener otros de salida. La programación estructurada anima al programador a
pensar sobre todo en términos de procedimientos o funciones, y en segundo lugar en las
estructuras de datos que esos procedimientos manejan. En la programación estructurada sólo se
escriben funciones que procesan datos. Los programadores que emplean éste nuevo paradigma,
en cambio, primero definen objetos para luego enviarles mensajes solicitándoles que realicen sus
métodos por sí mismos.

Características de la POO
Hay un cierto desacuerdo sobre exactamente qué características de un método de programación
o lenguaje le definen como "orientado a objetos", pero hay un consenso general en que las
características siguientes son las más importantes (para más información, seguir los enlaces
respectivos):
 Abstracción: Denota las características esenciales de un objeto, donde se capturan sus
comportamientos.Cada objeto en el sistema sirve como modelo de un "agente" abstracto
que puede realizar trabajo, informar y cambiar su estado, y "comunicarse" con otros
objetos en el sistema sin revelar cómo se implementan estas características. Los procesos,
las funciones o los métodos pueden también ser abstraídos y cuando lo están, una
variedad de técnicas son requeridas para ampliar una abstracción.
 Encapsulamiento: Significa reunir a todos los elementos que pueden considerarse
pertenecientes a una misma entidad, al mismo nivel de abstracción. Esto permite aumentar
la cohesión de los componentes del sistema. Algunos autores confunden este concepto
con el principio de ocultación, principalmente porque se suelen emplear conjuntamente.
 Principio de ocultación: Cada objeto está aislado del exterior, es un módulo natural, y
cada tipo de objeto expone una interfaz a otros objetos que especifica cómo pueden
Página 9 de 34
Universidad Nacional Informática – Programación
del Chaco Austral Lic. en Biotecnología

interactuar con los objetos de la clase. El aislamiento protege a las propiedades de un


objeto contra su modificación por quien no tenga derecho a acceder a ellas, solamente los
propios métodos internos del objeto pueden acceder a su estado. Esto asegura que otros
objetos no pueden cambiar el estado interno de un objeto de maneras inesperadas,
eliminando efectos secundarios e interacciones inesperadas. Algunos lenguajes relajan
esto, permitiendo un acceso directo a los datos internos del objeto de una manera
controlada y limitando el grado de abstracción. La aplicación entera se reduce a un
agregado o rompecabezas de objetos.
 Polimorfismo: comportamientos diferentes, asociados a objetos distintos, pueden
compartir el mismo nombre, al llamarlos por ese nombre se utilizará el comportamiento
correspondiente al objeto que se esté usando. O dicho de otro modo, las referencias y las
colecciones de objetos pueden contener objetos de diferentes tipos, y la invocación de un
comportamiento en una referencia producirá el comportamiento correcto para el tipo real
del objeto referenciado. Cuando esto ocurre en "tiempo de ejecución", esta última
característica se llama asignación tardía o asignación dinámica. Algunos lenguajes
proporcionan medios más estáticos (en "tiempo de compilación") de polimorfismo, tales
como las plantillas y la sobrecarga de operadores de C++.
 Herencia: las clases no están aisladas, sino que se relacionan entre sí, formando una
jerarquía de clasificación. Los objetos heredan las propiedades y el comportamiento de
todas las clases a las que pertenecen. La herencia organiza y facilita el polimorfismo y el
encapsulamiento permitiendo a los objetos ser definidos y creados como tipos
especializados de objetos preexistentes. Estos pueden compartir (y extender) su
comportamiento sin tener que volver a implementarlo. Esto suele hacerse habitualmente
agrupando los objetos en clases y estas en árboles o enrejados que reflejan un
comportamiento común. Cuando un objeto hereda de más de una clase se dice que hay
herencia múltiple.
 Recolección de basura: la Recolección de basura o Garbage Collection es la técnica por
la cual el ambiente de Objetos se encarga de destruir automáticamente, y por tanto
desasignar de la memoria, los Objetos que hayan quedado sin ninguna referencia a ellos.
Esto significa que el programador no debe preocuparse por la asignación o liberación de
memoria, ya que el entorno la asignará al crear un nuevo Objeto y la liberará cuando nadie
lo esté usando. En la mayoría de los lenguajes híbridos que se extendieron para soportar
el Paradigma de Programación Orientada a Objetos como C++ u Object Pascal, esta
característica no existe y la memoria debe desasignarse manualmente.

La Programación Declarativa, es un paradigma de programación que está basado en el


desarrollo de programas especificando o "declarando" un conjunto de condiciones, proposiciones,
afirmaciones, restricciones, ecuaciones o transformaciones que describen el problema y detallan
su solución. La solución es obtenida mediante mecanismos internos de control, sin especificar
exactamente cómo encontrarla.

En la programación declarativa las sentencias que se utilizan lo que hacen es describir el


problema que se quiere solucionar, pero no las instrucciones necesarias para solucionarlo. Esto
último se realizará mediante mecanismos internos de inferencia de información a partir de la
descripción realizada

Algunos lenguajes declarativos


Haskell (Programación funcional)
Prolog (Programación Lógica)
Lisp (Programación funcional)
F-Prolog (Programación Lógica Difusa)
Curry (Programación Lógico-Funcional)

Página 10 de 34
Universidad Nacional Informática – Programación
del Chaco Austral Lic. en Biotecnología

E S T R U C T U R A S D E D A T O S

Una estructura de datos es una clase de datos caracterizada por la organización de los datos y las
operaciones definidas sobre ella.
Las estructuras de datos son de vital importancia en sistemas computacionales.

Clasificación de estructuras

Estructuras de Datos Estructuras de Datos Estructuras de Datos


Tipos Primitivas Simples Compuestas
Lineales No Lineales
de (Vector, Matriz) Arboles
Datos

Un tipo de datos determina el conjunto de valores al cual pertenece una constante o el cual puede
ser tomado por una variable o una expresión; o bien que puede ser generado por un operador o
por una función.
El tipo de un valor representado por una constante, variable o expresión puede derivarse de su
forma o de su declaración sin que se necesite ejecutar el proceso de cálculo.
Cada operador o función aguarda la llegada de argumentos de un tipo fijo y da como resultado un
tipo fijo.
Las variables y los tipos de datos se presentan en un programa a fin de utilizarlos en los procesos
de cálculo. Para lograr esto debe disponer de un conjunto de operadores. Para cada tipo de datos
estándar un lenguaje de programación ofrece un cierto conjunto de operadores primitivos estándar
y, de igual manera, con cada método de estructuración, una operación y notación diferentes para
seleccionar una componente.

Tipos de Datos Primitivos

Son aquellos que se tienen a disposición en la mayoría de las computadoras con


características integradas. Incluyen los números enteros, valores lógicos de verdad y un
conjunto de caracteres imprimibles.

ENTEROS (INTEGER)
Las conocemos porque se utilizan en todos los lenguajes de programación.
Una estructura primitiva son los enteros.
Un entero es un miembro del siguiente conjunto de números:
{. . . , - ( n + 1 ) , - n ,. . . , - 2 , - 1 , 0 , 1 , 2 ,. . . ., n , n + 1 , . . . }
El tamaño de este conjunto puede variar de acuerdo a la forma de representación que
efectúe.

Tipo Rango
Byte 0..255
Integer -32768..32767
Longint -217483648..2147483647
Shortint -128..127
word 0..65535

Las operaciones fundamentales sobre enteros son muy conocidas: suma, resta,
multiplicación, división, exponenciación, y otras. Todas estas operaciones trabajan sobre
un par de números considerados como operadores binarios. Un operador unario tiene sólo

Página 11 de 34
Universidad Nacional Informática – Programación
del Chaco Austral Lic. en Biotecnología

un operando. La negación, que cambia el signo de un número, es un ejemplo de un


operador unario.

CARDINALES
Si se sabe que una variable (como un contador) no toma valores negativos, entonces este
hecho puede expresarse mediante el uso de un tipo más estándar llamado CARDINAL.

REAL
El tipo REAL representa un subconjunto de números reales. Se supone que la aritmética
con operandos del tipo INTEGER y CARDINAL produce resultados exactos, pero la
aritmética sobre valores de tipo REAL puede ser inexacta dentro de los límites de errores
de redondeo ocasionado por operaciones de cálculo con un número finito de cifras.

BOOLEANOS
Es también llamado tipo de datos lógico.
Un dato booleano es un elemento que puede tener uno de dos valores: verdadero o falso.
El conjunto de operaciones definidas sobre este tipo de estructura de datos es diferente del
conjunto de operaciones para los enteros. Los tres operadores booleanos básicos son: not,
and y or (negación, conjunción y disyunción)

Or y And son operadores binarios; mientras que Not es un operador unario.


El Not tiene precedencia sobre un Or y un And; en ausencia de paréntesis, el cual cambia
el orden de la evaluación, el Not es evaluado antes que el And y el Or. Por ejemplo, en la
evaluación de la expresión:
A and not B
B es negado primero y el resultado es intersecado con A.
Los valores verdadero y falso también pueden resultar de la aplicación de operadores
relacionales, los cuales no tienen operandos booleanos; más bien, son operadores con
resultados booleanos. Tales operadores relacionales son <, <=, >, >=, = , <> .

CARACTERES (CHAR)

El carácter es una primitiva que probablemente se conoce muy bien. Un carácter es un


elemento tomado de un conjunto de símbolos. Un conjunto de símbolos es:
{0,1,2,3,4,5,6,7,8,9,A,B,C,D,......,X,Y,Z,’,?,#,...,+,-,*,/}
en el cual se incluyen dígitos, los caracteres del alfabeto y algunos caracteres especiales.

Programación e ingeniería del software

Existe una tendencia a identificar el proceso de creación de un programa informático con la


programación, que es cierta cuando se trata de programas pequeños para uso personal, y que
dista de la realidad cuando se trata de grandes proyectos.

El proceso de creación de software, desde el punto de vista de la ingeniería, incluye los siguientes
pasos:

1. Reconocer la necesidad de un programa para solucionar un problema o identificar la


posibilidad de automatización de una tarea.
2. Recoger los requisitos del programa. Debe quedar claro qué es lo que debe hacer el
programa y para qué se necesita.
3. Realizar el análisis de los requisitos del programa. Debe quedar claro cómo debe realizar
el programa las cosas que debe hacer. Las pruebas que comprueben la validez del
programa se pueden especificar en esta fase.
Página 12 de 34
Universidad Nacional Informática – Programación
del Chaco Austral Lic. en Biotecnología

4. Diseñar la arquitectura del programa. Se debe descomponer el programa en partes de


complejidad abordable.
5. Implementar el programa. Consiste en realizar un diseño detallado, especificando
completamente todo el funcionamiento del programa, tras lo cual la codificación debería resultar
inmediata.
6. Implantar (instalar) el programa. Consiste en poner el programa en funcionamiento junto
con los componentes que pueda necesitar (bases de datos, redes de comunicaciones, etc.).

La ingeniería del software se centra en los pasos de planificación y diseño del programa,
mientras que antiguamente (programación artesanal) la realización de un programa
consistía únicamente en escribir el código.

Página 13 de 34
Universidad Nacional Informática – Programación
del Chaco Austral Lic. en Biotecnología

Lenguajes de programación: BASIC

1. Introducción a la programación en Basic.

Vamos a ver una introducción a la programación de computadoras. Para ello, vamos a centrarnos
en el lenguaje Basic. Es un lenguaje que durante mucho tiempo se consideró como muy
apropiado para comenzar en la programación de computadoras, y que posteriormente fue
desbancado para este propósito por otros lenguajes más estructurados como Pascal. Hoy en día
existen versiones de Basic lo suficientemente estructuradas como para resultar adecuadas para
aprender correctamente los principios básicos, y versiones lo suficientemente potentes como para
realizar aplicaciones "serias" en entornos como Windows.

2. Nociones elementales sobre los programas y Basic.

Un programa es un conjunto de órdenes para una computadora. Estas órdenes se deben dar en
un cierto lenguaje. Lo habitual es emplear lenguajes cercanos al lenguaje humano (normalmente
parecidos al inglés), y emplear una cierta aplicación que lo convierte al lenguaje que realmente
entiende la computadora. Estos "traductores" reciben el nombre de compiladores o de
intérpretes, según cómo se realice la traducción .

Si tecleamos

PRINT "HOLA"

(y pulsamos la tecla Intro) la computadora hará caso a esta orden (la "ejecutará") y responderá
mostrando el mensaje HOLA en la pantalla.

Nota: PRINT es la orden que escribe un cierto texto en pantalla. Profundizaremos en ella en el
siguiente apartado. En adelante daré por entendido que deberemos pulsar la tecla Intro (o su
equivalente en la computadora que empleemos) después de cada orden, y no insistiré más en
ello.

Si queremos teclear un programa que primero escriba HOLA y luego ADIOS, y queremos que este
programa se ponga en funcionamiento más adelante, cuando nosotros se lo pidamos,
teclearíamos

PRINT "HOLA"
PRINT "ADIOS"

En los Basic "modernos" (como el QBasic que incorporaban las últimas versiones de MsDos, o
Turbo Basic, que creó Borland), tenemos un editor en el que vamos tecleando las órdenes una
tras otra:

PRINT "HOLA"

PRINT "ADIOS"

Para poner el programa en funcionamiento, deberemos pulsar cierta combinación de teclas,


que en el caso de QBasic es Mayúsculas+F5 y en el caso de Turbo Basic es Alt+X.

Página 14 de 34
Universidad Nacional Informática – Programación
del Chaco Austral Lic. en Biotecnología

Escribir en pantalla; operaciones matemáticas.

Ya hemos comentado la idea básica sobre cómo se escribe en pantalla utilizando el lenguaje
QBasic: emplearemos la orden PRINT, y entre comillas indicaremos el texto que queremos que
aparezca:

PRINT "HOLA"

Si después de esta orden escribimos otra orden PRINT, cada uno de los mensajes se escribirá en
una línea distinta. Esto es porque después de cada orden PRINT, el cursor (la posición de la
pantalla en la que se seguirá escribiendo) avanza hasta el comienzo de la siguiente línea.

Si nos interesa que los dos mensajes aparezcan en una misma línea, justo uno detrás del otro,
podemos conseguirlo escribiendo un punto y coma (;) después de la primera orden PRINT. Esto
hace que el cursor no avance a la siguiente línea.

PRINT "HOLA";
PRINT "ADIOS"

La mayoría de las versiones de Basic permiten que los dos mensajes aparezcan en una misma
línea, pero no juntos, sino separados un cierto número de espacios, lo que conseguimos
utilizando una coma (,) en vez de un punto y coma, así:

PRINT "HOLA",
PRINT "ADIOS"

Estos dos textos se pueden imprimir en una única línea PRINT, así:

PRINT "HOLA" ; "ADIOS" (en este caso la computadora escribiría HOLAADIOS) o así

10 PRINT "HOLA" , "ADIOS" (en este caso escribiría HOLA ADIOS).

Nota: algunas versiones de QBasic permite indicar cuántos espacios saltará esta coma. Por
ejemplo, en el Basic de los Amstrad CPC existía una orden ZONE con esta misión, que se usaría
así:

5 ZONE 12

Podemos escribir números (y entonces no harán falta las comillas), e incluso operaciones entre
ellos:

PRINT 23
PRINT 44 + 5;
PRINT 50-9

La salida de este programa sería

23
49 41

(Nota: en este caso, los números no aparecen totalmente juntos, como ocurría con los textos, sino
separados por un espacio en blanco, que es donde aparecería el signo - si los números fueran negativos).

Página 15 de 34
Universidad Nacional Informática – Programación
del Chaco Austral Lic. en Biotecnología

Las operaciones matemáticas se representan con los siguientes símbolos:

+ Suma
- Resta y negación.
* Multiplicación
/ División
^ Exponenciación (elevado a: el acento circunflejo
o la flecha hacia arriba)

Y un ejemplo de su uso sería

PRINT "Ejemplo de operaciones, con los números 5 y 2"


PRINT "Suma: "; 5 + 2
PRINT "Diferencia: "; 5 - 2
PRINT "Producto: "; 5 * 2
PRINT "Division: "; 5 / 2
PRINT "Potencia: "; 5 ^ 2

que tendría como resultado:

Ejemplo de operaciones, con los números 5 y 2


Suma: 7
Diferencia: 3
Producto: 10
Division: 2.5
Potencia: 25

En la mayoría de las versiones de Basic, la orden PRINT se puede abreviar por una
interrogación (?), de modo que las dos siguientes líneas harían exactamente lo mismo:

PRINT "HOLA"
? "HOLA"

Es más, algunas versiones de Basic convertirían automáticamente la segunda línea a ésta:

PRINT "HOLA"

Más adelante veremos mayores detalles sobre cómo mejorar la salida en pantalla utilizando
PRINT.

3. Introducción a las variables.

Habíamos visto cómo escribir un texto que habíamos fijado nosotros mismos desde el programa.
Pero lo habitual no es escribir valores fijos, sino el resultado de una cierta operación, un valor
introducido por el usuario, etc. Para eso se emplean las llamadas "variables": una variable es un
espacio de memoria en el que podremos guardar un cierto dato y al que podremos asignar un
nombre. Este dato lo podremos modificar cuando queramos. Por ejemplo, podemos reservar un
espacio de variable y llamarlo "X" y guardar en él un cierto valor, así

Página 16 de 34
Universidad Nacional Informática – Programación
del Chaco Austral Lic. en Biotecnología

LET X = 2
PRINT "X VALE:"
PRINT X

Como se ve, la orden LET es la que permite dar un valor a una cierta variable. Para mostrar en
pantalla el valor de una variable, utilizamos la orden PRINT, pero indicando el nombre de la
variable sin comillas. El resultado del programa anterior sería:

X VALE:
2

Más adelante podemos modificar el valor de X nuevamente:

LET X = 2
PRINT "X VALE:" ; X
LET X = 5
PRINT "AHORA X VALE:" ; X

El resultado de este programa sería:

X VALE: 2
AHORA X VALE: 5

Aquí hay otra novedad: hemos incluido en una misma orden PRINT un texto entre comillas y una
variable (sin comillas), separados por punto y coma, para que se escriban en la misma línea.

La orden LET no es obligatoria en la mayoría de las versiones del lenguaje Basic, de modo que
muchos Basic permitirían que el programa anterior se escribiese así:

X=2
PRINT "X VALE:" ; X
X=5
PRINT "AHORA X VALE:" ; X

Si queremos que sea el usuario el que introduzca un valor para una variable, se usa la orden
INPUT, así:

INPUT X
PRINT "EL VALOR TECLEADO ES: " ; X
PRINT "SU CUADRADO ES:" ; X*X

La orden INPUT mostrará una interrogación para avisarnos de que está esperando un valor. Por
ejemplo, si el usuario introduce el valor 3, en pantalla aparecería lo siguiente:

?3
EL VALOR TECLEADO ES: 3
SU CUADRADO ES: 9

También podemos indicar en la orden INPUT un texto entre comillas, para que aparezca delante
de la interrogación (no en todas las versiones de Basic, pero sí en la mayoría):

Página 17 de 34
Universidad Nacional Informática – Programación
del Chaco Austral Lic. en Biotecnología

10 INPUT "QUE NUMERO DESEA ELEVAR AL CUADRADO"; X


20 PRINT "EL VALOR TECLEADO ES: " ; X
30 PRINT "SU CUADRADO ES:" ; X*X

Hasta ahora sólo hemos usado una variable llamada X, pero este no es un nombre demasiado
claro. Normalmente nos interesará tener nombres de variables más significativos. Puede ocurrir
que alguna versión de Basic antigua sólo permita nombres de variables formados por una única
letra, pero lo habitual es que permitan nombres bastante largos:

PRIMERAVARIABLE = 20
SEGUNDAVARIABLE = 55
RESULTADO = PRIMERAVARIABLE * SEGUNDAVARIABLE
PRINT "RESULTADO VALE:" ; RESULTADO

En la gran mayoría de versiones del lenguaje Basic, serán válidos nombres de variables que
empiecen por una letra y después contengan letras o números (y en algún caso, algún otro
símbolo, como el signo de subrayado). No podrán contener espacios, caracteres internacionales
(letras acentuadas, eñes, etc), ni casi ningún signo de puntuación (puntos, comas, etc). Algunos
símbolos especiales podrán aparecer al final del nombre de una variable, y tendrán un cierto
significado, pero eso lo veremos un poco más adelante...

Eso sí, hay algunas versiones antiguas de basic que permiten nombres de variables largos, pero
desprecian las letras que aparecen a partir de una cierta posición. Por ejemplo, si un intérprete de
Basic sólo considera las ocho primeras letras de cada variable, considerará que una variable
llamada VARIABLETEMPORAL1 y otra llamada VARIABLETEMPORAL2 son la misma. Es algo
que deberíamos comprobar con la versión de Basic que usemos, porque puede dar lugar a errores
muy difíciles de detectar.

Otro problema que puede existir con las variables se debe al hecho de que en el lenguaje Basic
no es necesario declarar una variable antes de usarla: no hace falta decir "voy a usar una
variable llamada X", sino que el propio intérprete de Basic, cada vez que ve una variable nueva la
acepta como válida y le da el valor 0. ¿Qué problemas puede provocar esto? Vamos a verlo con
un ejemplo:

PRIMERAVARIABLE = 20
SEGUNDAVARIABLE = 55
RESULTADO = PRIMERAVARIABLE * SEGUDNAVARIABLE
PRINT "RESULTADO VALE:" ; RESULTADO

Me temo que el resultado que obtenemos no es el que queríamos obtener: 20*55 = 1100, pero sin
embargo nuestro programa está respondiendo RESULTADO VALE: 0 ¿Por qué? El fallo está en
la línea 30: no hemos escrito SEGUNDAVARIABLE, sino SEGUDNAVARIABLE, hemos
cambiado de sitio las letras N y D. En otros lenguajes, esto haría que recibiésemos una aviso de
que la variable llamada SEGUDNAVARIABLE no se ha declarado previamente, pero en Basic no
ocurre así: se da por sentado que hemos escrito correctamente la variable, y se le da el valor 0.
Por eso el resultado de nuestro programa es 22*0 = 0, correcto para el intérprete de Basic... pero
posiblemente incorrecto para nosotros.

Esto supone que haya que teclear con MUCHO CUIDADO y que aún así se deba PROBAR todos
los programas con varios datos, para los que sepamos el resultado que se deba obtener. En

Página 18 de 34
Universidad Nacional Informática – Programación
del Chaco Austral Lic. en Biotecnología

cuanto notemos algo raro, habrá que revisar el programa.

Las variables que hemos estado utilizando hasta ahora estaban almacenando números.
Concretamente, almacenaban números enteros (sin decimales). Esto es lo que permitirá cualquier
versión del lenguaje Basic. En algunas versiones podremos almacenar otros tipos de datos, como
números reales (con decimales), de distintas precisiones, y ya veremos cómo sabrá nuestro
intérprete de Basic que se trata de números reales o del tipo de datos que sea.

Pero existe otro tipo de datos que podrá guardar casi cualquier versión de Basic, y que
utilizaremos mucho en la práctica: se trata de cadenas de texto: conjuntos de una o más letras
que utilizaremos para escribir mensajes, por ejemplo.

La variables que almacenen cadenas de texto deberán tener nombres terminados con el signo $:

LET NOMBRE$="JUAN PEDRO"


PRINT "HOLA " ; NOMBRE$

Podemos concatenar dos cadenas de texto con el signo +:

LET SALUDO$="HOLA "


INPUT "INTRODUCE TU NOMBRE" ; NOMBRE$
FRASE$ = SALUDO$ + NOMBRE$
PRINT FRASE$

Así, si el usuario teclea ALBERTO cuando se le pide su nombre, el valor de FRASE$ (que se
mostraría en pantalla en la línea 40) sería HOLA ALBERTO

4. Los comentarios; varias líneas en una; mayúsculas y minúsculas.

A veces nos puedes interesar que en nuestro programa aparezcan comentarios, que a nosotros
nos aclaren por qué hemos dado un cierto paso. Será muy útil cuando se trabaje en grupo, o
incluso cuando nosotros mismos tengamos que revisar un programa un cierto tiempo después de
haberlo creado: nos ahorrará tiempo de "descifrar" qué habíamos hecho y por qué.

Los comentarios en Basic se indican con la palabra REM (abreviatura de REMARK, comentario,
en inglés):

REM SIMPLEMENTE UN SALUDO


PRINT "HOLA"

La gran mayoría de las versiones del lenguaje Basic permitirán abreviar todavía más la palabra
REM, poniendo un apóstrofe ( ' ) en su lugar:

' SIMPLEMENTE UN SALUDO


PRINT "HOLA"

Hasta ahora hemos estado poniendo cada orden en una línea, pero esto no tiene por qué ser así:

Página 19 de 34
Universidad Nacional Informática – Programación
del Chaco Austral Lic. en Biotecnología

también podemos incluir varias ordenes en una misma línea, si las separamos con el símbolo
de "dos puntos" ( : )

INPUT "DAME TU NOMBRE"; NOMBRE$ : PRINT "HOLA, "; NOMBRE$


PRINT "HASTA LUEGO" : REM AQUI SE ACABA

En el ejemplo anterior, hemos incluido una orden INPUT y una PRINT en la misma línea, y
después una PRINT y una REM también en una misma línea.

Una observación: será peligroso hacer cosas como

REM AQUI SE ACABA : PRINT "HASTA LUEGO"

porque la mayoría de las versiones de Basic considerará como comentario todo lo que sigue a la
orden REM, y en este caso eso incluye también a los dos puntos, a la orden PRINT y al texto
entre comillas, de modo que la orden PRINT no llegaría a actuar.

También vamos a puntualizar otra cosa más: hasta este momento he escrito todos los programas
en mayúsculas, pero esto no tiene por qué ser así. Puede que encontremos una computadora tan
antiguo que sólo permita escribir en mayúsculas, pero no es lo normal hoy en día. Por eso. yo
empezaré a utilizar mayúsculas y minúsculas para conseguir una mayor legibilidad. Emplearé
mayúsculas para las palabras reservadas en Basic (los nombres de la órdenes) y minúsculas para
las variables. Aun así, la gran mayoría de las versiones de Basic no distinguen entre mayúsculas y
minúsculas, de modo que "PRINT" sería lo mismo que "print", y la variable "NOMBRE$" sería la
misma que "nombre$". Eso sí, no emplearé acentos en los fuentes, porque pueden verse
incorrectamente en ciertos sistemas.

Vamos a ver un ejemplo, que pida dos números al usuario y muestre su suma, pero ya escrito con
un poco más de corrección:

' Sumar dos numeros que introduzca el usuario


PRINT "Introduce los dos numeros que quieres sumar"
INPUT "Primer numero"; x
INPUT "Segundo numero"; y
PRINT "Su suma es "; x+y

5. Los bucles: FOR.

La palabra "bucle" es el nombre que se da a una parte del programa que se repite un cierto
número de veces. En Basic, esto se consigue con la orden FOR, que vamos a ver directamente
con un ejemplo:

' Escribimos un saludo 10 veces


FOR i = 1 TO 10
PRINT "Hola"
PRINT "Como estas?"
NEXT i
PRINT "Se acabaron las repeticiones"

Página 20 de 34
Universidad Nacional Informática – Programación
del Chaco Austral Lic. en Biotecnología

En español, este FOR se podría traducir como un "Desde", de modo que la línea 20 sería "desde
que 1 valga 1 hasta 10", es decir estamos usando una variable auxiliar, que comenzará valiendo
1, y el trozo de programa se repite lo hará hasta que esa variable i valga 10.

La línea 50 indica el final de la parte que se repite, y hace que se pase al próximo (next) valor de
la variable i. Es decir, hace que pase de 1 a 2 y que se vuelvan a repetir las líneas 30 y 40; en la
siguiente pasada, i aumenta de 2 a 3, y se vuelven a repetir las líneas 30 y 40; así sucesivamente,
hasta que i vale 10, momento en que dejan de repetirse las líneas 30 y 40.

El resultado de este programa será:

Hola
Como estas?
Hola
Como estas?
Hola
Como estas?
Hola
Como estas?
Hola
Como estas?
Hola
Como estas?
Hola
Como estas?
Hola
Como estas?
Hola
Como estas?
Hola
Como estas?
Se acabaron las repeticiones

Es muy frecuente emplear la orden FOR para contar, aprovechando eso de que la variable
empieza valiendo 1 y termina valiendo lo que le indiquemos. Por ejemplo, podemos contar del 1 al
8 así:

10 ' Escribimos del 1 al 8


20 FOR n = 1 TO 8
30 PRINT n
40 NEXT n

que escribiría lo siguiente en pantalla:

1
2
3
4
5
6
7
8
Página 21 de 34
Universidad Nacional Informática – Programación
del Chaco Austral Lic. en Biotecnología

6. Comprobación de condiciones. IF.

La forma básica de comprobar condiciones es con la construcción "IF condición THEN orden".
Un ejemplo de su uso podría ser:

PRINT "Introduzca un numero"


INPUT x
IF x > 10 THEN PRINT "Es mayor de 10"

Los Basic modernos, que trabajan sin números de línea, suelen permitir otra forma ampliada:de
escribir la orden IF, que permite dar varios pasos si se cumple la condición o si no se cumple, y
que termina con ENDIF:

IF condición THEN
lista_de_ordenes_1
ELSE
lista_de_ordenes_2
ENDIF

Hemos empleado el signo ">" para ver si una variable es mayor que un cierto valor. Veamos cómo
se indican las otras comparaciones posibles:

> Mayor que


>= Mayor o igual que
< Menor que
<= Menor o igual que
= Igual a
<> Distinto de

Las condiciones se pueden enlazar con AND ( y ), OR ( ó ), NOT ( no ), pero entonces puede
ser interesante emplear paréntesis, para que el resultado sea más legible (y para evitar problemas
de precedencia de operadores, que no trataremos todavía), por ejemplo:

IF ((a>2) AND (b<>3)) OR (NOT (c>3)) THEN PRINT "Es valido"

7. Funciones predefinidas en Basic.

En el lenguaje Basic contamos con una serie de funciones predefinidas que nos pueden resultar
muy útiles. Unas son funciones matemáticas, como el valor absoluto o el coseno de un ángulo;
otras nos permitirán escoger parte de una cadena de texto (por ejemplo las letras de más a la
izquierda), etc. Veremos las más habituales.

Las órdenes matemáticas que encontraremos casi en cualquier intérprete de Basic son:

ABS - Devuelve el valor absoluto de un número.


ATN - Devuelve el arco tangente.
COS - Devuelve el coseno de un ángulo (medido en radianes).
SIN - Devuelve el seno de un ángulo (medido en radianes).
LOG - Devuelve el logaritmo natural o neperiano (base e).
EXP - Devuelve la exponencial (e elevado al número).

Página 22 de 34
Universidad Nacional Informática – Programación
del Chaco Austral Lic. en Biotecnología

RND - Devuelve un número aleatorio entre 0 y 1 (se deberá


usar junto con RANDOMIZE).
SQR - Devuelve la raíz cuadrada de un número.
INT - Devuelve el mayor número entero que es menor o igual
que el número dado.

En cuanto a los números aleatorios (generados al azar), la orden RANDOMIZE es la que hace
que se comiencen a generar a partir de una cierta "semilla". Se usa "RANDOMIZE numero". El
problema es que si escribimos, por ejemplo, RANDOMIZE 2, siempre obtendremos la misma
secuencia de números "aleatorios". Si queremos números realmente "al azar", la mejor solución
suele ser basarse en el reloj interno del sistema (si la computadora lo tiene), dado que será casi
imposible que la computadora se ponga siempre en marcha a la misma hora (con una precisión de
centésimas de segundo). Eso, en QBasic se consigue escribiendo RANDOMIZE TIMER.

Un ejemplo que pruebe estas funciones sería:

10 REM Funciones matematicas


20 CLS
30 PRINT "Valor absoluto de -5: "; ABS(-5)
40 PRINT "Coseno de 0,5 radianes: "; COS(0.5)
50 PRINT "Seno de 0,5 radianes: "; SIN(0.5)
60 PRINT "Arco cuya tangente vale 1: "; ATN(1)
70 PRINT "Logaritmo natural de 10: "; LOG(10)
80 PRINT "El númer e vale: "; EXP(1)
90 PRINT "La raiz de 125 es: "; SQR(125)
100 PRINT "La parte entera de 4,7 es: "; INT(4.7)
110 RANDOMIZE TIMER
120 PRINT "Un número al azar: "; RND

Y su resultado (con QBasic) es:

Valor absoluto de -5: 5


Coseno de 0,5 radianes: .8775826
Seno de 0,5 radianes: .4794255
Arco cuya tangente vale 1: .7853982
Logaritmo natural de 10: 2.302585
El númer e vale: 2.718282
La raiz de 125 es: 11.18034
La parte entera de 4,7 es: 4
Un número al azar: .5464441

Por otra parte, las órdenes para manipular cadenas de texto que permitirán casi todas las
versiones de Basic son:

LEN - Longitud de la cadena de texto.


VAL - Valor numérico de la cadena.
RIGHT$ - Toma varias letras de la derecha de la cadena.
LEFT$ - Toma varias letras de la izquierda de la cadena.
MID$ - Toma varias letras intermedias de la cadena.
CHR$ - Letra o símbolo con un cierto código ASCII
ASC - Dice el código ASCII de una letra o símbolo

Página 23 de 34
Universidad Nacional Informática – Programación
del Chaco Austral Lic. en Biotecnología

(Nota: el código ASCII es un estándar que permite guardar la información dentro dla computadora,
representando internamente cada letra con un cierto número).

Un ejemplo sería:

10 REM Funciones de cadena


20 CLS
30 texto1$ = "Texto de prueba"
40 texto2$ = "23"
50 PRINT "La longitud del texto 1 es: "; LEN(texto1$)
60 PRINT "Las primeras 5 letras son: "; LEFT$(texto1$, 5)
70 PRINT "Las 6 ultimas son: "; RIGHT$(texto1$, 6)
80 PRINT "De la 3 a la 7 son: "; MID$(texto1$, 3, 5)
90 PRINT "El doble del texto 2 es: "; VAL(texto2$)*2
100 PRINT "El codigo ASCII de la A es: "; ASC("A")
110 PRINT "La letra 99 es: "; CHR$(99)

Cuyo resultado será:

La longitud del texto 1 es: 15


Las primeras 5 letras son: Texto
Las 6 ultimas son: prueba
De la 3 a la 7 son: xto d
El doble del texto 2 es: 46
El codigo ASCII de la A es: 65
La letra 99 es: c

8- Otros bucles - While, Loop...

Hemos visto como emplear la orden FOR para hacer que una parte de un programa se repita
incondicionalmente. También hemos comentado cómo comprobar condiciones con la orden IF.

Pero en la práctica es muy frecuente que nos encontremos una "mezcla" de ambas cosas: una
serie de operaciones que se deben repetir mientas se cumpla una cierta condición.

La primera es la orden WHILE, cuyo formato es

WHILE condición
órdenes
WEND

De modo que podríamos reescribir nuestro programa de una forma mucho más legible:

10 CLS
15 WHILE clave$ <> "xjk5"
20 PRINT "ESCRIBE TU CLAVE DE ACCESO"
30 INPUT clave$
40 WEND

Lo de escribir las líneas 20 y 30 más a la derecha es sólo buscando que resulte más fácil de leer,
los intérpretes de Basic "se saltarán" estos espacios en blanco (aunque puede que alguno "los
borre"), de modo que "no estorban", pero a cambio conseguiremos que se vea mejor dónde
Página 24 de 34
Universidad Nacional Informática – Programación
del Chaco Austral Lic. en Biotecnología

empieza y donde terminar la parte que se repite. (Este tipo de "sangrados" en un programa es lo
que se conoce como escritura indentada).

En este programa hay una cosa peligrosa: estamos comprobando el valor de la variable clave$
antes de que se haya usado. En la mayoría de las versiones de Basic, la primera que usamos una
variable, se le da automáticamente el valor 0 (si es numérica) o el de una cadena de texto vacía
(si es texto), de modo que no tendríamos problemas. Aun así, no es mala costumbre "dejarlo
claro" en el propio programa, para evitar que quede "basura" de otras veces que hubiéramos
utilizado nuestro programa:

5 clave$ = "" : ' Aseguramos que la cadena este vacia


10 CLS
15 WHILE clave$ <> "xjk5"
20 PRINT "ESCRIBE TU CLAVE DE ACCESO"
30 INPUT clave$
40 WEND

Las versiones más modernas de Basic (como QBasic) permiten otra opción más elegante y con
más posibilidades: la construcción DO..LOOP, que se puede emplear de varias formas:

DO WHILE condición
órdenes
LOOP

(se repite MIENTRAS se cumpla la condición, pero esa condición se comprueba antes que nada)
o bien:

DO
órdenes
LOOP WHILE condición

(se repite MIENTRAS se cumpla la condición, pero esa condición se comprueba tras cada
"vuelta") o bien:

DO UNTIL condición
órdenes
LOOP

(se repite HASTA QUE se cumpla la condición, pero esa condición se comprueba lo primero de
todo)o también:

DO
órdenes
LOOP UNTIL condición

(se repite HASTA QUE se cumpla la condición, pero esa condición se comprueba en último lugar)

De modo que la forma más elegante de escribir el programa anterior con QBasic y otros Basic
modernos sería:

Página 25 de 34
Universidad Nacional Informática – Programación
del Chaco Austral Lic. en Biotecnología

CLS
DO
PRINT "ESCRIBE TU CLAVE DE ACCESO"
INPUT clave$
LOOP UNTIL clave$ = "xjk5"

que además coincide con la forma "natural" en que nosotros expresaríamos lo que queremos: algo
como "pedir la clave de acceso, hasta que la introducida sea la correcta".

9. Más sobre la orden PRINT.

Hemos visto que podemos escribir un texto en pantalla si lo indicamos entre comillas en una orden
PRINT:

PRINT "Bienvenido"

y mostrar el valor de una variable si no usamos comillas:

PRINT nombre$

También sabemos que podemos escribir varias cosas en la misma línea, si incluimos un punto y
coma entre dos PRINT (y entonces aparecerá junto) o si usamos una coma (y entonces aparece
separado por un cierto número de espacios).

PRINT "Bienvenido" ; nombre$ , "Pulsa una tecla para seguir"

Pero también podemos indicar que el cursor salte hasta una cierta posición de la línea, usando
TAB, o decir cuantos espacios queremos que separen una frase de la otra, usando SPC, así:

PRINT "Bienvenido" ; TAB(30); nombre$ ;


PRINT SPC(10) ; "Pulsa una tecla para seguir"

En la mayoría de versiones de Basic, estas dos órdenes escribirían la palabra Bienvenido, luego
saltarían hasta la columna 30, escribirían el valor de la variable Nombre$, dejarían 10 espacios en
blanco y mostrarían el texto final.

Nota: Hay alguna versión de Basic en la que no existe SPC, y alguna en la que TAB(20) no salta
hasta la columna 20, sino que deja 20 espacios en blanco a partir de la posición actual.

Hay otra posibilidad de PRINT que no hemos visto, y que puede ser muy interesante para cuando
queramos dar formato a una gran cantidad de números. Se trata de PRINT USING, que nos
permite indicar la cantidad de cifras total, la de decimales, si queremos punto en los miles, etc-
Vamos a verlo directamente con un ejemplo

a = 100
b = 1234.56

PRINT USING "#####.###"; a; b


PRINT USING "#####,.###"; a; b
PRINT USING "#####,"; a; b
Página 26 de 34
Universidad Nacional Informática – Programación
del Chaco Austral Lic. en Biotecnología

PRINT USING "##"; a; b


PRINT USING "+#####.#"; a; b
PRINT USING "**#######.#"; a; b

Da como salida

100.000 1234.560
100.000 1,234.560
100 1,235
%100%1235
+100.0 +1234.6
******100.0*****1234.6

Debería ser fácil de entender, pero vamos a resumir:

 Cada # indica la posición de una cifra numérica. Por ejemplo, #### dejaría 4 espacios para
números.
 Con un punto (.) se indica cuantas posiciones decimales queremos. Por ejemplo, ###.##
deja tres espacios antes de la coma y dos posiciones decimales (eso sí, la "coma decimal"
aparece como un punto; si estamos en España o en algún otro país que use la coma para
los decimales, el resultado no será del todo correcto.
 Una coma (,) a la izquierda del punto decimal indica que también queremos separar los
miles (nuevamente, el resultado no será lo que desearíamos en España, porque se
separarían con comas, y nosotros usamos puntos).
 Si no hay suficiente hueco para todas las cifras del número, se escribe el número entero,
pero se precede por el símbolo % para avisarnos de que no está todo lo colocado que
debería, como en el caso de "##"; 100
 Si comenzamos con + obligamos a que se muestre el signo, tanto si es positivo (que no
sería estrictamente necesario) como si es negativo.
 Si empezamos por **, los espacios en blanco que queden a la izquierda se rellenan con
asteriscos.
 (Hay más posibilidades, pero nos vamos a quedar en las más habituales, que son éstas).

Nota: No todas las versiones de Basic reconocen PRINT USING.

10. Más control de la pantalla.

En la gran mayoría de las versiones de lenguaje Basic, podremos borrar la pantalla y escribir texto
en distintas posiciones de la pantalla y en distintos colores. Vamos a ver las formas más
habituales para conseguirlo...

La orden para borrar la pantalla es CLS, y se trata de una orden que casi todas las versiones de
Basic incorporan::

CLS

Página 27 de 34
Universidad Nacional Informática – Programación
del Chaco Austral Lic. en Biotecnología

La orden para escribir en una cierta posición de la pantalla (en "modo texto") no es estándar:
cada versión de Basic tiene la suya propia. Por ejemplo en QBasic se emplea la orden LOCATE
fila, columna, así:

10 LOCATE 10, 30
20 PRINT "hola"

Otros intérpretes de Basic pueden emplear otras ordenes, como PRINT AT, PRINT CSR, PRINT
@, etc, o puede que escriban la columna antes de la fila.

En el caso de QBasic, además tenemos dos funciones que nos dicen en qué fila de la pantalla
está el cursor (CSRLIN) y en que columna (POS(0)), así:

5 CLS
10 LOCATE 10, 30
20 PRINT "hola";
30 fila = CSRLIN
40 columna = POS(0)
50 PRINT "El cursor estaba en "; fila; "," ;columna

El resultado de este programa sería:

holaEl cursor estaba en 10 , 34

(Nota: Entre el paréntesis que sigue a POS se podría incluir cualquier expresión, que se va a
ignorar, pero por simplicidad era frecuente escribir un cero, como he hecho yo).

La orden para cambiar el color de texto en QBasic es COLOR pluma, fondo. A partir de esta
orden, se comenzará a escribir en los colores que hayamos indicado, y seguirá así hasta que
usemos otra orden COLOR distinta. Para escribir la palabra Hola en letras amarillas y con fondo
azul, usaríamos:

10 COLOR 14,1
20 PRINT "hola"

Los colores de texto ("pluma") en QBasic y GwBasic trabajando con una computadora PC serían
los siguientes:

0 Negro
1 Azul
2 Verde
3 Azul-verdoso
4 Rojo
5 Magenta
6 Marrón
7 Blanco (gris claro)

8 Gris (oscuro)
9 Azul claro
10 Verde claro
Página 28 de 34
Universidad Nacional Informática – Programación
del Chaco Austral Lic. en Biotecnología

11 Azul-verdoso claro
12 Rojo claro
13 Magenta claro
14 Amarillo
15 Blanco de alta intensidad

En "condiciones normales" (se puede evitar, pero no entraremos en tanto detalle), en una
computadora PC con pantalla a color, los colores 0 a 7 son los que se pueden utilizar como fondo.
Si escribimos un color de fondo con un valor entre 8 y 15, se usará el correspondiente entre 0 y 7.
Por ejemplo:

10 COLOR 9,14
20 PRINT "hola"

Será equivalente a escribir COLOR 9, 6, es decir, que el color de pimer plano sí que será azul
claro, pero el fondo no será amarillo, sino marrón.

11. Más control del teclado.

Hemos visto que podemos esperar a que el usuario teclee algo, utilizando la orden INPUT. Pero
esta orden tiene una característica que hace que no resulte útil en muchas ocasiones: el programa
queda totalmente parado hasta que no se teclee la respuesta y se pulse la tecla Intro.

Eso es algo que en muchas ocasiones no nos interesará. Por ejemplo, si queremos crear un
juego, no podemos hacer que todos los enemigos queden parados hasta que nosotros pulsemos
una tecla. El programa debería seguir avanzando, comprobar cada cierto tiempo si hemos pulsado
un tecla, y proseguir después, tanto si la hemos pulsado o no.

Casi todos los Basic incoporan una forma de comprobar si se ha pulsado una tecla, que es
empleando INKEY$. Esta función nos devolverá la tecla que se ha pulsado, o un texto vacío ("") si
no se ha pulsado ninguna tecla. Un primer ejemplo de su uso podría ser este:

10 tecla$ = INKEY$
20 IF tecla$ = "" THEN GOTO 10
30 PRINT "Ha pulsado la tecla "; tecla$

Los valores que devuelve cada tecla pulsada los podemos prever en la mayoría de los casos:
Será "a" si se pulsa la tecla de la A y no están las mayúsculas activadas, y será "A" si se pulsa la
tecla de la A y mientras están las mayúsculas activadas (con la tecla Bloq Mays o manteniendo
pulsada la tecla de mayúsculas mientras se pulsa A); de igual modo obtendremos un "1" si se
pulsa la tecla del 1, tanto en el teclado alfanumérico como en el teclado numérico auxiliar. Pero
hay ciertas teclas que no son símbolos alfanuméricos y no resulta tan evidente el valor que
devolverán. Vamos a ver alguna de ellas:

 Intro devuelve el carácter número 13.


 ESC devuelve el carácter número 27.
 Retroceso devuelve el carácter número 8.
 Tabulador devuelve el carácter número 9.
 Las teclas de función F1 a F12 de un PC, así como otras teclas especiales de estos
mismos computadoras, devuelven dos bytes seguidos: primero un 0 y luego otro código

Página 29 de 34
Universidad Nacional Informática – Programación
del Chaco Austral Lic. en Biotecnología

que es el número de tecla que se ha pulsado (desde F1=59 hasta F10 =68, y también 133
para F11 y 134 para F12).

Podemos crear nosotros mismos un programa que nos muestre el símbolo que corresponde a
cada tecla y el número que ese símbolo tiene dentro del código ASCII:

10 PRINT "Pulse una tecla (Z para salir)"


20 tecla$ = INKEY$
30 IF tecla$ = "" THEN GOTO 20
40 PRINT "Ha pulsado "; tecla$; " (número"; ASC(tecla$); ")"
50 IF (tecla$ = "z") OR (tecla$ = "Z") THEN END
60 GOTO 10

Vamos a ver un ejemplo más avanzado. Vamos a hacer un programita que lea una clave de
acceso. Deberá leer de tecla en tecla, mostrando un asterisco cada vez. Si se pulsa retroceso,
deberá borrar la última letra. Si se pulsa Intro, deberá dar por terminada la introducción. Lo
haremos usando QBasic, sin números de línea.

CLS
PRINT "Introduzca su contraseña"

tecleado$ = "" ' Lo que realmente se teclea


pantalla$ = "" ' Los * que se ven en pantalla

claveCorrecta$ = "Nacho" ' La clave a adivinar

DO

DO
tecla$ = INKEY$
LOOP WHILE tecla$ = ""

SELECT CASE tecla$

CASE CHR$(13) ' Si es Intro, terminamos


EXIT DO

CASE CHR$(8) ' Si es Retroceso, borramos la última


letras = LEN(tecleado$)
IF letras > 0 THEN
tecleado$ = LEFT$(tecleado$, letras - 1)
pantalla$ = LEFT$(pantalla$, letras - 1)
END IF

CASE ELSE ' En caso contrario, añadimos


tecleado$ = tecleado$ + tecla$
pantalla$ = pantalla$ + "*"

END SELECT

Página 30 de 34
Universidad Nacional Informática – Programación
del Chaco Austral Lic. en Biotecnología

LOCATE 3, 1 ' Mostramos los * en el mismo sitio


PRINT pantalla$; " " ' Un espacio después por si borramos

LOOP UNTIL tecla$ = CHR$(13)

IF tecleado$ = claveCorrecta$ THEN


PRINT "Clave correcta"
ELSE
PRINT "Clave NO correcta"
END IF

12. Gráficos

La forma de crear gráficos de alta resolución desde el lenguaje Basic depende mucho de la
versión de lenguaje Basic que estemos empleando. Me centraré en QBasic para MsDos, y
después comentaré los principales cambios para algún otro.

Un ejemplo básico sería el que fuera capaz de cambiar a modo gráfico y dibujar una línea. Así,
en QBasic podríamos pasar a modo gráfico de 320x200 puntos (que permitirá casi cualquier
ordenador tipo PC, por antiguo que sea) y dibujar una línea desde la esquina superior izquierda
hasta el centro de la pantalla

10 SCREEN 1
20 LINE (0, 0)-(160, 100)

Primero haré un par de comentarios sobre este programa y después veremos algo más de
detalle sobre las órdenes SCREEN y LINE

 He incluido números de línea por seguir la misma "metodología" que hasta ahora, pero en
el caso de QBasic, no es necesario indicarlos, basta con escribir las líneas una tras otra.
 La orden SCREEN es la que nos permite cambiar de un modo de pantalla a otro (texto o
gráfico, con mayor o menor nivel de detalle). La orden LINE será la que usaremos para
dibujar líneas en pantalla.

SCREEN.

Como ya hemos visto, esta orden permite elegir el modo de pantalla. Los que podemos elegir en
QBasic son:

 0: Modo sólo de texto (habitualmente 80 columnas y 25 filas).


 1: Modo gráfico de 320 x 200 puntos. Es necesario tener una tarjeta gráfica CGA. Los
colores a usar están limitados: el fondo se puede elegir entre 16 posibles, pero para primer
plano se ha de escoger uno de dos juegos de 3 colores prefijados.
 2: Modo gráfico de 640 x 200 puntos. Es necesaria una tarjeta gráfica CGA. Sólo se puede
usar un color de fondo y otro de primer plano.
 3: Modo gráfico de 720 x 348 puntos, monocromo. Es necesario tener una tarjeta gráfica
Hercules y haber cargado el controlador "MSHERC.COM".

Página 31 de 34
Universidad Nacional Informática – Programación
del Chaco Austral Lic. en Biotecnología

 4: Modo gráfico de 640 x 400 puntos, fondo negro y un color de primer plano a elegir entre
16. Sólo es para ciertos computadoras Olivetti.
 7: Modo gráfico de 320 x 200 puntos, en 16 colores. Necesaria una tarjeta EGA.
 8: Modo gráfico de 640 x 200 puntos, en 16 colores. Necesaria una tarjeta EGA.
 9: Modo gráfico de 640 x 350 puntos, con 16 colores (de una paleta de 64 colores
posibles). Necesaria una tarjeta EGA.
 10: Modo gráfico de 640 x 350 puntos, monocromo. Necesaria una tarjeta EGA y monitor
monocromo.
 11: Modo gráfico de 640 x 480 puntos, 2 colores. Necesaria una tarjeta MCGA o VGA.
 12: Modo gráfico de 640 x 480 puntos, 16 colores (de entre aproximadamente 262.000
colores posibles). Necesaria una tarjeta VGA.
 13: Modo gráfico de 320 x 200 puntos, 256 colores (de entre aproximadamente 262.000
colores posibles). Necesaria una tarjeta MCGA o VGA.

Hoy en día, en cualquier ordenador mínimamente "moderno" (un PC con procesador 386 o
superior) lo razonable es usar los modos 12 o 13, según deseemos tener más puntos en pantalla
(que serán puntos más pequeños, tendremos más detalle) o mayor número de colores.

Algunos de estos modos de pantalla permiten trabajar con varias "páginas" de información, una de
las cuales será visible en cada momento (las demás quedan "ocultas", pero se pueden mostrar
cuando queramos, lo que era una forma habitual de crear animaciones). Es un detalle en el que
nosotros no entraremos.

LINE.

La forma básica de crear líneas es: LINE (x1, y1) - (x2,y2) Es decir, se indican las coordenadas X
e Y de un extremo de la línea, entre paréntesis, después un guión y después las coordenadas X e
Y del otro extremo de la línea, también entre paréntesis.

También se puede añadir otro "parámetro" más, para indicar el color de la línea. Por ejemplo,
podríamos dibujar una línea amarilla en el modo 640x480 de 16 colores, así:

10 SCREEN 12
20 LINE (0, 0)-(160, 100), 14

Pero todavía podemos hacer más cosas con la orden LINE. Por ejemplo, añadiendo el parámetro
"B" podemos dibujar un recuadro (en inglés "box") en vez de una línea, que tenga esos dos
puntos como vértices opuestos:

10 SCREEN 12
20 LINE (0, 0)-(160, 100), 14, B

Y si en vez de una "B" utilizamos "BF", se dibujará un recuadro relleno (del inglés "box" y "filled"):

10 SCREEN 12
20 LINE (0, 0)-(160, 100), 14, BF

Existen otras posibilidades en la orden LINE, como por ejemplo la de dibujar líneas discontínuas
(según un cierto patrón que nosotros indiquemos), pero tampoco entraremos a ese nivel de
Página 32 de 34
Universidad Nacional Informática – Programación
del Chaco Austral Lic. en Biotecnología

detalle.

CIRCLE.

También podemos dibujar círculos, con la orden CIRCLE, en cuyo formato básico se indica el
centro y el radio:

10 SCREEN 12
20 CIRCLE (320, 200), 100

La primera mejora es indicar el color. Podemos dibujar el círculo en amarillo:

10 SCREEN 12
20 CIRCLE (320, 200), 100, 14

Otros tres parámetros que pueden ser interesantes son: ángulo inicial (en radianes), ángulo
final (también en radianes) y relación de aspecto (diferencia de tamaño entre diámetros, para
que el resultado sea una elipse en vez de un círculo):

10 SCREEN 12
20 CIRCLE (320, 200), 100, 0, 3.14, 0.5

Este ejemplo dibuja media elipse, desde los 0 radianes (0 grados) hasta los 3.14 radianes (PI
radianes, 180 grados), y en la que el diámetro vertical es la mitad (0.5) del horizontal.

(Se comienza a dibujar en el extremo más a la derecha del círculo -las 3 en un reloj "de agujas"-, y
se avanza en sentido antihorario -contrario a las agujas del reloj-)

Y se pueden hacer más cosas: rellenar zonas de pantalla, cambiar la paleta de colores, usar
coordenadas relativas en vez de absolutas... pero no profundizaremos tanto... al menos por ahora.

13. Condiciones mejoradas - CASE.

Hemos visto cómo comprobar condiciones con IF. Es algo que todos los Basic permiten, aunque
algunos llegan más allá que otros, permitiendo indicar qué hacer si no se cumple la condición
(ELSE).

En cualquier caso, cuando hay que comprobar muchos posibles valores, resulta incómodo
encadenar muchos IF seguidos. Por eso, los Basic más modernos (como QBasic) incluyen la
construcción "SELECT CASE". Esta se usa así:

SELECT CASE variable


CASE valor1
lista de órdenes
CASE valor2
lista de órdenes
Página 33 de 34
Universidad Nacional Informática – Programación
del Chaco Austral Lic. en Biotecnología

CASE ELSE
lista de órdenes
END SELECT

También se puede comparar con varios valores, de un determinado rango (4 TO 12) o que
cumplan una determinada condición (IS >=30). Veamos un ejemplo:

INPUT "Escriba la nota obtenida (0-10): ", nota


SELECT CASE nota

CASE 10
PRINT "Matricula de honor"
PRINT "Un examen Impecable"

CASE 9
PRINT "Sobresaliente"
PRINT "Un examen casi perfecto"

CASE 7 TO 8
PRINT "Notable"
PRINT "Los fundamentos están bastante consolidados"

CASE 5 TO 6
PRINT "Aprobado"
PRINT "Conocimientos básicos"

CASE IS <= 4
PRINT "Suspenso"
PRINT "No ha adquirido los suficientes conocimientos"

END SELECT

Página 34 de 34

También podría gustarte