Professional Documents
Culture Documents
\
n"
f. 'o
"ij .1.iw
Kmr}Jth~
~SP·
.
LIBRERIA UNIVERSITARIA
..
UNIVERSIDAD DE PANAMA
TELEFONO : 23-3155
. --
INTRODUCCION A LA CIENCIA
DE LA COMPUTACION
'
!f tJ
,;"t
NTRODUCCON
010 CENCA
de10
Vladimir Zwass COMPUTACON
ESP AÑA-ARGENTINA-CHILE-VENEZUELA-COLOMBIA-J:>ERU
Bolivia - Brasil - Costa Rica - Dominicana - Ecuador - El Salvador
Estados Uni,µos - Guatemala - Honduras - Nicaragua - Panamá
Paraguay - Portugal - Puerto Rico - Uruguay
::;¿~.
J..~~;'.·• -
Título original en inglés :
Introduction to COMPUTER SCIENCE
Traducido por:
ING. MARIO ESTEBAN CHAVEZ MARTINEZ
Publicada por:
BARNES & NOBLE BOOKS
A Division of Harper & Row , Publishers
ISBN 968-26-0520-2
le
r ,
Contenido
Prefacio 13
ALGORITMOS Y SU EXPRESION Sl
A. Definición de algoritmos 31
B. Propiedades de los algoritmos 33
C. Diagramas de fabricación 35
A. Instrucciones 39
B. Tipos de datos simples 40
C. Constantes, variables y arreglos 41
D. Declaraciones 44
E. Entrada y salida 45
F. Asignación 46
G. Comentarios 48
H. Repaso 49
Contenido 11
JO Contenido
Prefacio
Los lectores que deseen familiarizarse pvr sí mismos con el campo de Ja compu·
tación sin hacer un estudio muy profundo de la ciencia de Ja computación lograrán
sus objetivos al leer Ja Introducción y Ja Pane 2. Un indice más bieP exhaustivo le
ayudará a colocar este libro en un uso enciclopédico. Se recomienda ampliamente Introducción
Ja lectura adicional.
Deseo agradecer a mis colegas - cienúficos y prácticos de Ja C'omputación - y a Las Computadoras
mis estudiantes, por su panicipación al proporcionarme Ja comprensión necesaria
para desarrollar esta presentación de un campo complejo que crece rápidamente. y su Uso en la Solución
Quisiera agradecer también ajeanne Flagg de Barnes & Noble por su expena ayu·
da editorial y a Janet Goldstein por su trabajo de supervisión al vigilar este libro du· de Problemas
rante su producción.
Vladimir Zwass
Una computadora es una máquina que procesa datos o, en otras palabras, una má·
quina para Ja manipulación de símbolos. Estos simbolos representan informaci'ón
de varias clases, por ejemplo, un número o un nombre.
La palabra "computadora" se usa en Ja actualidad como una abreviación de
computadora electrónica digital de programa de usos generales. Estas se refieren a
las siguientes propiedades.
Propósitos generales. Las computadoras se pueden aplicar para resolver cual·
quier problema que tenga solución. La computadora es dirigida por un programa,
esto es, una secuencia de instrucciones que determinan las operaciones que van a
ser realizadas por la máquina. Los programas están escritos por los humanos. Un
programa se puede reemplazar con facilidad por otro, por lo que cambia el uso de
la máquina. Una máquina de capacidad más lixp.itada, diseñada para una tarea en
panicular, es llamadá una computadora tie propósito especial.
Todas las computadoras modernas tienen sus programas almacenados con Jos
datos en una memon'a (llamada también almacén). Estas computadoras de progra-
ma almacenado han sido desarrolladas a panir de dispositivo de cálculo en los que
16 Introducción Introducción 17
simple. Tal dispositivo, cuando se ensamblaba con otras pocas obleas para el resto
(c) Operación en medios inaccesibles para los humanos; estas aplicaciones
de las fun~iones (por ejemplo, la memoria), formaba un microcomputador.
incluyen vuelos no tripulados al espacio u operaciones en presencia de ra-
Las mini y microcomputadoras, debido a su bajo costo y tamaño pequeño, origi- diaciones.
naron una amplia distribución de Ja computación . Sus capacidades crecieron de (d) Tareas rutinarias de naturaleza·repetitiva, como la impresión de un repor-
manera impresionante. te o la actualización de cuentas.
La historia del software de los sistemas es muy breve, se originó con la invención
de las computadoras de programas almacenados. Al principio, Jos programadores El último criterio para el uso profesional de una computadora en una tarea dada
usaban el lenguaje de la máquina. A mediados de la década de 1950, se comenza- es por lo general el de costo-efectividad. En muchos casos, la satisfacción derivada
ron a introducir Jos lenguajes de alto nivel, con el tal vez más poderoso de éstos, el por el usuario de un plan conveniente y justo tan1bién contribuye. La computación
FORTRAN presentado en su forma original en 1957. Los sistemas de operación, al doméstica se ha desarrollado de una manera sigriificativa.
principio muy simples en sus funciones, también fueron creados a mediados de la
década de 1950. La década de 1970 trajo al software sofisticado para el manejo de
volúmenes grandes de datos interrelacionados y las comunicaciones entre computa-
2. AREAS DE USO DE LA CGMPUTADORA
doras lejanas.
Slotnick, D. L., and Slotnick, J. K.: Computers, Their Structure, Use, and lnfluence,
Prentice-Hall, Englewood Cliffs, N.J., 1979.
Fig. I-2. Organización del sistema de cómputo. Este extenso trabajo analiza muchos aspectos de la aplicación de las computado-
ras; incluye una introducción a la organización de los sistemas de cómputo y
programación BASIC.
La unidad de lógica aritmética (ALU)* contiene los circuitos necesarios para Dorf, R. C.: Computer ami Man, Boyd and Fraser, San Francisco, 1974.
llevar a cabo las operaciones aritméticas básicas asf como las lógicas (por ejemplo , En algunos aspectos complementa al libro de Slotnick, este trabajo incluye un aná -
una comparación). La ALU también contiene un cierto núniero de registros o ele· lisis sobre las computadoras en las anes .
mentos de archivo rápidos. Cada registro puede retener un operando simple (partí· Sanders, D. H.: Compute,.s in Society, 2nd ed., McGraw-Hill, New York, 1977.
da de datos) . Cuando se registran, los operandós pueden ser sumados, comparados, Se analizan los impactos positivos y negativoa de las computadoras.
cambiados o manejados de cualquier forma . Adams, J. M., and Haden, D. H.: Social Effects o/Computer Use ami Misuse, Wi-
ley, New York, 1976.
Incluye varios papeles importantes, documentos y reflexiones; da una perspectiva
3. MEMORIA en el uso de las inteligencias anificiales.
La memoria principal de la computadora consta de una cantidad de posiciones lla- HISTORIA DE LAS COMPUTADORAS
madas palabras, que contienen instrucciones o partidas de datos . Cada palabra
Harmon, M.: Stretching Man 's Mind: A History of Data Processing, Mason/
consiste de un número uniforme de biu (cada uno igual a 1 o O), tiene una orienta-
Charter, New York, 1975.
ción única, que es su número en la memoria. La CPU identifica u orienta una pa- Para principiantes.
labra dada, ya sea, para escribirla en su posición, almacenar nuevos contenidos en Goldstine, H . H .: The Computer: From Pascal to von Neumann, Princeton Universi-
ella o para leer de ella, extrayendo los contenidos de la palabra sin borrarlos. De es- ty Press, Princeton, N .J., 1974
ta manera , la CPU puede obtener las instrucciones y datos para el programa y en El autor . un colaborador de von Neumann, enfatiza el desarrollo explosivo que si-
consecuencia almacenar los resultados en la memoria . gue a la Segunda Guerra Mundial.
Para ampliar la capacidad de la memoria principal a un costo razonable, los sis- Eames, C., and Eames, R.: A Computer Perspective, Harvard University Press, Cam-
temas de cómputo generalmente tienen una memoria secundaria (auxiliar), selec- bridge, Mass., 1974.
cionada de tipos de archivo más baratos y lentos que la principal . El software y los Una publicación ricamente iluatrada,
datos que no se espera que sean usados pronto se almacenan al!i . Las partidas con- Rosen, S., ed.: Programming Systems and Languages, McGraw-Hill, New York,
1967.
tenidas en el archivo secundario son accesibles generalmente a la CPU sálo siguien-
Esta colección de anlculos semanales que apareció en el año de 1957-1965 contiene
do su transferencia a la memoria principal. un estudio histórico introductorio sobre el software y los lenguajes de programa-
ción.
::::> "'o
+"'
C'a
E
e: C'a
Q) Q)
......., E o
~
C>
l... C'a
ro "'C
e: o.
~
a.. ::lQ)
u. "'C
¡-
J.,
r
u~
1
Algoritmos
~·"' ~
. y su Expresión
¡\
doras.
Es importante recordar mientras diseñamos un algoritmo que una computadora
sólo sigue las instrucciones y no puede actuar si no se le ha ordenado de manera
explicita. Por tanto, el solucionador de problemas debe prever cualquier aspecto
del problema en el propio algoritmo.
Este capitulo especifica la(propiedades que deben tener los procedimientos para
Ja solución de problemas si van a hacerse por algoritmos. Estas son la no limitación,
ausencia de ambigüedad, definición de la secuencia, definición de entrada y de sa-
lida, efectividad y definición del alcance. Los diagramas de fabricación se presen-
tan como una herramienta para la expresión de los algoritmos. En los capítulos si-
guientes se introduce otra herramienta, con frecuencia más útil, para esta tarea:. el
seudocódigo.
A. DEFINICION DE ALGORITMOS
Todas las tareas que puede llevar a cabo una computadora se pueden expresar co-
mo algoritmos. Una vez que se ha diseñado un algoritmo, se codifica en un lenguaje
de programación, y el programa se realiza por una computadora.
Un algoritmo es un conjunto finito de instrucciones que especifican una secuen-
dificultades al pensar en términos de estas instrucciones, ya. que los detalles pueden ~·')
deténgase; incremente también el CONTADOR en l . introduzca el siguiente entero . y
oscurecer la esencia del prnc..d.irnicnto . Sin embargo, los lenguajes de programa- llámelo NUM l , entonces realice de nuevo este paso ( 5) .
cion de<llto nivel que son comprendidos por los traductores del software de las com- Notas
putadoras, no son una herramienta apropiada para Ja expresión de los algoritmos. l. Observe que no es la intención del problema ahorrar números en la memoria. Piense en
Los programas con miles de instrucciones de lenguaje de alto nivel suceden con la forma en que se llama a los números y la razón para esto.
mucha frecuencia . Es imposible presentar tales programas de manera inmediata en 2. Continúe el algoritmo con unos cuantos enteros que usted escoja y convénzase por si mis-
mo de su veracidad.
su forma final ; el diseñador debe comenzar con una representación mucho más
concisa.
EJEMPLO 1-1
B. PROPIEDADES DE LOS ALGORITMOS
~
Aquí se presenta un algoritmo simple como una lista de instrucciones del idioma inglés . Un procedimiento que no tiene las propiedades enunciadas abajo no es un algorit-
Problema mo y generalmente no proporciona-el resultado deseado cuando un programa basa-
Detennine el mayor de tres enteros. ·do en él se presenta a una computadora.
l.
Algoritmo: descripción inicial
Compare el primero y el segundo enteros y establezca cuál es el mayor. 1
2.
· l.
Compare el último con el tercer enteros. El mayor es el resultado.
Algoritmo: refinamiento
Obtenga (entrada) el primer número; llámelo N UMI.
• f 1. LIMITACION
~
2. Obtenga (entrada) el segundo número ; llámelo NUM2 . La ejecución de un algoritmo programado se debe completar después de que se ha-
3. Compare el NUMl con el NUM2 y seleccione el mayor; si los dos enteros son iguales, se- ya llevado a cabo una cantidad finita de operaciones. De otra manera , no podremos
leccione el NUML Llame a este mimero el MAYOR (LARGE). exigir que la ejecución produzca una solución.
4. Obtenga (entrada) el tercer número y llámelo NUM3.
5. Compare el MAYOR con el NUM3 y seleccione el mayor ; si los dos enteros son iguales , Es obvio que el proceso de solución enunciado en el Ej . l-l tiene esta propiedad, ya que cá-
seleccione el MAYOR. Llame a este número el MAYOR. da paso se lleva a cabo una vez. En el Ej . 1-2. el Paso 5 será repetido N-1 veces. Dado que
6. Presente (salida) al MAYOR. N es finito, podemos concluir que la realización de este procedimiento será completada des-
7. Deténgase . pués de un número finito de pasos.
Notas
Note que en el diseño de un algoritmo se toman ciertas decisiones a discreción del diseñador Se debe observar lo siguiente:
(por ejemplo , el Paso 4 puede preceder al Paso 3; si dos enteros son iguales en el Paso 3, se
puede seleccionar cualquiera) . Sin embargo . otros pasos de ninguna forma pueden ser cam - (a) El número actual de pasos depende de Ja minuciosidad (grado de detalle) de la
biados sin alterar la integridad del algoritmo (por ejemplo , el Paso 4 tiene que preceder al Pa-
presentación de un algoritmo.
so 5).
EJEMPLO 1-2 En el Ej. l-2 , el Paso 5 se puede dividir en varios pasos; los Pasos l y 2 se pueden combi-
nar.
Aquí se presenta un problema algo más complejo que el del ejemplo anterior. Al final , el número de pasos es el número de instrucciones de máquinas realiza-
Problema das . Esto, de cualquier forma, depende también del modelo de la computadora
Determine el mayor de N enteros , cuando N >j 2. usada.
Análisis
Dado que el algoritmo se tiene que aplicar para .cualquier N > 2, N debe ser un parámetro . (b) El número de operaciones realizadas raramente es igual al número de pasos en
Por tanto, será una de las entradas al programa , junto con los propios enteros.
la descripción del algoritmo (o al número de instrucciones en el programa) . El
Algoritmo
número de pasos rea'.lizados en la actualidad durante la ejecución de un
l. Entrada N .
2. Entra el primer entero; llámelo NUMl . programa depende de Ja entrada de datos y no siempre puede ser determinado
3. Entra,,¡ segundo entero; llámelo MAYOR .(LARGE). de antemano.
4. Ajuste un contador de enteros~ que tenga que leer el interior; llámele CONTADOR (c) Un algoritmo dirigido a terminar un programa en 100 años es difícilmente útil.
(COUNT) ; conjunte el CONTADOR igual a 2.
5. Compare el NUMJ con el MAYOR; si el NUMl es más grande que el MAYOR, enton· La esencia del método del algoritmo consiste en Ja repetición del mismo paso o
ces el MAYOR es igual al NUMI. Si el CONTADOR es igual a N , aaque al MAYOR y pasos, probablemente con algunas modificaciones, muchas veces durante la realiza·
34 Fundamentos de programación Algoritmos y su expresión 35
ción de un programa basado en un algoritmo dado. La longitud del programa es, 5. EFECTIVIDAD
por tanto , un indicador pobre del tiempo de ejecución. --
Las instrucciones de un algoritmo pueden ordenar a la computadora que sólo lleve
En el Ej . 1-2 un paso simple , el Paso 5 , se realiza N·l veces. a cabo tareas que sea capaz de hacer. Una computadora no puede llevar a cabo una
instrucción si tiene información insuficiente o si el resultado de Ja ejecución de Ja
orden no está definido.
2. AUSENCIA DE AMBIGUEDAD
Si el paso 1 del Ej . 1·2 fuera oinitido, el algoritmo podrí a no ser efect ivo po r falta d e in -
1 La representación de cada paso de un algoritmo debe tener una representación úni- formación suficiente , ya que en el Paso 5 el CONTADOR (COUNT) no podría ser compara-
do a N .
ca aunque una representación para una computadora puede diferir para la de un
Si cualesquiera de las instrucciones de un algoritmo ordenara la división de un entero por
humano. Es conveniente para los humanos tratar con algoritmos presentados en
cero , el resultado podría ser indefinido .
{ una notación con detalles separados (por ejemplo , un seudocódigo o una carta de
flujo) mientras que la computadora necesita que el algoritmo sea codificado en un
programa.
i
6.
~~ ...
.-: ;;
! ·¡.
.~
Esta condición significa que cada vez que se presente para su ejecución un algo- t):f: ;~ ..- '
fitrno con los mismos datos de entrada, se obtendrán los·mismos resultados. Un algoritmo se aplica a un problema o clase de. problemas específicos; el rango de
Ja5 entradas se tiene que definir previamente; el rango determina la generalidad del
algoritmo.
3. DEFINICION DE LA SECUENCIA :!
El alcance del algoritmo en el ,Ej . 1-2, es más grande que el del algoritm o del Ej . 1-1 ya
( Se debe especificar sin lugar a dudas Ja secuencia en Ja que se deben llevar a cabo que. el posterior es el caso especial . con N = 3, del formador.
l los pasos del algoritmo. Un algoritmo debe tener una instrucción inicial única y ca-
da instrucción debe tener un sucesor único para un dato de entrada dado .
En las .especificaciones del algoritmo, incluyendo los programas, las instruc- C. DIAGRAMAS DE FABRICACION
~
ciones son llevadas a cabo de arriba hacia abajo (Ja sucesora implícita de una ins-
trucción es una consecutiva físicamente), a menos que las instrucciones por sí mis- Debido a los Cletalles requeridos de estos, los lenguajes de programación no son una
mas especifiquen otra cosa. herramienta apropiada para el diseño del algoritmo inicial. El medio de notación
más usado comúnmente para los algoritmos es un diagrama de fabricación .
La ventaja más significativa del diagrama de fabricación es una presentación
\
En el Ej . 1-2, el Paso 5 puede ser realizado más de una vez , dependiendo de N.
clara del.flujo de control en el algoritmo , es decir , la secuencia en la que se var. a
llevar a cabo las operaciones .
4. DEFINICIONES DE ENTRADA Y SALIDA Un diagrama de fabricación es una representación en dos dimensiones de un al-
goritmo ; Jos símbolos de un diagrama áe fabricación definidos previamente se usan
Las entradas son las partidas de datos presentadas al algoritmo. Un algoritmo tiene para indicar las diversas operaciones y el flujo del control.
o no entradas o un número predeterminado de ellas. Las entradas deben ser del ti - En la Fig. 1-1 se presenta un conjunto básico de símbolos de diagrama de fabri-
po para el cual se ha diseñado el algoritmo. cación establecidos. Seis de estos símbolos son contornos (también llamados cajas)
de varias formas. Cuando se usan en un diagrama de fabricación , contienen las pa-
En el Ej . 1-1, el algoritmo tiene tres entradas . En el Ej. 1-2 , el algoritmo se diseñó para
labras apropiadas, las que las hacen más precisas ya que el diagrama de fabricación
N + 1 entradas . se desarrolla para resolver un problema dado . El símbolo restante, la línea de flujo ,
En ambos casos las entradas deben ser enteros. determina la secuencia entre las tareas representadas por los contornos.
"
Í Las salidas son partidas de datos presentadas al mundo exterior corno el resulta - Los simbolos tienen Jos significados siguientes:
~
L,
do de Ja ejecución de un programa basado en el algoritmo . Un algoritmo debe pro·
proceso: una o más tareas de cómputo que se van a realizar de manera secuencial.
ducir al menos una salida (de otra manera, ¿qué uso tiene?)
entrada / salida : datos que se van a leer en Ja memoria de la computadora desde un dispositivo
de entrada o datos que se van a pasar de Ja memoria a un dispositivo de salida .
Los algoritmos de los Ejs. 1-1 y 1-2 tienen una salida cada uno.
36 Fundamentos de programación Algoritmos y su expresión 37
1
proceso
1 / /
entrada/ salida <> decisión
(
terminal
)
AjusteCONTADOR =
Verdadero ·
?~ Falso
=1- -c
NUMI >MAYOR
nota
o
conector
u~
llnea.s de flujo
A
J
.
Fig. 1-3.
Fig. 1-I. Contornos del diagrama de fabricación.
~\
decisión: son posibles dos trayectorias de ejecución alternas. Durante la ejecución se escoge la con mayor facilidad que la que tendña una descripción lineal en inglés. Dado que
ruta a seguir, probando si se satisface o no la condición especificada dentro del simbolo. la selección del nivel de detalle está a discreción del diseñador del algoritmo, los
terminal: aparece o bien al inicio de una cana de flujo (y contiene la palabra "Comienzo" diagramas de fabricación son apropiados para el método de diseño de arriba hacia
-Start-}, o bien en su conclusión (y contiene la palabra "Deténgase" ·Stop-). abajo (descrito en el Cap. 3), en el que se establece inicialmente la estrategia gene-
nota: contiene observaciones que simplifican la comprensión del algoritmo o la descripción
ral del algoritmo y los refinamientos se introducen después. Un método alterno de
del dato.
la presentación del algoritmo, el seudocódigo, se estudia también en el Cap. 3.
conector: hace posible la separación en panes del diagrama de fabricación. Se colocan sim·
bolos de referencia cruzada idénticos en este contorno en donde la linea de flujo se in·
terrumpe y en donde continúa . SUGERENCIAS PARA LECTURAS MAS PROFUNDAS
líneas de flujo: indican al siguiente contorno. PARA LOS CAPS. 1-4
En la Fig. 1 ·2 se presenta una carta de flujo para el algoritmo del Ej. 1-2 .
Si se separa el diagrama de fabricación en dos partes en el punto marcado con X, se Wirth, N.: Systematic Programming: An Introduction, Prentice-Hall, Englewood
podrían usar las conexiones como se indica en la Fig. 1·3 . Cliffs, N.J., 1973.
Una clara introducción sobre el diseño de algoritmos simples y la estructura de
Comienzo programas esenciales. Siguiendo sus páginas también aprenderá las bases de la
programación en el lenguaje Pascal.
,....._...___-; -{Entero N, NUMI, MAYOR, CONTADOR
Maly, K., and Hanson, A. R.: Fundamentals of the Computing Sciences, Prentice-
Hall, Englewood Cliffs, N.J.; 1978.
Un análisis extenso sobre el diseño del algoritmo.
Entra NUMI, MAYOR Tremblay, J.-P., and Bunt, R. B.: An lntroduction to Computer Science: Algorithmic
Approach, McGraw-Hill, New York, 1979.
Solución de problemas en una variedad de situaciones.
Ajustl'CONTAí>OR "' 2
Tonge, F. M., and Feldman, J.: Computing: an lntroduction to Procedures and Pro-
cedure-Followers, McGraw-Hill, New York, 1975.
Verdadero Wirth, N.: Algorithms +Data Structures = Programs. Prentice-Hall, Englcwood
Cliffs, N.J., 1976.
Ajuste MAYOR= NUM! Un libro más avanzado, puede ser leido como una secuencia de "Systematic
Entra NUM!
Fig. 1-2.
·2
Manejo... d·~ :~Sat:~s
en Programación
En éste y en los siguientes capítulos se presentan los conceptos generales de los algo-
ritmos en lenguajes de alto niveL Estos conceptos subrayan todos los lenguajes de
programación de uso general y forman la base para aprender cualesquiera de ellos.
Al mismo tiempo, las formas de expresión basadas en esos conceptos se usan para el
diseño de algoritmos, antes que la codificación reaL En este capitulo se estudian
también los componentes del programa usados para la manipulación de datos.
Las panidas de datos proporcionan información sobre los objetivos para los
cuales el algoritmo (o programa) se refiere en términos generales. Por ejemplo, un
programa que calcula los impuestos de los ingresos personales, necesita entre ofros
datos, el monto de los ingresos de la persona y las tasas de los grupos de impuestos.
Las dependencias naturales entre las panidas de datos , si se usan para estructu-
rar los datos, dan por resultado algoritmos más simples. Por ejemplo, si los grupos
de impuestos se acomodaran en una tabla ordenada manipulada por el programa
de cálculo de impuestos, los impuestos se podrian calcular muy fácilmente, con los
grupos listos para modificarlos si fuera necesario.
. Se usan entonces varios tipos de datos y estructuras para representar los objetos
del mundo real y las dependencias entre ellos. Se introducen en este capitulo tipos
\ de panidas de datos simples. Los arreglos, una estructura esencial de datos, se estu·
dian también. Se continúa el estudio de las estructuras de datos en el Cap . 5 .
..... ~' ·.·
... .,
....
:.·.~~-':,.~E:';: ·~ .....
A. INSTRUCCIONES ·
'
40 Fundamentos de programación Manejo de datos en programaczon 'iJ
das por los traductores del software (generalmente) en una o más instrucciones de Lógicos (o Booleanos): un tipo de datos con sólo dos valores: Cierto y Falso
l lenguaje de máquina. (representados como 1 y O). Básicamente los datos de este tipo se usan para
·--~....., ñó' ...eei'ü~ilm·,-~-r. a.·.~~~~f.es~kº~~..~~ j representar las condiciones que refuerzan las decisiones para el flujo de
.· ~- _ · "·_aooq, · ~~filí~ control, aunque se pueden utilizar para representar cualquier objetivo con
_ -~-----~ . ·a~ """'~ i>~ 1m~~ ~: Estas instrucciones son de carácter
descriptivo. Por lo general, sirven para localizar el espacio de la memoria para los
/
'\
valores binarios.
Carácter: un carácter alfabético o dígito numérico (llamados conjuntamente ca-
datos utilizados por el programa. racteres alfanumén'cos) o un símbolo especial (tal como $. !, etc.) . Por lo ge-
Otra distinción entre las instrucciones de los lenguajes de programación depen- neral. los caracteres se organizan en secuencias llamadas líneas (véase el Cap .
de de que influyan ' o no el flujo de control dentro de un programa. Las instruc- 5) . La representación de un número como una panida de datos numéricos y
ciones se ejecutan en forma secuencial , en el orden en que hayan sido presentadas a como una línea, ¡difierenl Este tipo de datos aumenta la potencia de la com-
la computadora, a menos que sea una transferencia de control. Algunas instruc- putadora desde el cálculo hasta el procesamiento simbólico general : la mani-
ciones ejecutables transfieren el control a otra instrucción que le sigue de inme- pulación de cualquier texto.
diato. Por lo general , la decisión de transferencia se basa en la satisfacción de ciena
condición. Las instrucciones ejecutables y las no ejecutables que no transfieren el Los lenguajes de propósito más general de la actualidad proporcionan esos
control ni influyen en la secuencia de ejecución, en su lugar realizan tareas de ma- cuatro tipos de datos. La disponibilidad de varios tipos de datos hace más fácil el di-
nipulación de datos. seño de los programas en un lenguaje dado. Cienos lenguajes permiten al progra-
Las instrucciones de manipulación de datos se analizan en este capitulo; las ins- mador definir sus propios tipos de datos en respaldo de la aplicación panicular.
trucciones de transferencia de control en el siguiente. En .resumen , el tipo de dato indicador (Pointer) está disponible en algunos len -
guajes de programación de alto nivel. El indicador identifica la orientación de las
otras panidas de datos. Los indicadores se usan para crear estructuras de datos
B. TIPOS DE DATOS SIMPLES (véase el Cap . 5) .
La implantación de varios tipos de datos con el uso de las palabras de la memo-
Los algoritmos y los programas que surgen de ellos, operan sobre los datos. La acción de ria se estudia en el Cap. 5.
una instrucción ejecutable se refleja como un cambio de valor de una panida de da-
tos. Los datos de entrada son transformados por el programa, después de las etapas
intermedias, en datos de salida. En el proceso de solución de problemas, el diseño C. CONSTANTES, VARIABLES Y ARREGLOS
de la estructura de datos es tan imponante como el diseño del algoritmo y del
programa que sobre éste se basa. El valor de una panida de datos simple en un algoritmo dado puede permanecer
Sólo se consideran aquí los datos simples (sin estructura). Los datos estructura- I\ constante o puede variar. Por tanto , estas panidas son subdivididas en constantes y
dos se estudian en el Cap . 5, son conjuntos de panidas de datos simples con rela- variables. La clase de datos estructurados utilizada la mayoña de las veces es un
ciones definidas entre ellos. Los arreglos, de datos estructurados con interrelaciones arreglo.
definidas implícitamente, se presentan en este capitulo .
Las panidas de datos , asi como las instrucciones de programa , están representa-
das en la memoria de la computadora por uno o más bits (generalmente) . 1. CONSTANTES Y VARIABLES
._,~~~"'."'.'.,,...,.. .~-,,.-:~--.-~.-.·
. ·
..
_OS-ell'llllll te ~ta' .
J
. • ~~5~ 1
~~' ;;~~~-~ "" C# *'qf~- ..~ Las operaciones que se pueden aplicar a una
panida de datos dependen en su tipo. Los lenguajes de programación de alto nivel
L
por lo general proporcionan instrucciones de declaración {declaraciones) que el
·' programador u5a" para espeéificar· el tipo de panidas de datos en -~'.pi:ograma~·).
Los siguientes son los tipos de datos simples y los valores que ~ií~d.'e'ri"toma?: _,- ~-:I/:C.
~ 4.,~~ ~ • ·- .r,:, ,• :-=-•• ~'._'~.... , ........ -••.:t'f!"~'--"r,.,.,, '~"'!'l".;~~
:i;wlcii>~...scr. de,v,arios,tl}>9S>'-por.,lo.,.que. podem<is#ric;¡;_~ii,
Entero: un n6.mero indicad~: sin- p~rtÚ~lidion'aria;~¿; \';f;.,:: \.:i~''
Real: un número indicado con un entero y una parte fraccionaria .
.- ...
( EJEMPLO 2-1
'O ~~b
~ .... -·~--·· ~ ~..,. ...... _~
·~<f~.....,,.
42 Fundamentos de programación
Manejo de datos en programación 43
Problema l• / ubicación d
Sume dos enteros y presente el resultado .
Algoritmo COrNT-15555¿ .,....,,..._
15555
En la Fig. 2-1 se muestra un diagrama de fabricación inicial.
nomb~
1 10 =+ valor de la variable
CONTADOR (COUNT)
~
~
Inicio de la variable
(a) (b)
Entran 2 enteros
Fig. 2-2.
Sume 2 enteros
La posición con la orientación 15555 contiene el valor de la variable llamada CONTA -
DOR (COUNT) . Este valor en el momento es 10 . Continuando la ejecución de una instruc ·
~
ción que agrega 1 al CONTADOR (COUNT) , sólo cambiarán los contenidos de la posición ,
como se muestra en la Fig. 2-2(b).
Se puede dar un valor a una variable en dos formas esenciales. Se puede leer des-
Fig. 2-1.
ARREGLOS
La referencia a un valor variable se puede hacer solamente por medio de la posi· ,·~~~~~;;r:~~~~-
~;í;es~~éc;ri_1\t;.'iiio_ q_
ci.~e_p~"i__rr
n_1'ig_J~a;}a~ íia't- ~·-~-..·
'i;J¿f'iñ15-:rió"'.ti~
--~~ r~ .;1 _--..
~~~~-. J!~~
-
ción (o posiciones) en Ja memoria en la que se ha almacena~o ese valor. El valor de l~V!lffieOte por ün: "il~~º~~&AlJt..'r ·
la variable es el contenido actualizado de esta posición as! llamada. Las partidas de datos individuales, los elementos de arreglo, son ordenados por
La habilidad para usar variables diferencia a las computadoras de las calcula- sus suscritos (índices); por esta razón en ocasiones se les llama variables suscn·tas. La
doras rudimentarias. Su empleo hace posible el posponer los valores actuales pre· cantidad de suscritos de un arreglo determina su tamaño . Un elemento de un
sentándolos hasta el punto apropiado durante la ejecución del programa. arreglo está indicado por el nombre del arreglo seguido por sus suscritos, que apare·
El espacio de la memoria se asigna generalmente a las variables como resultado cen en el paréntesis.
_de una instrucción que Jo confirme. De modo que , para hacer referencia a una va - Muy frecuentemente, se emplean los arreglos con una o dos dimensiones . Un
riable, se debe utilizar la orientación dt- su ubicación . Cuando se usa un lenguaje arreglo de una dimensión corresponde a un vector; un arreglo bidimensional a una
de alto nivel , el programador no tiene que estar relacionado con la orientación nu- matriz.
mérica actual. Las posiciones son orientadas simbólicamente. La onºentación sim· Cada elemento de un arreglo de un tipo dado tiene dos características; su posición
bólir:a significa que el programa se refiere a las posiciones por el nombre de la va· dentro del arreglo según Jo determinan sus suscritos y su valor.
riable que contienen.
;· .. l:.os 11:º111:brefd,~ .las: ~rf!':~!~s son ,asi~~d~,s por e!,p~9,gra~ado; ~o~f~nne .a_J~s EJEMPL02-3
_co.nveríciones de uri lenguaje de programación· dado . Consideremos que i¡ori uná·sé, Tenemos un arreglo de enteros unidimensionales SCORF..S . SCORF..S es por tanto , el nombre
/ cuenci¡¡. continua dé inás de seis letras mayúsculas y dígitos, comenzarido '.c:Or; iiira
w-·. del arreglo ; para hacer referencia al /-ésimo elemento de éste podemos usar un índice : SCO -
y
letra. Los traductÓr~s de Jeng{iaje ofros 'sistemas de software ~ciaÜ los~ñ.~ri}b?es RES(I) . . , ,:'e< •
de las variables usadas en el programa con la ori~nta~ión d_e la memorja nur:ii.é.Üca_. Este -arreglo. que consta de cineo elementos 17. -3 , 2. 4. -5. se muestra ei{f;, :Fig. 2-.!i~ ~e
.-· . . .. .. . _. .· :e ~
supone aqul que el suscrito del primer elemento es 1 (mayor que O). ··' -· . -- .
. ·~. .-.J.~:, .: . ·. . ..;¿.•• -...... - -;.-;-- ·~ . . ~;"·:;-~:'-:..-:
Se puede ver claramente la analogía entre un arreglo y una tabla.
EJEMPLO 2-2
.EJEMPLO 2-4
Supongamos que una instrucción afirmativa estableció el CONTADOR (COUNT) como una
Para representar las ventas de una compañía que consiste en tres regiones de ventas con
variable entera . Si la ubicación con una orientación 15555 fue asignada a esta variable, tene-
cuatro distritos por región, se puede emplear un arreglo de VENTAS (SALES) bidimen-
mos la situación presentada en la Fig. 2·2(a).
sional.
,,.....
1
• En el caso de un dato simple, una declaración tiene la siguiente forma general:
17 1
Lista de variables del tipo de datos.
-3 /
[ Por lo que en el Ej. 2-1 ambas variables de entrada así como su suma son enteros, pudién·
SCORES
doseles llamar:
4 .. Entero (integer) NUMl , NUM2 , SUM
-5
Por tanto, se les puede hacer referencia por estos nombres.
Fig. 2-S. En Jos lenguajes de programación con posición de memoria estáti"ca, como el
1'.0RTRAN o el COBOL, el espacio de Ja memoria es asignado a los datos por
En la Fig. 2-4 se muestra una representación gráfica del arreglo. El primer suscrito del el traductor del software. En los lenguajes con posición de memoria automática, co-
arreglo corresponde al número del renglón (que identifica la región), el segundo suscrito al mo el ALGOL o PL/ I, se puede asignar Ja memoria al dato o despreciarlo cuando
número de la columna (que identifica al distrito). no se necesite durante la ejecución del programa.
Si el archivo se asigna durante Ja traducción, es decir, antes de Ja ejecución del
programa, se debe asignar el espació requerido por los arreglos en sus declara-
VENTAS
4 ciones.
Por tanto, para declarar un arreglo sin las iiiilitaciones impuestas por la posición
de Ja memoria estática, basta establecer su tipo y dimensiones , por ejemplo, com o
lo siguiente:
.) <
VENTAS (S,2) donde M y N son variables enteras, o si está implícito que los suscritos comiencen con 1,
Entero (Integer) Ventas (Sales) (M,N)
Fig. 2-4.
En un lenguaje con posición de memoria estática , el rango de los suscritos se tiene que
declarar en términos constantes, por ejemplo , como VENTAS (Sales) ( 1:3 , 1 :5) o VENTAS
{Sales) (3, 5).
Es evidente que los suscritos debieran ser exclusivamente valores enteros, dado
En Ja descripción de un algoritmo (mejor que en un programa) , no es general-
que indican las posiciones de los elementos del arreglo.
mente necesario delimitar al suscrito en términos constantes.
En muchos lenguajes de programación de computadoras, los arreglos deben ser
declarados con el uso de una instrucción no ejecutable.
E. ENTRADA Y SALIDA
D. DECLARACIONES
,efn·
).
/ Las operaciones de entrada o salida que transfieren un valor sencillo opera-
L_,
l dones elementales en lenguajes de programación de nivel superior. Los det alles son
realizados por el software de los sistemas. ·-
~--Usando esta información, los traductores y otros sistemas· del software están ca-
\ En la entrada, el valor se presenta a Ja computadora por medio del dispositivo de
] ~ entrada (por ejemplo, en una tarjeta perforada o a través del teclado de una termi-
pacitados para localizar el espacio en Ja memoria para Jos datos, asociar Ja orienta- i nal); la salida, la presenta la computadora mediante el dispositivo de salida (por
/ ción de las posiciones reservadas para las variables (o arreglos) con sus nombres, y ( ejemplo, una impresora o una pantalla).
seleccionar las operaciones aplicables a Jos datos.
j Una vez que se ha declarado una variable en una instrucción, se le puede hacer ( El tipo de datos presentado generalmente se describe por una instrucción de
f· referencia subsecuentemente en el programa por su nombre. ¡declaración.
1
1
,.
"; "l.
r
Manejo de datos en programación 47
46 Fundamentos de programación
La forma general de la instrucción es ;1 L, El tipo de la expresión en el lado derecho corresponde al tipo de la variable en el
lado izquierdo. El tipo de variables que aparecen en la expresión deben coincidir
con el tipo de la expresión. Si las variables aparecen en el lado derecho de una asig·
A nación, deben tener valores asignados a ellas de antemano.
Entrada (dispositivo) lista de variables
Salida (dispmitivo) lista de variables 'f
En lugar de Entrada, algunos lenguajes usan Leer (Read) u Obtener (Get); en
lugar de Salida, Escribir (Write) o Colocar (Put) .
Si el dispositivo usado como la fuente o linea de datos se conoce implícitamente,
... ii
2. EXPRESIONES
Una expresión es una fórmula para obtener un valor. Las expresiones consisten de
no es necesario mencionarlo en estas instrucciones. En este caso podemos recordar operandos (constantes o variables) y operadores (símbolos que reflejan las reglas pa·
que los datos de entrada vienen del archivo de entrada general , mientras que la sali· 11 rala t ransformación de los valores del operando). Las reglas de prioridad controlan
da sucede en el archivo de salida general. la aplicación de los operadores a los operandos para un tipo dado de expresión. Una
Del dispositivo de entrada los datos son canalizados a las posiciones de la memo· expresión se evalúa de izquierda a derecha a menos que las reglas de prioridad or·
ria de la computadora .. Estas posiciones han sido asociadas con los nombres ~e las ºl denen lo contrario.
variables como un resultado de las declaraciones. En consecuencia, se pueden refe·
rir estos datos simbólicamente por sus no~bres. Por supuesto, las constantes son de· Se pueden distinguir los siguientes tipos de expresiones:
finidas en el propio programa y no se necesita la entrada.
.Cuando se ejecuta una instrucción de salida, se canaliza al dispositivo de salida (a) Expresiones aritméticas que contienen sólo variables reales y enteras y
una copia de los contenidos de Ja posición mencionada en la lista de variables. constantes (en expresiones de modo-mixto). Si la implantación de un len-
guaje dado prolúbe las expresiones de modo-mixt~ , cada expresión debe
consistir exclusivamente de enteros o variables reales y constantes.
En el Ej . 2-1 necesitamos las instrucciones siguientes:
Estas expresiones se realizan de acuerdo con las reglas comunes de la
Entrada NUMI, NUM2 aritmética. El operador aritmético Unario para los valores negativos ( - ) y
Salida SUM los operadores aritméticos binarios para la rnma ( + ), la resta ( - ), la
multiplicación ( •) , la división ( / ) y la exponenciación (to n ), así como los
Para llevar a cabo la entrada o salida, deseamos frecuentemente especificar la paréntesis son permitidos generalmente. Por lo regular , se aplican las
disposición de los datos. Algunos lenguajes de programación incluyen instrucciones reglas ordinarias de prioridad.
de formato que sirven p;;.ra este propósito. En el caso de expresiones enteras, una operación de división de enteros
se define ( + ). Esta operación da por resuitado que la parte fraccionaria
del cociente sea descartada.
F. ASIGNACION (b) Las expresiones lógicas tienen uno de los dos valores Cierto y Falso. Entre
otros, los operadores lógicos aplican; lo esencial de éstos son ei no, y, o ,
El valor de una variable se puede establecer leyéndolo de un dispositivo de entrada definidos por la tabla de la verdad en el Cap. 3-A-3 .
' e usando una instrucción de asignación, lo que significa que se lleva a cabo una ma- La aplicación usuai de las expresiones lógicas, la cual se analiza más
/ nipulación de datos . profundamente en el Cap. 3-A, es para expresar una condición en la que
el flujo de control en un programa va a ser predecido.
(c) La línea de manejo de las expresiones actúa en caracteres valuados en
1. FORMA GENERAL DE LAS INSTRUCCIONES DE ASIGNACION constantes y variables.
Asignación es la operación de dar un valor a una variable como resultado de una Los operadores para las líneas de manejo incluyen el enlace de dos
instrucción de asignación. En otras palabras, cuando se lleva a cabo la asignación , lineas Uuntándolas) o la selección y posible reemplazo de una sublínea.
se coloca al valor en la posición de la memoria correspondiente a un nombre de va· Estas operaciones se analizan con más detalle en el Cap. 5-J.
l.~
riable dado.
La forma general de una instrucción de asignación es
nombre de Ja variable - expresión 3. EJECUCION DE UNA INSTRUCCION DE ASIGNACION
La flecha es el operador de asignación (algunos lenguajes usan = o en lugar
de-). Por ejemplo, · Una instrucción de asignación produce la siguiente secuencia de eventos:
X-Y+2
r .
[t
.. '·::
48 Fundamentos de programación
Mane1"o de datos en programación 49
(a) La expresión se evalúa conforme a las reglas apropiadas de prioridad y un car un comentario en _una línea que contenga una instrucción; el comentario ,
valor simple se obtiene, de un tipo correspondiente al tipo de la expresión. rodeado por asteriscos, seguirá a la instrucción. Es imperativo el uso responsable de
(b) El valor se coloca en la posición correspondiente al nombre de la variable los comentarios en cada programa.
en el lado izquierdo de la instrucción de asignación.
•
3
Estructuras de Control
en el Diseño de Programas
En este capítulo se presentan la~ estructúras _básic~ ne2esarias para organizar el flu-
jo de control en un algoritmo o en ~n pro&rama'. Tres 'de éstas son: la secuencia
u
,r (inicio-fin), la decisión (si-entonces-otro) y la trayectoria .(mientras-hace) consti-
tuyen lo fundamental de la organizació~ necesaria para respalda; 'im 'procesó .siste-
-. ,
-~
mático de programación, a menudo llamado programadón- estructurada. Las
estructuras de control adicional tales como la trayectoria de repita-hasta, la trayec-
toria clasificada y la de elección múltiple (case) se pueden emplear para simplificar
este proceso. Una trayectoria se puede abandonar prematuramente éon la ejecu-
" ción de una instrucción de salida.
Mientras estas estructuras no estén disponibles directamente en los lenguajes de
programación en cada propósito general ; es posible construirlas usando las instruc-
ciones de un lenguaje dado . El programador encontrará que pensando en términos
de estas construcciones producirá programas organizados claramente que son de
manera relativa fáciles de escribir, leer y modificar.
En ciertas situaciones de programación no frecuentes , es conveniente, de cual-
quier forma , emplear una transferencia incondicional de control (goto) .
Se introducen dos herramientas importantes para el diseño de programas. El
seudocódigo, utilizado frecuentemente de preferencia a las cartas de flujo, sirve pa-
ra llevar el algoritmo listo para codificar en un proceso de diseño de programa de
arriba a abajo. llamado refinamiento por etapas. Se emplean las tablas de decisión
para la consideración sistemática de todas las acciones que va a hacer el programa- si
existen ciertas condÍ~iones (o sus combinaciones) .
A. CONDICIONES
.
Una relar:ión es una expresión lógica que consiste de dos expresiones aritméticas co·
•• (operador de exponenciación , representado en ocasiones como f )
nectadas por -un operador relacional, por ejemplo , uno de los siguientes /
< ..,;;-* ;;¡., > + -
Estos sólo pueden unir a los operandos numéricos .
La forma general de una relación es por tanto (b) Operadores relacionales
., . . . operador
expres1on antmeuca expresión aritmética <<-'F>>
. relacional
Estos sólo pueden unir datos numéricos.
Las relaciones sirven para expresar las condiciones simples.
(c) Operadores lógicos (Booleanos)
no (not)
EJEMPLO 3-2 y (and)
Las afirmaciones establecidas en el Ej. 3· J se pueden especificar con el uso de las relaciones o (or)
como sigue:
La acción de Jos operadores Booleanos está especificada por su tabla de la
(a) l = o verdad presentada en Ja Tabla 3-L Los cálculos de las variables .lógicas,
¡Observe que no es una asignación! llamados álgebra ~Jeana, se estudian con mayor detalle en el Apéndice C.
(b) I< 2 • K
54 Fundamentos de programación Estructuras de control en el ~iseñ.o de programas 55
TABLA !1-1. Tabla de la verdad para los operadores básicos, en donde P y Qson variables
~L
lógicas (o relaciones) .
p Q P no p yQ PoQ
Fig. ll-2.
Falso Falso Verdadero Falso Falso
Falso V~rdadero Verdadero Falso Verdadero
Verdadero Falso Falso Falso Verdadero
Observe que la segunda parte de la afirmación está expresada .
Verdadero Verdadero Falso Verdadero Verdadero
EJEMPLO !1-5
operadores
TOTAL> PARTE y TOTAL~ GRANO - PART E
prioridad
.••
+
/ aritmético :
EJEMPLO 3-6
más alta La Fig. 3-3 ilustra el orden de evaluación de una condición compuesta , donde AZUL y
1 <<=*;;..> relacional ANCHO son variables lógicas y TRAYECTORIA y LONGITUD son variables reales:
no AZUL
y no ANCHO o AZUL y TRAYECTORIA
y lógico
> LONGITUD - 5.3
Fig. 3-1.
o
EJEMPLO 3-4
Fig. ll-3.
Para especificar la afirmación del Ej. 3-J(c), podernos usar la siguiente condición compuesta:
Notas
X;;..Y y L l. Dado que una relación evalúa un valor lógico, se puede unir a cualquier otro operando ló-
gico por un operador lógico (como en el paso 5 ).
El orden de la evaluación, de acuerdo con el orden de precedencia del operador y la regla 2. Los y y no adyacentes (as! como o y no) no violan la sintaxis de las expresiones lógicas; los
de izquierda-a-derecha, se muestra en la Fig. 3-2. operadores y y no no pueden estar próximos de manera legítima en una expresión lógica.
56 Fundamentos de programación
; Estructuras de control en el diseñe de programas 57
B. DECISION
Para incrementar la amenidad de estilo del ·programa, es una buena práctica
Cuando el programador desea especificar dos cursos de acción alternos en un algo· sangrar esta instrucción como se muestra:
ritmo (o un programa), la elección comienza suponiendo la existencia de ciertas
condiciones, se usa la condición construida. Para seleccionar en ordeii entre varias si e entonces
alternativas, las decisiones se generan una dentro de otra.
S1
Una herramienta gráfica, llamada una tabla de decisión, es útil en el diseño de
programas cuando se tiene que considerar un conjunto complejo de condiciones y además
acciones.
S2
-- - - -
1
1 Verdadero
Verdadero Faho 1
1
rama entonces ~ rama además 1
1
¡
1
1
1 1
,_ - - - - - - - _:-¡ :_ - - - - - - _J ..
Para evitar ambigüedad,• esta construcción se representa como Es má.s fá.cil comprender el algoritmo (o programa) si no ocurre el sangrado en la
rama además de la construcción. Se pueden expresar las condiciones para comple-
si e entonces tar esto. Si se mantiene tal disciplina, una construcción si-entonces-además tiene la
siguiente forma general:
s
además si C 1 entonces
además
2. DECISIONES SANGRADAS si e! entonces
S2
Para implantar en orden una decisión múltiple (una selección entre varias alterna·
tivas), se usa la estructura sangrada si-entonces-además. Esta se construye colocan· además.
do iterativamentr. otra instrucción de decisión como 5 1 o S 2 •
Para el sangrado de dos niveles en ~bas ramas obtenemos.
si C 1 entonces si c. entonces
si C2 enton~ s.
S1
además además
• S2 Sn +I
además
si C 3 entonces
S3 El diagrama de fabricación de esta constrncción se presenta en la Fig. 3-7.
además
s.
El diagrama de fabricación de esta estructura particular se muestra en la Fig. 3·6.
Verdadero Fallo
Fig. 11-6.
,r
• La ambigü~ad aurgr cuando R omite un ademáa en una secuencia de dcci1i6n sangrada (v~asc la ~i6n
siguiente). En aJgunog lenguajes de programación la rama ademú es optativa y el además siempre~ aplica
Fig. 11-7. Construcciones sangradas si-entonces-además
a I01 1i mb cc~anOI sin 1u propio ademá.1.
60 Fundamentos de· programación
Estructuras de control en el diseño de programas 61
3. TABLAS DE DECISION* Pago semanal
2 3 4 5
Cuando existe un número de condiciones en varias combinaciones debe influir de ma- l. 40 h trabajadas en los dlas de la semana
F F F T T
nera más profunda al flujo de ejecución del programa, se puede usar una herra- 2. Menos de 40 h trabajadas en los dfas de la semana F T T F F
S. Fines de semana trabajados
mienta gráfica llamada tabla de decisión. Una tabla de decisión especifica en forma T F T F T
tabular las acciones que va a realizar el programa si existe una condición dada o
1. Calcule el pago de la relación estándar
combinación de condiciones. X X X X
2. Calcule el pago de fin de semana
Las tablas de decisión tienen el formato que se muestra en seguida. X X X
S. Imprima el nombre por separado X X
Encabezado
Note que en este caso las dos combinaciones de condiciones (las que involucran las dos pri-
fragmento registro de condición meras condiciones son verdaderas) son imposibles y por tanto; se omiten de la tabla. Tam-
} parte de condici6n
de condición (Verdadero o Falso) bién el caso en el cual el trabajador no trabajó completo ha sido omitido. " ,
¡
tener lugar cuando existe una combinación de condiciones dadas (los registros de
1. 40 h trabajadas en los dfas de la semana
estas últimas dos, consideradas verticalmente, son llamadas reglas). F - F T
Una tabla de decisión se diseña como sigue:
2. Menos de 40 h trabajadas en los dfas de la semana
S. Fines de semana trabajados
F
T
- T F
F T T
(a) Liste todas las condiciones posibles en el fragmento de la condición.
l. Calcule el pago a la relación estándar X X X
(b) Liste todas las acciones posibles en el fragmento de acción. 2. Calcule el pago de fin de semana
Proporcione el número de reglas para igualar todas las combinaciones po-
X X X
(c) 3. Imprima el nombre por separado X X
sibles de condiciones (2n paran condiciones) excluyendo las evidentemen-
te imposibles o las innecesarias.
(d) Para cada registro de condición, marque con X el registro de la acción
contra la acción (o acciones) que se va(n) a tomar. Por tanto , si el trabajador no trabaj a durante el fin de semana, se aplica el mismo proce·
Si es posible, combine reglas que difieran solamente en condiciones no re- dimiento sin distinción del número de horas cubiertas por é l o ella durante los d!as de la se-
(e) mana .
levantes.
Una tabla de decisión se puede representar entonces directamente como una
Esto se ilustra por el ejemplo siguiente.
construcción si-entonces-además. Procure llevar a cabo la codificación de manera
agradable.
EJEMPLO 3-8
Una tabla de decisión para el cálculo del pago semanal (mostrada en seguida) expresa la si - Supongamos que las variables lógicas: FORTY, LESS y WKND expresan nuestras tres condi-
guiente lógica: la relación de horario estándar se aplica para 40 o menos horas trabajadas du - ciones. Entonces, la última tabla de d ecisión se puede codificar como sigue:
rante los dlas de la semana ; el trabajo del fin de semana se paga al doble; los nombres de los
trabajadores con menos de 40 h trabajadas durante los d!as de la semana y de los que trabaja· si no WKND entonces
ron en el fin de semana se imprimen por separado. compute el pago en relación estándar
además
62 Fundamentos de programación
Estructuras de control en el diseño de programas 63
además
calcule el pago de fin de semana; - - - --,
imprima el nombre por separado ; 1
si LESS entonces l.
calcule el pago en relación estánda.r y agréguelo al total
además;
Observe que se pueden hacer varios intentos para llegar a la construcción final y que las
modificaciones que ahorren tiempo se pueden introducir en el programa actual.
t
El uso de las tablas de decisión obliga al programador a considerar sistemática-
mente todas las condiciones y acciones posibles y es de este modo una ayuda en el Fig. 3-8. Bucle mientras que-haga.
diseño del programa junto con las herramientas como el diagrama de fabricación o
el seudocódigo estudiados a continuación .
es buena práctica .
C. BUCLE
En el Ej . 3-7 necesitamos:
El mecanismo del bucle (trayectoria) origina la ejecución repetida de una secuencia
de instrucciones mientras que es verdadera cierta condición. Cuando al retener la mientras que tenemos que leer unos cuantos que N enteros .
haga la lectura en el entero siguiente ;
condición cesa, el control pasa a la instrucción siguiente hasta la última instrucción
incremente el contador apropiado en 1;
del bucle (trayectoria) . Esta ejecución repetida es llamada iteracción.
incremente el conreo de los enteros leídos en 1.
Si un bucle está registrado, la ejecución de la instrucción incluida en él (llamada
el cuerpó del bucle) debe , después de un tiempo limitado, causar la inversión de la Observe que si Ces Falso inmediatamente antes de que se registre la instrucción
condición que causó la entrada. Por el contrario, puede existir un bucle infinito , bucle, S no se ejecutará por completo. Si Ces Verdadera inicialmente y S se ejecu-
que puede representar un error" de programación y requeriña que la ejecución del ta, la ejecución de S podrfa original' que C se volviera Falso después de un número
programa fuera detenida por medios externos. finito de repeticiones.
Cada vez que se ejecuta el cuerpo del bucle, el valor de cuando menos una va-
riable cambia . Por tanto , la ejecución repetida tiene un efecto acumulativo .
La forma general de la instrucción de bucle es
D. INSTRUCCION COMPUESTA
mientras que e haga s
Como se mencionó en las secciones B y C de este capitulo, con frecuencia es necesa-
donde C es una condición y S es una instrucción o un grupo de instrucciones . rio colocar más de una instrucción en las ramas alternas de una instrucción de deci-
La instrucción de bucle se realiza como sigue: sión o dentro de un bucle . Esto hace posible una instrucción compuesta que en-
cierra una cantidad de otras instrucciones dentro de dos delimitadores, el inicio y el
(a) La condición C está probada . fin.
(b) Si el valor de Ces Verdadero, S se ejecuta y el control se regresa entonces La forma general de una instrucción compuesta es
a la instrucción mientras que para que la condición sea probada de
nuevo; por el contrario (si el valor de Ces Falso) , la siguiente instrucción S inicio S 1; S 2 ; • • • ;S" fin
es ejecutada.
La carta de flujo de la construcción mientras que-haga se muestra en la Fig . donde 5 1 es cualquier instrucción.
3-8. Esta instrucción origina la ejecución secuencial de las instrucciones incluidas
El sangrado de la forma
s, .... , s•.
La carta de flujo de esta construcción se muestra en la Fig. 3-9.
mientras que e haga
s Si una instrucción compuesta no se coloca en una linea sencilla, el sangrado su-
gerido es •
-.
Estructuras de control en el diseño de programas 65
64 Fundamentos de programación
¡--é---¡
1
1 s,
1
1
Cualquier programa que conste de más de una instrucción es por sí mismo una
instrucción compuesta.
Cada componente de una instrucción compuesta cuando menos está delimitada
de Ja siguiente por un punto y coma (el último está delimitado por fin). Esto hace
1 1
posible el colocar varias instrucciones en una linea o tener unas l!neas punteadas de
1 1
instrucciones simples.
-~-~
;::> - Las instrucciones que forman una instrucción compuesta ·pueden ser instruc·
~i~nes de decisión o de bucle, así como asignaciones e instrucciones de entrada/ salí·
1 da. Los primeros dos tipos pueden, en su oponunidad, incluir una instrucción com-
~uesta. en sus ramas o como un cuerpo de bucle, respectivamente.
Fig. 3-9. Secuencia (inicio-fin).
La siguiente es una solución al problema colocada en el Ej . 3-7, presentada de dos mane·
ras.
inicio "~ A ."Algoritmo expresado por un diagrama de fabricación (Fig . 3-10).
...... . . ..
:
S¡;
sf1!-.;., Notas .~
-l.-, ,, Mientras que en la Fig. 3-10 los comentarios sirven al propósito de explicar Ja técnica ,
generalmente son orientados a problemas.
2. Una ,posición simple, NUM , se usa para retener la entrada de enteros. Ya que esto es
s. económico en términos de uso de memoria, sólo se tiene disponible U!l entero simple (el
fin más reciente) en la memoria a un tiempo.
X
Entrada N
Entero N. POSCNT, NEGCNT, 1, NUM
POSCNT ·contador de entcroo positivos
NEGCNT-contador de enteros ncgativ~
¡
f'
..
¡. ."' .~
Si nuestro problema necesita almacenar en Ja memoria el arreglo completo. se p uede usar
un arreglo NUM(I) para este propósito .
Observe que en nuestro caso especifico éste se puede acompañar por la sustitución textual
de NUM(I) por NUM , suponiendo que una declaración
Entero NUM(N)
Problema
ESE: PRIMERO - O; El máximo común divisor (MCD) de dos enteros positivos va a ser determinado. (El MCD de
dos enteros es el entero mayor que puede dividir a ambos exactamente.)
Solución
La solución inicial, verbal , se presenta de manera subsecuente en forma de un diagrama de
fabricación , asi como en la forma alterna, el seudocódigo.
68 Fundamentos de programarión Estructuras de control en el diseño de programas 69
l. Descripción verbal del algoritmo: El entero mayor se divide entre el menor. Si el residuo
es O, el entero menor es el resultado requerido; de lo contrario se desprecia el entero ma- Entero M , N , TEMP, RESIDUO (RE~)
yor y el menor se trata como el mayor y el residuo como el menor. después de lo cual el
procedimiento se repite desde el principio . ~;
2. Prueba: El algoritmo se comprueba para los enteros 12 y 46.
~- Verdadero
46 : 12 = 3 , !esiduo = 10 - ~ Intercambio M y N
r---~--,
12: 10 = 1, residuo = 2 TEMP-N
10 : 2 = 5, residuo = O N-M
MCD = 2 ~·r~1 M-TEMP
+ significa cociente entero
3. Diagrama de fabricación inicial del algoritmo (Fig. 3-11). (por ejemplo·. si el residuo se deja)
+N
.k
M+-N
Determine el entero mayor N<-RESIDUO
(REM )
Divida el entero mayor
entre el menor
Fig. 3-12.
Verdadero Falso
además;
*CALCULE EL RESIDUO
Alto
RESIDUO-M - N • (M + N);
*CONTINUE DIVIDIENDO E INTERCAM BIANDO HASTA QUE EL RESIDUO
*SEA O
Fig. 3-11.
mientras que RESIDUO # O haga
inicio
4. Diagrama de fabricación refinada (Fig. 3-12);
M-N
5. Algoritmo expresado por las estructuras de programación básicas . N +--RESIDUO
RESIDUO M - N*(M + N)
•ALGORITMO DE EUCLIDES PARA ENCONTRAR EL MCD DE DOS ENTEROS fin;
Salida N
•POSITIVOS M Y N
fin
Inicio
Entero M. N , TEMP, RESIDUO;
Entrada M. N;
Notas
*DETERMINE EL ENTERO MAYOR
l. Observe que para que la instrucción mientras que se ejecute primero, la variable RESI-
si M < N entonces
D UO (REM) debe tener un valor. Por tanto , es necesario repetir la instrucción de cálcu-
inicio
lo dei residuo. • ·
TEMP-N ;
2. Co~vénzase por si mismo que el algoritmo trabaja correctamente sin el intercambio ini-
N-M;
ciaf de valores de las variables si M< N. En este caso, el intercambio sucede como en
M -TEMP
_Ja prjmera repetición del bucle.
fin
70 Fundamentos de programación Estructuras de control en el diseño de programas 71
De cualquier forma , ¿cree usted que el algoritmo es más fácil de entender como está Se puede observar que el último número se movió hacia arriba durante cualquier paso
presentado? ¿Piensa que el algoritmo alarga la ejecución como se presentó? (cuente el hasta llegar a su posición final. Un a ampliación de la clasificación de burbuja es ésta con una
número de pruebas y el de asignaciones que se llevarán a cabo en ambos casos), estipulación para ahorrar tiempo basada en esia observación: no movemos más el n ú mero
que se movió al último en el paso previo; además, si el último número se movió en la segunda
EJEMPLO 3-11. Ampliando la clasificación de burbuja posición desde "el fondo" , se ha terminado la clasificación y no es necesario hacer un pase adi
cional sin ningún intercambio.
Clasificar los datos y desarrollarlos son las aplicaciones más comunes de la computadora. Por I-
'!
tanto , existen numerosos algoritmos para llevar a cabo estas tareas. Aquí está presente una,
un algoritmo de clasificación. Aunque no es muy eficiente, es muy simple y por tanto, se
emplea con frecuencia cuando se van a clasificar pocas partidas. {En el Ej . 3-17 se estudia un
algoritmo de investigación. )
r Seudocódigo: Descripción Inicial
*CLASIFICACION DE BURBUJA
inicio
Entrada del arreglo ;
Se va a clasificar un conjunto de números enteros. Se desea un orden ascendente: el núme· mientras que se esperan los intercambios haga
ro mayor, el más alto debe estar al final de la lista. . el paso siguiente en el arreglo ;
,,r'
1,. Salida (clasificada) del arreglo
Descripción verbal del algoritmo
La clasificación de burbuja consiste en la comparación de parejas de números adyacentes co· ,, fin
Seudocódigo: Primer Refinamiento
menzando en un extremo del arreglo de números. La pareja se intercambia si los números es· ri •AMPLIANDO LA CLASIFICACION DE LA BURBUJA E N ORDEN ASCENDEN TE
tán en orden opuesto al deseado. Una pasada a trav~ de todos los números no es, en general , inicio t' " i.~ ~
suficiente. Los pases se repiten hasta que, en el úlcitno pase, no sean necesarios los intercam · Entrada del arreglo ;
bios. Esto confirma que los números están ordenados. Los números "emergen" desde el "fon· marque LIMIT; •LIMIT-CLASIFICACION DE LA ULTIMA PARTIDA
do" para tomar su lugar final en el arreglo -de ahí el nombre del algoritmo -. La aplicación
PARA COMPARAR•
de este algoritmo a un arreglo muestra de números se indica en seguida.
•LLEVE A CABO LOS PASOS CONSECUTIVOS
mientras que se esperan los intercambios haga
inicio;
ARREGLO NO DESPUES DESPUES DESPUES DESPUES
CLASIFICADO DEL PASO 1 DEL PASO 2 DEL PASO 3 DEL PASO 4 comience en el fondo
(SIN CAMBIOS) •LLEVE A CABO UN PASO SENCILLO
mientras que baja LIMIT y LIMIT~ 1 haga
7
6
5
13
JO
-JO
171
13
10
17
13
10
17
13
JO
17
13
10
inicio
compare las parejas e intercambie
-10 2 ~i es necesario;
-J~l
4 17 2
3 -J5 -3 mueva a la siguiente pareja
-31
2 2 -1;1 -JO -JO fin;
-31
-3 -3 -15 -J5 -15 marque el nuevo LIMIT
fin;
Salida (clasificada) del arreglo
fin
Donde 1 significa "borbotón". Los detalles del paso 1 se dan en seguida , en donde las co·
lumnas sucesivas indican el orden siguiendo la comparación. :::i significa intercambio ; Seudocódigo: Segundo Refinamiento
:::;¡ significa sin cambio. •AMPLIACION DE LA CLASIFICACION DE BU RBUJA EN ORDEN ASCEN DEN TE
inicio
ORDEN lo. 2o. 3o. 6o. Entero A (N), LIMIT. ULTIMO , TEMP . I;
4o. 5o. i._;
INICIAL COMPARACIONES •ENTRADA DEL ARREGLO
!·t Entrada N;
13 13 13 13 13 13 17] r. I-1 ;
10 10 10 10 10 13 ¡
-10 -10 l;J :;J 10 ' .mientras que I ~ N haga
-10
17
-10
17 17
l~J -1 -10 -10 . .. i~iciO
Entrada A(l);
-15 -15 2 2 2 ~t.
,, "·
-l;J -15 -15 -15 -15 I-I +' i 1 ::·
2 2]
-3 -3 -3 -3 -3 . -3 -3 fin;
72 Fundamentos de programación Estructuras de control en el..diseño de programas 73
*MARQUE LIMIT - CLASJFICACION DE LA ULTIMA PARTIDA PARA SER G. ESTRUCTURAS DE CONTROL ADICIONAL
CONSIDERADA
" LIMIT- N; t
~. Mientras que las construcciones inicio-fin, si-entonces-además y mientras que-
ºLLEVE A CABO PASOS CONSECUTIVOS
•sd:L°'LIMITE ES IGUAL A O, NO HAY INTERCAMBIO DURANTE t haga bastan para diseñar cualquier algoriuno, con frecuencia es más natural recla-
*EL ULTIMO PASO; SI EL LIMITE EQUIVALE A I, LOS NUMEROS ESTAN EN sificar las dife::entes construcciones.
*ORDEN Dos de estos mecanismos son bucles: el de repita-hasta y el clasificado, y el terce-
mientras que LIMIT > 1 haga
· inicio
I-1;
r. ,J
ro es Ja instrucción de elección múltiple (case). También se puede emplear una ins-
trucción de salida como una forma más disciplinada de un ir a.
l l ..
*ULTIMO COMIENZO - CLASIFICACION DE LA PARTIDA MOVIDA AL ULTIMO i~~
*DURANTE ESTE PASO ~ t
:~-·~-:·1 .,_
A(I) - A(I + l);
A(I + 1)-TEMP;
ULTIMO-I
fin A. BUCLE REPITA-HASTA
además;
.-..:
*MUEVA A LA SIGUIENTE PAREJA
I+-I + 1; En cienas situaciones de programación, es conveniente ejecutar repetidamente un
fin; grupo de instrucciones, con Ja comprobación sabsecuente en cualesquier de las con-
*MARQUE EL NUEVO LIMIT diciones especificas que hayan surgido . Cuando esto sucede, el control pasa a la si-
LIMIT - ULTIMO guiente instrucción del bucle; de lo contrario , Ja iteracción continúa.
fin; La forma general de construir un bucle es
*SALIDA DEL ARREGLO CLASIFICADO
I+-1; repita s hasta c
mientras que I ,.. N haga
inicio donde S es una instrucción o grupo de instrucciones y C es una condición .
Salida A( I);
, Este bucle se ejecuta como sigue:
I +-I + l
iTY':..-:_., ·. fin
fin l. Se ejec1na Ja imtrucción S.
2. Se comprueba Ja condición C.
Notas 3. Si C es falsa, el control se regresa a la instrucción repita, después de lo
l. Observe que el algoritmo trabaja correctamente para casos especiales (N = O o l ; _)_,. '- ·cual S se ejecuta de nuevo; de Jo contrario (Ces Verdadero) se ejecuta la
N = 1). siguiente instrucción del bucle.
2. Observe el uso de las variables ULTIMO y LIMIT.
s. Estudie Ja modificación interpretando el refinamiento del algoritmo desde su forrna ini ·
cial. El nivel de detalle desplegado aqui en el último refinamiento no sie_m pre es necesa- Se debe hacer notar que la instrucción (o grupo de instrucciones) S se ejecuta
rio. cuando menos una vez. Si entonces S se realiza de nuevo, su ejecución repetida debe
4. Aplique el algoritmo a un arreglo de números e investigue cambiar el valor de la condición C a Verdadera. ·
(a) pasadas consecutivas sobre el arreglo; En Ja Fig. 3-13 se muestra el diagrama de fabricación de la construcción repita-
"'~' (b) los valores de las variables ULTIMO y LIMIT. hasta.
74 Fundamentos de programación Estructuras de cont rol en el diseño de programas 75
~---,
- --, 1
Observe que algunos lenguajes de programación tienen un mecanismo explicito para p robar
el fin del archivo de entrada.
B. BUCLE CLASIFICADO
EJEMPLO 3-13
Cuando en un programa una cantidad de partidas de datos tiene que leerse, es deseable tener
la computadora para que haga el conteo. Por tanto, un vigilante (remolque), una partida de Las cuatro variables usadas en la construcción deben tener valores enteros.
datos fuera del rango del dato actual, se incluye como la última partida . Observe que este bucle "hace más trabajo" que las o tras dos construcciones de
En consecuencia, en el Ej. 3-11 , si sabemos que no hay elementos del arreglo iguales a O, el bucle: inicia y mantiene el indice del bucle, también comprueba la terminación.
siguiente fragmento de código se puede usar para la entrada del arreglo: · Por tanto , es una forma apropiada de expresión, en donde se aplique.
+ l;
i
¡
ejemplo, sigue S,J es realizado.
~'
entonces-además profundamente arraigada.
1-1+1
fin fi
~
EJEMPLO 3-15
La recepción de cuentas vencidas (due) de cuatro clientes se tienen que totalizar. Un registro
2. ELECCION MUTLIPLE
~ de recepción simple consta del código del cliente (con valores de 1 a 4) y la cantidad vencida.
El final del archivo de entrada se marca por el código de O del cliente.
"..
€. *TOTALIZACION DE CUENTAS RECIBIDAS
Cuando se toma una decisión que puede tener varias salidas, se puede usar la cons-
Inicio
trucción case.
Entero CODE:
La forma general de la instrucción case es
Real DUE, TOTAL (4)
para K - 1 hasta que 4 por l haga *INITIALIZE*
case I TOTAL (K) - O;
inicio ' *CLASIFIQUE Y SUME LA CANTIDAD VENCIDA
S,; Entrada CODE. DUE;
S,; mientras que CODE oF O haga
.... inicio
case CODE
inicio
s. TOTAL (1) TOTAL(!) + DUE;
fin TOTAL (2) TOT AL(2) + DUE;
TOTAL (3) TOTAL(3) + DUE;
donde I es una variable entera con valores que varían desde 1 hasta N > 1, y S 1,. •• , TOTAL (4) TOTAL(4) + DUE;
s. son las instrucciones. fin;
Una carta de flujo explicando la ejecución de esta construcción se muestra en la Entrada CODE, DUE
Fig. 3-15 (una caja no estándar se usa para indicar una prueba con varias salidas). fin;
para K -1 hasta que 4 por 1 haga
Salida TOTAL (K)
fin
Notas
l. Observe la diferencia del significado entre las instrucciones case y compuesta (la prime·
ra causa la secuencia y la segunda, exclusiva mutuamente, la ejecución de las instruc-
ciones cerradas) .
.;
2 . . " Convénzase por sí mismo que el algoritmo trabaja correctamente si no hay datos de
" entrada.
3. .,, Diseñe el sangrado equivalente en la construcción si-entonces-además y compare los
dos.
de una instrucción ir a. Una forma más disciplinada de dejar un bucle y quizá las La investigación secuencial es lenta inherentemente; u n a investigación exitos;< necesita en
construcciones que Ja incluyen, sea Ja instrucción salir. promedio N / 2 comparaciones si la lista tiene N partidas. La in vestigación binaria es más rá-
La forma general de esta instrucción es pida, u no de los muchos algoritmos que se puede usar para investigar las listas clasificadas.
La investigación binaria asemeja un p rocedimiento q ue pod emos usar para busca r una
nivel de salir palabra en un diccionario no familiar. Supongamos que la list a se clasifica e n o rden asee n·
dente. Primero, ·se comprueba la rnitad de la lista; si nuestro elemen to buscado es men or q ue
el que está a la m itad de la list a , la investigación tiene que contin uar en la primera m itad de
donde el nivel identifica Ja primera instrucción de la construcción de la cual se
la lista ; si n uestra partida es mayor que el que está a la m ita d , se tiene que re alizar la investí·
completa salir. Además Ja ejecución del control de una instrucción salir pasa inme-
gación en la segunda parte de la lista . Entonces desarrolla mos la m itad seleccionada de la
diatamente a Ja instrucción siguiendo la construcción . misma manera comprobando su registro med io , etc. La in vestigación se puede completa r con
Por tanto, se pueden sacar varios niveles de construcciones de control sangradas. éxito encontrando el elemerito solicitado o con el descubrimiento d e que la partida no est á en
bliMa. _
EJEMPLO 3-16 La investigación binaria n ecesita en promedio alrededor de log~ compa raciones para
El siguiente fragmento de código se puede usar para sustituir al mostrado en el Ej. 3·1 5 . encontrar un elemento en una lista de N elementos; es por tanto mucho más rápida que una
investigación secuencial .
•cLASlFIQUE Y SUME LA CANTIDAD VENCIDA El siguiente es el seudocódigo d el algoritmo . Observe q ue en el caso sig!:'i!:_n te los comenta-
CLASS : repita rios aumentan la legib"nidad en este caso . . . ·-· . . -- - --·-
inicio
Entrada CODE, DUE;
si CODE = O entonces •INVESTIGACION BINARIA
salir CLASS • u na lista KEY( I) consiste de N partidas; estamos investigando por el
además; *elemento llam ado GIVEN: su posición INDEX en la lista será
case CODE *determinada . Si no se encuentra el elemento , el INDEX se_rá O.
inicio inicio
Entero KEY( N ), GIVEN , I NDEX , LOW , H IGH ;
Entrada N , GIVEN
fin para 1 - ! hasta que N por 1 haga
Entrada KEY (I) ;
fin
LOW - 1; •]a posición más baja en la sublista que se está investigando*
hasta que CODE = O
HIGH - N ; la posición m ás alta en la sublista q ue se está investiga ndo*
•.L a posición INDEX de la partida G IVEN se determina
Observe que podemos escribir actualmente SRC: mientras q ue LOW e; HIGH haga
siempre hasta que inicio
dado que la ejecución del bucle repita-hasta que siemp re se completará mediante la instruc·
INDEX - (LOW + H IGH) + 2; •división entera•
ción salir. si GIVEN < KEY(INDEX) entonces
Las instrucciones salir se usan con mayor frecuencia para revisar las condiciones HIGH - I NDEX-1 •busque en la primera mitad *
especiales, incluyendo los errores, concernientes al procesamiento de datos por el además
si GIVEN > KEY (INDEX) entonces
bucle. El siguiente ejemplo importante hace uso de la construcción salir.
LOW - I NDEX + 1 •busque en la segunda mitad*
',. además
EJEMPLO 3-17. Investigación binaria salga SRC • encontrado*
La investigación , j unto con la clasificación (estudiada en el Cap . 3-11 ). es una de las aplica- *Se regresa -el valor INDEX
ciones más comunes de la computadora. Consiste en el rastreo de una lista de pa rtidas en or· fin ;
den para encontrar la partida deseada. En la práctica , el objeto de una investigación es obte- si LOW > HIGH entonces *no se encontró•
ner los datos almacenados con la partida que los identifica (llamada la clave) y pa ra la cual se INDEX - O
además
lleva a cabo la identificación.
Si la lista de partidas no está clasificada , se tiene que hacer una investigación secuencial: fin
comenzando con la primera partida en la lista, los elementos de la lista se comparan con la
partida investigada hasta que se encuentre la partida solicitada o hasta que se llegue al final
Observe la necesidad para la última instrucción de decisión . El uso de este algoritm o se ilustra
de la lista sin éxito. en seguida.
80 Fundamentos de programación
Estructuras de control en el diseño de programas 81
TABLA l!-2. Pasos durante la investigación binaria; después de nueve números (N = 9) se
busca el número 300 (GIVEN = 300). Además de las instrucciones que controlan el flujo del programa, son necesarias
las siguientes instrucciones del manejo de datos (descritas en el Cap. 2):
CLAVE 111.
(5) entrada -salida;
ANTES DE LA PRIMERA ANTES DE LA SEGUNDA ANTES DE LA TERCERA (6) asignación ;
COMPARACION · COMPARACION COMPARACION (7) declaraciones (no ejecutables) .
rr1-LOW 5 5
21 21 21 Para explicar la lógica del programa y el significado de los datos , se deben usar
73 73 73 los comentarios.
124 124 124
INDEX-241 241 241 Para la conveniencia del programador, se ofrecen muchas instrucciones adi ·
300 '300' +300: cionales en los lenguajes de programación de alto nivel. Las más imponantes de és·
450 -450 450 tas son las estructuras de control adicional, que incluyen :
701 HIGH 701 701
l...l.!L....... i..1.!.L 715 (1) bucle repita-hasta que;
(2) bucle clasificado;
LOW .. l LOW=6 LOW=6
(3) instrucción case;
HIGHc 9 HIGH = 9 HIGH = 6
Li+~I
INDEX"'L-2°)•5 INDEX =l j=
6; 9 7 INDEX =t:; 6}.~
(4) instrucción salir.
( 1) inicio-fin;
(2) si-entonces-además;
(3) mientras que-haga.
:~
\
4
Subprogramas
y Programación Modular
~
¡i
i
.,..;,.,;
f;
,1
Un algoritmo de cómputo de ciena complejidad y un programa que surge de él , se
pueden considerar un sistema. Para diseñar cualquier sistema, necesitamos estar
dispuestos a identificar su estruccura jerárquica y entonces construirlo de elementos
a~tocontenidos pero que interactú~n módulos. Usados en la programació'ó para es-
te propósito son los subprogramas (también llamados procedimientos): llamados se-
,. cuencias de instrucciones que llevan a cabo tareas específicas y se les puede llamar
por sus nombres . La presencia de subprogramas en un programa interrumpe al
programa principal que inicia la ejecución y a los subprogramas que son llamados
por el programa principal u otros subprogramas durante la ejecución . Colectiva-
i
mente, al programa principal y a los subprogramas se les llama módulos o unidades
de programa.
Existen dos tipos esenciales de subprogramas: los funcionales y más comunes. las
subrutinas.
t Durante la invocación (llamado) de un subprograma , los dos módulos involucra-
dos se comunican por medio de las panidas de datos especificados. Esta comunica-
ción se puede completar por la transmisión explícita de datos (llamada paso de pa·
rámetros) o a través de las posiciones de la memoria· companida que contiene los
datos . El segundo método de comunicación , donde se consideran ciertos datos glo -
bales para los subprogramas, y por tanto , accesibles a otras unidades del progra-
ma , es destacado panicularmente en los llamados lenguajes de programación
estructurados a bloques (tales como el ALGOL o el PL/ I) .
~
El empleo repetido de subprogramas, cuando es posible en un lenguaje de
programación, tiende en ciertos casos a simplificar los algoritmos.
El diseño de programas con una identificación consistente de tareas bien defini -
das y la asignación de éstos para separarlos en módulos , se le llama programación
modular.
,.~
nas son los subprogramas más comunes que se pueden usar para comunicar a la Uno de los propósitos de los programas es su uso múltiple en un programa. Por
u¡;idad del programa llamando cualquier número de valores. Sin embargo , aunque tanto, en varios módulos del programa se pueden incluir llamadas a un subprogra-
un:a función se puede usar para regresar un número de valores de manera idéntica a ma dado (en Jos lenguajes de programación que permiten la repetición -véase la
la de las subrutinas, esta práctica se está evitando . Sec. C de este capitulo- también en el propio subprograma) . Durante cada llama-
Los subprogramas, como unidades de programa autocontenidos, tienen todas da , los diferentes valores de Jos parámetros actuales son incluidos generalmente en
las propiedades de los algoritmos (véase el Cap . 1-B) , con la posible excepción de la Ja lista.
falta ·de salida, ya que otro módulo .en el programa la puede llevar a cabo . Los Para que un llamado en orden sea significativo, se tiene que definir e incluir en
subprogramas se pueden traducir de manera independiente por razones de prueba. el programa Ja llamada subrutina.
Siguiendo la invocación y la ejecución de un subprograma , el control regresa al Una definición de subrutina consiste del encabezado de una subrutina no ejecu-
lugar del llamado en la unidad del programa invocado. Resultando sin cambios el table de la siguiente forma general : .
flujo de control en esa unidad del programa .
·subrutina nombre de la subrutina (lista formal de los parámetros)
-,.
y el cuerpo de la subrutina, por ejemplo, las.instrucciones que constituyen la subru-
1. SUBRUTINAS tina. La apariencia textual del cuerpo de una subrutina es similar al de un grupo
Una subrutina es Ja más general de las dos clases de subprogramas. Una subrutina principal.
es un
sÜbprográma que puede regresar 'expÍícitamente.un 'número ilimitado de va- Siguiendo Ja ejecución de la instrucción última de una subrutina, el control de la
ejecución se revierte a la unidad del programa llamado, específicamente , a Ja ins-
lores a Ja unidad del ·p rogtama invocado. La invocación 'de la subrutina es el térmi-
tr.ucción siguiendo de un modo textual a la .subrutina llamada. Esto es el llamado
no llamado de subrutina. • . "' retorno de Ja subrutina. Por tanto, la ejecución de la subrutina es una división tem-
Una instrucción llamada de subrutina tiene la siguiente forma general : poral ·del control de la unidad del programa llamando.
Llamado** nombre de Ja subrutina (lista de Jos parámetros actuales). . .Las instrucciones del encabezado de Ja subrutina listan los parámetros formales
de la subrutina. Estos son los nombres de las variables y de los arreglos de los datos
El nombre de Ja subrutina se forma en un lenguaje de programación como cual- '\.-. comunicados a la subrutina y/ o comunicados por ésta a Ja unidad del programa lla -
quier otro identificador, por ejemplo , un nombre de variable. Este identifica a la mado. La subrutina se escribe mediante el empleo de estos nombres más bien que
subrutina entre los subprogramas contenidos en un programa dado . con los nombres usados por las partidas de datos en el programa llamado. De este
Los parámetros (también llamados argumentos, véase Ja Tabla 4-1) son partidas modo, las dos formas se pueden escribir y traducir independientemente , así como
de datos mediante los cuales una subrutina se comunica explícitamente con la uni- las listas de Ja pareja de argumentos formales y actuales. En consecuencia, los pará -
dad del programa llamando (que puede ser el programa principal o cualquier otro metros formales constituyen retenedores de lugar para los actuales. Los parámetros
programa). Los_parámetros son predefinidos por una subrutina conforme al núme· formales pueden adquirir valores de los parámetros actuales durante el llamado y
ro y tipo de cada uno de ellos. pueden regresar valores a los parámetros actuales durante el retomo . La asociación
Los parámetros pueden comunicar valores a la subrutina (en ocasiones se les lla· entre los parámetros actuales y formales ocurre durante Ja llamada de Ja subrutina
ma parámetros de entrada) o desde la subrutina a la unidad del programa llamado y se analiza con más detalle en Ja Sec. B-1 de este capítulo .
(parámetros de salida) ..o pued~ servir a ambos propósitos presentando un valor a la Se usan nombres diferentes en Jos diversos lenguajes de programación para los
subrutina cuando ésta es llamada y adquirir subsecuentemente valores como resuJ'. parámetros formales y actuales. Los nombres más frecuentes usados se enlistan en
tado de su ejecución (parámetros de entrada / salida). la Tabla 4-1.
Los parámetros pueden constituir valores simples o arreglos de valores.
fin
Solución Si nuestro programa que ordena tres enteros se usara en un programa más general que permi-
tiera el ordenamiento de triadas múltiples de enteros positivos , se puede convenir en una
*PROGRAMA DE ORDENACION PARA TRES VALORES
subrutina:
inicio
Entero INTl. INT2. INT3 ; *ORDENE TRIADAS DE ENTEROS POSITIVOS
Entrada INTl. INT2. INT3; inicio
si INTl < INT2 entonces Entero l, J, K;
Llamado SWAP (INTl , INT2) Entrada l , J . K;
además; *TRAILER DATUM ES - 1
si INTI < INT3 entonces mientras que I "/' -1 haga
Llamado SWAP (INTl , INT3) iriicio
además; Llamado ORDER (I, J . K) ;
si INT2 < INT3 entonces Entrada l , J . K
Llamado SWAP (INT2, INT3) fin
además;
Salida INTl, INT2, INT3 fin
fin
- RUTINA QUE ORDENA TRES ENTEROS
•VALORES SWAPS DE LA RUTINA DE DOS VARIABLES ENTERAS Subrutina ORDER (INTI, INT2 , INT3)
Subrutina SWAP (L . M) inicio
*TODAS LAS INSTRUCCIONES DEL PROGRAMA DE ORDENACION DEL
inicio
Entero L. M. TEMP; *EJEMPLO 4·3 CON LA EXCEPCION DE LA
TEMP .-L; *INSTRUCCION DE ENTRADA
L - M;
M ,_ TEMP ,',:
fin fin
*VALORES SWAPS DE LA RUTINA DE DOS VARIABLES
Una subrutina puede llamar a otro subprograma (por ejemplo, a otra subrutina
Subrutina SW AP(L , M)
o a una función) . Originándose una cadena de cambios (véase la Fig. 4-1 ). Cada
J: :• • )
inicio
llamada se completa con el regreso a la subrutina llamando inmediata. *COMO EN EL EJEMPLO 4-3
:::G~MAe>UNG'/ ::':"••A< ) ~
fin
Llamado A( ... ); Llamado B( ... ) Convénzase por sí mismo que las rutinas actúan correctamente
X-2*Y; ~ M-N/L; ~fin
• Puesto que una subrutina es una .unidad de programa independiente que se
4 3 puede usar en cualquier programa , tiene su propio diagrama de fabricación [véase
la Fig. 4 -2(a)) . La línea estándar que se usa para mostrar el llamado de una subruti-
fin na en el diagrama de fabricación del programa llamando está presente en la Fig.
fin
4-2(b) .
A la instrucción en la subrut!p.a en donµe comienza la ejecución de ésta siguien -
do el llamado se le denomina punto de entrada; la instrucción que regresa el
control al programa llamando es el punto de retorno de la subrutina. Con mucha
Fig. 4-1. Una cadena de cambios. Las flechas indican el flujo de control durante la ejecu· frecuencia. éstas son respectivamente, -la primera y última instrucciones en la
ción ; los números indican la secuencia de los eventos.
90 Fundamentos de programación Subprogramas y programación modular 91
subrutina. Algunos lenguajes (tales como el FORTRAN 77, COBOL o PL/1) per-
Ya que la función referida por sí misma es sustituida por un valor, este valor es
miten al programador definir varios puntos de entrada y retorno en una subrutina.
despreciado en el programa llamando. Por tanto existe una determinada restricción
Varios puntos de entrada tienen sus propios nombres y listas de parámetros.
en el Jugar de Ja función referida dentro de este programa. Mientras que una subru-
tina llamada es una instrucción independiente y se puede colocar principalmente
nombre de la subrutina en donde se desee, Ja función referida tiene que acudir a donde el valor usado por
(lista de parámetros formales)
ésta se vaya a emplear (observe que para circunvenir esta limitación, se pueden
nombre de la subrutina emplear las variables temporales).
¡-----·-----¡ (lista de los parámetros
Con estas distinciones concernientes a Ja invocación , todo lo que se dijo sobre las
::~~~¡
actuales)
subrutinas en la sección anterior se aplica también a las funciones.
La referencia a la función se lleva a cabo como sigue:
(1) Si cualesquiera de Jos parámetros son pasados (véase Ja Sec. B-1 para de-
(a) diagrama de fabricación de una subrutina (b) linea de salida para una subrutina llamada talles).
(2) La función se ejecuta como si fuera un programa independiente. Durante
Fig. 4-2. Diagrama de fabricación de las subrutinas Ja ejecución, un valor del tipo correspondiente al tipo del nombre de Ja
función es asignado a este nombre.
(3) El regreso de la función sucede, y el valor obtenido se sustituye por la fun-
2. FUNCIONES ción de referencia .
Otros valores se pueden regresar mediante los parámetros o compartir en
Una función es un subprograma cuyo nombre adquiere un valor cpmo resultado de las posiciones de Ja memoria.
su invocación. De este modo, se obtiene un valor sencillo. Al mismo tiempo, Jos pa-
rámetros pasando y las posiciones de la memoria compartida se pueden usar para Una función se define al igual que una subrutina. La diferencia vital es que el ti·
pasar valores adicionales; es decir, de cualquier forma, es preferible usar una pode Ja función (es decir , el tipo de valor que será sustituido por la referencia) está
subrutina si se necesitan obtener varios valores en el subprograma. establecido en el encabezado de Ja función. La forma general del encabezado de
Una funeión se invoca cuando se Je hace referencia, esto es, empleando su
Úna función es
nombre y Ja lista de los parámetros actuales en cualquier instrucción en donde se
pueda usar una constante o variable que se espera rinda un valor. El tipo de valor Función Tipo nombre de la función (lista de los parámetros formales)
regresado por la función tiene que ser el apropiado . Por tanto, a Ja invocación de Ja
función se Je denomina referencia de función . Una referencia de función es , enton-
en donde el tipo apropiado es sustituido por el Tipo.
ces, un componente de una instrucción y tiene la forma general :
X ~ ------------1:2 1 orientación de C
Entero A, B . C. D;
~X~ orientación de D
V - 4; X - 2; Y - 7; I +- 11;
z (I) -
15;
fin
Llamado WORK (5, V/X, Y, Z (I))
z
y [
zc=J
J
) m A
B
e
D
Esta técnica de pasando de los parámetros se puede especificar claramente por un C. LLAMADA POR NOMBRE
programador de ALGOL o de PL/I.
El valor del parámetro actual 5e pasa a la unidad del programa llamado . Este
Este método, usado en el ALGOL, es el menos cÍaro en sus efectos.
valor se coloca en la posición del parámetro formal correspondiente.
El efecto de una llamada por nombre se especifica por la llamada regla de la co-
Las posiciones de Ja memoria de Ja unidad del programa llamando son inacce-
Pia: un parámetro formal se sustituye textualmente por el correspondiente pará-
sibles a las del llamado. Este método no se puede usar, por tanto, al pasar de regre· metro actual.
so a Ja unidad llamando: sólo es posible para el pasando de los parámetros de en·
En la implantación de una llamada por nombre, se lleva a cabo actualmente en
trada.
la sustitución no textual. El efecto se produce invocando un subprograma especial,
llamado responsable, el cual está definido por el programa de traducción. El res·
Una variación imponante de la llamada por valor es Ja llamada por valor·
ponsable evalúa el parámetro actual; cuyo valor se sustituye en lugar del parámetro
resultado. En esta técnica, se sigue una llamada por valor y Ja ejecución. del
formal. Llamar por el nombre se emplea raramente para implantar los lenguajes de
subprograma llamado, los "resultados", valores de los parámetros formales, son programación.
transferidos a las de los actuales. Este método se usa en ocasiones en las implanta·
ciones FORTRAN. Los paréntesis se insertan durante la sustitución textual si son necesarios para
hacer significativa la instrucc;ión resultante.
Subprogramas y programación modular 97
96 Fundamentos de programación
El valor obtenido y proyectado por la variable C en el p rograma principal depende del
EJEMPLO 4-9 mecanismo adoptado por el parámetro pasando. como se m uestra en seguida.
Invoque a esta subrutina:
Este llamado l. llamada por referencia: El efecto se ilustra en la Fig. 4-5.
Subrutina WORK (A , B. C, D)
Llamado WORK [5 , V / X , Y. Z(l)]
inicio
posiciones de la memoria posiciones de la memoria
de la unidad del programa llamando de la unidad del programa llamado
C-B-A; A 7 4
orientación de V
o-e +A; B 5
orientación de X
e yf 12
orientaci6n de Y
Todas las variables son de tipo entero.
fin A+B 8 orientaci6n de Z
m
DE LOS PARAMETROS de la subrutina
Mientras que en la mayor parte de los casos el programador no tiene control sobre v
la forma en que se pasan los parámetros, en algunos lenguajes existe tal control. Por X
ejemplo, en el ALGOL, en la misma subrutina algunos parámetros se pueden lla· y
mar por el nombre y otros, como los especificados, por el valor.
Llamar por el nombre es el método más general, de cualquier forma es complejo z
en su implantación. Llamar por el valor no es muy general. aunque los datos no
pueden regresarse al programa llamando (esto está solucionado en la llamada por Fig. 4-6. Aqui C = 11.
valor-resultado). Tampoco existe punto de transferencia completa en los arreglos
por valor, mientras que una orientación simple basta en una llamada por referen· 3. llamada por nombre: Conforine a la regla de la copia . ·
cia. La llamada por referencia, de cualquier forma, necesita modificación cuando
se desea que pase al programa llamado una expresión menor que su valor.
Los ejemplos siguientes establecen los puntos en los que los métodos llamandos
A- A + 1 por lo que A = 4
C ,._ A +A+B por lo que C = 4 +4 +5
diferentes· pueden en ocasiones tener efectos distintos.
e= 13
EJEMPLO 4-10
2. POSICIONES DE MEMORIA COMPARTIDAS S
Tenemos el programa siguiente:
Subrutina SUBR (V: X , Y, Z)
inicio inicio '.'J 1,
El método alterno de comunicación entre las unidades de los programas es su com-
Entero A. B. C; Entero V, X, Y, Z; partición de los datos retenidos en las posiciones de la memoria nombradas. Se dice
A ,._ 3; B - 5; C - 17; de las posiciones compartidas que contienen los datos globales.
Llamado SUBR (A . A, A + B. C): v-v+ 1;
z-x+Y En un grupo específico de !enguajes de programación de alto nivel llamados len-
Salida C guajes estructurados a bloqÚes (éstos incluyen al ALGOL y al PL/ I), existe un me-
fin t '
fin
1 -
dio para la modularización de 'la proyección de las variables. Esto significa que la programa principal :
Global I, ARRAY(IOO)
secuencia de instrucciones sobre la que existe una variable puede ser delimitada ar·
subprograma A :
bitrariamente por el programador. Tales lenguajes, junto con los subprogramas ex·
Global K , SCORES(IOO)
ternos , contienen en sí secuencias de instrucciones (estudiadas en la Sec. A) que subprograma B:
pueden ser trasladadas indep~ndientemente ; existen también subprogramas ínter· Global M, VALUES(IOO)
nos. Estos constituyen una parte integral de todo lo que es un programa, compar·
tiendo un número de variables con diferentes partes de ésta. Por tanto , la variable I se conoce como K en un subprograma A y como M en el
subprograma B; el arreglo ARRA Y. como SCORES y VALUES, respectivamente .
A. DATOS LOCALES Y GLOBALES Suponiendo que un subprograma X en este programa no contiene la declaración Global ,
no puede tener acceso a estas posiciones.
Los datos locales (variables y arreglos) existen excl~ivamente en un subprograma
dado . Sus posiciones son inaccesibles al programa llamando , y por tanto , sólo son C. LENGUAJES ESTRUCTURADOS A BLOQUES*
de significado local dentro del subprograma en donde estén declarados. De modo
que se puede escoger para ellos cualquier nombre válido en la unidad del pro· Los lenguajes estructurados a bloques son lenguajes de programación de alto nivel
grama. que hacen posible el control de la proyección de variables y arreglos (es decir, el
Los datos globales (variables y arreglos) son partidas de datos que existen en dos rango de instrucciones donde existen) permitiendo a estas entidades ser declaradas
o más unidades de programas que son consideradas globalmente. Las posiciones de en sus instrucciones compuestas en particular en un programa.
la memoria que retienen esos datos son compartidas entre las unidades de los Una instrucción compuesta inicio-fin con declaraciones precedien do a la ins·
p~gramas; cualesquier_ a de ellos puede tener acceso a sus contenidos y modificarlos . tracciones ejecutables contenidas en ella, se le llama un bloque.
El uso de los datos globales en lugar de los parámetros para comunicación entre Un bloque está compuesto de instrucciones y es posible que otros bloques (di-
las unidades de los programas, puede ser ventajoso desde el punto de vista de la efi· gamos que están contenidos dentro de él) .
ciencia del tiempo de corrida cuando: En un programa escrito en uno de los lenguajes estructurados a bloques (por
ejemplo , ALGOL o PL/ I) una variable se puede usar solamente dentro de la pro·
• Un número de entidades de datos se va a compartir entre varias unidades de yección de su declaración.
los programas. La proyección de variables y arreglos está definida por la regla de "lo último
• Los arreglos van a ser compartidos, y las llamadas no son implantadas por re· declarado" como sigue. La proyección de una variable abarca al bloque en el que
ferencia. está declarada y a todos los bloques que la contienen (sangrados), excluyendo a los
bloques en donde está declarada una variable del mismo nombre. Esta es entonces
De cualquier forma , se debe recalcar que la claridad de los parámetros que pa· una variable diferente; aunque las dos variables tienen el mismo nombre , carecen
san a menudo contribuye a la confiabilidad del programa. de relación por completo.
1
100 Fundamentos de programación
Subprogramas y programación m odular 101
proyección de las variables usan sólo dentro de cieno grupo de instrucciones. Si este grupo se coloca dentro de
inicio A, A, B, B, B, C D E F un bloq ue con las variables locales declaradas en él, estas variables:
Entero A, B, F:
inicio
•son inaccesibles fuera del bloque, lo cual da por resultado un aumento en Ja
Entero B. C
confiabilidad del sistema
• se pueden nombrar de manera independiente
,l
inicio • existen sólo en éste bloque y debido a la ubicación de la memoria dinámica ,
bloque { En~ero A, B, D;
s . es posible la economfa de espacio.
bloque bloque j f~I .
1 2 ~ :
C. REPETICION EN LA PROGRAMACION
{ inicio
bloque E7tero E;
4 fin Las soluciones a cienos problem as se expresan parcialmente de maner a conven -
cional en términos de ellos mismos. A estos algoritmos de solución se les llama repe-
titivos y usan definiciones repetitivas. Una definición repetiti"va es un p roceso d e
fin ! cómputo que consta de:
fin
\ ( 1) Una regla general (o conjunto de reglas) para obtener el resultado.p ara la
,_ mayor pane de los parámetros; esta regla se define en términos de ella m is-
ma, con diferentes parámetros.
~ ~.'.
Fig. 4-7. Las partes sombreadas corresponden a las parres del programa en donde existe una (2) Resultados explfcitos para algunos valores de los parámetros (sin éstos un a d e-
variable dada. : finición repetitiva podría ser circular ).
traslado, antes de que comience la ejecución. Como arreglo se le llama ubicadón d e Ejemplo 4-13
memoria estática.
En un lenguaje estructurado a bloques, un subprograma puede constituir otro
bloque en el programa. En este caso se le denomina subprograma interno. Un Para calcular el factorial NI de un entero positivo N , es conveniente usar la siguiente definí.
ción repetitiva :
subprograma interno compane las áreas de Ja memoria con bloques de programas
que lo contienen y por tanto, no puede trasladarse por separado. Todas las va- factorial (0) = 1
riables y arreglos cuya proyección abarca tales subprogramas son globales a éste. factorial (N) = N •factorial (N- 1), N >O
Los subprogramas internos son la única clase disponible en ALGOL mientras
que el PL/ 1 ofrece los medios para subprogramas internos y externos. Puesto que el uso de las definiciones repetitivas es una manera natural de p re-
Los subprogramas internos son la única clase disponible en ALGOL, mientras sentar una solución a ciena clase de problemas, se recomienda repetir el uso de Ja
rados a bloques. Sin embargo existen, también en lenguajes sin estructura a blo· repetición en un lenguaje de programación.
ques, como el COBOL, en la forma de párrafos PREFORMADOS (del inglés, La repetidón en p rogramación significa que:
PERFORM*) (secuencias de código). Los subprogramas internos companen en este
caso todas las posiciones de datos con el.,p~ograma principal; no pudiendo, de nin· (1) Los subprogramas se pueden invocar por sf mismos (repetü:ión directa ).
guna forma, ser parametrizados. · (2) Se permite una cadena de invocaciones de subprogramas que dé por resul·
Por tanto, en Jos lenguajes estructurados a bloques, un programa se puede tado un círculo cerrado (es decir, una subrutin a A llama a una subrutina
~
modularizar ,no sólo con respecto a sus instrucciones (es decir, subdividido en B, la cual llama a una subrutina C , la que llama a A); ésta es una repetidón
indfrecta.
subprogramas), sino tambifo conforme al acceso de datos. En un bloque, sólo se
puede tener acceso al global y al local de datos para éste. El razonamiento detrás de
la estructura a bloque es que en un programa la mayor pane de las variables se ¿Por qué ciertos lrnguajes (de manera destacada el FORTRAN y el COBOL)
rohfben la invocación repetitiva de subprogramas? · ·,
>..Cuando se llama a un subprograma , cienas·posiciones llamadas en conj unto, el
•Efectuar. ejecutar, ~alizar, llevara a cabo; dÑrrollar; cumplir. desempeñar; ejercer. :registro de activación del subprograma, son usadas para fij ar los valores de sus va-
--
~ -~ l
ciones de la memoria dinámica. Taies lenguajes como el ALGOL y el PL/ l propor· .,... ~" ci::: .!!z
cionan esta facilidad al programador. Cuando un subprograma se llama a s! mis - o ¡; o
....... ¡.... ~l
mo, se crea un nuevo registro de activación . Ya que el regreso tiene que suceder pri- u o IX
mero desde el lugar de la última llamada (compare la Fig. 4-1 e imagine que las ~ ., ~~
EU
múltiples copias de una subrutina A se llama una a ot•a), los registros de activa· • e: ~<
N .lj .. LL.
ción se tienen que usar durante las series de regresos de la forma última entrada· e:: E~
~ :§ l
primera del inglés, LIFO : last in-first out) . Por tanto los registros de activación se NIN 1: C"- • 1 f"") 1. °'
te ~
~
"O
~-:l
e~
colocan en la memoria en el estilo LIFO , lo que constituye una estructura de datos ~~o e:: c..!!
t ¡; t; "'
:g ü 2
e::,:::,
llamada pila (vfase el Cap . 5-G) . - .... < [ ., e::
Cuando sucede una llamada, se coloca un registro de activación nuevo en la par· ¡¡.. ~ .g :9
te superior de la pila; cuando comienza el retorno (repetición descendente) , se usa
·-"""
el registro de activación en la parte superior de la pila como la fuente de valores va· e ] -2""!::e::
~ ~
·-.e:: -·-..
- ·- ·:
•O - u
·- V "1
riables y de la orientación de regreso. Este se·retira en forma secuencial de la pila. IN 1: C"- • 1 f""),. ...2~ ;"' fJ~
El último registro de activación origina el regreso al lugar de la llamada inicial de
C'"- •
.g.. ...,
-: ~
e::
c.. i
.,~ ~
.~:§ ~
esteElsubprograma .
siguiente ejemplo presenta a la función repetitiva FACTOR y al contenido di-
;
~ -
." -.
e::
o e:: "
~ -~
nflmico de su pila de tiempo de funcionamiento . .
"O .:
~ -
~
'§
..!
1
tlIP
fin .lj ....
e:: u z
Los contenidos de la pila durante la realización de esta función para N = 3 se muestran en la '8. -~
- ., ....~
Fig. 4-8. Se suPone una llamada por valor. e::..., bi,
~ ¡;;
El mismo subprograma se puede implantar como una subrutina FACT (N , F) , o
como se muestra en la Fig. 4-9.
La solución repetitiva a un problema es una alternativa para una solución itera·
tiva, la cual puede deplorar una ejecución repetitiva de una secuencia de instruc·
cienes con el uso de bucles. En el Ej . 4-15 se muestra un algoritmo repetitivo para la
Subprogramas y programación modular 105
104 Filndamentos de programación
2. Obsérvese la correspodencia entre los parámetros actual y formal en el caso cuando sucede
el intercambio:
FACT N corresponde a M ; y M a N
(N, F)
Los algoritmos repetitivos se usan por su claridad y facilidad de expresión ; son
Fabo
por lo general de cualquier forma , más costosos que sus equivalentes iterativos en
términos d~ tiempo de ejecución y de espacio de memoria, debido al uso de pilas
para los registros de activación múltiple.
En un lenguaje de programación sin la facilidad de la repetición, como el
FORTRAN , se puede usar Ja repetición incluyendo explícitamente las rutinas de
manipulación de pilas en el propio programa. De todos modos, se tiene que conocer
el tamaño máximo de las pilas cuando se escribe el programa.
Explicación y análisis
· En este ·punto hemos definido la necesidad de cinco m ódulos en nuestro programa. Estos
Un archivo maestro (por ejemplo, el archivo de nómina de una empresa) consiste de un nú·
módulos se m uestran en el diagrama de estructura de la Fig. 4-1O; durante los pasos su cesivos
mero de registros (en el ejemplo , uno por empleado). Cada registro contiene un número de lW
del refinamiento se puede encontrar que éstos requieren módulos de nivel inferior. Obsérvese
campos (por ejemplo , el nombre del empicado , el pago semanal, etc.), con uno de éstos úni-
que el algoritmo de investigación binario (véase el Ej. 3-17 se puede adaptar p ara el módulo
camente se identifica el registro dentro del archivo (por ejemplo , el número de seguridad so-
cial). Este campo es llamado la clave del archivo . El archivo maestro se clasifica en la clave. INVESTIGUE.
Los registros del archivo de transacción también son identificados por la misma clave. De
\-:
este modo, un archivo de transacción para mantenimiento de la nómina puede incluir el re· Programa principal
gistro de un empleado nuevo con su número de afiliación del seguro soci&L En general , el
~ Obtenga
archivo de transacción contendrá tres clases de actualizaciones:
N úmero la siguiente
modificación de un registro maestro ("se elevó el pago del empleado"); transacción
de interfase
"tl
~¡
suspensión ("el empleado fue separado");
inserción ("se contrató un e~pleado nuevo"). 3
La naturaleza de la actualización es uno de los campos en el registro correspondiente.
El sistema que se va a diseñar es completamente simple . El archivo maestro chico se puede
INVEST IGUE MODIFIQ UE DE DE BAJA INSERTE
leer por completo en la memoria. Dado que hay pocos registros en el archivo de transacción ,
éstos no son clasificados. Investigue
Modifique ~de baja Inserte el nuevo
para el registro
el archivo el archivo archivo
Descomposición modular de arriba-abajo maestro
m aestro maestro
maestro
l. descripción inicial del algoritmo: o su Jugar
5
(5) Los módulos se pueden trasladar y probar por separado. Esto hace más fácil
una implantación del programa. Representación
(6) Si se tiene que modificar un programa modular (¡un hecho frecuente en
programación!), sólo puede ser. necesario cambiar ciertos módulos. de Datos Simples.
~
La programación modular da por resultado ahorros en el esfuerzo de programar. .t Introducción a las Estructuras
espacio de Ja memoria y con frecuencia tiempo de traslado . También aumenta la
confiabilidad de Ja programación producida, debido al uso múltiple de los módulos de Datos
chicos que son más sencillos de probar.
El costo de Ja modularización casi siempre incrementa al tiempo de ejecución ¡¡ :;~--
debido a Ja invocación de subprogramas. f¡
~
La composición de datos y Ja lógica de los algoritmos que utilizan Jos datos están re·
Jacionados estrechamente.
La representación en Ja memoria de la computadora de los datos simples del ti·
po estudiado en el Cap . 2 se presenta aquí. Una representación más detallada de los
datos numéricos, que puede ser de interés especial para un programador de len·
guaje de ensamble, se presenta en el Apéndice A .
Las partidas de datos simples se pueden organizar en estructuras de datos que
contengan información sobre las relaciones entre las partidas incluidas ..
·Un arreglo son dos estructurºas básicas, una estructura homogénea consta de ele·
mentos del mismo tipo; y un registro , una 'estructura heterogénea que puede
incluir .partidas de varios tipos. Las estructuras de datos de orden superior, se
pueden formar a partir de registros, incluyendo listas lineales (en particular, frac-
ciones y pilas), árboles y gráficas .
. _ El uso responsable de las estructuras de datos en la programación produce algo-
ritmos que son más claros y concisos, y por tanto, simplifican el programa total.
Una estructura que casi siempre aparenta el programador de un lenguaje de alto
nivel como una partida de datos no estructurada es una línea de caracteres. Las
lineas son las representaciones de cómputo del texto. Su importancia como estruc·
turas ha crecido con Ja computadora , siendo usadas cada vez más como un procesa ·
dor de información simbólica general. La representación y procesamiento de lineas
se estudian en la última sección de este capítulo.
A. DATOS SIMPLES
Los datos de un tipo simple se almacenan en una variable del tipo correspondiente.
el tipo de una variable determina el rango de los valores que pueden ser adquiridos
por l:sta durante la ejecución de un programa.
Los lenguajes de programación del más alto nivel requieren que el tipo de va·
riables usadas en un programa sea declarado. Las declaraciones se usan para asig·
nar la memoria·a estas partidas de datos, así como para determinar qué operaciones
les son aplicables."
p
¡ -
110 Fundamentos de programación
t Representación de datos simples. Introducción a las . ..
t 111
Determinados lenguajes (por ejemplo, ALGOL 68, Pascal, SNOBOL) les permi- EJEMPLO 5-1
ten a los programadores definir sus propios tipos de datos especificando el conjunto Las computadoras de 16 bits (muchas minicomputadoras son de esta clase) permiten enteros
de valores que se le pueden asignar a las variables correspondientes. en el rango de -52 767 a 52 767 ; las computa~oras de 52 bits (por ejemplo, las máquinas de
los sistemas/ 560-570 de IBM tienen un rango de .:!:. 2 147 485 647.
El significado de una palabra de datos se determina entonces no sólo por la codi- El rango se puede ampliar mediante la prográmación. ·
ficación binaria almacenada en eila, sino también por el tipo de datos que se dice
contiene.
Se debe recalcar que aunque un programador de lenguaje de alto nivel está libre 2. NUMEROS REALES
de los detalles de la representación de datos, en la mayor parte de Jos programas de
aplicación, de _c ualquier ÍOl"Il!a el conocimiento de esta representación es necesario,
En programación, cuando una variable es declarada real, no se excluye la posibili-
para que un programador sea experto en un lenguaje de alto nivel o para usar un
dad de que tome el valor de un entero. La declaración implica simplemente una
lenguaj~_ de ensamble.
representación diferente de la variable, un diseño para incrementar su rango y pre-
Para representar Jos datos numéricos, casi todos los lenguajes proporcionan tipos
cisión. Los números reales se almacenan en las memorias de la computadora usan-
de datos enteros y reales. Algunos proporcionan también números complejos y de
do la representación de punto flotante, la cual es una versión de la llamada nota-
doble precisión. La mayor parte de los lenguajes le permiten al programador usar
ción cientffica. Esta representación •consta de dos partes: la mantisa (o fracción
datos lógicos y caracteres; pocos Je permiten el uso de indicadores y niveles como ti-
decimal), que da los dfgitos contenidos en el número; y el indice de escala, llamado
pos de datos.
el exponente (o característica), que determina el lugar del punto decimal con res-
Cienos lenguajes permiten la iniciación de variables, una asignación de valor
pecto a estos dígitos. · -• · ·-· .
inicial en una declaración.
.:.
EJEMPLO 5-2
1. ENTEROS --..
En el sistema decimal ,
Los enteros no tienen parte fraccionaria y por lo general, se representan en la me-
moria de la computadora como números de punto fijo, por ejemplo, números cuyo 123 000 = 0.123. 10'
punto decimal está en una posición fija con respecto a los dígitos del número. En el donde O. 125 es la mantisa y 6 el exponente;
Apéndice A-4 está contenido un estudio más detallado ·de la representación de nú-
0.00151 = 0.1 51 • 10-•
mero de punto fijo.
Aunque en matemáticas los enteros son un subconjunto de los números reales , donde O. 151 es Ja mantisa y -2 el exponente.
los dos son tratados de manera diferente en el cómputo aritmético debido a lama- Es evidente que la rafz (base) es JO .
yor sencillez con la que se pueden representar y manejar los enteros. Dado que un
entero N, por lo general, ocupa una palabra simple en Ja memoria de un modelo de En general, en esta representación, un· número X se representa como:
computadora, el rango de enteros es X= M. RE
Cuando es~án disponibles como tipos de datos, los números complejos por lo gene-
X/Y< DELTA
donde DELTA es muy pequeño. En su lugar exprese esto como: ral se representan en dos palabras que contienen, separadamen~e. las pan es real e
unaginaria del número. Cada pane es un número real, representado en el modo de
punto flotante.
X< Y• DELTA
En las aplicaciones comerciales, en ocasiones se representa a los números reales 5. NUMEROS DE DOBLE PRECISION
en el modo de punto fijo. Esto deja el control sobre el punto base con el programa-
dor (y es útil, por ejemplo, en la representación de dólares y centavos).
~s números de doble precisión están disponibles como un tipo de datos en algunos
lenguajes y constituyen un caso especial de los números reales.
. Se usan dos palabras para representar un número de doble precisión en el modo
de punto flotante. Generalmente, la segunda palabra contiene a los bits menos sig-
3. ARITMETICA DEL MODO MIXTO
nificativos de un exponente extendido. Esto aumenta la precisión del número sin
incrementar su rango.
Si está permitida la aritmética del modo m ixto en la implantación de un lenguaje ;..:
de programación dado, en una expresión se pueden mezclar tipos diferentes de va- 6. · DATOS LOGICOS
lores numéricos. En panicular, las constantes y variables enteras y reales se pueden
usar juntas.
Una variable lógica puede tomar sólo uno de dos valores: verdadero o falso, repre·
Esto significa que el número de conversiones se realiza cuando es necesario, del
modo entero al real y viceversa. Estas conversiones se llevan a cabo de manera auto-
~tados como l y O. Por tanto, una panida lógica puede ocupar un bit simple , sin
embargo, en la implantación de la mayor pane de los lenguaj es, una panida de da-
mática, por ejemplo, en el respaldo del software de sopone como los traductores. tos lógicos simple se coloca en su propia palabra.
• Generación de un va)or inferior al mlnimo aceptable. En una operación aritmética, generación de una 7. CARACTER DE DATOS
cantidad demasiado pequeña para que pueda ser almacenada por el registrador. (N. del T.)
•• En una operación aritmética, generación de una cintidad que rebasa la capacidad del registro; estado Los caracteres son componentes de líneas de caracteres, una estructura de datos im-
en que se rebasa la capacidad de representación de números.,(N. del T.) ;.( ponante estudiada en la Sec. J de este capítulo.
"'
114 Fundamentos de programación
•
Representación de datos simples. lntroducczon a las.
Un carácter como una partida de datos es la representación interna de un carác- 115
ter imprimible o de control en la memoria de la computadora. 8. INDICADORES Y NIVELES
El conjunto de caracteres de una computadora por lo general incluye:
(a) ASCII (Código estándar americano para intercambio de información)*. Es- Los algoritmos operan en datos que répresentan hechos sobre el mundo real. El al-
te es .u n código de 7 bits (véase el Apéndice B-1); por tanto sólo se pueden goritmo y el dato, unidos detenninan los resultados de la ejecución del programa,
representar 128 caracteres. También existe una variación del código de 8 están en una relación simbiótica : la mayor parte apta en la composición de datos
bits. para la aplicación dada, el más sencillo de los algoritmos para su procesamiento.
(b) EBCDIC (Código de intercambio decimal codificado binario ampliado)** . Por tanto, para simplificar el algoritmo, es más deseable a menudo organizar .los
Este código que ha ganado gran aceptación, fue desarrollado por IBM. Co- datos en entidades lógicas de orden superior que en variables simples; estas entida-
mo un ~ódigo de 8 bits (véase el Apéndice B·l), hace posible la representa· des son estructuras de datos. En otras palabras, una estructura de datos es una co-
ción de 256 caracteres. lección organizada de partidas de datos simples. En consecuencia, están caracteri-
zadas por:
-<-.: Ciertas estructuras de datos (como arreglos o lfneas) están disponibles directa-
"rnente· al programador en la mayor parte de los lenguajes de programación de or-
~Cn
•Del inglés: American Standard Code for Information lnterchangc . (N . del T.)
.. .
" Del inglés : Extended Binary Coded Decimal lnterchange Code. (N. del T.) superior usados con amplitud; otros se pueden construir usando variables
' '.,simples y estructuras disponibles .
116 Fundamentos de programación
Representación de datos simples. Int roducción a las . . . 117
Un arreglo (de una o más dimensiones) y un registro son estructuras de datos bá-
sicas. Un arreglo trae juntas panidas de datos simples del mismo tipo al que hacen . Cuando las partidas de datos simples que forman una estructura son menores
referencia, su nombre-colectivo (el nombre del arreglo), y por sus notas, que identi- que las palabras de Ja_memoria, pueden ser empacadas: varias panidas se pueden
fican sus posiciones dentro del arreglo. Los arreglos de las lineas de .caracteres son colocar en una palabra simple. Puesto q~e no se pueden orientar directamente (sólo
una palabra o un byte lo pueden ser), se tienen que definir por medios de progra-
también imponantes. ~ación. '
Un registro puede consistir de panidas de datos simples de varios tipos así como ·-
de lineas de caracteres. Estos datos de integran en una entidad simple ya que descri· EJEMPLO 5-4
ben atributos de los objetos del mundo real descrito por el registr9, Por lo general,
el registro dado se selecciona de las estructuras de orden superior por el valor de una Un arreglo de datos lógicos (cada uno de 1 bit de longitud) se puede empacar en pala bras de
de sus panidas (llamadas también campos). ·· 16 bits colocando 16 elementos del arreglo en una palabra simple.
Las variables simples; los registros y los arreglos, en ocasiones se pueden organi·
zar en estructuras de orden superior. Estas estructuras a menudo son dinámicas, lo Existen dos métodos básicos de colocación en Ja memori;: para las estructu; as de
orden superior, tales como listas.
que significa que durante la ejecución del programa que las está usando, algunos de
sus componentes pueden ser eliminados y otros incorporados; las re]aciones entre ·C~ando
;1" se usa una representación secuencial, los componentes de las estruct uras
ae·datos se colocan err posiciones consecutivas de la memoria. Las ·relaciones entre
los componentes también pueden cambiar.
Las estructuras de orden superior incluy~ las listas lineales (y, en particular, sus
~to;"componentes están implkitas en sus posiciones con resp~to
a las ot~as:
formas restringidas como pilas y fracciones), árboles y árboles binarios y graficas '!iiJfLa .altemativa es la representación de enlace en la que cada co~ponente
-·l ·':. ,-
de la
(redes). ~t~ctura de datos incluye una o más partidas adicionales; éstas establecen su rela-
Estas estructuras se usan para organizar a los datos que se mantienen en la me· ~~5'>I!- a los componentes que las rodean. Las panidas de datos en línea son indicado-
moria principal así como para mantener a los datos que predominan·en la memoria :;• ,· t~¡Jll~ados también enlaces) , que contienen la orientadón de la memoria de las
secundaria. Las colecciones de datos residentes en el archivo secundario están orga·
~'.. .r,·;.. otras panidas en la estructura .
nizados en entidades autocontenidas llamadas archivos, a menudo se usan con va· ,. ':s:~ En la Fig. 5-1, el componente A está indicando al componente B, lo cual signifi-
rias estructuras de orden superior. La organización de archivos se estudia en el . ~a que el valor almacenado en la posición del indicador es 50, que corresponde a la
Cap . 10. f' ~~ri~;1_1tación de la priinera palabra del componente B.
El capítulo presente introduce las estructuras de datos a nivel conceptual, sin el ... <' Los indicadores (enlaces) establecen la organización de las estructuras de datos.
espacio dedicado a los algoritmos para su manejo. Su significado depende de la estructura y se estudia con más detalle en la descrip-
ción de varias estructuras de datos en este capítulo.
;;~· La representación secuencial es rígida ya que la eliminación de los componentes
C. ORGANIZACION LOGICA Y FISICA DE LAS ESTRUCTURAS
.~.de la estructura, y la inserción en ésta se pueden hacer solamente con cargo a la re-
DE DATOS .·~ -prganización fisica de la estructura en la memoria. Por tanto es aplicable cuando la
-. :composición de la estructura no cambia significativamente durante la ejecución del
La memoria de la computadora consiste de palabras con orientación consecutiva. ·. ~ programa.
Cada palabra está formada de bits, el número de éstos en una palabra está determi·
La representación de enlace es flexible, en ésta para llevar a efecto los cambios
nada por un modelo de computadora dado.
estructurales basta cambiar tan sólo unos indicadores. En consecuencia, es apro-
Las estructuras de datos constan de partidas de datos simples apropiadas para el
piada para las estructuras de datos dinámicas. El costo de la flexibilidad es el espa-
programa en el que se van a usar. Las relaciones entre estas partidas (tales como se·
cio de la memoria y el tiempo requerido para mantener los indicadores, ya que son
cuencia, prioridad, etc.), forman una pane de la estructura. elementos estructurales exclusivamente.
J~
Si una estructura de datos disponible directamente en un lenguaje de programa·
ción dado (como por ejemplo, los arreglos que están en FORTRAN) , Ja representa· indicador
·-~·,,,
ción de esta estructura está establecida por el traductor del software. Si la estructu·
ra no está disponible, el programador la tiene que construir de los tipos de datos otr~ - __
disponibles.
Dado que la estructura de datos se: tiene que colocar en las palabras de la memo· ~-··
ria, cada estructura está caracterizada por su organización lógica. (relaciones entre 100 50~
sus componentes según sean requeridos para su aplicación) y su organización física orientación de la memoria
(colocación en Ja memoria).
Un indicador.
118 Fundamentos de programación
Representar:z6n de datos simples. Introducczon a las.
119
Cuando se usan las ubicaciones de enlace, la cantidad de memoria disponible E. REGISTROS
para la estructura de datos se divide en dos panes. Una mantiene a Ja estructura co· ,.,..;.-
Un arreglo es una colección ordenada de panidas de datos simples del mismo tipo.
UnFig.
la registro
5-2 . personal de un empleado puede constar de los campos y subcampos mostrados en
Lógicamente, un arreglo puede tener varias dimensiones, lo _q ue significa que sus
elementos se pueden identificar por varios subindices. (Para ÚJCl estudio más amplio
de la .organización y uso de los arreglos lógicos, véase la Sec. 2-C-2.)
La organización fisica de los arreglos, generalmente es secuencial debido a que Número de afiliación
sus componentes rara vez cambian durante la ejecución del programa. Puesto '
del Seguro Social nombre
que los arreglos están disponibles por lo regular a un programador de lenguaje de
// ~
dirección
casado
/\~
alto nivel como 'una estruétura de datos "lista", la colocación de los arreglos en Ja
memoria es llevada a cabo por el software de los sistemas.
Existen dos métodos de colocación de archivos: el orden de renglón mayor, usa-
do en la mayor parte de los lenguajes, cuando el último subindice cambia más rá -
.. apellido
materno
apellido
patemo• nombre
/
calle ciudad estado
código
postal
pido , y el orden de r:olumna mayor, usado en FORTRAN, donde el primer índice
cambia más rapido . ~
número nombre
de la calle de la calle
Fig. 5-2.
EJEMPLO 5-5
;:---
Se supone que se coloca un elemento por palabra . • Se(N.
rente. cambio el orden de los apellidos de la versión inglesa, ya que en español se escriben en orden dife-
del T.)
~"-'----·~~~~~~~-----'~~~~~~~~~
EJEMPLO 5-7 Por Jo general los registros están organizados en archivos q u e son mantenidos en
el archivo secundario y cuyas partes se introducen ·en Ja memoria principal cuando
En una colección de registros personales, el número de afiliación del Seguro Social de un
es necesario. Los archivos son Ja organización de datos básica en el proceso de infor-
empleado puede servir como clave.
mación (Véase el Cap. 10).
En un lenguaje de alto nivel en el que Jos registros pueden ser declarados como
estructuras de datos (como el COBOL o el PL/ I), se usa el sangrado para especi- F. LISTAS LINEALES
ficar el nombre del registro, sus campos y subcampos. Los niveles de un registro es-
tán también numerados , como se muestra en el ejemplo inferior. Una lista lineal es una secuencia finita de partidas de datos simples o registros (por
simplicidad, a los elementos de Ja lista se les llama nodos). Cada uno de los nodos en
EJEMPLO 5-8 una lista forma una secuencia (con excepción del primero y del ú ltimo) que tiene un
sucesor y un predecesor únicos.
Se puede usar la declaración siguiente para declarar el registro EMPLOYEE del Ej. 5-6.
EJEMPLO 5-9
01 EMPLOYEE (EMPLEADO)
02 NUMERO S.S. Los registros en un directorio telefónico ~onstituyen una lista lineal. Cuando los nodos de una
02 NOMBRE lista están colocados en la memoria de manera secuencial, se obtiene una tabla.
03 APELLIDO PATERNO Si el directorio telefónico de una empresa se mantiene en la memoria de una computado·
03 APELLIDO MATERNO ra , se puede almacenar en una tabla mostrada a continuación, donde se supone que cada re-
03 NOMBRE gistro ocupa l O posiciones de la memoria.
Este registro se puede representar en Ja memoria como se muesta a continuación. La alternativa de una colocación fisica de una lista lineal es una lista enlazada,
cuya estructura general se muestra en Ja Fig. 5-3 .
Núm. Nombr< El primer nodo en Ja lista está señalado por una posición especial llamada un enca-
Núm. Apellido Apellido Casado
Nombre de la de la Ciudad 1 útado 1 Zona bezado de la lista, m ientras que el último nodo se puede reconocer· por el hecho de
s.s. paterno materno
call• call•
postal
que su indicador (llamado indicador n ulo) no contiene una orientación válida. Esto
por Jo general, se muestra gráficamente con el símbolo eléctrico d e "tierra", y e l va -
Observe que sólo los campos elementales y los subcampos son almacenados fisicamente. Los lor actual almacenado puede ser, por ejemplo, -1.
subcampos compuestos son entidades lógicas.
encabezados de la lista
Por lo general, flsicamente los campos de los registros son almacenados en posiciones campos de información el último nodo
de archivo consecutivas, con frecuencia en forma de paquetes.
/ /
Algunas aplicaciones requieren registros de longitud variable, debido a la longi-
tud variable de un campo (como el APELLIDO PATERNO) o a un número va-
riable de campos (como el NOMBRE).
~ . .4
Cuando los registros se usan como elementos de estructuras de datos de orden
indicador nulo
superior suficientemente pequeños para mantenerlos en la memoria principal, a
menudo se les llama nodos de la estructura. Fig. 5-3. Lista enlazada (forma general).
-------------~--·· ------ ·~--- · - :..............: •.,,__J_·_~.'.- -" ••. ~-~-_...-~ .... ~-- .... .'..-....-
:. A r - - ~ indicador viejo
;o0;."~·-
tantes.
Una fracción es una lista lineal en la que se permiten las inserciones sólo en un
extremo (llamado la cola de la fracción) y las cancelaciones en el otro extremo (lla-
.
.., _ ____......._ •• • ••• 1-< -'-"'·--···
•~
6f
124 Fundamentos de programación
Representación de datos simples. Introducción a las. 125
frente de la fracción
CQ
cola de la fracción
una pila hasta que llegue el momento de arrojarlos y seguir la trayectoria de Ja eje·
registro registro
cución que estos datos representan. Las pilas a menudo se usan en la programación
11(Í1 1t 1
t {
éÍH:nu • ~
de sistemas, particularmente para implantar la repetición (véase el Cap . 4-C).
~
Las operaciones de la pila son llamadas empuje y salto en lugar de inserción y ~ hojas~
0
eliminación , respectivamente. ~~ \
En una pila, las partidas diferentes a la de la parte superior son inaccesibles. : (a ~
Puesto que las partidas son empujadas siempre en la parte superior de la pila y la \ I
última partida empujada será la primera en ser aventada, una pila es una estruc-
~'
'' /
/
tura de datos-de última entrada-primera salida (UEPS). ' _,..
Una pila se usa frecuentemente en el diseño de programas, cuando durante la
ejecución de un programa surgen posibilidades múltiples y todas éstas se tienen que
Fig. 5-8. Arboles.
seguir. Ya que sólo una trayectoria de ejecución se puede seguir a la vez con un pro-
cesador simple , los datos que representan otras trayectorias son empujados sobre
Las lineas que conectan los nodos muestran la organización lógica de la estruc-
. . pane superior de la pila tura del árbol dado .
eliminación mscrc1ón
(salto) (empuje) Mientras que un nodo de una lista lineal puede en general tener un antecesor
/' { y un sucesor simples, un nodo de un árbol, diferente a Ja raíz, tiene un antecesor y cual-
pane superior (pane superior) qwer número jinito de sucesores. En la estructura de un árbol, a un antecesor se le llama
padre; y a un sucesor, hijo .
Las estructuras de árbol se usan para representar cualquier diversificación de las
relaciones entre las partidas de datos, como la composición jerárquica de datos (por
ejemplo, el diagrama de organización de una empresa o de conjuntos sangrados
pane inferior
LJf , ,. .;.. ., , ~
que consisten de conjuntos más chicos que en su turno pueden incluir sus propios
subconjuntos) o árboles de decisión (en particular, árboles de juego).
EJEMPLO 5-ll
A menudo se programa a las computadoras para jugar juegos de mesa como ajedrez o back-
(a) pila =uencial (b) pila enlazada gammon (juego de chaquete). En tales juegos, la computadora "ve el encabezado" de varios
movimientos en orden para seleccionar su mejor movimiento contra su oponente humano. En
Fig. 5-7. Pila.
la Fig. 5·9 se muestra un árbol de juego .
. Ja
- - - -- - - --~- - --~~ --- ---~~~~--
---~~~--~~~~---~~~~~~~~--~~---·- ·~·--~--
X Los nodos del árbol en la Fig. 5-JO(c) serán tomados en Ja siguiente secuencia durante el cruce
respuestas posibles por el humano
del preorden:
f
~puestas posibles por la computadora
ABCDFE
X X
La representación flsica de los árboles puede ser secuencial, en que los nodos del
posiciones del tablero que son ganadas por la computad~ra
caso estén colocados en la memoria en un orden lineal impuesto por un cruce o
X movimientos que evidentemente son inferiores; no hay mayor investigación
enlazado. En el caso de posiciones enlazadas, los indicadores (enlaces) se colocan en
el nodo padre para apuntar hacia sus hijos. Las hojas de un árbol tienen indicado-
Fig. 5-9. Un árbol de juego. res nulos (véase la Fig. 5-11, en donde se muestra la representación de los árboles bi-
narios de Ja Fig. 5-10).
De este modo se desarrolla un árbol para una trayectoria deseada.
~
Los árboles generales , en los que un padre puede tener un número finito de hi-
jos, son algo dificiles de manejar. De todos modos, se pueden convenir fácilmente
a otra estructura de datos, llamada un árbol binario, el que se puede manejar con
mayor facilidad .
Un árbol binario es una estructura de nodos que está vada o que consiste de una
ra!z y de dos árboles binarios que salen de él. Estos dos árboles binarios son llamados
subárboles de Ja raíz . Esta definición repetitiva se aplica a cualquiera de las estruc-
turas mostradas en Ja Fig. 5-10 .
Muchos algoritmos requieren que cada nodo en un árbol binario tenga acceso
(a) (b) (e)
exactamente una vez; como proceso de rastreo se le llama transversal del árbol.
Fig. 5-11. Los árboles binarios (representación enlazada). Obsérvese que los indicadores
!©
corresponden a las ramas del árbol.
l. GRAFICAS
e Una gráfica (llamada también red o malla) es un conjunto de nodos y ramas conec-
tados. Las ramas definen la relación entre los nodos en el contexto de una aplica·
ción dada.
Para representar los datos para un programa de inventario, puede ser necesario mantener la
información que relaciona las partes a los productos que las usan. Tal información se puede
mantener convenientemente en las ramas de una gráfica mostrada en la Fig. 5-12.
Fig. 5-10 . Arboles binarios.
---·-------· • ¡
. .. • .. ··11 " -. · 1 ......
pane 1
J. LINEAS DE CARACTERES Y SU PROCESAMIENTO
La.s lineas de caracteres están disponibles directamente como Wla estructura de datos en la
mayor parte de los lenguajes de nivel superior de propósito general. F.! procesa-
miento de un texto, por ejemplo, los datos del carácter, como distinto al cómputo
Fig. 5-12. Una gráfica. numérico, es un campo siempre extenso. ·
Los caracteres de una línea están representados , como se estudió en la Sec. A- 7,
con el uso de un código binario, de 7 u 8 bits por carácter. Para formar una línea se
Aqui una rama significa: .. esta parte va en la fabricación de ese producto". almacenan estos caracteres como una estructura de datos secuencial o enlazada, co-
mo se muestra en la Fig. 5-14.
Alguna aplicación requiere gráficas din.gidas (diagráficas), en la.s que cada ra- La longüud de la línea (es decir, el ñúmero de caracteres en ella) se almacena
ma está dirigida. ca.si siempre en la palabra precedente en el caso de la representación secuencial y en
el encabezado de la línea en el caso de la enlazada.
~
EJEMPLO 5-14 El uso de la memoria adicional en la representación adicional está compensado
por la flexibilidad en el proceso. Por ejemplo, si nuestras líneas tienen que ser edita-
Una gráfica dirigida puede representar un diagrama PERT, usado en la administración de das en 'UNA LINEA MAS LARGA' con la inserción concomitante de 7 cáracteres
proyectos . En esta digráfica los nodos significan eventos, que se completan durante .la realiza - (¡los espacios también son caracteres!), se tendrá que seguir un movimiento signifi-
ción de un proyecto , y los cortes , las actividades de evento a evento. Los cortes se gradúan cativo de datos en una línea de almacenamiento secuencial.
conforme a la duración de estas actividades ; por ejemplo , en dias (véase la Fig. 5-l!l}. Las siguientes son las bases del procesamiento en línea.
(1) Una constante de línea se encierra entre comillas simples; por ejemplo :
La.s comillas no son pane de la línea. Esta es una linea vacía:", cuyo uso en
el procesamiento en la linea asemeja el uso del O en el manejo aritmético.
byte
~ ,tespacio
Las gráficas se usan para representar cualquier red del mundo real, tales como NG
las tuberías, redes telefónicas, o cualquier red de actividades de la.s que una gráfica
palabra 1
PERT es un ejemplo. ~ '--v----" '----v--' ~
Una gráfica es la estructura de datos más general, ya que cualquier nodo de és- nodo 1 nodo2 nodo3 nodo4
ta puede ser conectado a cualquier otro nodo , o inclusive a si mismo. (b) representación cnluada
La repi:esentación fisica de la.s redes en la memoria es usualmente enlazada, con el valor almacenado es 'UNA LINEA'
los enlaces correspondientes a los eones de la red. La representación secuencial es "·~-
posible descomponiendo una red en árboles, pero es inevitable por lo regular la ·~~~
duplicación de ciertos nodos. Fig. 5-14. Representación de una linea e,; la memoria. El valor almacenado es 'UNA LI-
NEA'. Se supone que una palabra. almacena dos bytes en esta computadora.
i.·'., !"~7':.(•. ' l ' ' ' ~ • . .,.....,,. ::I"~ ... ' j
(2) Un carácter del tipo variable cuyo valor es una linea que puede ser decla- pulares aseguran que las letras del alfabeto están en orden (1 < 2 < _._<
rado como sigue: 9) , y los espacios en blanco son más chicos que Jos de letras y digitos.
Por tanto, considerando los valores en nuestro ejemplo de corrida, du-
NOMBRE del carácter rante Ja ejecución de la instrucción
Generalmente también es posible declarar arreglos y funciones cuyos valo- si (NOMBRE < " A.ABRAMS') entonces
res sean lineas de caracteres.
En lenguajes con ubicación de memoria estática (véase la Sec. 4-B-2) ,
la longitud máxima de cada entidad por tipo de carácter se tiene que
. declarar; si su valor es más cono que su longitud, las posiciones a la de- además
recha se rellenan con espacios. En los lenguajes con ubicación de memoria
dinárriica, la longitud actual de cada entidad se puede determinar por su
valor presente.
(3) Es posible la asignación de una linea (o de un valor de una expresión en Ja rama además se debe seleccionar _
linea valuada) a un tipo de carácter variable; por ejemplo,
lAs funciones interconstruidas operan en lineas que usualmente están dis-
NOMBRE - ' V .ZWAZZ' ponibles en los lenguajes de nivel alto que proporcionan el procesamiento
de la linea. Aquf se estudian dos de las funciones más útiles; ambas ope-
(4) La concatenación (la unión entre sí) de dos llneas es una de las opera- ran en cualquier expresión de linea valuada.
ciones esenciales en las expresiones de llnea valuada. Por ejemplo, indica- (a) LEN(linea) regresa Ja longitud de Ja llnea. De esta manera, consi -
da como / /, la operación derando la variable anterior NOMBRE.
LEN(NOMBRE) regresa el valor a 7.
linea 1 I I línea 2 (b) INDEX(llnea sujeto, linea modelo) determina cuál de las lineas
modelo está contenida como una sublfnea en la linea sujeto . La in-
que agrega la linea 2 al final de la linea 1, por ejemplo. vestigación de una linea modelo en una linea sujeto, realizada por
esta función , es denominada igualación de modelos. Esta función
NOMBRE - 'V .'// 'ZWASS' regresa el valor de O si no se encuentra el modelo; de Jo contrario, se
regresa un entero indicanrlo su existencia ("primero") en el sujeto.
produce una linea 'V.ZWASS' como el valor de la variable NOMBRE. Por ejemplo.
(5) Una sublínea (una pane continua de una linea) se puede extraer de una
linea estableciendo el principio y fin de la sublinea deseada en paréntesis INDEX (NOMBRE, 'V .Z') regresa O (¡observe estos espacios en blanco!);
siguiendo el nombre de la linea. INDEX ('TARTAR', 'TAR') regresa l.
Los caracteres de la linea se consideran numerados de izquierda (1) a
derecha. Algunos lenguajes hacen posible Ja sustitución de Ja linea modelo , si se en-
De modo que en el ejemplo anterior:
cuentra en Ja linea sujeto , por otra, llamada linea objeto.
Un complemento amplio de Jos medios para el procesamiento de lineas, está dis -
NOMBRE(4: 5) tiene el valor 'WA'
NOMBRE (1 :1) tiene el valor 'V'
·' ponible en los lenguajes diseñados especialmente para este propósito, de los cuales
el mejor conocido es el SNOBOL
El ejemplo siguiente ilustra el procesamiento dé linea.
La asignación siguiente
'lt ·
f
132 Fundamentos de programación
Solución
•EL ALGORITMO REEMPLAZA A LOS NOMBRES DADOS POR INICIALES
•COMPLETO - nombre original
•NUEVO - nombre con iniciales
inicio
Carácter COMPLETO. NUEVO;
Entrada COMPLETO; Salida COMPLETO;
NUEVO - "; •INICIE COMO LINEA VACIA*
*CONTINUE LA JNVESTIGACION DE ESPACIOS EN BLANCO EN EL NOMBRE
ORIGINAL*
l<- INDEX(COMPLETO. ");
Parte Dos
mientras que (I 'F O)haga •ENCONTRO ALGUN ESPACIO EN BLANCO*
inicio
NUEVO<-NUEVO // COMPLETO (l:I)". *MANTENGA EL INICIAL* CONCEPTOS
COMPLETO - COMPLETO(! + I : LEN(COMPLETO)) ; ELIMINA EL
NOMBRE DADO• DE LOS SISTEMAS
l <- INDEX(COMPLETO. ") *ENCUENTRE EL ESPACIO EN BLANCO
SIGUIENTE* DE COMPUTO
fin;
NUEVO ..... NUEVO / / COMPLETO; •AGREGUE EL ULTIMO NOMBRE*
Salida NUEVO
fin
Notas
l. Observe que el algoritmo trabaja correctamente para un nombre sin algún nombre
dado.
2. Trace la operación de este algoritmo sobre cualquier nombre.
¡.1.;
De manera que los sistemas de operación, traductores y otros sistemas del soft-
ware median entre el usuario y el hardware . En algunos sistemas, partes del softwa-
re son almacenadas permanentemente en memorias especiales (microprogramadas)
para convertirse en el llamado almacén de respaldo.•
6
Mientras que el diseño del hardware de varios modelos de computadora difiere ,
los principios generales de las organizaciones de los sistemas de cómputo han emer- Los Lenguajes de Nivel Alto
gido. Con la excepción de la entrada/ salida y ciertos dispositivos secundarios y de
memoria masiva , las unidades funcionales de las computadoras están construidas y sus Traductores
de dispositivos electrónicos. Los componentes básicos de éstos son los circuitos de
conmutación con dos estados alternos. A menudo se les llama de lógica de cómpu·
to.
Junto con el hardware y el software, cada vez más y más importantes recursos de
muchos sistemas de cómputo están organizando colecciones de datos relacionados
con las aplicaciones para las que se usa el sistema . Este recurso se maneja también
por programas de software especializados: los sistemas de administración de archi-
vos o base de datos. En la actualidad el núcleo de la programación se hace en uno de los lenguajes de ni-
Como en otras disciplinas ciendficas, la ciencia del cómputo ha evoluci~nado vel alto, mejor que en el lenguaje de ensamble, particular al modelo de computado·
sobre bases teóricas . Estas incluyen la teoria de cómputo (lo que pueden hacer o no ra dado (véase el Cap . 7) . La programación en un lenguaje de nivel alto es más fácil
las computadoras), la teoría de los algoritmos y m complejidad , la teoría de los len- de aprender , y Jos programas son más fáciles de implantar, comprender y modifi-
guajes formales, y el estudio de las estructuras algebraicas principales, entre otras car, ya que las instrucciones son una extensión autodocumentable. Otra ventaja es
materias, a la teoria de los circuitos de conmutación. la portabilidad de tales programas debido al uso amplio de los lenguajes principa ·
les .
La facilidad de la programación de los lenguajes de nivel alto está relacionada al
costo de una dificultad relativa en la traducción del programa. Los traductores pa·
ralos lenguajes de nivel alto so~ significativamente más complejos que los traducto·
res para lenguajes de ensamble, llamados coordinadores. Ei proceso de traducción
por sí mismo consume más tiempo de la CPU y usa más memoria que el ensamble, y
el código traducido es por lo general menos eficiente que un programa escrito en
lenguaje de ensamble. La mayor parte de los ienguajes de nivel alto son traducidos
por las computadoras que convierten por completo el programa fuente en un
programa objeto antes de su ejecución. Ciertos lenguajes (a menudo aquellos con
instrucciones complejas) son traducidos y ejecutados instrucción por instrucción por
los intérpretes. Este tipo de traductores no produce el código objeto y requiere más
recursos del sistema tales como tiempos de la CPU y de la memoria principal, pero
ofrece ventajas importantes al programador: el cómputo interactivo y una mejor
detección del error.
Se presenta un examen de los lenguajes de nivel alto más importantes. Este repa·
so resume las áreas de aplicación y la especificación de cada lenguaje.
Las primeras áreas de aplicación de estos lenguajes son de: El ALGOL 68, cuyo diseño cubre muchas generalizaciones teóricas de los con-
ceptos del ALGOL, es dificil que sustituya al ALGOL 60.
• Propósito general: PL/I, Pascal, ALGOL 68.
• Negocios: COBOL, RPG.
• Ciencia e ingeniería: FORTRAN, ALGOL, APL. 2. APL
• Computación interactiva: BASIC, APL, LSP.
• Procesamiento simbólico: SNOBOL, LISP. El APL es un lenguaje poderoso con ventajas distintivas. Se usó primeramente en el
• Simulación: SIMSCRIPT, GPSS, CSMP. medio cientffico, y también en el administrativo. Un científico o un ejecutivo a me-
• Computación personal: BASIC. nudo encuentran el lenguaje fácil de aprender y simple de usar debido a la breve-
dad de expresión y a la naturaleza interactiva.
Los lenguajes usados en las ciencias e ingeniería tienen instalaciones extensivas El poder del APL radica en su capacidad de la manipulación de los arreglos. El
para el manejo de datos numéricos.
arreglo es la estructura de datos básica del lenguaje, y tiene disponible un número
Los lenguajes orientados a negocios están acoplados al manejo de volúmenes de operaciones para tratar con todos sus elementos en forma simultánea. Por
grandes de datos, que se almacenan en los dispositivos de memoria secundarios. Por ejemplo, un operador simple cuenta el número de elementos del arreglo, otro cam-
tanto, estos lenguajes necesitan instrucciones de entrada/salida para la interacción bia sus columnas. - •·. ·
con tales dispositivos e instalaciones para la edición y nuevo arreglo de los datos or- Los sistemas APL son interpretativos y requieren un término especial, ya que se
ganizados en archivos almacenados en estos dispositivos y para la extracción de re- usan símbolos especiales y algunos caracteres griégos para indicar los muchos opera-
súmenes y la apropiada impresión de los repones.
dores del lenguaje.
El procesamiento simbólico, siempre en crecimiento, abarca el manejo de los La ejecución interpretativa de un programa APL demanda mucho tiempo de la
textos y listas de flujo libre.
CPU. Por tanto, el uso del APL ventajoso en donde se tiene que manipular arreglos
El cómputo interactivo necesita un lenguaje de Interpretación, con la conside- grandes con un número moderado de operaciones de entrada/ salida, y el programa
rable conveniencia de que la programación se lleva a cabo con el incremento de cos- resultante no 'le tiene que correr en una base frecuente y regular.
to en· Ja CPU y en el uso de la memoria principal.
La siguiente instrucción APL calcula el promedio A de un vector X (un arreglo
Un programador familiarizado con los conceptos generales de los lenguajes de de una dimensión simple):
programación, presentados en los Caps. l al 5, y expeno por lo regular en uno
de los lenguajes usados, encontrará que es una tarea relativamente simple aprender A-(+/X) + pX
otro lenguaje.
4. COBOL El COBOL es un lenguaje estandarizado ; dado que tales estándares son volunta-
rios, las instalaciones proporcionadas por varios compiladores en general coinciden.
Esto simplifica el traslado de programas de un modelo de computadora a otro .
El uso predominante en el medio administrativo, debido al manejo de archivo ex-
tensivo, edición y capacidades del COBOL de generar repones , ha hecho a este len·
guaje el más frecuentemente usado de todos. 5. FORTRAN
El lenguaje se diseñó para ser aproximado al inglés. Un programa COBOL es
para una autodocumentación de extensión grande apropiada a su sistema de subdi- El primero de los lenguajes de nivel alto usado ampliamente, el FORTRAN , conti-
visiones y al uso de identificadores grandes (los nombres de los niveles y variables núa siendo de gran importancia en computación. Un lenguaje de propósito gene-
pueden contener hasta 30 caracteres) . ral , su uso principal es en la ciencia e ingeniería ; sin embargo se utiliza práctica- .
mente en cada medio .
Un programa de COBOL consta de cuatro divisiones:
Para proporcionar Ja portabilidad del programa, se ha estandarizado el len-
(1) División de identificación: identifica el programa y al programador. guaje. Sobre la base del primer estándar voluntario se ha desarrollado Ja versión
(2) División de ambiente: debe contener_toda la información.dependiente de FORTRAN IV del lenguaje.
la máquina, como nombres del modelo de la computadora, de los disposi- Las necesidades de aplicaciones no numéricas trajeron el desarrollo de un .nuevo
tivos que almacenan los archivos , etc. estándar, llamado FORTRAN 77 , basado en gran medida en los compiladores
(3) División de datos: describe completamente todos los datos usados por el W ATFOR y W A TFIV para el lenguaje. Se proporcionaron las instalaciones para
programa y les permite ser estructurados jerárquicamente. un procesamiento simbólico y un manejo de archivo más sofisticado.
(4) División de procedimiento: la especificación del algoritmo.
Mientras que en la actualidad se usa casi para propósitos educativos, el uso del
son las asignaciones, desarrolladas para una secuencia en linea (llamada reunión de
Pascal está creciendo, especialmente en la programación de microcomputadoras, y
secuencias (véase el Cap. 5-J), y la sustitución de una secuencia establecida.
este lenguaje con ceneza influirá en la computación en los d!as venideros.
Por ejemplo, considere esta secuencia de dos instrucciones:
Otro lenguaje basado en el Pascal, llamado Ada (de Augusta Ada Lady Lovela-
ce, quien colaboró con Charles Babbage como la primera "programadora"), se ha TITLE = 'MOBY DICK'
diseñado recientemente a iniciativa del depanamento de defensa de los E. U .A. Con TITLE 'MOBY = 'GEORGE'
su potencia particular en las aplicaciones de tiempo real y en la programación de
La primera de éstas asigna a la linea 'MOBY DICK' como el valor de Ja variable
sistemas, se espera que este lenguaje tenga un uso amplio.
TITLE. La segunda instrucción es una sustitución: la secuencia 'MOBY' es compa·
rada con el valor de TITLE, establecido y reemplazado por 'GEORGE'. El valor de
TITLE es ahora 'GEORGE DICK'.
8. PL/1
Las primeras implantaciones del SNOBOL eran interpretativas; ahora también
el lenguaje es agrupado, con una eficiencia' incrementada.
Este lenguaje muy "rico" combina las ventajas de sus antecesores: ALGOL, Las aplicaciones del procesamiento de textos están creciendo, dado que resulta
FORTRAN y COBOL, as! como las instalaciones ampliadas para el procesamiento económico el tener este tipo de computadoras, que mantienen bibliografias y con-
simbólico. El PL/I se puede aplicar en todas las áreas de cómputo. cordancias y, en general, proporcionan textos impresos donde Ja ventaja de la
El lenguaje tiene la instalación DECLARE, para la descripción de datos seme- creatividad humana no es necesaria.
jantes a la división de datos del COBOL. Esta ofrece la estructura a bloques y la
ubicación de archivo dinámico, que puede ser controlada por el programador. Se
incluyen muchos tipos de datos, algunos para respaldar la manipulación de lineas y 11. LENGUAJES DE SIMULACION
listas.
Debido a la versatilidad del lenguaje, en el PL/I los compiladores son muy gran- E.lf:iste una cantidad de lenguajes de propósito especial para ayudar en el diseño de
des y la traducción consume tiempo, lo que limita la aplicación del lenguaje. sistemas sociales y flsicos con el uso de computadoras.
Los modelos de variables continuos representan sistemas que pueden ser descri-
tos matemáticamente y en los que las variables del sistema cambian con suavidad
9. RPG (por ejemplo, los flujos de corriente en un circuito eléctrico). El lenguaje que se usa
a menudo para este propósito es el CSMP.
El acrónimo RPG viene de Generador de Programas de Repone,• lo que expresa la Los modelos de eventos discretos representan sistemas en los que los cambios de
función de este lenguaje. Se usa para escribir la especificación precisa del problema estado son discontinuos, por etapas. Con frecuencia se les llama sistemas fracciona-
dos. En tales sistemas, hay una cantidad de "recursos" para los "clientes" que llegan
más que el programa, que es generado en consecuencia por el compilador. Los len- ~-
con cierta regularidad; a los "clientes" se les colocan entonces los "recursos" durante
guajes como éste se conocen como declarativos (mejor que procesales).
cieno tiempo de servicio, con el mantenimiento de una ciena disciplina fracciona-
El uso del RPG está limitado a Ja generación de repones (resúmenes) de archivos da. La simulación de lo que un sistema hace, con mucha frecuencia es desarrollado
de datos y para Ja actualización de tales archivos. por lenguajes como el SIMSCRIPT y el GPSS. Los lenguajes ayudan a representar
Esencialmente, el compilador modifica un programa preempacado simple para las llegadas, colas y salidas siguiendo el servicio, así como a derivar las estadfsticas
que reúna las especificaciones dadas que incluyen la descripción del archivo as! co- deseadas.
mo las especificaciones de entrada, cálculo y salida.
El lenguaje se usa ampliamente en las instalaciones de procesamiento de datos
chicas. B. COMPILADORES
• Del ingl& Report Program Generator. (N. del T.) Fig. 6-1. Acción de un compilador.
•'
144 Conceptos de los sistemas de cómput o
L os lenguajes d e nivel alto y sus traductores 145
De cualquier forma, algunos compiladores traducen al lenguaje de ensamble de Después de q ue los simbolos d efin idos por el programador h a n sido sustituidos por los indica-
una máquina dada, de modo que se necesite el ensambie subsecuente (como se dores para las tablas de simbolos de los id entificadores y constantes, la instrucción se transfor-
describe en el Cap. 7-G). ma en , por ejemplo,
El código objeto obtenido como el resultado de la compilación se puede almace-
nar y volver a usar repetidamente. id-55 = id·77 • (id-125 + cons-2)
Aunque los compiladores difieren en sus objetivos de funcionamiento y de dise-
(Naturalmente, la instrucción anterior está modificada para que sea legible .)
ño, constan de una cantidad dejases que transforman consecutivamente el progra-
ma fuente . Las fases iniciales del compilador para un lenguaje de nivel alto dado
son independientes de la computadora cuyo lenguaje de máquina es la tarjeta; éstas 2. ANALISIS SINTACTICO
son los análisis lexicográfico sintáctico y el de generación de código intermedio. La
fase siguiente, Ja optimización, depende de una ampliación en el lenguaje de má-
El separador, pane del compilador responsable del análisis simáctico, identifica la
quina de tarjeta en sus etapas posteriores. Por supuesto, la fase última, la genera-
ción del código es dependiente por completo de esto. estructura gramatical del programa. Este análisis está basado en la definición inter -
construida del lenguaje fuente.
Se cumplen las tareas• siguient es:
1. ANALISIS LEXICOGRAFICO
• La legitimidad de cada instrucción bajo la defin ición del lenguaje es confir-
El propósito de Ja fase de análisis lexicográfico es mada.
preparar la tabla de símbolos; • Se obtiene un árbol separado para cada instrucción y para el programa entero.
depurar el programa de redundancia (comentarios, espacios en blanco, etc.), y
codificar sus instrucciones de manera compacta. Esta fase vital produce el árbol separado para el program a representado a pro-
piadamente en la memoria. En este punto el compilador "ha sobreentendido" el
Se investiga el programa instrucción por instrucción, mientras que se reconocen los programa.
componentes de Ja instrucción. Se distinguen dos clases de componentes. La prime-
ra son los elementos fijos .del lenguaje, como las palabras clave, el vocabulario del El ár bol sep arado de la Fig. 6·2 será generado para nuestra instrucción en el Ej. 6-1 si las
lenguaje (por ejempio, IR A -del inglés GO To ....: , o ENTERO -del inglés reglas comunes d el operador que le p recede son aplicadas:
INTEGER- en FORTRAN), y sus operadores y sigños (por ejemplo , • , = , Y
-del inglés AND-). La otra clase son identificadores (nombres simbólicos) y las
' instrucción ,
constantes de varios tipos; desde luego éstas son hechas por el programador. }~ asignada
------
A todos estos componentes se les llama símbolos. La información concerniente a •'•
/
los símbolos fijos del lenguaje está localizada en las tablas permanentes del compila-
/ exprr~xpresión
dor. Los símbolos definidos por el programador son registrados . en Ja tabla de
símbolos que almacena su nombre y cualidades. Frecuentemente, se crean las
tablas de sfmbolos separadas para diferentes conjuntos de símbolos.
Durante Ja investigación, los símbolos son sustituidos en cada ins.t rucción por in- . ~ "--
exprión 1 expjión expTón
dicadores para sus registros en la(s) tabla(s) de símbolo(s). La salida de la fase es la
secuencia de instrucciones que contienen tales indicadores, sin espacios en blanco o /
id- 55 id- 77 • (id-125 + cons- 2)
comentarios.
EJEMPLO 6-1
Fig. 6-2. Un á rbol separado.
En la instrucción FORTRAN:
A = X •(Y + 10.5)
Com o resultado, la instrucción es identificada como una asignación. El árbol separado
se reconocen los sim bolos siguientes: para el programa se construye a partir de los árboles de instrucción.
operadores y signos: = , •, (, + ,)
identificadores: A , X , Y
constante: 10.5 • El procedim iento es similar a la ~Paraci6n gramatical de un texto de lengua natural.
146 Conceptos de los sistemas de cómputo
Los lenguajes de nivel alto y sus traductores 147
El código objeto se puede generar directamente del Arbol separado. Sin embargo, es
Esta fase opcional transforma el código intermedio y lleva a cabo la economfa en el
ventajoso convertido primero a una forma intermedia seleccionada, en la que se
tiempo de ejecución y en el espacio de la memoria para el programa objeto.
puedan aplicar las técnicas de optimización generales a este código independiente
Algunas de las estrategias aplicadas están realizando una instrucción invariable
de la mAquina.
fuera del bucle, identificando y computando las subexpresiones comunes separada·
En muchos compiladores este código toma la forma del llamado código de orien· mente, etc.
tación del árbol cuyas instrucciones de manipulación para cada dato especifican la
operación y la orientación simbólicas de los dos operandos y del resultado. Tiene
también las transferencias de control incondicional y condicional. 5. GENERACION DEL CODIGO
Cuando lo convertimos a código de orientación del árbol, nuestra instrucción del Ej. 6· l toma
la forma de: Los compiladores mAs modernos generan el código de mAquina ejecutable; algu·
TEMPI - id-125 + cons-2 nos, ensamblan al código para que sea procesado después por un ensamblador.
id-55 - id-77 • TEMPJ Un generador de código localiza cuidadosamente los recursos de la CPU d ispo
nibles y. en general, intenta minimizar el número de accesos a la memoria p rinci
Observe la necesidad clásica de una variable temporal. pal.
Una representación alterna del código intermedio es la notación sufijo (también Suponiendo que los códigos de orientación triple originalmente del Ej . 6· l han sido generados
llamado pulido inverso). como la forma intermedia y que el generador de código considerará cada instrucción de
Estamos acostumbrados a representar las expresiones en la notación infijo, don· orientación triple por separado, se generará la secuencia siguiente• de instrucciones de len·
de el operador se coloca entre los dos operandos a los que se aplica. En la notación guaje de ensamble:
sufijo, un operador sigue a sus operandos. La notación no necesita paréntesis. Una
LOAD 1, id-125
expresión sufijo se evalúa de izquierda a derecha aplicando el operador que se en·
ADD 1, cons-2
cuentre primero a los dos operandos que le siguen, y reemplazando este triple por el STR 1, TEMPJ (•)
resultado. LOAD 1, TEMPJ (u)
MUL 1, id-77
STR ! , id-55
EJEMPLO 6-2
Observe que las instrucciones (• ) y( ..) son innecesarias; deberán retirarse.
Observe la correspondencia entre las expresiones siguientes: (Los indicadores para la tabla de símbolos son reemplazados en esta etapa por la orientación
relativa de los operandos, esto no se m uestra aquf por razones de simplicidad .)
infijo sufijo
a+b ab+ El código objeto se produce generalmente en forma relocalizable; esto significa
a - b •e abc"- que es sujeto de carga y enlace (véase el Cap. 7-G).
(a - b) • (e + d) ab-cd+ •
Observe que el orden de los operandos es el mismo en ambos casos; el orden de los operadores
determina el orden de evaluación.
..\. 6. OTRAS FUNCIONES DE UN COMPILADOR
Continuamos con el Ej. 6·1, una compilación de instrucciones. En la forma con sufijo,
Durante una agrupación se llevan a cabo dos funciones adicionales:
nuestra instrucción de asignación es como sigue:
~
~
~f
148 Conceptos de los sistemas de cómputo
Los lenguajes de nivel alto y sus traductores
149
que el programa y los datos actualmente son colocados en Ja memoria por el carga-
programa fuente~
dor (véase el Cap. 7-G), el compilador tiene que determinar los requerimientos de
y datos · ~~ resultados
memoria de un programa. Esta tarea se lleva a cabo durante el proceso de compila-
ción en el caso de los lenguajes que tienen ubicación de memoria estática (como el (a) vista ideal
FORTRAN o el COBOL) cuyos datos son declarados por completo por el progra-
mador, lo que no permite Ja repetición. En el caso de lenguajes. con ubicación de programa "
memoria dinámica (véase el Cap. 4-B-2), como el ALGOL o el PL/ I, la ejecución fu en ce
de un programa puede necesitar espacio de la memoria adicional o liberarla. Las ..; -,
código
intermedio ' datos
B. INDICADOR DE ERROR
Fig. 6-3. Acción de un intérprete.
Los errores lexicográficos y sintácticos, descubiertos durante las dos fases de compi- -~
1 '-'':
~·
i
J50 Conceptos de los sistemas de cómputo ,:'
B.
TEXTOS SELECCIONADOS PARA LENGUAJES DE NIVEL ALTO
ESPECIFICOS
7
Rutishauser, H.: Description of ALGOL 60. Springer-Verlag, New York, 1967.
Learner, A., and Powell, A. J.: An lntroduction to ALGOL 68 Through Problems, " Introducción
Macmillan, New York, 1974.
Gilman, L., and Rose, A. J.: APL-An JnteractiYe Approach, 2nd ed., Wiley, New ~'
York, 1974.
a los Lenguajes de Ensa~ble
Kemeny, J . G., and Kurtz, T. E.: BASIC Programming, 2nd ed. Wiley, New York,
1971.
Por los diseñadores del lenguaje .
McCracken, D. D.: A Simplified Guide to Structured COBOL Programming, Wiley,
New York 1976.
Una introducción excelente al lenguaje .
Feingold, C.: Fundamentals of Structured COBOL Programming, 3rd ed., Brown, Cada modelo de computadora tiene su propio conjunto de instrucciones: una serie
Dubuque, Iowa, 1978. de operaciones ejecutada directamente por su unidad de procesamiento central. Es-
Una gula completa para el lenguaje . tas operacfones, expresadas en un código binario, constituyen el lenguaje de má -
Zwass, V.: Programming in FORTRAN (Structured Programming with FORTRAN
quina de la computadora. Un programador puede encontrar dificultad para ins-
IV and FORTRAN 77), Harper & Row, New York, 1981.
truir a una computadora en lenguaje de máquina. La programación en un lenguaje
Diseñado para completar este libro.
Hughes, C. E., Pfleeger C. P., and Rose, L. L.: AdYanced Programming Techniques, de nivel bajo como éste da por resultado , de cualquier forma , un programa eficien-
te. Cuando tal eficiencia se necesita, con cargo al incremento del esfuerzo de
Wiley, New York, 1978
Subtitulo del libro: "Un curso secundario en la programación usando el FOR- programación, se usa el lenguaje de ensamble. Una instrucción de lenguaje de en-
samble es traducida a su código de máquina equivalente por un programa del siste-
TRAN" .
Hughes, J .: PL/l - Structured Programming. 2nd ed., Wiley, New York, 1979. ma llamado ensamblador, el que proporciona otra ayuda al programador.
Friedman. D.: The /ittle LJSPer, SRA, Chicago, 1974. El que un lenguaje de ensamble sea específico a un modelo de computadora o a
Conway, R., Gries, D., and Zimmerman, E. C.: A Primer on Pascal, Winthrop, Cam- una serie de modelos limita la portabilidad de programas escritos en ese lenguaje.
~-;
bridge, Mass., 1976. :(.: Aún cuando todos los lenguajes de ensamble están basados en principios comunes.
Véase también el uso del Pascal en los dos libros por Nicklaus Wirth , el padre del Estos principios se presentan en este capítulo .
lenguaje , referido en el Cap.! de este libro . El conjunto de instruccione; de una computadora y sus capacidades de
Myers, S. E.: RPG: With Business and Accounting Applications, Reston, Reston, entrada / salida con frecuencia se les hace referencia como la arquitectura de la
Va., 1974. computadora.
Griswold, R. E., Poage, J.F., and Polonsky, l. P.: The SNOBOL 4 Programming Lan-
Los Apéndices A y B respaldan la presentación en este capítulo .
guage, 2nd ed., Prentice-Hall, Englewood Cliffs, N .J. 1971.
Gordon, G.: System Simulation , 2nd ed., Prentice-Hall, Englewood Cliffs, N .J.,
1978. A. REGISTROS, PALABRAS Y BYTES
Introduce el CSMP. SIMSCRIPT y GPSS .
Fig. 7-1. Vista lógica de la memoria principal, donde W es la capacidad de la memoria (el
_l'
'!!
____..____ .............
20 bits
1100001001 1101010010010010100101
-----
'---v---.........., - - - - . . , . .
número total de palabras). Op- Número Orientación
code del registro de la memoria
t'..¡-c>
Algunas computadoras, llamadas byte onºentables, proporcionan también la po- IN!·
Esta es una instrucción de registro a memoria; si en nuestra m áquina el código binario
sibilidad de tener acceso a un byte, una secuencia de bits en la que un carácter 11000010 significa ADD, entonces el contenido de la ubicación con la orientación de la me-
simple se puede almacenar. La representación de un carácter depende en el código t~' moria especificada
quierda es agregado al registro 7 (por ejemplo, 0 11 1), y el resultado está a la iz.
en ese registro.
adoptado (véase el Apéndice B); un byte por lo general consiste de 8 bits. En una
computadora de 32 bits, cuatro bytes de 8 bits se almacenan como una palabra. Pa· Por lo general, la mayor parte de tod as las instrucciones de m á q uina de una computa d ora
ra proporcionar la orientabilidad del byte, en este caso es necesario incrementar el dada ocupa una palabra simple.
espacio de orientación (el número de orientaciones disponibles) cuatro veces. La instrucción mostrada arriba es por tanto, de una computadora de 32 bits. Dado q ue
Los registros y palabras de la memoria (o bytes), donde residen los operandos,
constituyen el -espacio de trabajo de un programador de lenguaje de ensamble.
-
los 8 bits están colocados para representar al código de operación , el lenguaje de máquina d e
--.x~J C".
en Ja posición
EJEMPLO 7-2 0541516
Un ejemplo de partida de datos de punto fijo es:
+- Programa X
C2 7 05420
Bitde•ignZ 05555,. '-....._ ~ C2 7 05421
Magnitud ,
r Una instrucción 1
.... osss6,.
1
~ muestra
00000000000000011001 representando +25
(a) distribución inicial
En una representación complementaria de los números binarios, los números positivos tienen (b) distribución modificada
(fragmento)
el bit de signo O y los números negativos tienen el 1. ffragmento)
Fig. 7-2. Ilustración de los efectos de una modificación al programa.
Los datos alfanuméricos por lo general están codificados en un código de carácter
usado en la computadora dada (véase el Apéndice B).
Excluyendo los casos excepcionales, el lenguaje de máquina no se usa para tra-
bajar. Sin embargo, surge frecuentemente la necesidad de -un control más estricto
EJEMPLO 7-3 sobre los recursos del sistema de cómputo (tales como registros, posiciones de me-
Una partida de datos codificada en EBCDIC es moria y tiempo de la CPU), que el que proporciona un lenguaje de nivel alto. Un
programador en ese lenguaje no tiene control directo sobre estos recursos; el control
es ejercido por el traductor de software, el cual como un programa de propósito ge-
D A T A
neral, no puede proporcionar una posible eficiencia en casos particulares.
..---""--, ..----"----.. ..----"----.. ..----"----..
11000100110000011110001111000001 representando 'DATA' Para realizar estas eficiencias, cada modelo de computadora (o serie) tiene su
propio lenguaje de ensamble, un lenguaje de programación de nivel bajo que per-
mite la especificación de las operaciones de Ja máquina con el uso de los códigos de
Concluimos que puesto que un programa que contiene al menos varios cientos operación mnemónicos (más fáciles de recordar que sus equivalentes binarios) y la
de instrucciones como las del Ej. 7-1, la programación en lenguaje de máquina es especificación de las posiciones de memoria con nombres simbólicos (niveles).• Una
tediosa en exceso. Es particularmente dificil proporcionar la orientación absoluta instrucción de lenguaje de ensamble simple corresponde a una instrucción de má-
quina simple.
(binaria) de todas las posiciones de memoria referidas por la instrucción. Si después
de que se ha escrito un programa, una partida de datos o una instalación se tienen Los programas escritos en lenguaje de ens,amble son traducidos en lenguaje
que eliminar o insertar, se deben modificar los campos de orientación de muchas de máquina por los programas del sistema llamados ensambladores, que son signifi-
otras instrucciones. cativamente más simples y consumen menos tiempo que los traductores de lenguaje
de nivel alto. La ejecución de programas sigue su ensamble. El uso de los nombres
simbólicos pennitido por los lenguajes de ensamble es significativo de manera par-
EJEMPLO 7-4 ticular, ya que debido a éstos el programador, en general, no hace la especificación.
Si fuera necesario introducir una partida de datos adicional en la posición 05413 16 de un
programa colocado en la memoria como se muestra en la Fig. 7-2. En este ejemplo, la nota-
ción hexadecimal se usa para abreviar (véase el Apéndice A-1). . • En loo lenguajes de ensamble, tanto los nombres de los operandos que retienen la posición (datos) y los
que retienen lu instrucciones son ~Jamados niveles.
156 Conceptos de los sistemas de cómputo
Introducción a los lenguajes de ensamble
de las posiciones absolutas y el programa se puede colocar en cualquier parte en la 157
J
instrucción
memoria principal. de refere ncia
de la memoria [ 8 bits 14bits 1 20 bits
EJEMPLO 7-5
La instrucción del lenguaje de máquina mostrado en la Ej. 7-1 , codificado en el lenguaje de instrucción
ensamble de nuestra computadora hipotética , se presenta aquí: de registro 8 bits 4 bits 1 4 bits
a registro
Código de operación mnemónico
~ ~Nombre simbólico
ADD 7, TAX ..---- En este caso, una instrucción de registro a registro ocupa sólo media palabra. Es-
te hecho se aplica en el diseño del hardware de la CPU para ahorrar espacio de la
memoria.
Se supone que la posición ~on la orientación 01010010010010100101 ha sido llamada TAX en
el programa. Los siguientes tipos de instrucción constituyen un conjunto de instrucciones
completas.
Por tanto , en adición a los códigos de operación mnemónicos, los lenguajes de
ensamble necesitan proporcionar un conjunto de las llamadas seudoinstrucciones,
1. .MOVIMIENTO DE DATOS
las instrucciones al programa ensamblador para asignar un nombre a una posición
o colocar. una partida de datos dada en la posición nombrada antes de que comien- Para que una operación aritmética o lógica sea llevada en una partida de da tos, se
ce la ejecución. Muchas seudoinstrucciones reensamblan_funcionalmente las decla- tiene que copiar la partida de la memoria principal en un registro ALU.
raciones de los lenguajes de nivel alto pero las expresan con mayor detalle. T al instrucción, llamada generalm ente "Load" tiene la forma general L OAD R ,
Loe
donde
C. CONJUNTOS DE INSTRUCCIONES
LOAD es el código de operación mnemónico;
Un conjunto de instrucción de una computadora es el conjunto de operaciones dis- R es eJ" número de registro; . .
ponibles en su lenguaje de máquina. Desde el punto de vista del programador, es
LOC es la orientación simbólica de una posición de memoria (en este caso, la
también el conjunto de instrucciones en el lenguaje de ensamble de la computado- fuente de datos).
ra. Los conjuntos de operaciones varlan en los modelos de computadora dependien-
Para copiar una par tida de datos de un registro a la mem oria principal, se usa
do de su potencia y costo. Un conjunto de instrucciones grande y bien diseñado da una instrucción "Store":
por resultado una programación de lenguaje de ensamble fácil , generando progra-
STRR, LOC
mas eficientes. Como siempre, los conjuntos grandes requieren una unidad de
control extensa y palabras no muy grandes para acomodar Ja longitud incrementa- donde LOC es la orientación de la p osición que recibe el da to.
da del campo del código de operación.
Para mover una partida de datos de un registro R l a o tro registro R2, se usa una
Presentamos aqui un conjunto de instrucciones tipico para nuestra computado- instrucción de registro a registro:
ra hipotética. Dado que varias máquinas tienen conjuntos y formatos de instruc-
MOVE R2 , R I
ciones diferentes, los conceptos son los mismos.
Nuestra computadora tiene dos clases esenciales de instrucciones: las instruc-
ciones de referencia a la memon·a (registro a memoria) y las instrucciones de re- 2. ARITMETICA
gistro a registro. Una instrucción de referencia a la memoria necesita un acceso a la
memoria y por tanto, es significativamente más lenta de ejecutar que una instruc- Las cuatro operaciones básicas
ción de registro a registro. Para obtener en orden un operando en un registro en ADD, SUB, MUL, DI V
primer lugar, se tiene que tener acceso a la memoria principal, de cualquier forma.
Los formatos generales de los dos tipos de instrucciones se presentan en seguida.• casi siempre son proporcionadas para n úmeros de punto fijo (véase el Apéndice A) y
también con frecuencia para números de punto flotante :
FADD, FSUB, FMUL, FDI V
• Se de~ ob~rvar que las computadoras ~neralmcnte tienen una variedad de formatos de instruc-
ciones; en cicnps casos es posible tener acceso para mis de un operando en la memoria con ,una instrucción
Su forma general, cuando se necesita una referencia de la memoria, es
simple.
opR, LOC
158 Conceptos de los sistemas de cómputo
Introducción a los leng uajes de ensamble
159
lo que significa que después de que se ha realizado la operación op en los contenidos
El número de las posiciones de cambio está especificado por las partes orientadas
del registro R y de la posición LOC, se obtiene el resultado en el registro R ,
en el formato de referencia de la memoria usado p ara estas instrucciones, que
mientras que los contenidos de LOC permanecen sin cambio. tienen la forma general;
Ya que la multiplicación origina un resultado de longitud doble con respecto a
cambie R. n
los operandos, el resultado se obtiene en dos registros de los cuales Res uno. Por el
contrario, antes de una división, el dividendo se coloca también en dos registros. donde n es el número de posiciones de cambio.
Si ambos operandos están en los registros Rl y R2, una instrucción de registro a
registro: EJEMPLO 7-6
op R2. Rl Aquf se muestra una palabra de 20 bits. para aclaración
(a) La instrucción
es usada. El resultado se obtiene en R2. Los operandos de las instrucciones de registro RROT 5, 6
a registro son los mnemónicos de referencia de la memoria con el prefijo de R: origina en la manipulación
Las operaciones lógicas son llevadas sabiamente por los bits, por ejemplo, la partida LSH 2, 8
de datos se trata como una línea de bits sin dependencia entre ellos. Ya que los bits origina en la manipulación
de una palabra no son orientables, los medios de controlar el conjunto de bits parti- Registro l! (antes)
culares en una palabra son las operaciones lógicas que implantan los conectivos del Registro l! ( despu&)
EJEMPLO 7-7
Para implantar un bucle mientras que-haga 5. OPERACION DE DETENER
mientras que K </' L haga
&ta insuucción detiene la operación de la computadora. No se usa para detener la
inicio
ejecución de un programa. Le podemos llamar
HLT
fin
se pueden usar las instrucciones siguientes:
6. ENTRADA/SALIDA
LOOP LOAD l. K
SUB 1, L En esta área, existe una variedad grande entre los modelos de computadora. La for-
BRZ 1, ON ma de estas instrucciones está relacionada con la potencia de la computadora (véase
el Cap. 8-E para el análisis de la función I/O).
'·L cuerpo del bucle Debido a la lentitud relativa de los dispositivos periféricos (1 / 0 y memoria se-
cundaria) en la lectura de una palabra simple, la entrada/salida se realiza general-
BR LOOP mente como un bloque de transferencia, poi: ejemplo, la transferencia de conteni-
ON ... dos de cientos de palabras en la memoria consecutiva.
donde LOOP y ON son niveles. Observe que~ener más tipos de instrucciones de transferencia Para algunos dispositivos, el bloque está implícito en la naturaleza del dispositi-
condicional puede simplificar la programación en un caso tal como una prueba para K ;;;;., L . vo, tal como la siguiente tarjeta para una lectora de tarjetas o la linea siguiente en
una impresora de linea.
por ejemplo .
En este caso la instrucción tiene que especificar:
Ya que esta transferencia de las instrucciones de control generalmente sigue a las
aritméticas o lógicas. algunas computadoras tienen banderas de hardware (por Entrada}
ejemplo . usan multivibradores simples para un propósito específico), a menudo lla- número del dispositivo, primera posición en la memoria principal
madas el c.ódigo de condición . &tas se convierten automáticamente en un arreglo o Salida
rearreglo durante una operación aritmética o lógica y son comprobadas subsecuen -
Por el contrario, en el caso de un dispositivo de memoria secundaria. se necesita lo
temente por las instrucciones de transferencia condicional.
aigu_iente:
C. TRANSFERENCIA A UNA SUBRUTINA Entrada}
número del dispositivo, primera posición en la memoria principal,
Salida primera posición en el dispositivo, número de palabras
Se requiere que una instrucción especial llame a una subrutina, ya que la orienta-
(>}
ción de regreso (por ejemplo, la orientación de la instrucción que sigue inmediata- Se requieren también instrucciones adicionales, tales como "Star I/O", "Halt
mente a Ja llamada) se tiene que mantener en -una posición o registro de la memoria ÜO", etc.; muchas de éstas son paniculares al dispositivo.
establecida. ·· '
162 Conceptos de los sistemas de cómputo Int roducción a los lenguajes de ensamble 163
D. INTRODUCCION A LA PROGRAMACION EN LENGUAJE Los lenguajes de ensamble permiten también el uso de comentarios, tanto en
Jfnea separada, como en linea, siguiendo la instrucción . Estos son ignorados por el
DE ENSAMBLE ensamblador. En nuestro casot un comentario comienza con un •.
Los programas siguientes ilustran el uso del lenguaje de ensamble. Ya que los
El lenguaje de ensamble de nuestra computadora hipotética está diseñado alrede-
detalles de entrada / salida son paniculares para un modelo de computadora, se
dor del conjunto de instrucciones presentado en el capitulo anterior . Una instruc- consideran pane del alcance de esta presentación; usaremos
ción de lenguaje de ensamble de esta computadora típica tiene uno de Jos dos for-
INP orientación simbólica
matos siguientes:
OUT orientación simbólica
(a) Instrucciones de referencia a la memoria:
nivel código de operación registro, orientación .simbólica
para leer o escribir los contenidos de una palabra de la memoria simple.
(b) Instrucciones de registro-a-registro: EJEMPLO 7-8
nivel código de operación registro , registro
Problema
Por tanto, los campos de instrucción son los siguientes. Determjne el mayor de los dos enteros X y Y. incremente el resultado en iO y saque la res-
puesta. ·
Nivel : opcional, se usa cuando se desea Ja transferencia de control a esta
inst.ruccióri (consiste de más de 6 caracteres alfanuméricos, sin espacios), Programa
comienza en Ja columna 1. • UN PROGRAMA MUY SIMPLE
Código de operación: uno de Jos conjuntos de instrucción mnemónica, BEG
puede no comenzar en Ja columna 1. X RES 1
Registro : uno de los 16 registros (del O al 15). y RF.S 1
Orientación simbólica: se tiene que definir como un nivel de instrucción o
ANS RF.S 1 • RETENGA LA RESPUESTA
un nombre de dato en el programa dado .
TEN CON 10
Un lenguaje de ensamble también incluye un conjunto de seudoinstrucciones,
dirigidas en el programa de ensamble. Su nombre se deriva del hecho de que no • OBTENGA Y COMPARE LOS ENTEROS
peneneeen al conjunto defostrucciones de máquina y no son pane directa del códi- •
INP X
go del objeto ensamblado. INP Y
Nuestro lenguaje de ensamble incluye las siguientes seudoinstrucciones espe- LOAD 1, X
ciales: SUB 1, Y
(a) Indicadores del inicio y fin de un programa: BRL 1, YLAR
Notas
• AHORA EL REGISTRO 5 RETIENE AL l SI EL BIT MAS A LA DERECHA DE "PA -
l. Cualquiera de los 16 registros que no esté necesitando valores por el momento , TTRN"
puede usar otro valor en lugar de los registros dados. • ES l
2. Para mover un valor de una posición de la memoria a otra , se tiene que cargar en
RADD 4, 5 • ACUMULE EL CONTENIDO DE LOS I
un registro y almacenarlo de manera subsecuente (algunas máquinas tienen ins-
trucciones de memoria a memoria en su conjunto mientras que la nuestra no) . • COMPRUEBE PARA TERMINAR
3. La constante necesaria l O se tiene que almacenar en una posición de la memoria al
i't
tiempo del ensamble. Hemos escrito SUB 3, ONE
ADD 2, 10 BRZ 3, OUTPUT
los contenidos de la posición con la orientación (¡!) 10 podlan haberse agregado a
los contenidos del Reg. 2.
• SI AUN NO TERMINA-PREPARE LA ITERACION SIGUIENTE
4. Son necesarios los estudios para las decisiones de programación en este programa
ya que son arbitrarias . LOAD 5, PATTRN
RROT 5, 1
EJEMPLO 7-9
STR 5, PATTRN • PRESERVE PARA LA ITERACION SIGUIENTE
BRCOUNT
Este ejemplo, algo más complejo , presenta la aplicación de los lenguajes de ensamble en el
procesamiento lógico (operaciones con bits) , el esfuerzo principal de los lenguajes de nivel • COMPLETADO-SAQUE EL RESULTADO
bajo .
Problema OUTPUTSTR4 , RESULTADO
Se desea contar el número de bits cuyo valor es 1 en una posición PA TTRN . (Recuerde que OUT RESULTADO
nuestra máquina tiene palabras de 32 bits) . FIN
resulta en 1 J
EJEMPLO 7-ll
(d) Después de Ja quinta iteración y rotación : Por ejemplo, el programador puede escribir.
Registro 4
Y5,UNO
código de;
operación
1
orientación· operando
r códig<l de¡
operación. • · ·
T. --
operando ]
simplemente el programador pudo usar una constante literal :
imtrucci6n 1Illtrucci6n
y 5, = l
(b) orientación inmediata
(a) orientación absoluta
El slmbolo especial = Je dice al ensamblador que el número l es significativo,,mAs que Ja po·
sición cuya orientación es l. Fig. 7-5. Orientación absoluta e inmediata.
168 Conceptos de los sistemas de cómputo Introducción a los lenguajes d e ensam ble 169
Existe sólo un uso limitado para la orientacion inmediata ya que, primero, el este campo especifica
operando tiene que ser una constante conocida a la vez que se escribe el programa, irutrucción el registro clasificado
TABLA
TABLA + 1
l 1010110100110101100101001100010
01001010100011100010010001101010 f suponiendo que el Reg. 1 es el registro clasificado y contiene la copia actualizada
del inicio de la tabla.
Algunas m{tquinas tienen registros de clasificación separados, m ientras que en
las otras se pueden usar los registros de propósito general para esta tarea.
El ejemplo siguiente presenta el uso de la orientación clasificada para totalizar
los contenidos de la anterior tabla de 100 palabras.
TABLA + 99 ] 0100010101110.1010101100111110001
EJEMPLO 7-12
se tiene que agregar en el Reg. !!, la instrucción siguiente no se puede usar dentro
• EN ESTE FRAGMENTO DEL CODIGO SE SUPONE QUE
del bucle que termina la tarea
• EL REGISTRO 1 ES UN REGISTRO CLASIFICADO
-;-¿~
• OBSERVE EL USO DE LITERALES
ADD !I, TABLE(•)
~"
~.;t~ BEG
Esto es necesario para modificar la orientación del operando (TABLE) ya que la ~~~i TABLE RES 100
instrucción se tiene que aplicar a palabras de datos consecutivos.
Dos formas alternas de llevar a cabo esto son. las de clasificación y la indirecta.
A . ORIENTACION CLASIFICADA
• COMIENCE
LOAD l . =O • REGISTRO CLASIFICADO
Para proporcionar una orientación clasificada, son necesarios uno o mh registros
LOAD 2, =O• EL REGISTRO 2 ALMACENARA EL RESULTADO
clasificados en el hardware de la CPU. Cuando se usa la orientación clasificada, los LOAD 5. = 100 • NUMERO DE PALABRAS PARA SER CONSIDERADO
contenidoS del registro clasificado especlfico son agregados autom{tticamente por es· *BUCLE ADICIONAL
te hardware al campo orientado de la.instrucción. Por lo que la orientación efecti· BUCLE ADD 2 , TABLE (1) • LA INSTRUCCION VITAL
va, la orientación actual del operando, es obtenida. ADD l . =l
El ·csquema de la orientación efectiva del cómputo se muestra en la Fig. 7-4. SUB 5, = 1
BRH 5, BUCLE
Para indicar que se va a llevar a cabo la orientación efectiva mediante la clasifi·
• EL RESULTADO ESTA AHORA EN EL REGISTRO 2
cación antes de que tenga acceso el operando, el programador modifica la instruc·
ción (*)como sigue:
ADD !1, TABLE(!)
170 Conceptos de los sistemas de cómputo
Introdur:r:ión a los lenguajes de ensamble 171
B. ORIENTACION INDIRECTA
• COMIENCE
En el caso de la on'entación indirecta, el campo de orientación de la instrucción no LOAD 2, =O • REGISTRO DEL RESULTADO
LOAD 3, = 100 • NUMERO DE PALABRAS PARA SER
retiene la orientación (directa) del operando, sino la orientación de tal orientación.
La orientación efectiva del operando, es obtenida por la CPU al tratar al campo • CONSIDERADO
orientado en la instrucción como un indicador (véase Fig. 7-5) . • BUCLE ADICIONAL
BUCLE ADD 2, TABADR, 1 • LA INSTRUCCION VITAL
instrucción posición LOCI posición LOC2 • MUEVA AL INDICADOR
op-codc 1 R 1D/I 1orientación orientación efectiva operando LOAD4,TABADR
ADD 4, =l
STR 4, T ABADR
• REVISE PARA TERMINAR
Fig. 7-5. Modificación de la orientación de manera indirecta. SUB 5, = 1
BRH3, BUCLE
Para proporcionar la orientación indirecta, la CPU tiene que ser capaz de reco- • EL RESULTADO ESTA AHORA EN EL REGISTRO 2
nocer a la indirecta y despreciar a la orientación efectiva. Un bit modificador de la
dirección (D/I) en el formato de la instrucción, indica si la orientación directa o indi-
recta es significativa. En un lenguaje de ensamble, el programador puede indicar a
la indirecta como sigue:
ADD 3, ANADDR , I La orientación indirecta se usa también en muchas computadoras para regresar
donde ANADDR mantiene la orientación de otra posición. de una subrutina. Ya que una instrucción que "Salta a una Subrutina" almacena
Para usar la indirecta, el programador necesita una seudoinstrucción que sirva la orientación de regreso en un registro o en una posición especial, el retorno se
puede efectuar como sigue:
para colocar en una posición la orientación de otra. Llamando a esta seudoinstruc-
ción BR BACK, I
QEF (de "Orientación definida") suponiendo que la posición BACK contiene esta orientación de regreso.
tenemos en nuestro ejemplo de una suma en la tabia:
TABLE RES 100 4. MODIFICACION DE LA ORIENTACION POR EXTENStON
T ABADR DEF TABLE DEL ESPACIO DE ORIENTACION
A. ORIENTACION INDIRECTA
EJEMPLO 7-13 La palabra de instrucción proporciona solamente los últimos bits significativos de la
orientación del indicador; la conducción de los bits está implícita y es proporciona -
• EL FRAGMENTO DEL CODIGO EJEMPLIFICA EL USO DE LA da por un registro de la CPU. El indicador en sf es de la longitud de una palabra
• INDIRECTA completa y constituye la orientación del operando efectivo.
BEG
TABLE RES 100 B. ORIENTACION DEL REG1STRO DE BASE
T ABADR DEF TABLE
Un registro especial, llamado un registro de base, se especifica entre los bits del mo-
dificador de orientación. Su contenido se agrega al desplar.amiento (la parte de la
orientación del operando contenida en la propia instrucción) para formar Ja orien-
tación efectiva.
172 Conceptos de los sistemas de t:ómputo lntrodut:ción a los lenguajes de -ensamble J 73
Si una máquina usa ambas orientaciones, la clasificada y la de registro de base , (b) La traducción de los códigos de operación mnemónica en sus equiva-
entonces lentes binarios.
(c) El ensamble de los bits del modificador de orientación .
la orientación efectiva desplazamiento + contenidos del registro de base (2) Proporcionar el espacio para los datos y colocar las constantes requeri-
+ contenidos del registro clasificado das en sus posiciones.
(3) Proporcionar información para el cargador.
(Este es el esquema de orientación usado en las computadoras de IBM Sistema/360-
370.)
La tarea principal de un ensamblador es la traducción de los nombres simbóli-
cos refiriéndose a panidas de datos o instrucciones. Debido a esta función, por lo
F. USO DEL LENGUAJE DE ENSAMBLE general, los ensambladores consisten de dos pases, es decir, dos registros sobre el
programa que se va a traducir. Esta estrategia es trafda por el hecho de que los
Por lo general, un programa bien escrito en lenguaje de ensamble es más eficiente programas contienen referencias de avance, es decir, referencias para un nombre
(usa menos recursos del sistema de la computadora) que un programa equivalente simbólico antes de que sea definido (en otras palabras, antes de que aparezca como
en un lt>nguaje de nivel alto. Esta eficiencia se debe al acceso directo vinual que el un nivel). En un registro simple tales referencias no pueden ser resueltas sin retroce·
programador tiene a los registros de la máquina y a las palabras de la memoria y al der, lo que en ocasiones se usa en los ensambladores de un pase.
uso directo del conjunto de instrucciones de máquina. Sin embargo, la programa-
EJEMPLO 7-14
ción en lenguaje de ensamble es una tarea con mucha demanda; requier-e personal es-
pecializado y consume mucho tiempo. Usualmente el programa resultante es más Considere el siguiente fragmento de código:
dificil de entender y de modificar. Ya que un lenguaje de ensamble es natural a un
modelo de computadora en panicular o a una serie de modelos compatible, tales DATAS CON 10
programas no son ponables.
Por tanto, los lenguajes de ensamble son usados cuando la naturaleza de la tarea
por realizar o las limitaciones del sistema de cómputo dado , indican un uso panicu- BRFRWRD
Iarmente cuidadoso de los recursos del sistema. La programación de sistemas es un
área importante dé esta clase; la programación de microcomputadoras es otra .
Las tareas básicas de un ensamblador son, entonces: Todos los nombres simbólicos encontrados en el campo de nivel del programa fuen-
te son registrados en la tabla de símbolos. Una tabla de sfmbolos de un ensamblador
(1) . "Ensamblar" las instrucciones de máquina binaria de sus equivalentes en (véase la Tabla 7-1) contiene los nombres simbólicos definidos en el programa con
lenguaje de ensamble, incluyendo: la orientación de sus posiciones relativas al comienzo de los datos y del programa.
(a) La traducción de los nombres de posición simbólica a orientación de Para mantener la pista del espacio en el que se localizarán los datos e instruc·
la memoria binaria. ciones del programa objeto, se usa una variable llamada contador de posición. Ini-
...,
lntTOducción a los lenguajes de ensamble 175
174 Conceptos de los sistemas de cómputo
nombres simbólicos que no están definidas en una unidad de programa dado. El
Tabla 7-1. Tabla de slmbolos de un ensamblador. enlazador forma el "apéndice" según estén, las subrutinas para el programa princi-
pal, y por tanto, crea un módulo de caTga (véase la Fig. 7-6), una unidad reloca-
'
Posición relativa lizable del código objeto.
Nombre simbólico
DATA o Número de
Posición de la memoria posiciones ocupadas
o -~----------~
Programa principal . 1 M
FRWRD 5179 M -f-----------~
Subrutina A SA
M + SA
Subrutina B s&
M +SA +S8 - l
(posición última)
ciado para un valor fijo, generalmente O, esta posición se incrementa conforme se
rastrea al programa fuente instrucción por instrucción. Los incrementos son iguales
Fig. 7-6. Un módulo de carga (antes de la carga).
al número de palabras (o bytes, si la máquina es byte orientable) necesarias para al-
macenar a la instrucción de máquina dada o las partidas de datos descritas por una
Antes de que el código objeto sea ejecutado, tiene que ser cargado en las posi-
seudoinstrucción.
ciones de la memoria actual sleccionadas para su colocación. Esta tarea es llevad a a
cabo por un caTgadoT de relocaliz.ación, un programa del sistema que usa la infor-
EJEMPLO 7-15
mación de relocalización proporcionada por el ensamblador para sustituir a las
(a) Si cada instrucción de máquina ocupa una palabra simple,! a posición del con· orientaciones de la memoria actual por las relativas. Un cargador simple agrega
tador se incrementa siempre en l. las orientaciones de la posición inicial del programa en la memoria a todas aquellas
(b) En nuestra máquina, cuando se encuentra a la seudoinstrucción RES, se incre-
orientaciones (ya que fueron ensambladas con respecto a la posición O) y produce el
menta la posición del contador en el número de palabras que Je están reservadas.
código absoluto. El cargador también transfiere el programa en el espacio asigna-
De esta manera, el Pase 1 de un ensamblador crea un mapa completo del lugar do. Con frecuencia se combina. al cargador con el enlazador en un caTgador de
de memoria para el programa objeto, relacionado generalmente a la posición O. enlace.
Los tres programas del sistema necesarios para traducir y ejecutar un programa
en lenguaje de ensamble, es decir , que al ensamblador, enlazador yt:argador , a me-
3. PASE 2 nudo se les llama un sistema de ensamble. Su acción está ilustrada en la Fig . 7-7.
Subrutinas de la
Se crea el código objeto. La tabla de simbolos proporciona los sustitutos para los
memoria secundaria
nombres simbólicos, y la tabla fija de los códigos de operación proporciona sus como unidades del código
equivalentes binarios. objeto relocalizable
Si se produce el código objeto relocalizable, todas Ja posiciones cuyos contenidos
dependan de la posición en el progríUila (éstas corresponden a instrucciones y datos
Programa Programa 1
con referencias simbólicas), serán marcadas.
Cada unidad de programa (por ejemplo, el programa principal o una subrutina)
principal y
subrutinas !,, J
principal Y
subrutimu ~
l
Módulo de carga
c:J Programa
se ensambla por separado. Algunas de las subrutinas se pueden almacenarr perma- rnsamblado1 ~ ~-----..
nentemente en la memoria secundaria como código objeto relocalizable. en el lenguaje como unidades (una unidad como código
de ensamble separadas del simple del objeto absoluto
código objeto código
4. ENLACE Y CARGA relocalizable relocalizable)
Después de que se ha completado el ensamble, un programa del sistema llamado Fig. 7-7. Sistema de ensamble.
enlazadoT resuelve todas las TejeTencias extern.as, por ejemplo, las referencias a
I 76 Conceptos de los sistemas de cómputo
., Introducción a los lenguajes de er¡samble 177
A los enlazadores y cargadores (o cargadores de enlace) también es necesa.rio co-
locarles en la memoria un programa de lenguaje de nivel alto. La d iferencia básica entre las macros y subrutinas es que cada macro usa los re-
sultados en el código en que se copian actualizados en el programa. Una subrutina
simple copia lo que existe, y una llamada a una subrutina da por resultado un enla-
5. MACROENSAMBLADORES ce y no una copia. También, se invoca a una subrutina durante la ejecución del
programa, mientras que las copias del código macro son introducidas antes de que
Algunos de los ensambladores más sofisticados proporcionan la llamada instalación comience la ejecución.
macro y se les llama macroensambladores. Una macro es una secuencia de instruc-
ciones con un nombre; una vez definida en un programa, se puede usar escribiendo
simplemente su nombre y parámetros. El macroensamblador realiza una macroex- SUGERENCIAS PARA LECTURAS MAS PROFUNDAS
pansión introduciendo las instrucciones actuales de la macro y sustituyendo los pa-
rámetros. Peterson, J. L.: Computer Organization ami Assembly Language Programming,
Academic, New York, 1978.
Un estudio general completo de la programación en lenguaje de ensamble y
EJEMPLO 7-16
de los sistemas de ensamble, usando una máquina hipotética, ·tfpica en todos los
Suponiendo que nuestra máquina tiene un macroensamblador, definiremos una macro que aspectos.
agrega los contenidos de cualquiera de las dos posiciones de memoria X y Y, y almacena el Los siguientes tres textos introducen a la programación en lenguaje de ensamble
resultado en la posición X. de los equipos más populares, de mini y microcomputadoras, respectivamente:
Struble, G. W.: Assembler Language Programming: The IBM/360 and 370, 2nd ed.,
(a) Macrodefinición (por el programador) Addison-Wesley, Reading, Mass., 1975.
MACRO MEMADD (X, Y, REG) Eckhouse, R. H., Jr., and Morris, L. R.: Minicomputer Systems: Organization, Pro-
LOAD REG, X gramming, ami App/ications (PDP-JJ), 2nd ed., Prentice-Hall, Englewood Clilfs,
ADD REG, Y N.J., 1979.
STR REG. X Leventhal, L. A.: Introduction to Microprocessors: Software, Hardware, Program-
MENO ming, Prentice-Hall, Englewood Clilfs, N.J., 1978.
Basado en los micros 8080 Imel y Motorola 6800
(b) Uso macro (por el programador)
SUB l, Z
MEMADD TAX , INTER, 2
BRZl,BACK
SUB 1, Z
LOAD 2, TAX
ADD2, INTER
STR2, TAX
BRZI, BACK
Observe que MACRO y MEND son seudoinstrucciones que sirven como delimitadores de una
macro. Observe también que los programadores encuentran conveniente que, cuando los re-
gistros son necesitados por una macro, tienen que ser especificados como parámetros.
8
Organización de los
Sistemas de Cómputo
unidad de control 1 AW
La unidad de control acciona la computadora al ejecutar las instrucciones y los
señales de control de la 1 programas del sistema de la memoria principal de la computadora. Para ejecutar
operación sclecciona~a algunas instrucciones, es necesario obtener también los datos que se requieren de la
1 memoria principal. Durante el llamado ciclo de ejecuci'ón de la instrucci'ón se lleva
1F/E1 1 .~; a cabo una instrucción simple que se obtiene de la memoria principal y es eje-
1 cutada.
1
:·~
1 En el Ej. 7-I se muestra un ejemplo de una instrucción de lenguaje de máquina ;
los ejemplos de los· datos us~dos por estas instrucciones son mostrados en el Ej. 7-2.
1
+ I 1 ,,,/~ el Ej. 7-2.
1
~~;;
1
1 Dado que las instrucciones y los datos son almacenados en la memoria principal
PC 1 como proyecciones de los O y los l, para distinguir entre el MDR que almacena una
1
1 '.t't - partida de datos y el que guarda una instrucción, se localiza en la CPU la bandera
MAR 1 ",
F/E•••. Esta bandera indica la fase actual del ciclo de ejecución de la instrucción.
1
registros de propósito general
... Existen dos: !ajase de traer, cuando se trae la instrucción de la memoria princi-
pal y se descodifica su código de operación ("comprendido"), y la jase de ejecución ,
cuando se lleva a cabo la instrucción, con el acceso a la memoria principal, si es ne-
orientación datos leer/ escribir cesario, para leer o escribir datos.
a la memoria principal
El ciclo de ejecución de instrucción consta de los pasos siguientes :
La unidad de control trae las instrucciones del programa una por una desde la (a) Los contenidos del PC son pasados al MAR (esto es, la orientación de
las instrucciones que se van a traer).
memoria principal , descodifica sus códigos de operación , y envía las señales de
control a las otras unidades del sistema de cómputo. La ejecución de una instruc; (b) Se tiene acceso a la memoria principal, y Ja instrucción actual es traída
al MDR.
ción de máquina consiste, en su oportunidad, de una secuencia de pasos. Estos son
llevados a cabo por la computadora con base en las órdenes del controlador. (c) La instrucción se transfiere de MDR a IR (ya que MOR puede ser ne-
cesario para los datos).
La unidad de control consiste esencialmente de los siguientes elementos:
(d)EJ código de operación es descodificado.
• Contador de programa (PC):• registro que almacena la orientación de la (e) Para prepararlos para la ejecución de la instrucción siguiente, se incre·
siguiente instrucción por ejecutar . mentan los contenidos de PC en 1 por medio de la línea "l caliente" in-
• Registro de orientación de Ja memoria (MAR):•• almacena la orientación dicada. (Aquí suponemos que cada instrucción ocupa una palabra
de la posición de la memoria a la que se va a tener acceso.
---- •Del ingl&, mcrnory data rcgistcr. (N. del T.)
• Del ingl&, prognm counter. (N. del T.)
• • Del ingl&, instruction rcgistcr. (N. del T .)
•• Del ingl& , memory adrcss rcgistrer. (N . del T .)
••• Del ingl&. fctch / execution. (N. del T. )
Organización de los sist emas de cómputo 183
.. ¡ rns (milisegundo) = 10·~ s IK • 2" .,, 1000 ' Del ingl&: program countcr. (N. del T .)
l .¡.¡•(microsegundo) = 10·6 s lM • 2• - 1,000,000
l ns (nanosegundo) = JO ·9 s
184 Conceptos de los sistemas de cómputo Organización de los sistemas de cómputo 185
CPU. Por ejemplo, los aritméticos de punto flotante, a menudo se llevan a cabo en (5) El sistema de archivo masivo (o almacén del archivo) se usa para almace-
el software para abatir este costo. También se localiza en la ALU, un conjunto de nar volúmenes de datos aun más grandes que los del archivo secundario a
registros de propósito general en el que se manejan los operandos. - un costo mu.cho menor y con un acceso más lento. Estos son frecuente·
A la CPU de una computadora grande generalmente se le llama bastidor princi- mente sistemas de cartuchos de Cintas con capacidades que rebasan los
pal, p~ra distinguir! de las minicomputadoras y de las microcomputadoras ("com· 10 12 bytes.
putadoras en una oblea"). La mayorla de las microcomputadoras consisten en la
1
actualidad de varias obleas de circuitos integrados, de las que una, llamada Todas las máquinas tienen registros y memorias principales y casi todos los siste-;
microprocesador, contiene a la CPU. Otras obleas de un microcomputador con· mas tienen memorias secundarias más lemas.
tienen los módulos de memoria y las interfases de entrada/ salida. Los microproce-
sadores se encuentran frecuentemente en una variedad de equipos que requieren
un control extenso, tales como dispositivos de instrumentación, máquinas de pro· C. MEMORIA PRINCIPAL
ducción o terminales inteligentes.
La memoria principal almacena las instrucciones y los datos que pueden ser carga-
dos directamente para procesarlos en Ja CPU durante el ciclo de ejecución de una
instrucción. La unidad básica de archivo, una palabra, consiste de un número de
B. JERAROUIA DE LA MEMORIA bits, fijado para una computadora dada. Cada palabra tiene su propia orientación
(Ja memoria principal para un programador de lenguaje de nivel bajo se parece a Ja
En cualquier époea, existen diferentes tecnologias que pueden ser empleadas para mostrada en la Fig. 7-1). En una computadora de bytes orientables, una palabra
almacenar información. Algunas de éstas ofrecen velocidades altas y son caras; consta de un número fijo de bytes (generalmente de dos o cuatro bytes de 8 bits), te-
otras, menos costosas, se pueden usar como memorias de velocidad baja-capacidad niendo cada uno una. orientación.
alta. Por tanto, en un sistema de cómputo, es conveniente almacenar la informa· Como se muestra en Ja Fig. 8-1 , para tener acceso a una posición de la memoria
ción en una jerarquia de memorias. Los elementos más altos de esta jerarquia son principal, se presenta su orientación en el MAR, y se Je da Ja señal de "escribir" o
rápidos, caros relativamente, con unidades de memoria de capacidad reducida. Al· "leer", copiándi>se entonces los contenidos del MDR en esta posición o _viceversa.
macenan Jos datos e instrucciones que se están procesando en la actualidad por la Las memorias principales son memorias de acceso aleatorio (RAM);* esto es, el
CPU .o que se necesitarán pronto. Las unidades de capacidad alta, permanecen aba- tiempo para tener acceso a cualquier palabra (leer o escribir) es el mismo, indepen·
jo en la jerarquia, almacenando la información restante. dientemente de su orientación. Las dos caracteristicas fisicas comunes de Ja memo-
La jerarqula de la memoria de la computadora puede incluir lo siguiente: ria principal son las memorias de núcleo magnético y (ahora con mayor frecuencia)
las memorias de semiconductores, ambas por completo electrónicas. Al tiempo re-
( 1) Los registros de la CPU almacenan la instrucción actual que se está ejecu · querido para leer los contenidos de una palabra de la memoria se le llama tiempo
tando y los datos que se están manipulando. de acceso; el tiempo minimo entre dos accesos consecutivos es el tiempo del cicw. El
(2) Una memoria amortiguadora (de reserva), incluida en algunas máquinas, tiempo del ciclo de Ja memoria es casi siempre el doble del tiempo de acceso en el
se localiza también en la CPU. Retiene los datos e instrucciones que serán caso de las memorias magnéticas; éste es ligeramente mayor en las memorias de se·
necesitados por la CPU en un periodo corto; éstos son traidos automática· miconductores. La velocidad de las memorias principales difieren; con bastante
mente al registro desde la memoria principal por un hardware especial. frecuencia los tiempos de acceso a Ja memoria están en el rango de 0.5-0. 75 ms. La
(3) Una memoria principal almacena los datos e instrucciones accesibles de capacidad de la memoria principal varia desde cerca de 16K palabras (o bytes) en las
manera a la CPU (véase la Sec. C). computadoras pequeñas a decerras de millones en las muy potentes.
(4) Una memoria secundaria, de capacidad grande, almacena a las instruc· Tanto la memoria de núcleo magnético como Ja de semiconductor tienen una
clones y a los datos que tienen que ser colocados en la memoria principal organización matricial, en Ja Fig. 8-2 se presenta un esquema de éstas.**
antes del proceso. La matriz de la memoria consiste de una cantidad de celdas de 1 bit (un núcleo
Los archivos secundarios rápidos, tales como los tambores y los discos
en el caso de las magn~ticás, un vibrador en el caso de las memorias de semiconduc-
de cabeza fija (véase la Sec. D) a menudo se configuran con la memoria
tores).
principal en un sistema de memoria virtual (véase el Cap. 9), manejado
automáticamente por el software.
Los dispositivos de archivo secundario lentos de capacidad muy grande
almacénan la información manejada por el subsistema de entrada/salida
• Random-accea memoriea. (N. del T .)
del sistema de operación. •• Lu organizaciones altanas, que usan los m.i.smoe principiOI, tambil:n 10n empleadas.
186 Conceptos de los sistemas de cómputo Organización de los sistemas de r,ómputo 187
bit/ linea del sentido La dirección de la corriente en loa alambres determina la dirección del magne·
tismo en el núcleo; existen dos estados magnéticos estables en un núcleo, a uno de
los cuales se considera un O y al otro un 1.
celda que almacena 1 bit La memoria ·magnética tiene Ja ventaja de ser no volátil; cuando se elimina la
corriente, la información en los n(Jcleot permanece sin cambio; las memorias de se-
linea de palabra
miconductor son volátiles.
Cienas tecnologias de memoria de 1emiconductor (como la de semiconductores
bipolares) ofrecen velocidades muy altH; ton de cualquier forma , costosas y se usan
principalmente en los registros de la CPU y en las memorias de reserva. Los tiempos
de acceso ofrecidos por los asi llamadot semiconductores MOS usados predominan-
temente como memorias principales ton cercanos a los magnéticos o algo más rápi-
MAR dos.
D. MEMORIA SECUNDARIA
Fig. 8-2. Una matriz de la memoria principal.
La capacidad de la memoria principal ett4 limitada por su costo. Las tecnologias
alternas proporcionan la posibilidad de almacenar a menor costo vol(Jmenes altos
Se selecciona la palabra que se va a escribir o a leer (es decir, se conduce la de información que no necesita ser accetíble de inmediato a la CPU. Esta informa-
corriente a través de la linea de palabra) después de descodificar su orientación ción es almacenada en los dispositivo• de memoria secundaria (también llamada
contenida en el MAR. Cuando se lee la memoria, los bits lineas de sentido, a través auxiliar) y se trae a la memoria principal para su aprovechamiento.
del circuito de orientación, copian la proyección de los Oy los 1 contenidos en lapa· Dado que los dispositivos de Ja memoria .ecundaria están conectados a la memo-
labra en el MDR. Cuando se lleva a cabo la escritura del MDR, la linea de palabra ria principal de una manera similar a la de lot dispositivos de entrada/ salida (a am-
de la palabra seleccionada y los bits/lineas de sentido correspondientes a los biu 1 bas clases con frecuencia se les llama perlf'n'cos), la transferencia de información
en el MDR, proporcionan la corriente necesaria para escribir los 1 sólo en los bits entre éstos y la memoria principal IC maneja de manera similar (véase la Sec. E.)
correspondientes de la palabra seleccionada; los otros son limpiados automática- Los dispositivos con más frecuencia wados para el archivo secundario son
mente a O. A esto se le llama el principio de corrientes coincidentes del acceso a la electromecánicos con un medio de archivo magnético: tambor, disco y cinta. Debi-
memoria. do a la presencia de los componente• mecánicos, tales memorias, son inherente-
La diferencia esencial entre las memorias de núcleo magnético y las de semicon- mente más lentas que la memoria principal. El tambor y el disco, memorias secun·
ductor es la lectura destructiva en las magnéticas. Debido a sus propiedades &icas, darlas rápidas relativamente son dispositivos de archivo de acceso directo (DASD)* lo
mientras que se determina el estado de un núcleo, se destruye el estado y es necesa·
rio escribirlo de nuevo durante la segunda mitad del ciclo de lectura. Esta escritura :i- que hace posible colocar su mecanismo de llCCCIO en el área de los datos requeridos
(en su pista) y luego alcanzar Ja partida daeada pasando a éste sobre las áreas que
se lleva a cabo automáticamente por el sistema de memoria, y el programador no se intervienen .. La cinta, barata relativamenu, et un dispositivo de acceso secuencial:
percata de ello. para tener acceso a cualquier panída almacenada en ella se tienen que pasar tod as
Mientras que las memorias de semiconductor están compuestas de multivibrado· las otras panidas, de orientación menor. E«o limita la aplicación de las cintas a ca-
res (véase el Apéndice C), las de núcleo magnético constan de núcleos de ferrita en IOS en los que se tiene que tener acceta a la.t panidas en el orden en que fueron al-
forma de anillo de 0.02 a 0.05 plg de diámetro (véase la Fig. 8-5), con los alambres macenadas.
atravesándolo. En todos estos dispositivos Ja información IC almacena en un medio magnético
como una trayectoria de dominios magnttícot cuyos dos estados alternos se conside-
ran O y l.
;%
Las tecnologias de memoria secundaria mú nuevas, sin partes móviles, son las
memorias de burbuja magnética (MBM) .. no volátil y los dispositivos acoplados
por carga, más rápidos y. volátiles (CCD)....
Dacio que todos los dispositivos de la memoria secundaria son memorias de acceso no a la unidad de control del dispositivo
aleatorio, el tiempo necesario para tener acceso a una posición es mucho mayor cabeza lectora/escritora
que el subsecuente necesario para el acceso a su sucesor fisico. Por tanto, la infor-
mación se almacena en la memoria secundaria como un bloque, más que como una pista~~... ~
secuencia de palabras con orientación consecutiva.
La velocidad de los dispositivos de acceso directo se caracteriza por dos par{i-
metros: el tiempo de acceso (para la primer palabra o byte del bloque) y la razón de
transferencia de las palabras o bytes subsecuentes. Los dispositivos de acceso se-
-{1( ... ( (f'-
cuencial por lo general no tienen acceso de modo directo sino que llevan a cabo la
transferencia secuencialmente_ Fig. 8-4. Tambor magnético.
Las capacidades y velocidades típicas de los dispositivos de archivo secundario se
presentan en la Tabla 8-1; en seguida se describe a los dispositivos más detallada-
mente. Los valores actuales de estos par{imetros varlan con a!llplitud.
~i.
"&1~ (b) Tiempo latente (retardo rotacional), el tiempo necesario para que Ja pa-
TABLA 8-1 Capacidades tlpicas y vdocidades de los dispositivos de m~oria secundaria de
labra dada se coloque bajo la cabeza. El tiempo necesario para la mitad de
funcionamiento superior. un giro complet~ del tambor se toma como el tiempo latente promedio.
DISCO Un tambor, se usa más bien poco, es un dispositivo de capacidad limitada. El vo-
(cabeza-móvil) lumen (portador flsico de la información), en este caso el cilindro en si mismo no es
TAMBOR de capacidad mayor CINTA
intercambiable.
relación de
transferencia 0.2
(Mbytes/s)
1. TAMBOR MAGNETICO
(a) Un tiempo despreciable necesario para que los circuitos del tambor selec-
cionen la cabeza apropiada. Fig. 8-5. Disco de cabeza móvil.
190 Conr:eptos de los sistemas de r:ómputo
Orgánizar:ión de los sistemas de r:ómputo 191
pista 1" se asemej an a los discos fonográficos flexibles y simples colocados en cubiertas pro·
tectoras. Se intercambian fácilmente en un transmisor con una cabeza sim ple y al·
macenan cerca de l Mbyte de d atos.
pista O
.
~
3. CINTA MAGNETICA
'}
pueden mover lateralmente mientras que los discos giran sin intermisión. En la ca· bit de paridad \ con bit de paridad
1 11 1
beza móvil de un disco, existe solamente una cabeza lectora/ escritora por superfi· 11 •• • l
11 1
cie. Todas las cabezas se mueven juntas; al conjunto de pistas, uno por superficie, al 1 1.
cual se pu~de tener acceso en una posición dada del mecanismo de acceso, se le lla· 1 1
ma ciiindro. Por tanto, un cilindro consiste de una pista simple en cada superficie,
cortándolo a través de las superficies, como estén.
Algunos discos son orientables por sectores; es decir, para tener.acceso a una Fig. 8-7. Fragmento de una cin ta magnEtica.
palabra/ byte en una pista dada, se tiene que leer el sector fijo completo (por
ejemplo 512 bytes). Como la cinta se mueve, los bytes consecutivos se colocan bajo las ca bezas
let!toras/ escritoras (7 o 9 de éstas éqrresporidiendo al número de pistas de la cinta)
El tiempo de acceso a una palabra consta de: del transmisor. El bit de paridad (agregado de modo que el número de los I en una
columna sea non) sirve para la detección de errores.
(1) Un tiempo despreciable para la selección de la cabeza electrónica. En las minicomputadoras, a menudo se empaca a la cinta magnética en caset es
(2) Un tiempo de búsqueda (movimiento de la cabeza) necesario para colocar o en cartuchos más grandes.
la cabeza sobre la pista deseada, al mover el mecanismo de acceso.
(3) Tiempo latente (retardo de giro), para que la palabra sea puesta bajo la E. ENTRADA/SALIDA
cabeza.
El subsistema de entrada/ salida de un sistema de una computadora transfiere la in ·
El tiempo de búsqueda, considerablemente mayor que el tiempo latente (véase
formación entre la memoria principal y el mundo exterior . Consta de los dispositi·
la Tabla 8·1) hace a los discos de cabeza móvil más lentos que los tambores. Estos
vos de entrada/salida cuya naturaleza y cantidad depende de la configuración y del
discos tienen, de cualquier forma, una capacidad grande y son construidos a menu·
equipo de control de entrada/ salida responsable de controlar a ést05, asf como de los
do con paquetes de discos intercambiables (pistas de platos). dispositivos de memoria secundaria.
Cuando se necesita una velocidad de acceso particularmente alta, se usan 105 dis·
cos con cabeza fija con una cabeza sencilla por pista. No se presenta el tiempo de
búsqueda, ya que.Ja cabeza sobre la pista deseada se selecciona electrónicamente. 1. DISPOSITIVOS DE ENTRADA/SALIDA
Tales discos son caros y tienen una capacidad menor.
En aplicaciones menores, tales como en los sistemas de mini y de microcomputa· En varios sistemas se usa una multitud de disp05itiv05 de entrada/ salida. Algun os
doras, se usan con frecuencia los discos flotantes. Estos disp05itiv05 muy económicos de ellos están diseñados para influencia rCclproca con las personas; otros actúan con
equipo fuera de los sistemas de cómputo.
192 Conr:eptos de los sistemas de r:ómputo Organización de los sistemas de cómputo 193
Los dispositivos que se encuentran con mayor frecuencia se estudiará.o aquf. (b) Debido a la lentitud relativa de los periféricos (particularmente los dispo-
sitivos de entrada/ salida), muchas instrucciones pueden .s er ejecutadas
(a) Terminales teleimpresoras y pantallas. Estos dispositivos se usan para inte- por la CPU mientras se transfiere una palabra simple. De cu alquier for-
ractuar directamente con la gente. En la actualidad constan de dos dispo- ma , sólo la CPU o un periférico pueden tener acceso a la memoria prin ci-
sitivos cada una: un tablero de entrada y una impresora de caracteres en pal durante un ciclo de memoria dado .
el caso de las teleimpresoras, un tablero y una pantalla de tubo de rayos
catódicos en el caso de la terminal de pantalla.
En general, una transferencia de entrada/ salida se identifica como sigue:
Las teleimpresoras son más lentas (10-50 caracteres/ s) y proporcionan
una salida de copia fuerte (impresa). Las terminales de pantalla sé>n capa-
(a ) El número de d ispositivos.
ces de velocidades mayores y vienen en una gran variedad. Las pantallas
(b ) La orientación de la p rimera localidad en la memoria p rin cip al.
alfanuméricas pueden proyectar textos exclusivamente, por ejemplo, ca-
(c) En el caso de una transferencia que in cluya a u n disposit ivo d e archivo se-
ractc;res de su conjunto de caracteres. Las pantallas gráficas son capaces
cundario, la orientación de la primera pala bra (o byte) en este dispositivo ,
de representar varias curvas e imágenes y a menudo son capaces de acep-
y la dirección de la t ransferencia.
tar entradas directamente de la pantalla.
(d ) El número de palabras (bytes) que se transfieren.
Se discierne una clara tendencia hacia las llamadas terminales inteli-
gentes, que tienen capacidades de proceso limitadas. Con frecuencia
tienen microprocesadores interconstruidos. Mientras que la transferencia se lleva a cabo pala bra por palabra, los elementos
(b) Impresores de linea: Una impresora de linea es esencial para una salida de (b ) hasta (d) de esta identificación se haÍl actualiza do después d e que se ha transfe-
copia fuerte. Estos dispositivos imprimen una lfnea a la vez y algunos son rido cada palabra. Se tiene que determinar el fin d e la transferencia.
capaces de velocidades de SO 000 lineas/ min aunque son más comunes en Existen tres métodos de control de entr ada/ salida :
el rango de !100 a 1000 llneas/ min. Sólo que las impresoras de construcción
electromecánica son más lentas; las más rápidas usan las técnicas de (a ) Bucle de espera de entrada/ salida: La propia CPU controla el p roce50 de
electrostática, de temperatura, de rociamiento de tinta y otras para crear transferencia completo obedeciendo las instrucciones del programa. Para
una linea impresa y se les llama, por tanto, impresoras sin impacto. no errar una palabr a , un buen tiempo antes de que se complete la transfe-
(c) Lectoras de tarjetas perforadas y perforadoras: El medio más ampliamente rencia de cada palabra, la CPU registra u n bucle d e espera como m anda·
usado por estos dispositivos es una tarjeta de 80 columnas, en donde se do por el programa , realizando las instrucciones que comprueban la ter-
pueden representar hasta 80 caracteres alfanuméricos. Las lectoras rápidas minación. Ningún otro trabajo se hace entonces por la CPU.
procesan hasta 2000 y las perforadoras hasta 500 tarjetas/ mio.' Este método se usa sólo en comp utadoras rudimentarias debido al lar-
(d) Lectoras de cinta de papel y perforadoras: Estos son dispositivos lentos rela- go tiempo de espera u tilizado por la CPU en el bucle de espera.
tivamente, con las lectoras rápidas operan a 500, y las perforadoras a !100 (b ) La interrupción de entrada/ salida: En este caso también la p ropia CPU
caracteres/ s. controla la transferen cia. De cualquier forma , se tiene u n sistema de in-
(e) Consolas: Son usadas por los operadores del sistema para cont rolar la ope- terrupción del hardwa re. Esto significa que cuando el periférico está listo
ración de la computadora y para comunicarla con los interruptores y/o después de una transferencia de palabra, genera una señal de int errup -
tablero del panel en uso . ción d e entrada/ salida a la CPU, hacien d o q ue se conozca este est ado.
Las interrupciones son procesadas por la CPU como se describió en la sec-
ción A de este capítuio. Estas hacen evidente la necesidad de un bucle de
2. CONTROL DE ENTRADA/SALIDA
espera.
El control de entrada/ salida· es el medio de transferir la información· entre la me- (c) Canal de entrada/ salida: Para liberar a la CPU de la mayor parte de las
moria principal de la computadora y · un ·dispositivo ·periférico (una unidad ·de tareas de entrada/ salida, se puede proporcionar por separado en los sistemas
entrada/ salida o una de archivo secundario). de cómputo grandes, un procesador de entrada/ salida llamado canal.
La naturaleza de esta transferencia se determina por los factores siguientes en la Un canal recibe una orden (o conjunto de instrucciones) d e la C PU que
opera"ción periférica: identifica a la operación de entrada/ salida. Su bsecuentemente , el canal
inicia y control el proceso de transferencia completo y envía una señal de
Una transferencia -simple de entrada/salida incluye la transmisión de interrupción a la CPU siguiendo a la termin ación.
(a)
muchas palabras (bytes), mientras que generalmente se transfiere una pa- Los canales tienen acceso a la memoria principal mediante el ciclo de
labra a la vez. etiasión: cuando un canal necesita un ciclo d e memoria, éste se asigna al
194 Conceptos de los sistemas de cómputo Organizac:ión de los sistemas de cómputo 195
canal, aun cuando la CPU pueda requerirlo también. Esto evita la pérdi· colector simple
da de la información que se est:i transfiriendo. r
Los canales son, hasta cieno punto, procesadores independientes que
ejecutan un conjunto limitado de órdenes. En los sistemas de minicompu·
l 1 1 1
dispositivo dispositivo
tadoras, funciones similares son realizadas m:is simplemente por los CPU memoria
principal
de entrada. ... de entrada/
controladores del acceso a la memoria directa. salida salida
1 N
1. MULTIPROCESADORES
terminales
Los multiprocesadores ofrecen también la ventaja de aumentar la confiabilidad,
ya que si un procesador falla, otro puede tom¡¡.r su lugar.
El uso de las CPU en estos sistemas de multiprocesamiento está dirigido por el
software del sistema operativo.
computadoras
2. REDES DE COMPUTADORA Y COMUNICACION DE DATOS con terminales
Junto con los libros listados en el capitulo anterior, se recomiendan los textos generales
siguientes.
Hamachcr, V. C., Vrancsic, Z. G., and Zaky, S . G.: Computer Organization, Pren-
tice-Hall, Englewood Cliffs, N .J., 1978.
Entre otros temas, introduce las redes de microcomputadoras y de computadoras.
9
Haycs, J. P.: Computer Architecture and Organization, McGraw-Hill, New York,
1978.
Un texto más avanzado . Software de los Sistemas
Se recomiendan también los siguientes libros especializados.
de Cómputo.
Ogdin, C. A.: Microcomputer Design, Prentice-Hall, Englewood Cliffs, N.J., 1978.
Kraft, G. D .. and Toy, W. N .: Mini/Microcomputer Hardware Design, Prentice- ·Sistemas de .Operación
Hall, Englewood Cliffs, N .J ., 1979.
Martin, J.: Te/ecommunications and the Computer, 2nd ed., Prentice-Hall, Engle-
wood Cliffs. N.J., 1976.
Existe una gran variedad de software de los sistemas. Su disponibilidad para un mo-
delo de computadora dado depende del tamaño de la configuración tfpica y está re-
lacionada grandemente a su popularidad. Las series d e modelos de computadoras
populares tienen varias variantes de productos del software , con parám etros de fun-
cionamiento diferentes.
Lo siguiente es una vista su perficial del sistema de software básico.
1.TRADUCTORES
La mayor parte de los lenguajes de nivel alto son traducidos por un compilador 5. SISTEMAS DE ARCH!VO Y ADMINISTRACION
(véase el Cap. 6-B) a un programa objeto completo que pueda entonces ser ejecutado DEL BANCO DE DATOS
repetidamente. Algunos lenguajes son traducidos por un intérprete (véase el Cap. La mayor parte de los programas de aplicación, particularmente en el área comer-
6-C), el cual traduce y ejecuta programa instrucción por instrucción. Para varios cial , se construye alrededor de grandes volúmenes de datos y se organiza en
lenguajes se tienen disponibles compiladores e intérpretes. archivos (véase el Cap. 10). Para mantener estos archivos y oh.tener los datos re -
queridos de ellos, se usan Jos sistemas de administración de archivos.
En muchos casos es benéfico, como se estudia en el Cap. 10, unificar los archivos
2. ENLAZADORES Y CARGADORES
concernientes a un aspecto particular del desarrollo en un sistema, llamado banco
de datos. De esta manera, se evita Ja duplicidad de datos, y todos los programas de
Estos dos programas de sistemas sirven para éolocar el código traducido en las posi- aplicación tienen acceso a los datos a través de una entrefase de software uniforme ,
ciones de Ja memoria principal desde la cual será ejecutado. Si un programa consta llamada sistema de administración del banco de datos.• Mientras se complica, per-
de un número de unidades (el programa principal y los subprogramas), todas las re - mite Ja administración de datos flexibles y Ja facilidad de resolver fracciones sofisti·
ferencias entre ellos son resueltas por el enlazador (véase el Cap. 7-G). El programa cadas por el banco de datos.
completo, con sus datos, es colocado subsecuentemente en la memoria principal
por un cargador (véase nuevamente el Cap. 7 ·G). Un cargador de reubicación tiene
la capacidad de colocar un módulo de carga en cualquier parte de la memoria en 6. MONITORES DE TELECOMUNICACION
donde esté disponible el número necesario de posiciones consecutivas.
En un sistema.de cómputo con un número de terminale5 remotaS intercambia."1do mensa-
jes con Ja CPU, se emplea a menudo un paquete de software especial que proporciona
3. SISTEMAS DE OPERACION Ja comunicación entre estas terminales y el sistema de operación. Este paquete, lla-
mado moni"tor de telecomunicación, asegura Ja transparencia de Ja terminal : todos
Los sistemas de operación manejan los recursos del hardware del sistema de cómpu· los programas de aplicación se pueden escribir sin recordar las características fisicas
to de tal forma que establece el modo deseado de interacción usuario-sistema y pro- de las terminales, manejados completamente por este monitor.
porciona una utilización eficiente de los recursos del sistema. La complejidad de Jos La relación entre el monitor de la telecomunicación, el DBMS y el sistema de
sistemas de operación varía grandemente con el tamaño del sistema de cómputo. operación está sugerida en Ja Fig. 9-1.
Este .software sofisticado es el objeto principal del capitulo presente.
4. PROGRAMAS DE UTILERIA
sistema de
Los de utileria son programas que simplifican el uso del sistema de cómputo el re- monitor sistema administración
de telecomunicación de operación
emplazar el programador de una tarea en panicular. Esto~ incluyen el auxilio del de datos
software en el desarrollo de programas. Ejemplos importantes son:
mensajes
terminales banco de datos
• Editores el software para el procesamiento de textos se usa para modificar
remotas programas
un programa (o cualquier otro texto) separando, insertando o modifican-
de aplicación
do lineas, palabras o caracteres.
• Depuradores son programas que ejecutan un programa bajo desarrollo
paso por paso, sacando los valores de sus variables vitales y produce sus
memorias de descarga (impresiones de contenidos binarios de áreas de Ja
memoria seleccionadas), etc. Fig. 9-1. Software de control de un sistema de cómputo extenso.
• Losprogramas de clasificación/ unión se pueden usar para procesar gran-
des archivos de datos.
• Programas usados para transcribí~ información de un dispositivo a otro;
por ejemplo, de un paquete de tarjetas en Ja lectora de tarjetas a un disco. • DBMS. del ingl&: data base management syscem. (N . del T . )
202 Conceptos de los sistemas de cómputo Software de los sistemas de cómputo. Sistemas de operación 203
B. DEL CONTROL MANUAL DE LAS COMPUTADORAS A LA necesarios y supervisa su ejecución. En un sistema de cómputo simple p uede h aber
PROGRAMACION'UNITARIA solamente un programa sencillo en ejecución en cualq uier tiempo dado; no se co-
mienza ningún trabajo hasta que se haya terminado el anterior. Un sistem a de ope-
El funcionamiento de un sistema de operación es lo más apreciado cuando se consi- ración que maneja a la computadora de esta forma es llamado sistema de p rogra-
dera la operación de una computadora rudimentaria (como una microcomputado- mación unitaria. Dependiendo d e su complejidad, p uede proporcionar m uchas
ra económica) sin tal sistema. ventajas al programador (similares a las descritas a .continuación para un sistem a de
Para correr un programa simple, sin subprogramas, en una computadora con operación de programación m últiple), tales como rutinas para manejar la
un dispositivo de entrada y uno de salida y sin un sistema de operación de ninguna entrada/salida o un sistema de un archivo para almacen ar programas y d atos en un
clase, el operador tiene que hacer manualmente lo siguiente (en este caso, por lo ge- dispositivo de memoria secundario. La mayor parte de las rutinas del sistema de
neral el programador). operación se almacenan por sí m ismas en un disco o cinta y son llamadas a la me-
moria principal por Ja parte del sistema operativo residente allí, el que se carga si-
(1) Ya que inicialmente la memoria principal no contiene instrucciones por
ejecutar, se tiene que llevar a cabo la carga del programa inicial* (tam- ..
guiendo la depuración.
. .::;:
bién llamado depurador). Al ajustar Jos interruptores en Ja consola del
operador de Ja máquina y oprimir un botón, se puede almacenar una ins-
C. PROGRAMACION MULTIPLE
trucción simple en Ja memoria. Esta instrucción se leerá en la siguiente y 1;•_'
as[ sucesivamente, hasta que el cargador del programa (véase el Cap. 7-G)
• _ Un 's istema de cómputo más grande consta de recu rsos muy diferentes. Un progra-
esté almacenado en la memoria principal; como si fuera "empujado por
ma 'sencillo usa intermitentemente a la CPU y lleva a cabo la entrada o salida.
su propio depurador":
-· ' E.Xcluyendo a las situaciones excepcionales que requieren un ingenio considerable
(2) El traductor apropiado se carga desde un dispositivo de entrada.
por pane del programador, el programa no está disponible para usar la CPU
(3) El traductor lee en el programa fuente y produce el programa objeto en el
miéntras se esté realizando fa entrada o salida a medias. En un sistema de progra-
dispositivo de salida. Si son necesarios varios pasos del traductor, la opera-
mación unitaria,. donde sólo se p uede ejecutar un p rograma a Ja vez por.el sistema,
ción se repite varias veces con las formas intermedias del programa bajo
se . origina mucha marcha al vacío de los recursos, mientras q ue otros trabajos
traducción.
'pueden demorarse. El tiempo de vida en tal sistema d e dos trabajos d e una estruc-
(4) El programa objeto es cargado (procurando que el cargador permanezca
tura muy simple se muestra en la Fig. 9-2(a). Cada u no de los dos trabajos se supone
en la memoria principal).
-
(5) Se ejecuta el programa objeto, con los datos necesarios obtenidos a través trabajo 1 trabajo 2
del dispositivo de entrada. entrada~
Si el programa requiere depuración, estos pasos se tienen que repetir para cada
corrida. La secuencia se vuelve más complicada si están presentes los subprogra-
mas.
proceso
salida
-tra bajo 1
trabajo 1
,_____,
trabajo 2
.------<
trabajo 2
>------<
Como se puede observar de lo anterior, la tarea de ejecutar un programa escrito in tervalo de tiempo 1 2 3 4 5 6 tiempo
en un lenguaje simbólico consta de muchos pasos. La secuencia entre estos pasos, si completado: trabajo 1 trabajo 2
Ja lleva a cabo un operador humano, es excesivamente lenta si se compara con la ve-
locidad de la computadora. Durante el ordenamiento de un paso (proporcionado (a) sistema de programación unitario
puto asignándolos a los trabajos que entran, de modo que proporcionan un medio trabajo 1 tra bajo 2
salida r - - -- ....... ·- - - - l
deseable para los usuarios y utiliza eficientemente los recursos del sistema.
Un sistema de operación simple realiza automáticamente la transición entre los intervalo de tiempo 1 2 3 4 tiempo
trabajos. Un lote de programas es sometido por el operador de la computadora (el com plctado: trabajo 1 trabajo 2
usuario ha sido liberado del trabajo), y el sistema de operación localiza los recursos
(b) sistema de programación múltiple
• IPL, del inglés: initial program load. (N . del T .) Fig. 9-2.. Procesamiento de trabajos no traslapados y traslapados.
Software de los sist emas de cónifmto . Sistemas de operación 205
204 Conceptos de los sistemas de cómputo
.CS~
simple. Si no, continuará la solicitud para ser atendida después que las otras hayan
recibido su cuanto.
('
Debido a su naturaleza, los sistemas de tiempo compartido generalmente son programas
multiprogramados. \'-.___¿'__ de lotes repones
Existen también sistemas de operación de uso específico que combinan las capaci· archivo
dades del tiempo compartido y de los lotes. En tales sistemas, la solicitud interactiva de transacción
archivo maestro
recibe una prioridad (se corren al frente , por decir), y los trabajos de lotes se corren nuevo
atrá.s.
Se usa un sistema de operación para manejar los recursos de los sistemas de cómpu-
to en una forma que facilite su uso. Ya que la conveniencia depende de las necesi- La desventaja principal del procesamiento de lotes es la pérdida de la informa-
dades del usuario existen varios tipos de sistemas. Algunos de éstos se crearon ha- ción actualizada del banco de datos, ya que la información está fuera de fecha entre
ciendo la corrida de un programa de aplicación apropiado bajo un sistema de ope- corridas, y la pérdida del acceso fácil a los archivos maestros.
ración, una parte permanente del desarrollo. Una variación del procesamiento de lotes en un sistema de entrada de trabajos
Los modos esenciales del proceso de cómputo se estudian a continuación. Entre remotos (RJE), * en el que los usuarios envían sus bloques de trabajos mediante una
éstos, los sistemas de tiempo compartido, en línea y de tiempo real se agrupan con terminal remota conectada a la computadora mediante un cable u otra línea de te-
frecuencia como sistemas interactivos, ya que el tiempo de respuesta , unos cuantos lecomunicación. La salida se obtiene casi siempre en la misma terminal. En un sis-
segundos o menos, es de importancia máxima en todos ellos. Estos se oponen al pro- tema RJE, los usuarios a menudo tienen acceso a un editor de texto y a un sist ema
cesamiento de lotes, que ofrece un tiempo de recorrido del trabajo grande relativa- de archivo extendido para almacenar sus programas
mente, pero tiende a disminuir los costos del cómputo. Muchos sistemas de cómpu-
to grandes ofrecen a los usuarios varios modos de proceso.
2. SISTEMAS EN LINEA
aplicación
(a) Se apropia del sistema presentando una clave.
en Unca
(b) Registra un programa bajo el control del editor del texto.
n-spuesta
terminal repones (c) Generalmente guarda este programa en el sistema de archivo bajo un
nombre asignado.
(d) Tiene el programa traducido (imaginablemente varias veces si se han des·
archivo de datos
cubierto errores durante la traducción); el código objeto se puede guardar
también.
(e) Corree! programa.
Fig. 9-5. Procesamiento en línea.
Mientras el programa est~ corriendo, el usuario puede interactuar con éL Por
ejemplo, el programa puede estar diseñado para solicitar los datos del usuario o pa·
Los ejemplos de sistemas en linea incluyen aplicaciones más simples, tales como
ra que el resultado de la ejecución parcial pueda ser revisado por el usuario para de-
los sistemas de reservación de una linea aérea o los sistemas de revisión en un super·
cidir entonces el proceso más .a fondo. ·se pueden usar Jos depuradores para correr
mercado con terminales en el punto de venta (POS),• as! como Jos sistemas de el programa y analizar su exactitud.
transferencia electrónica de capitales más complejos (EFT)•• y Jos sistemas de in·
Una respuesta a una consulta trivial. como el modificar la linea de un programa
formación administrativa (MIS). •••
o la ejecución de varias de sus instrucciones, generalmente toma una fracción de se·
En las organizaciones más grandes de hoy, están instalados sistemas de computa· gundo o unos cuantos segundos. Por lo que una respuesta aparece instantáneamen-
doras múltiples de varias capacidades. Generalmente están colocados en sitios indi· te a un humano.
viduales, a menudo remotos , donde los datos fuente para una aplicación especifica En un sistema que combina los servicios de lotes y de tiempo compartido, se
están disponibles o donde son necesarios los resultados de los cálculos. Si los progra· puede enviar un trabajo de la terminal de tiempo compartido a correr en uri modo
mas de aplicación que corren en estos sistemas de cómputo comparten los archivos de lotes. ·
de datos comunes o pasan datos de uno a otro , al medio de cómputo se le conoce Junto con los sistemas de tiempo compartido de uso general, existen servicios de
como procesamiento distribuido. Generalmente , tanto el modo de lotes como el in· tiempo compartido especializados que ofrecen un lenguaje de programación simple
teractivo están disponibles. Los sistemas de procesamiento distribuido más avanza· para el usuario. El lenguaje, como el BASIC o el APL (véase el Cap. 6) generalmen·
dos están organizados en redes de computadoras y terminales con el uso de los me· te se interpreta de modo que los programas se puedan traducir y ejecutar instruc·
dios de telecomunicación (véase el Cap . 8-G-2) . ción por instrucción.
Los sistemas de tiempo compartido particularmente están bien adaptados para
el desarrollo de programas obstruidos en el sistema de lotes por los tiempos de re·
3. SISTEMAS DE TIEMPO COMPARTIDO corrido grandes. No se usan para correr los trabajos de producción ya desarrollados
debido a la relación alta de derivación de la CPU de un programa a otro y a la nece-
Diseñados para un servicio rápido , el objeto de estos sistemas es proporcionar a ca· sidad aunada de cambiar programas de entrada y salida de la memoria principal.
da usuario Ja ilusión de tener Ja computadora dedicada a él mismo . El servicio de
tiempo compartido de uso general se proporciona al usuario con un complemento
4. SISTEMAS DE TIEMPO REAL
total de lenguajes e instalaciones de programación. En el corazón del sistema está
un sistema de operación de tiempo compartido (véase la Sec. D def capitulo), que
asigna a cada usuario en tumo la atención de la CPU. En los sistemas de tiempo real, se impone una restricción fuerte sobre el tiempo de
Un número de usuarios (de 20 a 200, con el número máximo dependiendo del respuesta del sistema. Si el procesamiento de los datos de entrada no se completa
sistema)" interactúa simultáneamente con la computadora. Al tiempo entre la durante el intervalo asignado , se vuelve inútil y se puede originar un daño conside·
entrada y la salida del usuario se le llama sesión. rabie .
Los sistemas de tiempo real a menudo se diseñan como sistemas de operación de
propósito especial para proporcionar Ja administración rápida del hardwaré del sis·
• Del inglés: "point of sale" . ( N. del T.) tema.
•• Del inglés: ''elcctronic fund <ransfcr". (N. del T.) Estos sistemas se usan frecuentemente para el control de procesos; por ejemplo,
•••Del ingl~s: "managcmcnt information systcms". (N . del T.)
en una planta industrial o en un sistema de control de emisiones que respalda los
210 Conceptos de los sistemas de cómputo
Software de los sistemas de cómputo. Sistemas de operarz'ón 21 J
programa (véase la Fig. 9-7). Esto es similar al uso de los registros de base (véase el
El programador de la CPU mantiene Ja división del proceso en el estado propen -
Cap. 7-E), que se usan para este propósito en algunas computadoras. El programa
so , con el orden de acuerdo a la estrategia seleccionada.
puede ser sacado de la memoria principal cuando no esté corriendo, mientras el
En un sistema operativo que corre trabajos a bloques e interactivos, se le da pre-
programa esté corriendo puede estar dentro; a este esquema se le llama cambio.
ferencia a los últimos.
Un mecanismo de control de memoria SOIJSticado es un sistema de memoria vir-
tual. Este mecanismo de software unifica la memoria principal y un dispositivo de
2. ADMINISTRACION DE LA MEMORIA memoria secundaria rápido relativamente (como un tambor o un disco de cabeza
fija) para obtener el total con las ventajas características de las dos (véase la Fig. 9-8):
La memoria principal del sistema multiprogramado está generalmente compartida una velocidad cercana a la de la memoria principal, la capacidad de la memoria se-
por varios programas incluidos en la mezcla de programación múltiple (es decir , cundaria y un precio por palabra cercano al de la memoria secundaria .
que se estén corriendo simultáneamente). Existen muchas variantes de esa compar- En un sistema de memoria virtual, la memoria principal almacena sólo esas par-
tición; por lo general se requiere soporte del hardware , así como registros especiales tes de los programas en la mezcla de multiprogramación que la CPU necesita casi
y trayectorias de datos en la CPU. siempre inmediatamente. E.n la memoria secundaria se mantienen copias comple-
El cargador de relocalización proporciona un grado de flexibilidad en la coloca- tas de los programas.
ción de programas en la memoria principal. Este permite Ja colocación de un Ya que sólo estas panes son metidas y sacadas de la memoria principal durante
programa trasladado de cualquier parte en la memoria donde se tenga disponible el el intercambio, los gastos generales debidos a esto son reducidos significativamente.
número de localidades consecutivas necesarias.
Un sistema de operación de programación múltiple necesita frecuentemente eli-
minar un programa o una parte de un programa de Ja memoria principal donde el
programa no está disponible para que lo use Ja CPU . memoria vinual
El cargador proporciona solamente Ja reubicación estática: una vez que un ~----------------
¡
programa cargado y ejecutado parcialmente es movido a una memoria secundaria,
tiene que ser regresado a sus localidades previas ya que todas las referencias de di- CPU memoria
rección en éste están limitadas a ellas. principal
Para obtener la reubicación dinámica, ya que los programas pueden estar divi- daria
didos entre cualquier área suficientemente grande de la memoria principal y la me- ripida
capacidad alta;
moria secundaria, se necesitan registros de reubicación especial en la CPU . En su barata 1
presencia, todas las referencias de memoria son formadas por el hardware agregan - ~---------------~
do · los contenidos de ·estos registros a las referencias orientadas contenidas en el Fig. 9-8.
214 Con(;eptos de los sistemas de cómputo
Software de los sútemas de cóm puto. Sistemas d e operación 2 15
Estas partes son de tamaño fijo (con frecuencia de 2K o 4K), llamados páginas o
segmentos de tamaño variable, principalmente en las unidades de programa o en orientación en la memoria
nombre del archivo secundaria
las estructuras de datos. Existen por tanto, sistemas de memoria virtual paginados y
segmentados; en algunos sistemas los segmentos son subdivididos mfls profunda-
mente en páginas. La información concerniente a la residencia de páginas/ segmen-
tos se mantiene en tablas, a través de las cuales se lleva a cabo el traslado de cada re-
ferencia de memoria.
¡ ~:PA
/ NU
1
1
directorio del usuario l
t~ :
La memoria virtual deriva su nombre del hecho de que cada programa puede
usar más posiciones que las disponibles fisicamente para él en la memoria principal.
Para un sistema de operación, los archivos son nombrados conjuntos de informa- Donovan, J. J.: Systems Programming, McGra w-Hill, New York, 1972.
Un texto orientado a d iseño.
ción, almacenados en la memoria secundaria. Un archivo puede ser un archivo de
Freeman, P.: Software Systems Principies. SRA, Chicago, 1976.
programas que contenga, por ejemplo, un programa fuente FORTRAN o un archi - Un estudio; incluye va rios asp ectos importantes en la materia.
datos (DBMS). • La estructura lógica total del banco de datos es definida por el ad·
La organización lógica de un archivo es con la intención de que los programas de
ministrador de datos con un modelo llamado esquema conceptual (o simplemente,
aplicación que la usen Ja tengan. Por el contrario, la organización física es su
un esquema). Un programa de aplicación que usa una parte de estos datos y rela-
estructura actual cuando están almacenados en el dispositivo de memoria secunda -
ciones puede definir su propio panorama del banco de datos, llamado un esquema
ria. Con frecuencia, a esta organización se le llama simplemente organización del
externo o subesquema . El subesquema es derivado del esquema por el DBMS. Un archivo.
banco de datos proporciona la ventaja esencial de la independencia del programa
¿Por qué la distinción? La estructura lógica de un archivo, aparentemente para
de aplicación de los cambios en la estructura de los datos.
el usuario, debe estar libre de los detalles presentes en el método de archivo actual .
AJ escribir un programa que emplea un archivo de personal, por ejemplo, el usuario
A. CAMPOS, REGISTROS, ARCHIVOS Y BANCOS DE DATOS puede estar relacionado con la composición de los registros y con la posibilidad de
tener acceso a ellos, mediante el número del empleado en llnea. El usuario no está
Los registros fueron introducidos en el Cap. 5-E como una de las estructuras de da- relacionado de cualquier forma , con los detalles de la organización del archivo ac-
tos usadas en la computación. Son Ja estructura esencial para almacenar los datos tual (por ejemplo, con la dirección actual del registro). Por tanto, si cambia la orga-
residentes en una memoria secundaria. nización fisica , los programas de aplicación permanecen sin cambio . La estructura
Los datos describen estados del mundo real. Algunos estados son tangibles (por ñsica de un archivo está regida por la necesidad de almacenarlo eficientemente en
ejemplo, un empleado o un plano), otros son intangibles (por eje~plo , un departa- un dispositivo de memoria secundaria particular y proP<>rcionarlo a la velocidad de -
seada y al modo de recuperación.
mento o una firma o un vuelo de una línea aérea). Para describir wÍ estado, los va-
lores de sus atnºbutos que son de interés para la aplicación se tienen que almacenar Por tanto, Ja or~anización fisica .de los datos es el método adoptado para su
como datos (por ejemplo , el nombre, dirección y sueldo de un c;mpleado, o el nú - archivo, mientras que la organización lógica está orientada a la extracción de datos .
mero y hora de salida del vuelo) . El software del sistema transforma la demanda de datos expresada por el progra -
Un estado está descrito por un registro, que consta de una cantidad de campos ma de aplicación en términos lógicos (por ejemplo, "¿cuál es el sueldo del emplea-
(llamados también partidas de datos) , cada uno de los cuales contiene el valor de un do número 55?"), a términos físicos (orientación del registro) : Esto está sugerido
por la Fig. 10-1.
atributo del estado . Un conjunto de datos relacionados con respecto a su uso es lla-
mado un archivo de datos o simplemente~ archivo (compare la Fig. 10-!1). Por lo En muchos sistemas de archivo, las rutinas de los métodos de acceso del sistema
general los archivos constan del mismo tipo de registros que describen un conjunto de op~ración (véase el Cap . 9-G-4) se usan para llevar a cabo esta transformación.
de estados. La única relación lógica entre los registros del archivo es generalmente la secuencia
Como un ejemplo, en una aplicación a nómina se puede mantener un archivo de de sus claves. Las relaciones lógicas más complejas entre los estados descritos por los
personal para que conste de un registro por empleado. Cada registro , de una mane- datos se pueden reflejar en los bancos de datos manejados por los sistemas de
ra muy simple, puede consistir de los campos siguientes: número de empleado , control del banco de datos (DBMS) .
nombre, orientación, sueldo semanal. Una técnica importante en la organización del archivo fisico , que conduce a un
Para que un registro tenga acceso a un archivo, se tiene que identificar a este re- ~. uso eficiente de los dispositivos de archivo secundario y a menudo incrementa la ve -
gistro por el contenido de uno·o más de sus campos. A un campo que identifica so- locidad de acceso, es el bloque: conjunto de varios.registros lógicos en un registro
lamente al registro se le llama la clave (o Ja clave pnºmaria). físico simple, llamado también bloque. Es el registro fisico que lee o escribe
En ocasiones se crean uno o más bancos de datos para una aplicación dada , lar
ga generalmente (como por ejemplo, un sistema de información administrativa o
un sistema de reservación de una linea aérea). Un banco de datos es un conjunto in-
tegrado de registros de varios tipos con las relaciones entre estos registros almacena-
' desde/ hacia el dispositivo de archivo secundario. La técnica a bloques es particu -
larmente efectiva cuando los registros están almacenados en la forma en que están
procesados.
dos.
trazar el programa
·<
del aoftwarc
B. ORGANIZACION DE DATOS FISICA VS. LOGICA. organización
BLOQUES
Existe una división importante entre la organización lógica y·fisica de los archivos y
-~
lo que el programa lo que cst~ almacenado
bancos de datos. de aplicación ve actualmente
• Del ingl& : databuc managemcnt. (N . del T.) Fig. 10-1. Organización flsica vs . lógica .
-220 Conceptos de los sistemas de cómputo Archivos y bancos de datos 221
El disco y la cinta son dispositivos de acceso no aleatorio (véase el Cap. 8-D) , ya Cada vez que se lee un archivo , se obtiene un registro físico en el amortiguador
que toma mucho más el tener acceso a la primera palabra (o byte) de un registro al- de entrada . El software del sistema entonces destruye los bloques seleccionando los
macenado en ellos que a Jos subsecuentes. Por tanto, el tener-acceso al bloque más registros lógicos necesarios para el programa . Por tanto , las operaciones "leer" sub-
grande, hace más cono el tiempo de acceso por palabra. En el caso de un disco, el tamaño secuentes mediante el programa de aplicación pueden encontrar ya el registro lógi -
del bloque a menudo es determinado por el propio hardware. El espacio que se ahorra co necesario en el amortiguador de la memoria principal. Durante una operación
debido a Jos bloques es más evidente en las cintas. El uso de las cintas requiere que de "escribir" , el programa de aplicación transfiere los registros lógicos en el amorti-
los intervalos entre registros sean dejados entre los registros fisicos para permitir la guador de salida hasta que se complete un registro fisico y lo escribe en el ar chivo.
detención de Ja transmisión y entonces comenzar de nuevo el acceso al registro fisico Cuando el programa no necesita más el archivo , lo tiene que "cerrar" para que
siguiente. Si los registros lógicos no son divididos en bloques, se trata a cada uno co- sea preparado por el software del sistema para usarlo nuevamente.
mo un registro fisico separado, y por tanto , se tiene que dejar un intervalo entre
ellos (véase la Fig. 10-2(a)) . Esto puede ocasionar que la mitad de la cinta no se use
para archivar datos. La división a bloques disminuye Ja proporción de tal espacio C. ORGANIZACION DE ARCHIVOS
(véase la Fig. 10-2(b)) .
La organización de archivos es un método de colocar los registros en el dispositivo
Al número de registros lógicos agregados a un registro fisico simple (bloque) se le de archivo secundario; a menudo incluye el suministro de información adicional,
llama el factor de división en bloques. como las tablas necesarias para tener acceso a estos registros.
La división en bloques necesita amortiguaci6n: áreas laterales de ajuste (llama- - ·El objeto de una organización de archivo dada es el asegurar el almacenamiento
das amortiguadores) eri la memoria principal para almacenar el registro fisico eficiente de registros y proporcionarlos para el tipo de acceso deseado.
mientras que el programa de apliéación obtiene los registros lógicos de éste. A blo·
ques más grandes se necesitan amortiguadores mayores. Acceso, es deéir, la lectura o escritura de un· archivo es la operación esencial de
El software del sistema, como método de acceso , es responsable de recÚperar un un archivo. Hay dos tipos de acceso diferentes: el acceso secuencial, que necesita
registro lógico del libro. Para proporcionar la información necesaria a este software una búsqueda a través del archivo , y el acceso directo, que localiza el registro sin
recordemos la composición del archivo, el programador lo tiene que " abrir" antes una búsqueda. En ambos casos, el registro está identificado por.su clave . Como una
de que sea usado. Posteriormente, se puede leer del archivo, escribir en él o ambas , consecuencia, el acceso secuencial se usa para procesar los registros en el orden en
dependiendo de los derechos de acceso del programa. que están almacenados; el acceso directo no impone tal limitación.
En el caso del acceso secuencial, el tiempo necesario para localizar un registro
depende de su posición en el archivo; en el acceso directo , la dependencia es muy li·
intcrvalosentrc registros gera.
El acceso secuencial como modo de acceso principal se usa exclusivamente en sis-
temas a bloques (véase el Cap . 9-E), en donde son actualizados y resumidos los
archivos en intervalos regulares , distantes relativamente. Entre las actualizaciones
J los contenidos de los archivos no reflejan los cambios en el medio (éstos son refleja -
dos en un archivo de transacción que los acumula). En un sistema, durante la corri-
registro flsico da de un proceso simple una cantidad de registros de archivo son afectados en la se·
(a) sin bloques cuenda en que están almacenados. El proceso en línea (véase nuevamente el Cap .
9-E), que requiere una respuesta inmediata a una transacción (una actualización
del archivo o una consulta) , necesita el acceso directo.
registro registro rcgisuo registro Se usan predominantemente tres métodos de archivos de datos que son respalda·
lógico lógico lógico lógico dos por el sistema de operación en la forma de métodos de acceso apropiados: el se·
1 2 5 4
cuenda!, el secuencial clasificado y el directo (llamado también aleatorio) . Estos se
cJ factor de la división estudian a continuación y son comparados en la Tabla 10-1.
registro flsico en bloques es 5
Existen otras organizaciones de archivo . Un ejemplo es un archivo fraccionado,
(b) registro a bloques
que consta de fracciones de archivo nombradas (áreas de posiciones consecutivas) ,
cada una almacena muchos registros almacenados secuencialmente. La organiza-
Fig. 10-2. División eri bloques. ción fraccionada se usa para guardar más bien bibliotecas de programas que datos.
222 Conceptos de los sistemas de cómputo A rrhivos y bancos de datos 223
TABLA 10-1. Comparación de los métodos de organización de archivos. nuevo· archivo maestro (véase la Fig. 9-4). La organización del archivo secuencial
naturalmente se puede usar también con un dispositivo de acceso directo como un
ORGANIZACION MEDIO
disco.
DE ARCHIVOS DE APLICACION VENTAJAS DESVENTAJAS Para tener acceso a un registro en este archivo, es necesario buscar el archivo pa-
ra el registro con la clave dada. En un sistema orientado a cinta no hay alternativa
Secuencial A lotes Simplicidad de control; uso Inserciones y actualizaciones para la búsqueda secuencial (mirando en cualquier registro que intervenga y com-
efidence del archivo; uso po- imposibles pricticamentc; " parando las dos claves). En un sistema orientado a disco , se pueden usar los méto-
tencial de dispositivos de desventajas en general del
dos de búsqueda más rápidos.
archivo baratos (cinta); pro- proceso a lotes
ceso ~uencial ripido del El uso eficiente de los archivos secuenciales requiere que se tenga acceso a una
DASD buena parte de los registros durante cada corrida. Las inserciones en este archivo
son imposibles (con excepción de casos especiales); se necesita en su lugar la reorga-
Espacio para clasificación y
f
Secuencial A lotes/ en linea No necesita la clasificación nización de archt"vos, que es la generación de un archivo nuevo a partir del existente
clasificado de transacciones; son po- tiempo para su manteni- considerando los cambios.
sibles los accesos secuencial y miento; acceso directo lento
directo para sus archivos grandes
1. ARCHIVOS SECUENCIALES Por tanto, un archivo secuencial clasificado, puede ser abordado en la forma se-
cuencial orientada a lotes, así como directamente a través del índice para propor·
cionar una respuesta rápida. La búsqueda del índice, involucrada en el acceso di·
La organización de archivo secuencial es la más simple y popular. Los registros son
recto , es un proceso más rápido que la búsqueda del-archivo en el caso del acceso
almacenados (clasificados) en su secuencia de clave. Un ejemplo de un archivo se-
secuencial. La búsqueda binaria, estudiada en el Ej . 3-17, se puede usar para el
cuencial está mostrado en la Fig. 10-3, el número de seguridad social sirve como propósito.
clave, únicamente identifica los registros que están almacenados en orden ascen- 11 Para almacenar los archivos secuenciales clasificados, se necesita un dispositivo
dente de esta clave. de acceso directo, como un disco.
Esta es la organización de archivo que se usa en los sistemas de lotes orientados a
cinta y a tarjeta. Todas las transacciones de actualización (bajas, inserciones o mo-
l Hay varias formas de construir los_índices de los archivos. Estos son creados auto·
máticamente por el software cuanelo se organiza el archivo.
dificaciones de registro) son acumuladas en un periodo de tiempo, en tarjetas, por Un método popular de clasificación, relacionado estrec~amente a la estructura
ejemplo, luego se transcriben a una cinta y se clasifican por clave. Subsecuentemen- de discos (véase el Cap. 8-D), se muestra en la Fig. 10-4. Los registros de los archivos
te esta cinta de transacción clasificada se corre contra el archivo maestro y se crea el son colocados en el disco en su secuencia de clave cilindro tras cilindro. Están locali-
zados en pistas consecutivas de un cilindro dado, por ej emplo, en las superficies de
Número de Seguro
Social (clave) Nombre Sueldo semanal
discos consecutivos. Por tarito, el índice tiene una estructura jerárquica, con el va -
lor más alto de la clave en una pista o cilindro dados colocados en el índice.
010-55-7394 SMJTH 300
Cuando se usa un disco de muchos cilindros grandes, el Indice del cilindro se di-
173-34-1010 JONES Qoo__)- un campo (panida de datos) vide frecuentemente en partes para incrementar la velocidad de acceso al arch ivo.
(231-35-8535 PETERS 250)-<--- un registro Se agrega entonces un índice maestro para estos índices de cilindros múltip les.
Para tener acceso a un registro directamente, se investigan primero todos los ni -
veles de clasificación existentes, para encontrar la pista que los contiene. Luego la
propia pista es investigada para este registro. Durante el procesamiento secuencial
Fig. l 0-3. Archivo secuencial. no se usa el Indice.
..
Valor mis alto de la clave Una solución podría ser asignar números a los empleados y usarlos como la clave d el archi-
Cilindro Núm.
053-27-3451 vo. Esto podría , de cualquier forma , crear dificultades en algunás aplicaciones en dond e el
1
091-15-4310 acceso por esta clave es no significativo.
Indice 2
del cilindro
·Un conjunto de métodos, llamado fragmentación (o al azar) , se usa en conse-
cuencia, para difundir las orientaciones generadas de las claves tan uniformemente
como sea posible sobre el área asignada al archivo. La colisión, por ejemplo, de dos
claves que se dirigen a la misma dirección, ocurre frecuentemente y tiene que ser
200 950-50-0000
manejado por el software.
Valor mlls alto de la clave Las rutinas del software (métodos de acceso) para el control de los archivos di-
Pista Núm. Valor mis alto de la clave
(cilindro Núm. 1) (cilindro Núm. 200) rectos tiene que incluir, por tanto:
Indices de
las pi.nas
(uno para
1
2
010-31-4500
010-90-7000
915-50-1000
925-01-8000 t
3
~
un proceso de fragmentación;
un proceso de solución de colisiones para almacenar y extraer los registros con
cada cilindro) ¡ las claves transformadas duplicadas;
20 053-27-3451 950-50-0000
En un sistema de archivo, sólo las relaciones lógicas més simples entre los registros
en los archivos individuales son reflejadas generálmente. Esta es la secuencia de las 2. RELACIONES ASOCIATIVAS
claves de registro, que rara vez son significativas en términos del programa de apli -
cación . En un sistema de banco de datos , los registros de varios tipos que juntos Un número de registros del mismo tipo se pueden asociar lógicamente debido a que
describen el medio de aplicación estm integrados en un todo mediante la informa- el valor de su campo seleccionado es el mismo . En otras palabras, penenecen a un
ción que considera sus relaciones, almacenadas con los propios registros. Dado que conjunto común , que se distingue por esta partida de datos . Además los registros de
un conjunto de registros de un tipo determinado se puede considerar un archivo , de archivos se pueden clasificar de acuerdo con varios campos , esto corresponde a la
los bancos de datos se dice a menudo que constan de varios archivos integrados. clasificación de los estados que reflejan de acuerdo con varios atributos. Por
Por tanto, los registros de los bancos de datos contienen los campos en los que se ejemplo , los empleados se pueden clasificar por su departamento , especialidad y
almacenan los valores de los atributos, así como los campos que contienen la infor- grupo salarial.
mación estructural que establece la relación entre los registros . Preguntas tales como , "¿quién trabaja en el departamento X ?'', o "¿quiénes son
Los métodos de implantación fisica como : los electricistas?" . pueden ser contestadas.
El acceso por clave múltiple es entonces posible: por ejemplo, se pueden extraer
• el archivo secuencial de registros los registros basándose en los valores de varios atributos. Ya que estas claves secun-
• los indices del dispositivo y los índices del contenido darias sirven más bien para clasificar que para identificar, como lo hace la primera ,
• fragmentación {al azar) en general no son únicos.
• la construcción de estructuras de datos enlazadas (véase el Cap. 5), por Los métodos siguientes se pueden usar para representar fisicamente una relación
ejemplo, listas enlazadas (en casos especiales anillos), érboles o redes asociativa.
A . ARCHIVOS INVERTIDOS
se utilizan para almacenar registros en un banco de datos. Los enlaces (indicadores)
estructuran el conjunto de registros de modo tal que establecen la organización ló- Los índices contenidos son agregados al archivo , uno para cada atributo clasifica-
gica esencial de los datos. Se pueden considerar referencias cruzadas entre los indi- do . Un índice contenido o un archivo invertido enlistan los valores de un atributo
cadores. con los indicadores para todos los registros que tengan el valor dado . En un archivo
Con el uso de un sistema de archivo (mejor que un banco de datos) es posible só- invertido completamente, se proporciona tal indice para cada campo. Un ejemplo
lo el-acceso simple a los registros; estén limitados a proporcionar información.sobre de este indice se muestra en la Fig. 10-5 . El uso del indice contenido asegura una
el contenido de un campo de registro con el uso de una clave (por ejemplo, "'¿cuél respuesta rápida a una consulta.
Archivos y bancos de datos 229
228 Conceptos de los sistemas de cómputo
Esta estructura ayuda a contestar preguntas del tipo "¿quiénes son todos los
Código de ocupación Orientación de registros miembros del departamento en donde trabaja nuestro dibujante"?
s 100 02S 033 1 413 1
10 113 3. JERARQUIA
12 007 715 114 1
La relación jerárquica entre los registros es de su bordinación o de propied ad. Se
17 011 112 incluyen Jos registros de tipos diferentes; Jos registros de un tipo p ueden "pertene·
cer" o "ser el superior de" los registros de otro tipo. Se permite una jerarquia estric-
ta, y Jos registros no pueden ser adquiridos por más de un registro.
Fig. 10-5. Indice contenido de un archivo invertido. Ejemplos de éstas son las relaciones entre los registros de un departamento y los
de los empleados o entre los registros del cliente y otros registros.
En Ja Fig. 10-7 se pueden mostrar las relaciones entre las clases de registros.
B. LISTAS ENLAZADAS MULTIPLES
DEPARTAMENTO
~
Todos los registros con el valor equivalente del atributo se unen para formar una lis·
ta. Cada registro se enlaza en tantas listas como atributos clasificados tenga. Clases
Para simplificar el manejo, a menudo los anillos de enlace doble (véase el Cap. D<•UAD; ------ RdK""o
tiene
de r e g i s t r o s - - - - - ...----""":--:-:::--,
5-F) son escogidos como la estructura de la lista. En la Fig. 10-6 se muestra un (archivoo) SUBORDINADO
ejemplo.
Los árboles (véase el Cap. 5-G) son las estructuras de datos usadas para represen-
tar las relaciones jerárquicas.
17
4. RELACIONES GENERALES (RED)
En el caso más común puede existir cualquier tipo de relación entre las clases de re-
Registroo
gistros. Un ejemplo se muestra en Ja Fig. 10-8.
[ CLIENTE 1
~- j
21
'!:
'·1:
E. CONCEPTOS DE BANCO DE DATOS (DDL)* especial para proporcionar la descripción. El panorama lógico del banco
de datos está descrito por el esquema conceptual (o simplemente esquema); la
Un banco de datos es un conjunto integrado de archivos (por ejemplo, registros del descripción f!sica es Uamada esquema interno.
mismo tipo) relacionados por su uso y manejados por un sistema de administración Un programa de aplicación simple casi siempre usa sólo una pane de los datos
del banco de datos (DBMS). El motivo principal de integrar todos o algunos de los almacenados y sólo algunas de las relaciones. Los usuarios de los bancos de da-
datos usados en una aplicación en un banco de datos es entregarlos a un recurso de tos son por tanto, capaces de definir en sus propios programas de aplicación sus
control simple cuyos cambios estructurales los hagan transparentes a los programas propias opiniones de éstos, consistentes con el esquema completo. A estas descrip-
de aplicación del DBMS. ciones se les llama esquema externo o subesquema. El uso del programa del banco
La diferencia entre el uso de un archivo o un sistema de banco de datos está de datos está limitado a los datos así descritos. Las dependencias entre las tres vistas
mostrada por la Fig. 10-9. Como se muestra en esa figura , muchos sistemas deban- del banco de datos están ilustradas en la Fig. 10-10.
co de datos permiten al usuario tener acceso directamente a los datos, sin necesidad
de escribir un programa para el propósito. como se ve por el
En un sistema de archivo-orientado, el uso de los archivos casi siempre está limi- programa de aplicación relacionado por el DMBS banco de datos
tado a los programas diseñados expresamente para ellos, ya que los formatos de los
archivos difieren. Las relaciones entre los registros en varios archivos no están alma-
cenadas con los datos; cuando es necesario éstos se relacionan por los propios
programas de aplicación. __
En un sistema de banco de datos, los registros contienen los valores de los atribu-
tos as! como los indicadores y/o Indices que establecen las relaciones entre los re-
gistros. El formato de los datos almacenados_es constante. Los bancos de datos se al-
macenan generalmente en los dispositivos de acceso directo como los discos. t•
Las estructuras lógica y fisica completas de los bancos de datos son definidas
centralmente. Las dos están separadas. Se usa un lenguaje de descripción de datos
organización 16gica organización lógica
parcial organización flsica
transacciones programa archivos completa
de aplicación 1 del programa 1 ~,., (esquema externo) (esquema conceptual) (esquema interno)
(subcsquema) (esquema)
Para procesar los datos contenidos en el banco de datos, está disponible para el Martin, J.: Computer Data-Base Organization, Prcnticc-Hall, Englcwood Cliffs,
N.J., 1977.
programador un lenguaje de manipulación de datos (DML). •Este lenguaje permi· Un texto muy destacado .
te al usuario hacer r~ferencia a los datos en términos más bien lógicos que fisicos los Cardcnas, A. F.: Data Base Management Systems, Allyn and Bacon, Boston, 1979.
cuales le son desconocidos. Este lenguaje puede ser autocontenido o una adición a
un lenguaje de nivel alto popular como el COBOL o el FORTRAN. Muchos siste·
mas ofrecen también un lenguaje de consulta simple, semejante al inglés, para no
programadores que son capaces de interrogar al banco de datos directamente en
linea, sin tener que escribir programas especiales.
La organización de datos centralizados en un sistema de banco de datos permite
a un solo individuo (o a un grupo especial) tener el control total sobre el archivo y
uso de datos. Esta función es llamada administrador del banco de datos (DBA)**
y consiste primeramente en la definición de los esquemas conceptual e interno para
el banco de datos. El administrador del banco de datos supervisa también la organi-
zación, mantenimiento y documentación del banco de datos y define el acceso auto-
rizando a sus elementos y es responsable de su protección. En panicular, el DBA
proporciona para el apoyo, procesos para la duplicación periódica de los datos en
otro medio para protegerlos contra la destrucción.
Los sistemas del banco de datos están respaldados frecuentemente por un dic-
cionario de datos, una referencia cruzada ordenada que enlista todos los elementos
de datos en el banco de datos, junto con su descripción. Existe un software especial
para mantener este diccionario.
La ventaja básica de los bancos de datos es la independencia programa-datos:
los programas de aplicación no son afectados por cambios de estructura en el banco
de datos. Estos son "ocultados" por el DBMS. La redundancia de datos, inevitable
en los sistemas de archivo grandes, es evitada, lo que aumenta la consistencia de da-
tos y la economía de almacenamiento. Son posibles una seguridad y defensa de
privada mejores.
El costo de implantación y uso de los DMBS es alto relativamente. Estos sistemas
dan por resultado gastos considerables y requieren recursos adicionales de hardware.
Este capítulo introduce áreas teóricas importantes de las ciencias de la computa1. ión
con un formalismo mínimo.
La teoría de la computabilidad traza las limitaciones de las computadoras, gene-
ralmente estableciendo las clases de problemas que no pueden ser resueltos por má-
quinas. Las computadoras actuales no se prestan bien a una descripc ión formal que
sea manipulada por !as herramientas de las matemáticas. Por tanto , necesita mode-
los teóricos cul'as capacidades se suponen equivalentes a las de las computadoras
que se hayan usado en el desarrollo de la teoría. Los modelos que casi siempre se
usan para este propósito son las máquinas de Turing.
El estudio del procesamiento del lenguaje por las computadoras pertenece a la
teoría de los lenguajes formales. Uno de los aspectos prácticos de esta teoría es
la ayuda que proporciona en la traducción de los lenguajes de programación. Los
lenguajes formales son conjuntos de cuerdas formadas conforme a reglas estrictas
definidas por su gramática. La teoría de los lenguajes formales se relaciona
estrechamente a la teoría del autómata que analiza las máquinas de procesamiento-
información abstracta. La más poderosa de estas máquinas, en términos de sus ca-
pacidades de cómputo, son nuevamente las máquinas de Turing. Existe una clase
de autómata para cada una de las cuatro clases de lenguaje formal que reconocen a
las cuerdas de lenguaje al contestar la pregunta, ¿está la cuerda formada de acuer-
do con esta gramática?
A. TEORIA DE LA COMPUTABILIDAD
238 Conceptos de Los sútemas de cómputo Computabilidad, máquinas de Turing y iengua1es formales 239
Uno de los problemas sin solución más importante es el problema oscilante (es
EJEMPLO 11-2
decir, comprobado que no tiene solución automática).
(a) Las tres entradas La definición del problema osálante está contenida en el teorema siguiente: no
~xiste un algoritmo A que pueda decidir para un programa P y una entrada l ar-
x, = 4. x, = l, x, = 2 bitrarios, si el programa se detendrá cuando se presente con esta entrada.
La utilidad de tal algoritmo (por demás, imposible) en computación puede ser
se pueden codificar como sigue:
evidente.
2' . 3' . 5' = 1200 El argumento siguiente comprueba la insolubilidad dei problema oscilante. Pa-
ra representar algoritmos, los procedimientos ensamblan de nuevo las funciones de
(b) De un número GOdel ! :::: 140, .se recuperan únicamente las enrradas siguientes: los lenguajes de programación que son usados; por ejemplo, se asigna un valor al
nombre del procedimiento y se trata como un nombre de variable en este aspecto.
X¡ = 2, x, = O, x, = 1, x, = l Supongamos que de verdad tenemos un procedimiento HAL T que es la solución
del ·problema oscilante. El procedimiento en seudocódigo, se ve como sigue:•
ya que 140 = 22 .
De cualquier forma, considerando el procedimiento INVERT, si HALT compu tada por una máquina de Turing o una construcción de potencia equivalen-
(<X, X>) = 1, entonces la instrucción mientras que haga* forma un ciclo in- te . Por lo que la potencia de éstas, ya que semejarían máquinas "simples" es equiva-
finito y el procedimiento INVERT no oscila_ lente a la potencia de la computadora.
Dado que somos capaces de encontrar un procedimiento INVERT para el cual Una máquina de Turing es u n a utómata que consta d e una unidad de control,
el problema oscilante no pueda ser resuelto, no es posible un programa de propósito una cinta y una cabeza lectora/ escritora (véase la Fig. 11 -2) jun to con el programa
general que puede decidir la terminación de otros programas ?ara una entrada ar- diseñado para ella.
bitraria.
Otro ejemplo importante de un problema sin solución es el llamado problema de <- ..
tJ_
1 . ---
-~
I ,¡ ----,--
L_ ¡
! .
[ . . . J,__
, .
cin t a
equivalencia, es decir, no hay programa que pueda determinar para otros dos
programas arbitrarios si son equivalentes (por ejemplo, si calculan la misma fun-
ción). Corno muchos otros teoremas en la teoría de la computabilidad esto se de- un cuadro ..... ~ ~--"-- -~
ca beza lectora/ escritora
unidad de 1
muestra mediante la reducción al problema oscilante. En otras palabras, tal canti- 1
control
dad de pruebas establecen que si el pr0blerna d ado es solucionable, el problema os-
cilante lo puede ser también.
Fig. 11-2. C na máquina de T ur ing .
5. COMPLEJIDAD COMPUTACIONAL
La unidad de control de una máquina de Turing almacena la información rela-
cionada al est ad o actual de la máquin a. Una máquina de Turing puede estar en
La teoría de la computabilidad está complementada por el estudio de la r:ompleji- uno de los estados finitos , determinado por el algoritmo, ll amado programa· para
dad r:omputar:ional, la investigación del tiempo de corrida y del espacio de memo· una máquina de Turing. Un estado refleja la historia p asada del cálculo d ebido al
ria requeridos para la solución de mayor clase de problemas. Esta teoría ha estable - programa dado. Se supon e que el programa está "construido en" la unidad d e
cido un número de límites en las necesidades de recursos y por tanto, guía al control.
programador en el diseño de mejores algoritmos. La cima de una máquina de T uring sirve como su dispositivo de memoria y d e
Un ejemplo de ésta origina que la clasificación de n partidas necesita corno un entrada / salida. Consiste de un número infinito de cuadros, conteniendo cad a un o
mínimo nlog 2n operaciones de comparación. un símbolo sencillo. Sólo un número finito de cuadros p ued e contener la in fo rma·
ción necesaria p ara cualquier cálculo; el resto de los cuadros se supone que contiene
B. MAQUINAS DE TURING un sím bolo especial llamado un blanco.
La máqu ina es capaz de leer y escribir información de un cuadro simple en un
Para determinar en orden la computabilidad de las funciones es necesario tener tiempo, es decir , el cuadro es apuntado por la cabeza lectora/ escritora . La cabeza
una definición matemática precisa de los algoritmos. No es posible la precisión con lectora / escritora se mueve de un cuadro al adyacente corno dirigida por el progra·
las computadoras reales (consulte la Parte 1 para la descripción de tales algoritmos, ma y transmite la información entre la cintjl y la unidad de control. La cinta con -
la cual está lejos de ser precisa). tiene al empezar la entrada presentad a a la máquina , subsecuenternente se usa co-
Se ha diseñado una cantidad de construcciones teóricas en las que es posible mo el archivo de trabajo y por últim o , proporciona la salida.
una definición exacta de computación y algoritmo. Las más conocidas son las má- El algoritmo que es seguido por una máquina de Turing se le llama su p rogra -
quinas de Turing; otras incluyen los algoritmos de Markov, cálculos lambda y la ma. Este es un conjunto de instrucciones (" reglas") de un tipo muy restringido. La
teoría de funciones recursivas. máquina lleva a cabo una instrucción corno un paso simple. Cada instrucción tien e
Una máquina de Turing es el más poderoso de los autómatas. Un autómata es la form a de un q uinteto; en general , consta de cinco elem entos ordenad os. Cad a
una máquina idealizada para el procesamiento de información cuyas acciones están quinteto especifica la acción que va a hacerse si la máquina está en un estado d ado ,
especificadas en términos matemáticos. Lo que se conoce corno máquina de Turing con la cabeza lectora/ escritora a puntando a un sím bo lo d ado . La acción pued e
fue introducido por el lógico británico Alan Turing en 1936 y por tanto , precedió el consistir en cambiar el símbolo , m over un cuadro a 1 ~ izquierda o derecha , cam b ia r
desarrollo de las computadoras electrónicas de propósito general. Una conjetura (ya el estado o una comb inación de éstos.
que no puede ser probada, pero existen evidencias fuertes a favor), conocida corno Los quintetos tienen la forma gen eral s'::c•iente (aunque abundan las vari aciones
la tesis de Church sostiene que una función es computable, si y sólo si, puede ser de notación):
El programa Comentarios
donde q 0 , b, b, R. q 0 mantenga el movimiento a ta derecha mientras b esté ba-
q, es el estado presente de la máquina; jo la cabeza
t¡ es el símbolo de lectura de la cinta para la cabeza lectora/escritora; q 0 , l, l, L. q¡ se alcanzó el número
t1 es el símbolo de lá cinta que sustituye al que se está leyendo (quizá, q¡. b, 1, N, HALT en el estado q. la cabeza efectivamente está apuncando a b
t¡ = ti' es decir, el símbolo de lectura no se ha sustituido);
di es la dirección prescrita del movimiento de la cabeza (R para la derecha, Notas
L para ;a izquierda, N para no movimiento); l. Observe cómo sucede la "transferencia de control" del primero al segundo quinteto.
2. Observe que cuando q¡ := qj, podemos tener un bucle; en nuestro caso, el primer quin-
qi es el estado siguiente supuesto por la máquina.
teto está consrruido como tal.
3. Observe la necesidad de tener al menos dos estados.
Un quinteto se debe imerpretar como sigue: 4. ¿Cómo podría modificarse el programa. si la cabeza estuviera al principio en el l más a
si qi, t¡, entonces la izquierda?
tj, d), qi
además
EJEMPLO 11-4
Problema
este quinteto no presenta aplicación. Diseñe una máquina de Turing que agregue dos número naturales.
Solución
El flujo de control dentro del programa es completado por la máquina al selec- alfabeto de la cinca; b, l
cionar el quinteto que aplica en el estado actual con el símbolo dado bajo su estado inicial: q 0
cabeza. representación de entrada: los enteros N y Y1 están representados por N + 1 y NI _.._ 1 los
Los estados son indicados como q 0, q t• ••. , qn y HAL T. Al menos en un quinteto l consecutivos respectivamente: los dos enteros son separados por un b sencillo
el símbolo del estado siguiente debe ser HAL T para proporcionar el término del posición inicial de la cabeza: en el l más a la izquierda del nú.mero más a la izquierda
representación de salida: el entero K, representado por K + l los 1 consecutivos.
cómputo.
Para describir una máquina de Turing, se tiene que especificar lo siguieme:
Programa
posición inicial de la cabeza:
el conjunto de símbolos de la cinta, llamado el alfabeto de la cinta
(siempre incluye el símbolo de blanco); .. bb!llbllb.
el estado inicial de la máquina;
la representación del dato de entrada en la cinta; cabeza y cinta después de cada paso:
la posición inicial de la cabeza; q,, !, !, R, q, bb l l l bl lb ... se mueve para alcanzar el b de separación
la representación de la(s) salida(s) de la cinta; -r
el propio programa. q,, b, l, R. q, . bb l l l l l lb . reemplace el b de separación por 1
T
Los ejemplos siguientes presentan dos máquinas de Turing. q,, !, l, R, q, . bbl l l l l lb ... }
-T alcance el l más a la derecha
EJEMPLO 11-3 q,, b, b, L, q, ... bbl l l l l lb ...
¡
q,, l, b, L. q, . bb l l l l l bb. retarde el l más a la derecha
Problema
Diseñe una máquina de Turing que incremente cualquier número natural (entero no negati· ¡
Solución
alfabeto de la cima: b (blanco), l Notas
estado inicial: q 0
represencación de entrada y salida: un entero M está representado por M + 1 los 1 consecu· l. Observe que la respuesta es K = 3, lo que indica igual al original 2 -'- l.
tivos (ésta es una representación típica ya que representa al O como un l simple, para evitar 2. Compruebe que el programa trabaja para casos especiales, por ejemplo. O + O.
tener a la cinta en blanco totalmente). 3. ¿Cuáles decisiones en la escritura de este programa fueron necesarias y cuáles arbitra·
la posición inicial de la cabeza: en cualquier parte a la izquierda del número. rias?
24~ Conceptos d e los sist emas de cómputo
Computabzlzdad, máquinas de Turing y lenguaj es f ormales 245
Mientras que cada computación necesita una máquina de Turing diferente,
existe una máquz'na de Turing universal que es capaz de simular a cualquier otra 2.
máquina de Turing. De este modo la cinta de una máquina de Turing universal sa-
DESCRJPCION Y DERIVACJON DE LENGUAJES FORMALES
tisface la tesis de Church al ser capaz de computar cualquier función computable.
Un problema dado es solucionable, esto es, existe un algoritmo para su solución, Un lenguaje formal, a continuación llamado simplemente un lenguaje , es un con-
si y sólo si, cuando el algoritmo es presentado como un programa para una má· junto de líneas formadas por la agrupación (en general, escribiendo uno tras otro)
quina de Turing, la máquina se detiene. Existe por supuesto, como se muestra a de un número finito de símbolos del lenguaje de acuerdo con las reglas especifica-
das para este lenguaje.
continuación, un algoritmo no general que puede establecer esto para un programa
arbitrario: el problema oscilante es indeciso. El conjunto de todos los símbolos que pueden aparecer en las líne'as de lenguaje
es el alfabeto del lenguaje.
De acuerdo a estas definiciones, lo siguiente se considera un lenguaje:
C. LENGUAJES FORMALES
L, = {X + y 1 y + X}
Los lenguajes se caracterizan por su sintaxis y semántica. La sintaxis del lenguaje
que se presra por sí misma a una definiciór: formal , permite la clasificación del len- sobre el alfabeto x , y, + .
guaje como perteneciente a una de las cuatro categorías de la llamada jerarquía de
Chomsky de los lenguajes formales. La riqueza de los lenguajes naturales sobrepasa , En la notación expresada:
de cualquier forma , la posibilidad de tal definición formal, mientras que los len-
L, es el nombre del lenguaje;
guajes de programación de nivel alto pueden ser aproximados mediante la llamada
gramática libre de contexto de la jerarquía. Un compilador para el lenguaje defini- los corchetes : { y}, contienen la lista de líneas del lenguaje;
do puede usar esta definición para ordenar programas. el símbolo 1 separa las líneas individuales y tiene el significado de "o".
La generación de una línea de lenguaje definida por la gramática dada procede Solución
como sigue:
La producción primera genera la lfnea x . Si la producción segunda se aplica inicialmente. ob-
tenemos:
(! ) Una producción cuyo lado izquierdo es el símbolo de la oración (general- s .. s +y .. s +y +y .. s +y +y +y .. . ..
mente señalado por S) se w;a primero. Como una producción (o varias
Entonces, aplicando la producción primera o b tenemos cualquier línea de la forma siguiente:
producciones) es siempre parte de la gramática. x+y+y+ . . . +y
(2) Una producción se puede aplicar a una línea intermedia si el lado izquier- Este lenguaje infinito se puede describir como:
do de la producción aparece en esta línea. Se aplican tales producciones,
y por tanto, sé obtiene una secuencia de líneas intermedias. L • { xZ"' 1 Z "' +y, m>O}
(3) La generación de la línea se completa cuando no se puede aplicar la pro-
ducción a ésta. Si esta línea contiene sólo símbolos terminales del len- Una producción cuya línea del lado izquierdo está contenida en su línea. del lado
guaje, ésta es una de sus líneas. derecho es recursiva: la sustitución se "define" parcialmente en términos de sí mis-
ma. La producción
\
segunda en el Ej. 11-7 es de esta clase.
Por tanto, una línea de un lenguaje se genera a través de una secuencia de líneas
intermedias, llamada la denºvación de esta línea. Para conectar las líneas usadas en 3.
la derivación, se usa el símbolo de flecha doble (..) CLASIFICACION DE LENGUAJES FORMALES
EJEMPLO 11-6 Una clasificación de los lenguajes formales basada en la naturaleza de las produc-
Problema ciones de su gramática fue introducida por Noam Chomsky en 1959.
Determinemos qué lenguaje se define por la gramática siguiente. Esta clasificación estableció la jerarquía de los lenguajes formales, con los que
símbolos terminales: x, y, + estaban colocados más abajo constituyó un subconjunto de los más altos. Partiendo
símbolos no terminales: S, T de la parre superior, se distinguieron los siguientes tipos de lenguaje:
el símbolo de la oración: S
producciones: (1)
Lenguajes irrestrictos, con cualquier tipo de producción incluida en su gra-
s-x mática; aun éstos fallan al reflejar la complejidad de los lenguajes natura-
les; sin embargo, son los más próximos a ellos.
S-x+ T (2)
T-x+y Lenguajes de contexto sensitivo , un modelo que acompaña a los lenguajes
de programación pero se usa raramente debido a lo difícil de su manejo.
248 Conceptos de los siStemas de ~ómputo Computabl/z'dad , máquinas de Turing y lengua1es fo rmales 249
(3) Lenguajes de contexto libre, la categoría más importante, ya que es el que donde
más se aproxima a los lenguajes de programación de nivel alto y se maneja N es un símbolo no terminal;
con más facilidad; estos se estudian más profundamente a continuación. la línea-! es una línea, esto es, una concatenación de símbolos, algunos de los
(4) Lenguajes regulares, como un tipo de lenguaje formal muy restringido. cuales pueden ser terminales y algunos no terminales;
los paréntesis angulares, < y> , sirven para limitar los nombres de los compo-
Esta clasificación de lenguajes se aplica también a su gramática. nentes del lenguaje (por ejemplo, <expresión> , o < constante lógica > ).
Los lenguajes formales están relacionados a los autómatas (véase el Cap . 11 -B) es decir, símbolos no terminales .
en los que es necesario un autómata (una máquina teórica) de una complejidad Por tanto, como una producción presenta líneas alternas que pueden sustituir al
particular , para distinguir cuál de los miembros de una línea es un miembro del símbolo N.
lenguaje con una gramática dada. Los autómatas analizados desde este punto de Por ejemplo, considere las producciones siguientes de la notación BNF:
vista, son llamados acepcores para las líneas del lenguaje . Las máquinas de Turing,
como la mayoría de los autómatas , reconocen las líneas de un lenguaje irrestricto. <digito>:= O / l / 2 1 3 / 4 1 5 1 6 / 7 1 8 / 9 (1)
<entero no indicado>:=< dígito > / <entero no indicado> / <dígito> (2)
<entero >:=<entero no indicado> j +<entero no indicado 1> 1
4. GRAMATICAS DE CONTEXTO LIBRE
-<entero no indicado> (3)
Y SUS PAPELES EN LOS COMPILADORES
El número -73 se puede derivar usando estas producciones como sigue (las pro-
Las gramáticas de contexto libre son particularmente importantes en la traducción ducciones aplicables se muestran arriba de las flechas):
de los lenguajes de programación de nivel alto. Junto con algunas reglas adiciona-
2)
les , pueden formar las bases para la sección de ordenamiento de un compilador < entero > (J)
==*' - < . d'tea d o
entero no in > <==*' -< . d'1ca d o
entero no in >
- . (2) d' . d' . (l) .. . ( 1)
(véase el Cap . 6-B-2). < d1g1to>=-< 1g1to>< 1g1to>=-7<a1g1to>=-73
Las producciones de gramática de contexto libre están restringidas a la forma:
En un compilador el proceso se invierte, la identificación de una construcción de
un símbolo no terminal simple - una línea no vacía un programa como válida, es importante. Durante la fase de análisis sintáctico , se
produce el árbol de ordenamiento como se muestra en la Fig. 11-3.
Esto significa que en una derivación, los símbolos nunca son diferidos de la línea
Un ordenador de transmisión sintáctica reconoce una línea (por ejemplo , un
intermedia generada previamente . La sustitución de líneas se lleva a cabo son consi-
programa o una instrucción particular) como un miembro del lenguaje , es decir ,
deración a las líneas que le rodean. una construcción válida sintácticamente.
EJEMPLO 11-8
------______
entero
z-x dfgito
El lenguaje de programación ALGOL , cuya definición constituyó un paso im-
1 1
portante en el desarrollo de las ciencias de la computación, se define casi por 7 J
completo mediante una gramática de contexto libre. presentada en la llamada for·
ma Bar:kus-Naur (o notaáón BNF). Ya que este metalenguaje se aproxima a la es- Fig. 11-3. Un árbol de ordenamiento.
pecificación completa del ALGOL, este lenguaje de programación se acerca a ser
de contexto libre. SUGERENCIAS PARA LECTURAS MAS PROFUNDAS
En la notación BNF, para economía en la escritura , varias producciones a me-
nudo se combinan en una con el uso del símbolo ( /) que juega aquí el papel delco-
nectivo "o".
Denning, P. J., Dennis, J. B., and Qualitz, J. E.: Machines, Languages, and Compu-
La forma general de las producciones BNF es
ta/ion. Prentice-Hall. Englewood Cliffs, N.J., 1978
<N>:= línea-! / línea-2 / ... l línea-N Un libro de texto excelente y completo.
250 Conceptos de los sistemas de cómputo
Kain, R. Y.: Automata Theory: Machines and Languages. McGraw-Hill, New York,
1972.
El autor se esfuerza por explicaciones intuitivas .
Kurki-Suonio, R.: A Programmer's lntroduction to Computability and Formal Lan-
guages. Auerbach, Princeton, N .J., 1971. Apéndice A
Ligero e intuitivo.
Hopcroft, J. E.. and Ullman, J. D.: lntroduction to Automata Theory, language,
and Computa/ion. Addison-Wesley, Reading, Mass., 1979.
Un texto avanzado reconocido ampliamente. Representación de los Datos
Aho, A. V., Hopcroft, J. E., and Ullman, J. D.: The Design and Ana/ysis ofComput-
er Algorithms. Addison-Wesley, Reading, Mass., 1974. Numéricos en la Memoria
Análisis de la complejidad de los algoritmos.
Hantler, S. L.. and King, J. C.: An lntroduction to Proving the Correctness of Pro- de la Computadora
grams, in ACM Computing Surveys, Vol. 8, No. 3, September 1976.
No esturliáda en el prt"sente. libro , ésra es un área que surge de la ciencia de la co inpu-
t ación tc<"-,rica.
Esta es la suma de potencias de 2 correspondientes a los bits l del número binario N. De aquí fracción decimal representación binaria de F
que
N = 22.625!0
F .. d_,2-• + d_,2-• +... + d-.+ 12-•+I + d_.2-· (3)
Para convertir I a binario , necesitamos obtener Jos dígitos binarios d"" ... , d 0 . EJEMPLO A-5
Como podemos ver de la Fórmula 2, si un encero decimal 1 se divide entre 2 , el Convierta los números 0.625 y 0.317 a representación binaria con precisión de O. 1 (es decir ,
dígito binario d 0 es el residuo (como un dígito binario, es menor que 2). detenga Ja conversión cuando la fracción se vuelva menor que 0.1 ).
El cociente es, de acuerdo al lado derecho de la Fórmula 2:
(a)
1/2 = d.,2 ..- 1 +...+ d,2 + d,
product o parte lntegra /
Las divisiones subsecuentes entre 2 darán a d 1 como el residuo, y así sucesiva- 0.625 X 2 = 1.250
~~
mente. El proceso de conversión es entonces: 0.250 X 2 = 0.500
0.500 X 2 = 1.000
(1) Divida el número decimal entre 2; el residuo es el bit más a la derecha de esto es ,
su representación binaria. 0.000 conversión exacta: 0.625 10 = 0.1 o 1,
(2) Continúe dividiendo el cociente entre 2 hasta que sea igual a O; los resi - (b)
duos son los bits de la representación binaria , obtenidos en el orden de de · 0.317 X 2 = 0.634
~¡
recha a izquierda. 0.634 X 2 = 1.268
0.268 X 2 = 0.536
EJEMPLO A-4 0.536 X 2 = 1.072
Convierta 22 10 a binario .
0.072 < 0.1 (condición de alto) : 0.31710 =o.o 1 o 1,
r:or.1.ente residuo
¡~
22:2 11 Observe que el método de suma de potencias de 2 proporciona un proceso de comprobación
11:2 5 conveniente.
5:2 2
2:2 1 Para convenir un número mixto, sume los resultados de las conversiones de sus
1:2 O (condición de alto) partes entera y fraccionaria .
22,. = 1 O 1 1 O,
EJEMPLO A-6
CONVERSION DE UNA FRACCION Para convertir 22.625 10 a binario, usamos los resultados de los Ejs. A·4 y A·S y obtenemos
Una fracción decimal de F tiene la siguiente representación binaria de acuerdo a la
Fórmula l: 22.625 10 = 10110.1012
256 Conceptos de los sz5temas de cómputo Representación de los datos numéricos en la memoria de la... 257
00 (complemento)
Convierta a números decimales 546.1 8 y 2A .F 16
~-~
3 3 5 3 4
346.1, = 3 X 8' + 4 X 8 + 6 + 1 X 8- 1 = 230.125 ..
Portanto.1011.1010111 2 = 33.534, 2A.F 10 = 2 X 16 + 10 + 15 X 16- 1 = 42.9375 10
La conversión de un número binario a su representación hexadecimal se realiza
agrupando a los bits en cuatro en ambas direcciones del punto decimal. Para convertir un número en sistema decimal a sistema octal o hexadecimal, es
El grupo último en una fracción se debe completar con los O. Cada grupo de conveniente convertir primero a sistema binario (véase la Sec. B anterior) y subse-
cuatro bits constituye un dígito hexadecimal. cuentemente a la representación deseada por agrupación (véase la Sec. C anterior) .
EJEMPLO A-8
O (complemento) 3. ARITMETICA BINARIA EN NUMEROS SIN SIGNO
EJEMPLO A-9 o 1 1 o o 1 1 o
lleva J roma 1
Convierta 346.1',4 8 a binario
4 6 1 4, multpiicadón división
011 100 110 00 1 11 1 100 o o 1 1 1:1 = l
xo XI xo XI 0:1 = o
Por tanto . 346. 174, = 11100110.0011111 , o -o -o 1
¡
!
258 Conceptos de los sistemas de cómputo Representación de los datos numén·cos en la memoná de la . . 259
1100.01 1100.01 La suma de números con signo es una operación elemental muy frecuente en el
+ 1010.10 - 1010.10 procesamiento de las computadoras, es deseable p ara realizar la suma de dos núme·
10110.I l l. l 1 1 ros de signo opuesto (o la resta de dos números del mismo signo) usar el mism o algo-
ritmo, lo que significa el mismo hardware , que para la suma de dos números dei
101 l.00 1
11.00 10.l l 11011.1101 mismo signo.
'
La posibilidad de realizar la resta sumando se logra si los números se representan
X 10.10 -101
0000 111 en la forma complementaria.
+ 1100 -101 La an·tmética complementaria tiene la validez a través d e los sistemas de núme ·
0000 lOI ros de rafz. En cualquier sistema podemos llevar a cabo la resta de un número como
1100 -101 una suma de su inverso con respecto a l mayor número usado (llamado un módulo) .
111.1000 101
-101
EJEMPLO A-1!1
E.n aritmética decimal. si estuviéramos limitados a enteros de un solo dígito , el inverso con
Se debe tener atención especial a la resta que tiende relativamente al error. Los resultados se respecto a 9 lo podrlamos usar como se muestra:
pueden comprobar convini~ndolos al sistema decimal. 2-5a2+~-~=2+4=6a9-3
donde 9 - 5 es el inverso de 5 , y 6 es el inverso de S. Por lo que ,
2- 5 =- 3
Este ejemplo simplemente ilustra el u so de la aritmética complementaria . Un algoritmo
4. REPRESENTACION DE PUNTO FIJO. COMPLEMENTOS general para la suma de complemento se presenta a continuación para el caso b inario.
Para representar Jos enteros en Ja memoria de Ja computadora, se emplea general- La aritmética de complementos tiene un a tractivo particular en el caso del siste-
mente la representación de punto fijo de los números binarios. En esta representa· ma binario, ya que para obtener el inverso de un número binario no se necesita la
ción la posición del punto binario está fija con respecto a Jos bits. Hasta aqul está resta, solamente Ja inversión del bit. Esta operación es simple y rápida. Se usan dos
interesado el programador, el número completo. es un entero aunque en algunas tipos de aritmética complementaria en el caso del sistema binario . Algunas compu-
máquinas se trata internamente como una fracción. tadoras usan la aritmética de complemento a los 2 para manej ar los n úmeros de
La representación más evidente de un número con signo en una memoria de punto fijo , y otras usan el complemento a los l.
computadora es la representación de la magnitud con signo. Consta del bit estable· Una suma de dos números del mismo signo puede originar sobreflujo, con el re-
cido para el signo, seguido por el valor binario del número: sultado más grande que el máximo que se puede almacenar en una palabra de la
máquina en particular. Como resultado no es válid o.
signo 'lo "magnitud"
La multiplicación y división de los números de punto fijo son realizadas por la
computadora como una serie de cambios y sumas.
1 0/1 i 1 o¡.............¡o
1 1
O n- 1 número de bits
A. REPRESENTACION Y SUMA DEL COMPLEMENTO A LOS 1
1 palabra
Para obtener el complemento a los 1 de un número binario es necesario lo siguiente :
EJEMPLO A-12
E.n una máquina con palabras de 8 bits, el contenido de las palabras es el siguiente cuando és· (1) Si el númt.• ..i es positivo, su verdadera magnitud se representa con el signo
tas almacenan números de punto fijo en la forma de magnitud con signo. O.
(2) Si el número es negativo , se invierte cada bit del número (complementa·
~ bit de signo
do) y se agrega el signo del bit l.
-9010 l 1011010
+105., 01101001
Para sumar dos números en la representación de complementos a Jos 1:
El bit O de Ja palabra contiene el bit de signo; su valor es por convención l cuan·
do el número es negativo, O cuando es positivo. (1) Sume los números con los bits de signo .
Mientras que esta representación parece natural, no es la mAs deseable para la (2) Extraiga el bit de signo (llamado acarreo final de redondeo), si sucediera,
aritmética de Ja computadora. se debe sumar subsecuentemente el bit más a la derecha del resultado.
!60 Conr.eptos de los sistemas de r.ómputo Representat:ión de los datos numén·cas en la m emona de la.. . 261
(3) El sobreflujo ocurre si el signo del resultado difiere de los signos de los su- .ll B. REPRESENTACION Y SUMA DEL COMPLEMENTO A LOS 2
mandos (aquellos tienen que ser iguales para que tenga lugar el sobreflu-
jo).
~!
~¡ Para obtener el complemento a los 2 de un número binario es necesario lo siguiente:
En el caso de un sobreflujo se desprecia el resultado. ~¡
~.
:JEMPLO A-14 ( 1) Sume los números con sus bits de signo, ignore al acarreo del bit de signo , si
se presentase .
.a memoria de la computadora tiene palabras de 8 bits de longitud. Las operaciones siguien- (2) El sobreflujo ocurre si el signo del resultado difiere de los signos de los su-
'5 se realizan en complemento a los 1: mandos, ya que tienen que ser los ..mismos (para que tenga lugar el sobreflu-
1 jo).
(a) -124 + 67 ~¡
magmíud (7 bita) romplemmlos a los I
Para establecer el valor verdadero de un resultado negativo (con el signo de 1) se usa el
signos
-124 1111100 procedimiento más simple.
1 0000011 '
67 1000011 +o 1000011
1 1000110
.1
' ( 1) Invierta todos los bits.
(2) Sume 1 al bit más a la derecha del resultado.
omprobación del resultado:
la magnitud verdadera es -0111001~ • · -S7 i Esto es más simple que la alternativa evidente de restar 1 del resultado y completar
(b) -12- so ',¡. la diferencia.
magmíud (7 bita) ,• rompúmm.tos a los 1
signoo EJEMPLO A-15
-12 0001100 l 1 1110011
-so 0110010 1001101 Con una memoria de computadora de 8 biu de longitud por palabra , se llevan a cabo las ope-
1000000 raciones siguientes en complemento a los 2:
acarreo de redondeo
Comprobación del resultado: En esta notación, suponiendo una raíz conocida (10 en los ejémplos anteriores) se represen-
la magnitud verdadera es 0111000 ta un número por dos valores: la mantisa (también llarnada.fracciOn) y el exponente.
+
0111001, - -S7
ISOO • O.IS X 10' •
(b) .-12 - so O.OOOIS • O.IS X 10-• • .
magnitud complemento a los 2
Por tanto, un número se representa como
-12 0001100 1110011
+ 1 mantista X ralzcxponmir
1110100
En las computadoras. estt implkita una base binaria, octal o hexadecimal (dependien-
-so 0110010 1001101
do de la máquina), mientras que los valores de la mantisa y el exponente están almacena-
+ 1.
1001110 dos. Un ejemplo del formato de la palabra para este almacenamiento se muestra asi
cenamiento se muestra asr
".aignoo
suma: 1 1110100 1~,;;;;;; 1 mantisa 1
+l 1001110
6 bits 1o bits
/ 1 1000010
1 (despttcicoe) ·
Ambos números tienen signo. La mantisa generalmente se representa en complemento
Comprobación del resultado: a los 2.
~' --
la magnitud verdadera es 0111101 Loe números de punto flotante se almacenan generalmente en la forma nannalizada,
+ 1 ron la mantisa como una fracción cuyo bit más a la izquierda es diferente de O (por
0111110, - -62 ejemplo, en la representación binaria). Los números de arriba están normalizados.
La longitud de la mantisa en la representación del número determina la precisión de
5. REPRESENTACION DE PUNTO FLOTANTE un modo de punto flotante en la compUtadora dada; la longitud del exponente determina
el· rango reprelClltable de números.
La representación de punto flotante se usa para alma:cenar números reales en la memoria El sobrcflujo se presenta durante la aritmética de punto flotante cuando el valor
de la computadora. Esta expande el rango y precisión de la representación de punto fijo . de exponente positivo es demasiado grande para almacenar en el espacio asignado;
EJ manej:> de los números as! representados es, de cualquier forma, una operaci6n más el infraflujo. cuando el valor absoluto de un exponente negativo es demasiado chico
compleja y consecuentemente más grande. (es decir, el número en s( es demasiado pequeño para ser representado. Esto se
ilustra:
números
EJEMPLO A-16 n6meroo negativol positivos
Las posibilidades de representar un número de punto flotante ae pueden ilUI02r por el hecho de que . aobrdlujo repreoentablcs infraflujo reprcoentables sobrdlujo
las computadoras IBM/ 360-370 con longitud de palabra de 32 bits pennitai:
M.,;;;2•1 -l
Fig. A-1. Repreaentabilidad de los números de punto flotante .
(2) En el modo de punto flotante, representar cualquier número
M ..;; 2111 (aproximadamente) Para aumentar la prec:iai6n de una representación de punto flotante, se pueden
almacenar los números de punto flotante de precisión doble (o, en general, de pre-
La representación en punto flotante de un número corresponde a la aaf llamada nota- cisión mdlüple) en algunos modelos de computadora. En este caso, un número ocu-
ción científica usada eñ. ocasiones para representar números muy grandes y números muy pa dos palabras consecutivas de la memoria, con la segunda palabra almacenando
pequeños. Por ejemplo. la extensión de la mantisa.
'264 Conceptos de los sistemas de cómputo <:. ~~{.'..· ~ ·.-. ."t~"
-~---.C6di-go~ de Caract'e'res
1:"""':• ~. •_, . J • • ·• . 1',. ..;· !.:"..LiJG:·::t.·'} ¡.:.,. •- ' <i t ~-~
., .. ..,. ._: '",.:''tn"i ,.....; ~. (,,'~ J ··~ (.
,; :-.:;; 1~- '.r" í:' ~ ¡ ~{'' .. :.~~ ¡..,;• (í~., ~>~~ - .~.·~- ¡_
.. , .... ~~ · .; ·~i:, 01:-:~:r:.l .... ..,_ .'.•
'· : :: ., "- ·-_;+---·
---~;;.;=!~,n-:110-~
-
··- - -
..----···
.
L. ¿,,¡
·~
·~·) ~~ ~ "-j\. .,,¿ .,,•::;.;;
": r • _...·
';.0r ... ¡ . .. .· '- . ; .• :".ti
. ,!, t Ji Comúnmente se emplean dos c6digos·de·caractercs parárcprcscntai'lóS-datos alfa-
-!• ...· ,._ ... _ ~ ..... ¡-.. • • .., ;t: 1· ,, •;:. ...,....:,::::H" ~. .
v-. j· num~ricos,:::los.caracte~espcciales y los caracteres de control: El Código Estmdar
.. ~ e·:::. J!~ Amcric_ario para Ir.i!cié:am~i()~e Información (ASCID,.* un código 'estándar de 7
\-1 ':.r:.)c ,,.~...,.. .• i. ~... .·.'!:. _.,;. bits y el Código de Intercambio Decimal _Codificado . Binario :Ampliado
· ~ "rr"' .... ·· .f , ........
~
;., - lf'."' •• ~ .~ :.~1- .:.•• ; ; (EBCDIC),•• tin códigDdc S bits-desarrollado por IBM. Existé'fambiéiÍ. Uña versión
· ., ;, ~ • ;J \\, . *~ de 8 bits estándar del código ASCII. La mayor pane de los modelos de computado-
ra usa .uno .de estos códigos.. · ·'- ·
;e .- ~
~
: j..'
•··i>•'i
El código ASCII de 7 bits se muestra en la Tabla B-1 . Por tanto, por ejemplo, el có-
digo para A es
b, b. . ti. b, b, b, b.
1 o o o ,. o o 1
':l~ ~' . 1: ,:" ""L) ",i.: y el código para el espacio en blanco (6) es
~q
b. .. b¡ b, b, b, b. · ... -~
' b,
o 1 .. o o o o o >:-
·' .. , . , ~, ....__ , ~;·~;·~.t: 1fm . :""I•~> r>r:& -,i;~r;-'!'.:·..~·,,~, h1 -.: · ;i~ ·.J .~· ..... ~ !. *'·
!.. ~ .. ,,....,...
~
•f· ~!;·· ·:..::· ~·. n:.· -: ~"·~: .,· · i.··~ i" '2
•.·. ~·.~ . :, :'\JJ,.;~ ~. •1-::... ·;~ fl' J<,
" fll.tr.'I~ :;: . i,'.":'.r:· _ 'J:J
J..! r- r "i ff~, h '--.' ~ !~; i.!. ~"·: ,• ~1 j • ·~·;:~.w f,,/ J..· . :,.( - ·~· ...
"';.}'l >
biu
l l l l -
l::SZ
b, b, lb, b, o 1 2 3 4 5 6 7 Tabla B-2. Código EBCDIC.
oo 1 1 3 ETX DC3 # 3 e s e s
88 o o o o -
~
1 oo1
1 o 1 o
9
10
HT
LF SUB
EM
*
) 9
:
I
J
y
z j
i y
z .
~
;::
0110
0111
- /
:
,%
# @
- > ?
' = "
·::.. 1 o 1 1
::.... .
1 1 oo
' 11
12
VT
FF
ESC
FS
+
.
;
<
K
L
[
\
k
1
{
1
l
.:¡
1000 a b e d e f g h i
~ 1 1 o1 e
1
1001 j k 1 m n o p q T
!!
13 CR GS - = M l m } !3
;s s t u w X y z
e i 1 1o
E 14 so RS > N /\ n - 1010
1011
V
!3
:.s 1 1 1 1 15 SI us / ? o - o DEL
A B e D E F G H 1
1100
NUL Nulo DLE Escape del enlace de datos (CC) 1101 J K L M N o p Q R
SOH Inicio de encabezado (CC) DCI Control del diapooitivo 1
STX Inicio de texto (CC) DC2 Control del diapooitivo 2 1110 s T u V w X y z
ETX Fin de texto (CC) DC3 Control del diapooitivo S 1111 o 1 2 3 4 5 6 7 8 9
EOT Fin de transmisión (CC) DC4 Control del dispooitivo 4 (alto)
ENQ Consulta (CC) NAK Admisión negativa (CC) EM Fin del mensaje
PF Fm de la perforación LC Casilla inferior
ACK Admisión (CC) SYN úpacio atrás SM Modo de ajuste
Marcha sincrónica (CC) RES Alto de la lectora BS
BEL Campana (señal audible o de atención) ETB Fin del bloque de transmisión (CC) BYP Derivación EOB Fin del bloque os Selección de d!gitos
BS Espacio atrb (FE) CAN Cancelada PN Perforación uc
Casilla superior sos Inicio del significado
HT Tabulación horizontal (salto en la EM Fin dei medio Tabulación horizontal DEL Retardo FS Separador de campo
HT
tarjeta perforada) (FE) SUB Swtituto IDL Marcha al vado TM Marca de la cinta
NL Uncanueva
LF Alimentación de linea (FE) ESC Escape LF Alimentación en linea PRE Prefijo ce Control de] cursor
VT Tabulación venical (FE) FS Separador de archivo (IS) RS Alto de la lectora EOT Fin de la transmisión
FF Alimentación de forma (FE) GS Separador de grupo (IS)
CR Retorno de la carga (FE) RS Separador de regiatro (IS) Por lo que, por ejemplo, el código A es 11000001. y el código para un espacio en
so Salida T.JS Separador de unidad (IS)
blanco (ll) es 01000000.
SI Entrada DEL Rctardot d o
·_:.;V Y.X~.
,. '
...... ,.;:-
- '. ~~~·-' ~-. .
El~ 4 álgebra booleana* es un .-:,.,.c.~....lcÚlo de \'.áriables ~inariu. Sus_oj>eraciones y las
, 'l. . •. •
-~ . ::. ... '
. . -· ,, ....
reglas q~e las gobieman .sirv.enj:>ara manéjar estas variables de la misma ·. manera
, ,. .
,,,_. queº el álgebra "ordinaria" se usa· para operar' con númeroS reales con sú conjunto
'
----- ;·-------·-
? . '. (: '·'.' infinito de valores.
El uso extenso del ügebra booleana en la computación proviene del hecho de que
la información transmitida en los circuitos de la computadora y almaéenada en
ellos es :representada ·por dos valores. Estos valores se pueden ,interpretar .de varias
formas: como l y .{), o verdadero y falso, o posiciones de encendido y apagado . .
'·· Se presentan aquí tres interpretaciones· bisicas del álgebra booleana, con una
-¡ ¡fj ; atención ·especial de su aplicación en el diseño de la lógica de la computadora.
(a) Una proposición, esto es, u"na instrucción que puede ser verdadera o falsa ;
por ejemplo, "la cubiena de este libro es azi'il" o "este libro tiene 300 pági-
nas" son proposiciones.
(b) Una variable de derivación, una señal en un circuito digital cuyos valores
son interpretados como O o l; en general la emisión de un bit o de una señal
de interrupción.
• Propuesta por el matemitico inglb George Boole a mediados del siglo XIX.
270 Conceptos de los sistemas de cómputo Algebra booleana y lógica de computadora 271
TABLA C-1. Funciones esenciales de las variables lógicas. TABLA C-2. Propiedades esenciales del llgebra booleana.
Indicando la proposición "la cubiena de este libro es azul" como'X , y la proposición "este A. ALBGEBRA DE PROPOSICION
libro tiene !lOO piginas" como Y, la proposición "este libro tiene !lOO piginas y una cubiena
Las variables lógicas se usan para representar proÍ>osiciones encontradas en el dise-
azul" es ci_ena sólo si ambas X y Y son verdaderas; por el contrario, para que la proposición
"este libro tiene !lOO piginas o una cubiena azul" sea verdadera, basta que X o Y sean verda-
ño del algoritmo. Ambos lenguajes de programación, el de nivel alto y el de nivel
deras. bajo, ofrecen operaciones lógicas que manejan tales variables.
Los ejemplos siguientes muestran dos aplicaciones caracteristicas de las variables
La función O EXCLUSIVA de las variables, es verdadera cuando los valores de y expresiones lógicas.· (Usaremos, no , y , o para indicar las funciones,)
las variables difieren. La función NO Y se puede interpretar cómo .Y seguida por
NO ; NO O, como O seguida por NO. ·
Usando variables y operadores booleanos, se pueden formar e;¡¡:presiones boo- EJEMPLO C-2
leanas. Estas expresan proposiciones o condiciones lógicas més complejas.
(a) El uso de las expresiones lógicas para controlar el flujo de la ejecución del programa
Se aplica el siguiente orden de precedencia (a menos que sea modificado con pa- se ejemplifica por la instrucción siguiente:
réntesis), comenzando con el més alto.
si AGE > SO y PAY > SOO o AGE > SS enton~
(1) NO
(2) Y, NO Y
(!l) O, O, EXCLUSIVO, NO O
ademis
•LOS DATOS REPRESENTAN A 1000 EMPLEADOS, ALGUNOS DE LOS CUALES EJEMPLO C-!J
• ESTAN SUSCRITOS AL ORGANO DE LA COMPA~IA La compucna O se puede considerar como una conexión en paralelo de interruptores [véase la
• SEXO - 1 PARA MUJERES , O PARA HOMBRES Fig. C· l(a)) , mientras que la com pucna Y correiponde a una conexión en serie (véase la Fig.
• SUSCRITOS -1 PARA.SUSCRIPTORES C· l (b)). .- . . ,,
•SELECCIONADOS - 1 PARA EMPLEADOS SELECTOS
·-· ·- -
Lógico · SEX(lOOO), SUBSCR(IOOO), SELECT(IOOO)
-e~
Entero AGE(lOOO), PAY(IOOO)
1-1;
mientras que 1 < 1000 haga
Fig. C-1. Acción de las .compucnas. . -
inicio
SELECT(I)- SUBSCR(I) y (SEX(I) y La representación estándar de las compuertas esti mostrada en la Fig. C-1. To-
PAY(I) > 500 ono SEX(I) y AGE(I) > 25); das las compuertas con excepción de ~O pueden tener mis de dos entrad as; el nú:·
1-1+1
mero actual de entradas, llamado akmentación, esti limitado por la coÍ_uideración
fin
de los circuitos electrónicos actuales.
I
Algebra booleana y lógica de computadora 275
274 Conceptos de los sistemas dé c6mputo
X
(2) Un procedimiento de optimización, basado en las propiedades del ilgebra
e
boole&;na; IC_usa para optimizar el diseño. El criterio de optimización de- y
pende de las limitaciones impuestas por la· électr6nica actual.
(S) El circuito 1C especifica.
Problema
Dilcñe un medio-sumador: un circuito que acepta como entradas 2 bits y procede a su suma y Los circuitos de derivación secuencial incluyen elementos de memoria, y su sali-
la almacena, ai es necesario. (Como circuito ae puede usar para slimar los bits menos significa- da en cualquier momento está detenninada no 5610 por las entradas presentes sino
tiVOI de doa númeroe.) tambim por los contenidos de la memoria, es decir, por las entradas anteriores.
-;~ ~, '· ) "!u La unidad de memoria básica es' un niultivibrador, capaz de almacenar un bit
Soluci6n . .. . . . . , . ., . , simple. Los contenidos de la memoria determinan el estado del circuito, ya que su
La tabla de verdad para los 2 bits de salida S (suma) y C (almacena) ie muestra abajo . "X y Y
reacción:(salidas) a entradas dadas depende de sus contenidos. Por tanto, los conte-
son los bits· de. entrada. · ·· " .. J¡' · ' ·"
'.;:· nidos de un multivibrador estiÍl referidos a una teoñá de derivación como una i:.oa-
X Y C S riable de estado.
Existen vanos diseños de multivibradores, todos ellos constan de dos compuertas
o. o o o con una retroalimentación. Los multivibradoi-es retienen su estado (O o 1) , recor-
o 1 o 1
1 o o 1 dándolo indefinidamente, hasta que' una señal de entraa cambie este estado.
1 1 1 o Por ejemplo, un multivibrador de disparo con su diagrama a bloques y su tabla
de transici6n, mostrando las relaciones de entrada/salida, se presenta en la Fig.
El circuito de optimh:ación esd. mis alll del alcance de este libro (este circuito no ae puede C-4. .' · . ~ ·· . ·
optiminr, de cualquier modo).
Para derivar la expresión lógica para el circuito directamente de la tabla de verdad, ae usa
el procedimiento siguiente. ESTADO ACTUAL Q ESTADO SIGÚIENTE
ENTRADA T ("ftlor almacenacló'') O'
Para cada bit de salida:
Considere solamente los renglones en donde la salida tiene el valor de 1; esta salida Q
o o º} nocamb.!_a
o 1 dccstado
T~()
(1) 1
scri 1 ai ocurriera cualquina (la compuerta O si esti presente mis de 1) de las com - o I} cambia
binaciones expresadas por estos renglones. O de estado
Para que suceda una combinación expresada por cualquier renglón, todas (com -
(2)
puerta Y) de estas entradas deben tener ·valores especificados; es decir, las entradas
cuyo valor es O ae tienen que invertir.
Fig. C-4. Disparador y su tabla de transición .
Este procedimiento conduce a la as! llamada suma de productos, >cprcsentación de dos ni -
veles (Y-0) del circuito. · Observe que ambas variables de estado Q y su complemento Q. están dispuestas
En nuestro ejemplo,
como salidas.
La tabla de transición confirma que el disparador puede ICTVir como una celda
S•:j(:Y+X~ de memoria ya que:
C•XY
(1) Cuando la entrada es O, el estado es mantenido ("recordado") .
(2) El estado puede cambiar presentando la entrada de ·1.
El circuito se especifica como ae muestra en la Fig. C-!1.
276 Conceptos de les sistemas de cómputo
Ejemplos de los circuitos de derivación secuencial son los registros, los contado-
res y la propia CPU.
En general, un circuito de derivación secuencial puede ser representado como en
la Fig. C-5.
/
.. variables de ·e stado _
almacenaclu en lÓO multivibradorcs .,
::..._ .,. •· •,~ ·~o:. · .. ; i } · ·~ ..... r Abaco, 18
Fig. C-5. Representación general de un circuito de derivación secuencial. aecuencial claaificado, !l!4, 225·2l!6
- .. • • .. :· ·~ ~ : ' t. . . - ., . : ... ~· Aarrco de redondco-ftnal, l!6 1
Acceso sistema (en operación de sistemas) , l?J7
• ·: ":li. . ~; ·~'"! ·-; .,, 0
..; l . : . •. ·~ j .r. . 'f''\ (~ t,;_ ... ' • - " .
sistema administrativo, 205, 232
La implantación fisica de la lógica computacional cambia con el progreso tecno- del parimetro, 83, 87, 95.97
luo, l?l?l?-!l!5
lógico. úna compuena ttpica tiene'ce~ca de una d~cna.de componentes el~troni· directo a la memoria (DMA), 193
Arbol, 125·ll?7, l?31 '
directo al archivo, -l!l!5, l!25
cos, -c~mo transistores, -di~: rcsist~clas, ~te. EÍl la actualidad, la ~ayor parte de m&odos de, !l!l·2l!5, 255
binario, 126
los circuitos lógicos se fabrican.en la forma de ciTcuitos integT!ldos combinando, en aeparado, 145
oecuencial al archivo, l?l?3, l!l!4
el c_; de la,int~aci6n en ~~a grande,n;b .d e 100 ~mp~enas (y en ~casioncs tiempos de, 185, 188, 190
de aobrdlujo, l?26
prima,. 2l?6
cientos de mil~) en una pblea·de_ scnriconductor ·de, 0.15 J!lg2• ·
rA-i
Aeepror, l?50
Argumento, véase Parimerro
Ada (de Augusta Ada Lady Lovelaee), 14l?
. !'.:.'-l. 1 { . .il. . ..1 . fi¡ Afirmativa, 42
Aritm&ica
binaria, l?59·264
f~ Ajedrez por computadora, ll?S
SÚGERE-N CIAS PARA LECTURAS MAS PROFUNDAS ·L Alfabeto de lenguaje formal , l?47
complementaria, l?61
Algebra del modo mixto, 112-lU
booleana, 53, l?70-273 Arquitcaura de la computadora, 151
Dietmeyer, D. L.: Logic Duign of Digital Systems, 2nd ed., Allyn and Bacon, Bos-
de proposición, 272 Arreglo, 40, 45·44, 109, 116, 118-119, 139
ton, 1978. -. :. . . ·-. .. ~ .:_ dimensiones, 43
ALGOL, 45, 83, 85, ·87, 92, 94-96. 100, 102,
Konavi, Z.: Swftching ánd Finitt 'tfutomata Theory, 2nd ed., McGraw-Hill, New elemento (variable suscritas). 43
138, 141, l?SO
York, 1978. Algoritmo, l?l?, 29, 51-35, 115, 239 representación de punto. 110, 112, l!S4, 260-
261
de Euclides, 67-70, 104
de Markov, 242 •uscritoc (Indices), 43
Alimentación, 274 ASCII, 114, 267-268
Amoniguador, l?06, l?l?2·l?l?3 Atanuoff,John V., 19
Atributo, 11 9, 220, 252
AnAliais linttctico, 145·146
Autómatas, 242, 250
Anillo, véase lista lineal-circular
APL, 188, 139, 211
Apoyo, l?34
Babbage, Charles, 18, 14l?
Archivo, l?l , 116, 121, 138, 203, l?l7, 2l?O
Banco de datos, l?03, 220, !l!8-234
acceso, l?l, l?l?3, 2l?5
~ aleatorio (dircao), 225, 226-!l!9
administrador (DBA), 25-4 ·"
sistema administrativo (D.llMS), 205, 217,
dircao (aleatorio), l?l?4, l?l?6·l?l?8
2l!O
·; .., ;_ -: ~sr . ,~. ¡ dircaorio, l?l 7
r.: Bandera, 160, 18l?
fraccionado, l?25
'\ Bue, véase Ra!z
invertido, l?l?9
BASIC, 158, 139, 21J "
maestro, 105, 208·209
- • ~I ~.¡,. Bit."24, 40, 110, 115-114, 116, 151, 185, l?S4
i:~ organización, l?l?3-l?28
de paridad , 191 · '
J - reorganización, l?l?6
de signo, l?61
aecuencial, l?24
llneu de orientación, 186
Indice 279
278 Jndir:e comunes (globales), SS, 95, 98-99 Enlace, véase Indicador
de operación, 15S, 155, 181 diccionario, 254 Enlazador (editor de enlace), 174-1 76, 200
Bloque de orientación triple, 146, 147 doble precisión, 11 O, 113, 265 Ensamblador, 114, 155, 172-176
de contexto (estado), 212 relocalizable, 147 , 172, 174 empacados, 116, 121 Entidad, 220
en archivo secundario. 188. 221-222 entero, 110-111 Entradas
Colas. 12S-ll!.5
en lenguajes de programación, 99 estructuras, 22, 29, 40, 44, 109, 115-117 de programa, 54, SS, S9
Colector, 189, 194
lenguajes estructurados, 98-100 globales, SS, 95, 98-99 de trabajo remoto (RJE), 209
Colisión, 227
transferencia de, 161 Columna de orden mayor, 118 lenguaje de descripción, 25! salida
Boole, George. 270 Comentarios, en programación, 49 lenguaje de manipulación, !54 dispositivos de, 16, 25, 25, 45·# , 191 -192
Bucle Compilador, 145-148, 250, 251 locales, 86, 98 sistema de control (lOCS), 216-217
clasificado, véase Instrucción de bucle Complejidad de la computación , 242 lógico, (booleano), 41, l!S, 270, 272 véase también, Terminal
de conteo véase Bucle-clasificado n<imericos, 40, 109-113, 255-266 Enumerabilidad, 237
Complemento
de espera. l 9S a los 1, 261 -262 véase también .Representación de punto Escritura en la memoria , 24, 48, 185-186
Byte. 114, 152, 185 a los 2, 261 , 265-265 fijo; Representación de punto flotante Espacio
Compuerta, 275-274 partida (datos simples), 59, 40, 41 , 109; disponible, 118
Computabilidad, 238, 242-24! véase también Campo-registro en blanco, ll4 , 130, 131
Cabeia, lttr/ escribir. 188. 189 reales, 40, 111 -112, 264 Esquema, 219, 2SS
Computación personal. 20. 159
Cllculo Lambda, 242 simples, véase Datos-partida conceptual, 220, 2SS
Computadora(•)
Cambio. 215 byte·orientable, 152, 154 tipo. 40-45, 45, 109, 141 externo (subesquema) , 220, 235
Caml>ios, 158 ciencia de la. IS5-136 véase taml>ihi, Carlcter· llneu interno, 2SS
Campo de estructura principal. 19, 184, 194 vigilantes (remolque), 74 Estandarización; lenguaje de programación ,
instrucción, 145 Declaración, 40, 44-45, 109 140, 141
registro. 105, 119, 120, 220; véase también grificas, 21, 192
Dentro/ fuera, véase Cambio Exponente (caracterlstica), 111, 115-114, 265
lógica, 273-277
Uso de datos-partida Depurador, 200 Expresión, 47 ,, ·
sistema de, 16, 135-lll6, 179
Canal. 195, 206 tipos de, descripción. 15, 16, 19 Derivación, 248 aritmética, 47
Carácter. 115, 152 Cómputo interactivo, 158. 207 de mensaje, 197 linea de manipulación, 47
códigos. 114, 129. 150. 155, 154. 240, en redes de comput adoras, 197 lógica (booleana), 47, 51-55, 272
Comunicación. comput adora de, 196-198
267 -269 Descodificador, en CPU, 180-181 modo mixto, 47
Concatenación, lllO
Caracteres Concurrencia-principio de corriente, 186 Desplazamiento, 171
alfanuméricos, 41 Condición en instrucciones, 51-55 Determinable, 259
conjuntos de, 114. 192 Diagrama Fase
Consola, operador de, 192, 204
Caracterlstica (exponente), 111. 115. 265 de estructura , 105, 107 de ejecución , 181
Constante, 42, 46
Carga PERT, 128 de traer, 181
Consulta, 229 del compilad or, 144-145
de programación inicial (lPL), 204 Digráfica, 128
lenguaje, 254
dispositivos acoplados, 187 Disco diferida (indirecta), 18S
Contador de localización, l 7S
Cargador, 147, 175, 200, 204 flotante , 190 indirecta (diferida), 183
Contenido, Indice, 229-250
de enlace, 175 magnético, véase Memoria de disco Fijo, 183
Contexto
de rclocafüación, 175, 214 Diseño de arriba hacia abajo, 57, 67-72, 105 Flotante, representación de punto, 111 , 113,
de lenguajes libres, 250-252
Carta de flujo. 29 , 54, 55-S7 , 61, 91 véase también Refinamiento de paso directo 253, 264-266
de lenguajes sensitivos, 250
Cartucho. cinta, 191 Disparo, 276 Flujo de cont rol. 35, 49
Control Forma Backus-Naur , 158, 250
Casete , cinta, 191 de alambrádo, 18S Dispositivos
Ciclo de evasión, l 9S de archivo de acceso directo (DASD), 187 FORTRAN, 20, 40, 45, 87, 92, 93. 9-4 , 98 , 99,
de procesos. 20, 21 , 212
Cilindro. 190 de copia fuerte, 192 101, 105, 116, 118, 138, 141 , 254
Controlador en CPU, 180-181. IBS
Circuito, División Fragmentación (o al aiar), 227-228
Corrida de producción, 219
de derivación, 275-276 en bloques, 221 -225 Función
CSMP. 158, 14ll
combinatorio, 274-275 factor, 222 en lógica m atemltica , 238
Cuanto, 207 en programación, 83, 90-92
secuencial, 276 entera, 47, 110
Cubo, 228 intrlruec:a (interconstruido), 92, 131
integrado. 277 DMA (acceso directo a la memoria), 195
Clasificación, 70, 12S, 242 Documentación de programas, 22, 67 No O, 271
de orden ascendente, 70 Chomslr.y, Noam, 249
' No Y, 271
de la burbuja, 70· n EBCDIC, 114, 267, 269 O exclusiva, 271
Clave, 78, 105, 119, 120, 122, 220, 224, 227, Eclr.ert, J. Prcsper, 19
229 DASD, véase Dispositivos de archivo de acceso Editor, 20S, 211
secundaria. 229 directo EDSAC, 19 Gastos generales, sistema, 206
·COBOL, 45 , 87, 90, 92, 9S, 100, 101, ll!.O, Datos, 15, 40, 109-152, 214 Embobinado, 215-21 7 Generaciones de computadoras, 19
lll8. 1!9-140. 254 adquisición, 212 Empuje (pila), 12-4 Gbdel, Kurt, 239
Código booleanos (lógicos). 41. 270, 272 ENIAC, 19 GPSS , 158, 145
absoluto, 175 complejo, 110, 115
de condición , 160
: l'¿,_,
Indice 281
280 Indice
Invocación, véase Llamada Macro, 176-177 supervisor, 216; véase ttimbihl Programa
Gráfica (red; malla), 127. 251 ltcracción, 62, 102; viaJe también Instrucción expansión, 176 principal; subprogratna
dirigida (diagrimatica), 128 de bucle Macroensamblador, 176 Monitor de la telecomunicación, 205
Gramática, 248, 250 Malla, wase Grifica MOS, memoria, 187
Mantisa, 111 , 265 Multiprocesador, 194-196
Jacquard, Joseph. 18 Máquina Multivibrador, 152, 160, 185, 276
Hardware, 16, SI
J erarqula Chomslr.y. 246 de Turing, 258, 242-246
Hollerith, Herman, ·18
univenal de Turing, 246 , Nivel, 66, 78, 81, 115, 155
Labor, 212-215 - Marlr. 1, 19 ., no, 55-54, 271
Identificador. 66, 84, 140, 144 lenguaje de control, 208 Mauchly, John W., 19 Nodo
Igualación de modelos. 151, 145 Lectora Mtdio·sumador, 245 de estructura de datos, 120
lmprnor de tarjetas/perforada, 25, 192 Memoria en red de computadora, 196-197
caricter, 192 y/o perforadora de cinta de papel. 192 adminiltrativa (por siltemas de operación). Normalizaci6n, l ll , 265
de no impacto, 192 Lectura 214-216' Notación
linea, 25, 192 de memoria, 24, 48, 185-187 arc:hi\'O, (almadn), 15, 25, 24, 185·192 BNF (Baclr.us·Naur fonna), 158
Indicador, 41, 115, 121-122, 228 sólo de la mctn0ria, 185 de archivol ( arc:hi\'O mui\'O), 190 infijo, 146
Indice del archivo secuencial clasificado. 225 ~bni1, Gottfried. 18 principal, 24,.121, 185-187 sufijo, 146
Información, 15 Lenguajes secundario (auxiliar), 24, 121 , 185, 184, Núcleo, magn&ico, 187
Infraflujo (underflow), 112, 265 de ensamble, 17. 155, 144, 151 -172 187-191 Numeración GOdcl, 2!18-240, 241
Iniciación de labOr, 215 de máquinas, ·16, 21, 25, !11, 1!15, 155-156 bipolar, 187 Números naturales, 259
Instrucción, 15, 16, 25-24, 51, 55, 151 de programación de alto nivel. 17, 20, 29. de acceso aleatorio (RAM). 185 -187
case (elección múltiple). 51, 75, 76· 77 52, 40, 45, 49, 80-81, 99, 109, 151, 155. de burbuja magn&ica, 187
ciclo de ejecución, 181-182 157-145, 155, 176, 249 de capacidad, 186, 187 o, 55-54, 271
compuesta (init:io·fin), 51, 65-65 de programación declarativos, 142 de cinta magn&ica, 187-188, 191, 222 Oblea, 19, 277
conjunto de, 18, 151 , 156 de simulación, 158, 145-144 de control. 185 Operación, véase Instrucción
contador, 180-184 formales, 246-250 de descarga, 200, 254 Operaciones 16gicas (operadores), 24 , 55-54,
de asignación, 46-47, 65 interpretados. 159, 141, 142. 149 de dioco, 187-191. 215 , 215, 219 158, 271 •
de bucle, 51, 62-65, 66 naturales, 17, 21, 246 cabeza fija, 190 Operadores, .¡7
clasificado (de conteo). 51, 73, 75, 76 regulares, 250 cabeza móvil, 189-191 aritm&ico, 55
mientras que-haga, 51, 62-69 Ley de Morgan, 272 de núcleo magn&ico, 185-186 binario. 47
repita-hasta que, 51, 75-75 Lineas. 41, 109, ll9. 129-152 de registro de datos, 180-182, 187 16gico (booleano), 47, 55-54
de decisión (si·entonces-adem4s), 51, 56-60, en lenguajes formales, 248 de registro orientable. 180-182, 186 relativo, 53
66 en programación, wase Lineas de carácter de retención, 184, 186 unario, 47
de entrada, 45-46, 64 LISP, 158, 141 de aemiconductor, 185-187 Operando, 25 , .¡7
de salida, 45·46, 65 Lista de tambor, 188-189, 215 Optimizaci6n de c6digo. 147
ejecutable, 59 FIFO. véase Colu de ubicación (por traductor), 44. 148 Orden de columna mayor, 118
no ejecutable, 40. 44 lineal, 121-125, 141 instrucción de referencia, 156 Ordenador. 250-251
referencia de memoria, 156 circular (anillo), 122, 250 jcrarqula de 184 árbol, 251
registro a registro . 156 doble enlace, 125 lectura de, 186 Organización
registro de, 180-192 enlace. 121 principal, 24, U!l, 185-187 de la matriz de la memoria, 185-187
ve a, 51, 66-67 enlace múltiple. 250-251 vinual, 184, 215-216 flsica de datos, 116, 220-221
Integración en escala amplia (L.SI), 19 secuencial (tabla), 121-122;viaJe también volátil , 187 · lógica de datoo, 116, 220-221
Inteligencia anifical, 21 , 141 Lista lineal Metalenguaje, 247, 250 Orientaci6n, 24, 152, 185
Interfase Literal. 166 M~odo de división residuo, 227 abicna. 228
entre módulos, 87, 107 Lote. 204 Microcomputadora, 20, 142, 172, 184, 194 .absoluta, 154, 168
tabla, 105, 108 iniciofin (instrucción compuesra), 51. Microprocesador. 19, 184 aritm&ica, 16?
Intbprctes, 148-149 65-65 Microprogramación, 185 clasificada, 168-169, 182
Interruptor, 185, 195 procesamiento de. 206, 209-210, 212-215, Mientras que baga, véase Instrucción de bucle del operando, 154. 167-171, 182·185
controlador, 185 225 Minicomputadora, 19, 194, 196, 205 efectiva, 168, 170, 171
entrada/salida, 195 Lovelacc Augusta Ada, 142 MIPS, 182 espacio, 152, 171
Intervalo entre registro, 222 Mnem6dco, c6d;,o de opcraci6n, 155 indirecta, 170, 171, 185
Investigación Llamada (invocación). 85-85, 87-89. 91 Modem, 196 . inmediata, 167
ajuste por paso. 204 por nombre. 95 Modificadores de orientación, 167, 170 simbólica. 42
binaria, 78-80 por referencia, (dirccci6n), 95-94. 97 Modo del usuario, 216
de ingenierla, 78-80, 125 Pigina, 216 ..•·
por todas panes, 206 M6dulo
binaria, 78·80
aecuencial, 78· 79
por valor, 94-97 de cap. 175; ........,.,,.bilft C6dito Palabra
por valor-resultado, 94, 97 relocall&able clave, 144
secuencial , 78· 79
282 Indice Jndir.e 28;
en memoria, 24, 110, llS , 114, 116, 152, de una ronda, 207, 214 Relocalización , 175 de tiempo real, 20, 142, 208 , 212
185, 187 . 198 lenguajes. 17, 29 , 55, S9 Repetición, 101-105 en linea, 208-209 , 225, 226
linea, 186 modular (descomposición), 29, 67, 72, repita-hasta que, véase Instrucción de bucle SNOBOL, 151
longitud de , 152 105-108; vio.se tombiho Diseño arriba· Representación Sobrcflujo, en aritmética , 26 , 265
Paquete, 197 abajo de complemento , 154, 260-264 Software, 17, 199-217
de disco, 190 mG!tiple, 205."206,. 215-217 de la magnitud con signo, 255, 260 aplicación, 17 , 199
derivación, 197 mezcla de, 205 , !U-214 enlazada, 117, 127· 128 sistemas, 16 , 199-205
Parimetro (argumento), 84 unitaria, 205; vio.se tambiln Lenguajes de secuencial, 117, 127, 128, 129 Subcsqucma (esquema externo), 220, !SS
actual, 84-86 , 90 , 92 cnaamble; Lenguajes de programaci6n Responsable, 96 Subllnea , ISO
de nivel alto Retardo de rotación (tiempo latente). 189, 190 Subprograma (procedimiento) , 29 , 85-84
entrada, 84
formal. 84-86, 91 , 92 Programaa de utilcrla, 200 Retomo del subprograma, 85 , 89 interno, 98; véase también Módillo
salida, 84 Proposición, véase Expresión lógica Reubicación, 215 Subrutina, 85, 84-90, 178
Pascal Protección, 214, 216, 254 dinimica, 215
Blaisc, 18 Protocolo. 197 estltica, 215
lenguaje de programación, 57, llO, 158, 141 Pulido inverso, 146 Rotación (girar), 158 Tabla, 120
RPG, !SS, 142 de decisión, 56 , 60-62
Puos, 204
del ensamblador, 172 Rutinas de soporte del tiempo de operación, de slmbolos, 144 , 175-174
Ralz 148 de transición, 276
Pcrif&icoo, 187; Wlue tambiht Dilpolitmi. de base, 111, 255 de la verdad, 54 , 270-271 , 274-275
entrada/ salida; Memoria convcnión, 254-259 Tambor magnético, véase Memoria de tambor
Pila, 102, 105, 124, 161 punto, lll -112, 254 Salidas de programa , 54 . 40 Tarea (proccao) , 212-215
Pista, 188-191 sistemu de n6meroo, 15S-154, 255-254, 258 Sector, 190 bloque de estado (contexto) , 212
PL/1, 45, 85, 90, 92, 95, 94, 97, 100, lOi, 120, Secuencia
de lrbol, 125 Teleimpresor, 192
158 Rango, 264 de comprobación, 114, ISO Tcoña
Pop (pila) , 124 Razón de transferencia, 187 inicio-fin, 51 , 65-65 de función repetitiva, 242
Portabilidad, 141 Rebasamiento en aritmwca, 110, 11i, 184 Secuencial, archivo de acceso, 187 , 191 de la computabilidad , 257
Potenciaa de" 2, 255 Segmento, 216 Terminal, 25, 192, 196-197, 207 , 209
Red
Precisión, lll-ll2, 265 computadora de, 196-198 Scmlntica, 246 de inteligencia, 191, 196
Prioridad, 207, 212 digital. 197 Separador, 145; WM• tambiln Ani!iais de pantalla, 26 , 192
Problema. cstrucura de datos, véa., Grlfica sintlctico alfanumérica, 192
de equivalencia, 242 Redes de cómpiuo jcrlrquico, 196 Sesión , tiempo compartido, 210 gráfica, 192
de oecilaci6n, 241 -242 Redondeo, 115 Scudocódigo. 29 , 54 , 51, 62, "67-72, 105 en el .punto de venta (POS), 210
Problema. sin aolución, 240-242 Referencia Scudoinstru~ción , 156, 162-163, 166, 170, 176 Tesis de Church, 242 , 246
Procedimiento, véase Subprograma de función , 90-92 Si·entonces-ademis (instrucción de decisión), Tiempo
Procesador frontal-final , 196 de vanguardia, 17S 51 , 56-59 , 65-66 compartido, 207 , 211
Proccaamiento externa, 174 Slmbolo de terminal , 248 cortado, 207
de datos de n~os. 208-209 Refinamiento de paso dilcrcto, 29, 51, 67, S!mbolos, 144 de b6squeda, 190
de la palabra (simb6lico; texto), U , 41, 109, 105; vlas• tambiln Dildlo de arriba Simple, nClmcro de precisión , ll l de ciclo
129-152, 158, 141 , 142 hacia abajo SIMSCRIPT, 158, 145 CPU , 182
distributivo, 196, 209-210; ....e tambiht Registro , 25 , 151, 156, 184, 186, 276 Simulación, computadora, 21, 115 memoria principal , 182, 185
Red, computadora base, 171 , 215 evento discreto, 145 de recorrido, 206 , 208
frente/ a tris, 207 cluificado , 169 variable continua, 145 de reloj, 182
1imbólico, véase Procesamiento de la palabra de activación, 101 Sintaxis, 246 de respuesta, 207 -208, 210-211
ProcelOI (tarcu), 212·21S de base, 171, 215 Sistema latente (retardo rotacional) , 189, 190
bloque (contexto) de estado, 212 !laico, Was• Bloque (en archivo secuencial) binario, 15.S, 255-254 Traductores, 17, 25 . 32 , 40 , 42 , 44 , 45, 92,
de coopcraci6n, 21 S lndi~ . 169 de ejecución, vio.se Sistema de operación 112, ll 7. 157. 155, 199-100,
Producción (regla de rccscritura), 248 instrucción, 180-182 de información administrativa (MIS), !l O 204 ; véa,.... también Ensamblador:
Programa, 15, SS, 54, 55 , 59, 40 propósito general, 152-212 de operación, 17 , 20, 200, 204-208 Compilador; Interprete
contador, 180-185 relocalizable, 214 de lotes, 205 Transacción , 225
fuente (c:6digo), 17, 144, 148 Regla de tiempo companido, 208 archivo, 105 , 208
independencia de datos, 254 de copia, 95 de programas, 85 , 105 sistema de procesamiento, véas~ Sistemas
objeto (código), 17 145, 147, 175, 204, 217 de reescritura (producción), 248 hexadecimal, 154, 254-255 , 258-259 en linea
principal, SS, 174-175 Rclaci6n, 52 octal, 254 , 258-259 Transferencia
unidad, 84, 175; ........ taml>iln Programa aaociativa, 229 supervisor, vlc&se Sistema de opcracil>n de control. 40, 159-161
objeto; Programa fuente Relaciones Sistemas incondicional (instrucci6n w a), 51,
de estructura, 51 , 80, 141 de red, 251 de colas, 145 66-67 , 77
de aiatemaa, 172 jedrquicaa; !U de posición, véas• Ralz-Siatemas de nClmcros electrónica de capitales (EFT), 210
284 ºI~dir,e
Traimenal (de lrbol), 126 ' ' ••· Variable, 4 l ·4S. 46 NOTAS
Transverso preponderado, 127 de derivación, 270
Traslape, CPU ·l/O, 205-206, 216 de estado, 276 " • ·
Truncamiento, 115 iniciación de, 110
Turing. Alan, 19, 242 nombre, 42 , 45-46, 66, 81
ruta de, 98·99 · .•·
Ultima entrada primera salida (LIFO; pila):' suacrita (elemento de arttglo). 6S
10%, 105, 1!5,' 161
Unidad Volumen, 189
de control, 25 , 179-185 Von Neumann, John, 19
de procesamiento central (CPU) . 16, 19,
25·24, 179-18S;· 194-196, 211-215 WATFIV, 141
-16gica-aritmáica (ALU), 25, 152, 179, 184 WATFOR, 141
Unión, 215
UNJVAC 1, 19 y, 55-54, 271 ft: . ..1~l
¡ :.: • ~.
');· ~~ .. '
. ~ .,
~"
,¡:~
'i f
1(
,7
~
~--·
~.~ .>'
¡·~ ....
.,,