Está en la página 1de 117

120

Hora 1

El costo del hardware de una computadora es análogo al costo de un equi-

9 po estereofónico. Al principio parecerá que se paga mucho más por el


equipo que por los discos compactos y las cintas, pero si sucediera un incen-
dio y únicamente pudiese salvar su equipo estereofónico o sus discos y
cintas, ¿qué escogería? Casi todos preferirían salvar sus discos y cintas; son
mucho más difíciles de reemplazar y mucho más costosos que el equipo.
E! equipo se puede sustituir en cosa de una semana (y probablemente con
equipo más moderno, gracias a los componentes computarizados de la ma-
yor parte de los equipos estereofónicos), pero podría llevarle toda una vida
sustituir todos sus discos y cintas.

La lección de la siguiente hora, "El hardware de las computadoras al descubierto", explica


los detalles del hardware de las computadoras desde la perspectiva del programador.

El software
Aunque el softuare (otro término para indicar los programas de las cwnputadoras) in-
dividual está bajando de precio, las compañías y las personas poseedoras de compu-
tadoras invierten más en software gada ar1o. No sólo la gente compra software nuevo a medida
que sale al mercado, también act;':aliza las versiones de los programas que ya tiene.

Los negocios y los inüviduos deben considerar el costo del software al tomar decisiones so-
bre las computadoras. Mientras que un individuo generalmente compra una computadora y da
por conclüda la compra de hardware durante un tiempo, la adquisición de software parece no
tener fin*(el software cambia con rapidez). Como futuro programador, estas noticias son bien-
venidas ya que su crrrrera está asegurada. Para el comprador no informado, el costo del soft-
ware puede ser exorbitante.

Las empresas también deben considerar su equipo de programadores y el tiempo necesario


para escribir los programas que utilizan. En la siguiente sección aparece mayor inforrnación
sobre el equipo de programación y de soporte.

Cuando una compañía compra software,lo que adquiere es una licencia de software.
Si una compañía quiere comprar un programa de procesamiento de texto para 100
empleados, debe adquirir legalmente 100 copias del programa o, cuando menos, wa licencia
para su instalación que permita a la compañía utilizar el software en más de una máquina. La
adqüsición de un programa no otorga a la compañía su propiedad. Cuando compra un disco,
no es propietario de la música; únicamente ha comprado los derechos para escucharla. Legal-
mente no puede alterar, grabar, regalar copias ni, lo mrís importante, vender grabaciones de la
música. Lo mismo ocurre cuando se habla de software que se puede adquirir. La licencia para
el software individual le otorga el permiso para utilizarlo en una sola computadoraalayez.
Las computadoras comg herramientas

La gente
Si una compañía vende automóviles, su activo más importante no son los automóviles, sino la
gente (y no los clientes, sino los empleados; los clientes vendrán si los empleados hacen bien
su tabajo). En una compañla que vende seguros, éstos no son su activo mrís importante, sino su
gente.

Cuando una compañía adquiere una computadora, sea una de escritorio o un enorme mainfra-
me que llena una habitación completa, debe considerar el costo de la gente que será parte de
ese sistema de información computarizado. Habrá costos relacionados con la capacitación,
programación y uso de la computadora. Tendrá que haber personal de respaldo capacitado
para hacerse cargo de las actividades de cómputo si oüa persona se va. Y, como sucede con el
software, el costo del personal no cesa; es un proceso continuo. Con frecuencia, un sistema de
información computarizado puede ahorrar dinero a una compañía en relación con la eficiencia
y el poder de procesamiento, pero posiblemente tenga que contratar a más personal, y los em-
pleados son caros.

Los datos
Observe de nuevo la figura 1.1 y considere esto: es vital que los datos ingresen en la
computadora con la mayor exactitud posible. Si los datos entran equivocados, es ca-
si seguro que salga información mala. A esto se le conoce como GIGO, o basara dentro, ba-
surafuera. El programador debe estar siempre al acecho para encontrar mejores maneras de
obtener datos correctos. El programa no siempre puede determinar si los datos son erróneos.

En una compañía con la nómina computarizada, alguien debe introducir las cifras semanales
y dirigrr los programas de procesamiento de la nómina, y estar ahl pila poner los cheques en
la impresora. Los datos de la nómina que antes se regisüaban a mano y se enviaban a un con-
tador, ahora tienen que introducirse correctamente en la computadora.

Algunas compañfas grandes tienen equipos completos con 20 o más personas cuya tarea de
tiempo completo es sentarse frente a una computadora y capturar datos. Las grandes compa-
ñías manejan cantidades descomunales de datos. Las computadoras pueden procesarlos, pero
únicamente cuando han sido introducidos de manera correcta y con precisión. Las compaftías
petroleras deben contabiüzar cada gota de petróleo que reñnan y venden, las cuentas por pa-
gar y las cuentas por cobrar se deben acfializa¡ cada periodo y los registros deben archivarse.
El ingreso de este tipo de información es equivalente a su procesamiento, y es un costo que se
debe tomar en cuenta en el precio de un sistema de información computarizado exitoso.
122
Hora 1

'El
departamento de captura de datos de una compañía no sólo inserta los
datos necesarios para su procesamiento, sino que los inserta dos veces. Por
lo común, esto !o hacen dos personas diferentes. Debido a! fenómeno de ba-
sura dentro, basura fuera, las compañías intentan asegurar que sus datos es-
tán correctos efectuando una doble entrada de datos. Una vez que dos
personas insertan los mismos datos, un programa de cómputo los compara,
a fin de detectar discrepancias. Aún así, pueden colarse algunos errores, pe-
ro las posibilidades son mínimas.

Los procedimientos
Los procedimientos de procesamiento de datos se deben determinar tan pronto como esté ins-
talada una computadora. Estos proceümientos generalmente inc§en todo lo que el usuario
de la computadora debe hacer diariamente para procesar los datos. Los empleados cambian de
puesto o compañía, y la empresa ha de hacer lo necesario para proporcionar procedimientos
adecuados en caso de que otra persona tenga que cubrir un puesto.

Los procedimientos también incluyen la seguridad de las computadoras. Se debe dar manteni-
miento tanto a la seguridad física como a la seguridad de los datos. Los ladrones no se llevarán
los escritorios ni las lámparas, pero sí las computadoras. Antes de las computadoras, las oficinas
no tenían que preocuparse demasiado por la seguridad, pero ahora es indispensable tener una
protección adecuada para sus sistemas de computación. Aunque sus tareas como programador
probablemente no incluyan ser alguacil de medio tiempo, es importante que esté al pendiente de
los problemas potenciales de seguridad. Asegírese de que las computadoras estén encerradas
con llave en las oficinas durante la noche. Hoy día hay alarmas y cerraduras que se pueden ins-
talar enias computadoras para asegurarlas. La mayor parte de las compañías aseguradoras ofre-
cen pólizas adicionales que cubren específicamente los robos de computadoras.

Si hay una línea telefónica conectada a la computadora, existe la probabilidad de que perso-
nas no autorizadas entren al sistema. Deben asignarse contraseñas adecuadas. Laprotección
de los datos es tanto o más importante que la del propio hardware. Es esencial hacer discos de
respaldo de toda la información cada noche, los cuales deben guardarse por separado (los res-
paldos no servir¡ín de mucho si un incendio destruye tanto los archivos de las computadoras
como los discos de respaldo que estén a un lado de las máquinas).

También debe mantenerse la confidencialidad de los datos. Aún cuando la mayofa de los em-
pleados son honestos, las cifras importantes de la compañía, como las nóminas, se deben pro-
teger. No deje que los empleados tengan acceso directo a sus archivos de nómina y asegúrese
de que la persona que ejecuta los programas de nómina esté consciente de la importancia de
la confidencialidad.

Divulgue los componentes


A medida que avance por su carrera como programador, tenga presente que deben estar en
su lugar los cinco componentes antes de que pueda tener éxito un sistema de información
computarizado. Aún cuando algunas compañías no pueden adaptarse de la noche a la mañana,
Las computadoras como herramientas 23
I

la mayoría hará un gran esfuerzo por poner en su lugar los cinco componentes, aunque usted
tendrá que dar a conocer la importancia de üchos componentes. Su tarea como programador
será más vital para las compañías para las que programe si es capaz de hacer algo más que
simplemente progrrlmar; debe aprender a ser su consultor de computación general, ayudándo-
les a dichas compañías a tener una visión más amplia.

Resumen
Ahora que sabe más acerca de la industria de las computadoras en general, tendrá una buena
idea de dónde entran los programadores en la escena. Las computadoras no pueden hacer
nada sin programas y los programadores son los responsables de proporcionar dichos
programas.

La siguiente hora explora el hardware desde la perspectiva del programador. Neqesita enten-
der cómo el hardware procesa internamente los datos que sus programas requieren.

Preguntas y respuestas
P ¿Una vez que he escrito un programa, ha terninado mi trabajo?
R Se dice que un programa se escribe una vez y se modifica muchas. Durante esta guía de
Z4horas, aprenderá la importancia de dar mantenimiento a un programa tras haberlo
escrito. A medida que cambian las empresas y mejoran los ambientes de cómputo, tam-
bién lo deben hacer los programas que usa la gente. Las compañías ofrecen actualiza-
ciones de su software a medida que se necesitan características nuevas. Los programas
que escriba hoy día tendriín que cambiar en el futuro para estar a la altura de la compe-
tencia, asf como de las nuevas características requeridas por sus usuarios.
P ¿Cuál será la demanda de programadores en el futuro?
R Como se explica en la hora 21, los empleos para programadores seguirrín siendo cada
vez más abundantes en la medida en que aumente el uso de las computadoras. La de-
manda de programadores ha aumentado constantemente durante los últimos años y,
afortunadamente para los programadores, también ha sucedido lo mismo con los suel-
dos y las prestaciones asociadas con el trabajo de programador.

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 datos e información?
2. Verdadero o falso: Lo que para una persona son datos puede ser información para otra.
3. ¿Qué es un programa?
4. Verdaderó o falso: Las computadoras nunca cometen errores.
5. ¿Por qué no debe temer la gente que las computadoras la sustituyan?
6. ¿Cuál es el componente menos costoso de un sistema de información computarizado: el
hardware, el software, la genüe, los datos o los procedimientos?
7. verdadero o falso: El precio del software, la gente, los datos y los procedimientos está
bajando con el üanscurso del üempo.
8. ¿cómo se aplica el término basura dentro, basura fuera a los programas de cómputo?
9. ¿Qué departamento en las grandes empresas es el responsable de proveer
la mayor par-
te de los datos para los programas que escriben los programadores?
10 Dé algunos ejemplos de los procedimientos que debe poner en práctica una compañla
cuando instala un sistema de información computarizado.
HoRA 2
EI hardware de las
cofnputadoras al
descubierto
La industria de la computación es una de las de más reciente aparición. La medici-
na, las matemáticas y la ingeniería surgieron en épocas antiguas, sin embargo, la
primera computadora real se inventó en este siglo en la década de los 40. Aunque
las raíces de la computación se remontan al dbaco (un dispositivo mecánico de
cálculo que se empleaba para sumar y restar), las primeras computadoras elec-
trónicas tienen unos 50 años. Como programador novato, tendrá que conocer las
tendencias de la industria para saber hacia dónde se dirige. Deberá comprender el
pasado para entender el futuro, pues hay algunas tendencias muy obvias que han
surgido desde que se inventóla primera computadora. Para empezar,las compu-
tadoras cada vez son más pequeñas, más económicas y más rapidas. ..

Esta hora 1o llevará en un viaje a través de las jóvenes raíces de la industria de la


computación. Tiene un enfoque diferente al de muchos libros sobre la historia de
la computación. En lugar de concentrarnos en los hechos y las fechas, presenta-
mos los patrones de la evolución de la computadora, poniendo énfasis en el
punto de vista del programador con respecto a esta evolución.
HoRA 2
El hardware de las
computadoras al
descubierto
La industria de la computación es una de las de más reciente aparición. La medici-
na, las matemáticas y la ingeniería surgieron en épocas antiguas, sin embargo, la
primera computadora real se inventó en este siglo en la década de los 40. Aunque
las raíces de la computación se remontan aI dbaco (un dispositivo mec¿ínico de
cálculo que se empleaba pffia sumar y restar), las primeras computadoras elec-
trónicas tienen unos 50 ar1os. Como programador novato, tendrá que conocer las
tendencias de la industria para saber hacia dónde se dirige. Deberá comprender el
pasado para entender el futuro, pues hay algunas tendencias muy obvias que han
surgido desde que se inventíla primera computadora. Para empeza\ las compu-
tadoras cada vez son más pequeñas, más económicas y más rapidas

Esta hora 1o llevaráenun viaje através de las jóvenes raíces de la industria de la


computación. Tiene un enfoque diferente al de muchos libros sobre la historia de
la computación. En lugar de concentrarnos en los hechos y las fechas, presenta-
mos los patrones de la evolución de la computadora, poniendo énfasis en el
punto de vista del programador con respecto a esta evolución.
Hora 2
126

Los temas relevantes de esta hora son:


. Por qué Ia industria de la computación es una de las más nueyas
. Cómo evolucionó la tecnología de la computación
. Por qué la tecnologfa avanzada permitió la proliferación de la computación
. Qué es un sistema operativo
. Cómo interactúa el hardware de la computadora con el sistema operativo
. Cómo la tecnología cliente/servidor permite a las compañías lograr una sinergia con
todo tipo de computadoras, tanto pequeñas como grandes
. Qué pasos sigue una computadora cuando ejecuta un programa.

Los antecedentes de las computadoras


Las primeras computadoras eran enonnes. Se les conoce como computadoras de primera
generación. Estas computadoras, desarrolladas a finales de la década de los 40, estaban
basadas enbulbos. Si se ha asomado al interior de un viejo aparato de televisión, habrá visto
muchos componentes que parecen pequeñas bombillas. Se trata de bulbos (también llamados
tubos al vacío) y eran los mecanismos de almacenamiento y computación que se usaban en
las primeras computadoras.
-
Las computadoras de primera generación eran tan grandes que abarcaban varias habitaciones
(casi un edificio completo). En realidad, las computadoras ocupaban una buena parte del
espacio y el resto el descomunal sistema de aire acondicionado necesario para enfriar las
máquinas. Se requerían grandes plantas de poder para suministrar energía a los miles de bul-
bos que había dentro de estas máquinas.

Las computadoras de pr¡mera generación eran increíblemente poderosas...


bueno, no tanto como las calculadoras de bolsillo energizadas por celdas
solares pero, para su tiempo, fueron un invento adecuado. Hasta que lle-
garon las computadoras electrónicas, simplemente no había forma de calcu-
lar y procesar grandes cantidades de datos.

El costo, tamaño y necesidades energéticas dejaron a las computadoras de primera generación


fuera del alcance de la mayoía de las organizaciones. No fue sino hasta que llegó la segunda
generación que más gente comenzó a utilizarlas y a aprender más sobre las ventajas de la
computación. A finales de la década de los 50, las computadoras de segunda generación se
componían de tecnología de pequeñas partes lla¡rradas transistores. Si alguna vez ha visto el
interior de un radio de transistores, habrá observado pequeños componentes de colores, que
son los transistores. Éstos fueron los más pequeños reemplazos de los bulbos en las compu-
tadoras elecfrónicas, que aumentaron de inmediato el poder de las computadoras disminuyendo
su tamaño y reduciendo su costo. En el espacio de un solo tubo al vacfo caben cientos de
El hardware de las computadoras a! descubierto 27
I

ffansistores. Los transistores también son mucho más confiables que los bulbos. Con ellos, los
negocios y las escuelas por fin pudieron tener acceso a estas máquinas.

¿Puede ver los beneficios de la computación de bajo costo? Dado que


muchas organizaciones pudieron adquirir computadoras, más gente tuvo
acceso a ellas. Sucedió una sinergia, pues no sólo se estaba afinando el hard-
ware de las computadoras a saltos agigantados, también ocurrían grandes
avances en el software. Fue principalmente durante la segunda generación
de computadoras que se desarrollaron los lenguajes de programación, como
los que aprenderá en este libro.

Las computadoras se volvieron una herramienta para las empresas; la década de los 60 fue
testigo de un increíble crecimiento de los usos y tareas de las computadoras. Miás compañías
entraron en el negocio de las computadoras, se produjeron historias y películas de ciencia fic-
ción que mostraban estas máquinas de cómputo, tanto con buenos como con malos ojos, y
todo el mundo supo que la computadora había llegado para quedarse.

En la década de los 60, la NASA decidió que queía enüar gente a la Luna. ¡Imagínesel Tenía,
sin embargo, un problema real. Eran necesarias las computadoras para enviar gente a la Luna
y eran indispensables los muy veloces cálculos de las computadoras durante el vuelo. Las
computadoras necesitaban tener el conffol de una gran cantidad de operaciones.

Observe la seriedad con la que la NASA tuvo que tomar a las computadoras
en las misiones espaciales. Es necesario efectuar cálculos en fracciones de
segundo, o los cohetes podrían terminar en el 5ol, cosa que no sería buena
(a menos que f uese de noche, claro está).

Los problemas a los que se enfrentó la NASA no fueron de programación, pues había sufi-
cientes programadores que podían hacerse cargo del software. El problema era la distancia
entre la Tierra y la Luna. Aún cuando las computadoras en tierra podían controlar la nave
espacial meüante señales de radio, estas señales tardan cierto tiempo en viajar a través del
espacio. Son necesarios unos 3.5 segundos para que una señal de radio llegue de la tierra a la
Luna. Para entonces (3 segundos es casi una eternidad para una computadora), la nave podúa
estar en peligro en caso de que fueran necesarias correcciones de curso.'

La NASA no podía enviar cohetes al espacio sin computadoras a bordo que los controlaran.
Aún cuando las computadoras de segunda generación eran mucho más pequeñas y ligeras que
las primeras, seguían siendo demasiado grandes como para caber en un cohete espacial. Por
lo tanto, había que diseñar componentes más pequeños para las computadoras o archivar los
proyectos espaciales hasta que se encontrara una solución.
128 Hora 2

Algún genio de la NASA desarrolló un componente, que se sigue empleando hasta hoy, lla-
mado circuito integrado (vea la figura 2.1). El circuito integrado (también llamado CI o chip)
tiene casi el tamaño de una caja de cerillos, es de color nego y tiene conexiones plateadas
que, por lo general, salen por dos de sus costados haciendo que parezca un escarabajo negro
de alta tecnología. Mientras que el transistor sustituyó a los bulbos en una relación de uno a
uno, cada circuito integrado reemplazaba a miles de transistores. Todos los circuitos de una
computadora de segunda generación podían integrarse en el espacio de una caja de cerillos.
Muy pronto, las computadoras se volvieron mucho más pequeñas, la NASA llegó a la Luna y
regresó con sus computadoras de abordo, nosoftos obtuvimos las computadoras de escritorio,
ahora había una computadora disponible para cada persona y nacieron las computadoras de
tercera generación, que han mejorado desde entonces.

FrcuRR 2.1
Un chip de circuito
integrado tiene miles
de partes.

Un circuito integrado es casi un dispositivo mágico. Sus diseñadores utilizan herramientas


láser para instalar y conectar los rniles de componentes miniatura en la placa que constituye
su cuerpo. Los circuitos integrados también se conocen como microprocesadores. Debido al
amplio uso del microprocesador en las computadoras actuales de escritorio, se designó el tér-
mino microcomputa.dora. La mayoría de la gente que lea esta libro probablemente utiliza una
microcomputadora como su máquina de cómputo primaria. El chip microprocesador es la
computadora actual; el resto del hardware relacionado con la computadora está ahí para
enviar y recibir datos del microprocesador.

El término máquina se emplea en la industria de !a computación para desig-


nar una computadora. A diferenc¡a de casi todos los dispositivos llamados
máquinat las computadoras tienen relativamente pocas partes móviles. La
impresora y las unidades de disco tienen partes móvites, aunque existen
algunas otras.

Tal vez le interese un breve resumen de hitos de la industria de la computación. Cuando


conozca más sobre el desarrollo de esta tecnología, tendrá una mejor idea de hacia dónde se
dirige. La tabla 2.1 presenta una mi¡ada a la línea de tiempo de la computación, en caso de
que le interesen algunos de los detalles históricos.
El hardware de las computadoras al descubierto 2sI

Teeln 2.1 Bneve HrsroRtA DE LAs coMpurADoRAS

Fecha aproximada Descripción del evento


3000 A.c. Se inventa el ábaco, que se utlltzapara rápidos cáIculos de sumas y
restas de manera manual.
t645 D.C. El matemático francés Blaise Pascal inventa una máquina mecánica
para suma"r y restar, llamada Pascalina por su inventor.

1 830 Charles Babbage, el padre de las computadoras, diseña la primera


computadora electrónica, llam ada mdquina diftrencial.
Desgraciadamente, en realidad nunca se construye la máquina dife-
rencial, pero las computadoras actuales se basan en ella.
1 890 Se predice que el censo de 1890 será tan vasto que el poder de la
gente, por sí sola, sería incapaz de tabularlo. Por lo tan!9, un inventor
llamado Herman Hollerith inventa la tarjeta perforada. Los datos del
censo se perforan en estas tarjetas, las cuales se procesan a través de
máquinas tabuladoras que calculan los totales. La tarjeta perforada
fue el dispositivo de entrada primario de las computadoras del siglo
20 hastala década de los 60.
1937 Se construye una calculadorá electromecánica con la ayuda de IBM.
Aunque no se ffata de una computadora electrónica en el sentido
estricto, puesto que todas sus partes son mecrinicas y tienen
movimiento, esta computadora Mark / (como se le bautiza) prueba
que la teoría de las máquinas de cómputo puede ser una realidad y no
simplemente una teoria.
t939 Se inventa la primera máquina de cáIculo con bulbos.

1946 Se inventa la primera computadora de propósito general de primera


generación, con bulbos, llamada ENIAC.

1945-1952 Se desarrollan las computadoras llamadas EDSAV y EDVAC, con


memorias electrónicas para almacenar tanto datos como programas.
t957 Sedesarolla FORTRAN (uno de los lenguajes de programación más
antiguos que se sigue utilizando en la actualidad) para ayudar a los
programadores científicos y matemáticos.

1959 Entran en escena las computadoras de segunda generación.


1960 Se desarrolla COBOL para dar a los programadores comerciales el
lenguaje que necesitan para escribir programas.
1964 Se escribe la primera versión de BASIC, el lenguaje de programación
más importante para los programadores novatos.

1965 Se perfeccionan las computadoras de tercera generación.

continúa
Hora 2
130

TneLn 2.1 Corur¡ruuaclóru


Fecha aproximada Descripción del evento
t9t 6 BASIC es transportado a las primeras microcomputadoras por
Microsoft, una compañía formada y operada desde su cochera por
dos adolescentes (uno de los cuales, Bill Gates, sigue participando
en la industria de la computación como cabeza de Microsoft, Inc., y
se le considerala persona más rica de los Estados Unidos durante
esta década de los 90).
r976-1978 Se inventan dos de las microcomputadoras más importantes, que dan
comienzo a la computación casera; se trata de la computadora Apple
y la TRS 80 de Radio Shack y son vendidas por unos cuantos cientos
de dóIares. Su bajo costo y amplia disponibilidad probablemente
hicieron más por la industria de las microcomputadoras que cualquier
otro logro individual.
198 1 La introducción de la primera microcomputadora de IBM, la PC,
finalmente proporcionó estabilidad a las microcomputadoras. Hasta
la invención de las PC, muchas compañías fabricaban infinidad de
máquinas no compatibles. A medida que IBM vendía más compu-
tadoras de las que cualquiera (incluyendo a IBM) habíapronosticado,
mucha gente se dio cuenta de los beneficios de apegarse a un tipo de
máqtrina. Los programas, datos y dispositivos extra se pueden inter-
cambiar, siempre y cuando se tenga una computadora IBM o que sea
compatible.
t982 El Instituto Nacional Americano de Estandares (ANSI) acuerda un
estándar de aceptación universal para el lenguaje de programación C.
C resulta ser el más importante lenguaje de computación de la década
de los 80, extendiéndose a las computadoras grandes e introduciéndose
en industrias anteriormente dominadas por el lenguaje COBOL.
1984 Comienza a generff interés el sistema operativo Windows.
1 989 Se vuelve disponible el lenguaje de programación C++ en una amplia
variedad de microcomputadoras, siendo la punta de lanza del
movimiento de OOP (Programación Orientada a Objetos), que
promete cambiar la manera de escribir los programas.
1990 Comienza a tomar forma Visual Basic para ofrecer habilidades de pro-
gramación en Windows sin la necesidad de invertir mucho tiempo.
1995 Mndows 95 y Windows NT se convierten en los sistemas operativos
dominantes en las computadoras PC y servidores.

Hay programadores expertos con magníficos empleos que saben menos sobre la historia de
las computadoras de 1o que usted sabe ahora. Existe tanta literatura referente al pasado de las
computadoras y a las distintas generaciones de computadoras, que únicamente le podrá repor-
tar beneficios el haber tenido este repaso infroductorio sobre la breve historia de éstas.
El hardware de las computadoras al descubierto 31
I

Las computadoras actuales


Si lee muchas obras sobre las computadoras, verá que a veces se emplean los términos
computadora de cuarfa y de quinta generación. La mayoía de los eruditos en computadoras
estrán de acuerdo en que la distinción enfre las generaciones después de la tercera no es más
que un punto de vista. No ha habido una separación obvia y tajante de la tecnología a partir
de la tercera generación, como la hubo con las primeras ües. No obstante, cada día parece
que los fabricantes encuenftan medios de empacar más partes en circuitos integrados cadavez
más pequeños, a una fracción del costo de la tecnología anterior.

El futuro de la tecnología de las computadoras parece tener la intención de repetir los últi-
mos 50 años. Da la impresión de que se incluirá más poder de cómputo en cajas cadavez
más pequeñas, confiables y económicas. Más gente usará las computadoras para cosas más
diversas.

Esto es un beneficio doble para el.programador. Primero, a medida que más gente use
computadoras, necesitarán más programadores para escribir los programas de éstas. Segundo,
conforme las computadoras se vuelvan más poderosas y r.ápidas, sus viejos usos (y, por lo
tanto, los programas más viejos) se tendrán que actualizar para aprovechar el nuevo hardware.
Esfe mantenimiento de programas se convierte en el trabajo más importante del programador.
Durante el resto de este libro, aprenderá la importancia que tiene el mantenimiento de los pro-
gr¿rmas para la industria de la computación.
Hora 2
132

Los tipos de computadoras


Las computadoras yienen en todos las formas y tamaños, pero principalmente caen dentro de
cuatro categorlas generalesi supercolnputadoras, mainframes, minicotnputadoras y micro-
computadoras. A pesar de que las computadoras se estiín volviendo más pequeñas, aún hay
necesidad de computadoras gtandes. Las empresas, bancos, universidades y otras grandes
organizaciones necesitan el poder que ofrecen las computadoras grandes. Aunque las
computadoras de escritorio cada día se vuelven más poderosas, las máquinas grandes aún
generan cientos de veces más poder de cómputo que las pequeñas.

Hace algunos años, la distinción enfre los diferentes tipos de computadoraq era miis importante
que ahora. En la actualidad, los ambientes de computación, excepto la computación casera, casi
siempre consisten en conjuntos de varios de estos tipos de computadoras conectadas en red.

Las computadoras están diseñadas para ser máquinas mu¡t¡tareas. Es decin


aún cuando las computadoras sólo pueden ejecutar una instrucción a la vez,
lo hacen a tal velocidad que se pueden ejecutar programas de forma
s¡multánea. En las computadoras más grandes, var¡as personas pueden com-
part¡r la computadora teniendo la impresión de que son las únicas personas
trabajando en ella.

Antes de profundizar en las cuestiones especlficas del hardware de las computadoras, será útil
definir los cuatro tipos de computadoras.

Supbrcomputadoras
Las computadoras m¡ís cÍuas y rápidas que existen son las supercomputadoras. Son tan nápi-
das que su mejor uso es en aplicaciones científicas en las que los intensos cálculos matemáti-
cos deben ser muy rápidos. El costo de las supercomputadoras y su falta de disponibilidad
(apenas hay unos cientos en existencia) causan que la mayoría de las empresas busquen otros
tipos de computadoras que se mencionan en las siguientes secciones. Las supercomputadoras
son tan rápidas que es necesario enfriarlas con hidrógeno, helio u otros gases licuados para
mantenerlas rabajando a su nivel pico. (El calor, causado por la resistencia del cableado,
vuelve lenta a una computadora). El costo de las supercomputadoras las pone en manos de
apenas unas cuantas organizaciones gubernamentales y comerciales.

Mainframes
Los mainframes son la piedra angular del procesamiento de datos moderno en las grandes
empresas. Cuando deben manejar procesos intensivos y varios miles de usuarios al mismo
tiempo, los mainframes son la principal opción para las empresÍrs. Los mainframes requieren
E¡ hardware de las computadoras al descubierto 33 I

de grandes equipos de personal de mantenimiento, operadores, programadores y capturistas de


datos. Trabajan las veinticuafro horas y cualquier caída (falla de la máquina) representa un
gran costo para las empresas que las usan.

Los mainframes deben albergarse en habitaciones grandes, pues tienen grandes unidades de
proceso y numerosos dispositivos de almacenamiento conectados a ellas. Estas habitaciones
generalmente tienen un ambiente controlado, con enfriamiento para mantener las computado-
ras trabajando a un nivel confortable, y con aire filtrado para evitar la entrada de polvo al sis-
tema en la medida de lo posible. La mayor parte de las compañías con mainframes tienen dos
o más conectadas entre sí, así como en red con minicomputadoras y microcomputadoras. Las
computadoras más pequeñas descargan parte del frabajo del mainframe, dejando que éste se
encargue de las tareas de cálculo más intensas,

Minicomputadoras
Las minicomputadoras generalmente son computadoras multiusuario que pueden manejar
hasta 300 usuarios alavez. Una minicomputadora por lo regular no es más grande que un
refrigerador. Las minicomputadoras no son tan rápidas como los mainframes, pero no cuestan
tanto. A pesar de estas ventajas, las minicomputadoras prácticamente se han extinguido.
A medida que las microcomputadoras se vuelven m.ás poderosas y lo bastante rápidas como
para manejar sin problemas a más de un usuario, las empresas han dejado de sustituh sus
viejas minicomputadoras con minicomputadoras nuevas. La capacidad de almacenamiento de
las microcomputadoras actuales está a la par con la de las minicomputadoras y su costo es
mucho menor.

Durante las décadas de los 70 y 80, la minicomputadora llenó un nicho que la


