Documentos de Académico
Documentos de Profesional
Documentos de Cultura
I9 Hora 7
26: LoOP WHILE (userGuess$ <> compAns$) ' TermÍnar cuando Ia letra
' es igual
27i
28: ' El usuario adivinó la letra, avísale
29: PRINT tr*** iFelicidades! iEs Ia letna correctat"
30: PRINT " Le IIevó " ; tries; " intentos , "
31: END
Una de las principales virtudes de BASIC es su manejo de datos de cadena. Los datos de ca-
dena consisten en caracteres, palabras y oraciones, a diferencia de los datos numéricos. BA-
SIC tiene muchas rutinas integradas que pueden alinear cadenas a la izqüerda o a la derecha
y seleccionar uno o varios caracteres de una cadena. Estas capacidades de manejo de cadenas
no son tan sencillas en C, Pascal, COBOL o FORTRAN como lo son en BASIC.
No deje que la aparente disposición aleatoria de la pantalla de Visual Basic le asuste. A medi-
da que aprenda sobre Visual Basic durante la hora 14, entenderámejor la relación entre las
distintas partes de la pantalla y conocerá modos para hacer que la pantalla tenga la apariencia
que usted prefiera. Visual Basic le permite reacomodar y esconder ciertas partes de la pantalla
para que pueda personalizar su apariencia y "tacto" y darle el aspecto que más le satisfaga.
Lenguajes de programación: la época moderna 139 i
I
Frcunn 7.1
La pantalla inicial de
Visual Basic abre las
ventanas necesorias
para la programación
grdfica.
Los programas en Windows son difíciles de escribi¡, tanto para programadores principiantes
como para avanzados no acostumbrados a este ambiente. Además de esta hora, aprenderá
acerca de la codificación para el ambiente de programación en Windows durante la hora 13,
"Consideraciones de programación en Windows".
Visual Basic es uno de los primeros ambientes de programación de Windows que ofrece tanto
un intérprete como un compilador. Puede aprender Visual Basic y probar sus programas en el
modo interpretado y luego compilarlos para su distribución a los usuarios. Además del soft-
ware relacionado con Windows que queda en memoria durante la operación de Windows, la
administración que lleva a cabo Windows de manera continua puede hacer lento un programa
en Visual Basic. Debe supervisar varias actividades que un programa MS-DOS no realizaba
en la época anterior a Windows. El compilador de Visual Basic no apareció sino hasta la ver-
sión 5, por lo que no tuvo mayor impacto en los departamentos de programación hasta que
Microsoft liberó Visual Basic como intérprete y compilador.
Visual Basic fue la primera herramienta de programación de Windows que permitió al princi-
piante crear programas sencillos para Windows sin conocer C. Antes de Visual Basic, la ma-
yoía de los programas se escribían en C mediante el Kit de desarrolladores de software
(SDK) de Microsoft. El único requisito para aprender Visual Basic es conocer el funciona-
miento general de las aplicaciones en Windows. Si está familiarizado con una o dos aplicacio-
nes de Windows, como el procesador de texto Word, sabe todo lo necesario para comenzar a
escribir progmmas en Visual Basic.
Orientación gráfica
Hay una división entre algunos bandos de programadores sobre si se debe usar Visual Basic o
algrún lenguaje mas "serio", como C++, en el ambiente Windows. Debido a que el sistemaVi-
sual Basic realiza una buena parte del trabajo del programador, éste üene que preocuparse por
menos. Sin embargo, también tiene menos control sobre el programa final del que podía te-
ner si lo escribiese con un lenguaje como C++. El movimiento hacia Visual Basic, alejrándose
de lenguajes de Windows como Visual C++, comprueba que Visual Basic efectivamente
se puede us¿tr con éxito y se puede tomar en serio como un sistema de programación de
Windows.
No caiga en la trampa de pensar que los ambientes de programación como Visual Basic están
orientados a objetos, aunque tales lenguajes funcionan con objetos en la pantalla. Visual Basic
L. La lección de la hora 16
es de orientación gráfica pero no es un lenguaje orientado a objetos.
explica qué es lo que determina si un programa está orientado a objetos o no.
t,
El problema con los juegos es su gran hambre de recursos de computación. No sólo deben en-
cargarse de los requisitos normales de programación, como ciflculos, archivos en disco e inte-
racción con el usuario, sino también deben ofrecer rápidas acciones con video a color y soni-
do. La capa extra que representa Windows entre el código y el hardware hace que los juegos
sean lentos. A pesar de que Windows es más eficiente que nunca, que el hardware es más rá-
pido y que Microsoft ofrece en Windows nuevas interfaces con programación multimedia,
muchos fabricantes de juegos prefieren pasar por alto el ambiente Windows y escribir nueva-
mente en el modo nativo de la máquina.
La mayor parte de estos fabricantes escriben en C, C++ o lenguaje ensamblador para lograr la
eficiencia que requieren sus juegos. A pesar de que Windows es por mucho el ambiente más
popular en la actualidad, los lenguajes no basados en Windows seguirán teniendo demanda
durante algún tiempo.
Lenguajes de programación: la época moderna 141
si realmente qüere saber qué lenguaje de programación es el mejor para aprender primero,
este libro ya tiene la respuesta. BASIC (o preferiblemente su derivación, QBasic) es el mejor
lenguaje de propósito general para los programadores novatos. Esta es la opinión del autor,
respaldada por unos 3 000 estudiantes de nivel universitario a los que ha enseñado. La lección
de la siguiente hora comienza a desarrollar sus habilidades de programación enseñándole
QBasic.
La mayoría de la gente necesitará más poder del que puede ofrecer QBasic. Una vez que do-
minen un lenguaje de introducción como QBasic, muchas personas cambiarán a Visual Basic,
C o C++. Los empleos actuales reqüeren que usted aonozca C, C++ o Visual Basic y CO-
BOL en los departamentos que trabajan con mainframes. Si quisiera trabajar en organizacio-
nes grandes programando mainframes, deberá aprender COBOL tan pronto como crea estat
listo (una vez que se sienta seguro con QBasic). Sin embargo, la mayoría de la gente tiene ac-
ceso a microcomputadoras y es agradable aprender a programar en PC, pues ofrece una reali-
mentación rápida y se puede hacer en casa. Como aprendió antes en este capítulo, c y C++
son lenguajes de gran demanda, y Visual Basic esüá teniendo también un fuerte impacto en los
departamentos corporativos de programación.
Los lenguajes que conozca determinarán el lenguaje en que programará. Si uabaja en un pro-
yecto urgente (como casi todos los proyectos de procesamiento de datos), no tendrá tiempo de
dominar un lenguaje nuevo por lo que, si todo lo que conoce es Visual Basic, es muy proba-
ble que ese sea el lenguaje que usará.
Muchos factores determinan el lenguaje que emplea una compañía para escribir una aplica-
ción en particular. La compañía tal vez sólo tenga un par de compiladores. De ser así, sus
aplicaciones las escribirá con alguno de ellos. Los compiladores de mainframe suelen costar
miles de dólares; por tanto, es difícil que las empresas vayan de lenguaje en lenguaje en bus-
ca del mejor. Es frecuente que se haga que funcione el lenguaje que se ha comprado.
El tipo de aplicación también ayuda a determinar el mejor lenguaje a usar. Una aplicación
científica en mainframe siempre se haría mejor en FORTRAN, §i hubiese que decidir entre
éste y COBOL. Y COBOL serla el lenguaje de mainframe apropiado para procesar una gran
canüdad de transacciones comerciales.
Recuerde siempre que los lenguajes de programación de alto nivel son de propósito general,
esto es, que sirven para casi cualquier aplicación. COBOL podrla ser una mala selección para
aplicaciones cienlficas, pero puede funcionar si no se cuenta con ofra opción.
Resumen
A medida que maduran, los lenguajes de programación se vuelven más fáciles de usar. La
mayor parte de los lenguajes actuales incluye ambientes integrados y ofrece eI manejo de
programación estructurada. Las interfaces griíficas de usuario, como Windows de Microsoft,
requieren herramientas de programación más complejas, pero los lenguajes fáciles de usar
como Visual Basic, simplifican el ingreso (hasta para los novatos) al mundo de la programa-
ción griáfica.
Preguntas y respuestas
P ¿Cuál es más poderoso, Visual Basic o C++?
R Hasta los gurús de Visual Basic estarán de acuerdo en que C++ es el lenguaje miís po-
deroso desde donde se le vea. Aunque es posible escribir cualquier progama de Win-
dows en Visual Basic, el lenguaje C++ es más flexible y se integra mejor con el
ambiente Windows. Los compiladores de C++ basados en Windows, como Visual C++,
permiten que los programadores de C++ creen los programas de Windows más avanza-
dos que hay en el mercado.
P ¿Por qué aprender Visuat Basic si Visual C++ es mejor?
R Con el poder de Visual C++ viene mucha responsabilidad. C++ es más difícil de apren-
der que Visual Basic. Ademris, su mantenimiento es más compücado en muchos casos.
Es verdad que, si se codifica de manera adecuada con la ayuda de su tecnología de pro-
gramación orientada a objetos (que aprenderá durante la hora 16), un programa en C++
será más fácil de mantener que uno en Visual Basic. Si¡ embargo, la faciüdad de uso y
los constructores más sencillos de Visual Basic, permiten una programación ayatzada
de Windows a los programadores novatos e intermedios, así como a los departamentos de
programación que desean elaborar programas de fácil mantenimiento.
Taller
Las preguntas del cuestionario se presentan para una mayor comprensión. Vea las respuestas
en el apéndice A.
Cuestionario
1. ¿Qué lenguaje parece ofrecer el mejor manejo de las técnicas de programación esüuc-
turada?
2. ¿Qué lenguaje sustituyó a Pascal como el preferido en las PC?
3. ¿Por qué fueron populares tanto Pascal como C en las primeras PC?
4. ¿Cómo se llama el lenguaje C mejorado?
5. ¿Cómo compensan C y C++ su pequeño vocabulario de comandos?
6. ¿Qué lenguaje fue el primero en ofrecer programación orientada a objetos?
7. Verdadero o falso: Visual Basic ofrece tanto un intérprete como un compilador.
8. ¿Qué lenguaje sirvió como lenguaje de programación original de Windows?
9. ¿Dentro de qué ambiente, Windows o DOS, opera Visual Basic?
10. Verdadero o falso: el mejor lenguaje que se puede usar es C++.
ffi
HoRA
Su primer lengual e:
aBasic
Durante esta hora tendrá su primera exposición sobre los detalles de un lenguaje
de programación. Comenzará llevándole a través de una sesión de programación
en QBasic. Más tarde aprenderá c6mo guardar datos de QBasic y ver los resulta-
dos de cáIcu1os. Tras esta lección, podrá escribir sus propios programas en
QBasic.
El comienzo
Si trabaja con Windows 3.1 o es de los pocos que nunca ha cambiado al ambiente de Win-
dows, le resultará más sencillo iniciar QBasic que a quienes usan el sistema operativo
Windows 95 o alguno posterior. Si trabaja en DOS, simplemente inícielo escribiendo OBASIC
, en el indicador de DOS.
Si utilizaWindows 3.1, tal vez tenga un icono etiquetado QBasic en el grupo de programas
Principal (Main). Si no, seleccione el icono MS-DOS del grupo de programas Principal y te-
clee QBasic tras el indicador de DOS que aparece.
lnstalación de QBasic
Para instalar QBasic, siga estos pasos:
5. Seleccione la carpeta oldmsdos. Como se muestra en la figura 8.1, esta carpeta contiene
los dos archivos necesarios para QBasic.
F¡cuRR 8.1
Usted puede instalar
QBasic desde Windows
95 o Windows 98.
6. Seleccione ambos iconos de QBasic (esto lo puede hacer encerrándolos con el ratón).
1. Seleccionados los iconos, haga clic en el signo de más para desplegar el contenido de la
unidad C:. Só1o haga clic en el signo de más, no en el icono, de lo contrario los archi-
vos de QBasic ya seleccionados desaparecerán de su vista.
8. Avance el panel izquierdo hasta que aparezca la carpeta Windows.
9. Haga clic en el signo de más (no en el icono de Windows) para desplegar la carpeta de
Windows.
10. Arastre los archivos de QBasic seleccionados a la carpeta Command ubicada en la car-
peta Windows del panel izquierdo. Con esto se copiarán ambos archivos a la carpeta
Windows y QBasic quedará disponible desde cualquier carpeta.
Ahora ya tiene todo lo que necesita para iniciar QBasic desde el disco duro.
Ejecución de QBasic
Para iniciar QBasic, siga estos pasos:
Flcuna 8.2
Ha iniciado QBasic
con éxito.
E¡ editor de QBas¡c
Recuerde que la escritura de los programas debe ser por medio de un editor. El editor es la
pantalla de entrada tipo procesador de texto donde se escribe el código del programa. El
editor de QBasic es más que un editor; también es un intérprete de QBasic. Desde el edi-
tor de QBasic, puede escribir un programa, ejecutarlo, cambiarlo, ver su salida y guardarlo
en disco para un almacenamiento permanente. La combinación editor/intérprete de QBasic
es precursora del ambiente Visual BASIC, que incluye editor, depurador, intérprete y com-
pilador.
Aunque la mayor parte de los lenguajes de programación son diferentes, a medida que apren-
da QBasic y otros, verá que casi todos los lenguajes de programación tienen mucho en común
con ofros lenguajes. Todos tienen maneras de imprimir la salida y de obtener valores del te-
clado y del disco. Cuentan con comandos para efectuar ciclos, con la repetición de una o va-
rias instrucciones. Pueden tomar decisiones. Algunos llevan a cabo estas acciones con mayor
elegancia y naturalidad que otros. Sin embargo, lo importante es que cada vez conozca un
nuevo lenguaje de programación, el próximo será aún más sencillo de aprender. QBasic es un
buen lugar para el comienzo de su carrera como programador. Incluso si no acaba programan-
do en QBasic para ganarse la vida, encontrará muy útiles las habiüdades de programación que
desarrolle con éste.
Tenga presentes los siguientes puntos mientras trabaja con el editor de QBasic:
Si teclea un error obvio, como una instrucción mal escrita, Visua! Basic lo re-
conoceráy presentará un mensaje de error tan pronto como pulse lntro (vea
la figura 8.3). QBasic intenta resaltar la parte errónea de la instrucción, aun-
que a veces no lo hace exactamente donde sucedió el error. Puede hacer clic
en Sí (OK) para cerrar el cuadro de mensaje y corregir e! error antes de con-
tinuar. (El paso 6 demuestra un error de sintaxis que no puede detectar el
editor sino hasta la ejecución del programa.)
Frcuna 8.3
+If :rj:::v..filt:::::::::a
Auto
El editor de QBasic
:
:. :::::i::t:::::::::::::t::::lt.tTT:lTitti
6: PRINT
7:
8: REM i Sonan Ia sinena !
Qr FOR uP = 100@ T0 15OO STEP 25
1Oz SND UP, 3
11: NEXT up
12=
13: REM Impnimin eI nombne a través de Ia pantalla
14: col=1
15: FOR fila = 1 T0 24
16: LOCATE fila, col
17: PRINT nm$
18: col=col+2
19: NEXT fila
2@: END
4. Asegúrese de que el programa tecleado se vea exactamente como el del paso 3.Haga
una doble revisión. QBasic no puede leer su mente y la exactitud es parte de la pro-
gramación. Sin embargo, puede teclear los comandos en mayúsculas o en minúsculas.
QBasic convierte automáticamente a mayúsculas los comandos que escriba en
minúsculas.
5. Ejecute el programa seleccionando Ejecutar (Run), Iniciar (Start) del menú desplegable.
También puede usar la combinación Shift+F5 como tecla abreviada para ejecutar sus
programas; es más rápido que usar el menú. Todas las opciones del menú cuentan con
sus teclas abreviadas equivalentes junto a ellas. (Algunas opciones de menú, sin embar-
go, no tienen teclas abreviadas equivalentes.) Siempre pulsará la tecla Alt para acceder
a los menús.
Frcunn 8.4
Auto
QBasic ofrece ayuda (L.t'. Á.r §
$!§i x8{T
$¿&_h$ i
Erü$X +;¡r
[,cF *
Frcunn 8.5
El resultado que
aparece cuando
ejecuta su primer
programa en QBasic.
9 más. Terminará el programa más rápido y con menos errores. El ser organ¡-
zado siempre tiene su recompensa.
Código de comentarios
Algunas de las instrucciones más importantes que pondrá en los programas QBasic serán ig-
noradas por éste. Son los comentarios que documentan lo que hace el programa. El programa
en QBasic que tecleó anteriormente tiene cuatro comentarios. Los comentarios en QBasic son
cualquier instrucción que comience con REM.
El intérprete de QBasic ignora los comentarios. Éstos se incluyen en los programas para be-
neficio de quienes los ven. Su finalidad es documentar el programa, describiendo en español
lo que éste yaarealizar. Por ejemplo, por los cuatro comentarios puede saber lo que hace el
programa sin necesidad de tener conocimiento sobre QBasic, excepto la instrucción REM.
1s4 Hora 8
|
1: REM
2: REM Programa escrito por SaUy K. Yarnell
3: REM Fecha de programación: 6-9-98
4: REM Actualizado el: 7-2-98: Se añadió eI manejo del informe de nómina #4-E
5: REM Actualizado eI: 12-1-98: Se añadió eI manejo de La nueva ley de
impuestos 439T3
6: REM Actualizado eI: 3-16-99: Se añadió eI manejo del informe de ventas
estimadas
QBasic permite un atajo para los comentarios. Se puede indicar un apóstrofo (') en lugar de
REM. El listado 8.3 muesfta el mismo progÍuna que vimos antes, con el comentario abrevia-
do en lugar de REM, Como puede ver, los comentarios abreviados pueden ir a la derecha
de las instrucciones de QBasic; no es necesario que se ubiquen en líneas independientes,
como las instrucciones REM.
17
= PRINT nm$ I mp nimi n el nombne del usuanio
18: col = col + 2
1 9: NEXT fila ' Fin del ciclo de impnesión
2O: END
No todas las líneas requieren comentarios. Haga uso de ellos para dejar claro lo que hace el
código. Algunos programadores insertan comentarios cada ffes o cuatro líneas; para ellos es
suficiente. Sin embargo, la cantidad de comentarios adecuada es la necesaria para dejar claro
el código.
Recuerde que los comentarios son para los programadores, no para los usua-
rios. Los usuar¡os nunca ven los comentarios. Éstos permanecen en e! tistado
del programa para describir lo que sucede en el código.
Almacenam¡ento de datos
Como lo implica su definición, el procesamiento de datos significa que sus programas proce-
san datos. Estos datos se deben almacenar en memoria de alguna manera mienüas el progra-
ma los procesa. En los programas QBasic, como en la mayor parte de los lenguajes de
programación, los datos se almacenan et variables. Una variable es como una caja dentro de
su computadora que contiene un valor de datos. El valor podía ser un ntlmero, un carácter o
una cadena de ca¡acteres.
Los programas pueden tener tantas variables como necesite. Hay un límite para la cantidad de
variables que puede tener un programa, pero dicho llmite depende del tipo de datos que se al-
macenan. (De cualquier lruInera, la cantidad es tan grande que no se quedará sin variables pa-
ra su programa.) Las variables tienen nombres asociados. No es necesario recordar qué
localidad de memoria contiene los datos; puede asignar nombres a las variables para recordar-
las miás fácilmente. Por ejemplo, Ventas es mucho más sencillo de recordar que la localidad
de memoria 4376.
Puede usar casi cualquier nombre que qüera, siempre y cuando siga estas reglas de nombrado:
. Los nombres de las variables deben comenzar co¡- un carácter alfabético, es decir,
una letra,
. Los nombres de las variables pueden tener de 1 a 40 caracteres en mayúsculas o mi-
núsculas.
. Tras el primer carácter alfabético, los nombres de las variables pueden contener núme-
ros. Hay algunos caracteres especiales que también pueden ser parte de los nombres
de las variables (como . , &, y ^), pero no se permiten otros (como (, * , y +), aparte de
letras acentuadas. Es más seguro emplear nada más leffas y números.
Evite los nombres de variables extraños. Dé a sus variables nombres que des-
criban el tipo de datos que almacenan. Balancegg es mucho mejor nombre
de variable para el valor del balance de 1998 que X1y96a, aunque a QBasic
no le importa cuál use.
Válido Inválido
Ventas93 Ventas - 93
f ila REM
Las variables pueden contener números o cadenas de caracteres. Si se apega a las reglas de
nombrado que acabamos de listar, las variables podrán contener nrlmeros.
Su primer lenguaje: QBasic 157 ,
Hay un carácter especial que, si se indica al final del nombre de una variable, resulta muy
útil. Si pone el signo ($) al final de un nombre de variable, ésta puede contener uno o varios
caracteres alfabéticos o especiales. Por lo tanto, las siguientes variables pueden contener ca-
racteres, palabras e incluso oraciones:
nm$
Compania$
muest ra$
Empleados$
Asignación de valores
La mayoría de las instrucciones de los programas en QBasic emplean nombres de variables.
Los programas en QBasic con frecuencia hacen un poco más que almacenar valores en varia-
bles, cambiar variables, calcular basándose en variables y enviar a la salida valores de
variables.
Cuando esté listo para almacenar un valor de datos, tendrá que nombrar una variable para
ello. Tendrá que valerse de una instrucción de asignación para almacenar valores en las varia-
bles del programa. La instrucción de asignación incluye el signo (=) y un comando opcional,
LET, He aquí dos ejemplos de instrucciones de asignación:
ventas = 956.34
LET tasa = .28
La palabra clave LET es opc¡onal y requ¡ere que usted teclee más, si decide
lrr
9 usarla. Por tanto, casi todos los programadores ev¡tan esto y dejan fuera
de sus instrucciones de asignac¡ón. Es probable que no ex¡sta una buena ra-
zón para usar LET; Ias viejas vers¡ones de BASIC (de la década de los 50) lo re-
querían, por lo que aquellos programadores que lo aprendieron entonces, tal
vez aún lo usan. Es importante que sepa Io que hace lrt para el caso de que
encuentre alguna instrucción que !o contenga. Recuerde que Visual Basic es
totalmente compatible con e! lenguaje de programación QBasic. Por tanto, es
posible que vea una instrucción ler en algún programa en Visual Basic.
i
1s8 Hora 8
Piense que el signo igual en una insfrr¡cción de asignación es como una flecha que apunta a la
izquierda. Lo que suceda del lado derecho del sigao se envla al lado izquierdo y se almacena en
la variable que hay ahí. La figura 8.6 muesfra el funcionamiento de la insfrucción de asignación.
Las instrucciones de
asignación almacenan
valores en variables.
Si desea almacenar los datos de una cadena de caracteres en una variable, debe encerra¡ dicha
cadena entre comillas. A continuación se muestra cómo almacenar la palabra QBasic en una
variable llamada lang$ :
dan como resultado que edad contiene 27, pues ese fue el último valor almacenado en ella.
La variable edad no puede contener ambos valores.
También puede asignar el valor de una variable a otra y llevar a cabo operaciones matemáti-
cas sobre variables numéricas. A continuación preseritamos un programa corto que almacena
el resultado de un cálculo en una variable, y luego emplea dicho resultado para otro cálculo:
pi = 3.1416
radio = 3
anea=pi*radÍo*nadio
mediaArea=ateal2
QBasic inicializa con ceros las variables. Esto significa que, cuando da un
9 nombre a una variable, QBasic supone que su valor será 0 (cero) hasta que
se le as¡gne otro valor. Por tanto, si qu¡ere que una variable com¡ence con
cero, no es necesario que se lo asigne. QBasic también deja en blanco las va-
riables que cont¡enen ¡nformación en caracteres (aquellas que tienen un su-
fijo de signo($) y almacena en ellas cadenas nulas o cadenas vacías,
indicando que aún no se ha asignado nada a las variables.
Su primer lenguaje: QBasic 1ss I
Ahora que hay valores almacenados en variables, debe haber un modo de presentarlos en la
pantalla y en la impresora. Las siguientes secciones describen Ia manera de enviar valores de
datos a las salidas.
Salida de valores
La instrucción PRIllt envía los datos a la pantalla. Prácticamente todos los programas QBasic
emplean PRINT, pues la presentación de datos en pantalla es de gran impofancia. Los usua-
rios deben poder ver los resultados y leer mensajes de los progr¿¡mas que ejecuten. La figura
8.7 muestra una ilusffación de lo que hace enIrut.
La pantalla
Hay varias maneras de utilizar pnrur. La manera más sencilla de imprimir palabras en la
pantalla es encerrarlas enüe comillas en seguida de la instrucción pnrur . Las dos instruccio-
nes siguientes imprimen nombres en la pantalla:
PRINT "Sally Brown"
PRINT "John WiIson"
no imprime 12 (el resultado de 5+ z). Gracias a las comillas que la encierran, la expresión
se imprime como aparece dentro de ellas. Esta instrucción enrur produce la siguiente salida:
Sin embargo, si imprime una expresión sin comillas, QBasic envía a la salida el resultado del
ciflculo de esta expresión:
PRINT 5+ 7
imprime 12.Las variables impresas sin comillas también se imprimen. El listado 8.4 contie-
ne un código con insfiucciones de salida para que pueda ver el resultado de los cálculos.
160 Hora 8
|
Lrsmoo 8.4 Pnrrur ruvfn a LA pANTALLA EL RESULTADo oe los cÁlcuLos y orRos DATos
La instrucción END al final de los programas QBasic es opcional. Lamayoría de los progra-
madores ponen la instrucción END para que quienes vean el programa puedan saber que han
llegado al final, en lugar de preguntarse si tal vez el programa tenga offa página.
Borrado de la pantalla
Antes de que su programa presente algo en la pantalla, probablemente quiera ponerla en blan-
co. Si su progrÍIma no borra la pantalla antes de imprimir en ella, 1o que hubiese antes en ella
permanecerá ahí cuando ejecute el programa.
lenguaje: QBasic
Es muy sencillo borrar la pantalla en QBasic. Basta con Ia instrucción cLS. Cuando QBasic
encuentra una insffucción CLS, borra la pantalla. Siempre es una buena idea poner en blanco
la pantalla antes de dar comienzo a un progr¿rma.
CLS
PRINT 'iQBasic es divertido!"
Trsm 8.1
Openaoon¡s uerevrÁrcos or QBesrc
Operador Descripción
o Agrupador de expresiones
Exponenciación
*, l, )rMoD Multiplicación, división, división de enteros y módulos
+) - Suma y resta
Hora 8
| 162
Es importante el orden de los operadores de la tabla 8.1. En el caso de que haya más de uno
de estos operadores en una expresión, QBasic no calculará los valores en un orden de izquier-
da a derecha. En otras palabras, la expresión:
v=5+2*3
almacena en v el valor 11, no 21, como podría suponerse. QBasic no lleva a cabo los cálculos
de izquierda a derecha, sino en el orden dado en la tabla 8.1. Dado que la multiplicación apa-
rece antes de la suma, QBasic calcula primero 2 *
3, que es 6; luego calcula 5 + 6, para
obtener el resultado de 11.
FT,
t
t'.
t."
Entre los operadores, los paréntesis son los que tienen mayor prioridad. Cualquier expresión
i
enffe paréntesis se calcula antes que las demás partes de la expresión. La instrucción:
v=(S+2)*O
asigna el valor 21 a v, pues los paréntesis obligan a que se sumen 5 + 2 antes de la multipli-
cación de 7 por 3.
x=10^2
Puede también elevar un número a una potencia fraccionaria mediante el operador
^. Por
ejemplo la instrucción:
x=81 ^0.5
eleva 8 1a la
I z, encontrando la raíz cuadrada de 8 1 . (Si le parece que estas matemáticas se
I
vuelven un poco complejas, sepa que algunos han programado en QBasic por años sinjamás
elevar un número a una potencia fraccionaria. Pero, si tuviese necesidad de hacerlo, QBasic lo
hará por usted.)
En QBasic, la división se maneja de fres modos distintos. La diagonal (/) produce la división
normal. La instrucción:
d=312
Su primer lenguaje: QBasic 163
|
pone 1.5 en d. La diagonal invertida (\) efechúa ladivisión de enteros. Un entero es un núme-
ro redondo y el resultado que produce la división de enteros siempre es una cifra entera (la
parte decimal se descarta). Por consiguiente, la instrucción:
d=3\2
pone 1 en d e ignora el .5.
Uno de los operadores más extraños de QBasic no es un símbolo; se parece más a un coman-
do. Se fiata del operador MOD. El operador MOD devuelve el residuo entero de una división.
Por ejemplo, la instrucción:
m=20MODg
pone 2 en m, pues 20 dividido enüe 3 es 6 con un residuo de2.Hay algunas operaciones ma-
temáticas especializadas que requieren de aritmética de módulo (residuo entero) y QBasic
ofrece el operador MOD para cumplir con esta necesidad.
Para terminar con los operadores matemáticos, el listado 8.5 contiene un programa que impri-
me los resultados de cálculos que emplean todos los operadores de QBasic descritos en esta
lección. La salida del programa aparece en la figura 8.8 en seguida del listado del programa.
12: valon=num1*num2
13: PRINT " numl * num2 es igual a " vaLo n
14: valon = numl / num2
15: PRINT "numl / num2 es igual a" vaLo n
16: valon=num1\num2
17: PRINT "num1 \ num2 es igual a" valor
18: valon = numl MOD num2
19: PRINT " num1 MOD num2 es igual a " ; valor
2@= valon=num1^num2
21 : PRINT "numl ^ num2 es igual a"; vaLon
22= valon=num1+num2*4
23: PRINT "num1 + num2 * 4 es igual a"; valor
24: valon = (num1 + num2) 'k 4
25: PRINT " (numl + num2) * 4 es igual a"; valor
26= END
Frcunn 8.8
Salida de los cálculos.
No hace falta que sea un matemático para utilizar QBasic; éste se encarga de todo por
usted. Lo único que tiene que entender es cómo QBasic lleva a cabo las operaciones ma-
temáticas para que pueda preparar las operaciones a real\zar.
Resumen
QBasic es una de las mejores implementaciones de BASIC para los programadores princi
piantes. Como aprendió en esta hora, la escritura de programas en el lenguaje de programa-
ción QBasic no sólo es fácil, sino también divertida. Los programas de esta hora le enseñaron
a almacenar datos en variables y a enviar resultados a la pantalla. Los resultados de los cálcu-
los matemáticos siguen un orden predeterminado. Sin embargo, puede con toda libertad pasar
por alto ese orden valiéndose del uso de paréntesis.
La siguiente hora explica la manera de generar una salida más elegante y de obtener valores
del teclado para guardarlos en las variables.
Preguntas y respuestas
P En QBasig ¿debo conocer los valorcs que asignaré a las variables cuando escriba
el programa?
R Los datos provienen de muchas fuentes. Conocerá algunos de los valores que puede
asignar mientras escribe sus programas, pero una buena parte de los datos vendriín del
usuario, como verá durante la siguiente hora, o de los archivos de datos, según se expli-
ca en la hora 11, 'Administración de datos y archivos en disco". En esta lección se
asignaron todos los datos a variables, a fin de familiarizarle con el funcionamiento de
las instrucciones de asignación y los ciflculos de QBasic.
Su primer lenguaje: QBasic 165
Taller
Las preguntas del cuestionario se presentan para una mayor comprensión. Vea las respuestas
en el apéndice A.
Cuestionario
1. ¿Qué es lo primero que debe hacer para usar QBasic con Windows 95 o Windows 98?
2. ¿Cuáles son las dos maneras que emplea QBasic paralocalizar los errores (sin conside-
rar el depurador)?
3. ¿Cuál es el objetivo de los comentarios?
4. ¿Qué hace una variable?
5. Verdadero o falso: PRINT imprime en la pantalla o en la impresora.
6. ¿Cuántos valores de datos puede contener una variable al mismo tiempo?
7. ¿Qué hace con las variables el sufijo de signo ($)?
8. ¿Por qué QBasic no efectúa sus cálculos en orden de izquierda a derecha?
9. Verdadero o falso: QBasic maneja nombres de archivos largos.
10. ¿Qué instrucción de QBasic borra la pantalla?
I.
HoRA
Entrada y sal¡da
La entrada y la salida son las piedras angulares de los programas que interactúan
con el mundo exterior. En la lección anterior, aprendió a generar salida en la
pantalla mediante la instrucción PRINT. Se puede lograr más con esta instrucción
que sólo enviar datos a la salida. PRINT y sus distintas opciones dan también
formato a la salida.
Lo contrario a PRINT es INPUT. Mientras que PRINT envía una salida ala panta-
11a, INPUT recibe una entrada del teclado. La instrucción INPUT es la principal
manera que tienen los programas para interactuar con el usuario. Con frecuencia
verálas instrucciones PRINT e INPUT en pareja, de manera que PRINT pueda so-
licitar los datos que necesita INPUT.
lmpresión avanzada
La instrucción PRINT puede hacer mucho más que imprimir valores de datos. Puede emplear
PRINT para enviar a la salida datos ordenados por columnas que forman tablas de informa-
ción. Además, tiene la posibilidad de controlar el espaciado de los valores. Las siguientes sec-
ciones muestran distintas maneras de presentar la salida de un programa meüante PRINT, de
modo que tenga la apariencia que usted desea.
I
EI punto y coma
\ En la lección anterior, aprendió a imprimir valores línea por línea.La siguiente instrucción
t.
imprime tres números, cada uno en su propia llnea:
PRINT 15
PRINT 20
PRINT 25
Si quiere imprimir varios valores en la misma llnea, puede hacerlo con la separación de un
punto y coma. Por tanto, la instrucción
15 20 25
I
t
I
t
Entrada y salida 16e I
Con el punto y coma puede mejorar el programa que presentamos en la lección anterior, que
lleva a cabo el crálculo y la impresión del área de un círculo. Si estos valores aparecenjusto
después de las descripciones de los ciflculos, en lugar de en la siguiente línea, la salida tendrá
más senüdo que antes. El listado 9.1 muestra el programa mejorado.
Ltsrnoo 9.1 Coru EL EMpLEo DEL puNTo y coMA pUEDE sEpARAR vALoREs euE sE
ENCUENTRAN EN LA MIsMA l.ÍruTa
PRINT ,.SaIIy ,,
;
de modo que la salida de un PRINT subsecuente se presentará en la misma línea que la ante-
rior. En ocasiones, querrá imprimir el resultado de varios cálculos en la misma línea. Impri-
miéndolos con un punto y coma al final, podrá hacerlo a medida que los vaya calculando
durante la ejecución del programa y asegurarse de que aparecerán juntos.
Hay una zorta de impresión por cada 14 columnas de la pantalla. La figura 9.1 muestra la di-
visión de la pantalla en cinco zonas de impresión. Cada coma de una instrucción PRINT causa
que el siguiente valor se imprima en la siguiente zona de impresión.
Tome en cuenta el espac¡o extra que ocupa el signo más imaginario al impri-
mir números; sin embargo, las cadenas nunca se imprimen con espac¡os an-
tes ni después.
170 Hora 9
|
Frcune 9.1 #1 #2 #3 #4 #5
Zona de
Ias zonas de impresión
impresión suceden
cada 14 columnas de
la pantalla.
Columna de
la pantalla 1 15 Zg 49 57
15 20 25
La coma es útil para imprimir tablas de valores. La coma asegura que las columnas de la tabla
se alineen en cada zona de impresión. En el siguiente progrÍrma, los nombres se imprimen co-
menzando por las mismas cuatro columnas, aunque los nombres son de üferentes longitudes.
t_
Entrada y salida 17 1l
@ Pnimena línea
Úrtima línea
SPC ( ) imprime tantos espacios en blanco como lo indique el valor entre paréntesis. TAB ( )
imprime los espacios en blanco necesarios para mover el siguiente carácter a la columna indi-
cada entre paréntesis. Aunque estas funciones desempeñan un trabajo similar, las entenderá
muy pronto viendo cómo funcionan.
Observe el listado 9.2,qure se vale de SPC( ) y del punto y coma (;) para imprimir dos cade-
nas en la misma línea. SPC(5) le dice a la instrucción PRINT que salte cinco espacios antes de
imprimir la cadena de texto, que aparecerá en la columna seis. Si termina una instrucción
PRINT con un punto y coma, la siguiente instrucción PRINT se imprimirá donde terminó la úl-
tima, en lugar de ser en la siguiente línea, como sucedería sin el punto y coma.
Cuando la ejecución del programa llegue a estas líneas, la salida aparecerá en la pantalla co-
mo slgue:
QBasic QBas ic
El código obliga a PRINT a salta¡ 5 espacios antes de que aparezca el primer OBasic. Tras
dos espacios más, la segunda PRINT imprime QBasic también.
Si usted utiliza TAB ( ) en lugar de SPC ( ), QBasic se desplaza a la columna indicada por el
argumento entre los paréntesis e imprime ahí el siguiente elemento de datos. SPG ( ) obliga a
la siguiente impresión a comenzar cierta cantidad de espacios más adelante, mientras que
TAB ( ) obligaa la sigüente impresión a comenzar en una columna especlfica. Como ejemplo,
estudie el listado 9.3.
StnName$ = "QBaSiC"
PRINT rr*,¡ TAB(5); strName$; TAB(20); stnName$
PRINT rr*r¡' SPC(5); strName$i SPC(2A); stnName$
lmpresión en la impresora
Además de enviar la salida a la pantalla puede hacerlo también a la impresora. La instrucción
LPRINT envía datos a la impresora del mismo modo que PRINT. Si imprime cadenas LPRINT
denffo de comillas, se imprimen en la impresora tal cual. Si imprime variables y expresiones
sin las comillas, QBasic imprime los valores de dichas variables y expresiones.
El empleo de los puntos y comas y las comas con LPRINT provoca que los valores impresos
aparezcat uno tras otro o en la siguiente zona de impresión, respectivamente. El siguiente có-
digo imprime en la impresora los nombres por columnas.
' Ilustra eI uso de Ias comas
LPRINT "Sam", "Jesse", "Jackson", "Susan"
LPRINT "Christine", "Ron", "Jayne", "Martha"
LPRINT "Johnny", "Thomas", "Francis", "Kerry"
LPRINT "Kim", "Banbara", "Lea", "Wi1liam"
END
Con frecuencia, sus programas imprimirán tanto en la pantalla como en la impresora. Debido
a ello, aparecenjuntas instrucciones similares de salida, una enviando la salida a la pantalla y
la otra a la impresora.
el capítulo anterior, aprendió a asignar valores a variables. Usted usó la instrucción de asigna-
ción porque sabía los valores. Sin embargo, no siempre conoce todos los valores al escribir el
programa.
Piense en un programa de recepción médica que lleva el control de los pacientes que entran
en la oficina de un doctor. El programador no tiene idea de quién entrará a continuación, así
que no puede asignar los nombres de los pacientes a las variables. Los nombres de los pacien-
tes se pueden almacenar en variables únicamente durante la ejecución del programa.
Flcunn 9.2
INPUT recibe valores
del teclado durante ffiEEffi trtr
la ejecución del
programa.
trtr
El teclado
Variables del
programa
El signo de interrogaciónes una señal para el usuario de que se está solicitando la respuesta a
algo. ¿Cómo sabe el usuario qué se le pregunta? Es responsabilidad del programador inclür
una instrucción PRINT antes de cada instrucción INPUT que solicite al usuario el valor nece-
sa¡io. La instrucción PRINT solicita al usuario una entrada. Un mensaje de solicitud es una
pregunta que se hace antes de esperar una entrada del usuario. El mensaje de solicitud pone
una pregunta completa antes del signo de interrogación de INPUT. Observe las tres líneas que
siguen:
¿cuáI es su edad?
4 Hora 9
"17
Las palabras aparecen debido a PRINT y el signo de interrogación se presenta gracias a INPUT.
El programa no prosigue con la siguiente instrucción PRINT hasta que el usuario responde la
pregunta inücando un valor y pulsando Intro.
Siga el programa del listado 9.4 y estudie la salida que aparece a continuación. Podrá ver có-
mo se llena una variable que no tiene valor por medio de una instrucción INPUT.
1@: END
QBasic pone en ceros todas las variables al comienzo del programa. Esto significa que x es
cero hasta que le asigne un valor mediante INPUT. La siguiente es la salida del programa. El
usuario tecleó 27 como valor para x.
Entrada sa lida
El nombre que indica el usuario como respuesta a la pregunta se inserta en la variable nombr.e$.
Una sola instrucción INPUT puede reunir más de un valor, si así lo requiere la aplicación. Pue-
de indicar más de una variable, con la separación de comas, tras la instrucción INPUT. La si-
guiente instrucción INPUT espera que el usuario teclee tres valoreS:
Observe que el usuario debe saber que son necesarias las comas entre los valores tecleados.
Si no lo hace, recibe un mensaje de error que dice Redo from start, un aviso no demasia-
do descriptivo. Este mensaje de error informa al usuario que los valores no se insertaron en el
formato esperado. Una de las desventajas de reunir varios valores con una sola instrucción
INPUT es que el usuario no siempre sabe cómo insertarlos. Es más seguro y apropiado pedir
cada valor de manera individual. Por ejemplo:
Este conjunto de tres instrucciones INPUT tiene menos probabilidades de generar errores du-
rante su ejecución. El usuario sólo tiene que insertar los tres valores uno por uno; no necesita
ocuparse de poner comas entre ellos. Observe cómo el siguiente programa guía al usuario pa-
so a paso a través de las preguntas:
Entrada v salida 175
El nombre que indica el usuario como respuesta a la pregunta se inserta en la variable nombr e$.
Una sola instrucción INPUT puede reunir más de un valor, si así lo requiere la aplicación. Pue-
de indicar mrás de una variable, con la separación de comas, fras la instrucción INPUT. La si-
guiente instrucción INPUT espera que el usuario teclee tres valores:
PRINT "¿CuáI es tu nombre, edad y salario";
INPUT nombre$, edad, salanio
Este conjunto de tres instrucciones INPUT üene menos probabilidades Óe generar errores üu-
rante su ejecución. El usuario sólo tiene que insertar los tres valores uno por uno; no necesita
ocuparse de poner comas enüe ellos. Observe cómo el siguiente programa guía al usuario pa-
so a paso a ftavés de las preguntas:
Hora 9
1176
Un ejemplo sencillo muestra el funcionamiento del mensaje de solicitud. Las siguientes ins-
trucciones deben ser viejas conocidas para usted. PRINT pregunta algo al usuario e INPUT ob-
üene la respuesta.
PRINT "¿CuáI es eI número de1 mes (por ejemplo, 1, 5 u 11)";
INPUT numMes
Esto es lo que ve el usuario cuando QBasic llega a esta línea del programa:
¿CuáI es eI número clel mes (por ejemplo, 1, S u 11)?
Entonces el usuario puede responder la pregunta dando a la variable numMes un número de
mes y el programa continúa su ejecución.
El listado 9.5 muestra un programa que podría servir a una tienda pequeña para el cálculo de
los totales en la caja regisfradora. Las instrucciones INPUT de este progrÍrma son obligatorias;
Hora 9
| 176
Un ejemplo sencillo muestra el funcionamiento del mensaje de solicitud. Las siguientes ins-
trucciones deben ser viejas conocidas para usted. PRINT pregunta algo al usuario e INPUT ob-
tiene la respuesta.
PRINT "áCuáI es eI número de1 mes (por ejemplo, 1,5 u 11)";
INPUT numMes
Esto es lo que ve el usuario cuando QBasic llega a esta línea del progr¡rma:
El listado 9.5 muesfra un programa que podría servir a una tienda pequeña para el ciálculo de
los totales en la caja regisfradora. Las instrucciones INPUT de este programa son obligatorias;
E ntrad a sa lida
Algunas preguntas no se pueden efectuar con una sola solicitud rrupur. Por
9 lo tanto, puede haber ocasiones en las que tenga que poner varias instruc-
ciones PRINT antes de una INPUT para describir la entrada que se espera. El
siguiente es un ejemplo que hace justamente eso:
PRINT "Ahona debes digitan los úItimos cuatro dígitos de tu"
INPUT "código postal ampliado. ¿lCuáIes son esos cuatno dígitos"; eZip
sólo al momento de su ejecución ser¡ín conocidos los importes de las compras del cliente. Co-
mo puede ver, la obtención de la entrada al momento de ejecución es vital para un procesa-
miento de datos "real".
24= PRINT
25; PRINT tr ************************************************* rr
La ñgura 9.3 muesüa el resultado de la ejecución de este programa. Como puede ver, el pro-
grama sefa útil para una tienda pequeña.
Frcuna 9.3
I-a ejecución del
programa de caja
registradora produce
esta salida.
La cláusula USING
Hay un problema con el programa del listado 9.5; no imprime con dos posiciones decimales,
cosa que debe hacer un programa que calcula pesos y centavos. Puede usar una opción más
de la instrucción PRINT (o LPRINT), llamada USING. La opción USING describe de qué manera
se quieren imprimir los datos. Hay tanto en la instrucción USING que haría falta la hora com-
pleta para explicarlo. En este punto de su c¿urera como programador, probablemente necesita-
rá USING para imprimir dos posiciones decimales para los centavos. La impresión de moneda
probablemente es el uso más difundido de USING en QBasic.
Ésta es una instrucción PRINT que asegura que la variable TOTAL imprima dos puntos deci-
males:
El listado 9.6 tiene varias instrucciones PRINT USING que muestran cómo imprimir las sali-
das en diferentes formatos.
La última instrucción PRINT USING muestra que el poner una coma justo antes del punto de-
cimal en una cadena, USING ordena a QBasic que inserte una coma cada tercer dígito de la
cifra. La impresión de números con comas facilita su lectura.
El listado 9.7 presenta el mismo programa para caja registradora que vimos antes. Gracias a
las instrucciones PRINT USING, el programa imprime todas las salidas con dos números deci-
males, asegurando su redondeo a pesos y centavos antes de imprimirlas. La figura 9.4 muestra
la salida con un mejor aspecto.
Freunn 9.4
La salida se ve mucho
meJor con PRINT
USING.
Cuando tenga que obtener datos del usuario que podrían contener algunas comas, digamos
una dirección, emplee LINE INPUT en lugar de INPUT. Cuando sospeche que el usuario po-
dría escribir una coma como parte del valor de entrada, tendrá que obtener el valor mediante
LINE INPUT. LINE INPUT es exactamente como INPUT, excepto que con ésta sólo puede ob-
tener una cadena de entrada. Esta cadena puede incluir cualquier carácfet Sin embargo, no
se permite una coma en la instrucción INPUT, pues sería elcarácter de separación si se estu-
viese cargando más de una variable con una sola INPUT.
Las siguientes instrucciones llenan una variable de cadena, permitiendo que el usuario teclee
comas durante la entrada, si así lo desea:
Si quiere que el usuario inserte un apellido separado del nombre mediante una coma, se nece-
sitará emplear LINE INPUT para hacer la solicitud.
Resumen
El dominio de la entrada y la salida haúla üferencia entre un programa que le guste a los
usuarios y uno que odien. Si etiqueta de manera adecuada las entradas, solicitando a los usua-
rios lo que se desea durante el proceso de entrada, no tendriín dudas sobre su formato corec-
to. La obtención de los datos de entrada en formato correcto es importante para QBasic pues,
a diferencia de los programas en Windows, los programas QBasic no manejan los cuadros de
i 182 Hora 9
I
entrada de datos ni los campos de edición elegantes que permiten muchos controles de
Windows.
Preguntas y respuestas
P ¿Existe la instrucción ¡rpur us¡rc?
R No. La cláusula US I NG sólo es p¿ua salida, pues ésta es la que se necesita para dar for-
mato. Los datos vienen en toda clase de formatos, pero habrá ocasiones en que desee
ciertos formatos que pueden ser un tanto diferentes de sus formatos nativos.
P ¿Cómo puedo dar formato a valores de salida que quiero enviar a la impresora
con LPRINT?
R ¡Con 1a cláusula USING! LPRINT funciona igual que PRINT y esto significa que se pue-
den dar comandos LPRINT USING que hacen lo mismo que sus contrapartes PRINT
USING.
Taller
Las preguntas del cuestionario se presentan para una mayor comprensión. Vea las respuestas
en el apéndice A.
Cuestionario
1. ¿Por qué aparece con frecuencia un espacio en blanco antes de los valores que imprime
un programa?
2. Verdadero o falso; QBasic deja el espacio en blanco antes de los números tanto positi-
vos como negativos.
3. ¿Qué hace el punto y coma en una instrucción PRINT?
4. ¿Qué es una función intema?
5. ¿Cuál es la üferencia entre la función SpC ( ) y la función TAB ( ) ?
6. ¿Qué hace la cláusula USING?
7. ¿Qué instrucción obtiene los valores ingresados por el usuario?
8. ¿De qué manera se pueden aceptar comas como entrada si las comas son parte del valor
que se ingresa?
9. Verdadero o falso: una instrucción INPUT puede recibir más de un valor.
10, ¿Por qué es importante solicitar al usuario una entrada?
ffiffiffiA 10
Procesamiento de datos
con aBasic
La lección de esta hora ampliará su conocimiento de QBasic mostrándole la ma-
nera de comparar valores y de repetir secciones de los programas QBasic. Las
respuestas del usuario o los resultados de los cálculos pueden controlar el flujo
del programa. Esta lección le enseña cómo escribir programas que toman deci-
siones. El código a veces necesita repetir secciones para completar el procesa-
miento de varios valores de datos. Aprenderá a cnear ciclos para hacer
precisamente eso.
Con los conceptos que aprendeút en esta lección, podrá escribir poderosos pro-
gramas que hagan 1o que necesite. Se descubirá pensando en nuevas ideas y
maneras de ttllizat su computadora.
El listado 10.1 muestra un ejemplo de un progrzrma que contiene una instrucción IF. Aún
cuando nunca haya visto una instrucción IF de QBasic, es probable que no tenga ningún pro-
blema para determinar lo que hace este programa.
6: comision = @
7= diaslibres = @
B: ELSE
9: comision = 25
1A= diaslibres = 2
11: END IF
12=
1 3 : PRINT
14= PRINT nombreV$; " ganó una comisión de"; comision;
15: PRINT "y necibe"; diasLibnes; "días 1ibnes."
1 6: END
Vea los siguientes dos ejemplos de ejecución del programa. Preste atención al hecho de que el
programa genera una comisión distinta dependiendo de las ventas totales del vendedor. El pri-
mer ejemplo de ejecución es éste:
iCómo se llama el vendedor? Jim
áCuá1 fue su total de ventas deI mes pasado? g2g4.4g
Jlm ganó una comislón de 0 y recibe O días libr.es.
Procesa m iento datos 185
El vendedor no recibió una comisión, pues sus ventas no fueron lo bastante altas. Observe la
diferencia en el siguiente ejemplo:
Días libres
son 0
Días libres
son 2
lmprimir
resultados
END I F siempre marca el final del conjunto de instrucciones de I F. Sea cual sea el resultado
de la I F, siempre se ejecutan las instrucciones siguientes a END I F después de terminada
la IF.
Como lenguaje de programación, QBasic es bastante estricto sobre la manera como se lleva a
cabo la prueba IF. La prueba relacional, es deci¡, la instrucción a la derecha de IF, siempre
inc§e alguno de los símbolos de la tabla 10.1.
Aprendió acerca de los operadores matemáticos en la hora 8, "Su primer lenguaje: QBasic".
QBasic proporciona estos operadores relacionales para que pruebe ciertas condiciones con las
insffucciones IF. Siempre hay dos posibilidades con los operadores relacionales. Alguna cosa
o es menor que otra, o lo contrario. Algo es mayor que otra cosa, o no. Algo es igual que offa
cosa, o no lo es.
Procesa m iento QBasic
Las instrucciones que siguen a THEN y a ELSE pueden ser cualquiera de las de QBasic. Cuan-
do ELSE contiene una IF en su bloque, debe combinar ELSE e IF en una sola instrucción:
ELSEIF. Esta regla del lenguaje QBasic es más fácil de entender de lo que parece. El listado
10.2 contiene un conjunto de instrucciones IF que imprime pnimero, segundo, tercero
o cuarto, dependiendo del número que indique el usuario.
LISTEOO 10.2 UruE IF CON UNA ELSE SE DEBE CONVERTIR Eru IruSTNUCCIÓN ELSEIF
Como lo muestra este programa, por medio de la instrucción IF puede probar si el usuario
inserta datos aceptables. Esto se conoce como validación de entrada. Puede validar algunos
valores de entrada para asegurÍuse de que el usuario ha insertado lo esperado. Por ejemplo,
puede comprobar una edad para asegurarse de que es mayor que 0. No siempre hay una ma-
nera de determinar si el valor de la entrada del usuario es precisamente el correcto, pero es
posible revisarlo y saber si es razonable.
En este programa hay cinco casos posibles. El usuario puede indicar 1,2,3, 4 u otra cosa. se
ejecuta el caso que es igual a la entrada del usuario, pero no los demás. SELECT CASE es útil
para sustituir las, ligeramente más complieadas, instrucciones IF denffo de otras IF.
Use las instrucciones IF cuando deba seleccionar entre una o dos condicio-
9 nes relacionales. Si hay más condiciones relacionales que probar, es más sen-
cillo escribir y entender una SELECT CASE.
lnstrucciones de ciclos
Las instrucciones de ciclos son otra característica importante de cualquier lenguaje de progra-
mación' QBasic ofrece varias instrucciones que contolan los ciclos. Su computadora nunca
se aburrirá ya que creará ciclos una y otra vez, repiüendo instrucciones con rapidez a medida
que se necesite.
Los ciclos tienen muchos usos. Un ciclo puede servir para pedir al usuario los datos de varias
personas, calcular un total combinado e imprimir varias líneas de datos. Las ftes insffucciones
principales de ciclos son:
. ciclos F0R...NEXT
. ciclos D0...UNTIL
. ciclos D0. . .WHILE
Procesamiento de datos con QBasic 18e
I
El ciclo FoR de la computadora funciona como el concepto para cada descripción de la factu-
ra (por ello se le llama FOR, que en inglés significa para). A fin de ayudarle a entender el mé-
todo de ios ciclos FOR, el listado 10.4 muesffa un ciclo sencillo que explica las instrucciones
FoR y NEXT,
ffi@r
1
2
3
4
5
Las instrucciones FOR y NEXT funcionan en pareja; encierran una o varias instrucciones. Las
instrucciones dentro del ciclo FOR. . . NEXT se repiten hasta que éste termina. El ciclo es con-
trolado por la variable de la instrucción FOR. En el programa del listado l0.4,la variable de
control es i (puede ser cualquier nombre de variable). La instrucción FOR dice lo siguiente:
para cada i (teniendo i un vaTor de 1 7a prinera vez, de 2 7a segunda y
asj hasra 77egar a 5), 7leva a cabo la instrucción entre FOR y NEXT.
1e0 Hora 10
I
Como puede deducir del listado 10.4, el ciclo FOR...NEXT incrementa auto-
máticamente (suma uno a) !a variable de control. El cuerpo del ciclo FoR (la
instrucción o instrucciones entre FOR y NEXT) hace un ciclo por cada incre-
mento de la variable, hasta que ésta llega al último valor especificado en la
instrucción.
El listado 10.5 muestra un programa que hace lo mismo que el 10.4, pero sin un ciclo FOR.
Como puede ver, el ciclo FOR simplifica la codificación de instrucciones repetitivas. (Conside-
re lo sencillo que sería imprimir los números del 1 al 200 mediante una instrucción
FOR. . . NEXT, en lugar de escribir doscientas líneas de código para imprimirlos según el
método del listado 10.5.)
4.. PRINT i
5: i = 2
6: PRINT i
7= i = 3
8: PRINT i
9: i = 4
1@: PRINT i
11: i = 5
12= PRINT i
13: END
No es necesario que imprima el valor de la variable del ciclo como se hace en el listado 10.5.
Con frecuencia, un ciclo FOR conftola un conjunto de instrucciones, determinando la cantidad
de veces que se repiten dichas instrucciones, sin usar la variable de control para otra cosa. El
listado 10.6, controlado mediante un ciclo FOR, imprime 15 veces un mensaje.
oto ejemplo aclarará mejor esto. vea el programa del listado 10.7. con é1, un maesfro podría
imprimir una üsta de calificaciones. El programa solicitará al maesúo la cantidad de calificacio-
ne§ que insertará. Con esa respuesta, repetirá una serie de insfrucciones, preguntando el nombre
y la calificación del siguiente alumno. A medida que el profesor inserta los datos, se
los valores en la impresora. Al final del programa hay un fistado completo de los nombres y las
calificaciones. (Durante la hora 17, "Algoritmos de programación", aprenderá cómo programar
un acumulador para sumar todas las calificaciones e imprimir el promedio del grupo.)
5: PRINT
6: INPUT "óCuántas pt-uebas hay hoy"; n umP f"u ebas
7: PR I NT
8:
9: LPRINT ** Calificaciones de Ia pnueba **rr
1@: LPR I NT
11: LPRINT "Nombne",, "Cdlificación',
12: FORr=lT0numPnuebas
13: INPUT áCuá1 es el- nombne del siguiente estudiante"; Nombne$
14: PRINT áCuá1 es Ia calif icación de ,, ; Nombr-e$;
15: iNPUT caIlf
16: NT Nomb ne$
LPR I , , cdlif
17: NEXT i
18: END
La figura 10.2 muestra la salida del programa del listado 10.7. Si el maestro tiene cinco estu-
diantes, el cicio FOR sucederá cinco veces. Si el maestro dice que son diez estudiantes, seriín
diez ciclos. Dado que el valor ingresado por el maesfro controla el ciclo FOR, se trata de un
programa de propósito general que puede manejar cualquier cantidad de estudiantes.
El listado 10.8 muesüa un programa que cuenta de manera descendente del 10 al 1 y luego im-
prime iDespegue I al final del ciclo. Para rcaTizar la cuenta regresiva se ha empleado un valor ,
1@
9
I
7
6
5
4
3
2
1
i Despegue !
Puede indicar cualquier valor para una cifra STEP. El listado 10.9 muestra un programa que
imprime los números pares menores de 15 y luego los números nones hasta el 15. Dos ci-
clos controlan el conteo. El primero inicia en 2 el conteo y el segundo en 1. Cada ciclo su-
ma un valor STEP de 2 al valor FOR inicial para generar los conjuntos de números positivos
y negativos.
Un ciclo FOR también sirve para salir antes de tiempo, gracias a la instrucción EXIT FOR. Ha-
brá veces en que se espere un ciclo repetido una cantidad fija de veces, como 1o especifica la
variable de control de FOR. Luego, gracias a una entrada especial del usuario, tendrá que salir
del ciclo FOR antes de tiempo. La instrucción EXIT FOR provoca la salida de un ciclo cuando
QBasic llega a ella. El listado 10.10 muestra el funcionamiento de EXIT FOR. Durante la hora
ll, 'Administración de datos y archivos en disco", aprenderá a usar EXIT FOR cuando quiera
pedir al usuario datos de üsco.
1e4 Hora 10
|
F¡cune 10.3
Impresión de algunos
números pares y nones.
Éste es un ejemplo de la ejecución de este programa. Observe que el ciclo FOR se habría ejecuta-
do 100 veces, imprimiendo los números del I al 1ü), si el usuario no hubiese terminado el pro-
ceso anticipadamente al indicar una respuesta N a la solicitud, como se puede ver a continuación:
1
ácontinúa (s/N)? s
2
éContinúa (S/N)? S
3
écontinúa (s/N)? s
4
óContinúa (S/N)? N
iEso es todo, amigos!
El ciclo FOR proporciona mucho control sobre el ciclo, pero está diseñado para contar a fravés
de los valores del ciclo de control. No todos los ciclos se pueden determinar contando una va-
riable. A veces se requieren ciclos que se repitan mienfras una condición sea verdadera o has-
ta que se cumpla cierta condición.
Procesamiento de datos con QBasic 195
9 son idénticos:
FORi=1T010
PRINT i
NEXT i
FORi=1T010
PRINT i
NEXT
Observe que la variable llamada i no aparece tras el último NExr, pero está
implícita.
Es posible anidar un ciclo dentro de otro. Tales constructores anidados pueden parecer avan-
zados para los novatos, pero es muy sencillo entenderlos si se considera lo que sucede cuando
hay que llevar a cabo un ciclo más de una vez. Puede escribilr el ciclo dos veces, uno en se-
guida del otro, o puede encerrar el ciclo dentro de otro, que ejecuta su cuerpo dos veces. La
hora lT, "Algoritmos de programación", explica a detalle los ciclos anidados.
LPR I NT
coninúa
i 196 Hora 10
Este programa continúa repitiéndose hasta que el maestro indica que ya no hay más califica-
ciones. Observe que el cuerpo del ciclo está encerrado entre las instrucciones D0 y L00p
WHILE, y que WHILE va seguido por una prueba relacional, cuyo resultado (verdadero o falso)
determina si se repite o se termina el ciclo.
La selección entre D0. . .WHILE y D0. . .UNTIL depende de su aplicación. Los puede usar de
manera intercambiable en la mayor parte de los programas; sólo asegúrese de invertir la prue-
ba condicional. El siguiente es un ciclo D0. . .WHILE:
DO
PRINT 'A"
INPUT "¿otna vez"; resp$
L00P WHILE (resp$ = 'S")
El listado 10.12 muestra cómo usar el ciclo Do . . . UNTI L para controlar un juego de adivinan-
za de números. La computadora pide repetidamente al usuario un número hasta que éste es
igual al de ella.
Procesamiento de datos con QBasic 1e7
1
Lrsrnoo 10.12 Uru tuEco DE ADtvtNANzA DE NÚVITNOS SE PUEDE VALER DEL CICLO
DO. . . UNTIL PARA PEDIR Los VALoRES
8: PRINT
Qr
1A= DO
11: INPUT "áQué númeno (entne 1 y 100_) piensas que es"; numeno
12= L00P UNTIL (numeno = numenoComp)
13:
14: PRINT " iConnecto! "
15: END
F¡cunn 10.4
Diagramas de flujo de
los dos ciclos DO.
Cuerpo
del ciclo
DO.WHILE
Ciclo D0 - WH I LE
Cuerpo
del ciclo
DO-UNTIL
./ ¿Es \
falsa Ia prueba
relacional
Ciclo D0 - UNT I L
1e8 Hora 10
|
QBasic de hecho maneja dos pares de ciclos D0. . .WHILE y 00. . .UNTIL. En lugar de poner
la prueba condicional al final de los ciclos, puede ponerla al inicio. Los siguientes son ejem-
plos de dichos ciclos:
D0 wHrLE (A < B)
INPUT "éCuántos años faltan"; B
LOOP
D0 UNTIL (A < B)
INPUT "¿Cuántos años faltan"; B
LOOP
La colocación de las pruebas condicionales determina si el cuerpo del ciclo se ejecuta cuando
menos una vez. Las versiones de los ciclos que aprendió antes en esta lección siempre ejecu-
tan sus cuerpos (el código a continuación de las instrucciones D0 y LOOP) cuando menos una
vez. Al poner la prueba condicional al inicio de los ciclos, como parte de la instrucción D0,
cambia la lógica, de manera que se pueda o no ejecutar el cuerpo cuando menos una vez. Si
Procesa m iento
los valores iniciales de la prueba condicional hacen que la lógica D0 falle, nunca se ejecuta el
ciclo y el programa continúa en la instrucción que sigue a la instrucción LOOp.
A medida que escriba más programas, entenderá mejor la colocación de las pruebas condicio-
nales de los ciclos. La colocación prácticamente se vuelve un acto reflejo. Lalógica del pro-
grama, dependiendo si el cuerpo del ciclo se debe ejecutar cuando menos una vez, o ninguna,
determinará la colocación de la prueba condicional.
Resumen
¡Felicidades! Ahora puede insertar datos en un programa QBasic y dar formato a la salida.
También ha dominado el verdadero poder de cualquier lenguaje de programación: los ciclos.
Los programas que vio en esta lección comienzan a ser poderosos. Sin embargo, se ha dado
cuenta que la programación es fácil. Ha aprendido a usar los operadores relacionales con la
instrucción IF para que sus programas QBasic puedan tomar decisiones con base en los da-
tos. Además, los constructores de ciclos permiten que secciones de los programas se repitan
mientras sea necesario.
La siguiente hora muestra la manera de almacenar datos en disco y de leer dichos datos desde
el disco. Los archivos en üsco almacenan datos permanentes generados por los programas
que escribe para procesarlos.
Preguntas y respuestas
P ¿Importa si selecciono instrucciones D0 o FOR cuando escribo ciclos?
R La selección no es únicamente entre ciclos FOR y D0, sino entre los diversos formatos
de cada uno de dichos ciclos. Por lo general, los ciclos FOR son úüles cuando se deben
contar valores o repetir el cuerpo del ciclo una cantidad de veces específica. El ciclo D0
es útil para repetir hasta que o mientras se cumpla cierta condición. Si se está contando
de manera ascendente o descendente, es más sencillo escribir un ciclo FOR, que, ade-
más, es ligeramente más eficiente que un ciclo D0 equivalente.
E00 Hora 10
Taller
Las preguntas del cuestionario se presentan para una mayor comprensión. Vea las respuestas
en el apéndice A.
Cuestionario
1. ¿Cuál es la diferencia entre un operador condicional y un operador matemático?
2. ¿Qué es un ciclo?
3. Verdadero o falso: el código dentro de una instrucción IF puede no ejecutarse nunca.
4. Verdadero o falso: el código denffo de los ciclos FOR siempre se ejecuta cuando menos
una vez.
5. ¿Cómo se puede abreviar la instrucción NEXT?
6. ¿Cuál es el propósito de la instrucción EXIT FOR?
7. ¿Qué ciclo, D0 o FOR. . . NEXT, es mejor cuando se quiere ejecutar el ciclo una cantidad
de veces predeterminada?
8. ¿Cuál es la diferencia enüe los ciclos DO. . .WHILE y D0. ..UNTIL?
9. ¿Cómo se determina el ciclo a usar, 00. . .WHILE o DO. . .UNTIL?
10. ¿Cómo afecta la colocación de WHILE u UNTIL, antes o después del cuerpo del ciclo, a
la ejecución del ciclo?
%%
ffiffiffi& 11
Administraci on de datos
y archivos en disco
¡Ya ha ayanzado bastante en su camino como programador de QBasic! Si estu-
viera inscrito en un curso de programación, el material que terminó en la lección
anterior signifi caría la primera mitad.
Con los archivos, inserta los datos una vez y los guarda en disco. Los datos
Por ejemplo, considere las calificaciones de un maestro. Si hay 30 alumnos, el maesfro podría
llamar a las variables con las calificaciones como calif 1 , caLif2, calif3, etc. El maestro
debe saber el nombre del estudiante la que corresponde cada calificación, por lo que también
Administración de datos y archivos en disco 203
Otra desventaja del empleo de nombres distintos para las 30 variables es que
Un arreglo es una lista de variables similares. Cada una de las variables similares se
llama elemento del arreglo. En lugar de que cada elemento del affeglo tenga un
nombre propio, el arreglo completo tiene un solo nombre. Los elementos de la iista se distin-
guen mediante subíndices.
1204
Hora 11
La parte superior de la figura 11.1 muestra cómo se ven cinco de las primeras variables
de califlcaciones en la memoria. Cada variable tiene un n«rmbre distinto. La parte infe-
rior de la figura 11.1 muesüa cómo se ve el mismo conjunto de variables almacenado en un arre-
glo. Aun hay cinco vmiables y cada una es independiente y distinta. A diferencia de las variables
con nombres distintos, cada una de las variables del arreglo tiene el mismo nombre. Se distin-
guen no por su nombre, sino por st subíndice, que es el número dentro del paréntesis que sigue
al nombre del arreglo. Cada elemento de cada arreglo tiene un subíndice. De esta manera se sabe
a qué elemento de la lista se hmá referencia cuando se necesite distinguir un valor de ofto.
calificacionet
(1) (2) (3) (4) (5)
La primera vez que sucede el ciclo FOR, i es 1. El maestro insefa el valor de nombreE$(i)
(que en realidad es nombr^eE$(i)) y carificaciones(i) (que es calificacÍones(1 ));
luego el ciclo se encarga de aumentar i a 2. Esto continúa hasta que el maestro inserta los 30
nombres y calificaciones. El subíndice pasa por todos los datos y simplifica mucho el código.
Administración de datos archivos en disco 205
QBasic deja en ceros todos los elernentos de los arreglos numéricos y pone
cadenas nulas en todos los elementos de !os arreglos de cadena antes de
que usted los use.
Es necesario que incluya la instrucción DIM apropiada al inicio de los programas que utilicen
elementos de arreglo para que funcionen correctamente. La siguiente es la instrucción que di-
mensiona 30 nombres y calificaciones:
El iistado 11.3 muestra un progralna completo que almacena nombres y calificaciones de es-
tudiantes. Dimensiona memoria de arreglos, pide los nombres y calificaciones e imprime los
valores en la impresora. Sin arreglos, no hay ninguna manera sencilla de duplicar este progra-
ma (excepto teniendo 30 pares de variables con nombres diferentes y cargiándolas mediante
30 conjuntos de instrucciones).
Administración de datos y archivos en disco 205
QBasic deja en ceros todos los elementos de los arreglos numéricos y pone
cadenas nulas en todos los elementos de los arreglos de cadena antes de
que usted los use.
Es necesario que incluya la instrucción DIM apropiada al inicio de los programas que utilicen
elementos de arreglo para que funcionen correctamente. La siguiente es la instrucción que di-
mensiona 30 nombres y caliñcaciones:
El listado 1 1.3 muestra un programa completo que almacena nombres y calificaciones de es-
fudiantes. Dimensiona memoria de arreglos, pide los nombres y calificaciones e imprime los
valores en la impresora. Sin arreglos, no hay ninguna manera sencilla de duplicar este progra-
ma (excepto teniendo 30 pares de variables con nombres diferentes y cargrándolas mediante
30 conjuntos de instrucciones).
)
I
206 Hora 11
Para que el programa del listado 11.3 seaútil en cualquier situación, hay que hacer que dimen-
sione los 30 elementos (suponiendo que dicha cantidad es el total de estudiantes) y pregunte al
maesho cuántos estudiantes hicieron el examen. El ciclo FOR puede rcalizar la cantidad de ci-
clos correspondiente a la cantidad de estudianúes que tomaron el examen. Si toda la clase tomó
el examen, se llenan los 30 elementos de los arreglos. Si fueron menos, el ciclo FOR sólo efec-
túa la cantidad de ciclos correspondiente a la cantidad de estudiantes que tienen calificaciones.
Arreglos paralelos
La lista de nombres de estudiantes y calificaciones demuestra un uso común de los
arreglos. Los arreglos nombreE$( ) y calificaciones( ) se conocen como arreglos
paralelos. Es decir, ambos arreglos tienen la misma cantidad de elementos y cada elemento
de uno corresponde a un elemento del ofro.
Con los aneglos paralelos puede almacenar arreglos con cualquier tipo de datos. Aunque un
arreglo sólo puede contener un tipo de datos, es posible tener varios arreglos paralelos corres-
pondientes enfre ellos, con una relación uno a uno. Mediante arreglos paralelos lleva el con-
trol de conjuntos completos de nombres, direcciones, números telefónicos y salarios en un
programa de nómina.
Borrado de arreglos
Hay una manera nápida para borrar el contenido de cualquier arreglo numérico o de cadena.
La instrucción ERASE permite borrar el contenido de cualquier arreglo. Esto lo devuelve a su
estado inicial. Si desea volver a utilizar un arreglo en la última parte de un programa para un
conjunto de datos distinto, tendrá que borrarlo de modo que quede listo para los nuevos
valores.
Administración de datos y archivos en disco za7
L¡sraoo 11.4 Esre pRoGRAMA sE vALE DE ERASE pARA BoRRAR Los ELEMENTos DE
UN ARREGLO
1@=FORi=1T014
11 : PRINT nums (i) ,
12= NEXT i
13:
14: ERASE nums
15: PRINT " EI arneglo tras bonranlo: "
16: FOR i = 1 T0 1A
17 PRINT nums ( i)
8:= NEXT i
,
1
1 9: END
9 de cada PRINT.
En la siguiente salida puede ver que la instrucción ERASE borra el arreglo con una sola ins-
trucción:
1 : EI anneglo antes de bonnar'1o:
2= 1 2 3 4 5
3: 6 7 I I 10
4: EI anneglo t r^as bor"r^anlo:
5: A A A a a
6: @ 0 0 o 0
|
208 Hora 11
Evite caracteres especiales, con excepción de letras y números, en los nombres de archivos.
Aunque se permiten algunos caracteres especiales en el nombre, ofros no. Es más seguro de-
jar fuera los caracteres especiales de los nombres de archivos. Estos son algunos nombres de
archivos váüdos
Un archivo puede contener cualquier tipo de datos. Por lo regular son datos repetitivos que
tienen patrones similares, como los nombres y direcciones de empleados, las listas de clien-
tes, los balances de facturación y demás.
Registros y campos
Un archivo en disco se divide en registros. La definición libre de registro es una línea
en eI archi¡¡o. Aunque los registros pueden abarcar físicamente más de una Hnea en
un archivo, un registro es un conjunto de datos relacionados que, por lo general, se escriben
en una sola lÍnea. Para aclarar este concepto, vea la tabla 11.1. Muestra un archivo de clientes.
Hay cinco registros en la tabla; el archivo contiene más registros, pero no se muesfian.
Administración de datos y archivos en disco 249
Si el archivo de la tabla 11.1 tuviese muchos más datos que esos cuatro campos, podría ver
cómo un mismo registro puede abarcar más de una línea en el archivo, y seguirse consideran-
do como un solo registro de datos.
Tipos de acceso
Las siguientes son las tres cosas que puede hacer con un archivo de datos:
. Crear uno escribiéndolo
. Leer de uno
. Añadfu al final de uno
Esto es lo mismo que puede hacer con un archivero de oñcina. Puede crear un archivo nuevo
llenando la etiqueta de la carpeta y poniendo cosas en ella, añadir a un archivo ya existente
poniendo elementos nuevos en él y leer el contenido de un archivo.
En un archivero de oficina, tiene que abrir la carpeta apropiada antes de poder leer el archi-
vo. En QBasic, debe abrir los archivos mediante la instrucción OPEN. La instrucción OPEN le
dice a QBasic cómo desea acceder al archivo.
Hora 11
1210
Si desea tener abiertos varios archivos en el mismo progr¿rma, debe asignar a cada uno un
identificador üferente. Esto permite a QBasic saber qué archivo de disco se está leyendo o
escribiendo con los comandos de E/S subsecuentes.
Si intenta abrir para entrada un archivo que no ex¡ste, QBasic emite e! men-
saje de error Anchivo no encontnado. Sólo es pos¡ble leer un archivo que ya
ex¡ste.
Los comandos de escritura posteriores usarán el identificador de archivo #3 para enviar datos
al archivo llamado Nomina.98 en la unidad de disco predeterminada.
Habrá ocasiones en que querrá añadir datos al final de un archivo. Tal vez esté agre-
gando clientes, estadísticas de ingeniería o registros de inventario. La adición al ñnal
de un archivo se conoce como modo de agregar (APPEND). La siguiente es una instrucción
OPEN que asigna a un archivo el identificador #2 y asegura que las escrituras subsecuentes se
añadirán al final del archivo sin destruir su contenido original:
9
Si
encarga de crearlo por usted.
El comando CL0SE es sencillo. Para cerrar el archivo asociado con el identificador de archivo
#1 puede hacer lo siguiente:
cLosE 1
CLOSE #1
Como puede ver, el signo de número es opcional. Pueden cerrar varios archivos con una mis-
ma instrucción CLOSE, como se aprecia a continuación:
cLosE 1, 2, 3
Hora 11
1212
Ademiás, se pueden cerra¡ todos los archivos abiertos indicando CL0SE sin opciones, como sigue:
CLOSE
Frcunn 11.2
El comando WRITE #
escribe datos en un
archivo.
Para ver los efectos de WRITE #, observe el programa del listado 11.5. Las primeras instruc-
ciones asignan valores a variables y la riLltima escribe en üsco dichos datos. El programa es
corto; sólo se escribe un registro en el archivo. En una aplicación real se escribiían más re-
gistros. No obstante, el programa muestra cómo WRITE # da formato a la línea de datos. Es-
tudie el programa y observe los datos al ser escritos en el archivo.
Con el editor Bloc de notas de Windows puede ver los archivos de datos
El listado I 1.6 es un ejemplo más común de la creación de archivos de datos. En este progra-
ma, el usuario controla la cantidad de registros escritos en el archivo. El programa usa tanto
arreglos como disco para llevar el control de los datos insertados. Primero carga todos los da-
tos (hasta 100 valores) en arreglos paralelos. La última parte del programa almacena dichos
arreglos en el archivo primer.dat.
continúa