microcomputadora no fue capaz de cubrir en ese momento. Los mainframes
no estaban al alcance de muchas compañías y la microcomputadora no era lo
bastante poderosa como para llevar a cabo el procesamiento de datos comer-
ciales en serio. Por lo tanto, a pesar de la virtual extinción de las minicompu-
tadoras, los programadores les deben a éstas muchas de las oportunidades de
trabajo de programación, ya que hicieron posible que las compañías pequeñas
integraran computadoras en sus negocios desde hace 20 años.

Microcomputadoras
Las microcomputador¿¡s son las computadoras más pequeñas, menos costosas y más popu-
lares que existen. Llamadas con frecuenciacomputadoras de escritorio, PC y computadoras
personales,las microcomputadoras han visto aumentar tremendamente su popularidad desde
finales de la década de los 70, y parece que su crecimiento continuará en el futuro a pasos
agigantados.
Hora 2
134

El tipo más popular de microcomputadora hoy dla se conoce como compatible con PC o com-
patible con IBM. La línea de compatibles con PC incluye los procesadores de la familia 80X86.
Intel es la compañía que desarrolló el 8088 original (el chip en el que se basó la primera PC de
IBM, que definió la compatibilidad con PC), y lo ha mejorado desde entonces. Las versiones
mejoradas del chip se llaman 80286, 80386, 80486, Pentium y Pentium II; surgen nuevos nom-
bres cada vez que Intel mejora la velocidad y capacidades del chip.

Cuando un fabricante libera un procesador nuevo, éste casi siempre es más rápido y tiene más
componentes aglomerados en un espacio menor que su antecesor. Las mejoras masivas que
han ocurrido en la tecnología de los chips han dado como resultado velocidades de PC que se
duplican cada dos años, más o menos.

Debido a que los negoc¡os en un principio adoptaron en su mayoría a la IBM


PC, en lugar de la línea original de Apple, llamada Apple ll, ninguna de las
computadoras Apple que surg¡eron desde la introducción de la IBM PC, ha
disfrutado de una participación tan grande en el mercado como las compat¡-
bles con PC. La línea actual de microcomputadoras de Apple, Macintosh, es
de alta calidad y capacidad, que sobresale en los gráficos y en su facilidad de
uso. Sin embargo, a pesar de las magníficas características de ésta, las com-
patibtes con PC dóminan el mundo de la pequeña computación.

Las PCs se toman muy en serio en el mundo de los negocios y de la investigación. "Una PrC
en cada escritorio" prlrece ser el objetivo de las adminisüaciones actuales. Las PCs portátiles
y de bolsillo ahora son lo bastante pequeñas como para caber en un portafolios y son pocos
los hombres de negocios que üajan sin sus PCs. Es común ver cuando menos una micro-
computadora en la mayor parte de los hogares, algo que casi no sucedla hace diez años.
Gracias a la productividad de los programadores que hacen que las computadoras realicen
tareas útiles, muchos hogares tienen una segunda e inclusive una tercera PC, y cada vez más
hogares las estiín interconectando para formar redes caseras.

Com putación cl iente/servidor


Dada la popularidad de las PCs y las capacidades de procesamiento de los mainframes,
muchas compañlas actuales están combinando el podeío de estas máquinas para ofrecer una
computación cliente/sen¡idor El mainframe, el servidor, pone las inmensas bases de datos a la
üsposición de las PCs de la compañía (los clientes) conectadas entre sí en una red. Los
usuarios de las PCs pueden ejecutar los programas desde el disco de la PC, pero también
pueden obtener los datos del servidor para procesarlos.
EI hardware de las computadoras al descubierto 3sI

La computación cliente/servidor también es conocida como computación de

9 empresa. Mediante el uso de esta tecnología,una compañía puede mejorar


su capacidad general de computación añadiendo computadoras PC y cre-
ciendo su servidor mainframe o minicomputadora. Muchos de los lenguajes
de programación actuales están bien adaptados al modelo cliente/servidor.

Debido a la amplia disponibilidad y bajo costo de las PCs, la mayoría de los programadores
aprenden a programar en esta plataforrra. El enfoque de este libro es la programación en PC,
aunque también se presta atención a la programación de computadoras más grandes. Esta
obra supone que usted esüá aprendiendo a progr¿unar en una PC pero, a medida que aumenten
sus habilidades, algún díatalvez programe en una organización más grande. No sólo apren-
derá a escribir prograrnas, sino también cómo una compañía diseña y escribe programas.

El hardware desde Ia perspectiva


del programador
Esta sección le da una breve inftoducción al hardware de las computadoras y a la forma como
el programador puede dirigir ese hardware desde los programas. La PC es el enfoque princi-
pal de este estudio. Si programara una computadora grande, como un mainframe, le servirá la
misma información, pero a una escala mucho mayor. Todas las computadoras, desde las
supercomputadoras hasta las PCs más pequeñas, tienen los mismos componentes principales;
todas tienen cuando menos rm procesador, memoria y dispositivos de entrada y salida conec-
tados a ellas.

Comprensión del hardware de las PCs


La figura 2.2 muestra un sistema PC de escritorio típico. Casi todas las PCs tienen una unidad
del sistema, un monitor, teclado, ratón, módem e impresora. El almacenamiento permanente
se logra a través de unidades de disco, CD-ROM y DVD. Las computadoras más grandes
tienen las mismas partes, aunque por lo general en mayor cantidad y están distribuidas sobre
un iírea más grande. Algunos mainframes tienen conectados hasta 1 000 teclados, 50 unidades
de disco y 20 impresoras. El programador tiene un consumado interés en todo el hardware
incluido con una computadora, pues sus progr¿rmas deben interactuar con estos dispositivos.

El componente primario de una PC es la unidad del sistema. Es en ella donde se ubican la


memoria principal, la fuente de poder, las unidades de disco y, lo más importante, el micro-
procesador. El microprocesador se conoce con frecuencia como CPU (Unidad Central de
Procesamiento). La CPU es, propiamente, la computadora, pues se encarga de todo el nabajo
de procesamiento de los datos y de generar la información requerida.
136
Hora 2

Flcune 2.2
IMPRESORA
IA PC contiene todos
los componentes
necesarios para el
almacenamiento,
procesamiento, UN¡DAD DEL
entrada y salida.

La figura 2.3 muestra un sofisticado diagrama del interior de una típica unidad del sistema.
La fuente de poder reduce el voltaje de la toma de corriente de 110 volts a unos 5 volts. Los
circuitos dentro de la computadora requieren de muy poco voltaje para operar. Un ventilador
junto a la fuente de poder hace ci¡cular el aire para mantener baja la temperatura. El monitor
y la impresora con frecuencia consumen mucha más energía que la propia computadora.

Flcunn 2.3
El programador debe
entender el interior
de una unidad del
UNIDAD DE
sistema PC. DISCO DURO
ADAPTADORES
DE E/S

:---7 \ :

oABLES oe señRl UNIDAD DE CD.ROM

TARJETA DE SISTEMA

FUENTE DE PODER
El hardware de las computadoras al descubierto 37
I

¿Ha visto el interior de una PC? No perderá la garantía de su máquina si lo

9 hace. El manual de su PC debe explicar el modo de abrir la cubierta del sis-


tema. Antes que nada, desconecte la corriente eléctrica y haga tierra correc-
tamente antes de mirar dentro. Las instrucciones del manual lo deben guiar.
Mucha gente se sorprende de lo poco que hay en realidad dentro de estas
máquinas que cuestan hasta 4 000 dólares. A pesar de la constante reduc-
ción en Ios precios de las PCs, es más costosa la investigación necesaria para
diseñarlas que sus propios componentes.

La velocidad es importante
La velocidad de la CPU se mide enmegahertz, abreviado MHz.I-a velocidad determina la
canüdad de ciclos de instrucciones que puede efectuar la CPU en un segundo.li"So siempre
significa millón, por lo que una CPU de 400 MHz puede procesar 400 millones de instruc-
ciones por segundo. La medida en megahertz da a la industria una vara de medición bastante
consistente con la cual medir y comparar las velocidades de las CPUs. ¡La primera PC de
IBM rabajaba a la impresionante velocidad de 1.7 MHz! La industria pensó que había alcan-
zado el nirvana cuando salió al mercado la CPU 8088. No supo predecir (ni siquiera IBM) el
impacto que tendrÍa en el futuro esa primera PC tan lenta.

Estas instrucciones medidas en megahertz son diferentes de las instrucciones que usted codi-
fica ei sus programas. Se considera que sus programas tienen instrucciones de un nivel supe-
rior que se deben descomponer en instrucciones más primitivas que acepta la CPU.

En la parte posterior de la unidad del sistema reside un conjunto de ranuras de expansión que
aceptan tarjetas de ci¡cuitos electrónicos. Estás ranuras le perrniten expandir la capacidad de
su computadora, de modo que posteriormente pueda añadir almacenamiento y üspositivos
aücionales. A estas ranuras de expansión se les pueden añadir tarjetas de expansión para
módems,los cuales permiten a su computadora comunicarse con otras a través de las líneas
telefónicas. (Los módems también pueden estar ubicados fuera de la computadora, como dis-
posiüvos independientes conectados a alguno de los puertos de expansión de la PC.)

Los dispositivos denffo y fuera de la unidad del sistema son llamados dispositivos periféricos.
Un dispositivo puede ser un üspositivo de enftada, de salida o ambos (E/S). Para saber cuál
es cuáI, imagine que usted es el programa que se ejecuta dentro de la memoria, dirigiendo a la
CPU. Si está recibiendo datos, digamos del teclado, el dispositivo es de entrada. Si está
enviando información fuera de la computador4 supongamos a la impresora, estií utilizando el
dispositivo de salida.

La memoria de la computadora generalmente reside también dentro de la unidad del sis-


tema. La memoria se almacena en pequeños chips de circuito integrado (generalmente más
Hora 2
138

pequeños que la CPU) denEo de la computadora. La memoria principal se conoce como MM


(Memoria de Acceso Aleatorio). Durante la ejecución de los programas, la computadora los
almacena en la RAM. La RAM es volátil; es decir, cuando apaga la computadora, su con-
tenido se borra automáticamente.

Si las mediciones como 640 KB y 32 MB lo confunden, no se alarme; hay una

9 explicación senc¡lla. En !a terminología de las computadoras, KB significa


1024 bytes, aunque la mayoría de la gente redondea los números a miles
cuando hablan de memor¡a. (Un byte es un carácter en la computadora.) Por
lo tanto, 640KB significa aproximadamente 640 000 bytes de almacenam¡en-
to. MB después de un número s¡gnifica megabyte. Mega es la palabra en el
argot de la computación que significa millón.32 MB significa aproximada-
mente 32 millones de bytes de almacenamiento. Un gigabyte son mil mi-
llones de bytes de almacenamiento, aproximadamente.

Los discos, CD-ROM y DVD son el almacenamiento permanente de sus programas y datos.
Estas tecnologías son no volátiles; es decir, retienen su memoria una vez cortado el sumi-
nistro de corriente, pues almacenan los datos magnéticamente. Si la unidad tiene capacidad de
escritura, como es el caso de los'discos y de algunos CDs, puede almacenar en ella sus datos
y sus progr͡mas.

El sistema operativo
El hardiiiare no tiene ninguna utilidad sin un sistema operativo. El sistema operativo es el
intermediario entre el hardware y los programas y los datos. Cuando un programa emite un
comando para escribir en o leer de un dispositivo, el sistema operativo es el que se encarga de
llevar a cabo el trabajo. La figura 2.4 muestra la representación lógica del sistema operativo y
del resto del hardware y software de la computadora.

Flcunn 2.4
El sistema operativo
ayuda al software a
comunicarse con el
Procesador de texto Programación

hardware.

Hoja de cálculo
ll

EI hardware de las computadoras al descubierto 39

Observe que la figura 2.4 ircluye, en el círculo exferior Lenguajes de programación. iUn
lenguaje de programación es simplemente un programa con el que se escriben otros pro-
gramas!

El sistema operaüvo forma una tntertaz común para los progr¿rmas. En lugar de que tenga que
incluir los detalles específicos para escribir en el disco, mover la cabeza de lectura/escritura
del disco, girar el plato del disco y demás, el sistema operativo se asegura de hacer estas
tediosas tareas por usted. Windows actualmente es el sistema operativo más popular para las
PCs y la mayor parte de las tecnologías cliente/servidor permiten que los mainframes se
comuniquen con PCs basadas en Windows. Windows es ttna Interfaz Gnifica de Usuario
(GLII) con la que usted interactúa mediante el teclado y el ratón.

No todas las computadoras pueden manejar un ambiente de ventgnas.


Algunos mainframes, por ejemplo, aún utilizan sistemas operativos basados
en texto. Otras, como la Macintosh, emplean una interfaz gráfica (GU!) dis-
tinta de Windows para PC. Versiones anteriores de Windows que aún se
emplean hoy día, como Windows 3.1 y otras versiones previas a Windows 95,
ni siquiera eran sistemas operativos. Estas versiones de Windows simple-
mente eran capas exteriores sobre e! sis\ema operativo nativo de Ias compu-
tadoras, pdra que el usuario pudiese interactuar con Ia computadora
aprovechando las ventajas que los modos de texto no ofrecían.

No sólo el sistema operativo forma una trltertaz común para los programas, sino también una
tntertaz común para los usuarios. No importa qué programa de Windows esté usando, siempre
abrirá un archivo o solicitará ayuda de la misma forma mediante las mismas ventanas (lla-
madas cuadros de dió'logo). Los usuarios dependen de interfaces uniformes, pues pueden
aprender cómo acceder a un menú en un programa de Windows, y así entender la forma de
acceder al mismo menú en todos los demás programas de Windows.

El sistema operativo contiene rutinas a las que, como programador, puede tener acceso y usar
en sus propios programas. Por ejemplo, si quiere leer una lista de archivos localizados en
cierta carpeta de la computadora, puede acceder a una rutina del sistema operativo que le
devuelve la lista de archivos. Algunos lenguajes de programación se basan más en rutinas del
sistema operativo que otros, así que la cantidad de apoyo que puede obtener del sistema ope-
rativo depende del lenguaje que utilice.

El sistema operativo en sí mismo no es offa cosa que un enoüne programa que se ejecuta en
su computadora. Siempre se está ejecutando cuando su computadora estií corriendo, a fin de
que offos programas puedan acceder al hardware de la computadora. Sin la interfaz, los pro-
gramas tendían problemas para conffolar dispositivos tales como las unidades de disco. En
algunas ci¡cunstancias especiales, trLprograrna de utikrta, es decir, uno que supervisa, anali-
zay lleva a cabo pruebas y mantenimiento del sistema, puede acceder a dispositivos de disco
Hora 2
140

sin necesidad de que esté cargado el sistema operativo. Sin embargo, la escritura de tales pro-
gramas que no requieren del apoyo de un sistema operativo conlleva un esfuerzo mucho
mayor que la codificación de los programas tipo usuario final típicos.

Los programas que escr¡ba para acceder a un dispositivo periférico, digamos

9 !a pantalla, no neces¡tan ocuparse de las características físicas de ésta. No


hace falta que el programa tenga que saber exactamente de qué tamaño es
la pantalla del usuario para poder escr¡bir en ella. Sólo neces¡ta mediante las
instrucciones que usted escr¡be, env¡ar la salida a la pantalla dirigida a través
del sistema operativo. El sistema operativo de cada computadora se encarga
de dirigir Ios comandos exactos necesarios a la pantalla de la computadora.
El sistema operativo forma una interfaz de programac¡ón común para todo
el hardware de la computadora.

E¡ hardware y los programas


Durante la ejecución de un programa que alguien (tal vez usted mismo) escribió para su
computadora, suceden los siguientes eventos:

1. Usted emite un comando que inicia el programa. Con frecuencia, el comando es poco
más que un icono o una opción de menú en Windows.
2. El sistema operativo interpreta el comando y busca el programa en el disco o en algún
otro dispositivo de almacenamiento (tal vez un CD-ROM o una red).
3. St lo encuentra, el sistema operativo carga el programa del disco a la RAM. No es
indispensable que el programa completo resida en memoria para que comience a traba-
jar. La mayor parte de los sistemas operativos únicamente cargan las partes del progra-
ma que van necesitando. Si no se encuentra el programa solicitado, el sistema operativo
emite un mensaje de error.
4. Comienza la ejecución del progratna. En otras palabras, la computadora inicia el
seguimiento de las instrucciones que se encuenüan en el programa.
5. Durante la ejecución del programa también se pueden estar ejecutando otros progra-
mas. El usuario e inclusive el sistema operativo mismo, pueden iniciar y detener pro-
gramas mientras se ejecutan otros.
6. Durante la ejecución del programa, éste puede solicitar al sistema operativo que acceda
a dispositivos periféricos y que lea y escriba en dichos dispositivos.

7. Una vez que termina la ejecución del programa, el sistema operativo recupera el control
de los recursos reservados por el programa, generalmente memoria RAM que se libera,
y el programa termina su ejecución. Entonces, la computadora regresa a las instruc-
ciones del sistema operativo o a las de otro programa en ejecución, a fin de determinar
qué sigue.
EI hardware de las computadoras al descubierto 41
I

Tenga presente que rinicamente el sistema operativo, en la mayoría de los casos, tiene el con-
trol de la computadora durante todo el tiempo que está encendida. A medida que el usuario
opera la máquina, inician y terminan varios programas, a veces ejecutándose de manera
simultánea. A menos que la computadora contenga varias CPUs, únicamente puede llevar a
cabo una instrucción alavez, pero su operación es tan rápida que parece que los programás
son multitareas (que se ejecutan simultiíneamenúe).

En la lección de la siguiente hora, "¿Qué es un programa?", aprenderá miís sobre los aconte-
cimientos que suceden durante la ejecución de un programa.

¿Es mulf tarde para comenzar?


A veces, los programadores principiantes temen estar comenzando demasiado tarde. La lec-
ción de la hora 24,"El futuro de la programación", abarca algunos temas a los que deben
enfrentarse los novatos en programación cuando deciden programar. No obstante, usted no ha
dejado transcurrir demasiado tiempo para aprender a programar. De hecho, los programadores
hoy día pueden producir programas más poderosos y con mayor rapidez que en el pasado
cuando iniciaron las computadoras, gracias ala avat¡zada tecnología de programación
disponible en la actualidad.

Es cierto que, con herramientas más fáciles, los programadores novatos no siempre entienden
los principios involucrados, mienffas que los que ya han estado trabajando durante algún
tiempo, comprenden conceptos más fundamentales. No obstante, usted no tiene que entender
cómo funciona un motor para poder manejar un automóvil, ni hace falta que comprenda exac-
tamente cómo fluyen los bits de datos de y hacia un microprocesador para aprender a progra-
mar. Por lo tanto, póngase su gorra de programador, ponga su teclado en marcha rápida y
prepare a sus usuarios para los poderosos programas que escribirá.
142
Hora 2

Resumen
Ahora que ya sabe dónde ha estado la industria de la computación, tendrá una buena idea de
hacia dónde se dirige. Las computadoras de mañana seriín más rápidas, económicas y
pequeñas que las actuales, y se necesitará más gente para programarlas. ¿No es bueno que
haya decidido aprender a progr¿rmar cuando lo hizo? Siendo una de las industrias más nuevas,
la computación continúa evolucionando con rapidez y cambiando el mundo. Windows está
logrando que las PCs sean más sencillas de usar y, a medida que esto suceda, más gente
requerirá su uso, se necesitarán más programas y harán falta más programadores.

La siguiente hora trata más a fondo la estructura de un programa. Tras la lección de la hora 3,
entenderá mejor lo que pueden hacer y lo que no los programas.

Preguntas y respuestas
P En lugar de emplear elementos de programa comunes, como la barra de menú
típica de Windows, ¿debeúa programar interfaces nuevas para los pnogramas que
escriba?
R Vea los programas más populares que se venden hoy üa. Además de los juegos, que
son una categoía aparte, la mayoría de los programas tienen la misma interfaz. El
procesador de texto de mayor venta, Word de Microsoft, contiene un menú y cuadros
de diálogo casi idénticos a los del programa de hoja de cálculo de mayor venta, Excel de
Microsoft. Esta característica comrln no sucede porque ambos sean productos hechos
por Microsoft. Microsoft se da cuenta que los usuarios quieren consistencia, por lo que
[onen el mismo tipo de ifiertaz de usuario, con menús y rutinas de ayuda en línea simi-
lares, en todos los progrrrmas. Por lo tanto, los usuarios no tienen que aprender otro
modo de controlar el programa cadavez que utilizan un programa diferente.
Debe tratar de lograr esta misma uniformidad en sus programas. No estará plagiando
otros programas simplemente porque su estructura de menús se asemeje a la de
Microsoft. Estará haciéndole un favor a sus usuarios. De hecho, Microsoft, el autor de
Windows, publica gulas para escritores de programas en Windows (disponibles en su
sitio Web, www. micnosof t . com, junto con decenas de materiales útiles para los pro-
gramadores) que indican específicamente cómo preparar opciones de menú, organizar
programas para que sean consistentes, y cómo diseñar pantallas para que tengan la
misma apariencia y funcionalidad que otros programas de Windows. Usted quiere que
sus usuarios se sientan cómodos con su programa y esto sucederá siempre y cuando
se apegue a las normas de la industria.

Taller
Las preguntas del cuestionario se presentan para una mayor comprensión. Vea las respuestas
en el apéndice A.
EI hardware de las computadoras al descubierto 43

Cuestionario
1. ¿Por qué siguen siendo necesarias las grandes computadoras?
2. ¿Cómo fue que la introducción de la tecnología de estado sólido iniciíla proliferación
de las computadoras?

3. ¿Qué es una CPU?

4. Verdadero o falso: Las computadoras han llegado a un punto en el que la velocidad ya


no es un problema.
5. ¿Por qué es importante enfriar las supercomputadoras?
6. ¿De qué trata la computación cliente/servidor?
7. ¿Cómo se enlaza el sistema operativo al hardware y al software?
8. Verdadero o falso: Windows es otro programa más.
9. ¿Por qué los programadores deben emplear computadoras bastante avanzadas al
escribir programas para otros?
10. iQué significa ejecución de programa?
I

HoRA

¿Qué es un program a?
Las palabras programa y programador se mencionan a 1o largo de estas 24lec-
ciones y, sin duda, las habrá escuchado antes de adquirir este libro. Antes de
entrar en los asuntos específicos de los lenguajes de programación, en la lección
de esta hora intentaremos explicar 1o que es en realidad un programa. El enten-
der el material de este capítulo es un requisito paru pasar a los próximos lengua-
jes de programación de esta obra.

Durante la lectura de esta lección, recuerde que la programación produce satis-


facciones, no solo financieras, sino también mentales y emocionales. Los pro-
gramadores con frecuencia experimentan la misma sensación de urgencia
creativa que los artistas y artesanos en la elaboración de sus obras. Sin embargo,
la escritura de un programa puede ser tediosa. Con frecuencia es una tarea deta-
llada y la frustración intensa es parte del paquete. La rápida retroalimentación
que da la computadora a sus effores le proporciona un sentido de logro que 1o
mantiene programando hasta que todo está bien.

Los temas relevantes de esta hora son:


. Cómo los programas son instrucciones para la computadora
. Por qué deben detallarse los programas
Hora 3
146

. Por qué los programas deben residi¡ en memoria, en lugar de perrnanecer en la unidad
de disco, durante su ejecución
. Si la programación se considera arte o ciencia
. Cuáles gq¡ ¡lgunos de los lenguajes de programación más comunes
. Por qué las computadoras aún no pueden entender el lenguaje humano
. Qué tipos de errores pueden ocurrir en los programas.

Por qué son necesarios los programas


Cuando las personas y las compañías necesitan un programa, tienen tres formas de obtenerlo:

. Comprar uno ya escrito


. Comprar uno y modificarlo para que la versión personalizada haga exactamente lo que
se necesita
. Escribir uno propio

Cada opción tiene sus ventajas y desventajas (vea la tabla 3.1). Las primeras dos opciones son
mucho más rápidas que la tercera, y mucho menos costosas.

TaeLA 3.1 Ver'¡rnres ,rrur*rro, DE LA ADeursrcróN DE pRoGRAMAS

Opción
" Ventajas Desventajas
Adquirirlo Se puede obtener el programa El programa podría no
rápidamente y a bajo costo. ajustarse a sus necesidades.

Comprarlo y Se puede obtener con bastante rapidez No siempre es posible


personalizarlo un programa que haga lo necesario. modificar el programa.
Además, el programa es relativamente
económico, dependiendo de los cambios
neces¿uiros.

Escribirlo El programa (tras un diseño y Esta opción es muy cara


pruebas adecuadas) hace exactamente y lleva mucho más tiempo que las
lo que usted desea. demás.

La mayoía de los usuarios de microcomputadoras seleccionan la primera opción, pues los


programas son bastante económicos, dado su poder. Debido a que compañías como Intuit,
Microsoft, Borland y Symantec venden muchas copias de la misma versión de sus programas,
pueden ofrecerlos a precios bastante bajos. Los usuarios individuales de microcomputadoras
simplemente no tienen los recursos con los que cuentan las compañías más grandes para es-
cribir los programas que necesitan.
éQué es un programa? 47 I

Por otra parte, las compañías no siempre seleccionan la primera opción, aunque se podría
cuestionar larazón. Las compañías inviefen muchos años en el desarrollo de productos y ser-
vicios que los distingan de las demás. Cuando una compañía adquiere un equipo de cómputo
para su control de registros, es ütal que sus programas reflejen exactamente lo que hace. La
compañla no deberá de cambiar la manera de llevar a cabo sus negocios simplemente para
poder utilizar los programas que se venden en las tiendas y por correo. Los programas adqui-
ridos tienen que ser generales, para que se puedan vender a más de un cliente.

La segunda opción, compftIr un progftima y personalizarlo, podría parecer miís inteligente,


pero es la que se escoge con menor frecuencia. Si las compañías pudiesen comprar un progra-
ma ya escrito, tendrlan que contar con un marco de trabajo para adaptarlo nípidamente a sus
necesidades específicas. El problema es que pocas veces se vende el software; lo que se ven-
den son licencias. Cuando adquiere un progftIma, no se vuelve propietario de é1, sino del de-
recho a usarlo. Legalmente, no puede modifi,carlo, venderlo ni copiarlo (excepki'con fines
de respaldo).

No únicamente hay cuestiones legales involucradas, en ocasiones no es posible modificar el


software físicamente. Como aprenderá más adelante en este capítulo, una vez escrito un pro-
grama, se traduce a un formato comprimido que ya no pueden modificar los programadores.

Por lo tanto, aunque es costoso y tardado escribir programas desde cero, la mayoía de las em-
presas prefieren hacerlo, teniendo a la mano grandes departamentos de programación que se en-
cargan de la carga de programación. Una compañla puede tener ocupados a varios miembros de
su equipo de procesamiento de datos durante un año escribiendo un programa muy parecido,
aunque no idéntico, a alguno que podría compmr. A pesar del costo y el esfuerzo invertidos por
la compañía, vale la pena no tener que adecuarse a un programa comprado. El programa, una
vez escrito, se confomra a la manera como la compañía lleva a cabo sus negocios.

Algunas compañías han descubierto que pueden vender los programas que

9 desarrollan a otras empresas con negocios similares, recuperando así una


parte de los costos de desarrollo. Cuando escriba programas para su compa-
ñía o para otras personas, considere la posibilidad de una reventa posterior
de éstos.

Las empresas con frecuencia miden el tiempo que tarda la escritura de sus programas en
años-persona. Si se necesitan dos años-persona para escribi¡ un solo progralna, se estima que
dos personas podrían escribirlo en un año, o una en dos años. Un proyecto de 20 años-perso-
na le llevarla un año a 20 personas o 20 años a una persona, o dos años a diez personas, etc.
Esta medición sólo es una estimación, pero da a la gerencia una idea de cómo asignar la gente
y el tiempo a los proyectos de programación.
Hora 3
148

Si llegara a ser un programador independiente, la medición en años-persona será una gran herra-
mienta para deúerminar los precios de sus servicios. Podría dar a un cliente un estimado del pre-
cio por años-persona (o, para proyectos miás pequeños,Alvez estinüuía el proyecto en
meses-persona o sernanas-persona). Si confiata programadores para ayudarle a terminar el pro-
yecto, podría terminar antes, pero aún así cobrar lo justo por el rabajo de cada persona, gracias
a que cotizó el trabajo de programación en años-persotra no en tiempo calendario.

Programas, programas, en todas partes


¿Por qué no se han escrito ya todos los progr¿unas que se necesitan? Entre hoy en una tienda
de software y verá cientos de programas a la venta. Hay programas para todo: procesamiento
de texto, contabilidad, dibujo, juegos, diseño de casas, conexión en línea y planificación de
itinerarios de viaje. Parece como si todos los programas que pudiese necesitar estiín a la ma-
no. Debido a que las computadoras han estado en el mercado durante 50 años, se podría pen-
sar que toda la programación necesaria para todos se ha escrito desde hace tiempo.

Si todos los programas ya se hubiesen escrito, no vería las largas listas de anuncios de "se
busca programador" en los periódicos. El hecho es que el mundo cambia día con día y las
empresas y la gente deben cambiar con é1. Los programas escritos hace diez años sencilla-
mente ya no están a la altura de las prácticas actuales. También se escribieron en computado-
ras mucho más lentas y limitadas que las actuales. A medida que avanza el hardware también
debe hacerlo el software.

Uno de los temas más actuales que enfrentan los programadores antes del
próximo cambio de siglo es el del notable problema del año 2000, que pro-
bablemente afectará a las computadoras y, por cons¡guiente, a las empresas
que cuentan con éstas (prácticamente todas). La hora 24, "E| futuro de la
programación", explica las ramificaciones del problema del año 2 000 y la
forma en que afectará a los programadores, antes y después de este año.

Hoy más que nunca existe rma enor¡ne,necesidad de programadores. A medida que las
computadoras son más fáciles de usar, algunas personas piensan que los programadores se
volverán reliquias del pasado. Lo que no saben es que hacen falta programadores de primer
nivel'para producir.esos programas fráciles de usar. Es más, se necesitan programadores para
modificar y mejorar las vastas bibliotecas de programas que se usan actualmente.
éQué es un programa?

Los programas como instrucciones


Si ha seguido un mapa en un territorio desconocido, sabrá lo que es que su computadora siga
las instrucciones de un programa. Contando sólo con el mapa, siente que se mueve a ciegas,
dando vuelta a la izquierda y a la derecha, hasta que llega a su destino o se da cuenta que dio
una welta equivocada en alguna parte. Su computadora, como se explica en los capítulos an-
teriores, es una máquina ciega y muda que espera que usted le dé indicaciones. Cuando esto
sucede, interpreta las instrucciones que le dio sin pensar dos yeces sus deseos. Si le dice a su
PC que haga algo incorrecto, trataráde hacerlo. Recuerde esta definición de programa (de la
hora 1, "Las computadoras como herramientas").

Un programa es una üsta de instrucciones detalladas que sigue la computadora.

El término detalladas es vital para hacer que una máquina siga sus instrucciones. De hecho,
la tmea de programación no es difícil; lo difícil es üvidir la tarea de la computadora en pasos
sencillos y detallados que no presuponen nada.

Pa¡a tener una idea de la actividad mental que interviene en la programación, reflexione en
cómo enseñaría a una persona del pasado la manera de encender un automóvil. Suponga que
Heath, un vaquero del viejo oeste, aparece ante su puerta, sorprendido por lo que ve a su alre-
dedor. Tras reponerse de la conmoción, Heath quiere adaptarse a este nuevo mundo. Antes de
aprender a manejar un automóvil, debe aprender a encenderlo. Cuando haya aprendido a ha-
cerlo, le enseñará a manejar. A diferencia de un adolescente que aprende a manejar, Heath no
ha crecido viendo a los adultos encender automóviles, así que en realidad necesita dominar
este proceso antes de proseguir. Como usted es un programador muy ocupado, le deja la si-
guiente lista de instrucciones junto con la llave del automóvil.

1. Usa esta llave.


2. Ananca el automóvil.

¿Qué tan lejos llegará Heath? No mucho. Le dio las instn¡cciones correctas para arrancar el
automóvil, pero supuso que él sabía demasiado. Debe recordar que Heath no tiene idea de
cómo funcionan estos dispositivos llamados automóviles y que cuenta con usted para que
le dé instrucciones que pueda entender. En lugar de suponer tanto, estas serían mejores
instrucciones:

1. Adjunta está la llave del automóvil. Tienes que encender el automóvil.


2. Con la llave en la mano, ve a la puerta del automóvil que está más cerca de la entrada
frente a nuestra casa.
3. Bajo la manija negra del auto verás una parte metálica del tamaño de una moneda en la
que puedes insertar la llave (con la parte rugosa hacia abajo).
Hora 3
ls0

4. Tras introduci¡ hasta el fondo la llave en la puerta, gíralahacia la derecha hasta que es-
cuches un clic.
5. Regresa la llave hacia la izquierda hasta que apunte en la misma dirección que la intro-
dujiste y retírala.
6. Abre la puerta y entra en el automóvil. Asegrírate de sentarte frente a la rueda (llamada
volante), ubicada del lado izquierdo del asiento delantero.
7. Ciena la puerta.
8. Del lado derecho de la columna que sostiene el volante verás una ranura en la que pue-
des inroducir la llave.

¿Capta la idea? Esta lista de ocho puntos está muy detallada y Heath aún no ha arrancado
el automóvil. Tendrá que describir el pedal del acelerador que él debe apretar mientras gira
la llave (en la dirección correcta, claro está), y no querrá suponer que Heath apagaró el
automóvil cuando haya terminado de practicar, así que tendrá que darle también esas ins-
trucciones. (Talvez debería sugerir a sus vecinos que se mantengan apartados de las calles
por un rato.)

Si ha comenzado a pensar que esta analogía del encendido del automóvil está yendo demasia-
do lejos, considere lo que debe hacer para deci¡le a una pieza de equipo electrónico no pen-
sante (la computadora) que llevé a cabo la nómina de su compañía. Un programa de nómina
no puede consisti¡ únicamente de los siguientes pasos:

1. Obtener los datos de la nómina.


2. Calcular la nómina y los impuestos.
3. Imprimir los cheques.

Pa¡a la computadora, estas instrucciones carecen de miles de detalles que usted puede dar por
hecho. Los detalles de las instrucciones de los programas es lo que provoca el tedio y la frus-
Eación ocasional de la programación. La programación de computadoras no es difícil, pero la
división de los problemas reales en muchos pasos detallados que pueda entender una compu-
tadora sl lo es.

Un programa de nómina típico puede contener unas 20 000 líneas de ins-

9 trucciones o más; sin embargo, no deje que esto lo desaliente. La mayor par-
te de los grandes proyectos de programac¡ón de Ias empresas es real¡zada
por equipos de programadores; tendrá bastante ayuda si escribe tales pro-
gramas para ganarse !a vida. Además, las nuevas técnicas y ambientes de
programación de los lenguajes de cómputo actuales hacen que la programa-
ción, incluso para e! programador que trabaja solo, sea mucho más sencilla
que nunca.

/
éQué es un programa? s1
I

Hay muchas herramientas de diseño que le ayudarán a tomar grandes problemas y dividirlos
en componentes detallados que se traduzcan en elementos de programación. La hora 4, "El
diseño del programa", explica muchos de los métodos que emplean los programadores para
llegar a los detalles necesarios de un programa. Por lo tanto, en lugar de abandonar la nave a
la mitad de estas descripciones aparentemente horrendas sobre los detalles de los programas,
mantenga la cordura, pues viene ayuda en camino. Además, considere esto: si la progra-
mación realmente fuese dificil, no habría manera de que se hubiesen logrado tantos avances
de la computación en los últimos 50 años.

Los programas son ¡nstrucc¡ones guardadas


Lo bueno de los programas que escribe es que puede guardarlos en disco. Como sucede con
el texto escrito con un procesador de texto, usted almacena los programas que escribe en ar-
chivos en disco. Un progr¿rma es para una computadora lo que una receta para un cocinero.
Cuando un cocinero quiere elaborar cierto platillo, encuentra la receta correcta y sigue las ins-
trucciones. Cuando algüen quiere ejecutar un programa, da instrucciones a la computadora
para que cargue el programa del disco a la memoria y luego ejecute las instrucciones conteni-
das en é1. En la lección de la hora anterior, leyó una lista detallada de etapas por las que pasa
una computadora para ejecutar un programa.

La memoria interna de la computadora es vital para la ejecución de los programas. La CPU


de su computadora no puede ejecutar las instrucciones de un programa directamente desde el
üsco. Así como no puede saber lo que hay en un libro que está sobre la mesa hasta que lee su
contenido y lo carga en su memoria (empleando su propia CPU, su mente), la CPU de su
computadora no puede procesar las instrucciones de un proSrama hasta que lo cargue del dis-
co a la memoria. La figura 3.1 muestra el proceso de carga de un programa desde el üsco de
la computadora (o desde un almacenamiento tipo disco, como un CD-ROM) a la memoria.
Como se muesha en la figura 3.1, la CPU tiene acceso directo a la memoria, pero no tiene ac-
ceso a la unidad de üsco. El disco es el almacenamiento permanente y la memoria es el al-
macenamiento temporal, donde residen los programas mientras la CPU los ejecuta.

Tenga presente la diferencia entre el programa y su salida. El programa es un conjunto de ins-


trucciones y la sali.da, el resultado de dichas instrucciones. La salida de una receta es el plati-
llo terminado y la salida de un programa es la salida impresa, una vez que se ejecutaron las
instrucciones.
Hora 3
ls2

Frcune 3.f
Un programa debe CPU
estar cargado en
memoria antes de que
la CPU pueda ejecutar
sus instrucciones.

RAM

Disco

o
a Programas
a

Talvez un ejemplo específico ayudará a comprender mejor lo que signifi.ca prlra un progra-
mador que un usuario ejecute un progrÍrma. Si utiüza un procesador de texto, probablemente
seguirá estos pasos (o algunos similares):

1. Carga el programa de procesamiento de texto del disco a la memoria principal de la


cotnputadora. Cuando selecciona del menú el nombre del programa de procesamiento
de texto, o directamente el icono de Windows correspondiente, da instrucciones a la
computadora de que busque el programa gn l¿ unidad de disco y lo cargue en la memo-
ria principal.
2. Lo que ve en la pantalla es la salida del programa. Puede generar más salida escribien-
do texto en la pantalla. Todo lo que se ve en la pantalla durante la ejecución es la salida
del programa.
3. Tras escribir el texto, puede interactuar con ofros dispositivos. Es probable que utilice
un comando que imprima el documento [posiblemente mediante la opción de menrl Ar-
chivo I Imprimir (File I Print) de Windowsl en la impresora y guarde el documento en
un archivo de datos en el üsco.
4. Cuando sale del procesador de texto, el sistema operativo recupera el control. El pro-
grama de procesamiento de texto ya no está en memoria, pero sigue guardado en algu-
na parle del disco.

Como puede ver, el resultado de la ejecución de un programa constituye la salida. Las ins-
trucciones mismas son las que producen esos resultados. La figura 3.2 ofrece un panorama
éQué es un programa? 53i
{

general del proceso programa/salida. Los programas modernos producen su salida de muchas
maneras diferentes. Ejecutan música, hablan con otras computadoras a través de las líneas te-
lefónicas y confrolan dispositivos extemos. La salida enviada a la pantalla y a la impresora si-
gue siendo la mayor parte de la salida de los programas actuales.

Flcunn 3.2 Programa

El progranla viene del


disco, se ejecuta y
luego envía sus
resultados a cualquiera
de los diversos
dispositivos de salida,
como el disco, la
pantalla o la impresora
(o mds de uno de ellos
dentro del mismo
programa).

Cuando un programa está en memoria, no está solo. El.sistema operativo siempre reside en
memoria. Si no fuese así, no podría cargar del disco los programas ni ejecutarlos, pues el pro-
pio sistema operativo es el que, en realidad, se encrirga de cargar los programas en la memo-
ria cuando usted da los comandos pertinentes. Una memoria limitada suele ser un problema
para los programas más grandes. Recuerde que un progftrma procesa datos y que éstos deben
estar en memoria, al igual que el programa, antes de que éste los pueda procesar.

La figura 3.3 muestra cómo se ve la memoria de una instalación de cómputo cuando se está
ejecutando un programa. El sistema operativo ocupa un buen pedazo, el programa debe estar
ahí también y, por último, debe haber espacio para los datos.

FrcUm 3.3 Memoria


Memor¡a

Un diseño de memoria
típica muestra que el
sistema operativo Sistema
comparte la memoria Operativo

con los proSramas en


ejecución.
Hora 3
ls4

Entre más memoria tenga su PC, más nápido se ejecutarán sus programas. La memoria extra
significa que el sistema operativo tendrá que intercambiar información con el disco con me-
nor frecuencia durante la ejecución del programa. Algunos programas incluso están totalmen-
te contenidos en memoria durante la ejecución del programa. Como programador, deberá
ejecutar sus programas con mucha memoria, hasta 32 MB o 64 MB, de modo que los pueda
probar adecuadamente mienfras mantiene cargado su ambiente de programación.

¿Arte o ciencia?
Un debate que se ve con frecuencia en la literatura sobre computadoras es si la pro-
gramación es un arte o una ciencia. A lo largo de los años ha habido avances en la
programación que, si los emplea, mejorarán la exactitud, facilidad de lectura y capacidad de
manteninxiento (el proceso de modificación posterior de los programas para llevar a cabo ta-
reas distintas o suplementarias) de sus progftrmas. La mayoría de estos avances no son otra
co§a que sugerencias; es decir, los programadores no tienen que valerse de ellos para escribir
programas funcionales.

Dos de los avances más importantes de la programación tienen una base más filosófica que de
ingenieía. Solnla programación estructurada y la programación orientada a objetos. Este li-
bro analiza a fondo estos dos avances en la programación en los siguientes capítulos. Ambos
sugieren formas en las que un programador puede escribir un programa para hacerlo mejor.
Sin embargo, como ya se mencionó, sólo se trata de enfoques sugeridos para la programa-
ción; los programadores pueden ignorarlos (y muchos lo hacen).

Hay muchas maneras de escribir hasta los programas más pequeños y sencillos. Así como los
autores escriben de modos diferentes y los músicos ejecutan con su toque personal, cada pro-
gramadbr tiene su propio estilo. Por lo tanto, se podría pensar que la programación es más un
arte que una ciencia.

No obstante, a medida que se logren más avances como la programación estructurada y la


programación orientada a objetos, se verá un cambio en la forma de pensar. Con la prolifera-
ción masiva de las computadoras en el mundo actual, está sucediendo un proceso educativo
muy amplio para capacitar a los programadores del mañana. Debido a que la industria de la
programación es joven (al igual que toda la industria de la computación), quedan muchos
avances por lograr.

Algunos de los principales seguidores de la idea de alejarse del enfoque artístico y dirigirse
hacia un enfoque más científico, valiéndose de la programación estructurada y orientada a ob-
jetos, son las compañlías que pagan a los programadores. Las compañías necesitan reaccionar
rápidamente a las condiciones cambiantes de los negocios, por lo que requieren de programas
escritos con la mayor rupidez y exactitud posible. Con el descubrimiento de los avances en la
programación de las computadoras, una mayor cantidad de compañías adoptará políticas que
requieran que sus programadores empleen métodos más cienlficos y comprobados para escri-
bir mejores programas.
éQué es un programa? ss I

Conocimiento del lenguaje


Las instrucciones que da en sus programas deben estar en un lenguaje que entienda la compu-
tadora. En su nivel más simple, las computadoras no son otra cosa que miles de intemrptores
que se conmutan enffe encendido y apagado a la velocidad de un rayo. Un intemrptor puede
tener únicamente uno de dos estados: encendido o apagado. Dado que cualquiera de estos dos
estados eléctricos se puede controlar fácilmente meüante intemrptores elecffónicos, muchos
miles de ellos controlan lo que hace su computadora de un microsegundo al siguiente.

Si dependiera de su computadora, tendría que darle instrucciones mediante intemrptores que


representan los estados de encendido y apagado de electricidad. De hecho, esta es precisa-
mente la manera como los programadores programaban las primeras computadoras. Un table-
ro de intemrptores, como el de la figura 3.4, servía para insertar los programas y los datos. La
siguiente vez que se encuentre maldiciendo los errores que aparecen en sus programas, plense
en lo que debió ser la programación hace 45 años.

Frcuna 3.4
enc. enc.

vv a v v a v@r
enc. enc enc. enc enc enc.
Los programadores
usaban un tablero de
interruptores para
programar las
primeras
computadoras.
apag. apag. apag. apag.

^
apag apag. apag. apag.

Los estados eléctricos de encendido y apagado se representan como unos y ceros en el nivel
más simple de la computadora. Puede controlar lo que hace su computadora si conoce el pa-
trón correcto de los unos y ceros para darle comandos. Puede programar una computadora
con el empleo de sólo unos y ceros si tiene las herramientas correctas. Claro está que la pro-
gramación con unos y ceros no es mucho mejor que conmutar intemrptores en el tablero, por
lo que tiene que haber una mejor forma.

Las computadoras no aprenderán ningún lenguaje hablado en mucho tiempo,


a pesar de lo que pueda ver en las películas de ciencia ficción. Usted t¡ene que
aprender un lenguaje de programación si quiere que la computadora haga
lo que usted desea.

Las computadoras no pueden manejar ambigüedades


El español y el resto de los lenguajes hablados son demasiado ambiguos para las computado-
ras. El cerebro humano puede descifrar oraciones por intuición, algo imposible para una má-
quina no pensante. Se estrín haciendo algunas incursiones etla inteligencia artificial, quLe es
56 Hora 3

la ciencia de programar las computadoras de modo que puedan aprender por sí mismas. Se
pretende también programmlas de modo que entiendan un lenguaje hablado, como el español.
A pesar de los avances recientes, la inteligencia artificial está a muchos años de distancia (si
llega a ser posible que las computadoras entiendan comandos sencillos en español).
Considere la siguiente oración:

El muchacho nada como un delfin.

A su mente no le cuesta nada entender las partes de esta oración. Sabe que se trata de una
analogía y las distintas partes de la expresión tienen un significado. Elmuchacho es un sus-
tantivo que lleva a cabo una acción, nada, y lo hace corno un delfin. Si enseña a la compu-
tadora a aceptar las descripciones de esta oración, tabajaribien hasta que se encuentre con
algo parecido a lo siguiente:

El muchacho nada trae para ti.

Piense en esto por un momento. De nuevo, no tendrá ningún problema para entender esta ora-
ción, aún cuando es completamente diferente a la anterior. Sin embargo, la computadora a la
que se le enseñó a descifrar la primera oración va a tener que cruzar sus cables en señal de
frustración al toparse con la segunda, pues ninguna de las partes de la oración es igual. La pa-
labra nada es ahora una negacióh, no un verbo que indica una acción. La frase trae para ti ya
no es una descripción de una acción, sino el verbo (traer) y el objeto que recibe la acción
Qtara ti). Como puede ver en estas dos oraciones, la comprensión de oraciones sencillas que
la mayofa de la gente da por hecho representa un enorme problema para los programadores
que intentan "enseñar" a una computadora a entender un lenguaje como el español.

Por lo tanto, las computadoras y la gente son los polos opuestos del espectro. La gente quiere
hablar en su propio idioma, al igual que las computadoras, las cuales sólo entienden de unos y
ceros. Tiene que haber algún ténnino medio. Los lenguajes de programación fueron creados
para tratar de satisfacer tanto a las computadoras como a las personas que las programan. Los
lenguajes de programación emplean palabras parecidas a las que usa la gente, pero con una
sintaxis (estructura, orden, gramática y ortografía) muy específica que no deja lugar a las am-
bigüedades tan frecuentes en los lenguajes hablados. La computadora puede tomar un lengua-
je de programación y traducirlo a su lenguaje de máquina de unos y ceros; el programador
humano puede aprender, recordar y utilizar los lenguajes de programación de manera más efi-
caz que los unos y ceros, pues en apariencia son similares a los lenguajes hablados, aunque
más precisos y sencillos.

Las computadoras utilizan muchos lenguajes


Aprenderá mucho sobre varios lenguajes de programación durante este curso de 24 horas. Tal
vezhaya escuchado hablar de algunos de los lenguajes, y de otros no. A lo largo de los años,
desde la invención del primer lenguaje de programación, se han escrito cientos de ellos pero
prog ra ma ?

apena§ un puñado ha prevalecido sobre los demás. La siguiente es una lista de varios lengua-
jes de programación que han ganado más que alguna fama oscura con el paso de los años:

Lenguaje de máquina * Ensamblador *

Algol x PL/I *
PROLOG {<
LISP

COBOL * Forth *
RPG X
RPG II *
Pascal * Object Pascal *

SNOBOL ADA *
c* C++ *
Objective C FORTRAN *
SmallTálk * Eiffel
BASIC * Visual Basic *

APL *
Cada lenguaje de programación tiene sus propios dialectos. BASIC ha disfrutado de una enor-
me popularidad con las siguientes variedades:

BASICA

GW-BASIC (que significa Gee-Whiz BASIq

Quick BASIC

QBasic

Visual Basic

Antes de terminar este libro, escribi¡á programas en QBasic. Las horas 8 ala L2le enseñarán
QBasic (un lenguaje sencillo disponible en todas las PCs) y le indicarán cómo escribir pro-
gramas completos que harrín lo que usted quiera.

* Estos lenguajes lograron predominar gracias a su intenso uso o a su área específica de utilidad. Por
ejemplo, PROLOG pocas veces se ernplea fuera del campo de la inteligencia artificial, pero ha sido el
lenguaje prefertdo ahí.
La computadora es como una torre de Babel moderna, responsable indirectamente de más
lenguajes de programación de los que han sido necesarios. La mayoía de la gente considera-
da como "experta en computadoras" tal vez sólo sepa un puñado de lenguajes de programa-
ción (de dos a cinco) y es probable que únicamente coÍrozca muy bien uno o dos. Por lo tanto,
no deje que la gran cantidad de lenguajes disminuya su deseo de aprender a programÍu.

Hay muchas r¿Lzones por las que existen tantos lenguajes de programación. Cada persona tie-
ne sus propias preferencias, algunos lenguajes son mejores que otros, dependiendo de la tarea,
y algunas personas únicamente tienen acceso a uno o dos lenguajes.

E! programa que usted escribe se llama programa fuente (o código fuente).


A lo largo de este libro, cuando vea el término código fuente, se referirá a
su programa antes de compilarlo.

El traductor de lengua¡es
i,
Su computadora en realidad no puede entender BASIC, C, Pascal ni ningún oüo de los len-
guajes de programación. Usted podría confundirse, pues en la sección anterior se explicó que
los lenguajes de programación son importantes porque la computadora no puede entender es-
pañol o cualquier otro idioma hablado. Aún así, la computadora tampoco puede entender BA-
SIC, pero es fácil que un programa tradtzca BASIC a los unos y ceros que la computadora sí
entiende.

Hay dos tipos de traductores de lenguajes: los cornpiladores y los intérpretes. Ambos toman
un lenguaje de programación, como Pascal, y lo traducen a una forma legible para la compu-
tadora. Los dos tienen métodos diferentes, pero sus resultados finales son iguales; ambos to-
man programas y los convierten en unos y ceros (es decir, en lenguaje de mdquina), como se
muestra en la figura 3.5.

Frcune 3.5 Resultado

Tanto los intérpretes


como los compiladores
Compilador
traducen el código
Lenguaje
fuente al lenguaje de Código nat¡vo
fuente de la
méquina de nivel más o
máquina
de su
simple que puede programa (unos y ceros)
entender la
computadora. lntérprete
éQué es un programa? 5eI

lntérpretes
Algunos lenguajes de programación, como APL y BASIC, vienen como intérpretes (también
hay compiladores tipo BASIC, como Visual Basic). Los intérpretes traducen una línea a la
vez, ejecutando cada línea a medida que se traduce. El nombre intérprete es muy descriptivo.
Usted esüá familiarizado con la forma en que funcionan los intérpretes de computadoras, ya
que entiende cómo funcionan los intérpretes humanos.

Suponga que alguien le da un libro escrito en un idioma extranjero que no entiende. Para po-
der entenderlo, puede confratar a un intérprete que le lea el libro. El intérprete lee una línea,
la ffaduce y luego lee la siguiente línea. La única desventaja de la interpretación (a diferencia
de la compilación, que se describe en la siguiente sección) es que el intérprete debe volver a
interpretar las líneas que usted quiere leer de nuevo. La interpretación es más lenta que la
compilación. La figura 3.6 muesfra la posición del intérprete entre usted y el libro. Tenga pre-
sente esto cuando lea sobre los intérpretes de las computadoras.

Frcunn 3.6
Un intérprete traduce Traducción
una línea a la vez. -'-\

lntérprete

Un intérprete de lenguaje de programación actúa como el intérprete humano en el sentido de


que la interpretación línea por línea puede ser un proceso lento. Las computadoras con fre-
cuencia llevan a cabo tareas repetitivas, como imprimir cientos de cheques de nómina. Si cuen-
ta con un lenguaje de programación interpretado, el intérprete toma cada fnea del programa, la
ffaduce y la ejecuta. Este proceso hace que las tareas repetitivas se ejecuten con lentitud.

Esta es una sección de un programa en BASIC. Aprenderá más sobre los detalles del lenguaje
BASIC en esta obra, pero por ahora todo lo que necesita saber es que estas tres líneas se repi-
ten 50 veces:
FORi=1T050
PRINT i
NEXT i
Larazór. de que el intérprete sea lento es que cada vez que repite una línea, antes la tiene que
volver a interpretar. Por lo tanto, estas tres líneas de código se interpretan 50 veces y se ejecu-
tan 50 veces.

Aun así, los intérpreúes ofrecen algunas ventajas frente a los compiladores. Para los novatos,
los lenguajes interpretados son un tanto más fáciles de aprender. El proceso de compilación
Hora 3
160

de programas históricamente es más difícil que su interpretación (aunque muchos de los com-
piladores actuales casi son tan fáciles de usar como los intérpretes). El tiempo entre la ejecu-
ción del programa y la obtención de resultados es menor cuando se trabaja con un intérprete.
Esta rápida retroalimentación es útil para los principiantes en la programación.

Compiladores
En lugar de confratar un intérprete para que le lea el libro en lengua extranjera, sería mejor
que le pidiese al Íaductor quielo compile por usted. El traductor se puede sentar a escribir la
interpretación, sin leerla en voz alta para usted. Aunque tarda mucho más tiempo en preparar-
la, puede leer la versión compilada y referirse a ella cuando lo necesite.

La figura 3.7 muestra el proceso de compilación del volumen. La ventaja de tener el libro
compilado es que ya no hace falta el intérprete una vez que se ha terminado la compilación.

Frcune 3.7
Después de compilar
Libro Libro
el libro, la no necesita en otro totalmente
al traducton idioma traducido
(compilado)

Compilador

La compilación de un prognlma requiere de un paso exfra sobre su interpretación. Debe soli-


cita¡ al compilador que compile el programa y luego esperar los resultados. Sólo hasta des-
pués de la compilación completa del programa será posible que este funcione. La mayoía de
los programadores novatos tienen bastantes problemas para aprender la interacción del pro-
grama con el hardware, el sistema operativo y con el propio lenguaje, como para tener que
aprender además los comandos del compilador.

La mayor parte de los negocios prefieren lenguajes de programación compilados ya que, una
vez compilados, se ejecutan con mucho mayor rapidez que al ser interpretados. En el ejemplo
anterior de BASIC, las tres líneas rlnicamente tienen que compilarse para lenguaje de máqui-
na. Una vez que termina el compilador, el código ejecuta las 50 repeticiones sin Eaducirlo
nueYamente.

Las empresas también pref¡eren los programas compilados a los interpreta-

9 dos por razones de seguridad. Una vez compilado, es difícil cambiar un pro-
grama. Cuando compra un programa ya escr¡to, lo más probable es que ya
esté comp¡lado. Lo puede ejecutar; pero no puede ver el código fuente.
¿Qué es un programa? 61
I

Algunos de los lenguajes de programación actuales, como Visual Basic, le permiten ejecutar
los programas tanto de manera interpretada como compilada. Por lo tanto, obtiene las ventajas
de prueba que ofrece un lenguaje interpretado y, una vez realizada la prueba, obtiene la velo-
cidad y seguridad de un lenguaje compilado.

La precisión es todo
Ahora, sabe que una computadora es una máquina que no puede lidiar con las ambigüedades.
El problema para un programador es el conjunto de errores que aparecen en el código. Los
programadores deben asegurarse de no escribir programas que contengan erores, aunque esto
no siempre sea tan fácil como parece.

En el argot de las computadoras, un error de un programa se conoce como "bug" o


falla. Cluarrdo dividen el problema de programación en instrucciones detalladas, los
programadores con frecuencia omiten algo o lo codifican mal. Al ejecutarse el programa,
los errores hacen su aparición debido a las fallas en el código.

La depuración es el proceso por el que pasa un programadorpara eliminar las fallas


de un programa. A medida que un programador escribe un programd, t menudo 1o
ejecuta en un estado no terminado (hasta donde pueda ejecutarse) para detectar la mayor can-
tidad de fallas posible y eliminarlas del programa terminado. Con frecuencia, la mayor parte
de las fallas sólo se pueden localizar tras terminar de escribir la totalidad del programa.

A menudo los programadores noyatos no se dan cuenta de lo sencillo que es que se cuelen fa-
llas al código. Espérelas y no se sorprenderá. Muchos estudiantes de programación princi-
piantes han llevado un programa ante el instructor para decirle "la computadora no funciona
bien" cuando, en realidad, eI programa tiene una o dos fallas. Cuando comience a escribir sus
primeros programas, espere tener que corregir algunos problemas. Nadie escribe un programa
perfecto a la primera.
152 Hora 3

Dependiendo del tamaño del programa, el tiempo que le lleva al programador (o programado-
res) corregir los problemas es tanto como el tiempo que le llevó escribir el programa en un
principio. Algunos errores son muy diffciles de localiza¡.

Existen dos categorías de fallas de computadoras: errores de sintaxis y errores lógicos. Para
conocer la diferencia, trate de encontrar los dos errores en la siguiente oración:

Hay dos etrrores en esta oración.

¿Necesita una p¡sta? Aún no; busque de nuevo Ios dos errores antes de

9 contin ua r.

El primer error es obvio. La palabra errrores está mal escrita; debe decir errores. El segundo
es mucho más diflcit de localizar; la premisa de la oración está incorrecta. Únicamente hay un
error en la oración, que es la palabra etrrores, que está mal escrita. Por lo tanto, la lógica de
la oración misma es un eror.

Este problema demuestra la diferencia entre Ltn error de sintaxis y un error lógico.
El error de sintaxis es mucho más fácil de localizar Los effores de sintaxis general-
mente son comandos del lenguaje de programación mal escritos, y problemas gramaticales
con la manera en que se empleó el lenguaje de programación. Los errores lógicos suceden
cuando el programa sintácticamente estií correcto, pero le inücó que hiciese algo que en rea-
lidad no es 1o que debía hacerse.

Los compiladores e intérpretes localizan los errores de sintaxis de los programas cuando se
intenta compilarlos o ejecutarlos. Esta es otrarazónpor la que los errores de sintaxis son más
fáciles de localizar: la computadora le dice dónde están. Cuando una computadora se topa con
un elror de sintaxis, se detiene y se niega a seguir analizando el programa hasta que se corrija
el error. La figura 3.8 muestra un programa en QBasic que se detuvo debido a un error de sin-
taxis. El intérprete de QBasic se detiene y resalta la línea donde sucedió el error.

Suponga que está escribiendo un prograrna que imprime las facturas de las cuentas por cobrar
de su compañía. Debido a un elror, la computadora imprime todas las facturas con un saldo a
favor de 1 000 dólares. En otras palabras, de acuerdo a la factura, todos los clientes tienen
un crédito de 1 000 dólares. Su computadora hizo su ffabajo, llevando a cabo las instruccio-
nes del programa. El programa evidentemente no tenía errores de sintaxis, pues se ejecutó sin
intemrpciones. Sin embargo, los errores lógicos fueron los que causaron que no funcionara
bien.

Las pruebas exhaustivas son críticas. El programador quiere eliminar todos los errores prira
que el programa funcione de manera adecuada cuando el usuario finalmente lo utilice. Entre
más grande sea el programa, más dificil es esto. La eliminación de los errores de programa-
ción es apenas una de las tareas diarias que debe cubrir un programador.
iQué es un programa? 63r
t

Frcunn 3.8
QBasic encuentra un
error de sintaxis y se
rehusa a continuar
hasta que usted arregle
el problema.

Aquí sucedió el
error

Hay otro tipo de error; llamado error de tiempo de ejecución. Estos errores
de hecho son provocados casi siempre por errores lógicos, pues el programa-
dor no previno !, por Io tanto, no manejó un problema potencial. Los erro-
res de tiempo de ejecución suceden si un programa intenta escribir en un
disco sin primero asegurarse de que la puerta de la unidad esté cerrada y
el disco instalado. Puede ocurrir un error de tiempo de ejecución, por ejem-
plo, si el programa divide entre cero (la división entre cero no está definida
matemáticamente). Entre más programe, más aprenderá a eliminar los erro-
res potenciales de tiempo de ejecución.

Resumen
Hay varias formas de obtener progr¿rmas para las computadoras, pero para que las compu-
tadoras en realidad hagan lo que quiere, es necesario que usted los escriba. La mayoría de
los programas que puede compr¿r sólo son licencias que le permiten utilizar el programa,
mas no personalizarlo. Las compañías necesitan programas que les permitan llevar a cabo
sus negocios como prefieran, sin obligarles a cambiar sus prácticas para ajustarse al progra-
ma. Antes de que pueda progmmar, debe aprender un lenguaje de programación. Los
progrrrmas con frecuencia contienen errores, de modo que tendrá que probarlos antes de dis-
tribuirlos a los usuarios.

La siguiente hora describe parte de los antecedentes necesarios para el diseño correcto de
programas.
Hora 3

Preguntas y respuestas
P ¿Qué parte de un programa consiste en evitar y manejar errores posibles que pue-
den suceder al momento de ejecución?
R Lo último que usted desea es que un usuario, ya sea que trabaje para su compañía o que
compre su programa, se tope con ula falla que uo detectó. Si pone más empeño en en-
contrar todas las fallas, predecir las que pudiesen suceder y manejarlas en el programa,
los usuarios estarán mucho más contentos y usted tendrá mrás éxito como programador.
Para evitar problemas, tendrá que incluir amplias rutinas de manejo de errores en sus
programas. Algunos programas cuentan con más código para evitar errores del que lle-
va a cabo las tareas requeridas.

Taller
Las preguntas del cuestionario se presentan para aumentar su comprensión. Vea las respuestas
en el apéndice A.

Cuestionario
1. ¿Cuáles son los tres modos de adquirir un programa nuevo?
2. ¿Por qué las empresas con frecuencia escriben sus propios programas, a pesar del gasto
extra que esto implica?
3. ¿Por qué deben los programadores conocer un lenguaje de programación?
4. ¿Por qué las computadoras no entienden el lenguaje humano?
5. ¿Óuál es el único lenguaje que las computadoras pueden entender intemamente?
6. Verdadero o falso: para que sea competente, un programador debe conocer cuando me-
nos cinco lenguajes de programación.
7. ¿Por qué es tan importante una memoria interna basada en RAM para ejecutar un pro-
grama?
8. ¿Qué tipos de fallas aparecen en los programas?
9. ¿Qué tipos de fallas son los más fáciles de localizar?
10. ¿Qué produce programas más rápidos: un compilador o un intérprete?
M

HoRA

El diseño del programa


Los programadores aprenden a tener paciencia desde el inicio de sus c¿rreras de
programación. Aprenden que el diseño adecuado es crítico para que un programa
tenga éxito. Talvez haya escuchado el término análisis y diseño de sistemas. Es-
te nombre ha sido dado ala práctica de analizar un problema y luego diseñar un
programa a partir del análisis. Se han preparado libros y cursos universitarios
completos sobre el análisis y diseño de sistemas. Este capítulo pretende abarcar
sus puntos relevantes, permitiéndole observar el proceso que realtza la mayoría
de los programadores antes de escribir sus programas.

Los temas relevantes de esta hora son:


o Por qué es tan importante el diseño de los programas
o Cuáles son los tres pasos necesarios para escribir un programa
. El significado de la definición de salida
Por qué el diseño descendente es mejor que el diseño ascendente

Qué es un diagrama de flujo


El significado de los símbolos en los diagramas de flujo
Cuándo el pseudocódigo tiene ventajas sobre los diagramas de flujo
. Cuál es el paso final del proceso de programación.
Hora 4
166

Por qué es necesario el diseño


Cuando un constructor inicia la eüficación de una casa, no toma un martillo y comienza por
el marco de la cocina. Antes de poder comenzar, el diseñador debe diseñar la casa nueva. Co-
mo muy pronto aprenderá, un programa también debe diseñarse antes de que sea escrito.

El constructor debe primero determinar lo que desea el cliente. Nada puede construir a menos
que el constructor tenga en mente un resultado final. Por lo tanto, los compradores de la casa
deben reunirse con un arquitecto, a quien le dirán cómo quieren que sea la casa. El arquitecto
ayuda a los compradores a tomar sus decisiones indicándoles qué es posible hacer y qué no.
Durante esta etapa inicial, el precio siempre es un factor que requiere que tanto los diseñado-
res como los compradores lleguen a un arreglo.

Una vez que el arquitecto completa los planos de la casa, el constructor debe planificar los re-
cursos necesarios para construirla. Sólo después de completar el diseño de la casa, de obtener
los permisos de construcción, conseguir el dinero, adquirir los materiales y contratar a los
obreros, se puede iniciar la construcción. De hecho, entre más empeño ponga el constructor
en estos requisitos preliminares, más rápido podrá construir la casa.

El problema de construir una casa sin un diseño previo es que los dueños podrían querer efec-
tuar cambios cuando ya es demasiado tarde para hacerlos. Es muy difícil añadir un baño entre
dos alcobas cuando ya se ha completado la casa. Laideaprincipal es lograr que los dueños
acuerden con el constructor las características de la casa terminada. Cuando las partes involu-
cradas llegan a un acuerdo sobre las especificaciones, no ocurrirán desacuerdos posteriores.
Entre más claros sean los planos iniciales, menos problemas sucederán sobre la marcha pues
todas las partes estuvieron de acuerdo con.base en los mismos planos.

Diseño de programas
Queda claro que este libro no es sobre construcción de casas, pero usted debe tener presentes
las similitudes antes de escribir cualquier programa, sin importar su tamaño. No debe correr
al teclado a codificar instrucciones en un programa sin antes diseñarlo, lo mismo que el cons-
tructor no debe ponerse a martillar antes de determinar los planos de la casa.

9 Entre más diseño preliminar realice, más rápido terminará su programa.

Gracias a la tecnología de la computación, es más fácil modificar un programa que una casa.
Si usted deja fuera una rutina que desea un usuario, es más fácil añadirla más tarde que agre-
gar una habitación a una casa termilada. No obstante, Ia adición de cualquier cosa a un pro-
grama nunca es tan fácil como diseñar bien el programa desde un principio.
diseño programa

El mantenimiento de programas que se lleva a cabo fras escribir, probar y distribuir un pro-
grama es uno de los aspectos que requiere más tiempo en el proceso de la programación. Los
programas se acfualizan constantemente para reflejar las nuevas necesidades de los usuarios.
En ocasiones, cuando el programa no se ha diseñado de manera adecuada antes de su codifi-
cación, el usuario no lo aceptará sino hasta que haga exactamente lo que debe hacer.

Los consultores de computación aprenden pronto a lograr la aceptación de los usuarios, inclu-
so a obtener su firma para el diseño de un programa antes de iniciar la programación. Si tanto
usuarios como programadores llegan a un acuerdo sobre 1o que se debe hacer, es difícil que
surjan discusiones cuando se presente el producto final. Las compañías con departamentos in-
ternos de procesamiento de datos requieren también que sus equipos de prógramadores lle-
guen a acuerdos escritos con los usuarios que solicitan los programas. Los recursos de una
compañla son limitados; no hay tiempo para añadir más tarde cosas que debieron estar en el
sistema desde el comienzo. La lección de esta hora expüca cómo generar el diseño acordado
entre sus usuarios y usted.

1. Definir la salida.
2. Desarrollar la lógica para lograr esta salida.
3. Escribi¡ el programa.
Observe que la escritura del programa es el último paso en la programación. Esto no es tan
tonto como puede parecer. Recuerde que la construcción física de una casa es el último paso
de la construcción de ésta; una planificación adecuada es indispensable antes de poder co-
menzar a construir algo. Descubrirá que la escritura del programa propiamente dicha es una
de las partes más fáciles del proceso de programación. Si su üseño está bien pensado, el pro-
grama prácticamente se escribe solo; su codificación casi es un subproducto del proceso.

El resto de este capífulo estudia estos tres componentes en el diseño de programas.

Paso 1: definición de la salida


Antes de iniciar un programa, debe tener una buena idea de lo que éste producirá. Volviendo
al modelo fundamental de la programación (que se repite en la figura 4.L),verá que la salida
es lo último que se genera, pero es lo primero que se debe diseñar Al igual que un construc-
tor debe saber cómo deberá verse la casa antes de comenzar a construi¡la, el programador de-
be saber cuál será la salida antes de escribir el programa.

FrcuRR 4.1 Datos Salida

El procesamiento de
datos en su nivel mds
elemental convierte los
datos en información.
68 Hora 4

La salida de un programa consiste en más que información impresa. Cualquier cosa que gene-
re el programa y vea el usuario se considera salida que se debe defini¡. Debe saber la aparien-
cia que debe tener cada pantalla del programa, y lo que aparecerá en cada página de un
reporte impreso.

La definición de la salida es más que un diseño preliminar de la salida. Le da una idea de los
elementos de datos que el programa debe rastrear, calcular y producir. La definición de la sa-
lida le ayuda también a recopilar la enfrada necesaria para producir la salida.

Algunos programas generan una enorme cantidad de salida. No omita este


primer paso, que es de importanc¡a capital, del proceso de diseño sólo por el
hecho de que habrá mucha salida. Y debido a esto, es más importante que
la defina. Esto es relativarnente sencillo (a veces hasta aburrido y tedioso). La
definición de la salida puede tomar tanto tiempo como el tercer paso, que
es la codificación del programa (el segundo paso, sin embargo, es e! más tar-
dado). Usted perderá ese t¡empo y más si omite la definición de la salida
desde el inicio.

Uno de los beneficios del sistema operat¡vo Windows es su naturaleza visual.

9 Antes de Windows, las herram¡entas de programación se limitaban al diseño


e implementación basados en texto. Ahora, el diseño de una pantalla de
usuario implica iniciar un lenguaje de programación como Visual Basic, dibu-
jar la pantalla y arrastrar hacia ella los objetos con que interactuará el usua-
rio, como el botón Aceptar. Por lo tanto, puede diseñar con rapidez
prototipos de pantallas y env¡arlas al usuario. Una vez que el usuario vea las
pantallas con las que interactuará, sabrá mejor si usted comprende las nece-
sidades del programa.

La definición de la salida comprende muchas páginas de detalles. Debe especificar todos los
detalles de un problema antes de saber qué salida necesita. Uno de los mejores métodos para
la especificación de los detalles de un problema es el diseño descendente.

Diseño descendente
El diseño más importante que existe es el diseño descendente. Con el diseño descen-
dente, usted genera los detalles necesarios para lograr un ffabajo de programación.
El diseño descendente es el proceso de descomposición de un problema en detalles más espe-
cíficos, hasta completa¡ todos los detalles.

El problema de este diseño descendente es que los programadores tienden a no usarlo. Dise-
ñan en el otro sentido (llamado diseño ascendenre). Cuando ignora el diseño descendente, se
El diseño del programa 6eI

impone una gran carga al tratar de recordar los detalles necesarios; con el diseño descendente,
los detalles caen por su propio peso. No es necesario que se preocupe por las minucias cuan-
do se apega a un diseño descendente estricto, pues el proceso de este diseño se encarga de ge-
nerar los detalles.

Una de las claves del diseño descendente es que le obliga a posponer los de-

9 talles para después. Hace que se enfoque más en el problema general. Si


emplea el diseño ascendente, es muy fácil perder de vista el bosque entre
los árboles. Se llega a los detalles demasiado rápido y se pierden de vista los
objetivos principales del programa.

La generac¡ón de un diseño descendente real


Puede aprender sobre el diseño descendente con más facilidad si lo relaciona con un proble-
ma real antes de enhar en un problema de cómputo. El diseño descendente no es sólo para
problemas de programación. Una vez que lo domine, puede aplicarlo a cualquier parte de su
vida que tenga que planificar a detalle. Tal vez el evento más detallado que pueda planificar
una persona es su boda. Por lo tanto, una boda es el evento perfecto prra ver en acción el di-
seño descendente.

¿Qué es lo primero que debe hacer para casarse? Antes que nada, encontrar un prospecto de
esposo o esposa (para ello necesitará otro libro). Cuando llegue la hora de planificar la boda,
el diseño descendente sení la mejor manera de abordar el asunto. El modo como ¿o se debe
programar una boda es preocupÍuse primero por los detalles; sin embargo, es así como casi
todos lo hacen. Comienzan pensando en el vestido, los mrlsicos, las flores y el pastel. El ma-
yor problema al Eatar de cubrir estos detalles desde el inicio es que se le escapan muchas co-
sas; es muy fácil olvidar algo hasta que es irremediable. Los detalles de un diseño ascendente
estorban.

Los pasos del diseño descendente


El siguiente es el proceso de fies pasos necesario para un diseño descendente:
1. Determinar la meta general.
2. Dividir esa meta en dos o tres partes más detalladas. Demasiados detalles harán que se
omitan varias cosas.
3. Posponer los detalles mientras sea posible. Repetir los pasos I y 2 hasta que ya no pue-
da dividir más el problema.
70 Hora 4

¿Cuifl es la meta general de una boda? Pensando en los términos más generales "tener una bo-
da'l es lo más global. Si estuviese a cargo de planificar una boda, la meta general "tener una
boda" seía lo más acertado. Suponga que "tener unaboda" es la meta superior.

La meta general lo mantiene enfocado. A pesar de su naturaleza redundan-


te, "tener una boda" deja fuera detalles como la planificación de la luna de
miel. Si no se l¡mita al problema prec¡so que se qu¡ere atacaL se confundirá
con los detalles y, sobre todo, olvidará algunos de ellos. Si está planeando
tanto !a boda como la luna de miel, deberá llevar a cabo dos diseños descen-
dentes o incluir !a luna de miel en la meta genera! de nivel más alto. Este
plan de boda incluye el evento de la boda en sí (ceremonia y recepc¡ón)
pero no los detalles de la luna de miel. (Deje los detalles de la luna de miel a
su cónyuge para que sea una sorpresa. A fin de cuentas, ya tiene bastante
con los planes de la boda, ¿o no?)

Ahora que sabe hacia dónde se dirige, divida esta meta en dos o ftes detalles. Por ejemplo, los
colores de la boda, la lista de invitados, el pago al minisro... perdón, demasiados detalles. La
idea del diseño descendente es posponer los detalles el mayor tiempo posible. No se apresuro.
Cuando se descubra dividiendo el problema en más de tres o cuatro partes, significará que es-
tá apresurando el diseño descendente. Posponga los detalles. Básicamente, se puede dividir el
evento en dos componentes principales: la ceremonia y la recepción.

E! uso del diseño descendente


El siguiente paso del diseño descendente es tomar estos nuevos componentes y hacer lo mis-
mo con cada uno. La ceremonia consiste en la gente y el lugar. La recepción incluye la comi-
da, la gente y el lugar. La gente de la ceremonia incluye a los invitados, los novios y los
trabajadores (el ministro, el organista y demás, pero estos detalles vendriín después).

El diseño descendente naturalmente produce un resultado triangular cuya primera parte


aparece en la figura 4.2. Quedan muchos detalles por incluir, pero ese es el meollo; debe
posponer los detalles mientras sea posible. Los detalles van surgiendo al dividir las tareas.
Si se asegura que la meta global incluya la idea general, tarde o temprano llegariín los de-
talles.

Pronto se le acabará el espacio en la página, lo cual está muy bien; use más hojas. Puede nu-
merarlas en el cuadro "superior" de cada página. De hecho, el regisüo del número de página
no es tan importante como parecería. La primera página es la de su objetivo, que le asegura
que esuí trabajando para lograr la meta deseada. Continúe dividiendo los detalles hasta que no
se puedan dividir más. Descubrirá que no ha omitido ningún detalle al final.
E¡ diseño del programa 711

Flcunn 4.2
Ia primera parte de la
planificación de una
boda que emplea el
diseño descendente
abarca los objetivos
más generales.

No se preocupe aún por Ia secuencia de los detalles. E! objetivo def diseño

9 descendente es producir todos los detalles necesarios (a la larga), no poner-


los en ningún orden. Debe saber hacia dónde se encamina y lo que se re-
quiere exactamente, antes de considerar la relación que existe entre estos
detalles y su orden.

Al final, tendrá varias páginas de detalles que ya no tienen modo de dividirse. Por ejemplo,
probablemente terminará teniendo los detalles del banquete, como los bocadillos. (Sin embar-
go, si comienza por üstar esos detalles podría olvidar muchos de ellos.)

Pasando a un problema más "computaizado", suponga que se le ha asignado la tarea de es-


cribir un programa de nómina para una compañla. ¿Qué podría requerir dicho programa de
nómina? Puede comenzar pof listar los detalles de la nómina, como sigue:
. Imprimir los cheques de la nómina.
. Calcular los impuestos federales.
. Calcular los impuestos estatales.

¿Qué está mal en este método? Si dice que los detalles aparecieron demasiado pronto, está en
lo correcto. El lugar adecuado para comenzar es arriba. La meta miás general de un programa
de nómina puede ser "realizar la nómina". Esta meta general pone fuera del programa otros
detalles (no se incluirá un proceso contable, a menos que parte del sistema de nómina actuali-
ce un archivo general contable) y lo mantiene enfocado en el problema inmediato.

Observe la figura 4.3. Esta podría ser la primera página del diseño descendente de la nómina.
Cualquier programa de nómina debe contar con algún mecanismo para insertar, borrar y cam-
biar la información del empleado, como di¡ección, ciudad, estado, código postal, cantidad de
exenciones y demás. ¿Qué otros detalles necesita sobre los empleados? Por ahora, no pregun-
te. El diseño no está listo para tantos detalles.

Fleunn 4.3
La primera pdgina del
Manejo de la
diseño descendente información de
empleados
del programa de
nómina incluirá el Adición de
información de
nivel de detalle más empleados

alto.

Aún hay un gran trecho que recorrer antes de dar por concluido el diseño descendente de
la nómina, pero la figura 4.3 es el primer paso. Debe seguir dividiendo cada componente
hasta que surjan todos los detalles. Sólo hasta entonces podrá decidir lo que producirá el
progfama.

Cuando usted y el usuario recopilen todos los detalles necesarios mediante el diseño descen-
dente, podrá determinar en qué consistiriín dichos detalles.

Herramientas para la definición de la salida


Los detalles que surgen del diseño descendente no son todos de salida. Muchos de estos son
procedimientos que debe llevar a cabo el progürma final. Por ejemplo, uno de los detalles de
un prograrna de nómina seía "calcular la paga neta". Esto no causa que aparezca una salida.
En alguna otra parte del diseño descendente, de los reportes de la nómina, aparccerá el detalle
"imprimir paga neta en el cheque". Ese detalle será una salida.

Debe asegurarse que la salida consista en, y se vea igual que, lo que el usuario quiere ver en
el programa final. Es ta¡ea de usted reunirse con el usuario y definir cada elemento de la sali-
da del programa. Esto es llamado definición de la salida.

Como se mencionó en la sección anterior, puede crear un prototipo, o modelo de la salida


propuesta de su programa, mediante alguna de las muchas herramientas de programación ac-
tuales. La figxa 4.4 muestra una ventana del lenguaje de programación basado en Windows
que se llama Visual Basic. El programador no requirió de ningún lenguaje de programación
para diseñar esta pantalla; pudo crearla en cuestión de minutos y mostrarla al usuario inme-
diatamente después.
d iseño programa

Heune 4.4
Sus usuarios pueden
rrabajar con el
ptotottpo para
üegurar que la salida
cuente con todos los
elementos necesarios.

Una de las grandes ventajas de hacer prototipos de pantallas de usuario durante la etapa de di-
seño, mediante las herramientas visuales que actualmente hay disponibles, es que una vez que
el usuario y usted hayan acordado el diseño de una pantalla, ésta se puede llevar al programa
final. En otras palabras, el prototipo puede convertirse en una pantalla real del producto final.
Si no utiliza estas herramientas de diseño interactivas, y prefiere (o se le requiere, como se
menciona más adelante en esta sección) usar herramientas de diseño en papel para la salida del
progftrma, tendrá que introducir en la computadora el diseño en papel cuando escriba el pro-
grama. Empleará mejor su tiempo si el diseño puede volverse de inmediato parte del programa.

El prototipo únicamente es un cascarón vacío que no puede hacer otra cosa


que simular la interacción del usuar¡o hasta que usted en¡ace las piezas me-
diante el código. 5u trabajo como programador apenas com¡enza cuando
obt¡ene la aprobación de las pantallas, pero éstas son e¡ primer lugar para
comenzaL pues debe conocer Io que desean sus usuar¡os antes de saber có-
mo proceder.

Si emplea una herramienta visual de programación, como Visual Basic, em-

9 pleada cada vez más por los programadores de la actualidad, enseñe a sus
usuar¡os a hacer los protot¡pos de sus propias pantallas. No es necesario sa-
ber de programación para diseñar pantallas. Así, sus usuar¡os tendrán la po-
s¡bilidad de mostrarle lo que qu¡eren. Los prototipos de pantalla también son
interactivos. Es decir; los usuarios podrán hacer clic en los botones e insertar
valores en los campos, aunque no suceda nada como consecuenc¡a de esto.
La idea es dejar que los usuarios prueben las pantallas por un rato y se sien-
tan cómodos con la ubicación y apariencia de los controles.
i74
f
Hora 4

En ocasiones, no es posible usar herramientas yisuales de prototipos. Esto podría suceder por-
que sus usuarios no tienen sufi,ciente capacidad de cómputo o espacio en disco en sus PCs pa-
ra ejecutar el ambiente de programación. Además, tal vez no tenga la licencia para instalar el
ambiente de programación en la PC del usuario. Es más, si está escribiendo un programa para
usuarios que saben muy poco sobre computadoras, estarán más dispuestos a adaptar su diseño
si desde un principio les muestra los diseños en papel de la apariencia de las pantallas, y deja
que el usuario marque en éste los cambios necesarios.

Hay varias herramientas basadas en papel que le pueden ayudar a definir la salida. El papel de
gráficos es útil para esbozar los detalles de las pantallas y los reportes. Observe la figura 4.5.
A partir de esta figura, puede determinar la cantidad de líneas y espacios que separan los ele-
mentos en la pantalla. En un ambiente visual como Windows ya no hay un carácter por espa-
cio y por línea, como solía haber en los ambientes operaüvos basados en texto, pero el papel
de griáfrcos le da a sus usuarios una idea de las pantallas con las que trabajariín, y es menos
imponente de lo que podría ser una pantalla en un principio.

Frcunn 4.5
La graficación de los
elementos de la salida
ayuda a indicar su ubi-
cación en el programa.

Dada la flexibilidad de los procesadores de texto actuales y dado que hasta los usuarios nova-
tos de computadoras emplean un procesador de texto para sus cartas, puede trabajar con ellos
en el contenido de las pantallas valiéndose de un procesador de texto. El procesador de texto
no los intimidará como 1o podría hacer una herramienta de diseño visual, además de que los
procesadores de texto trabajan hasta en las PC de baja capacidad. Tal vez el procesador de
texto no sea una gran herramienta de diseño, pero puede sentarse con sus usuarios y bosque-
jar, empleando los comandos y herramientas del procesador de texto, el contenido de las pan-
tallas que el usuario necesita ver. Completadas las pantallas, puede imprimirlas y guardarlas
en su disco para una referencia posterior.

Asegúrese de incluir pantallas de entrada de datos como parte de su definición de salida. Esto
podría parecer confradictorio, pero las pantallas de entrada requieren que su programa ponga
indicadores (preguntas y títulos para los datos requeridos) en la pantalla; debe planificar la
ubicación de estos elementos de la pantalla de entrada. Por ejemplo, la figura 4.4 fue algo
El diseño del programa

más que una pantalla de entrada de datos donde una tienda de libros podía insertar la informa-
ción de sus libros nuevos. (Además, la misma pantalla ofrece la salida de los libros en exis-
tencia.) Aunque el usuario final innoduci¡á los elementos requeridos acerca del libro (llamados
campos), la definición de la distribución de la pantalla de entrada de datos antes de escribir el
progrrima que produce la pantalla, acelera el término del programa.

En conclusión, todas las pantallas de saüda, informes impresos y pantallas de enffada de


datos deben definirse por adelantado para que usted sepa exactamente lo que se requiere de
sus programas. También debe decidir qué datos conservar en archivos, así como el formato
de sus archivos de datos. A medida que progrese su aprendizaje en la programación, conocerá
maneras de diseñar archivos en los formatos que se requieren.

EI trabajo con los usuar¡os


A menos que usted sea el usuario final de sus prograrras, tendrá que hablar con los usuarios y
definir la salida, como se explicó en la sección anterior. Con frecuencia, los usuarios tienen
apenas una idea vaga de lo que quieren que haga su programa. Tendrá que ayudarles a defini¡
lo que hará el programa, así como su salida.

Algunos usuarios finales que requieren progrrrmas no tienen ni idea de lo que es capaz de ha-
cer la computadora. Aprenderá a desa:rollar algunas habilidades como consultor profesional a
medida que diseñe sus programas. Deberá ser capaz de converti¡ las solicitudes de programa-
ción generales de sus usuarios en elementos concretos y significativos.

La definición de la salida es una de las mejores herramientas de las que se puede valer para
definir las solicitudes de programación del usuario. Muestre con frecuencia los diseños de sus
salidas a su usuario y haga preguntas como: "¿es esto lo que quiere?" y "¿contiene este repor-
te todo 1o que necesita?" Si va a escribir progrrrmas para una compañía, recuerde que ésta ten-
drá requisitos estrictos acerca de lo que deberá contener cada reporte. En algunas compañías,
todas las páginas de cualquier reporte generado por computadora deben contener la fecha y
hora de su impresión. Tendrá que investigar los estándares de salida de la compañía para des-
cubrir lo que requiere.

Cuando frabaje con usuarios, proporcione todos los prototipos posibles para que ftabajen. Cuan-
do escriba un programa que presente pantallas de salida y entrada de datos, y permita llenar
los espacios mediante el teclado, no será necesario que el programa haga nada con los datos
ingresados por el usuario. Sólo trabajando con las pantallas, el usuario sabrá si el programa
contiene los elementos necesarios.

Asegúrese de obtener algún acuerdo por escrito de su usuario, aunque sea


informal, que indique que la definición de la salida es correcta. Este paso vi-
tal, necesario antes de iniciar el desarrollo de la lógica, liga contractualmen-
te al usuario (y a usted) con la definición de la salida. De esta manera,
cuando presente e! programa terminado, el usuario no podrá reclamar que
no genera los resultados esperados.
76 Hora 4

¿Qué debe hacer con los detalles del diseño descendente y la definición de la salida? Ahora
debe pasarlos a algrún tipo de lógica cronológica que deberá seguir el programa p¿ra generar
los detalles. Es aquí donde entran las herramientas de diseño como los diagramas de flujo y el
pseudocódigo.

Paso 2: desarrolle la lógica


Unayez que el usuario y usted hayan acordado las metas y las salidas del programa, el resto
es responsabilidad de usted. Su tarea es decidir, con base en dicha definición de las salidas,
cómo hacer que la computadora las produzca. Ha tomado el problema general y lo ha dividi-
do en instrucciones detalladas que puede llevar a cabo la computadora. Esto no significa que
está listo para escribir el programa, sino todo lo contrario: ahora está listo para desanollar la
lógica que produce dicha salida.

La definición de la salida es un gran avance dirigido a la descripción qué debe hacer el pro-
grama. Ahora decidirá cómo llevar a cabo el trabajo. Debe ordenar los detalles que tiene para
que operen de manera cronológica. También debe pensar en las decisiones que tomará su pro-
grama, así como las acciones que producirán dichas decisiones.

Diagramas de flujo
Los diagramas de flujo y las herramientas de desarrollo de lógica relacionadas son los ele-
mentos básicos de los profesionales del cómputo. Desgraciadamente, hoy día se imparten
pocos cursos sobre diagramas de flujo ya que dichos cursos de programación abarcan una
gran cantidad de material. Debido a la complejidad de los programas es necesario que descu-
bra alguna manera de representar la lógica de un programa antes de escribirlo. Los diagramas
de flujo pueden parecer arcaicos pero los programadores que no emplean herramientas de este
tipo son menos productivos de lo que podrían ser.
Se dice que una imagen vale por mil palabras y el diagrama de flujo provee una representa-
ción gráfica de la lógica de un programa. El diagrama de flujo no incluye todos los detalles
del programa, pero representa el flujo lógico general del programa. Provee la lógica del pro-
grama final. Si su diagrama de flujo está correctamente dibujado, la escritura del programa se
vuelve un asunto de rutina. Tras terminar el programa, el diagrama de flujo puede servir co-
mo documentación de dicho programa.

El diagrama de flujo describe el cuadro central del modelo entrada-proceso-


salida de los programas de computación.

Los diagramas de flujo constan de símbolos estándar. Usted puede adquiÁr plantillas de sím-
bolos de diagramación de flujo en las tiendas de suministros para oficinas que le ayudarán a
dibujar diagramas de flujo de mejor presentación que lo que podría lograr dibujando a pulso.
El diseño del programa 77
I

En la figura 4.6 se muesffa una plantilla típica de diagramación de flujo. Existen también al-
gunos programas que le auxiliarán en la creación e impresión de diagramas de flujo.

Frcuna 4.6
Puede adquirir una
plantilla plástica
p ara
diagramación de flujo DE-Orl
«+VO ?=
con la que dibujará
diagramas de mejor
aspecto.

Sólo después de aprender a programar podrá aprender a elaborar el diagra-


ma de flujo de un programa; sin embargo, debe efectuar diagramas de flujo
(o emplear algún otro tipo de herramienta de desarrollo lógico relacionada)
antes de escribir sus programas. Este síndrome de qué fue primero, ¿el hue-
vo o la gallina? es común en los nuevos programadores. Cuando comience a
escribir sus propios programas, comprenderá mejor la importancia de los
diagramas de flujo.

Como puede ver en la plantilla, hay muchos símbolos de diagramación de flujo. No obstante,
sólo algunos se usan con frecuencia. Este capítulo le enseña los símbolos más comunes. Con
los que conocerá aquí, podrá escribir cualquier diagrama de flujo que llegue a necesitar. Los
símbolos restantes sólo son refinamientos de los pnmeros.

La figura 4.7 describe los slmbolos de diagramación de flujo que se usan en este capltulo. Es
aconsejable que los aprenda, pues son muy comunes en la üteratura sobre programación que
consultará en el futuro. Como sucede con el diseño descendente, puede emplear los diagra-
mas de flujo para diagramar cualquier eyento, no sólo programas de computación. Hay mu-
chos libros de cuesüones prácticas no relacionados con la computación que se valen de estos
mismos símbolos. Un vistazo a cinco revistas y periódicos de programación mientras se escri-
bía la lección de esta hora, mosfró que había cuando menos un diagrama de flujo en cada
ejemplar.
Flaunn 4.7
Sólo tiene que
aprender los símbolos
Símbolo de proceso Símbolo de decisión
comunes de
diagramación de flujo
y sus significados.

Símbolo de entrada/salida: (E/S) Símbolo de terminal

U
Conector de pági na nueva Conector de flujo

Direcciones de flujo

Los símbolos de los diagramas de flujo no tienen nada que ver con los cua-
dros del diseño descendente. Recuerde que el diseño descendente fue !a he-
rramienta que utilizó para generar los detalles requeridos por e! programa.
Los diagramas de flujo proporcionan !a lógica para generar dichos detalles.

La tabla 4.1 describe estos símbolos y su empleo.

Tneln 4.1 SíMeoLos DE Los DTAGRAMAs DE FLUJo y sus usos


Símbolo Descripción
Proceso Contiene una descripción de 1o que se está haciendo. Utilice un símbolo de
proceso cuando esté sucediendo el procesamiento de datos, por ejemplo,
durante algún cálculo o la inicialización del programa.
Decisión Empléelo cuando el programa deba tomar una decisión con dos
salidas posibles, como imprimir en la pantalla o en la impresora,
dependiendo hacia dónde solicitó el usuario que se imprimiera.

L
El diseño del programa

Símbolo Descripción
Entradalsalida Sirve pana cualquier entrada o salida que realice el programa, como
preguntar algo al usuario o imprimir un reporte. (La forma inclinada
del símbolo de E/S le dará una pista de su significado; la diagonal en
E/S se inclina de igual manera.)
Terminal El símbolo terminal con la palabra Inicio o Comi€nzo dentro es eI
inicio de todo diagrama de flujo. Un símbolo terminal con la palabra
Fin o Tbrminación es el término de todo diagrama de flujo. Cuando
haga referencia posterior al diagrama de flujo, ro habrá duda de su
comienzo ni de su término.
Página nueva Debe ponerse un conector de otra página al final de cualquier diagra-
ma de flujo que continúe en otra página. Ponga el número de la si-
guiente página dentro del conector de otra página. Ponga un conector
de otra página al inicio de cada página que concluya el diagrama de
flujo de una página previa. Ponga el número de la página anterior
dentro del conector de otra págrna que inicie la nueva página del dia-
grama de flujo.

Conector de flujo Se emplea cuando algún flujo lógico del diagrama de flujo debe inte-
grffise con otra lógica ya existente. Por 1o común se ve alguna letra
dentro de los conectores de flujo. Un conecor de flujo coffespondien-
te (con la misma letra) indica el punto de reingreso en la lógica ya
existente.

Dirección del flujo Estas flechas conectan todos los símbolos del diagrama de flujo e
indican la dirección de flujo del programa.

Las reglas de los diagramas de flujo


Aún cuando cada programador dibuja sus diagramas de flujo de manera diferente, hay algu-
nas reglas generales con las que se debe familiarizar antes de proseguir. Estas reglas son casi
universales y, por lo tanto, es importante que las entienda para que los diagramas de flujo que
realice puedan ser leídos por oftos. Con cada regla, verá un ejemplo que la sigue y otro que la
rompe, para que pueda darse una idea de cómo valerse de ella.
. Regla # I: emplee símbolos estándar de diagramación de Jlujo. Si utiliza los símbolos
convencionales, otros podrán entender el significado de sus diagramas de flujo y usted
podrá entender los de ellos. La figura 4.8 muestra la manera correcta e incorrecta de se-
guir esta regla.
. Regla # 2: la lógica del diagrama de flujo generalmente debe fluir de arriba a abajo y
de izquierda a derecha de la página. Si sus diagramas de flujo no siguen este estríndar,
podrían ser difíciles de seguir debido a su desorganizaciún. La frgura 4.9 ilusra la di-
rección de flujo correcta de los diagramas de flujo. Observe que las flechas de direc-
ción de flujo apuntan en el sentido que sigue la lógica.
Hora 4
180

Frcunn 4.8
Use símbolos estándar


convencionales de
diagramación de flujo.

CJ Mal

Fraunn 4.9
La lógica del
diagrama de flujo debe
fluirde arciba a abajo
y de izquierda a
derecha.

Algunos diagramas de flujo no necesitan avalnzdr hacia la derecha, pues describen una
lógica de programación secuencial; sin embargo, la mayoría tiene alguna clase de flujo
hacia cualquiera de las dos direcciones recomendadas. Habrá ocasiones en que un dia-
grama de flujo correcto purezca romper la regla; muy pronto verá uno de estos casos.
Debido a las repeticiones en la lógica, el diagrama de flujo podría tener áreas que re-
gresen hacia aniba y hacia la izquierda para repetir secciones de la lógica, pero al final
deberá continuar en las direcciones recomendadas. La lógica general debe fluir de arri-
ba a abajo y de izquierda a derecha.
Regla # 3: el símbolo de decisión es el único símbolo que puede tener md"s de un punto
de salida, y siempre tiene dos. La mayor parte de los símbolos de los diagramas de flu-
jo tienen un solo punto de entrada y uno de salida. Las'flechas de di¡ección de flujo in-
dican los puntos de entrada y de salida. El símbolo de decisión siempre tiene dos
El diseño del programa 81
[

puntos de salida pues, en esa etapa de la lógica, sucede una de dos cosas, y el flujo
posterior de la lógica se determina segrin el resultado de esta decisión. La figura 4.10
ilustra esta regla.

Frcunn 4.10
Únicamente el símbolo
de decisión puede
tener más de un punto
de salida; tiene
exactamente dos.

. Regla # 4: un símbolo de decisión siempre debe preguntar algo cuya respuesta sea sí o
no. Una decisión siempre debe tener dos, y sólo dos salidas (de ahí las dos salidas indi-
cadas en la regla # 3). Usted verá la decisión en el símbolo mismo. En su mayoía, los
símbolos de los diagramas de flujo tienen palabras incluidas que describen lo que suce-
de en ese punto. La figura 4.1 1 ilustra esta regla.

Flcunn 4.11 I

I
I
Un símbolo de I

decisión siempre debe I


I

hacer una pregunta I

I
cuya respuesta sea I

I
sí o no. I
I

I
I

Etiquete también las salidas de los símbolos de decisión. Debido a que las salidas son
el resultado de una pregunta cuya respuesta es sí o no, etiquete dichas salidas como ,Sí
o § y No o iy', para saber lo que indican.
Hora 4
182

Tal yez se pregunte si es razonable esperar que todas las decisiones tengan únicamente
dos resultados posibles. Hay veces que el programa debe decidir entre más de un valor,
segrín los datos que reciba. Sin embargo, los símbolos de decisión múltiple le ayudarán
a manejar cualquier gama de posibilidades. Cuando era niño, tal vez jugó el juego de
las veinte preguntas, en el que alguien piensa en un objeto o persona y usted sólo puede
hacer pteguntas que se respondan con un sí o un no. Preguntando lo suficiente, es posi-
ble determinar cualquier cosa. El mismo principio aplica a las decisiones en un progra-
ma. En las lecciones sobre programación que comienzan en la Hora 8, verá cómo
dirigir los programas para que manejen más de dos posibilidades.
. Regla # 5: las instrucciones denffo de los símbolos deben contener descripciones cla-
ras en español, no argot de computación ni instrucciones en algún lenguaje de progra-
mación. El diagrama de flujo deberá desarrollarse antes de escribir el programa. No
debe incluir instrucciones de programación dentro de los símbolos de diagramas de flu-
jo. Si ya estuviese listo para el lenguaje de programación, no sería necesario que invir-
tiera su tiempo en la elaboración de un diagrama de flujo.
El diagrama de flujo es su propio desarrollo de la lógica. A la larga, lo convertirá en instruc-
ciones del lenguaje de programación, pero sólo después de asegurarse que el diagrama de flu-
jo llevaa cabo la lógica necesaria, no antes.

Ejemplo de un diagrama de flujo


Como en el caso del diseño descendente de los planes para la boda, serla rítil analizar la des-
cripción de un problema cotidiano en un diagrama de flujo, antes de abordar un diagrama de
flujo más hadicional para un programa de computación. Siempre recuerde que la lógica dicta
lo que hace la máquina, así que no puede omitir ningún detalle.
La figura 4.12 muesfta el diagrama de flujo para llamar a una amiga por el teléfono. Para que
el ejemplo sea razonable, el diagrama de flujo inc§e los aspectos importantes del problema,
aunque existen muchas otras maneras de realizarlo. Intente seguir el diagrama de flujo. Las
flechas de dirección le muesüan cómo hacerlo. Siga varias veces el diagrama de flujo, de
principio a fin, dadas las siguientes situaciones:

1. Suponga que su teléfono está muerto cuando hace la llamada.


2. Suponga que su amiga está en casa y contesta ol teléfono.
3. Suponga que el teléfono de su amiga estií ocupado.
4. Suponga que nadie está en casa de su amiga.
5. Suponga que su amiga no está en casa, pero contesta su compañera.

Observe que el üagrama de flujo no omite los detalles de una llamada telefónica real; tampo-
co supone demasiado. Para usted, llamar a una amiga podría significar sólo levantar el auricu-
lar y marcar pero, al diagramar los detalles, comenzará a ver cuiínto pasa por alto.
diseño programa

Flcunr 4.12 rN¡cro

Puede diagramar las


acciones que realiza al
llamar a una amiga
por teléfono.
Levantar
el auricular

Colgar el Esperar 10
teléfono minutos

Colgar el
teléfono

Preguntar por la amiga

¿Puede ver cómo los diagramas de flujo que detallan la lógica de un progra-

9 ma Ie ayudan a organizar y a selecc¡onar los detalles requeridos de progra-


mación? En la hora 3, "¿Qué es un programa?", aprendió la importancia de
dividir las metas de un programa en pasos detallados. El diagrama de flujo
le ayuda a hacer precisamente esto.
Hora 4
184

Observe también que los slmbolos de conector sirven para mantener ordenado el üagrama de
se repiten partes del diagrama de flujo. Por ejemplo, si el
flujo. Hay varios lugares en los que
teléfono de la amiga está ocupado, el círculo conector A envía el flujo de regreso al inicio del
diagrama. Podría parecer que una lógica repetitiva como ésta sube por el diagrama, rompien-
do la segunda regla de diagramación, pero no es asl, pues la lógica repetitiva tarde o temprano
continúa hacia abajo y a la derecha cuando la amiga contesta finalmente el teléfono.

Soluciones para una diagramación de flujo real


El pasar a un problema que usa una solución computarizada supone que usted tiene que dia-
gramar la lógica de muchos sistemas de nómina que manejan horas extras. Tiene que detallar
el procedimiento necesario para calcular la paga neta, dada la posibilidad de tiempo extra y
doble turno. Antes de entrar en el diagrama de flujo, descifre lo siguiente:

. Si un empleado trabaja 40 horas o menos, recibe una paga que se calcula multiplicando
la tarifa (por hora) por la cantidad de horas trabajadas.
. Si frabaja entre 40 y 50 horas, recibe una paga que se calcula multiplicando la tarifa
(por hora) por las 40 horas, más el tiempo extra (1.5 veces la tarifa normal) por aque-
llas horas entre 40 y 50.
. Si rabaja más de 50 horas, recibe el doble (2 veces la tarifa por hora), más 10 horas de
tiempo extra (ror aquellas horas entre 40 y 50) y 40 por la tarifa normal (por hora) por
las primeras 40 horas.

Aún cuando es posible que siga estos detalles, el diagrama de flujo ofrece una manera mucho
más fácil de representar la lógica involucrada. Observe el diagrama de flujo de la figura 4.13.
Tome cualquier cantidad de horas mabajadas y slgalas por el diagrama de flujo. Ésrc le man-
üene en la ruta del flujo de la lógica sin enfrar en detalles que no aptcan. El intentar escribir
un programa a partir de los tres puntos anteriores es mucho más diffcil que escribir un progra-
ma a partir del diagrama de flujo.

Pseudocódigo
A pesar del poder y facilidad de los diagramas de flujo, algunas compañlas prefieren
otro método para describir la lógica, conocido como pseudocódigo.El pseudocódi-
go, a veces llamado español estructurado, es un método para escribir lógica mediante oracio-
nes, en lugar de los diagramas requeridos para los diagramas de flujo.

El dibujo de los diagramas de flujo requiere de mucho üempo y papel. Aún cuando hay pro-
gramas de diagramas de flujo que le pueden ayudar a dibujar y colocar los símbolos, con fre-
cuencia son limitados y no ofrecen la flexibilidad necesaria para la lógica de programación.
Por lo tanto, es común recurrir al dibujo a mano de los diagramas. Si termina un diagrama y
se da cuenta que omitió dos símbolos críticos, tendrá que volver a dibujar una buena pafe de
éste. Debido a su naturaleza, se invierte mucho tiempo en dibujar los diagramas de flujo, y al-
gunas compañlas no quieren que sus programadores hagan esto cuando el pseudocódigo pue-
de cumplir las mismas funciones y es más eficiente en cuestión de tiempo.
diseño programa

heuna 4.13
I-a diagramación de
una rutina de nómina
le ayuda a determinar PAGA es igual
a TARIFA por
el orden lógico. horas o
cantidad de horas
menos?

TIEMPO EXTRA es
PAGA es igual igual a 1.5 por las
a TARIFA por 40 horas arr¡ba de 40
por Ia tarifa

PAGAR es igual
a TARIFA por 40

TIEMPO EXTRA
es igual a 1.5 por
las horas arriba de
40 por la tarifa

TIEMPO DOBLE es
igual a 2 por Ias horas
arr¡ba de 50 por TARIFA

La única herramienta que se requiere para el pseudocódigo es un procesador de texto. Los


procesadores de texto ofrecen las capacidades para insertar, mover y borrar texto. Debido a
que el pseudocódigo no requiere de dibujos, es más rápido y fácil de mantener que efectuar
diagramas de flujo a mano. Además, muchos programadores encuenffan miás sencillo conver-
tir la lógica del pseudocódigo al código de programación final.
Como sucede con los diagramas de flujo, no hay manera de enseñar las técnicas de pseudocó-
digo a menos que se haya estado programando,un tiempo. El término pseudo significafalso;
por consiguiente, pseudocódigo literalmente significa código falso. Entre más conozca de len-
guajes de programación, más se adaptaú al pseudocódigo, así que lea el siguiente ejemplo y
tÍate de entenderlo.

El pseudocódigo no contiene instrucciones en un lenguaje de programación, aunque tampoco


se üata de un español coloquial. Es un conjunto de palabras fgidas en español que permiten
describir la lógica que ve con frecuencia en los diagramas de flujo y en los lenguajes de pro-
gramación. Al igual que con los diagramas de flujo, podrá escribir pseudocódigo para cual-
quier cosa y no sólo para programas de computación. Muchos instructivos emplean alguna
forma de pseudocódigo que ilustra los pasos requeridos para ensamblar partes. El pseudocódi-
go ofrece una descripción rígida de una lógica que no permite las ambigüedades.
Hora 4
185

A continuación se presenta la lógica para el problema de nómina en un formato de pseudocó-


digo. Observe que puede leer el texto, sin embargo, no es un lenguaje de programación. Las
sangías le ayudan a darle seguimiento a las oraciones que vanjuntas. El pseudocódigo es le-
gible para cualquiera, inclusive para gente no familiarizada con los símbolos de los diagramas
de flujo:
Para cada empleado:
Si eI empleado trabajó de 0 a 40 horas entonces
Ia paga neta es Ígual a las horas trabajadas multiplicadas por Ia tarifa.
De otro modo,
si el empleado trabajó entre 40 y 50 horas entonces
Ia paga neta es igual a 40 multiplicado por la tarifa;
súmese a eso (horas trabajadas -40) por Ia tarifa pon 1.5.
De otro modo,
Ia paga neta es igual a 40 por Ia tarifa;
súmese a eso 10 por Ia tanifa por 1.5;
súmese a eso (horas tnabajadas -50) por el doble de Ia tarifa.
Deducir los impuestos de Ia paga neta.
Imprimir el cheque de Ia nómina.
Fin del problema.

Paso 3: escriba el programa


Tras la definición de la salida y la determinación de la lógica para obtenerla, deberá ir a la
computadora y generar el código (las instrucciones en el lenguaje de programación) necesario
para llevar todo esto a cabo. Esto significa que primero tendrá que aprender un lenguaje de
programación. Como se mencionó antes, existen muchos lenguajes de programación y la co-
dificación de programas no es tarea fácil para los novatos, pero pronto estará escribiéndolos
con habilidad y conocimiento.

La codificación de los programas es lo más difícil de aprender. Sin embargo, tras aprender a
programar, el proceso de programación lleva menos tiempo que el diseño si éste está corÍecto
y completo. Larafixaleza de la programación requiere que aprenda algunas habilidades
nuevas. Las siguientes lecciones describen el proceso de programación y le proporcionan las
bases de muchos de los lenguajes más populares en la actualidad.

Resumen
Un constructor no construye una casa antes de diseña¡la; los programadores no deben escribir
sus programas sin antes diseñarlos. Muy a menudo, los programadores corren al teclado sin
pensar bien en la lógica. Un programa mal diseñado da como resultado muchas fallas y dema-
siado mantenimiento. Esta lección describió cómo asegurar que el diseño de su programa va-
ya de acuerdo con el diseño que desea el usuario. Tras completar la definición de la salida,
puede organizar la lógica del programa meüante un diseño descendente, diagramas de flujo y
pseudocódigo.

La siguiente hora comienza una nueva sección de este tutorial que le da una inffoducción de
Ios fundamentos de la programación.
El diseño del programa 87
I

Preguntas y respuestas
P ¿En qué punto del diseño descendente debo comenzar a añadir los detalles?
R Posponga los detalles mientras sea posible. Si está diseñando un programa que produci-
rá reportes de ventas, no deberá añadi¡ la impresión del reporte final hasta haber com-
pletado las demás actividades del diseño del reporte. Los detalles caen solos cuando ya
no se puede dividir una actiüdad en otras.
Una vez que el diseño descendente ha llegado hasta los detalles de menor nivel,
¿no cuento también con los detalles del pseudocódigo?
El diseño descendente es una herramienta que determina los detalles que necesitará el
programa. Sin embargo, no pone esos detalles en el orden lógico de ejecución. El pseu-
docódigo indica la lógica de ejecución del programa y determina el momento en que
suceden las cosas, su orden y curíndo dejan de ocurrir. El diseño descendente simple-
mente determina todo lo que puede ocurrir en el programa.

Taller
Las preguntas del cuestionario se presentan para una mayor comprensión. Vea las respuestas
en el apéndice A.

Cuestionario
1. ¿Por qué la elaboración de un diseño correcto tarda más que la codificación del pro-
grama?
2. ¿Dónde comienza el prograrnador a determinar los requerimientos del usuario?
3. Verdadero o falso: el diseño descendente correcto le obliga a posponer los detalles
mientras sea posible.
4. ¿Cuál es la diferencia entre el diseño descendente y el pseudocódigo?
5. ¿Por qué no siempre se pueden emplear con los usuarios las herramientas de diseño
visual?
6. ¿Cuántos valores puede produci¡ el símbolo de decisión de un diagrama de flujo?
t. ¿Qué clase de pregunta debe incluir un símbolo de decisión?
8. Verdadero o falso: usted puede valerse de los diagramas de flujo para dibujar tanto lógi-
ca de programación como procedimientos reales.

9. ¿Qué diferencia existe entre el pseudocódigo y los diagramas de flujo?


10. ¿Curfl es el último paso del proceso de programación (antes de probar el resultado final)?
nBt

HoRA 5
El proceso de
programaci ón y las
técn icas estructu radas
Ahora está familiarizado con los pasos a seguir antes de programar. En la lec-
ción de esta hora, iniciará el proceso de la programación y aprenderá sobre len-
guajes específicos y a escribir sus propios programas. Hasta ahoraya conoce los
dos pasos que deben preceder siempte a la codificación del programa: la defini-
ción de Ia salida y el desarrollo de la lógica. Tras desa:rollar la lógica, puede es-
cribir el programa en cualquiera de los muchos lenguajes disponibles de
programación.
Para finalizar el proceso de programación, primero debe escribir, probar y distri-
buir el programa. Claro está, estos tres pasos suponen que usted conoce un
lenguaje de programación. El resto de esta obra completa el proceso de progra-
mación que inició con el diseño de la salida del programa y el desarrollo de
la lógica.
Los temas relevantes de esta hora son:
o Qué se requiere para escribir programas
. Qué es un editor
Hora 5
le0

a Cuál es la diferencia entre un editor de línea y un editor de pantalla completa


a Por qué es tan importante la programación estructurada
o Cuáles son los tres constructores en la programación estructurada
a Cuáles son los pasos necesarios para probar un programa
o Cuál es la diferencia entre pruebas de escritorio y pruebas beta
a Por qué son tan importantes las pruebas en paralelo.

Editores
Editor es la herramienta que emplea para codificar los programas en la computadora.
Un editor es como un procesador de texto en el sentido de que le permite escribi¡,
editar, mover y copiar líneas de código, así como guardarlas en el disco. Por esta razón, los
eütores con frecuencia se conocen como editores de texto. Sin embargo, un editor, a diferen-
cia de un procesador de texto, no lleva a cabo ajuste de líneas. Cuando en un procesador
de texto se llega al final de una línea, el cursor y la porción de la palabra al final de la línea
avanzan a la siguiente. El ajuste de líneas sería perjudicial para los programas de compu-
tación.

Recuerde que los lenguajes de programación deben ser concisos. Las instrucciones de progra-
mación no pueden ejecutarse juntas, como un texto impreso. En algunos lenguajes de pro-
gramación puede poner varias instrucciones en una misma línea, pero esta práctica no se
' recomienda pues complica la lectura del programa. Entre más difícil sea leer un progr¿rma,
más complicado será su mantenimiento y actualización.

Los editores se clasifican en dos categorías: editores de línea y editores de pantalla com-
pleta. Los describimos en las siguientes dos secciones.

Los programadores a veces son fanáticos de sus editores y piensan que el


suyo es e! único que se debe cons¡derar para una programación seria.
Generalmente, cualquier editor con el que usted se s¡enta cómodo es el ade-
cuado. Familiarícese con ambos tipos de editores, pues cada uno tiene ven-
tajas sobre el otro en c¡ertas s¡tuaciones.

Editores en línea
Muchos programadores piensan que los editores de línea son una reliquia, útiles únicamen-
te en aquellas viejas terminales de teletipo consideradas tecnología de punta en 1965. Sin
embargo, otros opinan sentirse más productivos con un editor de llnea que con cualquiera
de otro tipo.
El proceso de programación y las técnicas estructuradas

Con un editor de lÍnea puede insertar y editar texto de programas. La diferencia enffe un editor
de línea y uno de pantalla completa es que el primero le da la posibilidad de trabajar sólo con
una línea alavez. Los editores de línea no le permiten usar las teclas de movimiento del cur-
sor (las teclas flecha arriba, flecha abajo, flecha izquierda y flecha derecha) para moverse por
la pantalla, cambiando varias líneas una tras offa, como es el caso de los editores de pantalla
completa. En cambio, debe indicar al editor específ,camente la línea que se desea cambiar. Só-
lo se puede modificar esa línea. Por lo que debe indicar la lÍnea siguiente que desea editar.

El editor de línea más popular en la actualidad sigue siendo vi (por visual) basado en UNIX.
vi está disponible para microcomputadoras y lo utilizan muchos programadores de UNIX que
han cambiado al ambiente de las microcomputadoras.

Editores de pantalla completa


El tedio de los editores de línea provoca que muchos programadores carnbien a un editor de
pantalla completa y se queden ahí. Muchos de los editores actuales de pantalla completa
cuentan con menús desplegables y capacidades de ratón. Si ha usado un procesador de texto,
es probable que no necesite aprender comandos de eüción de un editor de pantalla completa.
Siempre y cuando pueda utilizar los menús y encontrar la tecla de Ayuda, realizará casi
cualquier cosa con un archivo de programa.

La figura 5.1 muestra cómo se inserta el programa QBasic. Muchos lenguajes de programa-
ción acfuales vienen con sus propios editores de pantalla completa. Debido a que QBasic vie-
ne con todos los sistemas operativos desde el lanzamiento de la versión 5.0 de MS-DOS,
podrá escribir progmmas en QBasic si cuenta con una PC.

Aprenderá todo acerca del editor QBasic cuando comience a escribir sus pro-
gramas en QBasic, que inicia en Ia Hora g "Entrada y 5alida".
Hora 5
le2

FrcunR 5.1
QBasic emplea un
editor de pantalla
completa.

En la figura 5.1 puede ver muchos elementos comunes en la mayoía de los editores de panta-
lla completa. La gran ventana de edición en el cenffo de la pantalla es donde inserta y hace
ediciones en el programa. En la parte superior de la pantalla hay una barra de menú. A dife-
rencia de un editor de línea, como el viejo Edlin que venía con MS-DOS, no es necesario
que memorice una serie de comandos para utilizar el editor de pantalla completa; basta con que
haga selecciones en los menús.

La mayor parte del tiempo dent¡o de un editor, estará escribiendo y cambiando el texto de al-
gún programa. Con los editores de pantalla completa, puede utilizar las teclas de flechas para
mover el cursor en la pantalla, insertando y borrando texto como en un procesador de texto.
Si desea hacer algo miás que teclear y cambiar caracteres y palabras, puede recurrir al menú
que tiene comandos para guardar de y cargar los programas a disco, buscar y reemplazar tex-
to, y mover y copiar bloques de texto Qtn bloque es r¡no o más caracteres).

Casi todos los editores de pantalla completa de hoy ofrecen menús desplegables.
La figura 5.2 muestra el menú desplegable Archivo (File). Cuando selecciona Ar-
chivo [mediante el ratón o pulsando Alt+A (F)], QBasic abre una lista de las opciones del
menú Archivo (a veces llamado submenú, pues es un menú producido desde el menú princi-
pal). De un menú desplegable puede seleccionar cualquiera de sus opciones (moviendo la
línea resaltada con las flechas de cursor o seleccionándola con el ratón) o eliminarlo pul-
sando la tecla Esc.

Una de las mayores ventajas de integrar editores de programas con intérpretes y compiladores
es su facilidad de uso. Antes de la integración (cuando los editores de línea erar.los únicos
disponibles) había que iniciar el editor, insert¿¡ el programa, guardar el archivo, salir del edi-
tor, compilar el programa recién codificado (lo que significaba aprender otro conjunto de co-
mandos) y, si éste tenía errores, había que regresar al editor y conegirlos.
El proceso de programación y las técnicas estructuradas e3 I

Flcuna 5.2
La mayor parte de los
editores de pantalla
completa vienen con
útiles menús
desplegables.

Con un editor y lenguaje de programación integrados, como el que utilizará con QBasic, pue-
de emplear el mismo conjunto de comandos de menú y un ambiente común para insertar el
programa, interpretarlo (o compilarlo) y ejecutarlo, todo desde el mismo lugar. Esta simplici-
dad signiñca que los novatos pueden concentrarse más en el contenido del programa y menos
en los comandos necesarios para lograr que el programa trabaje. Tras insertar el programa,
mediante los menús puede traducir el programa al lenguaje de la máquina y ejecutarlo sin
dejar el ambiente de pantalla complet¿. También puede ver la salida del programa y regresar de
inmediato presionando una tecla al programa que generó esta salida. (Puede conmutar entre
salida y programa tantas veces como quiera.) Si la salida tiene errores, resulta sencillo encon-
trarlos y moüficar el código fuente.

Algunos de los editores de pantalla completa integrados y lenguajes de programación más po-
derosos son Visual Basic y Visual C++ de Microsoft, así como otros compiladores similares
de otras compañlas. Estos editores de pantalla completa ofrecen la dotación normal de pode-
rosas opciones de menú de edición y de compilación, además de herramientas avanzadas
de programación como depuradores y perfiladores.

Con un depurador, puede ejecutar un programa lÍnea por línea, inspeccionando sus
diferentes partes mientras se ejecutan. En lugar de tratar de determinar lo que falló a
la velocidad del rayo con la que normalmente se ejecutan los programas, puede examinar la
salida a su propio paso.Un perfilador es un programa que supervisa la ejecución del progra-
ma, buscando el cóügo lento que podría optimizarse prira aumentar su velocidad o tamaño.
Muchos de los compiladores actuales son compiladores optimizadores que tratan de convertir
el código fuente en el código de máquina más r,ápido posible, pero siempre queda lugar para
mejoras. En promedio, 570 dewprogftrma ocupa95Vo del tiempo de ejecución. El perfilador
le puede ayudar a mejorar la velocidad y eficiencia de su programa.

Si está escribiendo programas para el ambiente Windows, como la mayorla de los programa-
dores hoy día, es útil llevar a cabo la escritura, prueba y depuración del programa dentro de
PI Hora 5

un mismo ambiente de programación de Windows, como Visual Basic. La figura 5.3 muestra
la pantalla de Visual Basic con su editor de pantalla completa en la ventana central. La panta-
lla se ve cargada, lo cual es cierto, pero (como aprenderá durante la hora 14, "Programación
con Visual Basic"), Visual Basic no es tan complejo como parece a primora vista.

Frcunn 5.3
El ambiente de
programación Visual
Basic para Windows rtol (Fig22-:
'mularios
incluye un editon h

Prog ramac¡ón estructu rada


A finales de la década de los 60, los departamentos de programación comenzaron a inundarse
de proyectos de programación retrasados que se elaboraban a gran velocidad. Había más gen-
te escribiendo más programas que nunca, pero había que contratar a muchos programadores
para dar mantenimiento a los programas escritos antes.

Aprenda a escribir programas legibles y de fácil mantenimiento. Mediante

9 un método cuidadoso (en lugar del de "armar un programa como sea" de


algunos programadores), podrá asegurar su futuro como programador. Las
empresas ahorran d¡nero cuando sus programadores escr¡ben un código de
fácil mantenimiento.

Una vez terminado el programa, el asunto concluye de manera temporal. Las suposiciones del
programa sobre el trabajo que lleva a cabo cambiarán con el tiempo. Las empresas nuhca per-
manecen esüáticas en esta economía global. Los gerentes de procesamiento de datos comenza-
El proceso de programación y las técnicas estructuradas

ron a reconocer que los retrasos en el mantenimiento de programas comenzaban a afectar al


desarrollo. Se retiró a muchos programadores de los proyectos nuevos para actualizar proyec-
tos anteriores. El mantenimiento tardaba demasiado tiempo.

Durante la crisis de mantenimiento de la década de los 60, la gente de procesamiento de


datos comenzó a buscar nuevas maneras de programación. No estaban interesados en nuevos
lenguajes, sino en ofros modos de escribir programas que les permitiesen trabajar mejor y
más rápido y, lo más importante, que fueran legibles, para que otros pudiesen darles manteni-
miento sin grandes problemas. Durante ese tiempo se desarollaron las técnicas de programa-
ción estructurada.

La programación estructurada es una filosofía que indica que los programas deben escribirse
de modo ordenado, sin saltar de lado a lado. Si se escribe un progftrma para que su lecfura sea
fácil, es más sencillo modificarlo. La gente ha sabido durante años que un estilo de escritura
claro es importante pero, para las personas de computación, esto se volvió evidente casi vein-
te años después de haber utilizado técnicas no estructuradas.

Existen desacuerdos sobre cuándo es el momento adecuado para introducir a los programado-
res novatos en las técnicas de la programacién estructurada. Algunos piensan que los progra-
madores deben capacitarse en programación estructurada desde los inicios. Otos, quo los
novatos deben aprender a programar de cualquier modo que se pueda realizar el trabajo, y
luego adaptarlos a la programación estructurada.

Hasta ahora ya comprende los diagramas de flujo y el pseudocódigo, por lo que puede ver de
qué trata la programación estructurada con estas herramientas. Más tarde, en la segunda mitad
de la obra, cuando aprenda un lenguaje de programación, estará pensando en el modo de pro-
gramación estructurada y caerá de manera natural dentro de un patrón de programación es-
tructurada desde el principio.

Un programa bien escrito y fácil de leer no necesariamente está estructurado. La programa-


ción estructurada es un método de programación específico que por lo regular produce pro-
gramas bien escritos y fáciles de leer. Nada puede compensar que un programador se apresure
a concluir un programa de la manera que considere más rápida. Escuchará con frecuencia
"después 1o estructuraré, pero por ahora lo dejaré como estií". El después nunca llega. La gen-
te emple4 el programa hasta que un día, al momento de hacer cambios, éstos tardan tanto o
más de lo que llevaría desechar el programa y comenzar de cero.

La programación estructurada incluye los siguientes tres constructores :

. Secuencia
. Decisión (también llamado selección)
. Ciclo (también llamado repetición o iteración)

Un constructor (que viene de la palabra construcción) es un bloque de construcción


de un lenguaje y una de las operaciones fundamentales de éste. Siempre y cuando un
lenguaje de programación maneje estos tres constructores (cosa que sucede con la mayoría de
r95
Hora 5

ellos), podrá escribi¡ programas estructurados. l,o confrario a un programa estructurado es lo


que se conoce como código espagueti. Como el espagueti, que fluye y da vueltas por todo el
plato, un programa no estructurado (lleno de código espagueti) se derrama por todas partes con
un mínimo o nada de estructura. Un programa no esüucturado conüene muchas bifurcaciones.
Una bifurcación sucede cuando el programa va de un lado a otro sin un orden. La primera üsta
de indicaciones para llegar a la tienda tuvo una bifurcación en su primera instrucción.

Los tres constructores de la programación estructurada no son sólo para programas. Descubri-
rá que le pueden servir para los diagramas de flujo, el pseudocódigo y cualquier otro conjunto
de instrucciones que escriba para otros. Los tres consffuctores de la programación estructura-
da aseguran que un programa no se bifurque sin ton ni son, y que cualquier ejecución esté
controlada y sea fácil de seguir.

Las tres secciones siguientes describen cada uno de los constructores de la programación es-
tructurada. lÉalas con cuidado y verá que el concepto de programación estructurada es fácil
de entender. El aprendizaje sobre estructuras antes de conocer un lenguaje le ayudará a pen-
sar de manera estructurada mienfras desarrolla sus habilidades de programación.

Secuencia
La secuencia no es otra cosa que dos o más instrucciones, una tras otra. Las instruc-
ciones de secuencia son las más fáciles de los tres constructores de la programación
estructurada, ya que puede seguir el programa desde la primera hasta la última instrucción
dentro de la secuencia. La figura 5.4 muestra un diagrama de flujo que ilustra la secuencia.

El siguiente es un pseudocódigo que corresponde a la secuencia del diagrama de flujo:


obtener las horas trabajadas.
Multiplicar las horas por Ia tarifa.
Restar los impuestos para calcular Ia paga neta.
Imprimir eI cheque.
Debido a que las computadoras deben tener la capacidad de tomar decisiones y llevar a cabo ta-
reas repetitivas, no todos sus programas pueden consisti¡ en una lógica secuencial. Sin embargo,
cuando es posible llevarla a cabo, da como resultado una lógica de programación directa.
El proceso de programación y las técnicas estructuradas

Flcunn 5.4
El constructor de
secuencia de la
programación
Multiplicar Ias
estructurada ejecuta el horas por la tarifa
programa en un orden.
Paga neta
es igual a
paga-impuestos

Decisión (Selección)
Ya ha visto antes el constructor de decisión. El símbolo de decisión en un diagrama
de flujo es el punto donde se toma una decisión. Cadavez que un programa tome
una decisión, debe optar por una de dos di¡ecciones. Obviamente, una decisión es una desvia-
ción del flujo secuencial del programa, pero es una desviación controlada.

Por su naturaleza,urta bifurcación se debe hacer basada en el resultado de una decisión (en
efecto, es necesario saltar el código que no se ejecutará). Sin embargo, una decisión, a dife-
rencia de una bifurcación, asegura que no es necesario preocuparse por eI código que no se
ejecuta. No tendrá que regresÍu a la parte del programa omitida por la decisión. (Tomando co-
mo base información nueva, el programa podría repetir una decisión y tomar una ruta distinta
la segunda vez pero, nuevamente, siempre se puede suponer que el código de decisión que no
¡
se ejecutó en el momento no es importante para el ciclo actual.) I
I
,
!

La figura 5.5 muestra un diagrama de flujo que contiene parte de la lógica de programación
a
I
I

t
de las calificaciones de un maesfro. I
!

I
I

I
I

F¡cunn 5.5
El constructor de
decisión de la AoBel
programación
estructurada ofrece
una de dos alternativas.

Dar al
estudiante
más tarea
I
98 Hora 5

El siguiente es el pseudocódigo de la decisión que se muestra en el diagrama de flujo:


Si eI estudiante obtiene una A o una B,
dar aI estudiante un certificado de buen desempeño.
De otra manera:
programar una junta entre padres y maestro;
dar aI estudiante más tarea.

Ciclos (repetición o iteración)


Tal vez la ta¡ea más importante de las computadoras son los ciclos (térmno que sig-
nifica repetición o iteración a ffavés de las líneas del cédigo del programa).
Las computadoras repiten las secciones de un programa millones de veces sin aburrirse. Las
computadoras son las compañeras perfectas de los trabajadores que tienen que procesar
muchos datos, pues ellas pueden procesar los datos, repitiendo los cálculos comunes requeri-
dos y la persona puede analizar los resultados.

Los ciclos son comunes en casi todos los programas, Pocas veces se escribe un progra¡na que
consista en una secuencia directa de instrucciones. El tiempo que lleva diseñar y escribir un
programa no siempre vale la pena cuando esüá involucrada una serie directa de tareas. Los pro-
gramas son más poderosos cuando pueden repetir una serie de instrucciones o decisiones
secuenciales.

La figura 5.6 mr¡estra un diagrama de flujo que repite una sección dentro de un ciclo. Los ci-
clos rompen sólo temporalmente la regla que dice que los diagramas de flujo deben fluir
hacia abajo y a la derecha. Los ciclos dentro de un diagrama de flujo son correctos, pues tarde
o temprano la lógica terminará el ciclo.

Tenga cuidado con el temido ciclo infinito. Un ciclo infinito es un ciclo que
nunca termina. S¡ su computadora entra en un ciclo infinito, cont¡nuará con
los ciclos s¡n terminar nunca; en estas c¡rcunstancias, a veces es difícil recupe-
rar el control de! programa sin reiniciar la máquina. Los ciclos siemprg deben
tener al inicio una instrucción de decisión, para que en algún momento ésta
dispare el f¡n del ciclo y pueda continuar el programa.

El siguiente es el pseudocódigo de un diagrama de flujo:


Si hay más clientes,
hacer Io siguientei
calcular eI balance del siguiente cliente;
imprimir una factuna.
De otro modo,
imprimir el informe del balance total.
Como verá, en algún momento no habrá cüentes, el ciclo (que comienza con hacer) termina-
rá y podrá ejecutarse el resto de la lógica.
El proceso de programación y las técnicas estructuradas

F¡cunn 5.6
El constructor de ciclo
de la programación
estructurada repite
partes del programa. lmprimir el informe
del balance total

lmprimir una
factura

Ninguno de estos constructores de la programación estructurada serán nuevos para usted,


pues los vio en la hora 4, "El diseño del programa". Mientras tenga presente estos fres cons-
tructores durante la elaboración de diagramas de flujo, pseudocódigo y el programa en sí, y
mientras resista la tentación de bifurcarse por todas partes, escribirá programas bien estructu-
rados y fáciles de mantener, además de asegurar su posición como programador por muchos
años.

Pruebas del programa


Una vez que ha terminado de escribir el código del programa, aún queda algo por hacer. De-
berá dedicarse a su depuración. Querrá eliminar tantas fallas del programa como sea posible.
Por razones obvias, no desea que el usuario se encargue de ello. Lo que menos quiere es que
él descubra errores por todas partes. Por tanto, debe probar el programa con sumo cuidado.

Los siguientes son los pasos de prueba que deben seguir los programadores antes de disfibuir
a los usuarios una versión terminada de un programa.

1. Llevar a cabo pruebas de escritorio.


2. Efecfilar pruebas beta.
3. Comparar los resultados de las pruebas beta contra los resultados en paralelo del sis-
tema anterior.

La mayoría de los programadores efectúa una serie de pruebas de escritorio sobre


sus programas. Las pruebas de escritorio son el proceso de sentarse frente a una
computadora y probar el programa aplicando la mayor cantidad de situaciones de datos posi-
ble, a fin de enconüar puntos débiles y erores en el código. Durante las pruebas de escritorio,
los programadores deben probar valores extremos, insefar información errónea y, en general,
I
100 Hora 5

hacer todo lo posible por que el programa falle. Tiambién deben probar todas las opciones dis-
ponibles en el programa, usando distintas combinaciones para ver lo que sucede en cualqüer
situación.

Ya completadas las pruebas de datos y teniendo toda la confianza de que el progra-


ma está correcto, los programadores deben reunir a un grupo de usuarios para que lo
prueben. En la industria, esto se conoce como etapa de pruebas beta.Entre más probadores
beta (los usuarios que probarán el programa) se tenga para probar el programa, será mayor la
posibilidad de enconüar errores. Los usuarios con frecuencia intentan cosas que el programa-
dor nunca pensó al escribir el programa.

El usuario nunca debe abandonar un sistema viejo y pasar de inmediato al programa


nuevo. Es necesario llevar a cabo pruebas en paralelo. Por ejemplo, si escribe un
programa de nómina que sustituirá al sistema de nómina manual de una lavandería, ésta no
deberá usar sólo el programa nuevo. Continuará también con su nómina manual al mismo
tiempo. Aunque esto significa que la nómina tardará un poco más, permitirá comparar los re-
sultados de ambos sistemas y ver si concuerdan.

Sólo hasta que hayan transcurrido varios periodos de paga con pruebas en paralelo que con-
cuerden, el usuario podrá sentirse con la confianza suficiente para utilizar el programa sin su
respaldo manual.

Durante este periodo de pruebas, los programadores tendrán que realizar varios cambios al
programa. Si estií consciente que esto sucederá, no se sentirá defraudado ni perderá su con-
fianza como programador. Es muy poco común que un programador escriba un programa
correcto desde un principio. Lo normal es que las cosas queden correctas ftas varios intentos.
Las pruebas exhaustivas que se describen en esta sección no aseguran la perfección del pro-
EI proceso de programación y las técnicas estructuradas 101
I

grama. Es probable que algunos problemas su{an sólo tras un periodo de uso. Entre más
pruebas lleve a cabo, menos posibilidades hay de que surjan errores posteriores.

Aprendizaje del lengua¡e de programación


Hasta ahora se ha omitido de este libro un paso importante: el paso del aprendizaje del len-
guaje mismo. El resto de esta obra está dedicado a describir los distintos lenguajes de progra-
mación disponibles. Practicará con un lenguaje de introducción llamado QBasic y aprenderá
acerca de otros lenguajes.

La mayorfa de los libros de programación entran directamente en materia y comienzan a en-


señar un lenguaje desde el primer capftulo. No hay nada malo en este método, pero en alguna
parte del camino tendrá que aprender a diseñar programas. Esa es la finalidad de este libro.
Hasta este momento, ya tiene una buena idea de los fundamentos de la programación y en-
tiende más acerca de lo que hacen los programadores profesionales en sus ambientes de pro-
gramación.

Ahora es tiempo de adentrarse en el mundo de los lenguajes de programación y ver a lo que


se enfrentaní durante el aprendizaje de éstos..

Resumen
El proceso de programación requiere de algo más que sentarse ante un teclado. Es importante
un diseño adecuado, así como las técnicas de programación estructurada y pruebas apropia-
das. Un editor es una herramienta mediante la cual inserta programas en la computadora, de
igual manera que usa un procesador de texto para crear documentos. Con el editor, puede in-
sertar, cambiar, borrar, mover, copiar y guardar (en disco) texto del programa. Aunque existen
dos tipos de editores, el de pantalla completa es más común hoy en dla que el de línea. La
mayoría de los lenguajes de programación actuales viene con su propio editor integrado en el
ambiente de programación.

Usted y otros pueden dar mantenimiento a un progama bien escrito. Debido al mundo cam-
biante y a la alta tasa de mantenimiento de los programas, es importante que aprenda las téc-
nicas de programación estructurada que ayudan a dejar claros sus progrÍ¡rnas. Los tres
constructores de programación estructurada que ya conoce son: secuencia, decisión y ciclo.

La siguiente hora describe los primeros lenguajes de programación, a fin de que comprenda
cómo evolucionaron los lenguajes actuales.
102 Hora 5
I

Preguntas y respuestas
P ¿Qué tanta pruebas son necesarias?
R Nunca se pueden hacer demasiadas pruebas, pero los recursos y los requerimientos del
usuario para el programa son decisivos para determinar el momento de detenerlas. Si
sabe que hay errores en el programa, debe eliminarlos; por tanto, las pruebas le ayudan
a asegurar que ha conegido todos los errores posibles.

P ¿Qué herramientas existen para ayudarrne a probar mis prcgramas?


R La mayoría de los depuradores integrados actuales son muy eficientes como ayuda para
localizar y eüminar errores en los programas. La lección de la hora 22 "Herramientas
de depuración", analiza la manera de localizar problemas, examinar valores y probar
programas a través de un depurador.

Taller
Las preguntas del cuestionario se presentan para una mayor comprensión. Vea las respuestas
en el apéndice A.

Cuestionario
l. ¿Por qué no debe editar progrrrmas con un procesador de texto?
2. ¿Cuáles son los dos tipos de editores?
3. ¿Qué editor es el más popular hoy dla?
4. ¿Qué caracterfstica de los editores de PC actuales eliminó la necesidad de memorizar
comandos?
5. ¿Qué es un depurador?
6. ¿Qué es un perfilador?
7. ¿QuC es lo opuesto a un código espagueti?
8. ¿Cuáles son los tres constructores de los lenguajes de programación estructurados?
9. ¿Por qué puede ser malo un exceso de ramificaciones?
10. ¿Cuál es la diferencia enfte las pruebas en paralelo y pruebas beta?
@
%=
*'"*'Xi,qi'¡¡¡'¡'''

HoRA

Lenguafes de
I,

programacton:
los pr¡meros años
Con la lección de esta hora, podrá formar parte de las selectas filas de la gente
del mañana al desarrollar y comprender los lenguajes de programación. Esta lec-
ción se enfoca en los primeros lenguajes de programación, muchos de los cuales
aún siguen en uso. Aprenderá cómo iniciaron los lenguajes de programación y
su evolución con el paso de los años.

Para entender el funcionamiento de los lenguajes de programación, primero debe


aprender de qué manera se almacenan los progr¿Lmas y datos en el nivel más ele-
mental de las computadoras. Este capítulo Ie enseña un poco de la representación
binaria (con la cual puede impresionar a sus amigos en la siguiente fiesta que asis-
ta). Tras ver cómo las computadoras hacen las cosas al nivel más simple, pasará al
aprendizaje de algunos de los muchos lenguajes de programación de alto nivel.

Los puntos relevantes de esta hora son:


. Cuál es el significado de bit
. Cuiántos bits hay en un byte
104 Hora 6
I

Para qué sirve la tabla ASCtr


Cómo efechía cálculos matemáticos una computadora

Qué tipos de programas son los más adecuados para el lenguaje FORTRAN
Por qué COBOL, uno de los primeros lenguajes, se sigue usando en la actualidad
Por qué una compaftía podría seleccionar FORTRAN en lugar de COBOL, o viceversa
Cómo falló PI.l
Cuándo se usa APL
Por qué alguien querría aprender ADA.

Almacenamiento de programas y datos


Mientras teclea en su editor de programas, ¿qué piensa que sucede al pulsar las teclas? ¿Entra
la letra A en la memoria de la computadora cuando se pulsa la tecla correspondiente a la A?
Debe ser así, o la computadora no podría recordar nunca el contenido del programa. La
computadora efectivamente almacena la A, pero no en el formato que podría imaginar. Única-
mente almacena una representación de la letra A. Para fines prácticos, la A estii en la memo-
ria, pero no se parece a lo que usted pensaría.

La memoria de la computadora esüí compuesta de muchos caracteres de almacenamiento. Co-


mo aprendió durante la hora 2, "El hardware de las computadoras al descubierto", cuando
compra una computadora con 32MB de memoria, adquiere una máquina que tiene 32 millo-
nes de caracteres de almacenamiento, aproximadamente. Aunque esta cifra está ligeramente
redondeada, debido al modo en que se mide la memoria de la computadora, usted puede al-
macenar aproximadamente 32 millones de ca¡acteres. Piense en un casete de audio; una cinta
de 60 minutos no puede contener 90 minutos de música, sin importar cuanto lo intente.

Recuerde que su computadora no es otra cosa, en su nivel elemental, que miles de intemrpto-
res que se encienden y se apagan, permitiendo e intemrmpiendo el flujo eléctrico. Cada carác-
ter de su computadora está representado por una combinación de intemrptores de encendido y
apagado. Los programadores por lo general se refieren a un intemrptor de encendido como 1,
y a uno de apagado como 0. Debido a que estos intemrptores sólo tienen dos valores, los pro-
gramadores llaman a los ceros y vnos dígitos binarios, o bits. Hay un total de ocho bits por
cada carácter en la computadora; ocho bits se conocen como un byte. Por tanto, cada canícter
de almacenamiento ocupa ocho bits (ocho intemrptores de encendido y apagado) pÍua repre-
sentar un carácte4 luego, un carácter es un byte.

La razón de que se necesiten ocho interruptores para representar un carác-


ter es que, si fueran menos, no se tendrían suficientes combinaciones de es-
tados de encendido y apagado para representar todos los caracteres
(mayúsculas, minúsculas, dígitos y caracteres especiales, como o/o, n y *).
Lenguajes de programación: los pr¡meros años 105

La tabla ASCII
Hace años, alguien escribió las diferentes combinaciones de ocho ceros y unos, del
00000000 al 11111111, y asignó a cada una un carácter diferente. La tabla de carac-
teres fue estandarizada y hoy día se le conoce como tabla ASCILLa table 6.1 muestra un lis-
tado parcial de la tabla ASCtr. ASCII son las siglas en inglés de Código estdndar americano
para el intercambio de información. Algunas tablas ASCtr sólo emplean los últimos siete bits
y omiten el bit de la izquierda (se les conoce como tablas ASCII de 7 bits). Las tablas ASCII
de 7 bits no pueden representar tantos caracteres como las tablas ASCII de 8 bits.

Teeln 6.f Etruplo DE vALoRES ASCII


Carácter Código ASCtt Equivalente en decimal
Espacio 00100000 32
0 001 10000 48
1 00110001 49
2 00110010 50
3 00110011 51

9 00111001 57
? 00111111 63
A 01000001 65

B 01000010 66
C 01000011 61
a 01100001 97
b 01100010 98

Cada valor ASCII üene asociado un número decimal correspondiente. Estos valores se mues-
tran a la derecha de los valores de ocho bits de la tabla 6.1. Por tanto, aún cuando la compu-
tadora representaelcarácter ? como 00111111 (dos intemrptores de apagado y seis de
encendido) puede referirse, en programación, a dicho valor ASCtr como 63 y su computadora
sabrá que se ffata de 00111111. Una de las ventajas de los lenguajes complejos de programa-
ción es que con frecuencia le permiten emplear valores decimales, más sencillos de entender
para la gente, y el lenguaje los convierte en valores binarios de 8 bits de la computadora.

Como puede ver en los valores ASCII de la tabla 6.1, todos los caracteres en

9 la computadora incluyendo letras mayúsculas y minúsculas e incluso el espa-


cio, tienen su prop¡o valor ASC¡!. El código ASCII es el único modo que tiene
la computadora para distinguir caracteres.
106 Hora 6
[

Todas las microcomputadoras y las pocas minicomputadoras que aún existen em-
plean Ia tabla ASCII. Los mainframes se valen de una tabla similar, llamada EBC-
DIC. La tabla ASCII es la representación del almacenamiento fundamental de todos los datos
y progamas que maneja su computadora.

La naturaleza de los códigos ASCII


Recuerde el almacenamiento interno de caracteres que se describió en la sección anterior.
Cuando oprime la letra A, ésta no se almacena en la computadora, sino el valor ASCII de A.
Como podrá ver en los valores ASCII de la tabla anterior, la letra A se representa como
01000001 (todos los interruptores, excepto dos, son de apagado en un byte que contiene la
letra A).

La tabla ASCII no es muy distinta de otras tablas codificadas que podría ha-

9 ber oído mencionar. El código Morse es una tabla de representaciones de !e-


tras del alfabeto. En lugar de unos y ceros para representar los caracteres,
emplea comb¡nac¡ones de rayas y puntos.

Como muestra la figura 6.1, al oprimir la leÍa A del teclado, no es dicha letra la que entra
en la memoria, sino el valor ASCII 01000001. La computadora mantiene dicho patrón de
interruptores de encendido y de apagado en esa localidad de memoria mientras la A perma-
tezca ahí. Para usted, la A está como A en la memoria, aunque ahora ya sabe lo que sucede
en realidad.

F¡cunl 6.1 Computadora

IAAyano es unaA
01000001
tras ser tecleada.

Si imprime el programa que acaba de teclear y la computadora está lista para imprimir el "ca-
ráñfor" almacenado en dicha localidad de memoria, la CPU envía a la impresora el código
ASCII para la letra A. Justo antes de imprimir, la impresora sabe que debe converti¡ su salida
en algo legible, por lo que busca el 01000001 en su propia tabla ASCII e imprime la A en el
Lenguajes de programación: los primeros años 107 ¡

papel. Desde el momento en que la A salió del teclado hasta el momento en que se imprimió,
ya no se trató de una A, sino de una combinación de ocho unos y ceros que representa una A.

Aritmética b¡naria
En su nivel más simple, las computadoras no puede restar, mulüplicar ni dividir. Tampoco lo
hacen las calculadoras. Las supercomputadoras muy grandes y r,ápidas sólo saben sumar, y
punto. La suma se lleva a cabo al nivel de bits. La aritmética binaria es el único medio que
tiene cualquier eqüpo electrónico de cómputo digital para reahzar operaciones aritméticas.

Una computadora le hace pensar quo puede llevar a cabo todo tipo de cálculos complejos por-
que es muy rápida. En realidad sólo sabe sumar, aunque lo hace a gran velocidad.

Suponga que quiere que la computadora sume siete números 6. Si usted le pide a la compu-
tadora (a través de un programa) que lleve a cabo la operación:

6+6+6+6+6+6+6
ésta le dará de inmediato 42 como respuesta. La computadora no tiene dificultades para rea-
lizar las sumas. Los problemas surgen cuando se le pide que efectrle otro tipo de cálculo,
como:

42-6-6-6-6-6-6-6
Debido a que la computadora únicamente puede sumar, no puede llevar a cabo la resta. Sin
embargo (y aqul es donde enfta el truco), es capaz de negar rimeros. Es decir, puede tomar
el negativo de un número. Toma el negativo de 6 y 1o representa (al nivel de bits) como 6 ne-
gativo. Tras hacerlo, plede surnar 4 a 42 y repett la operación siete veces. En efecto, el
cálculo interno se vuelve el siguiente:

42 + (4)+ (-6) + (-6) + (-6) + (-ó) + (-6) + (-6)


La suma de siete -6s produce el resultado correcto, 0. En realidad, la computadora
no está restando. Al nivel de bits, puede convertir un número en su negativo me-
diante un proceso conocido como complemento a 2. El complemento a2 de un número es el
negativo de su valor original al nivel de bits. La computadora tiene, en sus circuitos lógicos
internos, la capacidad de convertir con rapidez un número en su complemento a2 y luego lle-
var a cabo la suma de negativos, en apariencia llevando a cabo una resta.
108 Hora 6
i

Unavez que la computadora pueda sumar y simular restas (a través de la suma de negativos),
también puede simular la mukipücación y la diüsión. Para multiplicar 6 por 7, la computado-
ra en realidad suma siete veces 6 y produce 42. Por tanto,

6x7
se convertirá en:

6+6+6+6+6+6+6
Para dividir 42 efire 7, resta 7 de 42 (bueno, suma el negativo de 7 a 42) hasta llegar a 0 y
cuenta la cantidad de veces (6) que le llevó llegar hasta 0, como sigue:

42 + (-:7) + (-7) + (--7) + (-:7) + (a) + Q)


La computadora representa los números de manera similar a la que uüliza para representar ca-
racteres. Como puede ver en la tabla6.2,los números son fáciles de representar en el nivel bi-
nario. Una vez que un número llega a cierto límite (256 para ser exactos), la computadora
toma otro byte para representarlo, ocupando la cantidad de localidades de memoria que nece-
site para representar la dimensión del número. Una vez que se le ha enseñado a sumar, restar,
multiplicar y dividir, la computadora puede llevar a cabo cualquier cálculo matemático, siem-
pre y cuando haya un programa para dirigirla.

TrsLA 5.2 Los pRllrl¡nos 20 ruú¡vlenos BtNARtos


Número Equivalente binario
0 00000000
1 00000001
2 00000010
3 0000001 1

4 00000100
5 00000101
6 000001 10
7 000001 11

8 00001000
9 00001001
10 00001010
11 00001011
t2 00001100
13 00001101
t4 00001110
Lenguajes de programación: los primeros años 109 I

Número Equivalente binario


15 00001 I 11

16 00010000
T7 00010001
18 00010010
L9 00010011

20 00010100

Los primeros 255 números binarios traslapan los valores de la tabla ASCll. Es
decil la representación binaria de la letra A es 01000001 y el número binario
correspondiente a 55 también es 01000001. La computadora sabe por el con-
texto (la manera como los programas usan la localidad de memoria) si se
trata de la letra A o del número 55.

Para ver lo que sucede al nivel de bits, siga este ejemplo y observe lo que pasa cuando se le
pide a la computadora que reste 65 de 65. El resultado debe ser 0 y, como verá en los siguien-
tes pasos, éste es precisamente el resultado al nivel de bits:

1. Suponga que quiere que la computadora calcule lo siguiente:

-65
-65
2. La representación binaria de 65 es 01000001 y el complemento a 2 de 65 es 10111111
(-65 en argot de computación). Por lo tanto, estií solicitando que la computadora lleve
a cabo este cálculo:

01000001
+10111111
3. Dado que un número binario no puede tener el dígito 2 (sólo hay ceros y unos en bina-
rio), la computadora transfiere el 1 cada vez que el resultado de un ciflculo es 2; 1 + 1
es igual a 10 en binario. Aunque esto puede resultar confuso, puede hacer una analogía
con la aritmética decimal. La gente trabaja con un sistema numérico base 10. (El bina-
rio se conoce como base 2.) No hay un dígito que represente el 10; necesitamos reutili-
zar dos dígitos ya empleados para formar el üez, es decir, 1 y 0. En base 10, 9 + 1 es
10. Por tanto, el resultado de 1+1 en binario es 10, o "0 y transferir 1 a la siguiente co-
lumna".
0100Q001
+10111111
100000000
1110
Hora 6

4. Puesto que el resultado debe caber en la misma cantidad de bits que los dos números
originales (cuando menos para este ejemplo; su computadora puede emplear más bits
para representar los números), el noveno bit se descarta, dejando como resultado 0. Es-
te ejemplo muestra que el 65 binario más el 65 binario negativo es igual a 0.

Los pr¡meros programas


Las primeras computadoras no se programaban de la misma manera que las actuales.
Se requería de mucho esfuerzo para hacerlo. La memoria de las primeras compu-
tadoras sólo contenla datos, no programas. El concepto de programación de esas primeras
computadoras era muy diferente, pues los progrfirnas se conectaban mediante un cableado en
la computadora. Esto era realizado físicamente por expertos para generar y procesru los datos.
Los primeros programadores de computadoras nunca oyeron hablar de teclados, editores y
compiladores; eran expertos en hardware, no expertos en software.

La programación de estas computadoras era muy difícil. Para realizar a1gún cambio,
el programador de hardware tenía que volver a enrutar las conexiones del cableado
pÍua que el programa hiciera lo suyo. No pasó mucho tiempo para que una persona, llamada
John von Neumann, inventara el concepto de programa compartido. Él demostró que un pro-
grama podía almacenarse en la memoria, junto con los datos. Con los programas en memoria,
fuera del hardware cableado, su modificación se volvió mucho más sencilla. El invento de
John von Neumann fue uno de los avances más importantes y duraderos de la historia de la
computación; hoy día seguimos empleando su concepto de programación compartida en nues-
tras computadoras.

La programación de las primeras computadoras requefa de un esfuerzo enonne, pues se tenía


que hacer al nivel de los unos y ceros nativos de la máquina. Por tanto, las primeras instruc-
ciones para una computadora podían parecerse a esto:
010001 1 0
11000100
101 1 101 1

00011101

Cuando eI programador quería sumar dos números, cambiar valores en la memoria o cual-
quier ofra cosa, tenía que dirigirse a la tabla que describía los pafrones de unos y ceros para
llevar a cabo las instrucciones deseadas. La conmutación de intemrptores y la programación
de la máquina tardaban horas pero, con todo, se trató de un gran adelanto en comparación con
la programación por cableado.
Lenguajes de programación: los primeros años 111i

Simplificación del lenguaje de máquina


En lugar de teclear unos y ceros, el programador puede insertar nombres asociados con cada
instrucción en el lenguaje de máquina. Por tanto, las instrucciones de la sección anterior po-
dían verse así:

ADD A, 6
Mov A, ouT
LOAD B
SUB B, A

Estos comandos son crípticos y es mucho más fácil recordarlos que los unos y ceros. Las pa-
labras se llaman mnemónicos, que significan abreviaturas fáciles de recordar de las instruccio-
nes. ADD A, 6 es mucho más fácil de recordar que 010001 10 cuando se necesita sumar 6 al
valor de una localidad de memoria llamada A.

Poi supuesto que la computadora no podría entender los mnemónicos, pero se escri-
bió un programa traductor, llamado ensamblador como intermediario entre los mne-
mónicos y los unos y ceros a los que se traducían. La hgura 6.2 muestra cómo el ensamblador
actúa como intermediario entre el programador en el teclado y la máquina. Fue un gran avan-
ce que el lenguaje ensamblador se volviera el medio principal para que los programadores in-
sertaran instrucciones en la computadora. Este segundo lenguaje de programación (el primero
fue el de los unos y ceros en lenguaje de máquina) permitió acelerar el desarrollo de los
progr¿rmas. La revolución del software inició apenas unos años después del nacimiento del
hardware.

Fraunn 6.2 El ensamblador


traduce los mnemónicos
El ensamblador en el lenguaje de la máquina

traduce los
mnemónicos en unos
y ceros.

Teclado Computadora

Programación de bajo nivel


Estos dos primeros lenguajes de programación de máquina y lenguaje ensambla-
-lenguaje
dor- se conocen como lenguajes de programación de bajo nivel. La computadora no tiene
que traducir gran cosa para convertir lenguaje ensamblador en lenguaje de máquina, pues ca-
da instrucción en ensamblador tiene una correlación de uno a uno con una instrucción en len-
guaje de máquina (sin embargo, una instrucción en lenguaje de máquina puede ocupar más
de un byte de memoria). Aunque los lenguajes de bajo nivel hoy día no se emplean tanto
como los de alto nivel (Visual Basic, C y C++, por ejemplo), aún es posible programar las
Hora 6
| 112

computadoras actuales con ellos. Por ejemplo, si usted tiene una PC, puede valerse de un pro-
grama llamado ensamblador para insertar código en lenguaje de máquina directamente en sus
localidades de memoria.

Su automóvil probablemente tiene una computadora, asl como su reproductora de ü-


deo y su re§. Muchos de estos dispositivos requieren de programación incrustada, lo
cual significa que las insüucciones se codifican directamente en los chips de la computadora y
no se almacenan en ninguna clase de disco. Con frecuencia, este tipo de dispositivos es caro así
que, para reducir costos, los fabricantes emplean el lenguaje de miíquina para programarlos con
el objeto de eliminar la sobrecarga y emplear el dispositivo más pequeño y económico posible.

Los programadores de lenguaje de máquina de la actualidad no utilizan unos

9 y ceros; lo que emplean es algo muy críptico, sobre todo para los no iniciados
en las cuest¡ones de los lenguajes de bajo nive!. Mediante la conversión de los
valores binarios en valores hexadecimales (también conocidos como base 16),
los programas en lenguaje de máquina son ligeramente más fáciles de
manipular.

En la actualidad sólo existen algunos traductores de lenguaje ensamblador en eI mercado y la


mayor parte de ellos sólo se pueden obtener por coffeo, debido a su baja demanda en las tien-
das. El más común es Macro Assembler de Microsoft, aunque con la mayor parte de los pro-
ductos de programación visual de Microsoft, como Visual C++, usted puede acceder al
ensamblador desde el lenguaje de programación de alto nivel. Estos elementos de lenguaje de
máquina aún requieren de una complejidad que la mayoría de los programadores no necesita
dominar nunca.

La seguridad es ¡mportante
Con los ambientes actuales de computación en línea y en red, la seguridad se vuelve un tema
importante cuando se trata con código a nivel máquina. El sistema operativo, por ejemplo
Windows 95, Windows 98 o Windows NT, intenta evitar violaciones de seguridad involunta-
rias (o dolosas) protegiendo la memoria contra modificaciones directas. Estos sistemas opera-
tivos controlan la memoria, de modo que un programa de bajo nivel no pueda cambiar el
contenido de un área del sistema de la memoria sin el penniso del sistema. Por tanto, no po-
drá tener acceso a ciertas áreas de memoria si trabaja con un producto de programación de
bajo nivel.

Una seme¡anza con el inglés


Los lenguajes de programación de alto nivel surgieron por la complejidad de los lenguajes de
bajo nivel. Con la aparición del lenguaje ensamblador, más empresas comenzaron a usar
computadoras. A la par de su difusión, vino la necesidad de escribir aplicaciones de software
l-enguajes de proEramación: los primeros años 1'1 3

más complejas que apoyÍuan a esas empresas. Los lenguajes de máquina y ensamblador, de
bajo nivel, eran demasiado ineficientes para la rápida productividad que requerían las compa-
ñías. Se desarrollaron lenguajes de alto nivel, que añadieron un escalón miís enffe el progra-
mador y el hardware. Esto significó que la computadora tenía que hacer más trabajo para
fraducir un lenguaje de alto nivel al lenguaje de máquina, pero los programadores se liberaron
de la codificación de bajo nivel. Dos de los primeros compiladores de programación de alto
nivel fueron FORTRAN y COBOL. Ambos siguen utilizándose ampliamente.

EI lenguaje FORTRAN
FORTRAN significa Traductor de fórunulas. Como lo implica su nombre, sirve para aplica-
ciones matemáticas y científicas. FORTRAN trabaja muy bien con números de alta precisión
y ofrece una magnífica biblioteca de rutinas trigonométricas integradas que apoyan al desa-
rrollador científ,co.

Con los años, los programadores han mejorado el lenguaje FORTRAN, dándole más capaci-
dades de manipulación de caracteres. Las primeras versiones de FORTRAN surgieron para re-
solver cálculos matemáticos, sin importar gran cosa la estética del resultado. En la actualidad
existen compiladores de FORTRAN, tanto para mainframes como para versiones en PC. Los
compiladores modernos FORTRAN trabajan mejor con datos en caracüeres (llamados también
cadenas de caracteres, ya que éstas constituyen las palabras y las oraciones) que como lo
hicieron las versiones anteriores, pero siguen conservando sus capacidades matemáticas.

El listado 6.1 muestra un ejemplo de un programa en FORTRAN. No es el objetivo de esta


lección, ni de esta obra, enseñarle FORTRAN. No se considera que este lenguaje sea para
principiantes (aunque no es tan difícil como muchos de los demás; si ya aprendió QBasic,
puede entender FORTRAN con bastante facilidad, pues las raíces de QBasic fueron basadas
en FORTRAN). El programa del listado 6.1 es un ejemplo del cálculo de una nómina, que
puede estudiar.

Lsrnoo 6.f FORTRAN Pueoe cepruneR UNA NóMINA

1: *
2= * Calculan las cifnas de Ia nómina e impnimin Ia paga neta
3: *
4: * Impnimin un títul-o
5: VVRITE(6,10)
6: 1@ FORMAT(1H1 , 2X, '** CÁlCUlO DE ruÓn¡INA **'.ll)
7:
8: Inicializar tiempo extna a O
o.
1@= TOVRTM = 0 .O

continúa
I
114 Hora 6

Lrsreoo 6,1 coNTrNuecróru

11: *
12: * Obtener del usuario las horas trabajadas y otra información sobre
pagos
13: *
14i WRITE(6, 20)
15: 2@ FORr\ilAT ( ', ¿CUÁ¡¡TRS HORAS SE TRABAJARON? ', )
16: READ(S, 21) HRS
17i 21 FoRMAT(F4.1 )
18: WRITE(6, 22)
19I 22 FORMAT(/'¿CUÁL ES LA TARIFA POR HORA? ')
zoi READ(s, 23) RATE
21 : 23 FORMAT ( F7.2 )
22i WRITE(6, 24)
23: 24 FORMAT( t',¿CUÁt ES LA TARIFA DE IMPUESTOS?',)
24i READ(6, 25) TAXRTE
25: 25 FORMAT(F7.2)
26i *
27: * Calcular los resultados
28:. *
29: * EI tiempo extra queda en 0.0 o se paga aI doble,
30: * dependiendo de Ias horas trabajadas
31: IF (HRS .LT. 40.0) G0T0 100
32i TOVRTM = (HRS - 4O.O) * RATE * 2.0
33: GROSS * RATE
= 40.0
34:. G0T0 200
35: 100 GROSS = HRS * RATE
36: 200 GROSS = GR0SS + TOVRTM
37t TNET = GROSS * (1.0 - TAXRTE)
38: *
39: * IMPRIMIR LOS RESULTADOS
4Oi *
41t WRITE(6, 300) HRS, RATE, TAXRTE, GRoSS, TNET
42i ', F4.1, 2X, 'Tarifa; ', F7.2,
300 FoRMAT(//'Horasi
43: 1 2x, 'Tarifa impuestoi ', F7.2, 2x, 'Bruto: $', F10.2,
44i 2 2x, 'Netol $', F10,2)
45i END

Observe que FORTRAN es un lenguaje de alto nivel, más fácil de leer que su precursor, el
lenguaje ensamblador que se mosfró antes, pero sigue sin ser demasiado obvio para los legos
en programación. Aunque tal vez no entienda todo lo que hay en el programa, reconocerá al-
gunas palabras, como WRITE o FORMAT. Notará que los lenguajes de programación de alto ni-
vel se acercan más al inglés hablado que los ceros y unos, o los mnemónicos de los lenguajes
de bajo nivel.

FORTRAN no es un lenguaje muy grande. Tiene relativamente pocos comandos (a üferencia


de COBOL y de los lenguajes modernos como QBasic), aunque su reducido tamaño provoca
Lenguajes de programación: los primeros años 115

confusiones si no se conoce el lenguaje. FORTRAN no se considera un lenguaje autodocu-


mentado, término a veces sobreempleado que se aplica a los lenguajes legibles para los no
programadores. No obstante, FORIRAN parece estar bien plantado en la comunidad científi-
ca y seguirá así por algrín tiempo. Con toda justicia, FORTRAN ha perdido terreno los rilti-
mos años ante PL/I, Pascal y más tarde C y C++, pero sus capacidades matemáticas
sobresalientes han evitado que se vuelva obsoleto.

FORTRAN, como casi todos los lenguajes de programación ampliamente usa-


dos desde hace años, ha sido estandarizado por el lnstituto Nacional Ameri-
cano de Estándares (ANSI), una organización que analiza las versiones de los
lenguajes de programación y ofrece un conjunto estandarizado de coman-
dos. Los fabricantes de los lenguajes no tienen que apegarse a! estándar
ANSI pero, si no lo hacen, se arriesgan a perder clientes que piensan en las
ventajas que les ofrecen dichos estándares. La mayoría de las empresas
prefiere programar en un lenguaje estandarizado; al hacerlo, aseguran que
los nuevos programadores estarán familiarizados con la misma versión que los
que estuvieron antes.

COBOL y los negocios


Grace Hopper, la almirante de la Marina de los E.U., a la que se atribuye el descubrimiento
del primer "bug" (vea la hora 3, "¿Qué es un programa?"), también es conocida como la
autora de COBOL. En 1960, la almirante Hopper y su equipo de programadores decidieron'
que necesitaban un lenguaje para el lado comercial de la computación (hasta la Marina tie-
ne que pagar nóminas y cuentas). FORTRAN ya se encargaba del aspecto científico, pero
no fue diseñado para manejar transacciones comerciales. Los programadores también des-
cubrieron que la naturaleza criptica de FORTRAN hacía más lento el mantenimiento de los
pfogramas.

El equipo de la almirante Hopper desanolló COBOL, que significa Lenguaie común orienta-
do a negocios. El objetivo principal del equipo de diseño de COBOL fue desarrollar un len-
guaje autodocumentado que pudiera procesar una gran cantidad de datos comerciales, como
inventarios y registros de personal. Un ejemplo de lo que lograron aparece en el listado 6.2.
Este es un programa que lleva a cabo el mismo procesamiento que su oponente FORTRAN
del listado 6.1; sin embargo, el listado COBOL es casi del doble de largo. Dedique unos mi-
nutos para digerir el listado y familiarizarse con la naturaleza de COBOL.
Hora 6
1116

Todos los programas COBOL se dividen en cuatro. La división de identifica-

9 ción describe el programa. La división de ambiente describe el sistema de


computación que ejecuta e! programa. La división de datos describe el for-
mato de los datos que intervienen en el programa. La división de procedi-
miento contiene el código que procesa los datos. Trate de identificar estas
divisiones en el listado 6.2.

Llsreoo 5.2 COBOL Es MEJoR que FORTRAN peRn ApLtcActoNEs coMERctALEs

1 : IDENTIFICATION DIVISION.
2= PROGRAM. ID. 'NÓMINA'
3:
4= ENVIRONMENT DIVISION.
5: INPUT. OUTPUT SECTION .

6: FI LE - CONTROL .

7 SELECT GET. DATA, ASSIGN TO KEYIN


8:= SELECT OUT.DATA,
.
ASSIGN TO DISPLAY.
o.
1@= DATA DIVISION.
11 : FI LE SECTION .

12= FD GET . DATA


1 3: LABEL RECORDS ARE OMITTED.
14: ü GET-REC.
15: A2 AMOUNT PICTURE 9(s)v2.
16:
17 FD OUT. DATA
18:= LABEL RECORDS ARE OMITTED.
19: U OUT - REC.
20= 02 FILLER PICTURE X(80).
21
=

22= WORKING. STORAGE SECTION.


23= U ARITHMETIC-DATA.
24: @2 TOT.OVR PICTUREg(5)V2VALUEZERO.
25= 02 HOURS PICTURE 9(3)V1 VALUE ZERO.
26= 02 RATE PICTURE 9(5)V2 VALUE ZERO.
27
= A2 TAX. RATE PICTURE 9 (5 )V2 VALUE ZERO.
28= A2 GROSS. PAY PICTURE 9 ( 5 )V2 VALUE zERo.
29= A2 NET-PAY PICTURE 9(5)V2 VALUE ZERO.
30: U OUT-LINE-1.
31 : A2 FI LLER PICTURE X ( 29 )
32= VALUE 'óCuántas honas se tnabajanon? , .
33 : A2 FI LLER PICTURE X ( 52 ) VALUE SPACES .
34= U OUT - LINE -2 .

35 : 02 FI LLER PICTURE X ( 28 )
36: VALUE 'óCuál- es Ia tanif a pon hona? , .

37 : 02 FI LLER PIOTURE x ( 5s ) VALUE spAcES .


38: U OUT - LINE -3.
39: A2 FILLER PICTUREx(22)
Lenguajes de programación: los primeros años

4A= VALUE 'óCuáI es Ia tanifa de impuestos? '.


41 A2 FI LLER PICTURE X ( 58 ) VALUE SPACES
=
42= ü OUT-LINE-4.
.

43= A2 FILLER PICTURE X( 1 7)


44= VALUE 'La paga bnuta es I

45
= A2 OUT - GROSS P I CTURE $ZZ ,ZZZ. 99 .

46 : 02 FI LLER PICTURE X ( 53 ) VALUE SPACES .

47= 01 OUT-LINE-5.
48= A2 FI LLER PICTURE X ( 1 5 )
49= VALUE 'La paga neta es I

A2 OUT - NET PICTURE $ZZ,ZZZ. 99


51:=
5@ .

A2 FILLER PICTURE x(55) VALUE SPACES.


52=
53: PROCEDURE DIVISION.
54: BEGIN.
55 : OPEN INPUT GET. DATA.
56: OPEN OUTPUT OUT. DATA.
57=
58: MOVE OUT. LINE. 1 TO OUT. REC.
59: WRITE OUT. REC.
60: READ GET.DATA.
61 : MOVE AMOUNT TO HOURS.
62=
63: MOVE OUT. LINE.2 TO OUT. REC.
64= WRITE OUT. REC.
65 : READ GET. DATA.
66: MOVE AMOUNT TO RATE.
67:
68 : MOVE OUT. LINE .3 TO OUT. REC.
69: WRITE OUT - REC.
7@= READ GET-DATA.
71 t MOVE AMOUNT T0 TAX - RATE.
72=

74t THEN COMPUTE TOT-OVR = (4A.@ - HOURS) * RATE * 2


75 COMPUTE GR0SS - PAY = 4A .O * RATE + T0T - OVR
76== ELSE
77 COMPUTE GROSS - PAY = HOURS * RATE.
78:= COMPUTE NET-PAY = GROSS-PAY * (1.0 TAX-RATE).
79=
MOVE GROSS - PAY T0 OUT -GR0SS
8@
81
=
: MOVE OUT - LINE - 4 T0 OUT - REC.
.

82= WRITE OUT - REC.


83:
84: MOVE NET - PAY T0 OUT - NET.
85: MOVE OUT. LINE.5 TO OUT. REC.
86: WRITE OUT. REC.
87=
88: CLOSE GET - DATA, OUT - DATA.
89: STOP RUN.
Hora 6
1118

El equipo de la almirante Hopper quefa que COBOL fuese autodocumentado, para que los
no programadores lo pudieran entender. ¿Puede determinar lo que hace el listado 6.2 sólo con
leer el código? Si se pierde enffe las palabras rebuscadas del programa, no se desaliente. En
lugar de ser autodocumentado, COBOL terminó teniendo muchas palabras. Hay tantas cosas
que intervienen en el código operativo que mucha gente (hasta sus adeptos, de los cuales hay
miles) estaría de acuerdo en que COBOL no cumple con el objetivo del lenguaje autodocu-
mentado. No obstante, es el principal lenguaje comercial del mundo y lo ha sido durante casi
cuarenta años.

Aunque COBOL es uno de los lenguajes más comunes, los nuevos programas en otros len-
guajes empiezan a reemplazarlo lentamente. La mayoía de las grandes (y algunas pequeñas)
empresas siguen empleando COBOL en sus departamentos de procesamiento de datos, ten-
dencia que están cambiando C++ y otros lenguajes, y algo que PLII (que se describe a conti-
nuación) no pudo lograr hace algunos años. Pasará mucho tiempo antes que COBOL
desaparezca de los departamentos de procesamiento de datos de las empresas.

Si desea hacer carrera en la programación, incluya a COBOL como el segundo o tercer len-
guaje que aprenda. El tener cuando menos un conocimiento teórico de COBOL lo llevará
muy lejos en el mundo actual del procesamiento de datos. Para aprender COBOL lo más
pronto posible, recuerde que hay versiones disponibles del lenguaje para PC. Cuando aprenda
COBOL, hacerlo con el rápido tiempo de respuesta de las PC le resultará más sencillo que a
fravés de un mainframe. (El ambiente sede de COBOL es el mundo de los mainframes, que es
donde se emplea más.) Con el conocimiento de COBOL, usted entenderá mejor los progra-
mas usados en la actualidad, y será más solicitado cuando las compañías decidan sustituir su
viejo código por uno nuevo.
Lenguajes de programación: Ios primeros años 11e I

Los compiladores COBOL de estándar ANSI nunca han sido muy comunes
en la plataforma de las PC. La memoria y velocidad Iimitadas de las micro-
computadoras, hasta hace pocos años, no podía manejar la programación al
nivel de producción en COBOL. Los lenguajes más pequeños, como Pascal
y C, ocuparon el nicho de la programación en microcomputadoras. Sin em-
bargo, a cornienzos de la década de los 90, las PC se volvieron bastante
capaces de manejar compiladores COBOL-ANSI completos que contenían el
lenguaje mismo, y también programas de apoyo como editores, depuradores
y perfiladores integrados.

La aparición de otros lenguaies a través


de los años
Cuando FORTRAN y COBOL ganaron terreno, ya nada pudo detener a la industria del soft-
ware. Comenzarorl a surgir lenguajes por todos lados. Las compañías desarrollaban sus pro-
pios lenguajes internos que se suponía, manejarían mejor su ambiente que los dos grandes
lenguajes, FORTRAN y COBOL.

PL/I
Comenzaron a aparecer tantos lenguajes que la comunidad de los programadores empezó a
fragmentarse, ahogándose entre una gran cantidad de posibilidades, incapaz de decidir qué
lenguaje era mejor para un proyecto dado. Cuando menos, esa fue la situación que observó
IBM cuando decidió crear "el único lenguaje de programación que cualquiera puüese necesi-
tar". IBM vio la necesidad (o trató de crearla; en la actualidad existe esta polémica, incluso
entre los seguidores de IBM) de un lenguaje de programación que lo hiciera todo. Este sería
el mejor lenguaje científlco y comercial que resolvería todas y cada una de las necesidades de
los programadores.

IBM creó el lenguaje de programación PI/I para resolver el inconveniente de tantos


lenguajes. PI-/I signtfical*nguaje de programación.BM üseñó PIl tomando lo me-
jor de COBOL, de FORTRAN y de algunos otros lenguajes de programación del momento. El
resultado final, cuando menos en función de ventas, nunca se logró; IBM no tuvo el éxito que
esperaba. En lugar de ser el único lenguaje de programación que cualquiera pudiese necesitar,
PI,/I se volvió uno miás de entre los lenguaje de programación.

El problema principal de PLII fue que era demasiado bueno; era descomunal. IBM aprovechó
lo mejor de todos los lenguajes de programación, pero al hacer esto, creó un lenguaje enorme
que requería de grandes recursos de cómputo para operar. Durante ladécada de los 60, no ha-
bía muchas empresas que contaran con la suficiente capacidad de cómputo para dedicar el 100
por ciento del tiempo de sus CPU a las compilaciones de PIl. Adem¡ís, los programadores tar-
daban demasiado tiempo en aprender PL/I, ya que era muy grande para llegar a dominarlo.
120 Hora 6
|

En la actualidad hay compañías que utiüzan progr¿rmas PUI, y offas que aún programan en
este lenguaje, pero el PL/I nunca tuvo el éxito que esperaba IBM. El listado 6.3 muesfra parte
de un programa PLII que lleva a cabo las mismas rutinas que los listados anteriores de FOR-
TRAN y COBOL. En este ejemplo, el código se parece más a COBOL que a FORTRAN, sin
embargo, una buena parte de PLII es distinta de COBOL. Las diferencias se vuelven más evi-
dentes cuando programa aplicaciones no comerciales y cienlficas.

Lrreoo 6.3 E.r¡¡vrpr-o DEL pRoGRAMe PL/l euE LLEVA A cABo Lo MtsMo euE Los LtsrADos
ANTERToRES oe COBOL v FORTRAN
1: PAYROLL: PROCEDURE 0PTIONS (MAIN);
2: DECLARE OVRTIM FIXED DECIMAL (2);
3: DECLARE HOURS FIXED DECIMAL (5,2)
4: DECLARE RATE FIXED DECIMAL ( 9, 2 )
5: DECLARE TAXRATE FIXED DECIMAL ( 9, 2 )
6: DECLARE GROSS FIXED DECIMAL (9,2)
7: DECLARE NETPAY FIXED DECIMAL (9,2)
8:
9 : BEGIN : GET LIST ( HOURS, RATE, TAXRATE )

11: OVRTIM = (HOURS - 4@¡ * RATE * 2


12: GROSS = 4@ * RATE
1 3: ELSE
14: OVRTIM = @

1 5: GROSS = HOURS * RATE;


16: NETPAY=GROSS*(1 TAXRATE);
17= PUT LIST (OVRTIM, HOURS, RATE, TAXRATE, GROSS, NETPAY);
1 8: END PAYROLL

Aunque parte del lenguaje PUI ofrece algunos conceptos de programac¡ón


interesantes, los aspirantes a programadores no deben dar tanta prioridad a!
aprendizaje de PUl. A menos que quiera trabajar para una compañía que
emplee PUl, algo poco común, tendrá rnás mercado e invertirá mejor su
tiempo si aprende Visual Basic, C o COBOL (tras aprender pr¡mero un len-
guaje de introducción, como QBasic).

Tal vez otra de las razones de la caída de PLII es que nunca se llevó al ambiente de las micro-
computadoras. En un principio, las microcomputadoras no tenían la memoria ni el espacio en
disco para un lenguaje tan grande como PIII. Aunque las PC actuales no tendrían ningún pro-
blema para ejecutar PLI[, oúos lenguajes como C y Visual Basic han dominado el ambiente
de las PC, y un compilador de PLII tendría muy pocas probabilidades de éxito.
Lenguajes de programación: los pr¡meros años 121 i

RPG
Otro lenguaje de programación que ha permanecido por muchos años es RPG. RPG significa
Generador de programas de informes y existe en versiones más recientes, llamadas RPG II y
RPG Itr. Como lo indica su nombre, RPG comenzó exclusivamente como generador de infor-
mes. Su propósito original (similar a los ideales de COBOL) fue ser un lenguaje que pudieran
usar los no programadores para generar informes a partir de datos de archivos en disco.

RPG es distinto de casi cualquier otro lenguaje de programación. Los lenguajes que
ha visto hasta ahora sonlenguajes de procedimientos.Es decir, tienen instrucciones
individuales que sigue la computadora en secuencia, hasta que se realiza el trabajo. RPG no
tiene comandos normales y su lógica no es de procedimientos. (Algunas de las versiones re-
cientes de RPG ofrecen capacidades limitadas de procedimientos.) Un programa en RPG se
escribe mediante códigos que se apegan a colocaciones estrictas en columnas. Los no progra-
madores, e inclusive los programadores veteranos sin experiencia en RPG, tienen serios pro-
blemas al descifrar los programas en dicho lenguaje. Para complicar las cosas, existen varias
versiones no estandarizadas de RPG de amplio uso.

El listado 6.4 muestra un ejemplo de un programa RPG. La colocación de los cóügos debe
ser exacta. Si desplaza cualquier línea a la derecha o a Ia izquierda un par de espacios, el pro-
grama no funcionará. Como podrá imaginar, es complicado seguir un programa RPG y extre-
madamente difícil que las cosas salgan bien a la primera cuando escribe uno.

L¡srnoo 5.4 Los pnocnnuAs RPG pUEDEN LLEVAR A cABo pRocEsAMrENro DE DATos
COMERCIALES

1: F* PAYROLL PROGRAM
2" FOUTP IP F 80 KEYBOARD
3: FINP O F 80 SCRE EN
4= IREPORT AA 01 1 1 ORATE
5: I 8 SOHOURS
6: I 12 4@TAXRATE
7= c *PY01 IFGT '4@'
8: C OVTIM MULT RATE * 2
o. C OVTIM MULT HOURS
1@= c END
11: C *GROSS IFLE '4A'
12: C GROSS MULT RATE * HOURS
13: C END
14: OOUTP H 1AA 1P

Los programadores de RPG empleab an hojas de especifrcación de RPG especiales


para codificar sus programas. Estas hojas son parecidas a las hojas de gráfrcos con
celdas etiquetadas para los distintos comandos RPG. En la escritura de un programa con la
ayuda de hojas de especificación, el programador asegura la colocación exacta en las colum-
nas de sus programas RPG.
Los programadores usaban RPG principalmente en las minicomputadoras cuando éstas eran
populares. En las minicomputadoras probablemente se usó RPG más que cualquier otro len-
guaje de programación. (Sólo ha habido un par de compiladores de RPG disponibles para mi-
crocomputadoras y sus ventas se desplomaron por falta de interés.) Muchos pronostican que
RPG desaparecerá junto con la última minicomputadora.

Mientras tanto, se sigue usando RPG en las minicomputadoras existentes; debemos recordar
sus capacidades para la generación de informes. Si llega a trabajar con una minicomputadora,
lo más seguro es que se encuentre con algrín programa RPG.

APL y ADA
otros dos lenguajes de programación, APL y ADA, también se han usado mucho a lo largo de
los años. APL que significa Un lenguaje de programación de alto nivel esun lenguaje de pro-
gramación altamente matemático que desarrolló IBM. Es un lenguaje tan distinto de COBOL
y de FORTRAN como de RPG. Un programa APL consiste en muchos símbolos extraños (te-
chos de casas, flechas curvas, triángulos y demás) y requiere de un hardware especial para ge-
nerarlos. Debido a la restricción de hardware y a su baja velocidad en comparación con otros
lenguajes de programación (APL casi siempre se ejecuta de modo interpretado, casi nunca
compilado), está perdiendo el interés hasta de quienes eran sus fanáticos.

Otro problema con APL es que su mantenimiento es difíci!, debido a su na-


turaleza críptica. Las compañías están descubriendo que un lenguaje de pro-
cedimientos más natural produce equipos de programación más productivos
a largo plazo que !o que permite APL.

ADA, llamado así por Lady Augusta Ada Byron (hija del poeta Lord Byron y novia de Char-
les Babbage, padre de las computadoras), se usa casi exclusivamente en el Departamento de
Defensa y para contratos gubemamentales, aunque hasta el gobierno lo está empleando cada
vez menos. En la década de los 70, el gobierno de los Estados Unidos decidió que lo mejor
era estandarizar un solo lenguaje, de modo que todos sus programas fueran consistentes y los
programadores del gobierno estuviesen familiarizados con el lenguaje de todo el código inter-
no. Los expertos consideran que ADA es un lenguaje de programación mediocre difícil de
aprender (recuerde que el gobierno dio su bendición a ADA como el lenguaje preferido, pero
los gobiernos nunca se han destacado por su eficiencia ni su lógica). Uno se pregunta por qué
el Departamento de Defensa, que diseñó el primer compilador COBOL, decidió usar algo dis-
tinto a éste cuando casi todas las compañías de ese tiempo lo habían adoptado eon gran éxito.

Dado que el gobiemo estandarizó el lenguaje de programación ADA antes (el Departamento
de Defensa fue quien diseñó ADA er 1979), el comité ANSI adoptó un estiándar ANSI para
ADA poco después de su liberación. Siempre y cuando aprenda a programar en ADA usando
Lenguajes de programación: los primeros años 123

un compilador ADA que cumpla con ANSI, tendrá la seguridad de conocer un lenguaje aún
empleado para algunos contratos gubernamentales. Observe que únicamente enalgunos con-
fratos gubemamentales, pues hasta ADA ha sido víctima de lenguajes más modernos, como
C++.

Usted querrá aprender ADA por si algún día trabajara para una compañía que escriba o dé
mantenimiento a software para el gobierno de los Estados Unidos. El gobierno no se encarga
de toda su programación, Debido a que pocos empleados no gubernamentales conocen ADA,
es frecuente que haya demanda de programadores ADA, sobre todo para aplicaciones de avia-
ción, de defensa y del programa espacial. Además, ahora que el gobierno estrí cambiando a
otros lenguajes, como C++, hay una demanda de programadores con conocimiento de ADA,
pues son ellos quienes pueden encargarse mejor de dichas conversiones.

Resumen
Antes de convertirse en un programador calificado es un requisito entender el funcionamiento
interno de una computadora. Sólo hasta después de aprender lo que hay "tras bambalinas" po-
drán florecer sus habilidades como programador. La programación de computadoras ha avan-
zado en gran medida desde los primeros días, en los que se programaba cableando tableros e
intemrptores. Los lenguajes de alto nivel como COBOL y FORTRAN, ofrecen un método
mucho más sencillo para lograr que las computadoras hagan lo que usted desea.

La siguiente hora es una visión de algunos de los lenguajes de programación más recientes
(aquellos desarrollados en los últimos 25 años).

Preguntas y respuestas
P Hemos llegado al segundo milenio; ¿qué tan importante es entender los bits y los
bytes?
R Muchos programadores tienen magníficos empleos en la actualidad y no tienen mucho
conocimiento sobre los detalles internos de las computadoras. Sin duda los fabricantes
de hardware y el personal de mantenimiento deben entender el hardware de bajo nivel,
pues es un requisito para que el hardware funcione con otro de bajo nivel. Además, los
programadores que trabajan en ambientes de comunicaciones deben conocer los bits y
los bytes para poder trabajar.
Piense por un momento en la última oración. ¿Hay muchos programadores en la actua-
lidad trabajando en un ambiente de comunicacionés? Como verá al comienzo de la hora
19, "Conceptos de programación para Internet", la programación en línea es uno de los
tabajos con mayor demanda. Además, la tecnología de las comunicaciones globales se
está expandiendo y mejorando con rupidez, y eso requiere gente para programar equi-
pos y computadoras nuevos que ayuden a intercambiar información en las líneas de co-
municación. Por consiguiente, una de las razones más importantes para entender el fun-
cionamiento de su PC, los bits y los bytes, es precisamente el segundo milenio y la
tecnología de las comunicaciones que avanza día con dla.

Taller
Las preguntas del cuestionario se presentan para una mayor comprensión. Vea las respuestas
en el apéndice A.

Cuestionar¡o
1. ¿Cuántos caracteres hay en un bit?
2. ¿Cuántos caracteres hay en un byte?
3. ¿Cuántos bits hay en un byte?
4. ¿Qué tabla emplean las pC para traducir caracteres?
5. ¿Qué operación matemática simple es la única que puede llevar a cabo una compu-
tadora?

6. ¿Qué nombre tiene el lenguaje de bajo nivel que reemplazó a los unos y ceros del len-
guaje de máquina?
7. ¿Cttál se considera el mejor lenguaje de programación comercial?
8. ¿Cuál es más autodocumentado: COBOL o FORTRAN?
9. ¿Por qué perdió popularidad con tanta rapidez el lenguajeApl?
10. ¿Qué lenguaje desanolló el gobierno para sus contratos?
af

HoRA 7
Lenguafes de
programaclon:
!,

la época moderna
Los lenguajes de programación han avalzado mucho desde el primer compila-
dor de COBOL, & principios de la década de los 60. Con cada nuevo lenguaje de
programación surge la promesa de un tiempo de aprendizaje más corto y un có-
digo de más fácll mantenimiento. Algunos de estos lenguajes más nuevos son si-
milares a aquellos presentados en el capítulo anterior. El que sean más recientes
no siempre significa que sean muy distintos de los que ya conoce la gente. De
hecho, entre más parecido es un lenguaje nuevo a uno anterior, más rápido po-
dránlos programadores ajustarse a éste y emplearlo. (Ésta posiblemente fue la
lógica de los diseñadores de C++, que es un primo hermano de C, aunque está
años luz más adelantado en cuanto a 1o que C puede lograr.)

La tendencia hacia los lenguajes gráficos de programación ha sido impresionan-


te. Los programadores y no programadores pueden producir programas operati-
vos con sólo mover objetos gráfrcos por la pantalla. Su popularidad es un resul-
tado directo de Ia popularidad de las interfaces de usuario gráficas (GUIs), como
los ambientes operativos de los sistemas de cómputo Macintosh, Windows y
OSl2 de IBM. Los lenguajes de procedimientos no se adaptan bien a las necesi-
126 Hora 7
|

dades de los ambientes griáficos. Muchos programadores de interfaces de usuario griíficas de


la actualidad tienden a mezclar la programación GUI con lenguajes de procedimientos, apro-
vechando lo mejor de cada uno.

Esta hora se enfoca en los lenguajes de programación que han sido populares durante los últi-
mos años. Debido a que el empleo de las microcomputadoras ha crecido tanto en este tiempo,
la mayor parte de estos lenguajes estián disponibles en ellas y algunos se emplean exclusiva-
mente en estos ambientes.

Los puntos relevantes de esta hora son:


. Cuáles son los puntos fuertes de Pascal
. Por qué se conoce a C como un lenguaje de alto-bajo nivel
. Qué son los operadores de programación
. Qué ventajas ofrece C++ sobre C

' Cómo los principiantes pueden emplear un lenguaje BASIC para comenzar a programar
de inmediato
. Qué herramienta de programación de Windows es fácil de usar
. Por qué algunas compañías prefieren un lenguaje sobre otro.

Programac¡ón estructurada con Pascal


En 1968, Niklaus Wirth escribió el primer compilador de Pascal. Llamado así en honor al
matemático francés Blaise Pascal. Se trata de un buen lenguaje de programación de propósito
general que puede manejar tanto trabajo científico como comercial. Las capacidades de
entrada/salida de Pascal no son tan avanzadas como las de otros lenguajes de programación
empleados en los negocios, como COBOL, por lo que nunca ha sido un contendiente para des-
plazarlo de su nicho. No obstante, Pascal es un lenguaje sólido que hace bien muchas cosas.

Lagran ventaja de Pascal es que maneja muy bien el concepto de programación estructurada.
Los tres constructores de la programación estructurada: secuencia, decisión y ciclo (vea la ho-
ra 5, "El proceso de programación y las técnicas estructuradas" para un repaso de los cons-
tructores de programación estructurada) están integrados en su diseño. Pascal es un lenguaje
que diseñó Niklaus Wirth específicamente para señalar los objetivos de la programación es-
tructurada. Las instrucciones de control de Pascal ofrecen diversas maneras de lograr cons-
tructores de programación estrucfurada dentro de un programa.

El código espaguet¡ cas¡ no existe en los programas en Pascal. A diferencia


de Ia mayoría de los lenguajes de programac¡ófl, Elgunas vers¡ones de Pascal
no contienen Ia instrucción GoTo, que permite saltos y bifurcac¡ones incondi-
cionales en otros lenguajes.
Lenguajes de programación: la época moderna 127

Durante la década de los 70, se pensó que Pascal serfa el "rinico lenguaje de programación que
cualquiera puüese necesitad'. ¿Recuerda dónde leyó esto antes? En el capítulo anterior mencio-
namos que se predijo lo mismo para PIII. Como sucedió con Pll, Pascal nunca logró esa meta.
El uso de Pascal üsminuyó con la misma velocidad con que creció. La década de los 70 vio un
enolme crecimiento de Pascal y la de los 80 su calda. Hoy día, pocas veces se usa Pascal en los
negocios y en la ingeniería. Se emplea principalmente como herramienta de enseñanza de pro-
gramación y en computadoras caseras, por gente que aún disfruta ese lenguaje.

Existe el debate sobre el porqué Pascal perdió terreno ante oftos lenguajes de programación
cuando su aranque fue tan fuefe. Tal vez la competencia de los lenguajes C y C++ (cuyo
empleo creció en gran meüda en la década de los 80, en perjuicio de Pascal) fue demasiada
para que conservara su liderazgo.

El listado 7.1 muestra un ejemplo de un programa en Pascal. No espere entender por comple-
to el código. No obstante, deberá poder ver dónde se inicializan los datos y dónde está la sali-
da a la pantalla.

Llsnoo 7.1 Pnscnl MANEJA BIEN Los coNsrRucroREs DE pRocRAvleclótr¡ ESTRUcTuRADA

1: { Anneglos constantes Ilenados con negist t'os


2: que contienen estadísticas sobne pensonas)
3: PR0GRAM People;
4= USES Cnt ;
5: TYPE PensonTypes ( Employee, Vendor, Customen) ;
6: Pe rsonSt ning srRrNGtel;
7= PensonRecond RECORD
8: Name: PensonStning;
Q. Balance: WORD;
1@: END;
11: PensonNameAnr-ay = ARRAY I PensonTypes ] 0F PensonRecond ;
12= CONST People: PensonNameAnray =
13: ((Name: 'SaLly'; Balance: 323.56) ,
14t (Name: 'Ted'; Balance: 0.00\,
15: (Name: 'John' ; Balance: 1212.37));
16: VAR Penson : PensonTypes;

continúa
Llsrnoo 7.1 coNTtruuaclóru

17:
18: {La nutina pnincipal de salida apanece a continuación}
19: BEGIN
2@: CLRSCR;
21t WRITELN( I *** Gente en eI sistema *** I ) '
22: WRITELN;
23= FOR Person '= Employee T0 Customen D0
24: WITH People I Penson ] D0
25= BEGIN
26= WRITELN ( Name, ' tiene un balance de $' ,
271 Balance,'.');
28: WRITELN;
29t END; {with}
3@: END. {People}

Por muchos años, uno de los mayores promotores de Pascal en la indusüia de las PC fue Borland
International. Borland, ahora llamado Inprise, se ganó la reputación de ser el principal proveedor
de productos de programación Pascal a mediados de la década de los 80 con la überación de su
primer lenguaje Pascal, Tirbo Pascal 1.0. Turbo Pascal, que se volvió Borland Pascal con la ver-
sión de Windows, creció hasta convertirse en un ambiente de programación completo que inoluía
extensas bibliotecas de apoyo de gráficos y de base de datos. Algunos piensan que sin el apoyo
de Borland en esa época, el lenguaje había muerto antes de 1990. Gracias a Borland, aún existe
una pequeña base de programadores de Pascal y pubücaciones de apoyo. A pesar de los intensos
esfuerzos de Borland por impulsar el lenguaje, Pascal es más bien un buen recuerdo, inclusive
para aquellos programadores que lo emplearon exclusivamente en la década de los 80.

Muchas un¡versidades y co¡egios siguen requ¡riendo que sus estudiantes


tomen un curso de Pascal hacia el inicio de sus estudios. El manejo de la pro-
gramación estructurada de Pascal es tal que los educadores piensan que,
aún cuando el mundo de las computadoras en general ya no usa ese lengua-
je, los programadores novatos pueden aprender mucho sobre la manera de
programar correctamente valiéndose de é!. Con el aprendizaje de Pasca!
desarrollará buenos hábitos de programación que permanecerán con usted
cuando pase a otros lenguajes. Por tanto, Pascal sigue teniendo fuerza a
nivel educativo y es posible que continúe así durante algún tiempo.

Inprise desarrolló un nuevo lenguaje de programación en la década de los 90, llamado Delphi,
que esperaban continuaría el camino donde se detuvo Pascal. Delphi es un lenguaje üsual que
permite a los programadores crear aplicaciones Windows con un mínimo de esfuerzo de pro-
gramación. Delphi cuenta con seguidores fieles, no muy distintos de los empecinados progra-
madores de Pascal que aún emplean este lenguaje. Inprise desarrolló Delphi para competir
con Visual Basic de Microsoft (que describiremos más adelante en esta hora), pero Visual Ba-
sic se usa mucho más que Delphi.
Lenguajes de programación: la época moderna 12e
1

H¡storia de C
Durante la hora 15, "Programación con C", aprenderá muchos detalles sobre el lenguaje C.
Como avance, esta hora explica los antecedentes de C y muestra cómo encaja con el resto de
los lenguajes de programación actuales.

Brian Kernighan y Dennis Ritchie desarrollaron el lenguaje C en los Laboratorios Bell; su


lenguaje de programación logró que sus nombres fueran tan famosos en la industria de la
computación como lo es Charles Lindbergh en la aviación . En 1972,1os Laboratorios Bell ne-
cesitaban escribi¡ un nuevo sistema operativo. Hasta ese momento, todos los sistemas operati-
vos se escribían en lenguaje ensamblador, pues los lenguajes de programación de alto nivel no
eran 1o bastante eficientes, dada la falta de poder de las computadoras. El problema con la
programación de bajo nivel en lenguaje ensamblador es que el código es difícil de mantener.
A la hora de actualizar los sistemas operativos, los programadores temían a las pesadillas que
conllevaba la actualización del código ensamblador.

El sistema operativo que resultó de este proyecto se llamó UNIX, el cual


sigue siendo de amplio uso en las minicomputadoras.

Bell no queía que su nuevo sistema operativo fuera tan difícil de mahtener como los anterio-
res, pero en aquel entonces no existía ningun lenguaje de alto nivel que estuviera a la altura
de la tarea. Por tanto, deciüeron escribir un nuevo lenguaje de programación que fuera de fá-
cil mantenimiento, como tienden a serlo los lenguajes de alto nivel, y casi tan eficiente como
el código ensamblador.

Kernighan y Ritchie (conocidos en la industria como K&R) hicieron varios intentos, llegando
por fin al lenguaje de programación C. (La historia cuenta que sus primeros dos intentos, A y
B, fallaron, pero el tercero resultó una maravilla.)

C es conocido como lenguaje de alto-bajo niyel, lo que quiere decir que maneja to-
dos los constructores de cualquier lenguaje de ato nivel, incluyendo constructores de
programación estructurada, y que también compila en un código compacto y eficiente que se
ejecuta con casi la misma velocidad que el lenguaje ensamblador. Los Laboratorios Bell obtu-
vieron un sistema operativo eficiente así como de fácil mantenimiento y actualización.

El éxito de C
La popularidad de C creció con rapidez. A las compañías les gustaba la idea de tener progra-
mas más eficientes. Un programa en C podía ejecutarse hasta diez veces más nípido que uno
equivalente en COBOL. Aunque C no ha desplazado a COBOL en los departamentos de pro-
r 130 Hora 7
I

gramación, está próximo a lograrlo. El lenguaje de programación C es el lenguaje que la ma-


yoría de las personas quieren aprender. Vea cualquier anaquel de libros sobre programación y
encontrará muchos títulos sobre el lenguaje de programación C.

La industria del cómputo nunca vio una aceptación ni un movimiento tan difundidos para un
solo lenguaje de programación como el de C a finales de la década de los 80 y comienzos de
los 90. Los clticos de C pronto se vuelven versados. En las escuelas hay una enorme canti-
dad de inscripciones para sus clases de C. Las ventas de sus libros (y de C++) siguen batien-
do marcas. Muchas compañías han convertido sus departamentos de programación en talleres
de procesamiento de datos en C (y C++). Los anuncios de empleos én las secciones de pro-
gramación de los periódicos piden siempre programadores de este lenguaje (y de C++). Ha
llegado el momento en que, si usted no sabe C, lo mejor será aprenderlo, y pronto.

C no es necesariamente una buena selección como primer lenguaje de programación a apren-


der. Un lenguaje tipo BASIC, aunque muy distinto de C, es una buena introducción de éste.
Debido a que las siguientes lecciones de esta obra le enseñarán los fundamentos de programa-
ción QBasic, tal vez C podía ser su próximo lenguaje después de terminar este libro. De ser
así, tome las cosas con tranquilidad y no espere dominar C en una semana o dos. (La hora 15,
"Programación con C", y la 16, "Programación con C++", le enseñan lo esencial de C y C++,
para que conozca la diferencia entre estos dos lenguajes primos.)

Sean cuales fueren sus metas como programador; planifique hacer de C el

9 lenguaje que aprenderá tarde o temprano. En los próximos años, parece que
los empleos en C (y en su suceso[ C++, que se describe más adelante en esta
lección) segu¡rán siendo abundantes.

Características del lengua¡e C


Un rápido vistazo a C ayudará a despejar parte del misterio que lo rodea. Algunos consideran
que C es un lenguaje de programación críptico. C puede ser cíptico si no se escribe y docu-
menta bien. Es un lenguaje de forma libre que permite comentarios, con los que puede descri-
Lenguajes de programación: la época moderna 131
I

bir lo que sucede en el programa. Esto subsana parte de la naturaleza críptica de los progra-
mas en C. Los programas en C no son tan diflciles de seguir; un programa C bien escrito es
más fácil de entender que un programa COBOL mal escrito, aún cuando COBOL es un len-
guaje autodocumentado legible por los no programadores.

C es conocido como un lenguaje de programación "escrito por programadores para programa-


dores". Muchos lenguajes de programación tienen demasiadas reglas que restringen al progra-
mador. C le permite salirse con la suya en muchas cosas que otros lenguajes no. Al hacerlo,
los programadores deben tener un ojo avizor para los errores lógicos. Debido a que el compi-
lador de C detecta menos errores, los programadores tienen una mayor responsabilidad en
asegurar que su código esté correcto.

C es un lenguaje con pocas palabras y numerosos operadores. Éste lenguaje de programación


sólo cuenta con32 comandos. Los lenguajes como COBOL y QBasic tienen más de cien co-
mandos; C intenta ser más conciso.

C tiene más operadores que cualquier oüo lenguaje de programación, excepto el len-
guaje científico APL que describimos en la hora anterior. Un operador generalmente
es un carácter especial que lleva a cabo alguna operación sobre datos. No todos los operado-
res son matemáticos, pero los operadores matemáücos primarios son la manera más obvia de
aprendet sobre operadores, pues usted ya está acostumbrado a ellos. En la expresión 5 + 6, et
signo (+) es un operador. La mayoría de los lenguajes de programación emplean los cuatro
operadores que aparecen en la tabla 7.1 como sus operadores matemáticos prinarios, los cua-
les se parecen mucho a los operadores de otros lenguajes. C no es la excepción.

Ttsu 7.f Los opeReoones uare¡vlÁlcos pRrMARros oe C


Operador Ejemplo Descripción
5+6 Suma

t0-4 Resta
* 4*7 Multiplicación
I 27 t9 División

El asterisco multiplicación, pues la x mi-


se usa en los lenguajes de programación para la
núscula se emplea para otras cosas, principalmente para nombres de valores de datos. No
existe un símbolo de üvisión en los teclados de las computadoras por lo que, casi de manera
universal, una diagonal normal indica la división.

Durante el aprendizaje de un lenguaje de programación, descubrirá cómo funcionan los nom-


bres de los comandos y de qué manera los operadores manipulan los datos. A diferencia de la
mayor parte de los lenguajes, el aprenüzaje del funcionamiento de los operadores de C es de
importancia capital. Gran parte de su tiempo de aprendizaje de C lo dedicará a trabajar con
sus operadores. La gran cantidad de operadores es lo que hace pensar que C es un lenguaje
132 Hora 7
|

críptico o matemático. De hecho, no todos los operadores de C son matemáticos. La lista


completa de los operadores de C contiene algunos que no tienen nada que ver con las opera-
ciones matemáticas. Muchos de ellos sustituyen a comandos de otros lenguajes. Este abun-
dante empleo de operadores en C lo hace muy eficiente y conciso.

El listado 7.2 muestra un ejemplo de un programa en C. Como podrá deducir, un programa en


C se parece mucho a los demás progrrrmas que ha visto en este capítulo y el anterior. El
aprendizaje de otro lenguaje de programación es más un ejercicio de detección de sus simi-
litudes con otros, que ver sus diferencias. Repase el programa y vea si puede determinar su
propósito.

Lrsraoo 7.2 Ur.¡ pnocReuA EN C pUEDE pAREcER cRfplco DEBtDo A Los opEMDoREs
1: /* Juego de adivinanza de letnas */
2: #include <stdio.h>
3: #include <time.h>
4r #include <stdlib.h>
5: main( )
6:{
7i Ínt tries = 0;
8: char compAns, userGuess;
o.
1O': /* Guarda¡ Ia letra de Ia computadora */
11: srand(time(NULL) ) ; /* Inicializar de manera aleatoria eI generador
de números aleatorios */
'12:. compAns = lrand0 t 26) + 65; /* Generar una letra aleatoria */
13:
14; pnintf ( " Estoy pensando en una letra. . . " ) ;
15: do {
16: printf ( " éCuáI cree que sea? " ) ;
17i scanf(" %c", &userGuess);
18: tnies++; /* Sumar 1 aI contador de intentos */
19: if (userGuess > compAns)
2O: { printf("Su letra es demasiado gnande");
21t printf("de nuevo...");
22t )
23t if (userGuess < compAns)
24i { printf("Su letra es demasiado pequeña,,);
25| printf("de nuevo...");
26= )
27i ) while (userGuess l= compAns)i /* Terminar cuando
2gi es iguar */
291
301 /* EI usuario adivinó cornectamente, avísale */
31: printf(tr*** ¡Felicidadesl ¡Es Ia letra correcta! ,,);
32i printf("Lo hizo en %d Íntentos,', tries);
33: netunn 0;
34: )
Lenguajes de programación: la época moderna 133
|

Este programa es un juego de adivinanza de leúas. La computadora genera una letra aleatoria
y hace un ciclo hasta que el usuario la adivina. No es necesario que entienda las instrucciones
en C para tener una buena idea del funcionamiento del progrrrma. Puede leer el texto del pro-
grama y determinar mucho. No todas las insffucciones son tan crípticas. printf evidente-
mente imprime algo en la pantalla. El programa tiene arnplios comentarios (descripciones que
no son instrucciones de C, sino notas para quienes lo leen); los comentarios de C siempre
aparecen entre /* y */. Como puede ver, los programas en C no siempre son tan cípticos co-
mo se dice pero, para realmente dominar C, es muy útil conocer antes otro lenguaje.

C++, un me¡or C
De alguna manera, C está perdiendo terreno como el lenguaje más popular en la actualidad,
pero su primo cercano y sucesor, C++, está ganando una buena parte de ese apoyo. C++ es
una versión más nueva de C. Fue diseñado por un programador sueco, Bjarne Stroustrup, a
comienzos de la década de los 80. La ventaja de C++ sobre otros lenguajes nuevos es que se
basa en C. En realidad, muchos programas en C++ se ven iguales a los programas en C, pues
la mayor parte de C++ es C. C++ ofrece algunos comandos y operadores nuevos, pero princi-
palmente es otra manera de progtamar en C.

C++ es un lenguaje más restrictivo que C normal. No ofrece al programador la libertad que
permite C, pero tampoco deja que tantos errores ocultos enffen en el código, pues es más es-
tricto que C.

El lenguaje C++ añade apenas unos cuantos comandos y operadores al C'normal. La popula-
ridad de C++ se atribuye a sus capacidades de orientación a objetos y a su naturaleza más res-
trictiva. El listado 7.3 le muestra la versión de C++ del juego de adivinanza de letras. Como
puede ver, es muy parecido al código de C.
Lrsraoo 7.3 Los pRoGRAMAs eru C++ soN MUy stMtLAREs e C

1: I I Juego de adÍvinanza de letras


2; #include <iostneam. h>
3: #include <time. h>
4: #include <stdlib. h>
5: main ( )
6: {
7= int tries = O;
8: chan compAns, usenGuess;
Qr

1@: I Guandan Ia Ietna de


I Ia computadora
11: snand (time (NULL) ) II Inicializar de manena aleatonia eI genenadon
;
de números aleatonios
12: compAns = (rando % 26) + 65; I I Generar una letna aleatonia
13:
14=
15: do{
16:
17=
18: tries++ ; I / Suman 1 aI contador de intentos
19:
2@:
21 t
22= )
23:
24=
25:
26: )
27= ) while (usenGuess != compAns); I I Termina cuando
28= I I es igual
29;
30: I I EI usuario adivinó cornectamente, dvísaIe
31 :
32=
33: neturn O;
34:

Los BASlCos
Este estudio sobre lenguajes específicos concluye con una explicación de BASIC, a fin de
prepararle para la lección de la siguiente hora, donde se enseña una versión moderna de BA-
SIC, llamada QBasic. BASIC fue desarrollado en el Dartmouth College para enseñar a pro-
gramar a principiantes. El lenguaje FORTRAN era un poco complejo para que los estudiantes
lo aprendiesen con la suficiente rapidez, para que fuese de utilidad en
sus estudios. John Ke-
meny y Thomas Kurtz, quienes impartfan cursos en Dartmouth, usaron FORTRAN como base
para crear BASIC. BASIC significa Código de instrucciones simbólicas de propósito general
para principiainr¿s, nombre más pretencioso que el lenguaje mismo.
Lenguajes de programación: la.época moderna 135

BASIC por lo regulár se ejecuta en un ambiente interpretado, aunque sus versiones modernas
se pueden compilar. Con un intérprete, los novatos se pueden concenffar en el lenguaje de
programación sin preocuparse por la compilación del programa. Como con cualquier lenguaje
interpretado, los programas BASIC interpretados se ejecutan de manera más lenta que los
programas compilados, de modo que no se emplean mucho en las empresas.

Con el paso de los años, se ha distribuido BASIC en muchas formas distintas. El lenguaje
BASIC original tenía muy poca estructura y reglas estrictas de codificación. Se pensaba que
estas reglas acabarían con parte de la ambigüedad de otros lenguajes de programación y ace-
lerarían el aprendizaje del lenguaje. El listado 7.4 muestra la versión de un programa escrito
en el lenguaje BASIC original. Por las instrucciones GOTO se dará cuenta de que el lenguaje
no está bien estructurado y ofrece la posibilidad de generar código espagueti. Además, cada
lÍnea requería un número de línea. La práctica común era incrementar los números de línea de
diez en diez, de modo que posteriormente pudiese insertar hasta nueve líneas más entre las ya
existentes.

Lrsrnoo 7.4 Et LENGUAJE BASIC oRrcrNAL REeUERíA NúMERos DE LíNEA

1: 1@ REM Juego de adivinanza de letnas en BASIC


2= 20 un númeno aleatonio entne 65
REM Genenan y g0
3: 3@ REM (65 ASCII es A y 90 ASCII es Z)
4'. 40 NUM = (INT(RND * 26)) + 65
rJ¡ 50 CA$ = CHR$(NUM)
6: 60 CLS
7'. 7@ PRINT ¡r *** JUegO de adivinanza de letras cr,r* rr

8: 80 PRINT
9: 90 PRINT " Estoy pensando en una let l^€[ ..."
10: 1@A INPUT " óCuáI cree que sea? " ; UG$
11: 110 TR = TR + 1
12:
13:
14= 140. G0T0 210
15: 15@ PRINT "Su letna es demasiado gnande"
16: 160 PRINT "Otna vez. . . "
17 17A G0T0 2AO
=
1 : 1 80 PRINT " Su let na es demasiado
8 pequeña "

19: 190 PRINT "Otra vez. . . "


2@= 20A G0T0 1@A
21: 21A REM Aquí sí es Ia letna connecta
22= 22A PRINT rr*** iFelicidades! iEs Ia letna connecta!
23: 23A PRINT " Le llevó " ; TR; " intentos . "
24= 240 END

La salida de este programa aparece a continuación. Trate de seguir el programa para ver có-
mo se generó la salida. Esto le preparará para el siguiente capítulo, donde aprenderá a escri-
136 Hora 7
I

bir programas en BASIC. Cuando analice el programa, trate de contestar estas preguntas:

¿Dónde están los comentarios del programa? (Los comentarios son instrucciones para añadir
observaciones al programa. Son ignorados por BASIC al ejecutar el programa. Existen para
documentar el código, de modo que quien 1o revise tenga una mejor idea de 1o que debe ha-
cer el programa.) ¿Dónde está el ciclo del programa? ¿Qué comando de BASIC produce la
salida?
*** Juego de adÍv Lnanza de letnas ***
Estoy pensando en una Ietra...
&CuáI cree que sea? A
Su letra es demasiado pequeña
0tra vez...
¿cuáI cree que sea? z
Su letra es demasiado grande
Otra vez...
éCuál cnee que sea? M
Su letra es demasiado pequeña
otra vez. , .
éCuál cree que sea? V
Su letra es demasiado grande
otra vez...
óCuáI cree que sea? S
*** ¡Felicidadesl iEs Ia letra correcta! Le IIevó
* únicamente 5 intentos.
Aunque BASIC comenzó como un lenguaje para principiantes y sigue siendo bastante
útil como introducción a la programación, sus versiones actuales rivalizan con Pascal y C
por su rico conjunto de elementos de programación estructurada. A conti¡uación se pre-
sentan algunos de los nombres que ha tenido BASIC a lo largo de su evolución:
. BASICA (por BASIC Avanzadd
. GWBASIC (por Gee Whiz BASIC )
. Power BASIC
. Ttrbo BASIC
. QuickBASIC (BASIC compilado)
. QBasic (se comenzó a suminisüar con MS-DOS a partir de la versión 5.0 de DOS)
. Visual Basic (apareció tanto una versión basada en DOS como otra en Windows, aun-
que ésta última es la única que sigue a la venta).

Uno de los mayores factores del éxito de BASIC fue que Microsoft lo adoptó. Microsoft ha
ofrecido muchas versiones de BASIC a lo largo de los años, mejoriíndolo en cada versión que
libera. Microsoft fue una de las primeras compañías en ofrecer un BASIC compilado para PC
(QuickBASIC). Es la compañía que suministró QBasic (la versión estructurada interactiva de
Lenguajes de programación: la época moderna 137
I

BASIC que aprenderá en la siguiente hora) en DOS 5.0 y sus versiones posteriores. También
distribuye Visual Basic, una herramienta grátfica de programación con la que se pueden escri-
bir programas personalizados de Windows (que se describen en la siguiente sección, así como
durante la hora 14, "Programación conVisual Basic").

Con QuickBASIC, BASIC abandonó las filas de los lenguajes de programación amateur e in-
gresó en la categoría de los lenguajes de programación bien escritos, estructurados y compila-
dos, rivalizando tanto con Pascal como con C.

El listado 7.5 muestra una versión en QuickBASIC del juego de adivinanza de letras que vio
antes en este capítulo. Observe que no hay números de línea, que el programa es de forma li-
bre y que es fácil de seguir, características que los rígidos BASIC de antaño no tenían. Quick-
BASIC es muy parecido a C o a Pascdl en cuanto a su apariencia. (Afortunadamente,
Visual Basic, la versión de mayor venta en la actualidad del lenguaje BASIC, conserva las
ventajas de QuickBASIC y añade capacidades de programación en Windows.)

Llsrnoo 7.5 E.len¡plo DE pRoGRAMA EN QurcKBASlC, eu¡ ES DE FoRMA MÁs UBRE auE BASIC

1: ' Los BASIC más nuevos penmiten ' , fonma más bneve
' pana comentarios que REM
2= ' Juego de adivinanza de Ietnas
3:
4= num = (INT(RND ,r 26)) + 65 ' Genenan un númeno aleatorio entne

y eo AS'II
5:
i ?:'io33,,
es Z)
es A

6: compAns$ = CHR$(num) ' Conviente eI númeno en letna


7= tnies = A
8:
9: CLS ' Bonnan Ia pantalla
1@= PRINT rr *** Juego de adivinanza de letnas *** rr

11: PRINT
12= PRINT "Estoy pensando en una letna. . . "
13:
14= D0
15: INPUT "óCuáI cnee que sea?"; use¡^Guess$
1 6: tnies = tries + 1

18: PRINT " Su letra es demasiado gnande "

19: PRINT "Otra vez. . . "


2@: ELSE

22= PRINT "Su letna es demasiado pequeña"


23'. PRINT "0tra Yez..."
241 END IF
25 END I F

contínúa

También podría gustarte