Está en la página 1de 131

~~ -110 ~

C.L. TruiiUO
A mi hija Victoria 1
su iniciacin a los estudi,
escolares de Informtica

METODOLOGA DE LA PROGRAMACiN (
Diagramas de flujo, algoritmos y programacin estructurada

Prohibida la reproduccin total o parcial de esta obra,

por cualquier medio, sin autorizacin escrita del editor.

DERECHOS RESERVADOS 1988, respecto a la primera edicin en espaol por


McGRAW-HILL/INTERAMERICANA [)f MEXICO, S.A. DE C.V.
Atlacomulco 499-501, Frace. Industrial San Andrs Atoto
53500. Naucalpan de Jurez, Edo. de Mxico
Miembro de le Cmara Nacional de la Industria Editorial, Reg. Nm. 1890

ISBN 968-4221924
(
5678901234 CAL87 9123456780
Impreso en Mxico Printed in Mexico
Esta obra se termin de
imprimir en marzo de 1990
en Editorial Calypso, SA
Oculistas No. 43
Col. Sifn
Delegacin Iztapalapa
09400 Mxico, D.F.
Se tiraron 1000 ejemplares
f/
'f
{

I
I

CONTENIDO

PROLOGO............................................. xi

1. ALGORITMOS Y PROGRAMAS ...... :....................... 1


1.1. Concepto y descripcin de un proceso 1
1.2. Algoritmos "......... .2
1.2.1. Caractersticas de los algoritmos. . . . . . . . . . .. . . . . . . . . . . . 3
1.3. Datos, tipos de datos y operaciones primitivas 3
1.3.1. Datos numricos 4
1.3.2. Datos no numricos 5
1.4. Constantes, variables y expresiones . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.4.1. Constantes 6
1.4.2. Variables........................................... 7
1.4.3. Expresiones ;.................... 7
1.5. Los programas '. . . . . . . . . . . . . .. . . 9

2. DIAGRAMAS DE FLUJO .. . .. .. .. .. .. .. .. .. .. .. . . .. .. . .. .. . .. 11
2.1. Introduccin ,. 'l' 11
2.2. Diagramas de flujo \.:....... 14
2.3. Smbolos utilizados en los diagramas :......... 15
2.3.1. Diagramas de flujo de sistema 15
2.3.2. Diagramas de flujo de detalles/ordinogramas . . . . . . . . . . . . 20
2.3.3. Plantillas y hojas de codificacin 29
2.4. Diagramas de flujo estructurados. . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
vii
PROLOGO xlii
xii PROLOGO
al profesor, seguir el mtodo pedaggico que considere ms oportuno -algunos
ya se ha comentado, a los estudiantes o estudiosos que comienzan la programa- compaeros del Area de Lenguajes de la Facultad, me han sugerido que segn
cin. Persigue como objetivo fundamental el aprendizaje en las tcnicas de el tipo de alumnos, conocimientos o lenguaje prximo a estudiar, podra ser
programacin clsicas y modernas; pretende servir a personas sin conocimientos ms provechoso no seguir en algunos puntos el contenido por captulos del libro;
previos de programacin o que bien poseyendo conocimientos de algn lenguaje evidentemente estoy de acuerdo con ellos, siempre que se trate de alumnos
deseen afianzarlos con tcnicas de programacin y diferencias esenciales con o lectores que ya posean conocimientos de algn lenguaje o de programacin
otros lenguajes. en s.
El libro est concebido para el estudio independientemente de cualquier El tiempo estimado de duracin para un mximo aprovechamiento en cursos
lenguaje de programacin; sin embargo, nuestra experiencia nos dice que el escolares sera un cuatrimestre. En los casos de cursos intensivos, pensamos
alumno/lector se siente ms motivado si se le muestran las tcnicas bsicas y podra impartirse en perodos de 20 30 horas lectivas, siempre que se iniciase
sus herramientas equivalentes en lenguajes de alto nivel, de modo simultneo. inmediatamente despus del estudio del lenguaje.
Esa es la razn por la cual, a lo largo del libro, se explican las estructuras El Captulo 1 introduce al lector en el concepto de algoritmos y programas,
fundamentales junto con su codificacin en los lenguajes de programacin ms resaltando los trminos elementales de accin, proceso, datos y expresiones.
populares: BASIC, Pascal y COBOL. El Captulo 2 se dedica a las herramientas clsicas de programacin: diagra-
Esta obra sigue el programa oficial de la asignatura "Metodologa de la Pro- mas de flujo, pseudocdigos y diagramas N-S, dedicando especial atencin a los
gramacin" de los Cursos de Informtica de la Facultad de Ciencias Polticas y diagramas de flujo, herramienta que todos los estudiantes hemos estudiado y uti-
Sociologa "Len XIII" de la UPS (Universidad Pontificia de Salamanca), pero lizado.
creemos ser vlida para cualquier curso de introduccin a la programacin en As como los Captulos 1 y 2 son introductorios y sus conceptos bsicos se
nivel bachiller, formacin profesional, universitario o simplemente cursos de repetirn y ampliarn en el resto de la obra, el Captulo 3 describe la estructura
formacin, siempre que se tomen de su contenido las partes que ms puedan general de un programa, y con el Captulo 4 se comienza, en realidad, a profundi-
afectar al nivel educativo del alumno. Esta consideracin la realizamos en base zar en la programacin. Los conceptos de programa, lenguajes de programacin:
a su contenido, dado que se parte de conceptos elementales hasta llegar a los alto nivel/bajo nivel, compiladores/intrpretes, instrucciones, operadores, tipos.
temas fundamentles de la programacin estructurada y modular, base de los de programa, etc., se describen en este captulo.
lenguajes de programacin clsicos y modernos. Conceptos como diagramas de El Captulo 4 se dedica a fijar las ideas fundamentales de las tcnicas de
flujo, algoritmos, estructuras de datos, tablas de decisin y las mencionadas programacin, volcando todo lo aprendido en los Captulos 1 a 3. Las tcnicas
tcnicas de programacin estructurada y modular constituyen el soporte sobre esenciales de bucles, iteraciones, contadores, interruptores, totalizadores, bifur-
el que se asienta el libro. caciones, subrutinas, subprogramas, funciones, procedimientos... se analizan
Niklaus Wirth, padre del lenguaje Pascal, titul a una de sus obras ms con detalle y gran nmero de ejemplos y aplicaciones. Basado en el teorema de
famosas -por otra parte, imprescindible como texto u obra de consulta en la estructura de Jacopini, se establecen las estructuras bsicas: secuencial, selecti-
cualquier nivel de pro'gramacin, esencialmente universitario- Algoritmos va, iterativa junto con los pseudocdigos en ingls y espaol. El lector aprender
+ Estructuras de datos = Programas (ttulo de la traduccin espaola), tal vez, las estructuras fundamentales IF-THEN-ELSE-ENDIF, DOWHILE, DOUN-
pensamos, querindonos indicar a sus lectores y alumnos, la importancia de los TIL (o sus equivalentes WHILE, REPEAT, UNTIL), CASE, etc.
conceptos algoritmo y estructura de datos, sin cuya existencia sera imposible El Captulo 5, tras el estudio de diagramas de flujo y algoritmos, se dedica
construir un programa. Por ello, siguiendo las directrices del profesor Wirth, a la estructura de datos, parte bsica en el tratamiento de la informacin: listas,
hemos concebido la obra pensando en algoritmos y estructuras de datos junto tablas, matrices, pilas, colas, rboles, etc.
con su soporte en pseudocdigo, pero, sin olvidar las tcnicas clsicas como son El Captulo 6 estudia las Tablas de Decisin, herramienta clsica en progra-
los diagramas de flujo y tablas de decisin, a las que se le han dedicado captulos macin, que si bien en algunos campos puede haber perdido influencia, sigue
completos que facilitan su comprensin. siendo una herramienta vlida sobre todo en la fase de definicin y anlisis del
problema y como paso previo a la codificacin del programa.
El Captulo 7 recoge las nociones de programacin estructurada y modular
CONTENIDO que si bien los conceptos elementales ya han sido tratados en los captulos
anteriores, en ste se recogern las reglas especficas para la construccin de
La obra est estructurada en siete captulos, que siguen un nivel creciente programas estructurados y modularizados que permitirn una fcil puesta a
de dificultad, pero utilizando la tcnica pedaggica de repeticin de los conceptos punto y sobre todo un mantenimiento eficaz durante la vida til de dichos pro-
fundamentales a lo largo de todo el texto, de modo que se puedan asimilar en gramas.
el tiempo ms breve posible, a la par que permitir el estudio de cualquier captulo
sin necesidad estricta de lectura del captulo anterior y as facititar, especialmente
-.' .,
xiv PROLOGO

AGRADECIMIENTOS
Muchas personas me han alentado a escribir esta obra y citarlas a todas me -;~
llevara con toda seguridad a un olvido imperdonable. Sin embargo, es justo
reconocer el apoyo y aliento que me han prestado todos mis compaeros del
Area de Lenguajes de la Facultad de Ciencias Polticas y Sociologa "Len XIII"
de Madrid, junto con sus crticas y consejos. Aunque como antes dije la lista
de agradecimientos sera larga y no querra arriesgarme a olvidos que seran para
m muy lamentables, quiero hacer una excepcin con tres compaeros que han
ledo toda la obra, me han corregido erorres y erratas y me han dado sabios
consejos. Son los profesores del Area de Lenguajes: Hercleo Hurtado Muoz, CAPITULO 1
Juan Corrochano del Pino y Juan Martnez Pirla.
Deseo expresar mi reconocimiento a los rganos institucionales de la Facul-
tad que apoyaron desde su concepcin la obra y principalmente la asignatura:
Ordenacin, Academia, Gerencia y Jefatura de Estudios y cmo no la ya mencio-
ALGORITMOS Y
nada Area de Lenguajes,.que, adems, pondr en marcha la obra y confio
criticar constructivamente la obra para mayor beneficio de los alumnos.
PROGRAMAS
EPILOGO
El objetivo fundamental de la obra es facilitar la introduccin a la programa- 1.1. CONCEPTO Y DESCRIPCION DE UN PROCESO
cin y a sus tcnicas a los alumnos y lectores que sigan y me honren con su
lectura; si lo conseguimos -al menos en alguna medida- las numerosas horas Una accin es un suceso o acontecimiento producido por un actor (ejecutan-
de estudio y trabajo a lo largo de todo el verano del 86 y el comienzo del curso te). Tiene la caracterstica de una duracin limitada y produce un resultado bien
escolar 86/87 estarn sobradamente compensadas. definido y previsto.
El autor. El tener una duracin limitada en el tiempo implica la existencia de un
Madrid, noviembre de 1986. instante inicial de la accin (t) y un instante final (t). Para poder reconocer el
resultado del sistema debe estar provisto de indicadores que tomen valores
diferentes. El valor de estos indicadores se denomina iriformacin. El conjunto
de los valores de los distintos indicadores en un instante dado (t) del desarrollO
del acontecimiento se denomina estado en el instante t del sistema observado.
El resultado es el estado del sistema en el instante (n' El estado del sistema ert
t o define los datos de la accin.
.
,
Proceso es una accin que se puede descomponer en otras ms simples, o
tambin conjunto de fenmenos organizados en el tiempo y concebidos como
activos. Se puede ~nsiderar un proceso como un conjunto de acciones elementa-
les que forman un acontecimiento. Procesador es el elemento capaz de ejecutar
un determinado proceso de trabajo.
Los procesos pueden ser: secuenciales y paralelos.
Un proceso es secuencial si una accin del mismo no puede empezar antes
que la accin en curso est completamente terminada; en otras palabras: dos
acciones no se ejecutan simultneamente, sino en un orden secuencial.
Un proceso es paralelo si se ejecutan simultneamente dos o ms acciones.
1
2 METODOLOGIA DE LA PROGRAMACION ALGRITMOS y PROGRAMAS 3

A lo largo del libro slo trataremos los procesos secuenciales que en un instante ciones y definiciones (PASCAL. User Manual And Report. Springer-Verlang.
dado tan solo pueden ejecutar una nica accin. New York Inc., 1975).
Un ejemplo tpico de proceso es: Los programas constan de una serie de sentencias (lneas de informacin
Un cocinero elabora un plato de cocina (por ejemplo, un estofado de carne con unas determinadas reglas de sintaxis). Estas partes elementales de un progra-
para 6 personas): ma que son las sentencias se componen a su vez de instrucciones que son las
Las acciones a seguir son: calentar el aceite, frer la carne, poner condimen- acciones concretas que debe realizar la mquina. Con frecuencia las palabras
tos, etc. sentencia e instrucciones se confunden o consideran sinnimas. Nosotros prefe-
U n ejemplo de proceso secuencial es: rimos utilizar sentencia para lenguajes de alto nivel -prximos al usuario- e
Un estudiante calcula el producto de los nmeros naturales m=25 y n=36. instrucciones para lenguajes de bajo nivel y mquina -prximos a la mquina.
La descripcin del proceso necesitar:
1. La lista de datos.
2. El conjunto de acciones, orden de stas y condiciones que determinan la 1.2.1. Caractersticas de los algoritmos
ejecucin de una u otra accin.
Se observa, normalmente, que el nmero de operaciones que realiza un
Los procesos en los que estamos interesados son aquellos que se pueden algoritmo (o programa) no se conocen de antemano, aunque serjinito siempre
repetir y en los cuales el resultado no depende del ejecutor (siempre que ste se
que los datos sean adecuados. Por consiguiente, el nmero de operaciones que
atenga perfectamente al punto 2 anterior). El proceso nos ha de servir para
es preciso realizar al ejecutar un algoritmo depender de los datus del problema
resolver todos los problemas de cierto tipo (todos los que resultan de tomar m
y solamente se conocer al ejecutar ste.
y n como nmeros naturales).
Las caractersticasfundamentales de un algoritmo o proceso algortmico son:
a) Un algoritmo debe ser preciso e indicar el orden de realizacin de cada
paso. ,
b) Un algoritmo debe estar definido. Si se sigue un algoritmo dos veces, se
1.2. ALGORITMOS debe obtener el mismo resultado cada vez. .
c) Un algoritmo debe ser finito. Si se sigue un algoritmo, se debe terminar
U n algoritmo es una serie de operaciones detalladas y no ambiguas, a ejecutar en algn momento.
paso a paso, y que conducen a la resolucin de un problema. En otras palabras, La definicin de un algoritmo debera describir tres partes: entrada, proceso
;un algoritmo es un conjunto de reglas para resolver una cierta clase de problema y salida. Un algoritmo implica generalmente alguna entrada (algo que existe y
o una forma de describir la solucin de un problema)Una receta de cocina para es utilizado por el algoritmo); en un algoritmo de receta de cocina, la entrada
hacer cordero asado es un algoritmo. est constituida por los ingredientes y los utensilios empleados. Un algoritmo
Un algoritmo es el medio por el que se explica cmo puede resolverse un produce tambin resultados denominados salida. La salida de la receta ser la
problema, mediante aproximaciones paso a paso. Se puede formular de muchas terminacin del plato (cordero asado). Un algoritmo describe la transformacin
formas, siempre y cuando se realice de modo no ambiguo. de la entrada en la salida.
Para describir algoritmos de computadoras se han diseado lenguajes de
programacin. Cada una de las acciones de las que consta un algoritmo se
llamar sentencia y stas deben ser escritas en trminos de cierto lenguaje com- 1.3. DATOS, TIPOS DE DATOS Y OPERACIONES
prensible para el ejecutor (mquina), que es el lenguaje de programacion. PRIMITIVAS
El conjunto formado por la representacin de datos utilizada y el algoritmo
en s, se conoce usualmente con el nombre de programa. En esencia, un progra- El primer objetivo de toda mquina (procesador) es el manejo de informa-
ma es la descripcin del proceso en un cierto lenguaje, o dicho de otra manera: cin o datos.
la secuencia de acciones entendibles por la computadora conducen a realizar La representacin de los datos utilizada determina la forma del algoritmo;
una tarea determinada y el correcto tratamiento de unos datos. realmel1te, stos dependen del tipo de informacin sobr:e la que acta. En conse-
Recordemos la d~finicin de algoritmo dada por el profesor Niklaus Wirth, cuencia, la identificacin de los objetos (datos) que manipula el algoritmo debe
padre del lenguaje Pascal: Un algoritmo o programa de computadora consiste en realizarse sin ninguna ambigedad para que la mquina sepa en cada momento
dos partes esenciales: una descripcin de acciones que deben ser ejecutadas y qu tipo de datps manipula y cmo debe operar con ellos. El sistema de identifi-
una descripcin de los datos que son manipulados por esas acciones. Las accio- cacin de los datos que llamaremos definicin de la estructura de datos, es, al
nes se describen mediante las llamadas sentencias y los datos mediante declara- menos, tan importante como los a1~oritmos que los transfdrman.
,. Ji~~,~~,t,1:~;~,;;;~.,:);,'x- .,,;;:' .' ".;" ~ ; irAi:~Njj*~*gf' 'OM r.. .,",~. ~ ..,-..,,~,',;~,B.
ALGORITMOS Y PROGRAMAS 5
4 METOOOlOGIA DE LA PROGRAMACION

El lenguaje de programacin no es ms que una notaci n que describe las m es la mantisa.


estructuras de datos y los algoritmos. Los datos con los cuales trabaja
un progra- e exponente, igual a un entero.
ma se sitan en objetos llamad os variabl es. Al igual que todos los objetos de un b base del sistema de numera cin (norma lmente 10).
programa, las variables llevan un nombr e llamad o identificador que sirve para 1 smbolo de la operacin exponenciacin
valor puede ser examin ado tan a menud o
referenciar su valor o contenido. Este En el sistema decimal el formato resulta ser:
o. La accin que consist e en atribui r un
como sea necesario, borrad o o reescrit
valor a una variable se llama asignacin. Los datos y sus valores tratado
un progra ma pueden ser de diferen
tipo de una variable es el del
te
conjun to
natural
de
eza
valores
(nmer
que
os,
puede
caracte
tomar.
res,
s por
etc.). El
[ n = m x 1Ole I [ n=mx 10e I
La mayor a de las compu tadora s son capace s de trabaja r con
distint os
os tiene
tipos de datos: numricos y no numri cos (series o cadena s de caracte res alfa- aunque el rango se dijo antes es indefinido, lgicamente a efectos prctic
dos dgjtos
bticos). ~ limitaciones. Norma lmente m puede conten er de 4 a 6 u 8 dgitos y e
positivos o negativos.
Ejemplos tpicos de nmero s reales en coma flotante son:
1.3.1 . Datos num ricos
0.3456 7 x 10123
y nme-
Lbsdat os numri cos se representan en dos formas: nmeros enteros 34.567 x 10115
formas .
ros rea/es. La compu tadora maneja de modo diferente ambas 0.386 x 101-7
deci-
Los enteros corresponden a nmero s completos; no tienen compo nente 3.4567 x 10114
son:
malo fraccionario y pueden ser negativos o positivos. Ejemplos de enteros
(i es el smbolo de la exponenciacin): se sustituye normal mente por la letra
-3245 45 e y entonces resultar:
4672 -321 0.3456 7 e23
35 -5 34.567 e15
. 0.386 e-7
El rango normal de los nmero s enteros suele ir de -32768 a +32767 3.4567 e14
siempr e un punto decima l; las fraccio nes se almace nan en
Los reales tienen
de alma-
la compu tadora como nmero s decimales porque no existe otra forma La ocupacin en memor ia de los nmero s enteros y los nmero s reales
es
enteros que
cenar numera dores u denom inadore s separados. Al contrar io de los distinta. As en el caso de los micros IBM pe, los tipos de nmero s aceptad os
s reales pueden
suelen tomar valores en un rango determinado, los nmero son:
y ser positiv os o
tomar, tericamente, cualqu ier valor de la recta numri ca real
negativos. Los siguientes ejemplos son nmero s reales: enteros: rango -32768 a +32767 (ocupan 2 bytes de memoria).
reales: simple precisin (7 dgitos de precisin).
34.6 4567, 34 doble precisin (15 dgitos de precisin).
231,51 2 313,2 16
-8,31 8,74 1.3.2 . Datos no num ricos
sustitui-
En notacin de compu tadora la coma decimal no existe y es siempre
Existen fundam entalm ente dos tipos: datos alfanwnricos y datos lgicos.
da por un punto. e-
os Los datos alfanumricos se agfupan en series o cadenas de caracteres (caract
Al objeto de poder representar nmero s reales muy grandes o muy peque Y, Z, a, b, .." x, y, z; 10$ dgitos O, 1, 2, oo., 8, 9;
notaci n denom inada res alfabticos A, B, .... X,
(3463.227.314 0.000oo0003845) se ha diseado una ~aracteres especiales #, $, -, etc.).
cient(fica o de coma. punto flotante que tiene el siguiente formato: Los datos lgicos son aquellos que pueden tomar dos valores verda
dero y .
<falso.

I n:mx bte I 1 n=mx~ 1 Una sntesis de los tipos de datos utilizad os por los proces adores
:igura 1. l. .. . ... . . ; . . o o
; >~,~; ,""'iR,:' ~",\~~;wt1tfi,'tt't#i'+)<L "\ .
. ' "
j"~2,:".L,
es la

i"";';~',
6 METODOLOGIA DE LA PROGRAMACION ALGORITMOS Y PROGRAMAS 7

1.4.2. Variables
_ _ _ _ _ _ _ Datos

~
Enteras (integer): Su representacin interna est formada por una secuencia
Numricos Cad I
enasd-------
e caracteres de bits en un cdigo binario (complemento a uno, complemento a dos, cdigo

/~ E",~"
. Reales L09;'"
de exceso, signo y magnitud).
Las variables enteras pueden ser declaradas explcitamente por el progra-
mador.

DeCimales ~
Coma flotante
BASIC
A%,NOTAS%
Pascal
var x, y, z: integer;

Figura 1.1. Tipos de datos de los procesadores. Reales: la codificacin interna se representa en coma flotante o en notacin
cientfica.
BASIC
Pascal
A,NOTAS
A!B# var x, y, z: real;
1.4. CONSTANTES, VARIABLES Y EXPRESIONES var u, v, w: real;
f ~ 1<

Una variable es un objeto cuyo valor:~~s variable. Adems de este valor toda Caracteres (char): es un conjunto de caracteres.
variable posee dos atributos: un nombre (invariable, denominado en ocasiones,
caso del lenguaje Pascal, identificador) que sirve para designarla y un tipo (inva- BASIC Pascal
riable) que describe la posible utilizacin de la variable. Al definir una variable A$, B$ NOMBRES$ var a, b: char;
se ha de precisar su nombre y su tipo. El nombre como ya se ha indicado
anteriormente se suele conocer como identificador. Boolean: puede tomar los valores de lgebra de Boole (O, 1) o bien (cierto,
El valor de las variables puede ser modificado durante la ejecucin del progra- falso // true, false)
ma. Dependiendo de los lenguajes las variables pueden ser: enteras, reales, de
caracteres y lgicas (booleanas) y tomarn los valores vistos enel apartado ante- Pascal
nor. var a, b: boolean;
Una constante es un objeto de valor invariable. Este valor no cambia durante
el proceso. Para expresar una constante se escribe explcitamente su valor, por
ejemplo, 5, -70 3.141519. La mayora de los lenguajes permiten diferentes
tipos de constantes, siendo las ms comunes enteros, decimales, caracteres y 1.4.3. Expresiones
booleanos (lgicos).
Las expresiones son combinaciones de constantes variables, smbolos de
operacin, parntesis izquierda y derecha y nombres de funciones especiales.
.. 1 .4.1. Constantes Las mismas ideas se utilizan en notacin matemtica tradicional, por ejem-
plo:
Constante entera (integer): es un nmero con un valor entero. positivo o m(n+5)+jP
negativo, por ejemplo, 3, -4, O.
En la expresin anterior, los. parntesis indican el orden de clculo y .
Constante real: Una constante real o decimal es un nmero escrito con un representa la funcin raz cuadrada.
punto decimal. Obsrvese que 3.0, aunque su valor es un nmero completo o Cada expresin tiene un valor, que se determina tomando los valores de las
entero, se considera una constante decimal. variables y constarites implicadas y ejecutando las operaciones indicadas.
Conscante de caracteres: es un conjunto de uno o varios caracteres. Normal~ Las expresiones se clasifican en dos tipos:
mente los caracteres disponibles son letras maysculas, minsculas, dgitos, s!.g- expresioneS aritmticas
nos de puntuacin y otros smbolos especiales. expresiones booleanas
~
B METODOLOGIA DE LA PROGRAMACION
ALGORITMOS Y PROGRAMAS 8
~(

1.4.3. 1. Expresiones aritmticas (suma, resta, multiplicacin, divisin...). El resultado de la evaluacin de tal
La mayora de los lenguajes permiten diferentes tipos de expresiones. Expre expresin ser el valor que se le asigne a la variable indicada.
siones aritmticas son anlogas a las frmulas matemticas. Las variables ~ V: = 45 + 73 + 3
constantes son numricas (enteros o reales) y las operaciones son las aritmtica
se le asigna a V el valor 121
clsicas.
V: =a+ b-m
+ suma
- resta a V se le asigna la resultante de la operacin a + b - m, donde a, b y m son los
- multiplicacin valores que en ese momento tengan. I
/ divisin
Los smbolos +, -, *, / se denominan operado.res cuando actan sobre deter
minados datos: 1.5. LOS PROGRAMAS

AB se suele escribir en un lenguaje de programacin como A-B Se podra considerar la programacin como el conjunto de actividades y
operaciones realizadas por el personal informtico tendentes a instruir a la m-
Los parntesis se utilizan tambin para agrupar trminos juntos y asegurar quina para que pueda realizar las funciones previstas en el algoritmo. La progra-
que las oPeraciones se ejecutan en el orden correcto. En la expresin M*(N+5), macin se manifiesta en los programas (el concepto de programa se introdujo
la constante 5 se suma en primer lugar al valor N, y su resultado se multiplica por en el apartado 1.2).
M. Cualquier ambigedad se resuelve asociando a cada operador una prioridad El desarrollo de un programa abarca diferentes etapas, de las cuales la escritu-
o procedencia y ejecutando las operaciones en rdenes de prioridad. (En el ra puede ser la menos significativa.
captulo 3 se ampliarn estqs conceptos.) La primera etapa al escribir un programa es la definicin del problema. Una
vez definido el problema se puede disear la solucin. El diseo general elegido
se desarrolla posteriormente en forma de algoritmo; un mtodo muy utilizado
1.4.3.2. Expresiones booleanas
para el desarrollo es el mtodo arriba-abajo (top-down), que consiste en partir
Un segundo tipo de expresin es la expresin booleana, cuyo valor puede de una idea general y definir cada paso posterior con ms detalle hasta negar
ser o bien verdadero o bien falso. Un medio de generacin de expresiones a la resolucin del problema. En esta descomposicin de la idea general, se suele.
booleanas es combinar constantes y expresiones booleanas por medio de los recurrir, a veces, a algoritmos normalizados.
operadores booleanos and. or y noto Tras disear el algoritmo, se pasa a la escritura en un lenguaje de programa-
Las reglas de funcionamiento de estos operadores as como los operadores cin. El proceso de escribir las sentencias reales de un lenguaje de programacin
relacionales o de comparacin (=, >, <, > =, < =, < > ) se analizarn en detalle se denomina codificacin. Es importante no realizar la codificacin hasta tanto
en el Captulo 3. el algoritmo no est prcticamente definido. La codificacin es una parte de la
programacin.
Algunos ejemplos de expresiones son:
Una vez codificado el programa, se ejecuta y se comprueban sus errores. La
A + (B / C) - D operacin de detectar y corregir errores se denomina depuracin. Las comproba-
19 mod 4 ciones sucesivas del programa permitirn detectar la presencia de errores, pero
A>B no detectarn su ausencia, ya que pueden existir otros errores que no se hayan
(A - 5) < (B - 6)
encontrado por no haberse probado. Tras la depuracin final del programa y la
ejecucin sin errores, es preciso documentar el programa. Es necesaria una
La asignacin de una constante a una variable se realiza de acuerdo al documentacin interna con comentarios convenientes a 10 largo del programa
formato siguiente: que permitan ayudar a futuras modificaciones, y documentacin externa basada
en la descripcin completa de algoritmo, organigrama, tablas de decisin, etc.
v = constante en lenguaje BASIC La vida del programa se contina con laJase de mantenimiento, que consiste
V: = constante en lenguaje PASCAL en las operaciones necesarias para mantener el programa al da, es decir posibili-
tar que el programa cumpla sus objetivos pese a las variantes o modificaciones
El segundo miembro de la asignacin puede, de hecho, ser cualquier expre- que sus datos, acciones, etc. puedan sufrir Con el paso del tiempo.
sin en la que se tenga una combinacin de variables, constantes y operadores
12 . METODOLOGIA DE LA PROGRAMACION DIAGRAMAS DE FLUJO 13

de nuevas aplicaciones. As se puede decir que el analista de sistemas es el e) Preparacin de un conjunto de datos
responsable de todo el proceso informtico, tanto en un aspecto esttico (uso del
hardware/software existente y puesta al da del sistema) como en su aspecto Es necesario un conjunto de datos que permitan probar el programa cuando
dinmico (adquisicin de hardware/software, nuevos desarrollos, contratacin/ se ejecute.
formacin de personal, etc.).
El anlisis de aplicaciones es el estudio de nuevas aplicaciones en un sistema o Ejecucin y correccin de errores del programa
informtico y la persona encargada de su realizacin es el analista de aplicacio-
nes, que recibir los encargos del analista de sistemas o en el caso de pequeos Segn sea el tipo de lenguaje elegido as se realizarn las diferentes fases de
equipos informticos (como puede ser la gama de computadoras personales PC, la traduccin del programa a lenguaje ocdigo mquina (programa objeto). En
XT y AT) directamente del propio usuario. En el entorno del PC es muy frecuen- el Captulo 3 se estudiarn los lenguajes de programacin.
te que el usuario pretenda ser al mismo tiempo el analista de sus propias aplica-
ciones. Esta obra va dirigida esencialmente a las personas que desarrollan aplica- g) Puesta a punto final del programa
ciones bien en su faceta de analista o de programador que al igual que en el
caso citado, se suelen confundir en los pequeos equipos. El programa se considera terminado cuando se le han realizado pruebas, y
As pues, centraremos nuestra atencin en la metodologa de la programacin ensayada su fiabilidad con los conjuntos de datos seleccionados y otros nuevos
que a grandes rasgos se compone de las siguientes etapas: que se quieran elegir, y no se encuentran ya errores oe ningn tipo.

a) Toma de datos
h) Documentacin del programa
El analista o programador deber recibir una descripcin clara y detallada
de la aplicacin que debe desarrollar y caso de no percibir suficiente informacin, La documentacin de un programa es todo el material escrito que se ha ido
debe solicitarla en la medida necesaria para el desarrollo de su trabajo. Las produciendo simultneamente a la elaboracin del programa. La' puesta a punto
Tablas de Decisin que se estudian en el Captulo 6 dan un buen mtodo de final del programa debe ir aparejada siempre con la documentacin del mismo.
toma o captura de datos. La documentacin de un programa debe ser de dos tipos: documentacin
para personal irformtico y documentacin de usuario.
b) Modularizacin h.l) La documentacin para el personal irformtico. Debe incluir toda la
informacin tcnica del programa o conjunto de programas que conforman una
Esta fase consiste en la descomposicin sucesiva del problema en mdulos
aplicacin informtica. A s vez esta documentacin puede ser interna y externa.
o subproblemas cada vez ms concretos y detallados. Estos mdulos normal-
La documentacin interna es la que se incluye como comentarios en los listados
mente se programarn y desarrollarn independientemente y luego se enlaza-
rn. de los programas y la documentacin externa es la ajena al listado del programa
La modularizacin se estudiar en el Captulo 7.
en s. La informacin contenida en la documentacin debe ser la neceS<!:ria para
la comprensin del programa y para su mantenimiento y puesta al da caso de
que as se requiriera.
c) Representacin grfica de las operaciones a realizar
Una buena documentacin debera incluir como mnimo los siguientes ele-
En esta etapa se realizar una representacin grfica clara y detallada que mentos:
refleje la secuencia en que deben ser ejecutadas las diferentes operaciones por - Algoritmos y diagramas de flujo de los diferentes mdulos de la aplica-
la mquina. Estas representaciones grficas son las herramientas utilizadas para cin, as como de las relaciones entre ellos.
el anlisis de la programacin. Se clasifican en tres grandes bloques: diagramas - Listado del programa/s de la aplicacin.
de flujo u organigramas, pseudocdigos y tablas de decisin. A lo largo de este - Definicin de variables y ficheros de cada mdulo, con indicacin de los
captulo y los restantes del libro se explicarn en detalle el uso adecuado de estas que son comunes a diversos mdulos.
herramfentas de programacin. I

h.2) Documentacin para el usuario


Debe incluir una descripcin general de las tareas que realiza el programa,
d) Codificacin en un lenguaje de programacin
as como una descripcin detallada de todas las instrucciones que sean necesarias
Una vez que el diagrama de flujo o el algoritmo de resolucin del problema para su instalacin, puesta en marcha y funcionamiento; as como consejos,
est ya definido se pasa a la fase de codificacin del programa en el lenguaje recomendaciones de uso, . explicacin de los mensajes de errores y ~odo de
elegido y la obtencin del programa fuente.. solucionarlos, entrada y salida. de dat~ mens de opciones, etc.
14 METODOLOGIA DE LA PROGRAMACION DIAGRAMAS DE FLYJ 15

2.2. DIAGRAMAS DE FLUJO 2.3. SIMBOLOS UTILIZADOS EN LOS DIAGRAMAS


Como ya se ha comentado, el planteamiento de un problema que pueda Los diagramas que se realizan durante el desarrollo de una aplicacin infor-
llegar a una solucin, requiere la aplicacin de una lgica que evolucione secuen- mtica deben ser claros, concisos, esquemticos y, especialmente, independien-
cialmente. tes del lenguaje de programacin que se vaya a utilizar. As mismo deben ser
,~La resolucin de todo problema exige tres grandes elementos: datos del comprensibles para cualquier analista o programador que los examine, procu-
problema, result.ados solicitados y algoritmo de resolucin) rando no presenten excesiva complejidad.
Los datos del problema son informacin de partida y sobre la que normal- El Instituto de Normalizacin Americano (ANSI) (American National Stan-
mente no se puede actuar con la excepcin de su manipulacin correcta. Los dards Institute) ha diseado un conjunto de smbolos y signos estndar que
resultados constituyen la informacin de salida y estarn ntimamente relaciona- prcticamente han sido adoptados internacionalmente.
dos con la informacin de entrada. El algoritmo de resolucin es el conjunto de Los smbolos utilizados varan segn sean de aplicacin a diagramas de
operaciones (matemticas, lgicas, etc.) o manipulaciones que se deben realizar sistemas o a diagramas de bloques y diagramas de detalle. Aunque describiremos
con los datos para llegar a la obtencin de resultados. los dos conjuntos de smbolos, este libro est orientado bsicamente hacia los
Los algoritmos se suelen representar en forma narrativa, pero cuando tienen diagramas de flujo de macroprocesos o bloques y los de detalle (ordinogra-
su aplicacin ms directa es cuando se convierten, en diagramas o grficos de mas).
programacin, y son la representacin grfica de fa solucin del problema que
se desea mecanizar. \
Un diagrama de programacin es la representa~\in grfica de unos procedi- 2.3.1. Diagramas de flujo de sistema
mientos y de la secuencia' u orden en que debe ejecutarse; en resumen la
representacin grfica de la solucin de un proble a o de un procedimiento. Los smbolos utilizados sirven para representar operaciones manuales y auto-
Se pueden considerar tres tipos fundamentales de diagramas de programa- mticas con los diferentes dispositivos del sistema informtico. Se denominan '.
cin, conocidos tambin como diagramas de flujo u organigramas: tambin organigramas del sistema o de la mquina;) no reflejan las grandes
funciones que debe desarrollar en forma automtica"'l sistema de proceso de
a) Diagramas del sistema o de configuracin datos, pero en cambio, expresan de modo claro el nmero de dispositivos de
entrada y salida que deben estar disponibles para la ejecucin de cadaprograma.
Son diagramas destinados a describir el flujo de informacin entre los distin- La Tabla 2.1 recoge los smbolos usuales en los diagramas de sistema.
tos soportes fisicos de un sistema informtico. Reflejan las operaciones normales
para el desarrollo del proceso, que realizan los componentes utilizados en un pro- Tabla 2.1. Smbolos utilizados en los diagramas de sistema
grama.
Smbolo Funcin

o
b) Diagramas de macroprocesos o bloques
Representan la estructura en los mdulos o bloques que se han realizado del
problema a resolver. Incluye tambin el flujo de informacin entre los diversos Tarjeta perforada (lectora/perforadora de fichas).

mdulos, as como el orden de ejecucin de los mismos. Estos diagramas estn


relacionados con el proeeso.

c) Diagramas de detalle u ordinograma


Son las rdenes en secuencia que se deben dar a la mquina para la resolucin
del problema.
c:::J Cinta perforada (lectora/perforadora de cinta de papel).

D Lectora de documentos pticos/Impresora de documentos


pticos
16 METODOLOGIA DE LA PROGRAMACION DIAGRAMAS DE FLUJO 17

51mbolo Funcin Smbolo Funcin

Q /

Cinta magntica (lectora/grabadora de cinta magntica).

D Operacin o proceso. procesador.

Disco magntico (lectura o grabacin de un fichero soportado


en disco).
cJ Terminal o consola (introduccin manual de datos desde el teclado
o consola del operador).

D Operacin mecnica con los datos fuera de lnea. en una mquina


auxiliar no controlada por el procesador.

Tambor Discos
fijos
Discos
Inter-
cambiables
o Operacin manual con los datos fuera de lnea. sin utilizacin de
mquinas (guillotina de papel. ..).

o P'''_''{CRT (""d' d. d"o" tmv'. de ","tell,).


Fusin o mezcla de dos o ms ficheros en uno solo (Merge).

o Alm".",m',"'o d. doto, '" 11m" (on-/;oo).


Extraccin de datos de un fichero.

'\1 Almacenamiento de datos fuera de Ifnea (off-line).

Manipulacin de uno o varios ficheros fuera de Ifnea

D
(intercalacin).
Impresora (salida de datos en forma impresa)/Trazador
grfico (pfotter).
18 METODOLOGIA DE LA PROGRAMACION DIAGRAMAS DE FLUJO 19

Smbolo Funcin

/0
Clasificacin u ordenacin de los datos de un fichero.

-->0..: Programa '


1/
DI

~ \ ~
Red de transmisin (transmisin de datos a travs .de
sistemas de transmisin de datos).
~

-1 f--
Direccin del proceso o flujo de datos.
Q0
Unea conectora (indica secuencia de operaciones o transmisin
de datos entre unidades o elementos de informacin).
2. Una aplicacin consiste en la emisin de facturas a partir de los datos
introducidos por teclado y los datos del cliente almacenados' en un fichero
de disco. La factura se debe presentar en pantalla y una vez dada la conformi
dad, escribirla en impresora.
Ejemplos

1. Una aplicacin realiza la puesta al da de un fichero de datos fijo F, soporta


do en cinta magntica, a travs de los datos del fichero e, soportado en una
cinta perforada. El proceso realiza una consulta a un fichero de entrada/
salida (E/S) que contiene los datos en discos intercambiables. Los resultados
del proceso se presentarn en: a) el fichero M con los datos fijos actualiza
dos; b) un listado de los posibles errores detectados impresos en papel me .Dt
Fichero

I )o Grograma [?FaCluras
diante impresora (se realizarn las operaciones a travs de un fichero de Clientes A

movimientos M).

c=J
D2

Fichero

Clientes B

G
7-)
"~~L"":'c~,
20 METODOlOGIA DE LA PROGRAMACION
DIAGRAMAS DE FLUJO

2.3.2. Diagramas de flujo de detaJle/organigramas Smbolos principales Funcin

Los ordinogramas o diagramas de flujo de detalle y d~ macroprocesos deben


mostrar las operaciones que realiza un programa, con el detalle necesario para
que una vez confeccionados, se pueda realizar la etapa siguiente de la programa
cin (codificacin).
Dependiendo del nivel de lenguaje utilizado, orientado a la mquina u orien
Decisin mltiple (en funcin del resultado de la comparaeitSn
tado al problema, variar el grado de detalle de los ordinogramas. Para lenguajes
ts
muy evolucionados como el COBOL, en general, suficiente representar nica salidas
mltiples
se seguir uno de los diferentes caminos de acuard n
dicho resultado).
mente los grandes bloques de tratamiento: entrada, salida, proceso y decisin
sin tener que detallar las operaciones elementales. En los lenguajes ensamblado
res o de bajo nivel, como cada instruccin simblica se transforma en una o
varias instrucciones de lenguaje mquina. es preciso un ordinograma de detalle

o
que muestre las operaciones elementales que debe efectuar la mquina.
Conector (sirve para enlazar dos partes cualesquiera'de Ii'
ordinograma a travs de un conector en la' salid!!; yi tffiJ
conector en la entrada. Se refiere a la cnexin'an Isrt1lSma'.
Tabla 2.2. Smbolos utilizados en diagramas de detallejordinogramas pgina del diagrama.
.

Smbolos principales Funcin Indicador de direccin o lnea de flujo (indica el sentldodef~u6l\'


-+ t t ....
c- )
de las operaciones).

Terminal (representa el comienzQ, "inicio", y el final, "fin", de un pro


grama. Puede representar tambin una parada o interrupcin pro Lnea conectora (sirve de unin entre oos smbolos). ,
gramada que sea necesario realizar en un programa).
1

EntradajSalida (cualquier tipo de operacin, de introduccin de da


tos en la memoria desde los perifricos "entrada", o registro de la
informacin procesada en un perifrico "salida").
CJ Conector (conexin entre dos puntos del organigrama sitUadO
pginas diferentes).
en'jl
. 1
.!

D
Proceso (cualquier tipo de operacin definida que pueda originar
cambio de valor, formato o posicin de la informacin almacenada
en memoria: operaciones aritmticas, de transferencia de datos, et
ctera).
o

Smbolos secundarios
Llamada a subrutina o a un proceso predeterminado (ur1a'subrUtjri~
.
es un mdulo independiente del programa prinipal; que reM'lIIlf'
entrada procedente de dicho programa, realiza una tarea'detm1friai
da y regresa, al terminar, al programa principal).
Il,

o Pantalla (se utiliza en ocasiones en lugar del simboto de ~/g).

SI,
Decisin (indica operaciones lgicas o de comparacin entre datos
-normalmente dos- y en funcin del resultadodeta misma deter
mina cul de los distintos caminos anematlvos del programa se'
debeseguif; normalmente tIene dos salidas-respuestif$Sfo.No
pero puede tenenres o ms-;seg6n:lds.casos}
-D
~-
r
i
: ', .'
Impresora (se utiliza en ocasiones en lugar del srl'ibolo de f!jSli

:;i~j~~i;i;~:~t
22 METODOLOGIA DE LA PROGRAMACION DIAGRAMAS D~ FLUJO 23

Smbolos secundarios Funcin


Ejemplos de smbolos, en ordinogramas

( Inicio) ( IniCiO)
CJ Teclado (se utiliza en ocasiones en lugar del smbolo de E/S).

~- ( Fin.)
Comentarios (se utiliza para aadir comentarios clasificadores a
otros smbolos del diagrama de flujo. Se pueden dibujar a cualquier
lado del smbolo).

Entrada Salida
X X

Es conveniente que los ordinogramas y los organigramas -cuando as lo


exijan- utilicen notaciones normalizadas para operaciones de cualquier tipo.
La Tabla 2.3 recoge los signos universalmente aceptados. B La suma del valor de las variables X e Y
se asigna a la variable Z.

z=X+Y
Tabla 2.3. Signos utilizados en los diagramas de flujo.

~ equivalea

~
Operar;iones aritmticas Significado

~ Movimiento de unas posiciones de memoria a otras o cambios


~ en campos de informacin.
+ Suma

Resta

Multiplicacin

/ Divisin

t o bien A Exponenciacin

Operaciones de relacin

< Menor que


Igual

Si el valor de X es mayor que 5 seguir el camino


> Mayor que

rotulado S, en caso contrario el camino No.


~ Menor o igual que

;, Mayor o igual que

Si el valor de X es igual a Y seguir el camino


<> Diferente (menor o mayor que)

rotulado S. en c,!so contrario el camino No.


-1:' No menor que (mayor o igual)

o' No igual que (diferente~

;.' No mayor que (menor o igual)

:: y <> Smbolo de comparacin


, No suelen utilizarse normalmente.
. .. ;- .. ,

l. ...-. el., "'_o- '~'.V' , :t, -;'.~', ,,~~#tm_.


.24 METODOLOGIA DE LA PROGRAMACION DIAGRAMAS DE FLUJO 25

B
/

No

Inicio Inicio
S No
Subrutina A Subrutina B

Subrutina B

I
Subrutina A fA I I fB

1I U
TI
1
I
I
Retorno
,
I
I

Retorno

________ ~ S contiene el valor del


Z=K+L S=Xy
producto X por Y.
Cuando el valor de Z sea igual a la suma de los valores
de K y L, se ejecuta la funcin F2 y a continuacin se
retorna al primer punto conector A, o sea, realizacin de
la operacin Z=K+L. Ejemplo 3. Diagrama de flujo de macroprocesos o bloques.

S No

Emisin de las facturas del ejemplo 1

El problema se subdivide en mdulos de menor entidad (entrada de datos


por teclado, lectura de datos del fichero de clientes, visualizacin en pantalla,
Funcin F1 Funcin F2 validez de los datos, impresin de facturas, etc.)
El diagrama de flujo de detalle podra ser el siguiente:

mm)ri" L .. ,.-,. . .1' ,,\j.d~iEq~


DIAGRAMAS DE FLUJO 27

Supongamos que la aplicacin de los ejemplos 1 y 4 fuese el modelo siguiente:


Entrada Introduccin de los
de datos de cada
datos factura

Cabecera (Datos sociedad o empresa)

Leer datos
Extraccin de los Unidades Artculo Precio Total parcial
del
datos de los ficheros
cliente
de clientes A y B

Presentacin en
pantalla de la
factura

TOTAL

Peticin de Fecha
No
validez de
los datos

Pie (datos diversos)

Validacin
Proceso de
de
clculo
datos
factura
Una vez que se ha confirmado por el operador la impresin de la factura y
suponiendo que se han introducido ya los datos del cliente y el pedido efectuado,
el ordinograma para la emisin de las facturas constituira normalmente una
subrutina o al menos un subprograma de entidad propia y constante. Las opera
Impresin de la
factura ciones a realizar seran:
del cliente
l. Impresin de cabecera.
2. Clculo de sumas parciales (unidades x precios del artculo).
3. Escritura de cada lnea de la factura.
Pregunta sobre la
No
emisin de una
4. Clculo del total actual de la factura.
nueva factura 5. Preguntar si es el ltimo artculo.
6. Imprimir TOTAL de la factura.
7. Imprimir fecha expedicin de la,factura (al principio del programa princi
pal se habr introducido a fecha).
8. Impresin del pie de la factura.
El ordinograma podra ser:
Ejemplo 4. Ordinograma para la expedicin de una factura.

26
~.Lbk\j!..';;' .;;,._\
_"'~"'i...,;rl~af'r;;,j
Inicio DIAGRAMAS DE FLUJO 29

2.3.3. Plantillas y hojas de codificacin


Cabecera constante
nombre empresa En el comercio existen a la venta plantillas para la realizacin de diagramas
direccin de flujo. Generalmente son piezas rectangulares planas y transparentes, en las
telfono
cuales figuran recortados los smbolos vistos en los prrafos anteriores. El uso
de las plantillas es similar al de cualquier otra plantilla de dibujo, es decir, basta
con deslizar el lpiz o rotulador por el contorno del smbolo correspondiente
para dibujar dicho smbolo.
Variable TOTAL
TOTAL =O valor inicial = O
l' .,.,,,,:1' r "'(''PI "''1' !.I#I.. ''''"\.'''''"!' [.'.'i!' ''''I'.!.,., ,,-,.. ~. ".'."3',.. ,.. ,.,....'".'.'J
.
!21'1.1!1.ll!'!'I~r 1"1"'.''"'.' !.... I.I.,.I~. 1=I:n,:::r'~' ,. ,.,., .,.,

~ .if ~ w 'Li:!t
'f' h
~ :. .A
Clculo de las _'~""1II.
f-L-~.'Ull?" ., .,
-, W'
Off." I
SP = U x Precio sumas parciales f:l:I: _le'"
de cada Ifnea. t+
~ ... ::r. ,+ ~
j-I+',,~ .. .,
un'.;<o(lOU'DI
_CfOll

UNIVERSIDAD PONllAClA DE SALAMANCA


Escritura Ifnea a lnea
de los diversos
5Kclon de InformA tica
,~ ~ 'J ~ CAT. NO. , .."tl

artculos

Figura 2.1. Plantilla para confeccin de diagramas de flujo.

o'
,u Clculo del total
t A = TOT AL + SP actual Aunque la confeccin de formatos de pantalla o de salida en impresora se
pueden realizar en cualquier folio de papel (cuadriculado o no), se dispone
normalmente en los centros de proceso de datos de formularios que facilitan
los diseos asi como hojas de codificacin, donde se suelen representar normal
mente las posiciones fsicas de los caracteres en pantalla (25 filas por 80 colum
Comprobacin
No
de nas, es decir 25 x 80 caracteres) de modo que facilitarn considerablemente el
ltimo dato diseo de formatos de texto en pantalla o de saUda en impresora.

Impresin del

resto de la

factura

Fin de la subrutina y
- - - - ---1 retorno al programa
principal

28
';;,'..",",", ,). ~ ~ :,,; -b1~:~"'-M;;;;;~~., ,./'"J,,'
30 METODOLOGIA DE LA PROGRAMACION
DIAGRAMAS DE FLUJO 31

2.4. DIAGRAMAS DE FLUJO ESTRUCTURADOS

Aunque en los captulos siguientes se profundizar en los conceptos de dia


* ~
gramas de flujo estructurados, en este apartado realizaremos un pequeo antici
o
I ~

po de los mismos, al objeto de que el lector se introduzca de modo general en


el importante concepto de estructuracin de datos, diagramas y programas.
" '";;
;;


I
~ l- l-~-
1 En general, un ordinograma contar con las siguientes fases:

-.
o
:I:
Iffl
..
"'-
1. Inicio
2. Entrada de datos
Ir::
a-
!di.
3. Proceso
~ 4. Salida de datos
le
~ 5. Fin
.o.
" g
~
Aunque las cinco partes existen prcticamente siempre, el orden de las fases

U..
a:
o -
Do
o
'O
&

~

~
le
2, 3 Y4 puede variar e incluso confundirse unas' fases con otras.

...w ..
:I: 1II
U
IL ~
Inicio

~
.
U
~

...
li
3
;;;
-;; >, ~
Entrada
-, de
ffi

~
:!! datos
~
c:i
cr
o
~
-
1:

~

><
I .. ~
I ~
z i o ~

~ i -o ~

.-' t: ~
Proceso
o N

- U

r;;;

1:)
~
o......

o
-
Uu
- ~

~
- o
f-U1 ~

o
<> ~
~ .
oc:..
lI.."':
zu
-- f-~- Salida de
-u ~
datos
l.U ~

oc a: tiu ~

< :1: -
lfll a: > = 1- -
o~
V) ::J
cru
a: Lti
el
O
.
~
-1

::J<
U u. ll. O

"
ll: .IJ
~

Fin

>~
32 METODOLOGIA DE LA PROGRAMACION DIAGRAMAS DE FLUJO 33

As por ejemplo, si se desea obtener la nota (calificacin) media de un alumno - Estructuras secuenciales
correspondiente a las diferentes asignaturas de su curso escolar, cuyos datos
escolares (registros o fichas) estn grabados en un fichero en disco, un ordinogra
ma podra ser: ~
'

Inicio
9
Lectura de
un

registro

Sumar calificaciones
de todas las
asignaturas
Q

Constan esencialmente de sucesivos pasos, uno detrs de otro.

-Estructuras selectivas
Dividir la suma:
total por el
nmero de
asignaturas

Verdadero
No sr
Imprimir
resul\'Jdo No I Falso
B

~
Fin o retorno
L i ~
si es subrutina

I
Las estructuras lgias bsicas necesarias para confecdn~r n prograrttll' se Requieren una prUeba O comparacin de ciertas condiciones seguidas de

l reducen a tres: secUenciali!s, seletiVas y rept!tit4,1S: rutas'altemativas'>fti el! progmtna


........_-...~."'.,--''''~:,.''''', ...L" ., ".. .".;.Ci--'_L'.:/.'-._ ~ J':\~ \d:.t;';;''i.ll
34 METODOLOGIA DE LA PROGRAMACION DIAGRAMAS DE FLUJO 35

-Estructuras repetitivas ~i se sustituye E2 por una estructura del tipo selectivo, se tendr

~I t
y
El
M

N .. Verdadero ~
Falso

y E3 E4

o bien representadas de la siguiente forma:

1 A su vez, E3 y E4 pueden ser sustituidas por estructuras de tipo repetitivo,


obtenindose
M

t
El
N
Falso

CaJa una de las estructuras tiene una sola flecha de entrada y una soh flecha
de salida y cada una de ellas es legible de arriba hacia abajo (diseo to-down); 'f' 'f'
por consiguiente estas estructuros llamadas bsicas o fundamentales Jueden
componerse sustituyendo cada bloque bsico por una de dichas estructuras. M2 Ml
As por ejemplo, en la estructura secuencial.

Q
I I 'f'
,
E2

~
I I

l, .:;~i~
36 METODOLOGIA DE LA PROGRAMACION DIAGRAMAS DE FLUJO 37

A los diagramas de flujo construidos de esta forma se les llama diagramas 7. Se debe dejar un bloque o dos de proceso libres al comienzo del diagrama,
de flujos estructurados o simplemente diagramas estructurados. Estas tcnicas para reservar posiciones de memoria para variables, acumuladores, iniciali

forman parte del concepto denominado programacin estructurada y que hoy


zacin de subndices de listas y tablas (arrays) conmutadores (switch), etc.

en da tiene una gran aceptacin. En los captulos siguientes y especialmente en

el 7 se estudiarn las tcnicas de la programacin estructurada.


8. Indicar con comentarios al margen o mediante el smbolo grfico comenta
rios, las variables utilizadas y su descripcin, procurando no abusar de su
uso. Diferenciar las variables propias del proceso de las pseudovariables o
2.5. REGLAS PARA LA CONSTRUCCION variables ficticias (contadores, conmutadores o interruptores).
DE DIAGRAMAS DE FLUJO 9. En las operaciones lgicas recurrir preferentemente a la lgica positiva que
a la lgica negativa (es siempre ms claro si A = B que si no es A < > B).
La finalidad de un diagrama de flujo es describir de modo grfico la estructu
10. A cada bloque o smbolo se accede por arriba y/o por la izquierda y se sale
ra lgica del programa y que posteriormente permita una fcil codificacin en :;
por abajo y/o por la derecha.
un lenguaje especfico. .
Las entradas pueden ser varias pero la salida es nica excepto en los casos
El proceso para la construccin de un diagrama de flujo no supone un
de smbolos de decisin.

mtodo rgido y de hecho la mayora de los programadores terminan acundose

el propio. Sin embargo se pueden enunciar unas reglas de tipo general, tiles

para cualquier nivel. .

La elaboracin de un diagrama de flujo debe comenzar con un diagrama de I


bloques que represente las relaciones fundamentales y posteriormente ir descom-'
~I
poniendo las operaciones fundamentales en otras ms sencillas, pero sin tratar ~~

de que los ordinogramas se correspondan instruccin a instruccin con el funcio

namiento real del programa, ya que en ese caso obtendramos unos diagramas

de flujo excesivamente recargados y no seran tiles.


~ ..
Reglas prcticas

l. Todo diagrama debe tener un principio (inicio) y un fin, al objeto de que'

pueda ser utilizado como submdulo de otro mdulo de nivel superior.

2. Las lneas de conexin o de flujo deben ser siempre rectas y, si es posible,

que sean slo verticales y horizontales (no cruzarse, ni inclinadas); para


" 11 .. Realizar todas las anotaciones o comentarios marginales al diagrama para
conseguir lo anterior se debe recurrir a conectores, numerados conveniente que ste sea comprensible no slo por la persona que lo ha elaborado sino
mente y slo en los casos estrictamente necesarios. tambin por cualquier persona ajena al mismo, sobre todo con el paso del
3. Las lneas que enlazan los smbolos entre s deben estar todas conectadas. tiempo y para cuando se necesite una actualizacin o modificac!n del dia
Cada lnea o flecha debe entrar en un bloque, en un smbolo de decisin,
grama.
terminar en Fin o unirse a otra flecha.
12. Siempre que sea posible, es conveniente que el diagrama no sobrepase una
4. Se deben dibujar todos los smbolos de modo que se pueda seguir el pro pgina; si no es posible, numerar adecuadamente las hojas del diagrama y
ceso visualmente de arriba abajo (diseo top-down) y de izquierda a utilizar los correspondientes coneCtores de pginas que indiquen sin dudas
derecha. la direccin correcta del flujo (de donde viene y a donde se dirige).
S. Realizar un grfico claro y equilibrado, procurando que el flujo central del

diagrama sea la parte central de la hoja de papel.


2.5.1. Comprobacin de diagramas
6. Evitar la utilizacin de terminologa especfica de un lenguaje de programa
cin o mquina, sobre todo en las expresiones donde se tiene tendencia . Terminado el diagrama de flujo, se deben tomar un conjunto de datos signifi
natural a ello. .tivos y comenzarla lectura del mismo en el orden arriba abajo/izQuier<4t
.... , ..
,~
~:;. ,'~~

:""F",

38 METODOLOGIA DE LA PROGRAMACION DIAGRAMAS DE FLUJO 39

derecha y seguir paso a paso todos los smbolos, con sus operaciones correspon El pseudocdigo es una tcnica para expresar en lenguaje natural la lgica
dientes, introduciendo los datos tomados inicialmente en los momentos oportu de un programa, es decir, su flujo de control. El pseudocdigo no es un lenguaje
nos y ver cmo responde ei diagrama de flujoy si los resultados obtenidos son de programacin sino un modo de plantear un proceso de forma que su traduc
correctos y coherentes. No se debe pasar a la fase de codificacin, mientras que cin a un lenguaje de alto nivel sea sencillo para un programador. La fase de
el diagrama de flujo no haya sido comprobado su funcionamiento con datos sig confeccin de pseudocdigos es inmediatamente anterior a su codificacin en
nificativos. el lenguaje de programacin elegido. En la actualidad el pseudocdigo es una
Tras la ejecucin de un programa por la computadora, los ordinogramas tcnica muy utilizada sobre todo en la programacin de lenguajes estructurados
deben ayudar en el proceso de depuracin (deteccin, localizacin y correccin como PascaL o bien utilizando tcnicas de programacin estructurada en otros
de errores). lenguajes.
Los pseudocdigos utilizan palabras clave como DO (Hacer), IF-THEN
ELSE (Si-entonces-sino), ENDIF (Fin de si), REPEAT-UNTIL (Repetir hasta),
REPEAT-WHILE (Repetir-mientras) o bien DO-WHILE (Hacer-mientras),
2.5.2. Ventajas e inconvenientes de 105 diagramas de flujo DO-UNTlL (Hacer-hasta), etc. El ejemplo del programa de clculo de la califica
cin media de un alumno en pseudocdigo podra ser:
En el anlisis de la programacin los beneficios que se pueden derivar del
uso de los diagramas de flujo se pueden sintetizar en los siguientes: Lectura registro o ficha de estudiante.
1. Rpida comprensin de las relaciones.
2. Anlisis efectivo de las diferentes secciones del programa. Mientras no se encuentre fin de fichero

3. Los diagramas de flujo pueden utilizarse como modelos de trabajo en el Sumar notas

diseo de nuevos programas y sistemas. Dividir la suma total entre nmero de asignaturas

4. Comunicacin con el usuario. Impresin del registro

5. Documentacin adecuada de los programas. Fin-mientras


6. Codificacin eficaz de los programas.
7. Depuracin y pruebas ordenadas de programas. En el Captulo 4 se profundizar en los conceptos de la pseudo-programa
cin.
Las limitaciones o inconvenientes se pueden englobar en:
1. Los diagramas complejos y detallados suelen ser laboriosos en su plantea
miento y dibujo.
2. Las acciones a seguir tras la salida de un smbolo de decisin, pueden ser 2.7. DIAGRAMA DE NASSI/SHNEIDERMAN (N/S)
difciles de seguir si existen diferentes caminos.'
3.' No existen normas fijas para la elaboracin de los diagramas de flujo que Un diagrama N-S es como un diagrama de flujo con las flechas omitidas y
permitan incluir todos los detalles que el usuario desea introducir. .' cajas o bloques contiguos. Las acciones sucesivas se escriben en cajas sucesivas.
Como en un diagrama de flujo, diferentes acciones pueden ser escritas en una
caja. La diferencia entre esta forma y las otras dos formas (diagrama de flujo y
algoritmo) parece trivial. Sin embargo, esto es debido a que los algoritmos son
bastante sencillos.
2.6. PSEUDOCODIGO
Este sistema de representacin permite tener una visin mucho ms estructu
Otra herramienta muy til en el anlisis de programacin es el pseudocdigo. rada de ellos y por consiguiente mayor facilidad al traducirlos al lenguaje de
una computadora.
Pseudo o seudo, significa falso, imitacin y cdigo se refiere a las instruccio
nes escritas en un lenguaje de programacin; pseudocdigo no es realmente un Estos diagramas tratan de optimizar los programas, ya que permiten gran
cdigo sino una imitacin y una versin abreviada de instrucciones reales para fl~xibilidad, al permitir fciles correcciones, modificaciones o ampliaciones al
diagrama original.
las computadoras.
Las tres herramientas que utilizan los programadores son: diagramas de flujo, El diagrama se lee de arriba-abajo. Cada bloque ejecuta una operacin espec
tablas de decisin y pseudocdigos. A lo largo de esta obra se tratarn las tres fica que se puede documentar o describir con la precisin que se desee.
herramientas detenidamente. Aunque se utilizan las tres son sin duda los diagra Los diagramas de las estructuras lgicas son los siguientes:
mas de flujo y los pseudocdigos los que ms utilizan los programadores.
,~,.::',;;.--'. -~".,
DIAGRAMAS DE FLUJO 41
40 METODOLOGIA DE LA PROGRAMACION

Simple: Si la condicin es verdadera se ejecuta la accin y si es falsa las


Secuencial
acciones siguientes:
Accin A

Accin B

11
Accin N
Accin

then
Alternativa
Seleccin doble: Si la condicin es verdadera se ejecuta la accin 1 y si es
falsa la accin 2.

Repetitivas
if
then
else
while <expresin lgica> while
Accin 1 Accin 2

accin end-while
Seleccin mltiple: dependiendo del valor de la variable se ejecuta el proceso
especificado y en caso de que la variable no est en el rango 1 a n se ejecuta el
buck Z (vaco o no).

2 3 ~ ~tro I
case
-
I
end while

I repeat

I--
repeat

endcase I

accin I until
A I B I C I I X I Z

until <condicin>

_ ' 1 ;']1;,1' W.ilo..l...~~::L;;:


42 METODOLOGIA DE LA PROGRAMACION DIAGRAMAS DE FLUJO 43

Estructuras ms complejas: Ejemplo


Disear un algoritmo y el diagrama N-S correspondiente que resuelva el
siguiente problema: Leer 3 nmeros por teclado, hallar el mayor y presentarlo
Condicin
en pantalla. i'
S
Solucin:
1-(
inicio
S No /1
leer 3 nmeros N1 ,N2,N3
Accin
A .
r
Accin Accin si N1 >N2
B C ~

entonces

si N1 >N3
<
entonces MAYOR = N1

Condicin sino MAYOR == N3

fin_si

sino

Accin
si N2>N3
A
Accin entonces MAYOR = N2
B
Accin sino MAYOR = N3
C
fin_si

fin_si

escribir "el nmero mayor es": MAYOR

fin

Accin
D
Accin
E
44 METODOLOGIA DE LA PROGRAMA ClaN

Diagrama N-S

INICIO

Leer 3 nmeros Nl,N2,N3

CAPITULO 3

ESTRUCTURA GENERAL

DE UN PROGRAMA

3.1. CONCEPTO DE PROGRAMA


MAYOR MAYOR MAYOR MAYOR

Nl N3 N2 N3 La programacin de computadoras (ya enunciada en el apartado 1.5) es el


proceso de planificar una secuencia de instrucciones que ha de seguir una compu
tadora. Un programa es la secuencia de instrucciones que indica las acciones que
ha de ejecutar la computadora.
El concepto de programa almacenado en la memoria fue ideado por John
Escribir Hel nmero mayor es:" MAYOR von Neumann en 1946;i desde entonces todas las computadoras utilizan esta
caraCterstica que ras hace ms flexibles y.permite realizar cambios de un progra
ma a otro.
FIN
En general, el desarrollo de un programa para la resolucin de un problema
tendr en lneas generales las fases siguientes:
(.

Anlisis: Definicin del problema.

Algoritmo: Desarrollo de la secuencia lgica de pasos para la resolucin del

2.8. MODULARIZACION problema.

Prueba del algoritmo: Seguir los pasos del algoritmo y ver si resuelven real

El sistema ms idneo para la resolucin de un problema es la descomposi mente el problema.

cin en mdulos ms pequeos, que sern objeto de un estudio y desarrollo Codificacin: Conversin del algoritmo en un programa escribindolo en un

independiente para posteriormente enlazar en un solo programa. lenguaje de programacin,

La modularizacin de un problema debe seguir un proceso arriba-abajo Edicin, ejecucin y prueba: Introducit el programa en la memoria, ejecutar

(<<top-down), que consiste en abordar el problema a nivel general y posterior lo y probar sus resultados, corrigiendo los errores hasta su puesta a punto

mente hacer sucesivas modularizaciones que realizarn tareas de mayor detalle. final.

Las normas a tener en cuenta es que el proceso de modularizacin incluir: Uso y mantenimiento: Manejo y actualizacin del programa.

descripcin de los mdulos, relaciones entre ellos, entradas y salidas a cada


mdulo.
I ""'4VERSIDAD NACIONAL A.IEII~"""",_
46 METODOLOGIA DE LA PROGRAMACION ESTRUCTURA GENERAL DE UN PROGRAMA 47

En el apartado siguiente ampliaremos los conceptos anteriores. 3. Codificacin del programa.


Uno de los objetivos fundameutales de este libro es la programacin y ello 4. Depuracin del programa.
en resumen significa realizar por el programador las fases de la Figura 3.1. 5. Verificacin del programa.
6. Documentacin del programa.

7. Mantenimiento del programa.'

I P,"~m' ~ Diseo del


algoritmo
Codificacin del
algoritmo
B Planificacin del programa
Un equipo de analistas y usuarios debe decidir exactamente lo que el progra
ma debe hacer, qu datos debe procesar y qu informacin producir.
Figura 3.1. Fases de la programacin.
Desarrollo de las especificaciones del programa
El programador especifica las funciones del procesamiento de los datos que
No se debe pasar nunca a la codiftcacin o escritura del programa sin haber el programa debe ~jecutar. Las relaciones entre las funciones se establecen en
realizado las fases de anlisis del problema y resolucin del algoritmo. Muchos una serie de diagramas de flujo.
estudiantes -incluso profesionales- tienden a eliminar la fase de diseo del
algoritmo y ello supone un grave error, pues si bien en ocasiones puede ahorrar
tiempo y producir un resultado satisfactorio, a la larga producir errores y Codificacin del programa
aumentar el tiempo de la fase de ejecucin y puesta a punto del programa. El programador escribe el cdigo fuente del programa. Este cdigo fuente
consta de los pasos del programa descritos en un lenguaje de computadora. En
la computadora el cdigo fuente se traduce en un programa que la computadora
3.1 .1. Desarrollo de un programa puede ejecutar.
Dependiendo de la naturaleza del problema a resolver se puede considerar
el equipo de desarrollo de un programa, y as ste puede constar de una sola Depuracin del programa
persona o un equipo de personas dirigidos por un programador jefe del equipo.
En cualquier caso, la descripcin general de cada programa incluir al menos El programador ejecuta el programa para detectar y corregir errores. A esta
los siguientes conceptos: operacin se denomina depurar el programa.

Tipo de lenguaje de programacin (COBOL, Pascal, BASIC, etc.)


Descripcin del programa con indicacin de las tareas a realizar y del Verificacin del programa
algoritmo de resolucin. El programador comprueba el programa para asegurarse que produce la
Frecuencia de procesamientq (diaria, semanal, en lnea, etc.) inform<1cin requerida. Durante esta fase se podra necesitar modificar el
Entradas y salidas del progr~ma. Programa.
Especificaciones detalladas de clculos, tablas, etc.
Limitaciones y restricciones (orden de entrada/salida de datos, tiempos de
respuesta, etc.). Documentacin del programa
El programador describe el funcionamiento y uso del programa en una docu
Una vez que los conceptos anteriores se conocen, es el momento de escribir mentacin tcnica y de usuario.
los programas. Las personas que escriben y depuran los programas se llaman pro
gramadores.
Los pasos que exige el desarrollo de un programa -como se ha descrito Mantenimiento del programa
anteriormente- se suelen sintetizar en los siete ~iguientes:
Si el tipo de informacin requerida necesitase cambios, el programa puede
l. Planificacin del problema: descripcin y anlisis.: ner que ser modificado. As mismo, los usuarios del programa pueden descubrir
2. Desarrollo de las especificaciones. del 'ptbgt'ama. !
ores o introducir a su vez cambios que la experiencia les dicte, y por consi
.,", 'i.',;.~:..
.,::::,;j;~
48 METODOLOGIA DE LA PROGRAMACION
ESTRUCTURA GENERAL DE. UN PROGRAMA 49

guiente debe modificarse el programa. En resumen, el programador debe mante


3.2.1.1. La notacin BNF
ner el programa, corrigiendo cualquier error o introduciendo las necesarias mo
dificaciones para que el programa contine durante todo el tiempo de su vida
La notacin o formalizacin BNF (Backus-Naur-Form) es uno de los mto
activa, siendo til para cumplir las necesidades del usuario.
dos empleados para la definicin de reglas sintcticas y se concibi para que
permitiera decidir en forma algortmica cundo una sentencia es vlida o no en
un lenguaje. Esta notacin fue ideada por P. Naur que junto con otro grupo de
3.2. LENGUAJES DE PROGRAMACION
cientficos desarrollaron en 1960 el lenguaje de programacin ALGOL 60. Aun
Al igual que los lenguajes humanos, tales como el ingls o el espaol, los que los diagramas sintcticos se utilizan con mayor profusin sobre todo en su
lenguajes de programacin poseen una estructura (gramtica o sintaxis) y un aplicacin a lenguajes estructurados como Pascal, dedicamos este prrafo a la
significado (semntica). La gramtica espaola trata de los diferentes modos notacin BNF por su inters histrico en el campo de la programacin de
(reglas) en que pueden ser combinados los diferentes tipos de palabras para computadoras comerciales.
formar sentencias o frases aceptables en espaol, La gramtica de Pascal se La notacin BNF utiliza esencialmente cuatro metasmbolos (smbolos exter
refiere a las diferentes reglas en que pueden combinarse las sentencias (instruc nos al lenguaje O utilizados raramente)
ciones) de Pascal para formar un programa vlido en Pascal. Los lenguajes de
computadoras tienen menos combinaciones aceptables que los lenguajes natura ''1'' "1" "1"
les, sin embargo, estas combinaciones deben ser utilizadas correctamente; ello
contrasta con los lenguajes naturales que se pueden utilizar aunque no sigan las Los significados de los diferentes smbolos son:
reglas gramaticales e incluso aunque no sean comprendidos.
significa "est definido como"
"1" significa "o bien"
3.2.1. Concepto de lenguaje, vocabulario y reglas sintcticas "1" "f" significa "repeticin de los smbolos encerrados entre las
llaves"
Un lenguaje de programacin es un conjunto de reglas, smbolos y palabras
especiales que permiten construir un programa.
La sintaxis es el conjunto de reglas que gobiernan la construccin o forma Ejemplos
cin de sentencias (instrucciones) vlidas en un lenguaje. La semntica es el
conjunto de reglas que proporcionan el significado de una sentencia o instruc < expresin> :: == a - b I a * b < expresin> se define como la serie o cadena
cin del lenguaje. Solamente las sentencias correctamente sintcticas pueden ser de smbolo "a - b" o bien la cadena "a * b".
traducidas por un lenguaje de programacin, y los programas que contienen
errores de sintaxis son rechazados por la computadora. Cada lenguaje de progra <expresin> :: == <letra> + <letra> + <letra> +.... (a)
macin posee sus propias reglas sintcticas. <letra> ::=alblcldl ... lz (b)
El vocabulario de un lenguaje es un conjunto de smbolos (en ocasiones se I a la expresin se obtiene uniendo o concatenando una letra con el
denominan smbolos terminales). Los smbolos usuales son: letras, dgitos, sm signo" +" con otras letras.
bolos especiales (, ; : / & + - *, etc.), palabras reservadas o claves -if (si), then
(entonces), repeat (repetir), for (o), begin (inici), end (fin). b letra es cualquiera de las letras del alfabeto.
Las reglas sintcticas son los mtodos de produccin de sentencias o instruc <identificador> :: == <letra> 1 <letra> I <dgito> 1
ciones vlidas que permitirn formar un programa. Las reglas sintcticas permi identific;ador es una letra seguida de cualquier serie de letras o dgitos.
ten reconocer si una cadena o serie de smbolos es correcta gramaticalmente y
a su vez informacin sobre su significado o semntica. <Smbolo de operacin aritmtica> :: = + 1- 1* I / I A

Las reglas sintcticas deben definir los conceptos de sentencia (instruccin), Smbolo puede ser + (suma), - (resta), * (multiplicacin), / (divisin),
expresin, identificador, variables, constantes, etc., y deben permitir de modo (exponenciacin).
A

fcil verificar si una secuencia de smbolos es una sentencia, expresin, etc.


correcta del lenguaje. De acuerdo con las anteriores reglas sintcticas se pueden formar las siguien
Para definir las reglas sintcticas se suelen utilizar dos tipos de notaciones: tes cadenas de smbolos vlidos: .
laformalizacn de Backus-Naur-Form (BNF) y los diagramas o grafos sintc expresiones abe mnp abs man

ticos. identificadores ab5 beta4 daneo 17

.21' !)L;W1frk.~,~" ''''''. A;:iV~~il-,.;:


ESTRUCTURA GENERAL DE UN PROGRAMA 51
50 METODOLOGIA DE LA PROGRAMACION

El diagrama sintctico tambin se puede representar del modo siguiente:


Sin embargo no son vlidos los identificadores siguientes:
-------'.~ letra
5b abo, beta4~ 6 demo
L,etra.... I
En consecuencia utilizando la notacin BNF se pueden formular las diversas Ld9ito
reglas sintcticas que permitan la definicin de smbolos, palabras reservadas,
sentencias, identificadores, expresiones, variables, etc. Diagrama 3.1 b. Identificador.

Identificadores vlidos son:


3.2. 1.2. Diagramas sintcticos
a clasificacin
Una de las herramientas ms tiles -en la actualidad su uso es muy frecuen abcdef datos 4
te en el mbito universitario y en el cientfico- para describir con precisin las p4b datos 5
reglas sintcticas son los diagramas sintcticos. dem07 datos 176
Los diagramas o grafos sintcticos son una serie de smbolos unidos por
flechas o caminos. Los posibles caminos representan las secuencias o sucesiones Identificadores no vlidos son:
posibles de smbolos. 1abcd 5demo7
Existen dos tipos de smbolos: terminales y no terminales demo-7 14abc

En notacin BNF el diagrama 3.1. sera:

terminales O o bien ( ) <identificador> "= <letra> I jletra> I <dgito> 1


Expresin
no terminales
I I o bien
D expresin simple

Una regla sintctica se compone de una cabecera o encabezamiento con el


nombre del elemento que define y a continuacin el grfico o diagrama.
Los diagramas se leen siguiendo las flechas desde la entrada hasta la salida,
o lo que es igual, comenzando por la izquierda y siguiendo la direccin de la
flecha. En los puntos de bifurcacin puede ir por cualquier camino.

Identificador
~ E( 9)' 9 ? Y
~

(a)
r "pre.oo ,;m." r
o bien
~ expresin simple I I

< > <> <= > = IN

--! I I I I I
(b)
expresin simple

Diagrama 3.2. Expresin.


Diagrama 3.1 a. Identificador.
. "j",":..~-,-Jh;t:C/;'t>-_ ,~ .
ESTRUCTURA GENERAL DE uN PROGRAMA 53
52 METODOLOGIA DE LA PROGRAMACION

Variables numricas vlidas son:


Expresin simple
demo 5 SEVILLA nombres 17

Variable alfanumrica (en lenguaje BASIC)


trmino

----'1 letra, 11 i r0
trmino

o bien

o bien

- -----Ietra ''''' )-0----


---8-
C d f o i t o ...-",- - '

trmino i l'

+ -
~
OR nombres de variables alfanumrica o de cadenas vlidas son:
- trmno~ demo 5 $ AB$ Nombre$

Sentencia REM (en lenguaje BASIC)


Expresiones vlidas son:

x x-V+Z x + V * (x - V) / (Z - W)
-( REM rl Cadena de caractereJ

Variable numrica (en lenguaje BASIC) o bien


REM Cadena de caracteres

Sentencias REM vlidas son: l/M.!... A ) 3 I '-: : c.no---(


REM esto es una prueba ''/4 (
- \
fJ J J) l te" " .!.,-Aa'"" '{
REM adelante mis valientes

Variable (en lenguaje PASCAL)

~&
o bien

~
_
L
letra-C=- letra
~.
dlgito ~ ~
54 METODOLOGIA DE LA PROGRAMACION
ESTRUCTURA GENERAL DE UN PROGRAMA 55

o bien
trucciones necesarias para realizar una tarea especfica. Los lenguajes de progra
-----'VAR -----+ _tipo ~ macin se clasifican como bajo nivel y alto nivel.

["":1
El nivel de un lenguaje de programacin es indirectamente proporcional al
nmero de instrucciones necesarias para realizar una tarea especfica; esto es,
un programa destinado a calcular e imprimir la media de las calificaciones de
las asignaturas de un estudiante, necesita 'muchas ms instrucciones en un len
guaje de bajo nivel que en uno de alto nivel (Figura 3.2). Los lenguajes de bajo
nivel estn ms prximos a la mquina que los lenguajes de alto nivel prximo
oeclaraciones vlidas de variables son: al usuario.

V AR A. B : INTEGER : PROGRAMAS EQUIVALENTES EN DIFERENTES LENGUAJES (UNIVAC 1100)


CONTADOR: REAL; FORTRAN (ALTO NIVEL) OCTAL (MAQUINA) ASSEMBLER(ASSEMBLY)
CADENA: CHAR;
TEST = O 7413 1300 O000000 0003 LMJ Xll,NINTRS

000000 00 O000000 + 0000,0

Ejercicio de aplicacin:
OUTPUT = 1 05000000 O000000 0000 SZ TEST
Dados los diagramas sintcticos correspondientes a hipotticas expresiones 10000000 O000004 0000 LA AO,(1.000000+ O)
01000000 O00000 1 0000 SA AO,OUTPUT
"PRUEBA", "DEMO", "SALUDO" de un lenguaje de programacin, averige
nombres vlidos de expresiones. TEST = TEST+ 1 1000 00 00 O000004 0000 ILLA AO,{l.000000+ O)
76000000 O000000 0000 FA AO,TEST

t t
DEMa 1 ~
PRUEBA

t >SALUOO?T
OUTPUT = OUTPUT*TEST 0100 00 00 O000000 0000
7602 00 00 O00000 1 0000
IF (TEST.LT.100) GOTO 1 0100 00 00 O000001 0000
1000 02 00 000000 0000
76010200 O000005 0000
SA
FM
SA
LA
FAN
AO.TEST

AO,OUTPUT

AO,OUTPUT
A2.TEST
A2.(1.000000+ 2)
74020200 O000016 0001 JP A2,$+2

DEMO SALUDO PRINT 2,OUTPUT 7401 0200 O0000050001 JNZ A2,lL

~'.::----l. ---C=:::---l.
74131300 O000000 0004
0000 04 00 O000002 oo
0000 04 10 O000000
LMJ
+
+
Xll,NPRT$

0100,2F

0110.0

L.C'~ C'7'~

0000 02 00 O00000 1 0000 + 0040.0UTPUT

7201 00 00 O000000 0005 SU Nl02$

7413 1300 O000000 0006 LMJ Xll,NSTOP$

Nota: Los smbolos 'A', 'B', ... equivalen a A, B, es decir son smbolos terminales. 2 FORMAT(F15.0) 0000 00 00 O000006 0000 + (005050!i050505)

END

BASIC (ALTO NIVEL) PASCAL (ALTO NIVEL)

3.2.2. Clasificacin de los lenguajes: bajo nivel y alto nivel 10 T=O PROGRAM DEMOS (OUTPUT);

20 K=l VAR TEST, OUTPUT:REAL;

30 T=T+l BEGIN

Existen centenares de lenguajes de programacin para computadoras y cada 40 K=K*T OUTPUT:=1.0; TEST:=O.O;

uno tiene diferentes versiones. Cada lenguaje tiene sus ventajas e inconvenientes 50 IF 1.< 100 THEN 30 DO TEST:=TEST+ 1.0; OUTPUT:=OUTPUT*TEST UNTIL

junto con sus defensores y detractores. Algunos lenguajes son ideales para la TEST>=100;

programacin de un tipo de problemas (gestin, cientficos ...) y otros han 60 PRINT K WRITELN(OUTPUT: 15;0)

70 END END.

sido diseados para resolver otros problemas diferentes (educacin, investi


gacin, etc.). Fuente: Actividades escolares y Gua de Referencia para usar con el Computer Parts Kit. Cambridge,
Los lenguajes se suelen clasificar en trminos de niveles que constituyen una MN: Educational Computer Shoppe, 1978.
jerarqua de los lenguajes de programacin, relacionada con el nmero de ins- Figura 3.2. Programas en diferentes lenguajes.
ESTRUCTURA GENERAL DE UN PROGRAMA 57
56 METODOLOGIA DE LA PROGRAMACION

series de 1 y O, el lenguaje ensamblador utiliza smbolos reconocibles, llamados


3.2.2. 1. Lenguajes BAJO NIVEL
nemotcnicos para representar las instrucciones (Figura 3.3.).
El procesador (unidad central de proceso) de la computadora no puede ejecu
tar directamente sentencias escritas en un lenguaje simblico (alto nivel), basado 0000005A 1850 LR 5,0
en smbolos; el procesador solamente puede ejecutar instrucciones ms simples, 5C 5C40 C16E M 4,=F'4'
llamadas instrucciones de mquina. Una instruccin mquina es un conjunto 60 1A47 4.7
62 "5A64 0000 6,0(4)
de ceros y unos, es decir el procesador slo entiende el lenguaje binario. Cada 5064 0000 6,0(4)
66
procesador tiene sujllego o conjunto de instrucciones que depender de la estruc 6A B7A8 C04E 10,8, LOOP
tura fsica o electrnica de la computadora, o lo que es igual cada computadora Programa Programa
Direcciones de
tiene solo un lenguaje de programacin que puede ser ejecutado: el lenguaje m memoria objeto ensamblador
quina.
Figura 3.3, Programa ensamblador y objeto.
'"
EL LENGUAJE MAQUINA
Un programa mquina (o escrito en lenguaje o cdigo mquina) es un con Los lenguajes ensambladores constituyen para muchos historiadores !fe soft
junto de instrucciones de mquina escritas con ciertas reglas sintcticas que ware, la segunda generacin de los lenguajes de programacin.
constituyen el lenguaje mquina. El programa escrito en lenguaje mquina es el En las dcadas de los aos 60 y 70 los lenguajes ensambladores se utilizaron
nico que entiende la computadora. Evidentemente los programas escritos en mucho para desarrollo de programas de aplicacin y siempre para desarrollo de
lenguaje mquina son complicados, largos y difciles de escribir. Imagnese ins software del sistema (sistemas operativos, utilidades, etc.). Aunque los programas
trucciones mquinas como: eran muy largos, muchos programadores preferan la programacin en ensam
blador por considerar que utilizaban las caractersticas del sistema de computa
100011 00001 10001
dora de un modo ms eficaz. En la dcada de los 80 se han popularizado los
0110001100111110
lenguajes en ensamblador de los microprocesadores ms populares Z-80, 6502
y 8085 en 8 bits; 8086/8088, 68000, 80286 en 16 bits, y 80386 en 32 bits. El
El programador debe hacer un gran esfuerzo para recordar tales instruccio desarrollo de los lenguajes de programacin de alto nivel de la cuarta generacin
;nes, si es que llega a recordarlas. Los programas escritos en lenguaje mquina, de lenguajes (C, esencialmente) est comenzando a sustituir a los lenguajes
aunque fueron los que primero aparecieron y por ello se denominan lenguajes ensambladores en el desarrollo de software del sistema. En cualquier forma, hoy
de la primera generacin, son difciles de interpretar o corregir. A estos inconve da, el porcentaje ms alto de la programacin -en general- se realiza en
nientes es preciso aadir que, como se ha comentado, estos lenguajes slo sirven lenguajes de alto nivel.
para un determinado procesador y generalmente una sota mquina (aunque dos
computadoras estn basadas en el mismo procesador -microprocesador en el
caso de las computadoras personales- no tienen por qu coincidir su estructura 3.2.2.2. Lenguajes de ALTO NIVEL
y por consiguiente su programacin). As resultar que el lenguaje mquina slo
servir para una sola mquina que, junto con los inconvenientes citados, hacen De lo expuesto en el apartado anterior se deduce el inters por otros lenguajes
que este lenguaje, entendible por la mquina, no lo sea por el programador. de programacin generales (y que a ser posible no dependan de la miquina
Para solucionar este problema en un nivel superior se disearon los lenguajes utilizada) con los cuales se puedan describir algoritmos para ser ejecutados en
ensambladores basados en codificacin de las instrucciones mediante nemotcni el mayor nmero de computadoras. Tales lenguajes, denominados lenguajes de
cos (o nemnicos) que son un conjunto de letras y nmeros ms simples de alto nivel, permiten programar sin necesidad de conocer el funcionamiento
utilizar que el cdigo mquina. interno de la mquina.
Los lenguajes de alto nivel poseen una potencia considerable en sus instruc
ciones, de modo que una instmccin en lenguaje de alto nivel equivale a varias
EL LENGUAJE ENS..:\MBLADOR (Assembler) en lenguaje mquina. As por ejemplo:
Los lenguajes mquina como los ensambladores son nicos para un procesa M = A + B (1, J) + e LOG (X)
dor particular (en el caso de los microprocesadores, Z-80. 6502, 8088,
Puede suponer muchas instrucciones (posiblemente centenares); sin embargo la
68000, etc.). La gran diferencia entre los dos tipos reside en el medio en el que
se representan las instrucciones por el programador. En IUI!;r el.. 1,,,, n .. .,.,~~- instruccin es fcilmente entendible por ~I programador.
re

,o

58 METODOLOGIA DE LA PROGRAMACION ESTRUCTURA GENERAL DE UN PROGRAMA 59

En esencia las diferencias con el lenguaje ensamblador, residen en que los LENGUAJES ORIENTADOS A LOS PROCEDIMIENTOS
lenguajes de alto nivel utilizan instrucciones muy potentes (normalmente enten Son los ms utilizados y se subdividen a su vez segn su aplicacin en:
dibles en idioma ingls -no nemotcnicas, IF, THEN, WHILE, FOR, DO,
PRINT, etc.), independientes de la mquina sobre la que operan. Lenguajes cient(/icos: FORTRAN, APL.
Un esquema sintetizador del funcionamiento en bloques de los lenguajes se Lenguajes de gestin: COBOL, RPG.
muestra en la Figura 3.4. Lenguajes de aplicaciones mltiples: BASIC, Pascal, Ada, C.
Lenguajes educativos: Lago, Pilot y Prolog.
Lenguajes de la inteligencia artificial: Lisp.
Mquina

(Hardware)

Programador
3.2.3. Intrpretes y compiladores
Lenguaje
mquina
En cualquier lenguaje de alto nivel en que se escriba un programa, ste debe
ser traducido a lenguaje mquina antes de que pueda ser ejecutado. Esta conver
sin de instrucciones de alto-nivel a instrucciones a nivel de mquina se hace
Lenguaje

Ensamblador
por programas de software del sistema, denominados compiladores e intrpretes.
Estos programas especiales se denominan en general traductores.
Cuando se prepara un programa, el programador lo escribe en un lenguaje
Mquina Usuario/

(Hardware)
Programador
de computadora de los citados en el prrafo 3.2.2. Normalmente, el programa
se introduce en la computadora utilizando un editor (un programa procesador
SOFTWARE
de palabras, propio del sistema operativo de la mquina -caso de EDLIN en el
(Nemotcnico) sistema operativo MS-DOS de las computadoras IBM PC y compatibles- b
ajeno al sistema, Personal Editor, por ejemplo, en el mismo caso de MS-DOS.
Un editor permite al programador teclear el programa lnea a lnea, para introdu
cirlo en RAM y guardar o grabar una copia en disco. La versin del programa
Lenguaje Alto
escrita en un lenguaje de computadora es el programa o cdigo fuente del progra
Nivel
ma general. Antes de que el programa se pueda ejecutar, se debe traducir desde
el cdigo fuente al lenguaje mquina llamndose al programa traducido progra
Mquina
!~, Usuario/ ma o cdigo objeto. El proceso de traduccin y su conversin en programa objeto
(Hardware) Programador difiere segn que el programa sea compilador o intrprete.

SOFTWARE
COMPILADORES
Un compilador es un programa que traduce el programa fuente (conjunto
Figura 3.4. Relacin usuario/programador con la mquina.
de instrucciones de un lenguaje de alto nivel, por ejemplo COBOL o Pascal) a
1!rograma objeto (instrucciones en lenguaje mquina que la computadora pueda
IOterpretar y ejecutar). Un compilador independiente (o un intrprete, como se
Los lenguajes de alto nivel se pueden dividir en diferentes grupos: ver en la siguiente seccin) se requiere para cada lenguaje de programacin;
Lenguajes orientados a los procedimientos. esto es, para ejecutar programas en COBOL o Pascal, necesitar un compilador
Lenguajes orientados a los problemas. COBOL o un compilador Pascal.
Lenguajes de consulta. El compilador efecta slo la traduccin. no ejecuta el programa.
Lenguajes generadores de aplicaciones. El proceso de compilacin en Pascal se muestra en la Figura 3.5.
Una vez compilado el programa, el resultado en forma de programa objeto
directamente ejecutable.
)tra asentar las ideas sobre la compilacin co'nsideremos un segundo ejem
kt;ii~~:~<
60 METODOLOGIA DE LA PROGRAMACION ESTRUCTURA GENERAL DE UN PROGRAMA 61

Sin embargo, a veces le ocurrir que la compilacin termina sin errores


COMPILADOR
y sin embargo no se obtienen los resultados apetecidos; en este caso ser
Pascal
debido a errores lgicos de programacin como por ejemplo el intento
de divisin por cero (lgicamente imposible en la mquina) que produce
~ error.

Programa"
fuente en
,
Computadora
,
Programa
objeto
4. El compilador COBOL ha traducido el programa fuente en un programa
mquina llamado programa objeto. El programa objeto es la salida del
proceso de compilacin. En este momento, el programa objeto reside en
)
.
Pascal (mquina)
memoria y se puede ejecutar con el nombre que se le haya dado, o bien

Figura 3.5. Compilacin de un programa en Pascal.


COmPilador

--
COBOL
i

"
Programa
objeto
(mquina) /
./
"

Datos nece-
Safios para
programa Pascal
~
Computadora
Resultados del
programa
Pascal
.t~--
~m.!:;,;.
Desarrollo programa
COBOL (edicin)
Compilador
+
Progr. fuente

Progr. objeto

Errores
Programa fuente
y
programa objeto

Figura 3.6. Ejecucin de un programa.


.... /
""

.i'~ ...
plo, en este caso, con un programa en COBOL. Los pasos a seguir en el proceso
de compilacin son:
------
Programa
l. Introducir el programa en COBOL con ayuda de un editor. objeto
Programa fue-nte
2. Llamar al programa COBOL, normalmente situado en disco y cargarlo y
en la memoria principal junto con el programa fuente COBOL. Comenzar programa objeto
la compilacin. Ejecucin programa objeto
3. Si el programa fuente contiene un error de sintaxis en una instruccin
\.
(una instruccin con formato no vlido, por ejemplo en COBOL la ins =/ -----'1
truccin DISPLy ALELUYA tiene un error de sintaxis, ya que
DISPLy se ha escrito mal, su verdadero nombre es DISPLAY), el compi
I __ ._=-
.I~ "CD
lador al intentar traducir esa instruccin produce un mensaje de error. Progr. fuente
Algunos compiladores detienen la traduccin con el primer error mientras +
Modificaciones
otros continan la traduccin para encontrar otros errores. Programa fuente
El programador debe encontrar, entonces, el error en el cdigo fuente, Pro. ejecutable y
comenzando de nuevo la compilacin y continuar una y otra vez hasta programa objeto
que el programa se compila felizmente. Normalmente es necesario compi Modificaciones del programa fuente

lar (ejecutar) el programa varias veces, antes de que el programa haya


sido traducido correctamente.. Figura 3.7. Proceso de compilacin de un programa.

ESTRUCTURA GENERAL DE UN PROGRAMA 63

62 METODOLOGIA DE LA PROGRAMACION
recordarla con el paso del tiempo (es frecuente denominar a las sucesivas versio
grabarlo en un disco para poder utilizarlo directamente en otra sesin de nes con nombres como este GRAFICOS1, GRAFICOS2, etc.).
trabajo, pero ya no ser necesario el proceso de compilacin. Por consi Los programas que se ejecutan, con frecuencia se almacenan y ejecutan
guiente, para poder ejecutar el programa en otra sesin de trabajo, deber como programas objetos, normalmente separados de los programas fuente
almacenar el programa objeto en un almacenamiento secundario -disco originales.
o disquete- para su recuperacin posterior. En la mayoria de los sistemas

de computadoras grandes, esta operacin se suele hacer automtica-

INTERPRETES
mente.
Por consiguiente cada vez que necesite ejecutar su programa COBOL, Los lenguajes de programacin adems de ser compilados pueden ser inter
no necesitar realizar el proceso de compilacin; bastar simplemente pretados. Un intrprete es un programa que procesa los programas escritos en
con llamar el programa objeto almacenado en el dispositivo de memoria un lenguaje de alto nivel, sin embargo, est diseado de modo que no existe
auxiliar, cargarlo en la memoria principal y despus ejecutarlo. independencia entre la etapa de traduccin y la etapa de ejecucin. Un intrprete
El programa objeto est ya en cdigo mquina y no se requiere compi- ' traduce cada instruccin o sentencia del programa escrito en un lenguaje L a
lacin. El programa objeto sin errores se suele denominar ejecutable. cdigo mquina e inmediatamente se ejecuta, y a continuacin se ejecta la
El proceso anterior se muestra grficamente en la Figura 3.7. siguiente sentencia. Ejemplos de intrpretes son las versiones de BASIC que se
Algunos compiladores traducen slo programas completos, mientras otros utilizan en la mayoria de las microcomputadoras bien en forma residente (en
memoria ROM), bien en forma no residente (en disco).
traducen secciones de un programa. Esta caracteristica es especialmente til en
El intrprete est diseado para trabajar con la computadora en modo conver
diseo de grandes programas. Los programadores pueden romper el programa
en secciones o mdulos y compilar/verificar cada seccin independientemente.
sacionalo interactivo; en realidad se le dan rdenes al procesador a travs del
intrprete con ayuda -por ejemplo- de un teclado y un programa denominado
Cuando esto se realiza, es necesario utilizar un enlazador o encadenador (<<lin
ken , tambin llamado editor de enlaces (<<link editor) que une (<<cose) las editor. El procesador ejecuta la orden una vez que sta es traducida, si no existe
ningn error de sintaxis y se devuelve el control al programador con indicacin
secciones traducidas, juntas en un solo programa. Los enlazadores se utilizan
de mensajes (errores de sintaxis, de ejecucin, etc.).
tambin con programas que tienen una sola seccin, para aadir el cdigo de i
El intrprete no traduce todo el programa fuente en un solo paso, sino que
recepc}n del control del sistema operativo cuando el programa comienza y'!,
ejecuta cada instruccin del programa fuente antes de traducir y ejecutar la si
devolver el control al sistema operativo cuando el programa termina.
guiente.
La operacin del editor de enlaces y el compilador se muestra en la Figu-
El intrprete se sita en memoria principal (RAM), junto con el programa
ra 3.8. del usuario. De este modo el programa no se ejecutar directamente traducido
Cdigo programado
a lenguaje mquina, sino a travs de la interpretacin que se producir al ejecu
tarse el programa interpretador en una especie de traduccin simultnea.
El proceso de interpretacin se puede res~mir en la Figura 3.9.
y

Lenguaje

mquina
Programa.)

Pl"ograma

fuente
.. Compilador Enlazador ejecutablee:, Libre

Memoria Programa
Figura 3.8. Uso de un compilador y un editor de enlaces para producir un programa Entrada
ejecutable a partir del cdigo fuente. principal del
usuario
de
(RAM) programaiteclado

Intrprete
Cambios en el programa fuente

Si desea hacer cambios en los programas fuente originales escritos en CO..

~
BOL, Pascal, etc., deber recuperar el programa fuente del dispositivo de memo :

ria auxiliar (disco, disquete, etc.), realizar los cambios -mediante el editor-,.

volver a compilar y crear un nuevo programa objeto, que ser la ltima versin
I Procesador I
Figura 3.9. Proceso de hterpretacin .
. actualizada y que le recomendamos ponga un nombre diferente --
para poder!
~~j
64 METODOLOGIA DE LA PROGRAMACION ESTRUCTURA GENERAL DE UN PROGRAMA 65

Un intrprete suele incluir, casi siempre, el editor para introducir el programa e incluso un mensaje de diagnstico que indica la naturaleza del problema. El
fuente. Ello permite un paso fcil entre la edicin del programa (cdigo) fuente programador puede ir directamente al error y corregirlo; de este modo los progra
y la ejecucin del programa en s. mas pueden ser comprobados y corregidos durante el desarrollo de los mismos.
Los diagramas de flujo de la Figura 3.10. muestran el uso de un intrprete Las restantes caractersticas a destacar que diferencian un intrprete de un
y un editor. compilador se resumen a continuacin.

Inicio Inicio
Ejecucin
- La modificacin del programa fuente es muy sencilla en el intrprete,
mientras que en el compilador, adems de la modificacin con el progra
ma editor, ser necesario crear un nuevo programa compilado. Esto signi
Teclear
fica que para comprobar el funcionamiento de un programa, una vez
Interpretar
Ifnea lnea del modificado, habr que volver a compilarlo.
cdigo fuente cdigo fuente - Las ejecuciones sucesivas de un programa compilado no necesitan traduc
ciones del programa fuente. Como el intrprete no produce un programa
objeto, se debe realizar el proceso de traduccin cada vez que se ejecute .
un programa.

sr Ejecutar Escritura
Ifnea
Un programa en intrprete es ms fcil de escribir que en compilador, entre
otras razones porque el programa intrprete lleva un editor incorporado.
No

Ocupacin en memoria
S
Fin Un intrprete es ms pequeo que un compilador y por ello puede ser
utilizado en una mquina con menos memoria. Sin embargo, esta propiedad es
Preparacin del cdigo engaosa, ya que al tamao del programa hay que aadir el tamao del propio
fuente del programa intrprete que deber estar en memoria; en cada caso particular puede ser dife
No rente.

e Fin)

Ejecucin de un programa
Rapidez
La ventaja fundamental de un programa escrito en lenguaje compilador es
su rapidez, ya que en caso de la interpretacin cada instruccin debe ser analiza
Figura 3.10. Uso de un intrprete y un editor.
da e interpretada antes de su ejecucin.
. La ejecucin del cdigo mquina (programa objeto) es ms rpida que la
3.2.3.1. Comparacin entre intrpretes y compiladores mterpretacin de un lenguaje de alto nivel. Cuando un programa est compila
do, el tiempo de ejecucin es pequeo por estar codificado en cdigo mquina,
Los intrpretes y compiladores tienen ventajas e inconvenientes derivados sin embargo en un programa en lenguaje intrprete, el programa fuente se depe
de sus peculiares caractersticas; traducir cada vez que se ejecute, y por ello el tiempo de ejecucin ser la suma
La principal ventaja de los intrpretes sobre los compiladores reside en que . ~ la traduccin a cdigo mquina y la propia ejecucin. U na serie de programas
el anlisis sintctico del programa se puede ir realizando a medida que se intro- ;,ejeCutados en una microcomputadora basada en el microprocesador Z-SO pro
duce por teclado o bien cuando se interpreta. El intrprete proporciona un error ion los siguientes resultados.
66 METODOLOGIA DE LA PROGRAMACION
ESTRUCTURA GENERAL DE UN PROGRAMA 67

Operacin Tiempo (en segundos) Conceptualmente un programa puede ser considerado como una caja negra
como se muestra en la Figura 3.11.
interpretacin 10 40 60
300 300 300


1:ompilacin


ejecucin del cdigo compilado
(programa objeto)
1 1,5 2

Ent'Uda,

..
~
Programa
(Algoritmo de
resolucin)
SalMa,

Sin embargo, se puede dar la paradoja siguiente: el tiempo de compilacin, Caja negra
correccin de errores, vuelta a compilar, etc. puede ser mayor que el tiempo
empleado en ejecutar directamente un programa de forma interpretada (donde Figura 3.11. Bloques de un programa.
los errores se corrigen sobre la marcha).

Conclusiones: La caja negra o algoritmo de resolucin, en realidad, es el conjunto de


cdigos que transforman las entradas de programa (datos) en salidas de progra
Los lenguajes compiladores presentan la ventaja considerable frente a los
ma (resultados). Al establecer las especificaciones del programd, el programa
intrpretes de la velocidad de ejecucin, por lo que su uso ser mejor en aquellos
dor debe conocer, en primer lugar, cuales son las entradas del programa y
programas probados en los que no se esperan cambios y que deban ejecutarse
cules son las salidas del programa, antes de que pueda especificar el contenido
muchas veces. As mismo, en general, ocuparn menos memoria en el caso de
de la caja negra.
programas cortos ya que en el caso de interpretacin, el interpretador que tendr
un tamao considerable debe residir siempre en memoria.
Los lenguajes intrpretes encuentran su mayor ventaja en la interaccin con
el usuario, al facilitar el desarrollo y puesta a punto de programas, ya que los
3.3.1. Entrada de datos
errores son fciles de detectar y sobre todo de corregir. Por el contrario, como el
El programador debe establecer las entradas al programa o conocer de dnde
intrprete no produce un programa objeto, debe realizar el proceso de traduccin
provienen, as como el momento en que se requieren en el programa. Si el
cada vez que se ejecuta un programa y por ello ser ms lento el intrprete. procesamiento de datos es interactivo, las entradas pueden proceder del usuario
En la actualidad los programadores suelen aprovechar con frecuencia las mientras el programa se est ejecutando; en otros casos pueden estar contenidas
ventajas tanto de intrpretes como de compiladores. En primer lugar desarrollan
~n ficheros o bases de datos almacenados en disco o en memoria principal;
y depuran los programas utilizando un intrprete interactivo (por ejemplo, incluso puede haber entradas procedentes de ficheros de papel o microfilm
MBASIC intrprete); despus compilan el programa terminado a fin de obtener ~ropios del usuario o externos. En esencia los datos procedern de un dispositivo
un programa objeto (por ejemplo, MBASIC compilador). perifrico de entrada.
Al proceso de introducir la informacin de entrada (datos) en la memoria
de la computadora se denomina entrada de datos.
El programador debe realizar una lista de todas las entradas requeridas por
3.3. PARTES CONSTITUTIVAS DE UN PROGRAMA el programa, la fuente de cada entrada y el formato en el que existen actualmente
cada una de ellas. El programador debe determinar la frecuencia con que son
Despus que se ha tomado la decisin de desarrollar un programa, el progn requeridas las diferentes entradas por el programa: diariamente, semanalmente,
mador debe establecer el conjunto de especificaciones que deben contener el mensualmente o en intervalos irregulares. Adems, el programador debe deter
programa: entradas, salidas, algoritmo de resolucin que incluir las tcnicas minar el lugar donde se prepararn, si las entradas sern en lnea (on-line), fuera
para obtener las salidas a partir de las entradas. As pues, se pueden considerar de lnea (off-line) y si las entrads sern procesadas por lotes (modo batch).
tres grandes bloques en el diseo de todo programa: Las computadoras reciben la secuencia de ejecucin de las instrucciones a
1. Entrada de datbs. travs del programa. Esta secuencia la seguirn las mquinas exactamente, y
2. Algoritmo de resolucin del problema/codificacin. ejecutarn las sucesivas instrucciones, por ello el programador elebe prever todas
3. Salida de resultados. las situaciones posibles y evitar que un dato pueda ser solicitado sin que haya
sido previamente introducido en la memoria.
68 METODOLOGIA DE LA PROGRAMACION ESTRUCTURA GENERAL DE UN PROGRAMA 69

3.3.2. Salida de resultado del lenguaje). As para conocer en profundidad las instrucciones en ensamblador
~e requiere conocer la estructura del procesador (registros, acumuladores, direc
El programador debe listar todas las salidas previstas del programa, as como 'iones en memoria, etc.), mientras que en los lenguajes de alto n)..l.;el -salvo
el formato requerido por el usuario. Algunas de las caractersticas que deben ,aras excepciones- no ser necesario conocer la estructura interna de la mqui
reunir las salidas son: la. Como ya se ha comentdo el repertorio de instrucciones en lenguaje ensam
)lador es especfico del procesador (o microprocesador -en su caso-, Z-80,
Salida en pantalla o en papel impreso. 3088, 68000, etc.), mientras que en un lenguaje de alto nivel son especficas de
Grabacin de resultados en cinta o disco. jicho lenguaje. '
Diseo o presentacin de resultado: listas, tablas, informes, grficos, etc. Una clasificacin de las instrucciones -llamadas tambin sentencias en los
Frecuencia de salida de resultados. lenguajes de alto' nivel- podra ser la siguiente: .
La contestacin a las preguntas anteriores o similares permitir codificar
correctamente las instrucciones de salida y la eleccin adecuada del dispositivo - Entrada/salida
perifrico de salida: pantalla, impresora, unidad de cinta magntica, unidad de - Asignacin/movimiento
disquete, unidad de disco, trazador grfico (<<plotter), etc. - Aritmticas
- Lgicas
- Bifurcacin o transferencia de control
- Especiales
3.3.3. Algoritmo de resolucin/codificacin
En un sentido global las instrucciones se pueden dividir en dos grandes
Una vez que las entradas y salidas han sido determinadas, el programador ~rupos: 1) las que manipulan datos; 2) las que gobiernan la lgica del programa
debe decidir cmo obtener las salidas deseadas a partir de las entradas dadas. . :es decir el orden de ejecucin de las instrucciones del programa).
La caja negra que se denomin algoritmo de resolucin en esencia constar
de dos etapas:
l. Diseo del modelo de resolucin del problema. 3.4.1. Instrucciones de entrada/salida
2. Algoritmo de resolucin del problema.
Permiten la transferencia de informacin desde los perifricos de entrada
En la etapa 1 se establece el modelo preciso para la resolucin del problema, .(teclado, unidad de cinta, unidad de disco, etc.) a la memoria de la computadora
para lo cual se tendrn en cuenta los datos de entrada y los resultados que se y desde sta a un perifrico de salida (pantalla, impresora, unidad de cinta,
desean obtener; su estudio y desarrollo llevar al algoritrno de resolurin del unidad de disco, etc.).
problema que deber codificarse en un lenguaje de programacin de alto o bajo El proceso de introduccin de datos en la memoria desde un dispositivo
nivel de lo estudiados en el apartado 3.2.2. perifrico de entrada se denomina lectura o carga de los datos, y al proceso de
El algoritmo de resolucin se suele expresar previamente a la codificacin ~xtraccin de datos de la memoria y su envo a un dispositivo perifrico de
en el lenguaje de programacin, en alguna de las siguientes representaciones: salida se denomina escritura, grabacin o conservacin (memoria externa), im
l. Pseudocdigo. fresin (impresora o trazador grfico).
2. Diagrama de flujo.
3. Diagrama estructurado o N-S (Nassi-Shneiderman). Instrucciones de lectura (entrada)
Las instrucciones de lectura afectan a las unidades o dispositivos llamados
j'~ lectura: pantalla (terminal), unidad de cinta magntica. unidad de disco o
3.4. TIPOS DE INSTRUCCIONES I squete, lectora de tarjetas perforadas, digitalizador, etc.
Ejemplos de estas instrucciones en pseudocdigo podran ser:
Las instrucciones disponibles en un lenguaje de programacin, dependen del
tipo de lenguaje bajo o alto nivel. La diferencia esencial entre ambos lenguajes:
Leer A, B, e Lectura de los valores numricos correspondientes a las
prximo al usuario (alto nivel) y prximo a la mquina (baila> nivel), .se manifiesta variables A, B y C.
en el juego o repertorio de instrucciones (conjunto especl'ftro de mstrucciones Leer 425, 321 Lectura de las constantes numricas 425 y 321.
70 METODOLOGIA DE LA PROGRAMACION ESTRUCTURA GENERAL DE UN PROGRAMA 71

En lenguajes de alto nivel estas instrucciones son: no es un formato correcto, aunque la ecuacin matemtica correspondiente

BAS/C Pascal A+5=B-2


INPUT READ tenga sentido. Por el contrario
UNE INPUT READLN
READ 1: = I + 1 o bien 1= I + 1

es aceptable como instruccin de asignacin (el valor de la variable I se incre


Instrucciones de escritura (salida) menta en una unidad) y no tiene sentido matemtico.
Afectan a las unidades de salida: pantalla, disco trazador grfico, etc. Las instrucciones de movimiento tienen el mismo sentido que las de asigna
Ejemplos de estas instrucciones en pseudocdigos y lenguajes de alto nivel cin y permiten transferir la informacin o contenido de un campo o posicin
son: de memoria a otro, manteniendo siempre intacta la informacin en su primera
posicin (emisor) y variando el contenido de la segunda posicin (receptor).
Pseudocdigo Escribir A, B, e escritura de los valores numri
cos correspondientes a las varia M~N mueve el contenido del campo M al campo N
bles A, B Y C.
Escribir 53,64 escritura de las constantes nu Suponiendo que M = 32225 YN = 724, la instruccin anterior M ~ N deja
mricas 53 y 64. ra los campos M y N con los valores

BAS/C PRINT A, 8, e M = 32225 y N = 32225


PRINT USING
Pascal WRITE 3.4.3. Instrucciones matemticas
WRITELN
Realizan el clculo de operaciones aritmticas tales como sumar, restar,
multiplicar, dividir o funciones como seno, coseno, tangente, etc.

3.4.2. Instrucciones de asignacin/movimiento M=P+Q suma el contenido de los campos o variables P y Q,


almacenando el resultado en M
Las instrucciones de asignacin son fundamentak,s en casi todos los lenguajes A+ B/2 divisin de B entre 2 y asignacin del resultado a A.
de progtamacin. Permiten asignar valores (Y variables del programa.
Y = SIN (Xl clculo del seno del ngulo X y almacenamiento del re
sultado en Y.
A=5 el valor numrico 5 se asigna a la variable A (BAS/C).
LET A = 5 equivalente a A = 5 en lenguaje BAS/C; es opcional el LaTabla 3.1. representa los operadores o smbolos de las operaciones aritm
uso de LET en BAS/C. ticas bsicas.
A . -- '"~ equivalente a A = 5 en lenguaje Pascal.
A: =B + 5 equivalente a A = B + 5 en lenguaje Pascal. Tabla 3.1. Operadores aritmticos

Operador Significado
Esta instruccin ejecuta el clculo del lado derecho y asigna el valor obtenido a
la variable de la izquierda; el lado derecho de la instruccin puede ser cualquier + Suma
expresin legal; el lado izquierdo debe ser un nombre de variable. En el lado
izquierdo no puede haber una expresin. La instruccin de asignacin no tiene
-
. Resta
Multiplicacin
/ Divisin
que confundirse con una ecuacin matemtica. As: \ (DI V) Divisin entera (19\5 = 3)
MOD Resto (19 MOD 5 = 4)
A+5:=B-2 en Pascal A+5=B-2 en BASIC
72 METODOLOGIA DE LA PROGRAMACION ESTRUCTURA GENERAL DE UN PROGRAMA 73

3.4.4. Instrucciones lgicas y de relacin falsa -segn la condicin-. Adems de los operadores de relacin existen otro
tipo de operadores conocidos como lgicos que permiten realizar las operaciones
En numerosas ocasiones se necesita comparar dos expresiones aritmticas lgicas o booleanas ANO (y), OR (o), NOT (no) y en ocasiones XOR (OR
entre ellas con la finalidad de tomar una decisin en funcin del resultado de exclusiva) e IMP (implicacin).
dicha comparacin. Este tipo de operaciones se realiza con operadores de rela Las operaciones lgicas bsicas ANO, OR y NOT se representan por unos
cin que se indican en la Tabla 3.2. cuadros conocidos como tablas de verdad y que se indican en la Tabla 3.3.

Tabla 3.2 Operadores de relacin


Tabla 3.3. Tablas de verdad de los operadores lgicos
Operador Significado A B A AND B A OR B NOT A NOT B
< Menor que F* F F F V V
> Mayor que F V F V V F
- Igual V' F F V F V
>>==> Mayor o igual V V V V F F
~ <==< Menor o igual
<>#>< Diferente
F = Falso o el valor lgico O
< No es menor
V = Verdadero o el valor lgico 1
> No es mayor

Estos operadores relacionan dos expresiones aritmticas entre s con el si


guiente formato: Si en lugar de dos condiciones A y B hubiese tres, el rango de valores diferen
tes que podran tomar es
Expresin 1 OPERADOR DE RELACION Expresin 2
A B C
A 8 + e
F F F

L_, F F V

L
F V F

t
- - - - - - - - - - - - - eXpresin 1
operador igualdad
F
V
V
V
V
F
F
V
V
F
V
F
V V V

Al conjunto anterior se le suele denominar condiciones

A>B

o bien considerando valores digitales 1(V) y O(F) resultara


e> o - E
A B C
El resultado de evaluar una condicin puede tomar slo dos valores: Verda
dero y Falso. As, por ejemplo O O O
O O 1
O 1 O
A >B s A = 7 Y B = 3 entonces A > B es verdadero
O 1 1
s A = 14 Y B =27 entonces A > B es falso.
1 O O
1 O 1
Si en un programa se elige una determinada condicin para realizar una 1 1 O
1 1 1
tarea concreta, sta slo se realizar cuando dicha condicin sea verdadera o
Ir
Jii' :,
','
74 METODOLOGIA DE LA PROGRAMACION ESTRUCTURA GENERAL DE UN PROGRAMA 75

As la tabla de verdad completa en el caso de tres condiciones CI, C2 y C3, conversin

y dos operaciones lgicas AND y ORo ordenacin

declarativas
modificacin de direcciones
Cl C2 C3 Cl AND C3 C2 OR C3 Cl AND (C2 OR C3)
comunicacin de E/S (entrada/salida)
o o o o o o grficas.
o o 1 o 1 o
o 1 o o 1 o
o 1 1 o
1 o edicin
1 o o o
o 1
1 o 1 1 1 1 Facilitan los formatos de presentacin de resultados tanto en modo texto
1 1 o o 1 1
como en modo numrico. Ejemplos tpicos son: dibujo de rtulos en zonas
1 1 1 1 1 1
especficas, supresin de ceros no significativos, inclusin de signos positivos,
negativos o monetarios, justificacin de resultados a derecha o izquierda, etc.
El operador de negacin NOT (NO) transforma la certeza o falsedad de cada
suceso en su opuesto de modo que si el suceso A es verdadero NOT A es falso
y de igual forma si A es falso, NOT A es verdadero. impresin
Como aplicacin de la condicin NOT, los siguientes ejemplos representan
Son una mezcla de instrucciones de salida y edicin que facilitan la escritura
la misma condicin:
o impresin de resultados en una hoja de papel (folio o papel continuo) de im
presora.
NOT (A=S) A<>S
A=S NOT ((A> S) OR (A < S))
A>S NOT ((A = S) OR (A < S))
conversin
En las computadoras es usual trabajar con diferentes sistemas o cdigos de
3.4.5. Instrucciones de bifurcacin o trasferencia de control numeracin: Hexadecimal, Binario, Decimal y Octal -son los ms frecuen
tes-, as como los cdigos de caracteres: ASCII y EBCDIC, tambin son los
Permiten variar (romper) la secuencia de ejecucin de un programa al saltar ms frecuentes. Existen instrucciones de conversin que facilitan las conversio
(bifurcar) a otra parte del mismo. Las instrucciones de este tipo se basan en una nes y pasos de un sistema o cdigo a otro.
simple comparacin o en los resultados de operaciones lgicas.
Las bifurcaciones producidas por las instrucciones de control pueden ser con
salto adelante en la secuencia normal del programa o con salto atrs. Los tipos ordenacin
de bifurcaciones en cuanto a las condicines a cumplir son: incondicionales y
condicionales; las bifurcaciones incondicionales se realizan siempre que se ejecu Se utilizan para clasificacin creciente o decreciente de datos.
ta la instruccin, mientras que las bifurcaciones condicionales slo se realizarn
al cumplirse una determinada tarea.
declara ti vas
Permiten asignar las zonas de memoria encargadas de almacenar los datos
3.4.6. Instrucciones especiales y definir el tipo de informacin almacenada. As mismo se cosideran en este
tipo las instrucciones que con fines de documentacin interna se incluyen en
Las instrucciones especiales varan de unos lenguajes a otros, y las que citare Jos programas para una mejor legibilidad de los mismos.
mos aqu no significa en modo alguno que las posean todos, sino que segn el
lenguaje o su versin, podrn ex.istir o no. El grupo ms importante de instruc
ciones especiales se clasifican en: modificacin de direcciones

edicin Actan sobre las diversas posiciones de memoria, modificando su conte


impresin nido.
76 METODOLOGIA DE LA PROGRAMACION
ESTRUCTURA GENERAL DE UN PROGRAMA 77

comunicacin de E/S
Comienzo
Actan sobre los caminos o canales de comunicaciones, para facilitar la
comunicacin entre el procesador y perifricos externos (normalmente dispositi
vos electrnicos).

grficos
Instrucciones especiales para manipulacin de grficos. BASIC y Pascal son Lectura de
datos M,N,P
lenguajes que poseen caractersticas grficas; HP y Textronix las marCas de
computadoras ms acreditadas en este sector.

3.5. TIPOS DE PROGRAMAS .


S=M+N+P Variable
Los programas escritos para computadoras, en general, se pueden clasificar S = Suma
en tres tipos o estructuras fundamentales:
Lineales.
Cclicos.
Alternativos (decisionales).
En realidad es dificil que un programa de complejidad -e incluso sencillo
se componga de una sola estructura y normalmente una mezcla de los tres tipos
es lo que suele constituir un programa.

3.5.1. Programas lineales


Son aquellos en los que no existen instrucciones de bifurcacin y por consi
( Fin)
guiente las instrucciones se ejecutan en la misma secuencia en que han sido
codificadas. Estos programas se denominan tambin secuenciales dado que si
guen exactamente la secuencia especificada.
Es normal que estos programas consten de las siguientes fases:
Ejemplo 2: Diagrama de flujo que calcula la suma de cuatro nmeros M, N,
Lectura o entrada de datos. P Y Q, y a continuacin extrae la raz cuadrada de dicha suma. El valor de la
Proceso. suma S y la raz cuadrada RC, se deben imprimir.
Impresin o salida de resultados.
Nota: Los nmeros M, N, P Y Q son positivos.

Ejemplo 1: Diagrama de flujo para lectura de tres nmeros M, N, P en una Datos de entrada: M, N, PyQ
sola operacin e impresin de los mismos y de su suma en una impresora. Proceso: S=M+N+P+Q
Datos de entrada: M, N, P RC = M + N + P + Q = S
Proceso: Suma=M + N + P S=M + N + P
Salida de resultados:
Salida de resultados: Impresin de M, N, P YS Impresin de S y Re.
El diagrama de flujo resultante sera:
'..'{

78 METODOLOGIA DE LA PROGRAMACION
ESTRUCTURA GENERAL DE UN PROGRAMA 79

Comienzo
Lazo o bucle (conjunto de instrucciones que se repiten y ejecutan un
nmero determinado de veces).
Instrucciones finales o resto del proceso.
Salida de resultados.
Estos programas precisan instrucciones de bifurcacin o control que permi
tan la entrada y salida del bucle.

Ejemplo 3: Supongamos que los datos del ejemplo 1 provienen de un fichero


o archivo que tiene un nmero determinado de grupos de tres nmeros, y que
se desea obtener la suma e impresin de todos los grupos.
En este caso al tratarse de un fichero, stos suelen contener siempre un campo
en su ltima ficha que se denomina fin de fichero (FF) y que cuando se encuentra
S=M+N+P+O
en la lectura supone que se ha alcanzado el final del fichero y por consiguiente
no se debe seguir leyendo.
El diagrama de flujo modificado es:

RC = SOR(S)
~---~I
G? y


Fin ( Fin)

3.5.2. Programas cclicos S=M+N+P

Son aquellos programas en los que un grupo de instrucciones se ejecuta un


nmero determinado de veces -de modo cclico- hasta que se cumple una
cierta condicin que indica el fin de las ejecuciones de dichas instrucciones. El
conjunto de las instrucciones que se repiten cclicamente se denomina bucle,
lazo o ciclo.
La estructura de un programa cclico suele constar de los siguientes bloques
o fases:
Entrada de datos e instrucciones previas. t
80 METODOLOGIA DE LA PROGRAMACION ESTRUCTURA GENERAL DE UN PROGRAMA 81

Ejemplo 4: Igual que el ejemplo 2, suponiendo que los grupos de cuatro 3.5.3. Programas alternativos
elementos M, N, P Y Q se encuentran en un fichero.
En realidad los tres diagramas adolecen tcnicamente de un defecto: la no Son aquellos que permiten la ejecucin de diferentes operaciones, dependien
inicializacin de las variables o campos S y Re. Estas variables antes de efectuar do de que se cumplan (o no) determinadas condiciones que se producen en los
la operacin de suma o raz cuadrada se les debe dar un valor inicial -en este datos de entradas o durante el proceso. Segn la condicin que se cumple se
caso cero- y normalmente estas operaciones de asignacin del valor inicial se realiza una serie de instrucciones diferentes.
suelen colocar al principio del diagrama de flujo.
Ejemplo 5. Se trata de disear un diagrama de flujo de modo que se presente
Comienzo un men al usuario con tres opciones posibles; cada opcin representa un proce
dimiento -conjunto de instrucciones independientes-o Despus que se ejecute
el procedimiento seleccionado, el usuario debe ser capaz de ejecutar otro proce
dimiento cualquiera -incluso el mismo- o bien de terminar el programa.
Operaciones a realizar:
Inicializar
S Y RC//S=O
RC=O
Visualizar men de opciones.
Introducir respuesta (seleccin, opcin).'
Ejecucin procedimiento seleccionado.
Visualizar men.
Seleccionar otro procedimiento o fin.
El diagrama de flujo resultante se muestra en la Figura 3.12.

3.5.4. Otras representaciones grficas

SI A veces se suelen utilizar otras representaciones grficas que, si bien son muy
esquemticas, pueden dar una idea exacta de las estructuras o secuencias sobre
todo desde un punto de vista global.
CFin-)

S=M+N+P+O
RC=SOR(S)'

I 1

, SOR es la funcin rarz cuadrada. Lineal Cclico Alternativo


.",.....~ .' .

Comienzo

Visualizar
men

CAPITULO 4

TECNICAS

DE PROGRAMACION

~ ~I Procedimiento 1

4.1. ELEMENTOS BASICOS DE UN PROGRAMA


En los captulos anteriores hemos introducido al lector en conceptos tales
como algoritmos, diagramas de flujo, programas, lenguajes de programacin,
Procedimiento 2 etctera. As, hemos visto cmo en programacin se debe diferenciar entre el
diseo del algoritmo y el diagrama de flujo que resuelve un problema y su
implementacin en un lenguaje particular. En consecuencia, debemos diferen
ciar claramente entre los conceptos de programacin y el medio en que son

t realizados en un lenguaje especfico. Sin embargo, una vez que sepamos los
conceptos de programacin y saber cmo utilizarlos, el aprendizaje de un lengua
je es relativamente fcil. Las tcnicas especficas de programacin son los objeti
Procedimiento 3 vos de este captulo.
Como ya conocemos, las reglas para combinar los elementos bsicos de un
lenguaje forman la sintaxis del lenguaje. Existen un nmero determinado de
palabras reservadas, que slo pueden ser utilizadas de un modo limitado: ins
trucciones o sentencias de programacin. (En Pascal adems de las palabras
reservadas como sentencias, existen los identificadores estndar que tienen un
I ~
significado predefinido, o bien ser elegidos por el programador.)
Procedimiento 4
Aunque en el Captulo 1 se hizo una breve introduccin a los elementos
bsicos de un programa: datos, variables y expresiones, en este captulo profundi
zaremos en estos conceptos y en algunos otros.
Los elementos bsicos cuya correcta combinacin permite construir un pro
grama son:
- palabras clave e identificadores,
Figura 3.12. Programa alternativo
- constantes,
83
82
TECNICAS DE PROGRAMACION 85
84 METODOLOGIA DE LA PROGRAMACION
Los nmeros reales se pueden expresar en notacin de punto (coma) fijo y
- variables,
en notacin de punto flotante.
- expresiones,

- sentencias de asignacin.
Punto fijo 3.141592 0.00000254 -324.567
Punto flotante 0.3141592e+1 4.5e-S -12.4567e2
4.1 .1 . Palabras clave e identificadores o sus equivalentes (e representa la potencia de 10)
Las palabras clave o reservadas constituyen las instrucciones (rdenes -co
0.3141592x10i1 4.5x10i-s -12.4567x lOi2
mandos-, sentencias, funciones y operadores) intrnsecas al lenguaje de progra

macin y son la parte fundamental de su sintaxis.


La notacin exponencial de un nmero real se representa por t
Los identificadores tienen un significado predefinido (por ejemplo, en Pascal,

abs, input, read, eoln, reset, char, etc.) o bien ser elegidos por el programador

Constante decimal: e + n
como son los casos de los nombres de variables, programas, etc.

Las palabras reservadas no pueden ser elegidas como identificadores o nom Donde n es la potencia de diez a la que se tiene que elevar la constante deci
bres de variables. Son palabras reservadas
mal. En realidad esta constante es un tipo particular de las constantes reales

Pascal e+5 equivale a 105


BASIC
GOTO, READ, INPUT, END... and, array, type, case, begin...
Constante de caracteres (char)
Es un carcter perteneciente al conjunto de caracteres disponibles. Normal
4.1 .2. Constantes
mente, los caracteres disponibles son letras maysculas y minsculas, dgitos,
Una constante es una cantidad cuyo valor no cambia durante el proceso, es smbolos de puntuacin y otros smbolos. Las constantes de caracteres se organi
zan en series o secuencias de caracteres denominadas cadenas (<<strings).
decir, es un elemento fijo de datos.
Para expresar una constante es preciso escribir su valor, por ejemplo, 1, -25, En lenguaje Pascal, las constantes de caracteres se escriben encerrando los
43 3.141592. La mayora de los lenguajes permiten diferentes tipos de constan- , caracteres en un solo signo de comillas o mejor en apstrofo.
tes, siendo las ms comunes: enteros, decimales, caracteres y constantes boolea- !
'A' 'B' '*' 'Hola Flanagan'
nas o lgicas.
En lenguaje BASIC las cadenas se escriben entre comillas
Constante entera (integer) "A" "B" "*" "Hola Flanagan"
Una constante entera es un nmero con un valor entero, positivo o negativo.
Constante boolean
5 -124 465 +12456
La constante boolean puede tener dos valores posibles: verdadero (true) y
Las comas y espacios no se deben utilizar para separar grupOS de dgitos en falso (false). Los valores boolean son muy tiles en programacin.
enteros. El nmero 31.425.427 se debe escribir 31425427.
4.1.3. Variables
Constante real (real)
Las variables representan tambin elementos de datos variables. Mientras
Un decimal o constante real es un nmero escrito con un punto decimal que una constante siempre representa un elemento fijo de datos, las variables
(nmero decimal). representan elementos que pueden cambiar durante la ejecucin de un programa
(por ejemplo, por la accin de una instruccin de lectura de datos). Las variables
41.35 -0.561 32.S21 4.0 se refieren en los programas por nombres simblicos o identificadores.
Dependiendo del lenguaje, existen diferentes tipos de variables, tales como
Obsrvese que si bien 4.0 por su valor es un entero, se considera como constante enteras, reales, caracteres, etc.
decimal. c.--.'.'..:.s_..
86 METODOLOGIA DE LA PROGRAMACION
TECNICAS DE PROGRAMACION 87

Tabla 4.1. Variables de Jos lenguajes BASIC y Pascal


Los parntesis se utilizan tambin para agrupar trminos y asegurarse que
las operaciones se ejecutan en el orden correcto.
BASIC Pascal
variables numricas
enteras integer {enteras A * (B - 7) se efecta primero B - 7 Yluego el resultado se multiplica por
simple precisin real (real) el valor de B.
doble precisin char (carcter)
variables de cadena de caracteres boolean (lgicas)
En el caso de que se presenten diferentes smbolos, y se produzca una ambi
gedad en el orden de las operaciones, existe una prioridad o precedencia asocia
Una variable, o mejor un cierto tipo, puede tomar slo valores de ese tipo. da con cada operador y la ejecucin de las operaciones se realiza por orden de
Una variable de carcter, por ejemplo, puede tener como valor slo caracteres, prioridad comenzando por la ms alta. En caso de' igualdad en prioridad, se
mientras que una variable entera slo puede tomar valores enteros. Cualquier procesan los operadores en orden de izquierda a derecha.
intento de asignar un valor' de distinto tipo a la variable producir un error. La prioridad suele ser similar en los diferentes lenguajes, y se indica en la
Tabla 4,3.

4.1.4. Expresiones Tabla 4.3. Prioridad de operadores aritmticos.

Se pueden evaluar datos y por consiguiente obtener nuevos valores, evaluan Operador Prioridad
do expresiones. (ms alta)
Las expresiones son combinaciones de constantes, variables, smbolos de -. /
+, -
operacin -operadores-, parntesis de apertura y cierre y nombres de funcio
nes especiales.
\. MOO
1 (ms baja)

Las expresiones matemticas tienen igual sentido, por ejemplo:


En consecuencia,
x (Y + 5) - 4 *Z+ IX
;
., A*B+7
es igual que (A * B) + 7
Aqu, los parntesis indican el orden de clculo, + y - representan adicin y' P+ (M/N) + Q es igual que P + M/N + Q
resta, y ~- significa la raz cuadrada de x. ((A * B)/C) * D es igual que A * B/C * D
Cada expresin tiene un valor, que se determina tomando los valores de las.
constantes y variables de la expresin y ejecutando las operaciones indicadas. Adems de los operadores es posible utilizar funciones matemticas estndar
del sistema o definidas por el usuario (en el apartado 4.7 se explicar el concepto
de funcin) como
4. 1.4. 1. Expresiones aritmticas
Las expresiones aritmticas son anlogas a las frmulas matemticas. LaS ABS (X) valor absoluto de X
variables y Constantes implicadas en la expresin son numricas (enteras o reales] SQR (X) raz cuadrada de X
y las operaciones vienen expresadas por los operadores matemticos; vase Ca SIN (X)
seno de X (en radianes)
ptulo 3). lN (X)
logaritmo neperiano de X
Tabla 4.2. Operaciones aritmticas
En las funciones, X (argumento) puede ser entero o real.
potenciacin (213 = 8)
+ suma (5 + 4 = 9)
resta (8 -3 = 5)
4.1.4.2. Expresiones booleanas
multiplicacin (5 -8 =40)

/ divisin (15/2 + 7.5)

(17 OIV 3 = 5 bien 17\3 = 5)


Una expresin booleana es una expresin en donde existen entre otros ele
\ OIV divisin entera
MOO mdulo entero (17 MOO 3 =2) mentos, operadores de relacin o lgicos y su valor es siempre verdadero o falso.
(resto) Un sistema para generar expresiones booleanas es combinar operadores boolea
os y relacionales con otros elementos.
\. ~L"/ 'ret-' tM -..'
88 METODOLOGIA DE LA PROGRAMACION TECNICAS DE PROGRAMACION 89

Tabla 4.4. Operadores lgicos Tabla 4.6. Prioridad total de operadores

AND AANDB la expresin es verdadera slo si A y B son verdaderos, BASIC Prioridad Pascal

en caso contrario es falso. mxima

OR A OR B la expresin es verdadera si A o B es verdadero, y falsa ( ) ( )


si A y B son falsos.
NOT NOTA la expresin es verdadera slo si A es falso, y vicever noto
sa. " I ',1, modo divo and

+, -
+, -, or

\, MOD

Ejemplos
=, < >, <,>,<=,>=
<, <=,>,>=,=,< >, in
NOT
A = verdadero B = falso
AND
NOT (A) OR B = falso OR falso = falso.
OR
NOT (A OR B) = NOT (verdadero OR falso) = NOT verdadero = falso.

NOT (A AND B) = NOT (verdadero AND falso) = NOT falso = verdadero.

Todos los operadores de una misma lnea tienen igual prioridad. Dentro de
Las expresiones booleanas se pueden expresar tambin con operadores de
una misma lnea -prioridad igual-, la evaluacin de operadores se hace de
relacin o comparacin (Tabla 4.5).
izquierda a derecha. Los operadores de una lnea tienen prioridad sobre los de
la lnea inferior.
Tabla 4.5. Operadores de relacin

Igual
> Mayor que 4.1.5. Sentencias de asignacin
> = Mayor o igual que
< Menor o igual que Para ejecutar clculos se necesitan sentencias que indiquen a la computadora
< = Menor que o igual
< > No igual
qu acciones ha de ejecutar. La herramienta bsica es la sentencia de asignacin
(en el apartado 3.4.2 se estudi el concepto de asignacin). Las sentencias de
asignacin son una parte fundamental de casi todos los lenguajes de programa
Los operadores de relacin se utilizan para comparar expresiones. El formato cin, permiten asignar el valor de una expresin a una variable. Recordemos que
general de tal comparacin es
A:=B+1 (Pasca.!) A=B+1 (BASIC)

expresin 1 OPERADOR RELACIONAL expresin 2 significa que se han de ejecutar las operaciones del lado derecho y asignar el
valor obtenido a la variable de la izquierda. El lado derecho de la sentencia
puede ser cualquier expresin legal y el lado izquierdo debe ser un nombre de
Ejemplos variable. En general, la expresin de la derecha debe tener un valor del mismo
tipo que la variable de la izquierda. Si se dan varias sentencias de asignacin se
A=5 B = 14 A>B falso sUpone que se ejecutan en el orden en que estn escritas.
A=4 B=10 (A - 3) > (B - 5) falso No se puede tener una expresin en el lado izquierdo. La sentencia de
A=4 B = 10 (A - 3) < (B - 5) ve'rdadero. asignacin no debe confundirse con una ecuacin matemtica o la igualdad
aritmtica. Por consiguiente:
Las reglas de prioridad se aplican tambin en este caso. Todos los operadores
de relacin tienen menor prioridad que los operadores aritmticos. A+5:=B-6

REGLAS DE PRIORIDAD en PascaljBASIC no es un formato correcto, aunque la ecuacin matemtica


Como ejemplo hemos elegido Pascal y BASIC para da~ las reglas de prioridad,
aunque en los restantes lenguajes suelen ser siJ?1ilares.
<~\ifi;,;;;;{ ti tii
A+5=B-6
I .~"V""IDAD NACIONAL AalERTA J

90 METODOLOGIA DE LA PROGRAMACION TECNICAS DE PROGRAMACION 91

tiene sentido. Por el contrario 2. Sentencias de asignacin con expresiones de carcter o booleano

N: = N + 1 N=N+1 Pascal
DEMO: = 'C'; correcta si DEMO es de tipo CHAR

es aceptable como sentencia de asignacin y no como ecuacin matemtica; NOMBRE: = true; correcta si NOMBRE es de tipo boolean

significa que el valor de la variable N se debe incrementar en l. M:=(B>C); es correcta si M es de tipo boolean

El formato de la sentencia de asignacin vara de un lenguaje a otro, si bien'


la idea bsica permanece.
4.1.6. Otros elementos
Pascal
Adems de las constantes, variables, expresiones y sentencias de asignacin,
I variable: = expresin I los programas se componen de otra serie de elementos tales como bucles, bifurca
ciones, contadores, acumuladores, interruptores as como los subprogramas que
BAS/C estndar constituyen mdulos independientes dentro de los programas.
Todos los elementos bsicos unidos adecuadamente mediante las estructuras
I variable = expresin I bsicas constituirn los programas.
En lo que resta de captulo estudiaremos los restantes elementos y estructuras
bsicas que van a permitir el diseo adecuado del algoritmo para la resolucin
o bien de un problema que convenientemente codificado se convertir en un programa.

I LET variable = expresin I


CAMPOS DE MEMORIA
BAS/C HP (ANSI)
A lo largo de un proceso se necesita, con frecuencia, almacenar datos, para
I LET variable 1, variable 2, ... = expresin I su posterior recuperacin. El almacenamiento de los datos y las operaciones con
ellos exige su introduccin en memoria, en reas de almacenamiento especfico
I variable 1, variable 2. n. = expresin I de la computadora. Las reas de almacenamiento se denominan campos de me
moria.
Nota: La expresin en cualquier lenguaje puede ser numrica, de caracteres o booleano Los campos de memoria se dividen en los siguientes tipos:
~
entrada
salida
Ejemplos trabajo

l. Escribir como sentencias de asignacin las frmulas del rea y longitud de\i
- Campos de entrada: contienen los datos de entrada que an no han sido
un crculo de radio R.
utilizados durante el proceso.
a= 1t Rt2
- Campos de salida: contienen los datos de salida que ~an a visualizar en
L=21tR
pantalla o escribir en algn dispositivo.
- Campos de trabajo: contienen los datos o resultados parciales que se
Pascal BAS/C almacenan hasta que son requeridos por el programa.
AREA: = 3.141592*RADIO*RADIO;* AREA = 3.141592*RADIO*RADIO
LONGITUD: = 3.141592*2*RADIO; LONGITUD = 6.283184*RADIO Las variables, contadores, etc. que veremos en los prrafos siguientes, se
almacenan en campos de memoria.

trnl'9"~.. ii"a-a.'.'la}i-.~i.~Ci~(reras.7lte;5ia.'

".'''''' "PII.SC.af.e. XT.'ge-1!'tI1ltt


..
"': n:" ,1\ ,:.1.'\ Lll{H::-I,\ 1<\, ! ~ 'Ii,""'. "" ~... " _

< <'"'-:_--_F~_=-~,
92 METODOLOGIA DE LA PROGRAMACION TECNICAS DE PROGRAMACION 93

4.2. BUCLES E ITERACIONES


Un bucle es un proceso en el que se ejecutan una serie de operaciones un .
nmero determinado de veces; las operaciones sern siempre las mismas, pero "
con datos y resultados diferentes. En el caso de un programa de computadora,
el bucle o lazo es un conjunto de instrucciones que deben ser ejecutadas un
l ,
cierto nmero de veces, en un proceso iterativo o repetitivo; el bucle constar Accin f1

de una entrada y una salida; la entrada se producir con una o varias instruccio
nes y la salida del bucle -fin del proceso repetitivo- se producir cuando se
cumple una condicin.
Un bucle se representa grficamente as:

Accin f2

It

No
Accin f1

S
I
Salida
I bucle
del bucle
I
~

Accin f2
Una iteracin es la repeticin controlada de la secuencia de acciones internas
al bucle.
En general, un bucle constar de las siguientes partes:

- preparacin o arranque del bucle: una o ms instrucciones que pueden


ser: asignacin de valores a constantes, contadores a cero, dimensionado
de listas o tablas, etc.

Si no se pone condicin de salida se permanecer dentro del bucle indefinida - cuerpo del bucle: grupo de instrucciones que integran realmente el bucle
mente, y se conoce a este tipo de bucles como bucle infinito o bucle sin fin. La para cumplir el objetivo e&pecificado y que se repiten mientras no se
salida del bucle exigir el cumplimiento de una condicin, por ejemplo que una

cumple la condicin.
determinada variable tome un determinado valor, X = 999, X = 0, etc. As la

- modificacin del bucle: conjunto de instrucciones que modifican el bucle,


representacin grfica del bucle sera:
haciendo progresar su ejecucin hata su terminacin final; se suele realizar
Con contadores, totalizadores.

- comprobacin de la condicin: suele constar de una instruccin para averi


guar si se ha producido la condicin que determinar la salida del bucle.
.j~~~~..L.,,,:~<.~-
94 METODOLOGIA DE LA PROGRAMACION TECNICAS DE PROGRAMACION 95

El organigrama tpico de un bucle es el siguiente: Ejemplo

IniCIO Inicio

Preparacin Lectura de
una lista

sr No
Modificacin

Operaciones
Clculo
de impresin

Cuerpo

Salida Salida
resultados resultados
No

Salida
del bucle e Fin)
Figura 4.1. Organigrama tpico de un bucle.
El valor de los valores de control que intervienen en la condicin pueden
ser variables y cuyos valores dependan de resultados anteriores a la condicin
(caso de K) o de operaciones posteriores a la condicin (caso de M).
96 METODOLOGIA DE LA PROGRAMACION TECNICAS DE PROGRAMACION 97

I En las instrucciones de preparacin del bucle se realiza la inicializacin del


I contador o contadores. La inicializacin de un contador consiste en poner el
1 valor inicial de la variable que representa al contador
I
'(
N=5 1= 3 p=o
K, valor de
N=K 1------ control que
viene impuesto Por consiguiente, el contador se representar por una instruccin de asigna
cin del tipo
N= N+ 1 N = N-I

siendo 1 el incremento del contador.


Un ejemplo de la aplicacin de un contador en un ordinograma es:
No S
M.:;N

Valor inicial
N=K de contador
N es K
Accin a1

S No

M, variable de
~---- M = expresin
control resultado
matemtica
de una operacin

Accin 1
Salida del

bucle

4.3. CONTADORES I
't'
En los procesos repetitivos se necesita normalmente contar los sucesos

acciones internos del bucle, como pueden ser: registros o elementos de un fiche~
Accin n

ro y nmero de iteraciones a realizar por el bucle. Para realizar esta tarea

utilizan los contadores, cuya construccin es una de las tcnicas corrientes e

la realizacin de cualquier diagrama de flujo.

Un contador es un campo de la memoria que est destinado a contener lo:..."

diferentes valores que se van incrementando o decrementando en cada iteracin!'

El campo contendr las sucesivas sumas parciales que se van realizando en 1


Incremento

- N= N+ I
ejecucin de las sucesivas repeticiones. El incremento en las sumas parciales e~
t contador

siempre constante, pudiendo ser positivo o negativo, es decir el contador se ir


,
incrementando o decrementando. El contador se representar en un program

con U11a variable.

.... ~
.
98 METODOLOGIA DE LA PROGRAMACJON TECNICAS DE PROGRAMACION 99

I
En el ejemplo anterior, los sucesivos valores de N se muestran en la Tabla 4.7, I
para los diferentes valores de 1. t

Tabla 4.7. Valores sucesivos de N 1=5

Caso Valor inicial N Incremento I Valores sucesivos de N


a O 1 1,2.3.4...

b 5 1 6.7,8.9....

c 6 3 9.12,15,18....
N =1
d 8 -1 7,6,5.4,3....

e 15 -3 -12, -9, -6. -3, ...

La salida del bucle se produce cuando el valor N se hace mayor que el valor 1) No
prefijado de M. En el caso anterior y para los sucesivos valores de M la salida'
se producir segn indica la Tabla 4.8.

~
, Fin
J I S
Tabla 4.8. Salida del bucle

Caso

a
b
c
d
e
Valor inicial
deN
O
5
6
8
15
Incremento I

1
1
3
-1
-3
Valor de
M
10
25
15
-4
O
SaIJda cuando
M= ...
11

26

16

-5

-1

/ Impresin
de N

es el
smbolo de A = 2 N
multiplicacin

Un ejemplo especfico de un bucle, con la variable N como contador y laj'

constante 1 = 5 como incremento del contador.

Impresin
de A

N=N+l

" _".<~ ...:.,.,.... ".


100 METODOLOGIA DE LA PROGRAMACION TECNlCAS DE PROGRAMACION 101

El valor de N se incrementa de 1 en 1 (los valores sucesivos son 2, 3, 4, ...)


Yla salida se produce cua.ndo N vale 6. Las sucesivas salidas de A y N son:

N A
1 2
2 4
3 6
4 8
5 10

Si por el contrario la condicin es Leer


nmero N

S
sr

No

Acumulador
S

el bucle no se realizar nunca y se saldr de la condicin terminndose el


diagrama, ya que en la primera pasada como N = 1 el = 5, resulta que N < 5 No
y por consiguiente la respuesta es no. ~.;

4.4. ACUMULADORES

Un acumulador o tGtalizador es un campo o zona de memoria cuya misin


es almacenar cantidades variables resultantes de sumas sucesivas. Realiza la fun
cin de un contador con la diferencia que el incremento o decremento de cada
suma es variable en lugar de constante como en el caso del contador.
Se representa por S = S + N donde N es una variable y no constante.
El diagrama de flujo lee un conjunto de datos numricos y obtiene la suma
de todos aquellos nmeros que sean positivos. ( Fin~
102 METODOLOGIA 01= LA PROGRAMACION
TECNICAS DE PROGRAMACION 103

Ejemplos de aplicacin
Comienzo
Diagrama J. Diagrama de flujo que suma todos los nmeros contenidos en
un fichero (lista de datos).

Comienzo ST = O

N=O Lectura
N,E, S,P

Lectura de
D (Datos)

S .
Imprimir

total sueldos sr

No

N=N+D
sr = sr + P ( Fin)

4.5. BIFURCACIONES
Las instrucciones de un programa se ejecutan, como ya sabemos, de un modo
secuencial. Sin embargo, en numerosas ocasiones es preciso romper el orden
secuencial de las instrucciones y bifurcar. saltar o transferir el control a otras
Diagrama 2. Lectura de un fichero de datos de empleados de una empresa '
instrucciones del programa que no sean consecutivas a las que en ese momento
(nombre, edad, nmero seguridad social, sueldo), e impresin de los datos perso
se ejecutan.
nales de cada empleado as como la suma total de sueldos que paga la empresa.
Las instrucciones que siguen a la que se salta se volvern a ejecutar secuen
104 METODOLOGIA DE LA PROGRAMACION TECNICAS DE PROGRAMACION 106

cialmente hasta la aparicin de otra instruccin de bifurcacin o el fin de progra a la instruccin siguiente a la que produjo la bifurcacin; para ello se
ma. Como se ver posteriormente en el caso de las subrutinas, en el caso de guardar la direccin de retorno en la memoria (en unas zonas o memo
instrucciones de bifurcacin es posible conservar la direccin de retorno al rias llamadas pilas) cuando se realiza el salto y al terminar las instruccio
programa principal, tras ejecutar las instrucciones a donde se haya transferido nes de transferencia se recupera dicha direccin de retorno para poder
el contro. Los saltos o transferencias de control pueden ser positivas (hacia continuar en ella el flujo normal del programa.
delante) o negativas (hacia atrs), lo que puede implicar la no ejecucin de
_ Dirigidas: son aquellas en que para retornar el control es necesario generar
instrucciones -saltos positivos- o repeticin de instrucciones -saltos negati
una nueva bifurcacin que dirija el flujo del programa a la siguiente
vos.
Existen dos tipos de bifurcaciones: instruccin en la secuencia ordinaria.

- Condicionales: la bifurcacin depende del cumplimiento de una determi Condicional


nada condicin; cuando se cumple la condicin el control del programa
bifurca a la instruccin especificada; si la instruccin es falsa el programa 1
I
continua ejecutndose en la siguiente instruccin en el orden secuencial
previsto. t
S
- Incondicionales: la bifurcacin se realiza siempre que el programa pase
por la instruccin sin el cumplimiento de ninguna condicin.
La expresin en ordinogramas de las instrucciones de bifurcacin son:
Si se verifica la condicin
Condicional Incondicional Fl F2 realizar F2

Si-no se verifica
realizar Fl

I==l
~ I

s ...-
Salto
positivo
B. I
Salto
negativo

B
Accin an-l No

+
B
Otra clasificacin de las bifurcaciones es en funcin de la existencia de retor
Bifurcacin
incondicional
(salto)
--o Fl

no o no a la instruccin siguiente a la que realiza el salto. Existen dos tipos de Si se verifica la condicin
bifurcaciones: realizar Fl
- Controladas: son aquellas en las que una vez terminadas de ejecutarse las Si-no se verifica
instrucciones siguientes a la bifurcacin, el control del programa retornl'l saltar a la instruccin 1
106 METODOLOGIA DE LA PROGRAMACION TECNICAS DE PROGRAMACION 107

4.5.1. Bifurcaciones anidadas

Las bifurcaciones condicionales y no condicionales se pueden anidar (situar


No se unas en el interior de otras) como indica el siguiente diagrama de flujo:

Inicio

F1
0- Bifurcacin
incondicional
(salto)

Lectura de
datos fichero

I
I
I

~~
"1
Si se verifica la condicin

saltar a la instruccin 1

Si-no se verifica realizar F1


1"',"' I 1

~ No -[ "H2. 1 I .
S

f rfz--rt
No
N3 = N3 + 1

l :,J 8000
Rn

Si expresin = R1 p = P+ 1
seguir camino 1 (saltar al)

Si expresin = R2
seguir camino 2 (saltar a 2)
Si se verifica la condicin

realizar Fl

Si-no continuar secuencia


Nota: Las condiciones en las instrucciones de bifurcaciones pueden ser expresiones aritmticas,
lgicas o relacionales,
108 METODOLOGIA DE LA PROGRAMACION
TECNICAS DE PROGRAMACION 109

El diagrama de flujo que representa el interruptor es:

1
sr No
~

Interruptor =O
sr

4.6. INTERRUPTORES O CONMUTADORES =0 =1

Un interruptor o conmutador ("switch") -a veces se les llama centinelas, ]


banderas, ''jlags''- es un campo de memoria (variable) que toman diversos
valores a lo largo de la ejecucin del programa y que permiten comunicar Accin 1 Accin 2
informacin de una parte a otra del mismo, es decir variar la secuencia de
ejecucin de un programa, dependiendo del valor que tenga en cada momento.
Los dos nicos valores que puede tomar un interruptor son 1 y O (encendido y
apagado, abierto y cerrado). .
Los interruptores suelen intervenir en las bifurcaciones condicionales cuando-;
el salto se debe demorar a un momento en que no se disponga la informacin'1\!
original, en lugar de realizarlo inmediatamente que est presente la condicin. A

La tcnica del interruptor es:


a) Reserva de una posicin de memoria para contener una constante que
posteriormente se utilizar en operaciones de comparacin. A esta constante
(IN, CON, SW, etc.) se le puede dar el valor 1 (interruptor on, cerrado) o eq
En el caso del tratamiento de ficheros secuenciales en lenguaje BASIC, existe
valor O (interruptor off, abierto), pero previamente se le ha asignado un determi~ i
Un caso tpico de interruptor: la funcin EOf. Esta funcin toma el valor O si
nado significado, por ejemplo IN = 1 puede significar que la ficha leda de un'"
el fichero no se ha terminado de leer -quedan registros o fichas- y el valor
registro ocupa posicin par y si IN = O significar que' la ficha leda es impar.
-1 cuando se ha ledo todo el fichero -no quedan fichas o registros.
Otro ejemplo de posibles significados podra ser: IN = 1, condiciones iniciales
constantes; IN = O, condiciones iniciales variadas. El interruptor puede activarse
(asignarle un valor) tras realizar una prueba y en funcin del resultado; as por Variante del interruptor
ejemplo si se est examinando un fichero de estudiantes, y el inters reside en
)
los estudiantes de Medicina, se puede asignar IN = 1 si estudia Medicina e IN = O El uso del interruptor binario (dos estados) se puede ampliar a un interruptor
en el resto de los casos. De este modo el proceso de los datos de estudiantes de ml\iple, en el caso de que el programa tuviese n ramas en paralelo. En este
Medicina se identificar rpidamente, preguntando si IN = l. caso dependiendo del estado de un suceso determinado que pudiese tomar n
En esencia un interruptor permite dirigir el flujo de los procesos con dos estados distintos, se podra utilizar un interruptor mltiple.
ramas paralelas, en un sentido o en otro dependiendo de la ocurrencia de una
situacin determinada (IN = 1) o de la contraria (IN =0).
110 METODOLOGIA DE LA PROGRAMACION

ella deben hacer cada parte tan independiente como sea posible de los
dems. Cmo puede un programa, que es una tarea sencilla, ser dividida
en dos subproblemas independientes?
Un medio de solucionar estos dos problemas es dividir el programa en partes
que puedan ser desarrolladas por separado y eventualmente integrarse en una
unidad. Tales partes independientes se llaman mdulos o subprogramas.
El tratamiento independiente de un mdulo se puede hacer normalmente
por dos motivos distintos:
- los mdulos se repiten varias veces dentro un mismo programa;
- los mdulos efectan una tarea de gran importancia cada uno de ellos.
As un mdulo se puede representar por:

Mdulo

En la integracin del programa completo o principal se podra representar


grficamente.

4.7. SUBRUTINAS O SUBPROGRAMAS


Subprograma A Subprograma B
Como se ver con ms detenimiendo en el Captulo 7 la programacin
estructurada consiste en descomponer sucesivamente un problema en mdulos
que se tratarn y programarn independientemente unos de otros.
Consideremos las siguientes dos situaciones:
l. En un cieIto programa. diferentes listas o tablas (arraY$) de nmeros se Fl Gl
desean clasificar por oden ascendentc y luego desccnclente--es decir. prime F2 G2
ra la lista A. luego la B y luego la C--. Conocemos un algoritmo de clasifica
cin -por ejemplo el bublesOl'[) (burbuja) o el quicksort (rpida) por
Subprograma
I
lo que escribiremos en primer lugar el cdigo (programa) para clasificar A, Subprograma

ebcb

A B
a continuacin se repite el proceso, con los cambios adecuados, para clasifi
car B y C. Esto est claro, pero reql'iere el uso de cdigos casi iguales para
las tres listas. Podramos ahorrar esfuerzos si fuera posible escribir el cdigo
solamente una vez y a continuacin aplicarlo a A. B YC (o a las listas que
se desee).
2. El programador jefe o el analista de aplicaciones de un gran proyecto desea
dividir el trabajo entre varios programadores. Para evitar confusiones, l o
112 METODOLOGIA DE LA PROGRAMACION TECNICAS DE PROGRAMACION 113'

Un subprograma puede ejecutar las mismas acciones que un programa: (1) . El nmero posible de llamadas sucesivas entre subprogramas normalmente
aceptar datos, (2) ejecutar clculos y (3) devolver o proporcionar resultados. Sin vendr limitado por la memoria de la computadora.
embargo un subprograma se utiliza por el programa para un fin especfico. El El subprograma, como se ha comentado, est constituido por un grupo de
subprograma recibe datos del programa y le devuelve resultados. Podemos ima instrucciones que no forman parte del programa principal. Sin embargo, aunque
ginar que el subprograma es el jefe de una empresa o de una unidad militar que cada subprograma es funcionalmente independiente (incluso ensamblado o
da rdenes a un subordinado y cuando la tarea ha sido terminada ste le informa compilado) no funciona nunca solo, debe siempre ser llamado por el programa
del resultado de la misma. Se dice que el programa llama o invoca (<<call) al principal y dejar de actuar cuando haya terminado su funcin y el control se
subprograma. El subprograma ejecuta una tarea, a continuacin retorna o de retorne al programa principal.
vuelve (<<return), el control al programa. Esta accin puede suceder en diferentes El subprograma puede ser compilado o ensamblado (en el caso de lenguajes
partes del programa. Cada vez que el subprograma es llamado, el control vuelve. intrpretes -BASIC-, tambin puede ser grabado con independencia y poste
al lugar desde donde fue hecha la llamada -bifurcacin controlada (Figu riormente con sentencias tipo CHAIN o MERGE, ser llamado para encadenarse
ra 4.2). o fusionarse con el programa principal) independientemente del programa prin
cipal, lo que presenta la ventaja de poder ser utilizado con diferentes programas
Programa principales y la consiguiente facilidad en la depuracin, puesta a punto y modifi
caciones al tener longitud ms pequea -normalmente- que el programa prin
cipal.
Llamada 1(call)
Subprograma Aunque los subprogramas son independientes del programa principal, evi
dentemente se necesitar un medio de comunicacin entre el programa principal
y subprograma, y viceversa. As en el caso de lenguajes como Pascal, True
BASIC, Macintosh BASIC, Lago..., la llamada se realiza mediante la definicin
previa de dichos subprogramas (denominados procedimientos en estos lenguajes
debido a que su funcionamiento es distinto de las subrutinas) y luego simples
llamadas por su nombre; en el caso de lenguajes ms formales, como FOR
TRAN, COBOL o BASIC, las llamadas se realizan de un modo ms explcito,
mediante instrucciones.
Retorno

FORTRAN CALL
COBOL PERFORM
Figura 4.2. Un programa con un subprograma.
BASIC GOSUB (o CALL, USR o SYS si los subprogramas estn
en lenguaje mquina)
Un subprograma puede tambin tener a su vez uno o varios subprogramas,
que se suelen conocer como subprogramas anidados o bien de niveles jerr Aunque hasta este momento nos hemos referido a un solo tipo de programas
quicos. -los que se conocen en la jerga informtica por subrutinas-, en realidad
existen dos tipos de subprogramas:
Programa Subprograma A
Subprograma
-- Procedimientos o subrutinas
--- Funciones

Las funciones y procedimientos han de ser definidos y su llamada se realizar


por su nombre. mientras que las subrutinas sern llamadas mediante instruccio
nes especificas.
Las definiciones de tnciones especifican clculos que producirn valores

l ' Subprograma B
necesarios para evaluar expresiones. Las dejiniciones de procedimientos especifi
can clculos que ejecmarn acciones en lugar de producir valores.
Las funciones y procedimientos (subrutinas) se denominan subprogramas
ya que sus definiciones especifican clculos subsidiarios a un programa, esto es,
clculos que producen la accin o valor requeridos. Para manipular programas
Figura 4.3. Un programa con subprogramas anidados.
114 METODOLOGIA DE LA PROGRAMACION

TECNICAS DE PROGRAMACION 115


adecuadamente, necesitamos comprender los siguientes aspectos de su funciona
miento: cin de un subprograma proporciona informacin por medio de parme
Cmo se definen los subprogramas? Existen unas reglas de construccin tros actuales (o argumentos, tales como 3.4 y 2 en Figura 4.4. Los parme
o definicin de los subprogramas de modo similar a las que existen para tros actuales o efectivos especifican los valores actuales utilizados para
la construccin de programas. Cada lenguaje tiene sus propias reglas espe parmetros formales en la definicin de subprograma. La relacin o corres
cficas. pondencia entre parmetros formales y actuales constituye un mecanismo
de paso a definir.
Cundo se ejecutan los subprogramas? La ejecucin de un subprograma
se invoca o llama durante la ejecucin de un programa. Una funcin se
Cmo proporcionan la informacin los subprogramas? La funcin propor
referencia -no se llama explcitamente- si debe ser evaluada. Un proce
ciona informacin en forma de un valor, -por lo que en alguna parte
dimiento o subrutina se invoca si la instruccin espec'fica o el nombre
del programa debe existir una instruccin de asignacin-, por ejemplo
que define el procedimiento se ejecutan.
11.56 en la Figura 4.4, que podr ser utilizada en la evaluacin de cual
Por ejemplo, si en una expresin interviene la funcin y = sin(x) quier expresin.
y = Z * sin (X) Una diferencia entre funciones y subrutinas, es que:
se est invocando el subprograma correspondiente. - Las funciones devuelven un valor.
- Las subrutinas pueden devolver diferentes valores.
Cmo se proporciona la informacin a los subprogramas? En general, los
subprogramas reciben informacin a travs de parmetros formales (o
variables falsas "dummy': tales como x, n... en Figura 4.4). Cada invoca Cmo interactan las variables en subprogramas independientes? Las
variables se clasifican en locales y globales. Una variable local es una
variable declarada dentro de un subprograma y distinta de las variables
con el mismo nombre declaradas en otra parte del programa. Una variable
'nvocacin es global cuando est definida a un nivel ms amplio que las locales;
a. de la funcin
normalmente se define en el programa principal.
El significado de una variable se limita al procedimiento en que est
y: = potencia (3.4,2) 1I( I declarada. Cuando otro subprograma utiliza el mismo nombre, se crea
11.56 otra variable diferente, es decir, el nombre se refiere a una posicin diferen
x=3.4 te en memoria. Se dice' que las variables son locales al subprograma en
n=2 que est declarada. La parte del programa en el que una variable tiene
accin (identidad, definicin y ejecucin del programa) se conoce como
b. Definicin de la
mbito. rango o campo de definicin ("scope'J de esa variable.
funcin
Si un subprograma asigna un valor a una de las variables locales, este

var z: real
i: integer

begin
"'
- '"
function potencia (x: real; n: integer): real;

\ ......- - - - - - - - - T i p o de valor
Parmetros formales
. valor no es accesible a otros subprogramas -es decir, no pueden utilizar
este valor-o Sin embargo, en ocasiones, es conveniente permitir que el
identificador (nombre de la variable) tenga el mismo nombre en diferentes
subprogramas ampliando su campo de definicin. En este caso se utilizan
variables globales cuyo mbito es ms amplio que un subprograma.
En algunos lenguajes de programacin (BASlC entre ellos), las varia
y: = 1;
bles declaradas en un subprograma pueden retener sus valores entre llama
for i: = 1 to abs(n) do Z: = Z x;
das sucesivas del subprograma. ,En Pascal no se transmiten los valores,
if n < o then Z: = 1/Z

pero es posible su transferencia mediante la correspondencia entre varia


potencia: = Z
bles globales y locales; las variables definidas en un mbito son accesibles
en el mismo y por lo tanto son accesibles desde los procedimientos interio
end: res. En la Figura 4.5 se muestra el campo de definicin de las variables
definidas en los procedimientos M a T.
Figura 4.4. (a) Invocacin; (b) Definicin de la funcin y = x i n en lenguaje Pascal.
11 6 METODOLOGIA DE LA PROGRAMACION TECNICAS DE PROGRAMACION 117

Otra diferencia esencial entre procedimiento y subrutina, reside en el hecho


que los procedimientos pueden llamarse a s mismos por poseer los lenguajes
dotados de ellos (Lago, Pascal, True BASIC, etc.) una propiedad denominada

[gJ
recursin o recursividad (esta propiedad en Pascal se extiende tambin a las fun
Variables
Son accesibles
ciones).
definidas
en los desde los

procedimientos procedimientos
Ejemplo de aplicacin
N
M M, N, P, Q, R, S, T, U Se dispone de una subrutina denominada CLASIFICACION que permite
N N, P, Q
ordenar o clasificar una lista de nmeros. Un programa principal trata con
P P, Q
Q Q
diversas listas numricas que han de ser clasificadas cuando as se requiere en
1, G::I I R
S
R, S, T,U

S, T,U
el flujo del programa. Un esquema grfico del proceso podran ser los diagramas
a, b de la Figura 4.6.
T T,U
S U U

R Programa principal

Figura 4.5. Campo de definicin de variables. C4LL (CL


Ii ~SIFICi1f'
~l..Jarn~O
Subrutina
.. Vii,,;,;;:::,ada 7 IV)
4.7.1. Subrutinas/procedimientos (lit:.,.,
ORA
O)
i~~1
Una subrutina o procedimiento (subrutinas cerradas o externas, se denomi':~ Cjll.LL ,c\..p..S\'f\~!:9t~) Salida
nan en ocasiones) es un mdulo o subprograma independiente que ejecuta UI\ ~aa~
proceso especfico v que es llamado en un momento dado. RETURN (RETORNO)
Las subrutinas pueden ser llamadas desde el programa principal tantas vece~
como sea preciso. devolviendo el control al programa principal cuando se termi~
na su ejecucin. La subrutinas tienen la ventaja de ser totalmente independiente~~ (a)
del programa principal, se pueden almacenar en memoria en cualquier orde" PROGRAMA PRINCIPAL
y adems no necesitan posiciones contiguas en esa memoria. Otra ventaja consi
te en la no limitacin de espacio de memoria. Sin embargo, no se puede asocia~j
ningn valor con el nombre de la subrutina o procedimiento y por lo tanto n .
puede aparecer en una expresin.
1
Llamada 1 a subrutina CAlL (CLASIFICACIONl ~ Subrutina CLASIFICACION
Subrutinas tpicas en los lenguajes de programacin son las definidas o llama'"
das del siguiente modo

FORTRAN
definicin con SUBROUTINE
llamada con CALL
BAS/C
llamada con GOSUB, ON-GOSUB
[d'2,,"bMI"
1
LJN I
[RETORNO)

Los procedimientos en lenguaje Pascal se definen mediante la palabra reservada


"procedure". Un procedimiento se llama escribiendo su nombre, es decir.
DEMO, para indicar que se llama a un procedimiento denominado DEMO. FIN (b)

Cuando se invoca su nombre, los pasos que lo definen se ejecutan y a continua


cin el control retorna al programa que llama. Figura 4.6. Programa principal con subrutins; (a) Bloques; (b) Secue~T.iP-.-
TECNICAS DE PROGRAMACION 119

118 METODOLOGIA DE LA PROGRAMACION

(a) f(x) =- x5
(4.1) funcin con un argumento x
Las subrutinas pueden tener una entrada y una salida, que es lo usual; SI -x
embargo, los subprogramas pueden tener diferentes puntos de entrada, cada un para evaluar f (x) es preciso dar a x un valor actual, con este valor se calcula el
de ellos con una etiqueta o nombre, y el programa principal podr transferir t
control a los distintos puntos de entrada, debiendo incluirse en la instrucci
resultado; con x = 3, se obtiene el valor _3_ = ~= 1.5, que se expresa escri
5- 3 2
de llamada el nombre o etiqueta del punto de entrada elegido. biendo

Programa principal Subrutina f (3) = 1.5

Llamada 1 l Entrada 1 Una funcin puede tener varios argumentos


Entrada 2
(b) f(x,y) = 3.x + 4.y (4.2)

pero, slo un valor se obtiene como resultado para cada conjunto de argumentos
(x e y en el caso anterior).
Llamada 2
Salida Estas y cualesquiera otras funciones podrn ser definidas en cada lenguaje
siguiendo una serie de pasos especficos.
Figura 4.7. Llamadas a subrutinas.
BAS/C

Nota: Un subprograma puede ser llamado desde cualquier parte del programa principal o de otrc DEF FN A(X) = Xj(5-X) (4.1)
subprogramas, mientras que un programa principal nunca puede ser llamado desde Uf
DEF FN A(X,Y) = 3*X+4*Y (4.2)
subrutina, slo es posible retornar a l a la terminacin de la misma.

Pascal
4.7.2. Funciones
function F (X: rea/): real;
Las funciones o subprogramas abiertos son un mdulo o parte del program begin
que realiza un determinado clculo que se utilizar en una expresin del mdul F: = Xj(5-X)

que llama a la funcin. Se diferencia del procedimiento o subrutina en que] end (4.1)

subrutina, cuando se le invoca o referencia entrega un resultado nico, miente<


que los procedimientos o subrutinas pueden entregar 1, 2, 3, ... n valores. U y
funciones suelen tener pocas instrucciones, no tienen secuencia de llamada y s
ejecucin es muy rpida. function F(X: real; Y: real): real;

La mayora de los lenguajes tienen un nmero de funciones intrnseca. begin

estndar o "incorporadas". F:=(3*X)j(4*Y)

end

sin(x), cos(x), tan(x), sqr(x)

Los argumentos (x) de la funcin pueden variar a lo largo del programa; ~


clculo del valor de la funcin se realiza en cada momento sustituyendo ~ 4.8. ESTRUCTURAS BASICAS
argumento por su valor en ese punto.
Adems de las funciones estndar es posible definir otras diferentes: en Pasc: Para poder conseguir un programa estructurado que sea claro, simple, fiable
con fuuctiou y en BASIC con DEF FN. y fcil de leer, ser necesario utilizar estructuras de control que permitan a
En Matemticas, una funcin es una regla que, cuando se le proporcion Cualquier programa o subrutina dividirse en segmentos independientes.
uno o ms valores -llamados argumentos- produce un resultado -el val El teorema de la estructura (tambin denominado Teorema de Jacopini.
de la funcin para los argumentos dados-o Por ejemplo fun,ciones pueden ser:
.-'d c_ .... ce.. ..........

TECNICA5 DE PROGRAMACION 121 :1f


120 METODOLOGIA DE LA PROGRAMACION

Se suele utilizar a veces el trmino DO-ENO para definir el pseudocdigo


Bohm, 1966) establece que un programa propio puede ser escrito utilizando de una estructura secuencial. DO (hacer) para significar el comienzo de la se
solamente tres tipos de estructuras de control; estas tres estructuras bsicas son: cuencia y END (fin) que representa el fin de la parte secuencial. En Pascal se
- Secuencial
utiliza begin-end.
- Selectiva

DO HACER (o bien INICIO)


- Iterativa

accin 1 accin 1
Un programa se define como propio si cumple las siguientes caractersti accin 2 o bien accin 2
cas: accin 3 en espaol accin 3
Posee un solo punto de entrada y otro de salida para control del programa.

Existen caminos desde la entrada hasta la salida que se pueden seguir y END FIN
que pasan por todas las partes del programa.
Todas las instrucciones son ejecutables y no existen lazos o bucles infinitos, En ocasiones se suele utilizar DO SEQUENTIALLY (hacer o iniciar secuen
(sin fin). cia) y END SEQUENCE (fin secuencia).
DO SEOUENTIALLy INICIO SECUENCIA
4.8.1. Estructura secuencial (DO-END, Inicio-fin) accin 1 accin 1
accin 2 accin 2
En la estructura secuencial, los pasos del proceso se ejecutan en secuencia, accin 3 accin 3
uno despus de otro. Las acciones o procesos se representarn del modo si
guiente:
END SEOUENCE FIN SECUENCIA
Diagrama de flujo Pseudocdigo
Como se ve en los pseudocdigos anteriores, es recomendable utilizar identa
cin (sangra o margen interior de las acciones) dentro de las estructuras, ya que
ello facilita la lectura del programa al mostrar de una forma grfica las relaciones
Proceso 1
Proceso 2 existentes entre las distintas instrucciones. La identacin suele ser beneficiosa
Proceso 1
en la codificacin de programas cualquiera que sea el lenguaje de trabajo.


4.8.2. Estructuras selectivas
Una estructura es selectiva cuando slo uno de los procesos alternativos
(acciones o funciones) posibles se puede seleccionar tras el cumplimiento de
alguna condicin determinada. La eleccin entre varias alternativas exige una
toma de decisiones, por ello a veces a las estructuras selectivas se las conoce
Proceso 2 como de alternativa simple, alternativa doble o de alternativa mltiple segn el
nmero de opciones o alternativas que se pueden tomar.
Los puntos donde se deben tomar las decisiones se denomian PUdOS de
decisin yen los diagramas de flujo se representan con el smbolo "rombo", de
modo que uno de los vrtices se ,conecta con el proceso anterior y el otro u otros
Con el resto de los procesos o acciones.
Las estructuras selectivas se clasifican en:
Los procesos o acciones pueden ser desde instrucciones sencillas hasta mdu - Condicionales o alternativa simple.
los completos. - Alternativas o alternativa doble.
La sucesin de las acciones puede ser a1terada mediante un salto o bifurca - Selectivas o alternativa mltiple.
cin, empleando la sentencia GOTO.
':'.ci"~~.
122 METODOLOGIA DE LA PROGRAMACION TECNICAS DE PROGRAMACION 123

4.8.2. 1. Estructura condicional (IF- THEN/Si-entonces) Los restantes formatos son equivalentes; basta sustituir la palabra IF por si,
THEN por entonces y END IF por fin-si.
Realiza la ejecucin condicional de una accin; es decir la accin o proceso
':;(.
slo se realiza si se cumple una determinada condicin. Si la condicin se cumple (resultado verdadero. si) se ejecuta la accin; en
El diagrama de flujo es el siguiente: caso contrario (resultado falso. no) no se ejecuta la accin y se salta, continuando
la secuencia.

1 No
Nota: l. Las estructuras se han escrito con letras maysculas y minsculas deliberadamente. La
razn es que los libros y manuales de programacin as como los editores de texto de las
computadoras utilizados para escribir los programas, en la actualidad, permiten la escritura
tanto en maysculas como en minsculas.
2. En ocasiones las palabras END IF y fin_si se suelen abreviar en ENDIF y finsi.
3. La accin puede ser una o varias.
S

4.8.2.2. Estructura alternativa (IF- THEN-ELSE/Si-entonces-sino)


La estructura condicional es muy limitada, y ser necesario utilizar estructu
Accin ras que permitan la eleccin entre diferentes acciones o procesos. Si las opciones
son dos, la estructura se denomina alternativa. El diagrama de bloques es:

Diagrama de flujo IF-THEN 1


sr~No
l---<~>------l
Al llegar el control al punto de decisin se ha de observar el estado del
sistema. Si se satisface la condicin (respuesta sI) se ejecuta la accin o proceso
yen caso contrario (respuesta no) no se ejecuta. Los pseudocdigos y sus diversos

~
formatos son:

Ingls
1. IF condicin
THEN
accin
2. IF condicin THEN accin END IF
I
LT
END IF

3. IF condicin THEN 4, IF condicin THEN accin


accin Si la condicin es verdadera (si) se realiza la accin 1 y si es falsa (no) se
realiza la accin 2.
5. IF condicin Los pseudocdigos son:
THEN
accin Ingls
1. IF condicin
Espaol THEN
accin 1
1. Si condicin 2.. Si condicin entonces accin fin_si ELSE
entonces accin accin 2
fin-si END IF
~

124 METODOLOGIA DE LA PROGRAMACION


TECNICA5 DE PROGRAMACION 125

2. IF condicin THEN accin 1 ELSE accin 2


Inicio
3. IF condicin

THEN accin 1

ELSE accin 2

END IF
A
Espaol

1. Si condicin

entonces accin 1

sino accin 2

fin_si
S
Condicin 1
Cl
2. si condicin entonces accin 1 sino accin 2
No
3. si condicin
B
entonces
accin 1
sino
accin 2
fin_si

La palabra THEN (entonces) seala la alternativa para procesar la accin d F


S

si la condicin es verdadera. La palabra ELSE (sino) seala la alternativa p


procesar la accin 2 si la condicin es falsa.
1
o
Ejercicio de aplicacin
Un diagrama de flujo puede tener todo el grado de complejidad que se desee~ C
ya que puede contener varias estructuras lgicas. Un ejemplo de ello puede se"
el diagrama de la pgina siguiente cuyo correspondiente pseudocdigo sed

inicio
accin A
si C1
entonces accin B
si C2 -- I E I
entonceS accin O

fin_si
sino accin e
fin_si
accin E

sino accin F

accin G

fin
q
( Fin)

126 METODOLOGIA DE LA PROGRAMACION


TECNICAS DE PROGRAMACION 127
4.8.2.3. Estructura selectiva (CASE)
Los pseudocdigos son:
La estructura selectiva permite asociar un conjunto de condiciones a Unj
conjunto de acciones que se excluyen mutuamente. La estructura se conoce por!
CASE (caso) y permite una desviacin del flujo de control hacia mltiples Ingls
procesos en funcin del resultado de la evaluacin de una expresin o indicador.l
As, si el resultado toma el valor 1 se realiza la accin 1, si toma el valor 2 l,l CASE expresin OF

accin 2, si toma el valor n la accin n, y si no es ninguno de los valores 1 a n,~ valor 1: accin 1

se realizar la accin siguiente n+ l. valor 2: accin 2

valor n: accin n
END CASE

Valor 1 Valor 2 Valor n


Espaol

segn expresin hacer

valor 1: accin 1

Accin 1 Accin 2 Accin n valor 2: accin 2

valor n: accin n
fin_segn

Variante del formato


Accin n+1 Se 'puede considerar un caso nuevo en las alternativas, y en los restantes
valores no seleccionados especficamente. En ese caso el pseudocdigo sera:

~ segn expresin hacer

valor 1: accIn 1

Un ejemplo aclaratorio podra ser la tasa de descuentos de un concesionari valor 2: accin 2

de automviles en funcin de la marca


valor n: accin n

otro: accin n+ 1

Ford Renault fin_segn

En el caso de que se seleccione otro valor .se ejecutar la accin n+ l.


Opel Seat

CASE basado en IF-THEN-ELSE

D 15% 10%
\ 18%
En el caso de que la estructura CASE no tuviese una sentencia equivalente
en su lenguaje de programacin, se podra realizar su misin mediante estructu
ras condicionales (IF-TREN) y estructuras alternativas (IF-THEN-ELSE).
128 METODOLOGIA DE LA PROGRAMACION
TECNICAS DE PROGRAMACION 129

CASE a base de IF- THEN-ELSE (si-entonces-sino)


si valor 1
entonces accin 1
sino
si valor 2
No
entonces accin 2

sino

Accin
S
si valor n

entonces accin n

sino accin n+ 1

S
fin_si Accin

fin_si

No
fin_si

4.8.3. Estructuras iterativas


1. DOWHILE
Las estructuras iterativas permiten ejecutar una accin un nmero determi.
nado ,de veces, es decir repetir esa accin una o ms veces consecutivamente.
Las estructuras iterativas se suelen llamar lazos o bucles; todas las instruccio ~
r
nes incluidas en los bucles se repiten un nmero determinado de veces. Se'~ Accin
denomina iteracin a cada una de las diferentes pasadas o ejecuciones de todas'
las instrucciones contenidas en el bucle. ir!
Existen dos variantes de estructuras iterativas: DOWHILE (mientras-hacer)!
y DOUNTIL (Repetir-hasta que). la diferencia entre ambas es que la condicin,~
se site al principio de la secuencia de instrucciones (bucle DOWHILE) o que:!,
la condicin se site la final (bucle DOUNTIL), como se ve en los diagramas..~ No
La d(ferencia entre DOWHILE y DOUNTIL es que en DOWHILE el bucle.
contina mientras que la condicin es verdadera (la condicin se comprueba :~)
antes de ejecutar la accin, si es falsa la accin no se ejecuta) y el bucle se detiene;~, S

cuando la condicin es falsa. En DOUNTIL el bucle contina hasta que la~;


condicin se hace verdadera (la condicin se comprueba despus de ejecutar la:~ DOUNTIL
accin. o sea que la accin se ejecutar al menos una vez con independencia de'
que sea la condicin verdadera o falsa). Otra diferencia como ya se ha comentado
Los pseudocdigos de las estructuras DOWHILE y DOUNTIL son los si
es que la condicin se comprueba al principio del bucle en DOWHILE y al final guientes:
del bucle en DOUNTIL.
Las estructuras DOWHILE y DOUNTIL se conocen tambin como estructu DOWHILE
ra REPEAT WHILE y REPEAT UNTIL (en el lenguaje Pascal estas estructuras
son WHILEDO y REPEAT-UNTIL, y las versiones de BASIC que soportan Ingls
estas estructuras WHILEWEND y REPEAT-UNTIL). Espaol
DOWHILE condicin mientras condicin hacer
accin 1 accin 1
accin 2 accin 2

ENDOO fin-mientras
't'.~:,l<""

TECNICA5 DE PROGRAMACION 131


130 METODOLOGIA DE LA PROGRAMACION

El pseudocdigo significa "mientras que la condicin sea verdadera hacer Espaol


la/s accin/es, cuando sea falsa terminar el bucle". Puede ocurr que el bucle
no se ejecute ni una vez en el caso de que la condicin no se cumpla inicialmente. desde var = exp 1 hasta exp 2 [incremento exp 3]

hacer

acciones
DOUNTll fin-desde

Ingls Espaol Nota: Algunos autores prefieren traducir FOR por la palabra para en lugar de desde.
DOUNTll condicin repetir
accin 1 accin 1
En realidad -como ya se ha comentado- la estructura FOR es un caso
accin 2 accin 2
especial de DOWHILE-DOUNTIL en el que se conoce a priori el nmero de
hasta-que condicin
veces que se ejecutar el bucle; por ello se suele denominar estructura repetitiva
ENDDO
en lugar de iterativa, para diferenciarla de las otras estructuras.
Las estructuras WHILE y FOR pueden, en ciertos casos, no realizar ninguna
Nota: Tanto en DOWHILE como en DOUNTIL se necesita que el bucle contenga al menos una iteracin del bucle, mientras que UNTIL ejecutar el bucle al menos una vez.
instruccin que cambie la condicin que controla el bucle. Si no la hubiera el bucle continua
ra indefinidamente.

4.8.4. Estructuras especiales. GOTO


4.8.3. 1. Otras estructuras iterativas En los apartados anteores hemos visto cmo utilizar if-then-eIse y el bucle
que genera para crear caminos alternativos en el clculo. En ocasiones, es conve
Las estructuras DOWHILE y DOUNTIL repiten el bucle mientras o hasta niente utilizar una estructura con una larga y controvertida historia, la sentencia
que se cumpla una condicin; ello significa que el bucle se repite un nmero o estructura goto.
no determinado de veces. En ocasiones, sin embargo, se conoce a po el En uri programa sin bucles o estructuras if, las estructuras -el programa
nmero de iteraciones a realizar, yen esas ocasiones, aunque tambin se podra se ejecutan en secuencia y se dice que el flujo es normal. A veces, se rompe el
utilizar DOWHILE y DOUNTIL, es prefeble utilizar otra estructura iterativa flujo normal por la transferencia o bifiircacin a otra instruccin que no est en
denominada DOFOR o REPEAT-FOR (FOR-NEX-STEP en el lenguaje BASIC
y FOR-TO-DO/FOR-DOWN TO-DO en el lenguaje Pascal).
secuencia, como es el caso de los bucles, o bien, transfiendo el control directa
mente a alguna instruccin especfica. Para expresar este caso se necesitan:
..
Los formatos de los pseudocdigos son: (1) una estructura para ejecutar la transferencia de control y (2) un medio de
referencia de esa estructura en el programa. Este segundo requisito se satisface
Ingls permitiendo que las instrucciones sean numeradas o etiquetadas con palabras.
El pmer requisito es la estructura GOTO (goto).
fOR variable = expresin 1 TO expresin 2 [STEP expresin 3]*
DO GOTO
accin
ENDfOR Es una estructura (enunciado simple lo denomina Wirth, el padre del Pascal)
que indica que el proceso adicional debe continuarse en alguna otra parte del
programa.
* [STEP expresin 3] es opcional y es un incremento.
El formato de la estructura GOTO (ir a) es

El significado del pseudocdigo es: repetir la accin desde un valor inicial


de la vaable de control dada por expresin 1 hasta alcanzar el valor final dado
I GOTO etiqueta I I GOTO nmero de lnea I
por expresin 2. Si no se indica nada en contra con STEP se supone que los
incrementos son positivos de l en l (caso de enteros); caso de querer vaar los Se produce la transferencia a la instruccin cuya etiqueta o nmero de lnea se
incrementos ser preciso indicarlo con STEP expresin 3, siendo el incremento da en el formato. A partir de ese punto se reanuda el flujo normal del control
del proceso.
positivo o negativo el valor de expresin 3.
\ .~..
132 METODOLOGIA DE LA PROGRAMACION TECNICAS DE PROGRAMACION 133

Los lenguajes BASIC y FORTRAN utilizan la estructura GOTO, Pascal IF condicin

tambin la posee pero su uso est muy restringido. THEN GOTa 1;

El uso indiscriminado de GOTO en los programas es nocivo porque dificulta


su legibilidad. Si existen muchas bifurcaciones con GOTO ser necesario recurrir
a numerosas etiquetas o nmeros de lnea y ello puede producir errores, por
duplicado, ausencia de etiquetas, etc. 1: end

Cundo es til GOTO? puede ser sustituida, eliminado GOTO por


Junto con la estructura IF se puede utilizar para construir bucles. Por ejem
plo, el bucle: IF NOT condicin

THEN

DOWHILE condicin

accin 1

accin 2

ENOOO acciones

puede ser sustituido por:


IF NOT condicin

1: IF NOT condicin THEN GOTa 2;


THEN

accin

GOTa 1;
2: .,. siguientes instrucciones

sin embargo la composicin anterior no parece clara. Sin embargo, con GOTO la aplicacin era ms directa.
La estructura GOTO se puede utilizar para transferir el control a un bucle, Una buena aplicacin de GOTO suele ser en recuperacin de errores, para
o desde dentro de un bucle al exterior, pero no puede transferirse desde fuera indicar cdigos de errores, sntomas o desviaciones de flujo cuando se comete
al interior de un bucle. ; un error en el proceso.
De hecho, los buenos programadores necesitarn utilizar la estructura GOTO '
muy raramente. Algunos incluso llegan a decir que no se debe utilizar nunca"
(Dijkstra entre ellos), sin embargo esta idea nos parece excesiva. Una estructura..ii 4.8.5. Sntesis de estructuras de control
GOTO debe reservarse para situaciones no usuales o comunes en que la estructu~\!
ra natural de un algoritmo debe quebrarse. Una buena regla es evitar los saltos~ En la Figura 4.8. se esquematizan las diferentes estructuras de control bsicas.
para expresar iteraciones regulares o la ejecucin condicional de instrucciones. i~
La presencia de GOTO en lenguajes como BASIC aunque es necesaria se debe 1
tratar de sustituir por otras estructuras equivalentes, alternativas o iterativas. En 1:
Pascal, Wirth (su autor) dice que la presencia de GOTOs en un programa Pascal
suele ser indicacin de que el programador no ha aprendido an "a pensar" en
Pascal.
Imaginemos una estructura como:

IF condiCIn

THEN GOTa 1;

acciones
134 METODOLOGIA DE LA PROGRAMACION TECNICAS DE PROGRAMACION 135

EJERCICIOS PROPUESTOS
~ ~
~~ a"''"
2"l: ~u
::; '"
t;(.J
"l w w
<i11:

1
w
...
W

i.@:
C1l
"tl
C1l

..J

Z l. Desarrollar un algoritmo y el diagrama de flujo que permita determinar la


~

~
2
U
cantidad total a pagar por una llamada telefnica, teniendo en cuenta lo si
tQ) guiente:
W
~~ y
c:
a) Toda la llamada que dure menos de tres minutos tiene un coste de 10 pe_
o a"ZW .g'~'" -O
'ti

setas.
O-~iiiEQl
O
~
Z
C1l
2w E
ti:J:
wl
~~~ ~ b) Cada minuto adicional a partir de los tres primeros es un paso de conta
~ 00 el
!!:: ea. dor y cuesta 5 pesetas.
c:
Ql 2. Escribir un organigrama y su algoritmo correspondiente que calcule la suma
<Il
C1l
U
de los 50 primeros nmeros enteros.
';
'C1l 3. Escribir un algoritmo que calcule el producto de los n primeros nmeros en
Vi .o teros.
~z
::lw e ,~
ro
...
gc: Nota: el producto de los n primeros nmeros enteros es el factorial de n.
:J: ~~~ ou 4. Escribir un algoritmo que imprima una tabla de conversin de kilmetros
21
ti u.
'0 SE Q)
a millas.
UJ ~<ii "tl
en
~ 5. Disear un algoritmo para resolver una ecuacin de segundo orden.
~ au 6. Escribir un algoritmo que acepte tres nmeros enteros e imprima el mayor
S de ellos.
en
",'"
S::
e
o ...
Ql
7. Escribir un algoritm%rganigrama que vaya leyendo los datos de entrada
... z ~
g~
utn
" (/J
Ql 2! de un fichero que slo contiene nmeros y suma los nmeros positivos.
~O
Wo
::; O
ale.. ~ 8. Escribir el organigrama y el algoritmo que sume los nmeros del 1 al 100,
5: no terminados en 5.
~
w ~ 9. Desarrollar un algoritmo que determine en un conjunto de 100 nmeros na
~ turales:
!:!:!. z
w

o
:::c - Cuntos son menores de 15
Z "'w
~
::>
... e
O
1-;"
~ - Cuntos son mayores de 50
"':J: " lii
2~ S2& ~ - Cuntos estn comprendidos entre 45 y 55
tiO "::; Ql
~

:5
UJO
ale..
ee 10. Determinar un algoritmo para leer una lista con nacionalidades de diferentes
~~ o
u personas y que imprima el total de espaoles y portugueses.
!f: Ql
"tl
C1l

~
Vi ro 2
zw 'c:; t
w
J:
C.
UN
i!:i<i:
---.. e
Ql::l
I
~ 1~ I---------J Jl" (1)
.
1-1
~~
I!!
::1
DI
ir

"",-,,,,,,,,,':::;~~.,...
';~;"y' *'Y':~ih~,e~~c~)\' \

CAPITULO 5

ESTRUCTURA DE DATOS

5.1. INTRODUCCION
El programador para llegar a expresar la solucin de un problema debe
expresarlo en forma de un algoritmo que luego le permita una fcil codificacin.
, En esta consideracin la Informtica se basa en el estudio de algoritmos -se
cuencia paso a paso de las diferentes operaciones que se deben realizar para
obtener un determinado resultado-; sin embargo, un algoritmo manipula datos
y para que se pueda aplicar correctamente necesita que esos datos estn relacio
nados (estructurados) de alguna forma particular. Esta nueva idea nos lleva a
otra concepcin de la Informtica, el estudio de los datos, su estructura y su
manipulacin o abreviadamente el concepto de estructura de datos o estructura
de la informacin.
Estructura es la relacin que existe entre los distintos elementos de un grupo.
En Informtica, la relacin que existe entre elementos de datos es una estructura
de datos.
Uno de los problemas ms serios con los que se enfrentar el programador
es, precisamente, la estructuracin y almacenamiento de la informacin. El
programador deber analizar con mucho cuidado la estructuracin, almacena
miento y recuperacin de los datos, comparndolos con la eficacia del algoritmo
elegido para su manipulacin. En caso contrario la solucin dada para la resolu
cin del problema puede resultar muy costosa en espacio de memoria o en
tiempo de trabajo de mquina.
En este captulo se estudiarn las diferentes formas (estructuras) que los datos
pueden tomar y las aplicaciones en que se utilizan las diferentes estructuras.
Estas estructuras de datos se almacenarn en la memoria principal o interna
o en los soportes externos de almacenamiento de informacin, la memoria
secundaria o externa -casetes, cintas, discos, etc.
137
, ...
138 METODOLoGlA DE LA PROGRAMACION 'ESTRUCTURA DE DATOS 139

5.2. lOS DATOS a) Qu deseamos conocer?

b) Dnde se puede encontrar la informacin?

Los datos o inform'lcin que manipula una computadora sern diferentes c) Cmo obtenerla?

segn la aplicacin en que se utilicen, y una de las caractersticas diferenciales


de los lenguajes de programacin es el tratamiento de los datos. As cuando un En nuestra situacin actual (ir al teatro),

cientfico interesado en nmeros reales y complejos y en matrices trabaja en a) deseamos conocer el nmero de telfono;

programacin utilizar FORTRAN. En contraste, los datos o informacin utili b) ste se encuentra en el listn o gua telefnica (conocimiento de la me

zados en la gestin comercial estn normalmente reunidos en ficheros, y por moria);

ello se emplea COBOL que proporciona grandes facilidades para la descripcin c) en la gua, los nombres de los abonados estn listados en orden

del contenido y estructura de ficheros. La mayora de los lenguajes estn disea alfabtico y de este modo obtenemos el nmero deseado consultando

dos para manipular ciertos tipos de datos ms adecuadamente. La Tabla 5.1 el nombre del teatro en esta lista (en este caso, el mtodo de acceso

muestra las notaciones ms utilizadas por el usuario y las caractersticas de los -alfabtico- a la informacin se debe conocer).

datos manipulados.
Este ejemplo muestra que la informacin (el significado relacionado con los
Tabla 5.1. Caractersticas de lenguajes de programacin
tos) puede implicar no slo un conjunto de valores de datos, sino tambin
na disposicin estructura que relaciona los valores de algn modo.
Lenguaje Notacin normal del usuario Caractersticas de los datos

Ada Programas. Los usuarios pueden. disear sus


propias estructuras de datos.
Manipulacin de los datos
ALGOL Diagrama de flujo, pseudocdigo. Numricos.
APL Smbolos matemticos ampliados. Matrices. La clasificacin alfabtica por nombres de abonados de la gua telefnica es
BASIC Diagramas de flujo y expresiones Caracteres y nmeros. na referencia fcil, pero no la nica. Existe otra clasificacin -tambin alfab
matemticas elementales.
.ca- de nombres de calles o distritos, y dentro de cada calle o distrito, listados
COBOL Ingls. Ficheros jerrquicos.
FORTRAN Frmulas matemticas. Numricos. abticos de los suscriptores. Esta ltima gua o directorio se llama de dos
L1SP Lgica, Conectados intrincadamente (lis [veles. debido a que necesitamos aplicar nuestro proceso de bsqueda dos veces:
tas). "a vez para encontrar la calle o distrito y a continuacin nuevamente para
PASCAL Diagramas de flujo, pseudocdigo. Los usuarios pueden disel\ar sus lcontrar el abonado. Existe un tercer formato multinivel utilizado en las pgi
propias estructuras.
Variadas. Numrica y comercial.
"amarillas. En esta gua, las entradas se listan alfabticamente por actividades
PL/1
RPG Ingls restringido. Informes. merciales o profesionales y a continuacin alfabticamente por abonado den
SIMULA Descripcin de sistemas. Dependiente del tiempo. de cada clase. Incluso se podra considerar un tercer nivel, con un ndice
SNOBOL Patrones de palabras. Cadenas de caracteres. .btico, que gue hacia la clasificacin correcta.

La informacin tratada por el ser humano puede proceder de su memoria Nombre y apellidos Nmero de telfono
-como es el caso del alfabeto, la direccin de su casa o despacho, o el mtodo
para utilizar el telfono-, o bien de la bsqueda de la informacin que necesi Garca Andrade, L. 6451236
tamos. Garca Antoranz, J. L. 7214632
Garca Botn, M. 6451321
En los casos de la bsqueda de informacin, sta puede resultar prolija; as, Garca Bosano, N. 6451216
por ejemplo, si deseamos ir al teatro y no sabemos el nmero de telfono para Garca Candil, J. 6454027
llamar y reservar localidades, ni conocemos el horario de autobuses, para el caso Garca Casto, P. 6453092
de decidir ir, ser preciso buscar informacin en algn centro de informacin, Garca Castro, J. 6462830
Garca Edil, A. J. 6461460
como puede ser una gua de telfonos. Sin embargo, esta ausencia de informa 6452180
Garca Fernndez. R.
cin nos fuerza a pensar detenidamente cmo conseguirla. No podemos solucio Garca Fortuna, O. 6451721
nar nuestro problema a menos que podamos decidir. Shave en 1975 enunci Garca Garca, B. 6470406
los principios de la decisin:
rr'~r,;:
140 METODOlOGIA DE LA PROGRAMACION
ESTRUCTURA DE DATOS 141

Calle o Plaza Nmero de telfono


La Cruz -o '"

ev

~
ev~
Garca Martinez, A. 7154320 ~~
Martnez Gil, R. 7151416 o
-0 10
Martnez Hidalgo. J. R. 7170406 (50)
::J~
Navarrete Gil, B. 1. 8215014 EN
Pelez Garca. J. lo 7150040 o"
a: <Xl
Romero Garca, N. 7151013 o
~

Romero Gil, C. 7174021 eN


evO)
r---.o '7
EIO
::J~
:I:~ Ol
6' L..---
OlN
Automviles
... 0)
-o~
'" O'
'C:
O
U O)
e '
0l0)
U'JIO
SEAT <Xl
:::.
Abengo. S. A. 7214086
HISPANIDAD. S. lo 6391416 6'
Ol~
JUMAR. S. A. 7145164 a O)
ROMERO. S. lo 8212140 '0 '7 Ol
EO LO
t:J~ E
<Xl r--E~
ev ' oc: r--..
OlIO
Figura 5.1 . Estructuras de datos tpicas. ~~

Por consiguiente, se puede ver que la estructura alfabtica de las guas telef
nicas no es esencial, sino que ha sido impuesta en aras de la comodidad del
usuario medio.
Existen casos en que el diseo de los datos tiene una estructura bsicamente
,~
"'LO
Ol~
~<Xl
al
r;

:::.
+"6 .... 10
evO)
::J~
0"'
O
'C:
e"
W<Xl
~

6'
LO
r---:a .;,
lO
evO)
o.~

U-O)

<Xl
o
'EOl
o~
jiC")
O)
,

de rbol con un nmero d~ bifurcaciones, cada una de las cuales tiene a su vez .-::J
",o)
~
o
-o,
una estructura en rbol. Imaginemos el caso de un rbol genealgico (Figura 5.2). ...JLO'
lO
I ~g 5e
<Xl ~O) o'
ev LO
La clasificacin alfabtica de la gua telefnica permite que las entradas sean :::. ...JN
O)
listadas en una secuencia lgica. Las entradas en un rbol no pueden ser listadas :::.

en secuencia adecuadamente -al menos sin destruir la estructura del rbol-o 0l0) -"
En este caso, un diagrama o dibujo es un mejor medio de presentacin de datos. L-.o~
'c 6
Un diagrama es tambin til para los datos que tienen estructura rectangular o O)
<Xl
tabular. N O) :::.
Un ejemplo tpico de una estructura tabular es el caso de los cuadros horarios
'"::JC")
<--._ ", Ol
'"
...J<Xl 00,
a:C")
de trenes. La siguiente tabla es de dos dimensiones y permite una fcil lectura O)

de arriba-abajo y de izquierda a derecha, con incrementos de tiempo desde el :::.


punto de vista inicial.
e
-o,
evo
D..N
O)
~

Figura 5.2. Estructura en rbol.


142 METODOLOGIA DE LA PROGRAMACION
ESTRUCTURA DE DATOS 143

a.m. a.m. a.m. p.m. p.m. b) los nmeros por debajo de la diagonal son iguales que sus simtricos del
otro lado de la diagonal central (ya que la distancia desde M a N es la
Madrid 7.30 8.30 11.00 15.00 19.00
7.45
misma que de N a M).
Las Rozas 8.45 11.15 15.15 -
Las Matas 7.58 8.58 11.28 15.25 - Los dos formatos de las tablas anteriores (una o dos entradas) es, evidente
Galapagar 8.15 9.17 12.45 15.40 19.30
Torrelodones 8.30 9.28 12.55 15.50 19.40
mente, preferible a una alternativa lineal (listado en una sola secuencia):
Collado-VillaIba 8.35 9.34 13.00 - -
Guadarrama 8.40 9.41 13.10 15.58 19.50 Albacete-Alicante : 166
Los Molinos 9.50 9.50 13.20 - - Albacete-Almera : 361
Cercedilla 8.58 9.58 13.28 - -
San Rafael 9.05 10.04 13.32 16.10 20.03
Albacete-Avila : 357
Otero de Herreros 9.15 10.12 13.42 - -
Madrona 9.20 10.15 13.45 - -
Segovia 9.28 10.20 13.55 16.30 20.20 En cada uno de estos ejemplos, la disposicin de los datos es tan significativa
como sus valores.
Figura 5.3. Tabla de dos dimensiones.

Los cuadros o diagramas de distancias tpicos de agendas, mapas, guas de Estructura de datos
carretera, etc., se pueden utilizar con tablas de dos entradas.
Una estructura de datos es una coleccin de elementos o items de datos. El
medio en el que se relacionan unos elementos con otros determina el tipo de
DISTANCIAS KILOlllETRlCAS ENTRE CAPITALFS DE PROVINCIA
estructura de datos. El valor de la estructura se determina por:
a) Los valores de los elementos.

b) La disposicin de los elementos.

{;'

1/,:
'1
En el caso de la gua telefnica, cada elemento de datos comprende un
1:' nombre, direccin y un nmero de telfono (tal elemento se suele denominar
J.;: registro o tomo). Las estructuras de datos telefnicos son del mismo tipo, y se
"ti denominan ficheros secuenciales.
Un elemento o item de datos o simplemente un dato es una cantidad que
,trema un nico elemento que puede cambiar de cuando en cuando (se denomina
'~':. variable o identificador). Los algoritmos de resolucin de problemas deben in
Cluir reglas de acceso a la estructura de datos. En el caso de la gua de telfonos
tal regla puede ser una descripcin al principio de la gua, del mtodo para buscar
nmero; en el caso del cuadro horario de trenes una explicacin de cmo
utilizar el cuadro; en general cmo buscar un valor en una tabla matemtica,
estadstica, etc.
Normalmente la seleccin de una estructura de datos se har en funcin de
su cometido; tras la seleccin, se elegir la mejor disposicin de los datos y a
continuacin se colocan los valores en los datos. En consecuencia, los valores
de los datos pueden ser cambiados con relativa frecuencia, la disposicin de
Figura 5.4. Tabla de dos entradas. ellos se cambia con menos frecuencia y la estructura de los datos se cambia
raramente. Este es, de hecho, el caso, por ejemplo, en una gua de telfono donde
En el cuadro anterior se muestra que ~:las entradas cambian anualmente (cambios de direcciones de los abonados, altas,
.'-' bajas, etc.), sin embargo, la disposicin alfabtica no se suele variar.
a) los nmeros de la diagonal son todos cero (dado que la distancia de un No obstante, el ejemplo anterior no siempre es significativo pues, en ocasio
lugar a s mismo es cero);
nes, un cambio en los valores de los datos produce un cambio en la disposicin
'44 METODOLOGIA DE 'LA PROGRAMACION ESTRUCTURA DE DATOS 145

de los mismos. Consideremos la tabla de clasificacin de la Liga de fbol espao


la de primera divisin. Los resultados de los partidos semanales influirn en la
o
clasificacin modificando no slo el valor de los datos (puntuacin), sino el
orden de los equipos.
Otro caso significativo, aunque no frecuente~ se produce cuando se modifica
2
el tipo de estructura de datos, permaneciendo constantes los valores de los datos;

3
este es el caso de la gua telefnica por direcciones.
La eleccin del mtodo adecuado para expresar los datos del problema es
esencial para conseguir una buena solucin. Si se hace una eleccin incorrecta
el algoritmo resultante puede ser muchas veces complicado y por consiguiente
dificil de codificar. Por el contrario, una buen<;l eleccin de estructura de datos
puede llevar a un algoritmo que sea ms claro, ms sencillo y ms rpido.
Una vez que se elige una buena estructura de datos debemos intentar utilizar
un lenguage de programacin en el que esta estructura de datos pueda ser
fcilmente descrita y con rpidez y cmodo acceso.

5.3. CLASIFICACION DE LAS ESTRUCTURAS DE DATOS

Las estructuras de datos ms usuales son: cadenas, matrices, listas, tablas,

rboles, pilas, colas y ficheros. El estudio de las estructuras conduce a los algorit

mos de manipulacin de los datos. Supongamos que se desea escribir un progra

ma en FORTRAN para almacenar los das de un mes y sus temperaturas medias;

como la nica estructura de datos es la matriz -un tipo determinado de lista


65533
habr que realizar los algoritmos adecuados de manipulacin; por ello cuando
se desee aadir nuevos nombres a la lista habr que disear un algoritmo de 65534
insercin y cuando se desee buscar un nombre dado se deber disear un algorit
mo de bsqueda. 65535
Las estructuras de datos se pueden definir como una forma prctica de Direccin (valor numrico nico).
organizar hileras, listas, rboles, etc., en la memoria interna o central de las
computadoras.
Una de las primeras estructuras utilizadas y conocidas por los programadores
son las matriciales conocidas por arrays o matrices (vectores -arrays unidimen o GARCIA
. sionales-, tablas o variables con subndices -arrays multidimensionales-).
GOMEZ
Las matrices se almacenan en un bloque de posiciones de memoria consecuti
vas. Cada elemento de una matriz se puede recuperar o identificar por su direc 2 LOPEZ
cin (valor numrico nico).

Cada posicin de una computadora se asocia con un nmero fijo o direccin.


3 MARTINEZ
As pues, la computadora ve la memoria como un bloque de posiciones consecu
tivas que se identifican por una direccin o valor numrico.
Si nos imaginamos una relacin de apellidos de personas, podra asociar cada
posicin de memoria a un apellido.
El orden o disposicin de los apellidos formara una estructura de datos. En
realidad la memoria no est organizada as, porque normalmente una posicin
de memoria equivale a una palabra de 8 16 bits, y su equivalente es un carcter
del alfabeto -en el caso de 8 bits-; sin embargo, a efectos didcticos preferimos Contenido de cada posicin de memoria.
;.~~~j,""

146 METODOLOGIA DE LA PROGRAMACION ESTRUCTURA DE DATOS 147

dejar el ejemplo tal como se ha enunciado, por no ser relevante en este momento En lenguajes de programacin, el ndice se escribe normalmente despus del
el contenido real de cada posicin, sino su contenido relativo. nombre del vector y enmarcado entre parntesis (BASIC o FORTRAN) o cor
Una disposicin como la relacin de apellidos constituyen tambin una chetes (en PASCAL o ALGOL). Los elementos XI y x2 anteriores se representan
estructura de datos conoCida por lista. Todos sus elementos estn en posiciones por:
consecutivas de memoria. Para definir una lista ser preciso conocer el punto
x( 1). x(2) o bien x[1], x[2]
inicial y el final, es decir, la longitud.
BASIC, FORTRAN PASCAL
Otro tipo de estructuras de datos son los ficheros -conjuntos de registros
que se almacenan en la memoria externa de una computadora- y los rboles
Un ejemplo tpico de un vector son las temperaturas diarias del mes de
-representacin de elementos en forma jerrquica.
febrero de una ciudad.
(20 25 26 ... 17)
5.3.1. Matrices (arrays) o bien

(x,) (x) (xJ ... (x 2J

Una de las estructuras ms simples consiste en una secuencia de elementos


del mismo tipo, relacionados unos con otros por el orden de que estn definidos.
Los matemticos y cientficos en general utilizan un ndice o subndice para Los elementos del vector podran ser caracteres
representar la notacin de tales estructuras. Un ejemplo de una aplicacin de un vector, es el diagrama de flujo de la
As, una notacin tpica es Figura 5.5 que calcula la media (media aritmtica) de estaturas de los alumnos
.~ de una clase, cuntos son ms altos que la media cuntos ms bajos.
x" x2 ' ... x lO
n es el nmero de estudiantes de la clase
y representa 10 elementos. La x es el nombre general por el que se conoce un a[ 1] a [2] .oo a[n] son sus estaturas.
elemento, mientras que el subndice, 1, 2, ''', es la posicin en la secuencia.
En programacin una secuencia de este tipo se denomina matriz o array. 5.3.1.2. Matrices
Una matriz es una coleccin ordenada de objetos o elementos. La mayora
de los lenguajes de programacin requieren que todos los elementos sean del Una matriz con un solo ndice se denomina unidimensional. Una matriz
mismo tipo (enteros, reales o caracteres). con dos o ms ndices se llama multidimensional. El nmero de ndices necesario
Las matrices se clasifican en vectores (matrices unidimensionales) y tablas o para especificar un elemento de una matriz se denomina dimensin.
matrices propiamente dichas (matrices multidimensionales). Las matrices ms tiles son las de dos dimensiones, que se asemeja a una
tabla o conjunto de filas (primer ndice) y columnas (segundo ndice) como se
ve en la Figura 5.6.
5.3.1.1. Vectores Los elementos de una matriz de dos dimensiones se representan por dos
Un vector es un conjunto ordenado de elementos que contiene un nmero expresiones separadas por una coma y encerradas entre corchetes o parntesis.
fijo de ellos. Los vectores son matrices unidimensionales. sus elementos deben
A[I,J] en Pascal A(I,J) en BASIC
ser del mismo tipo (enteros, reales, caracteres).
Un vector es Se refieren al elemento de la fila 1 y la columna J.
En lenguajes de programacin las matrices se suelen denominar tablas. En
(2,3,4,8,9,10,15,17) ". Matemticas se suele representar con las notaciones

y representa una lista de elementos.


La longitud de un vector es el nmero total de elementos. [a" a" a,,]
a 21 a 22 a 23
a 31 a 32 a 33
o bien (a" a" a" )

a 21 a 22 a 23

a 31 a 32 a 33

Cada elemento de un vector se representa por el nombre del vector y un


ndice o subndice. En el ejemplo anterior si x es el nombre del vector, los
elementos son:

x, = 2 x2 =3 x3 =4 x4 =8 X
s=9 x6 = 10 x7 = 15 xB = 17 Dn
4
2
O
o bien e4 5)
123
4 O 7
148 METODOLOGIA DE LA PROGRAMACION ESTRUCTURA DE DATOS 149

Columna 1 Columna 2 Columna 3

Fila 1

A[2.3J
Fila 2

Fila 3 A[3,1]
SI
1:. n1

Figura 5.6. Matriz de dos dimensiones.

Una tabla o matriz de dimensiones se puede considerar un vector de vectores.


Es por consiguiente un conjunto de elementos, todos del mismo tipo, en los que
i:=a?
SI el orden de los elementos es significativo, yen el que se necesitan dos subndices
para definir un elemento.
Las matrices pueden tener ms de dos dimensiones y se denomina multidi
mensional. Por ejemplo, un sistema de reservas de plazas en una lnea area, se
podra representar por una matriz de tres dimensiones:
a [i,j,k]
SI
------ apl < media'.>>-_N_O ---,

SI
donde,
i = 1,2, , 5 representa el nmero de vuelo.
j = 1,2, , 60 representa la fila del avin.
No
k = 1,2, , 12 representa el asiento en la fila.

as,
asiento [i,j,k] = O asiento libre.
asiento [i,j,k] = 1 asiento ocupado.

Almacenamiento de matrices

Las matrices se almacenan en memoria de modo secuencial. Una matriz (i,j)


equivale a un vector de i x j elementos. La Figura 5-7 compara el almacenamien
to de la matriz m(3,2) con el almacenamiento de un vector de sus elementos y
muestra los dos posibles mtodos de almacenar las matrices en memoria: por
Figura 5.5. Diagrama de flujo para clculo de la media de varios nmeros. filas o por columnas.
, &0 METODOLOGIA DE LA PROGRAMACION
ESTRUCTURA DE DATOS 151

A 1,1 A 1,2 A 1,1 A 1,1 Para hacer referencia a una lista se debe conocer dnde comienza, dnde

termina o su longitud. El tratamiento o manipulacin de listas exige poder:

A 1,2 A 2,1 - Acceder al primer elemento (cabeza de la lista).

A 2,1 A 2,2
- Acceder a otros elementos.

- Suprimir o aadir elementos.

A 2,1 A 3,1
A 3,1 A 3,2
La realizacin de las operaciones anteriores presenta diferentes dificultades.

Por ejemplo, aadir un elemento a una lista de compras o un listado de clientes

la)
A 2,2 A 1,2 es fcil, ya que slo es necesario poner los elementos al final. Sin embargo si el

listado de clientes ha de ser en orden alfabtico, sera preciso intercalar el elemen

to en su lugar correspondiente. La eliminacin presenta los mismos problemas.

A 3,1 A 2,2 Las listas, se almacenan en la memoria de una computadora.

Las listas se pueden clasificar en diferentes grupos:


- Lineales.

A 3,2 A 3,2 - Encadenadas.

- Circulares.

lb) le) - Doblemente encadenadas.

Figura 5.7. (a) Matriz A 3,2; (b) Matriz por filas; (e) Matriz por columnas.

Listas lineales
FORTRAN almacena las matrices por columnas. Pascal, PL/I, BASIC y Una lista lineal es aquella que tiene un primero y un ltimo elemento,

COBOL almacenan las matrices por filas. existiendo una relacin estructural entre sus diferentes elementos; normalmente

El compilador o intrprete correspondiente se encarga de almacenar en me cada elemento est relacionado con el anterior y el siguiente, excepto el primero

moria adecuadamente las matrices en funcin de los subndices y dimensiones r~slo con el segundo- y el ltimo -slo con el anterior-o Las listas lineales
de las mismas. ~Jse llaman tambin densas debido a que los elementos de la lista se encuentran
El compilador de un lenguaje de alto nivel genera instrucciones que se encar en posiciones de almacenamiento (memoria) fsicamente contiguas.
~

gan de calcular la posicin de cada variable subindicada y debe conocer si la Ni En general se suelen expresar tambin las listas como un conjunto lgico de
matriz est almacenada por columnas o por filas, as como los subndices y las ~tomos; un tomo es un conjunto de elementos relacionados llamados campos,
dimensiones mximas de la matriz. Por ejemplo, si la matriz est almacenada isiendo el campo la unidad bsica de informacin. Un campo se puede dividir
por columnas, el elemento A [3,1] est en la tercera posicin, A[ 1,2] en la cuarta ;en subcampos. Si se trabaja con ficheros, el trmino registro es sinnimo de

y as sucesivamente. ~dtomo (el concepto tomo procede de los orgenes del lenguaje LlSP en los

Las matrices o tablas pueden ser de dos, tres o cuatro dimensiones. \.aos 60).

Los elementos de una lista pueden ser de cualquier tipo y se caracterizan

or la posicin que ocupan.

5.4. LISTAS Las operaciones fundamentales que se pueden realizar con los elementos de

una lista son:

Una lista es un conjunto o serie de elementos (objetos del mismo tipo,


denominados tambin tomos) en la que cada uno de ellos est relacionado - Calcular la longitud de una lista -nmero de elementos de la misma.

implcita o explcitamente con el anterior y/o con el siguiente. Las listas deben - Consulta secuencial de cada uno de los elementos.

estar almacenadas en un soporte direccionable (memoria central o perifrico de - Acceso a un elemento n, examen y/o lTiodificar su contenido.

acceso seleccionable, cintas o discos). Para designar un elemento se utiliza un - Insercin de un nuevo elemento en la posicin n de la lista.

puntero. - Almacenar un elemento en la posicin n de la lista.

- Suprimir un elemento de la lista.

ESTRUCTURA DE DATOS 153


152 METODOLOGIA DE LA PROGRAMACION

- Reorganizacin de la lista: jitsin de dos o ms listas en una sola; divisin 5.4. 1. 1. Colas
de una lista en varias. Una cola es una subclase de lista lineal en la que se permiten las eliminaciones
- Clasificacin de los elementos segn determinados criterios. en el comienzo de la lista (el extremo llamado ji-ente, fron!) y las inserciones,
se realizan al final de la lista (extremo opueto, reaD)). Los elementos de este
tipo de lista se procesan en el mismo orden en que se reciben: el primero en
Insercin de un elemento
entrar es el primero en salir (FlFO-first-out).
La operacin de insercin conserva todos los elementos de la lista, desplazan La Figura 5.8 representa una estructura tipo cola en la cual las inserciones
do aqullos cuyo nmero de orden es superior al que tratamos de insertar. se realizan al final y los elementos se eliminan en el frente de la estructura.

'o,,]
Frente Final

I " 'o t
l"
elemento 1 elemento 2
11

elemento n elemento n+ 1

Despus de insertar el elemento ex en la posicin n de la lista quedar la


Eliminacin ...
"lI(r----
rn Figura 5.8.
I I I
Estructura tipo cola.
,--'M,re',"

siguiente lista.

Un ejemplo tpico se muestra en los sistemas de computadoras de tiempo

I " I " I ] " I 'o" [


cOmpartido, en el cual muchos usuarios comparten el mismo recurso informti
co. Con frecuencia, se comparte la unidad central de proceso y la memoria
principal. Estos recursos se comparten permitiendo que el programa de un
usuario se ejecute durante un'pequeo espacio de tiempo, seguido de un segundo
elemento 1 elemento 2 elemento n elemento n+ 1
programa de otro usuario, Y. as sucesivamente. Se utiliza una cola para almace
nar los programas de los usuarios que estn esperando su turno de ejecucin.
Almacenamiento de un elemento Sin embargo, una cola de este tipo no siempre trabaja en un estricto orden,
primero en entrar, primero en salir, sino que trabaja con un esquema de priorida
El almacenamiento de un elemento supone borrar el contenido que hubiera des basado en varios factores: tiempo de ejecucin requerido, nmero de lneas
en la posicin donde se desea almacenar. En el caso de almacenar ex en la de salida, hora del da, etc.
posicin 2 quedara: Otro tipo de cola muy conocida en informtica son las colas de impresin
para permitir la impresin de diversos documentos procedentes de diversas
\ fuentes, con una sola impresora.

I"
Las colas se representan con dos punteros F (frente) y R (final) para denotar
I " I " l 1 'o I 'o,, I las posiciones frontal y final de los elementos, respectivamente.

Eliminacin Insercin
Supresin de un elemento
Excepto en la cabeza o final de la lista la supresin de un elemento exige un
desplazamiento de los elementos posteriores. Otro mtodo consiste en marcar
los elementos considerndolos inactivos.
F R
154 METODOLOGIA DE LA PROGRAMACION ESTRUCTURA DE DATOS 1 55

La operacin de insercin (elemento mn) en una cola se muestra a continua accesible -el que est arriba de la pila, la cima o cabecera de la pila toP))-
cin. La adicin de un elemento a la pila se produce siempre por la parte superior de
la pila. El nico elemento accesible de la pila es el elemento cima y el menos
e, e2' e3
accesible el situado en el fondo. Esta estructura se conoce por UFO, last-in,

ITJJu
first-out (ltimo en entrar, primero en salir).
La nocin de pila nos es familiar en la vida diaria: pila de'libros, pila de
platos, etc. Para aadir un plato se coloca arriba de la pila, para tomarlo se
I coge de la parte superior de la pila.
En una pila. las inserciones y las supresiones se efectan en la misma punta
de la pila, llamada cabecera de pila. En una cola, los elementos se insertan por

1 1 un extremo y van desplazndose por el interior de la cola hasta llegar al otro


extremo, donde son' borradas.
El diagrama de una pila es:

DIIJuu u.
F R

i
F
i
R
r:l
e
La operacin de supresin de un elemento se puede realizar indicando el nmero
de orden que se le asign cuando ese mismo elemento fue insertado, de modo
B
que el extremo frente se desplaza con cada operacin de supresin.

A
e, e2 e3 e4 es

JIEJI....--- Figura 5.9. Diagrama de una pila,

La estructura cola es frecuente en la vida diaria, y ejemplos tpicos son: la


cola de un cine, la hilera de automviles parada frente a un semforo, etc.

5.4. 1.2. Pilas


Una pila es una subclase de lista lineal en la que las inserciones y eliminacio
nes se realizan por un solo extremo y solamente el ltimo elemento resulta
156 METODOLOGIA DE LA PROGRAMACION
ESTRUCTURA DE DATOS 157

Representacin fsica de una pila

Cima ---> n

n ...,O
n o o...,
a:
ro
e
oa:
.;::; )1 (LJ
2 "O
-
(f)
.~
Ll.

Cima 4--->

d 4 d
o
u
z o
e <l; u
3
~ z
3 e --'
aJ
<l;

2 I I 2 b 2 b
~
'':
2
..Cl
::J
(f)
)t -----------. ~ Q.>
"O
e
:
s
<fl
III
e

.o:::J
<fl
a a III

Cima 0---..
I I 1 >
<fl
III
'ji
Q>
O Pila vaca Pila semillena Pila llena U
:::J
<fl
<fl

-'
III
"O
III
<l;
Esta representacin puede realizarse con una lista simple encadenada. aJ E
U.J III
::J ::::i
a:

mm {I}-{JJ-ill I
a..
ro
e <l; o
O
'':
a:
O 2 U.J ltl
2 2 ..Cl ::J
U.J
U.J
::J a: E
O O
(f) c.. ;:,
",
ro )o Q.> )o {; el
e
'': "O
e e ir:
Cima 2 : :
..Cl
::J
(/)

En los sistemas de computadoras las pilas se utilizan para almacenar informa


t
cin, de modo que puede volver a recuperarse cuando se desee. El ejemplo ms
tpico son las llamadas a subrutinas o funciones, en el que la direccin del
programa en curso se almacena en la pila, de modo que tras la ejecucin de las
subrutinas o funciones, el control del programa retorna a la direccin donde
debe reanudarse la ejecucin del programa. --'

I
<l;
Supongamos un programa PRINCIPAL que llama a la subrutina DEMO y
~o i ~
a.. --'
<l; <l;
aJ a..
luego a PRUEBA, y a su vez PRUEBA llama a la subrutina BLANCO y luego z
ti:
U.J
U.J ::J Z
a la subrutina ROJO (Figura). a.. a:
ro )o )o a.. )t ti:
E --' --'
a..
--'
r:en <l;
U
--'
<l;
Q.>
"O
U e
El :
a..
-,.,-~,;-,.

ESTRUCTURA DE DATOS 159


158 METODOLOGIA DE LA PROGRAMACION

La pila de ejecucin del programa PRINCIPAL se muestra en la Figu 5.4.2. Listas encadenadas
ra S.I1.
Aunque como se ha visto en el prrafo anterior las listas densas tienen una
. estructura simple, presentan algunas desventajas: dificultades en las inserciones
o supresiones -sobre todo si se ha de conservar ordenada-, modificacin del
tamao o formato de la lista, etc. La lista est sometida a una continua reorgani
zacin que es aconsejable.
Las listas encadenadas son aquellas en las que en cada elemento de la lista
se incluye un campo especial llamado puntero (pointer) o apuntador que sirve
para enlazar dicho elemento con el siguiente de la lista, evitando as la ocupacin
de posiciones contiguas de memoria.
La mayor ventaja de las listas encadenadas es la utilizacin eficaz de la
memoria, ya que se puede utilizar cualquier espacio vaco por no exigir posicio
BLANCO nes secuenciales de memoria. Por el contrario, su mayor inconveniente es la

~I I~
lentitud del proceso, ya que es necesario ir recorriendo elemento a elemento a
II PRUEBA
travs de los punteros para poder acceder a uno especfico.
As una organizacin secuencial sera:

I I I~"
PRINCIPAL PRINCIPAL
I PRINCIPAL
II PRINCIPAL
II PRINCIPAL

Comienzo
programa
PRINCIPAL
llama a
Fin de
DEMO
Llamada a
PRUEBA
PRUEBA
llama a
fl x", I xm x" H Ix,", I
PRINCIPAL DEMO BLANCO

En la organizacin encadenada cada elemento de la lista tiene dos partes: la


primera contiene la informacin perteneciente a este elemento, y la segunda
parte contiene la direccin del siguiente elemento de la lista. Ntese que el
ltimo elemento de la lista no tiene sucesor; el campo del puntero no contiene
una direccin real.
La Figura S.12 representa una lista encadenada con el puntero PRIMERO
ROJO

BLANCO

Primer elemento Segundo


HI
Penltimo
[]-E Ultimo
D
PRUEBA

IMERO

PRINCIPAL

PRUEBA llama
a ROJO
"ARaA 1'600I-1'OPE' 6--1 RU" B-ED
Figura 5.11. Programa principal y la pila.

IMERO 2000
t
1600
t
1300
t
1200
Las operaciones de situar o insertar un elemento en una pila se conoce por
Figura 5.12. Lista encadenada.
empujar (push) y la operacin de extraccin o borrado por expulsar (pop).
160 METODOLOGIA DE LA PROGRAMACION ESTRUCTURA DE DATOS 161

conteniendo la informacin de un elemento y la segunda parte la direccin del 5.4.3. Listas circulares
siguiente elemento.
El ltimo elemento contiene una direccin vaca, NULO (una diagonal). Esta estructura conocida tambin como anillo es una subclase de una lista
La operacin de insercin en una lista encadenada es muy fcil ya que slo lineal consistente en enlazar el ltimo elemento de la lista (con el puntero) con
implica un intercambio de punteros. Por ejemplo, la Figura 5.13 muestra la inser
el primero.
cin del elemento DELGADO entre el segundo y el tercero de la lista compuesto
de cuatro elementos suponiendo que est almacenado en la posicin 1100. El
campo del encadenamiento del segundo elemento se cambia de 1500 a 1100:
se le asigna tambin al puntero del nuevo elemento el valor 1400.
La operacin de borrado demuestra la eliminacin del tercer elemento
RUIZ de la lista original. El valor del puntero del segundo elemento se borra
de 1300 a 1200.
I t I H GI D-J

t
GARCIA I 1600 I I LOPEZ

t
1
...
Ru,z138 AGUILAR Este tipo de lista es cerrada. Puede recorrerse circularmente, en el sentido
indicado por los punteros. Las listas circulares presentan el inconveniente de

~J
[ los bucles o lazos infinitos que se presentan cuando no se tiene especial cuidado
PRIMERO: 1000 1600 en detectar el final de la lista.
,too
5.5. LISTAS DOBLEMENTE ENCADENADAS

Hasta este momento las listas lineales se han recorrido de izquierda a derecha.
(a) En numerosas ocasiones se necesita recorrerlas en ambas direcciones. La explo
tacin en los dos sentidos puede realizarse con dos punteros por tomo o registro,
en lugar de uno. De este modo se puede utilizar un puntero para localizar el
I registro precedente y otro para el siguiente.

GARelA 1 1-+r-- I~
1600 lOPEZ
.1 0-+1 12J
RUIZ AGUILAR
Las listas lineales son doblemente encadenadas cuando su estructura contie
ne dos campos o punteros encadenados: uno que seala el elemento siguiente
y otro el que apunta al elemento precedente.

t t t t
PRIMERO: 1000 1600

(b)
1300 1200
, IZQUIERDA.. +-[IT]-+-
[2[I]........ .... . . :[IT]
...
. +-DERECHA

Figura 5.13. Insercin/borrado en una lista encadenada.


Un uso de listas de varios punteros es llevar la cuenta en un orden diferente
al ordinario.
La lista encadenada, que necesita un enlace o puntero entre dos elementos
consecutivos de la lista, se utiliza en el caso de que el nmero de eliminaciones 5.6. ARBOLES
e inserciones de elementos sea muy grande, ya que basta modificar el puntero
del elemento anterior en el caso de eliminaciones y aadir un nuevo puntero Las estructuras de datos estudiadas anteriormente no permiten representar
en el caso de una insercin. informaciones jerrquicas. Sin embargo, en informtica existen mltiples aplica
La manipulacin de listas se puede hacer en cualquier lenguaje de programa ciones donde se utilizan este tipo de organizaciones.
cin, aunque existen lenguajes especiales para su manipulacin como son: LlSP, Algunos ejemplos de representaciones jerrquicas de estructuras de objetos
SNOBOL, etc. son:
162 METODOLOGIA DE LA PROGRAMACION
ESTRUCTURA DE DATOS 1 63

1.
5.6.1. Definicin
_____________ EmTado _____________
Un rbol, estructura arborescente o arborescencia es una estructura no lineal
en la que cada elemento est relacionado con dos o ms elementos. Un rbol
Estado civil Direccin Estudios
consta de un conjunto de nodos (unidades de informacin) en las que adems

/ ~ /I\~ /~

de la propia informacin contiene direccin de otros nodos de menor importan


cia o jerarqua, y cumple las siguientes condiciones:
Nombre Nacimiento Calle Nmero Ciudad Provincia Ttulo Cursos a) Existe un nodo raz.

/
Fecha
~. Lugar
b)

e)
El resto qe los nodos se distribuye en un nmero n de subconjuntos dis
tintos.
Cada uno de estos subconjuntos es un subrbol del nodo raz.
En el ejemplo de la estructura EMPLEADO, existe un rbol raz (EMPLEA
Esta estructura puesta en forma de variable compuesta, declarada en COBOL DO) y por los tres subrboles: ESTADO CIVIL, DIRECCION y ESTUDIOS.
sera: Los elementos de la estructura se denominan nodos. El nodo A es el nodo raz
~ del rbol.
01 Empleado
02 Estado civil

03 Nombre

03 Nacimiento

04 Fecha

04 Lugar

02 Direccin

03 Calle

03 Nmero

03 Ciudad

03 Provincia

02 Estudios

03 Ttulo

03 Cursos

8
El nodo B es nodo del subrbol 1, el nodo C es raz del subarbol 2 y el O es
2. Las instrucciones pueden representarse en un lenguaje de programacin raz del subrbol 3.
como estructura arborescente.
Grado de un nodo es el nmero de subrboles de ese nodo. El grado del
if m then
nodo A es 3 y el del nodo O es 2.
begin
Los nodos de grado son los terminales tambin llamados hojas.
nl ; Las lneas que unen dos nodos se llaman lados o aristas o ramas.
n2; instruccin Camino de un nodo es el conjunto de aristas a travs de las cuales se pasa
desde el nodo raz a ese nodo.

/~
n3;
end
A cada nodo se le asocian uno o varios subrboles llamados descendientes
else p
o hijos. Los nodos B, C y O son hijos del nodo A.
Los nodos hermanos son los sucesores directos de un mismo nodo (hijos de
estructura en rbol if then else
un mismo padre). O, E y F son todos hermanos. F y P no son nodos hermanos.
/1\
n1 n2 n3 p
Si el nivel del nodo raz es 1, el nivel de un nodo es el de su padre ms l.
Se dice que un rbol es n-ario (n, constante entera) cuando el nmero mxi
mo de hijos' de un mismo nodo es n. Un rbol binario es un rbol en el cual
ESTRUCTURA DE DATOS 165
164 METODOLOGIA DE LA PROGRAMACtON

aunque estas representaciones sean idnticas (igual rbol en el caso de rboles


cada nodo tiene, como mximo, dos hijos. Todo rbol n-ario se puede transfor
mar en un rbol binario equivalente. El rbol EMPLEADO es un rbol ternario. no binarios.
Un rbol no puede estar vac{o: contiene como mnimo un elemento. la raz.
Un ejemplo grfico completo de un rbol sera:
Raz

Grado 2 Son rboles iguales. pero


Nivel 1
rboles binarios distintos.

Grado 1 Nivel 2

Nivel 3
La altura o profundidad de un rbol binario es el nmero de nodos que
Grado 1
constituyen el camino ms largo desde la raz a una hoja.
Un problema tpico consiste en la conversin de un rbol ordinario en un
rbol binario equivalente.
Grado O Nivel 4 Un rbol binario se dice que est completo o lleno cuando tiene todos los
nodos de grado 2 excepto los nodos terminales.

Otras formas de representar un rbol son:

C {F Q R T

61\ B D{G El problema de convertir un rbol cualquiera en un rbol binario se represen

8 1 I E
ta en la Figura 5.14.

,
A
.... ~ - A

G
5.6.2. Arboles binarios
H F
Una de las estructuras ms comunes de los rboles, es aquella en que cada (a) (b) (e)
nodo tiene como mximo dos subrboles (grado 2), que se conocen como subr
Figura 5.14. Conversin de un rbol cualquiera en rbol binario.
bol izquierdo y subrbol derecho. Dos rboles binarios contiguos son distintos

,"~~,:"",.,,...

166 METODOLOGIA DE LA PROGRAMACION ESTRUCTURA DE DATOS 167

5.6.3 Recorrido de un rbol binario EJERCICIOS PROPUESTOS

Existen diferentes maneras de recorrer un rbol para tratar los diferentes


nodos que lo constituyen. Supongamos un rbol binario.

~.
-
1
I
1

' 2.
Disear un algoritmo que calcule el mayor valor de la lista:

L(I) SIENDO 1= 1, 2, 3, ... , N

Dada una lista L(I) de N nmeros disear un algoritmo que calcule en forma
~ independiente

r a) La suma de los nmeros impares.


G J r H
b) La suma de los nmeros pares.

3. Escribir el diagrama de flujo y el algoritmo que permite imprimir los nme


Las acciones a considerar son tres y segn el orden en que se efecten se ros de una tabla de dos dimensiones (5 x 4).
tendr el recorrido en un sistema o en otro. 4. Se desea disear un algoritmo que permita obtener el mayor valor almacena
Posicionarse en la raz. do en una tabla VENTAS de dos dimensiones (4 filas y 5 columnas).
Recorrer el subrbol izquierdo. NOTA: La tabla contiene informacin almacenada en cada elemento.
Recorrer el subrbol derecho. 5. Hacer diferentes listados de una lista de 10 nmeros segn el siguiente crite
no:

Los tres tipos de recorridos ms frecuentes y su aplicacin concreta al rbol

anterior son: -
Si los nmeros estn comprendidos entre y 50, ponerlos en la lista 1
(el 50 no pertenece a la lista 1).
- Si los nmeros estn comprendidos entre 50 y 100, en la lista 2 (el 50
Recorrido prefijo o preorden pertenece a la lista 2).
Posicionarse en la raz.
- Si estn entre lOO Y I50, colocarlos en la lista 3 (el 100 Yel ISO pertenecen
Recorrer el subrbol izquierdo. a la lista 3).

Recorrer el subrbol derecho.

Recorrido postfijo o postorden


Recorrer el subrbol izuierdo
Recorrer el subrbol derecho.
Posicionarse en la raz.

DBGEHIFCA

Recorrido en orden o simtrico


Recorrer el subrbol izquierdo.
Posicionarse en la raz.
Recorer el subrbol derecho

DBAGECHFI

CAPITULO 6

TABLAS DE DECISION

6.1. INTRODUCCION A LAS TABLAS DE DECISION

Los organigramas estudiados en los captulos anteriores presentan una serie


de inconvenientes:
El ordinograma no es nico para un problema determinado.
Difciles de modificar.
En lenguajes muy evolucionados, los organigramas pierden eficacia.
El proceso secuencial del ordinograma obliga a establecerlo de manera
progresiva antes de tener la totalidad del proceso a realizar.
El uso de las Tablas de Decisin en Informtica es reciente -aos 58 a 60-,
aunque anteriormente se haban utilizado en numerosas actividades como tablas
de tarifas, contabilidades, etc.
Las tablas de decisin (TD) constituyen una herramienta poderosa para
definir la lgica de un programa complejo. Constituyen un medio de representa
cin de la informacin en forma tabular, cuyo objetivo primordial es el de
aportar informacin en un formato que sea fcil de leer y comprender.
El uso de las tablas de decisin aunque no tan extendido como los ordino
gramas, suele constituir en algunas ocasiones una tcnica para capturar datos y
la primera operacin de anlisis del problema. Una vez planteada la TD se suele
realizar la construccin del ordinograma o algoritmo correspondiente. En ocasio
nes las TD sustituyen a los diagramas de flujo u ordinogramas.
169
170 METODOLOGIA DE LA PROGRAMACION TABLAS DE DECISION 171

6.2. DEFINICION DE UNA TABLA DE DECISION (TD) La entrada de las condiciones (combinacin de las posibles condiciones),
permiten reflejar en la TD si se cumple o no tal condicin o si es indiferente,
La secuencia de un programa puede ser descrita por una estructura de deci es decir, sea cual su condicin de entrada, no tiene influencia sobre la accin
sin, la Tabla de Decisin (TD). que debera efectuarse.
Una TD es un documento de comunicacin entre usuarios, analistas. progra La entrada de las acciones (decisin) indica efectuar la accin correspondien
madores, etc., y un instrumento de anlisis y programacin, que se puede aplicar te a un conjunto de condiciones cumplimentadas.
a numerosos y diversos problemas permitiendo la representacin de las diferen
tes situaciones de un modo fcil y lgico.
Una TD es una herramienta que permite presentar deforma concisa las reglas 6.2.1 Reglas de decisin
lgicas que hay que utilizar para decidir acciones a ejecutar en funcin de las
condiciones y la lgica de decisin de un problema especfico. Cada combinacin de entrada de condiciones y su correspondiente entrada
Una TD es un tipo de tabla que muestra lo que debe realizar el programa .de acciones constituyen una relacin denominada regla de decisin. Existen
cuando se cumplen ciertas condiciones. Son especialmente tiles para describir tantas reglas como pares distintos de entradas condiciones/acciones. El nmero
procesos que incluyan muchas decisiones mltiples. \ de reglas de decisin debe cubrir todos los casos posibles, sin repeticiones ni omi
En esencia las TD constituyen una tcnica fcil de aprender y emplear que siones.
no requiere grandes esfuerzos de imaginacin para su comprensin e interpreta
cin.
Una tabla de decisin se representa en un cuadro de cuatro bloques (Figu Notas de construccin
ra 6.1).
El nmero de reglas de decisin es 2n siendo n el nmero de condiciones posi
bles.
. A una condicin de entrada slo le corresponde una decisin o condicin de
salida.
A una condicin de salida le pueden corresponder varias condiciones de en
MATRIZ DE ENTRADA DE
CONDICIONES trada.
CONDICIONES
(Situacin) Para que una TD est bien construida es necesario que en cada momento sea
cierta una y slo una de las situaciones.
El resultado de una regla no vara si se permuta el orden de las lneas de
condicin, ni la lgica de decisin cambia si se permuta el orden de las
columnas (reglas).
Cada regla de decisin (columna) es una estructura Si-entonces (si se cumple
la condicin de entradas entonces realizar talo tales acciones), del tipo
ENTRADA DE
MATRIZ DE
ACCIONES
booleano de condiciones y se le pueden aplicar las leyes del Algebra de Boole.
ACCIONES
(Decisin) La entrada de condiciones se representa con los smbolos lgicos S, N o X
(S, afirmativa; N, negativa; X, indiferente).
La entrada de acciones se representan con una X si se realiza y en blanco o
.'
un guin (-), si no se realiza.
Figura 6.1. Representacin grfica de una tabla de decisin (TD).
La lista de condiciones puede ponerse en cualquier orden.
'. La lista de acciones debe ponerse en el orden en que se tengan que ejecutar.
. Cada columna (regla de decisin) de una TD equivale a una ruta o camino
de un diagrama de flujo.
A la izquierda de la Figura 6.1 se tiene la matriz y a la derecha las entradas.
La matriz de condiciones recoge las condiciones de todo o parte del problema,
dicho en otras palabras, las preguntas que deben probarse para alcanzar una
decisin, La matriz de acciones refleja todas o parte de las acciones del problema 6.2.2. Modos de presentacin de las tablas de decisin
a realizar o las acciones que han de emprenderse cuando se presenta un conjunto
dado de condiciones. Existen dos modos de presentacin: horizontal y vertical.
1 72 METODOLOGIA DE LA PROGRAMACION T ABLA5 DE DECI510N 173

Presentacin HORIZONTAL
La representacin de una TD completa se representa en la Figura 6.2.
En este modo de presentacin:
Situacin
Las condiciones y las acciones se escriben horizontalmente.
....--
r--
Las reglas se leen verticalmente. C1 S S S N N
Reglas
C2 S N N S N

Condiciones Condiciones
<D

Cn N N S N S
Lo-

Acciones
A1 X X X
,
A2 X X
Acciones
@

Presentacin VERTICAL

An X X
En este modo de presentacin:
~

Las condiciones y las acciones se escriben verticalmente. S - S Regla de decisin


Las reglas se leen horizontalmente. N - No

X - Accin de ejecucin

Condiciones Acciones En blanco - No se realiza.

Figura 6.2. Tabla de decisin completa.

Las TD se leen siempre de izquierda a derecha y las reglas de arriba. a abajo.


Las lneas horizontales y verticales dobles sirven como lmite o frontera: las
condiciones aparecen encima de la doble lnea horizontal y los tratamientos
debajo de dicha doble lnea.
Ejemplo 1: Tabla de decisin que contiene los pedidos de una empresa y
emite facturas a los clientes de acuerdo con las siguientes hiptesis:

a) Los pedidos pueden ser de Madrid o exteriores a Madrid, yen cualquier


Reglas caso se expedir la factura calculando el precio total de acuerdo con las
siguientes condiciones.
b) Pedido exterior de Madrid: Imprimir etiqueta de direcciones para' envo
por correos; cargar costes en la factura.
e) Pedido de Madrid: Si el pedido es superior a 50.000 pesetas hacer un..
descuento del 5 %.
174 METODOLOGIA DE LA PROGRAMACION
TABLAS DE DECISION 175

Envo a Madrid S S N N por consiguiente en la condicin e2, Si o No, se producen las mismas ac
Pedido superior a 50.000 N S S N
ciones; eso significa que se pueden simplificar las dos reglas R2 y R4 dejndo
Imprimir etiqueta X X
las reducidas a una sola R24 con la segunda condicin representada por un
Calcular precio pedido X X X X guin (-).
Aadir portes X
Descuento 5 % X S S S
equivale a S N

La lectura de la TD (izquierda-derecha) arroja los siguientes resultados: S N S

l. Si el envo es a Madrid y no superior a 50.000 pesetas entonces calcular


precio pedido para emitir factura por ese precio. De igual forma las reglas 3 y 7 producen las mismas acciones.
2. Si el envo es a Madrid y s superior a 50.000 pesetas, entonces calcular
precio pedido y hacer un descuento del 5 %. S N
3. No es de Madrid el envo y s es superior a 50.000 pesetas, entonces/ N N

imprimir etiquetas, calcular precio pedido y al'adir portes para emitir S S

factura total.
4. No es de Madrid el envo y no es superior a 50.000 pesetas, entonces
imprimir etiqueta y calcular precio pedido para emitir factura total. por consiguiente se pueden sustituir por una sola regla, R37
La TD es denominada propia por indicarse en ella todo el conjunto de
condiciones posibles. En el caso de que una o varias combinaciones de condicio
nes den lugar a las mismas acciones es posible simplificar la TD obtenindose N
en ese caso la TD impropia o reducida, que tiene menor nmero de reglas. S
As por ejemplo en la TD:
Reglas As pues, la TD resultante sera:
R1 R2 R3 R4 R5 R6 R~ R8

Rl R24 R37 R5 R6 R8
C1 S S S S N N N N
Cl S S - N N N
C2 S S N N S S N N

C3 S N S N S N .
S N
C2 S - N S S N

C3 S S S
,- - ,- - S N N
A1 X X X X
. X X X

A1 X X X X X
A2 X'
'--

A2 X X
A3 X X X X X
- -
A3 X X X
A4 X X

A4 X X X

Las reglas 2 y 4 producen las mismas acciones

s S Ejemplo 2
S N
N S Tabla de decisin para la expedicin de billetes de ferrocarril (dos clases, l.a
y 2. a) y con dos listas de espera (l.a y 2. a).
176 METODOLOGIA DE LA PROGRAMACION
TABLAS DE DECISION 1 77

R1 R2 R3 R4 R5 R6 R7 R8 Otras
6.3. TIPOS DE TABLAS DE DECISION
Cl Peticin billete 1 a S S S S N N N N
Las tablas de decisin se pueden clasificar atendiendo a dos criterios:
C2 Peticin billete 2. a N N N N S S S S
Tipos de entrada de condicin
C3 Existen plazas en 1. a S S N N N S N S
Limitadas.
C4 Existen plazas en 2. a N S N S S S N N Ampliadas.
Mixtas.
Al Expedir billete 1. a X X
Procesos complejos (encadenamiento o enlace de tablas)
A2 Expedir billete 2 a X X
Abiertas.
A3 Poner en lista de espera 1. a X X Cerradas.

A4 Poner en lista de espera 2. a X X


6.3.1. Tablas de decisin limitadas
Son aquellas en las que la evaluacin de todas las condiciones est limitada
En esta TD se consideran condiciones excluyentes: si el viajero pide billete a dos posibles valores: SI~NO, o la reduccin de ambas, el guin (-). En sntesis:
de La no pide de 2." y caso de no existir l.a pasa a lista de espera de 1."; igual
para el caso de billetes de 2. a Las casillas situadas frente a las condiciones se rellenan con SI, NO, o
Las reglas de condicin Rl y R2, R3 y R4, R5 y R6, R7 y R8 producen las bien, indiferente (-).
mismas acciones, por consiguiente la TD se puede reducir a: Las casillas situadas frente a las acciones slo contienen aspas (X).
Enunciado: Tabla de decisin para las ventas de unos grandes almacenes donde
R12 R34 R56 R78 Otras el cliente puede pagar al contado o con tarjeta de compras, y el pedido se
le remitir a su domicilio cobrndole portes si el pedido es inferior a
Cl Peticin billete 1. a S S N N
10.000 pesetas. (En cualquier pedido se incluir un IVA del 12 %.)
C2 Peticin billete 2. a N N S S Condiciones: Tiene tarjeta de crdito? (Cl)
Importe de la compra < 1O.000? (C2)
C3 Existen plazas en 1. a S N - -
Acciones: Contado (Cl no) (Al)
C4 Existen plazas en 2 a - - S N Cargar en cuenta (Cl si) (A2)
Cargar portes (C2 si) (A3)
Al Expedir billete 1. a X Cargar IVA (12 %) (siempre) (A4)
Rl R2 R3 R4
A2 Expedir billete 2. a X
Cl Tiene tarjeta de crdito? S S N N
A3 Poner en lista de espera 1 a X X
C2 Importe de la compra < 10.0007 S N S N
A4 Poner en lista de espera 2. a

Al Pago contado X X

Para la lectura de esta tabla -como ya se ha comentado- se examinar A2 Cargar cuenta X X


una sola regla cada vez. As por ejemplo la regla R34 se puede describir as:
A3 Cargar IVA X X X X
si la peticin es de un billete de 1." y no existen plazas en 1." entonces poner A4 Cargar portes X X
en lista de La.
178 METODOLOGIA DE LA PROGRAMACION
TABLAS DE DECISION 179
6.3.2. Tablas de decisin de entradas ampliadas o extendidas
En este caso ha sido necesario desdoblar la condicin Tarjeta de Crdito
Son aquellas tablas en donde las distintas condiciones pueden tener un rango en dos subcondiciones, pero en cualquier caso esta tabla siempre ser ms fcil
de alternativas superiores a dos valores (si o no). de leer y entender que su equivalente tabla limitada.
Ejemplos claros de aplicacin de TD ampliadas son:
a) Puesta al da de un fichero. Las posibles alternativas son: altas, bajas y
modificaciones. 6.3.3. Tablas de decisin mixtas
b) Valores numricos mltiples correspondientes a un solo elemento.
Se denominan as a las tablas que resultan de la combinacin de las tablas
I peseta = 1/135 dlares = 1/220 libras = 1/60 francos ... vistas en los prrafos anteriores.
e) Valores acotados Una aplicacin de este tipo de tabla podta ser una ampliacin del ejemplo
compras entre O y 1.000 pesetas o < C < 1.000 de expedicin de billeres de la siguiente forma:
compras entre 1.000 y 5.000 pesetas 1.000 < C < 5.000
compras entre 5.000 Y 10.000 pesetas 5.000 < C < 10.000 Comprobar plazas libres en La y 2a.
Peticin del viajero.
Ejemplo Acepta cambio de clase si no existe la solicitada.
La tabla de decisin limitada anterior se debe IllIdificar debido a que la La TD ampliada resultante s:ra la siguiente:
empresa de transportes ha variado sus tarifas y es necesario un reajuste en las
facturas de los pedidos, de acuerdo a las siguientes hiptesis. Rl R2 R3 R4 R5 R6 R7 Ra R9Rl0R11R12
,.
Si el importe de la compra < 5.000 pesetas - Cargar total portes. Billetes disponibles Slo 1. a 1 a y2 a Slo 2. a No hay plazas
Si el importe de la compra est entre 5.000 y Peticin viajero 1 a 2. a 2. a 1a 2 a La la 2a 1." 1." 2." 2."
10.000 pesetas --;- Cargar 75 % portes. Cambio de clase - S N - - S N - S N S N
Si el importe de la compra est entre 10.000 y
50.000 pesetas - Cargar 50 % portes. Expedicin billete 1." X X X
Si el importe de la compra es < 50.000 pesetas - No cobrar porte. Expedicin billete 2 a X X X
Lista de espera 1." X X X X
6
El nmero de condiciones se eleva a 6, lo que significa 2 combinaciones o Lista de espera 2." X X X X
reglas de decisin diferentes. Por otra parte, las nuevas condiciones son exclu
yentes.
Si el pedido es menor de 5.000 pesetas, nunca podr cumplir las otras condi Esta tabla resuelta en representacin grfica limitada sera enormemente
ciones (> 5.000 pesetas...). compleja, ya que de cada condicin actual se derivaran las escritas en la entrada
Al elevado nmero de condiciones habra que sumar las nuevas acciones, lo de condiciones.
que hace la resolucin del problema con TD limitada sumamente compleja,
y por ello es ms sencillo recurrir a una TD ampliada.
Tiene tarjeta de crdito SI NO SI NO SI NO SI NO 6.3.4. Comparacin y transformacin de los tipos de tablas

Importe de la compra < 5.000 5.000 Y 10000 10.000 Y50.000 > 50.000 La comparacin de las TD produce las siguientes caractersticas:
Las TD de entradas ampl-i.as son ms legibles que las TD limitadas por
Pago contado X X X X
ser menos voluminosas que sus equivalentes. La razn como ya se ha visto
Cargar cuenta X X X X reside en el hecho de que una condicin de una tabla de entrada amplia
corresponde a varias condiciones de la tabla de entradas limitadas equiva
Cargar IVA X X X X X X X X lentes, debido a que stas slo tienen dos posibles alternativas S o N.
Las TD de entradas limitadas son ms facil de codificar en programa (las
Cargar portes 100% 75% 50% 0% reglas de decisin constituyen caminos de un diagrama de flujo) que las
tablas i m p l i c a d a s . )
~ ..
':,~"

180 METODOLOGIA DE LA PROGRAMACION TABLAS DE DECISION 181

Para convertir una TD de entradas amplias en una TD de entradas limitadas Reglas O (OR)
ser necesario ejecutar las siguientes tareas:
Para que se satisfaga una regla basta con que se cumpla cualquiera de las
formular tantas condiciones binarias (S/N) como alternativas consideradas condiciones de la situacin (operador lgico OR). Existen dos tipos de reglas
existan para cada condicin de la tabla de entrada amplia. O.
formular tantas acciones binarias (S/N) como posibilidades consideradas
en las reglas, para cada una de las acciones de la tabla de entrada amplia.
La tabla mixta anterior podra quedar as: OR inclusivo
Se cumple una u otra condicin aislada o simultneamente.
Rl R2 R3
-

Billetes disponibles slo 1." S E


x
I S
OR exclusivo
Billetes disponibles 1" Y 2." c
I
Entre dos condiciones se cumple una u otra pero no ambas simultnea
Billetes disponible slo 2" u S mente.
y
No hay plaza e En la siguiente tabla se pueden apreciar las reglas Y, OR
n
t
e Rl R2 R3 R4
Peticin de viajero 1." S s S
I / Cl N N S ,S
Peticin de viajero 2." S
, C2 N S N S
Cambio de clase S S

Acciones ...
Expedicin billete 1." x ... ... ...

Expedicin billete 2." x ....


Lista de espera 1"
Las reglas R2, R3 Y R4 son del tipo o inclusivo, las reglas R2 y R3 o
Lista de espera 2." exclusivo. La regla R4 constituye una del tipo y.

Procediendo en forma inversa se convertir una TD limitada a una TD am'" Reglas ELSE (sino)
pliada.
Entre las diversas situaciones posibles slo algunas de ellas conducen a trata
mientos diversos, mientras que el resto de las reglas conducen a un nico trata
6.4. TIPOS DE REGLAS DE DECISION miento. Las reglas que conducen a un tratamiento nico se agrupan en una sola
regla denominada ELSE (sino o en otro caso). Se suele colocar al final de la TD
Las reglas de decisin segn las relaciones que existan entre las condiciones sin evaluar sus condiciones.
de una tabla de decisin pueden ser:

Reglas y (AND) 6.4.1. Conversin de reglas O y SINO

En cada situacin se necesita que se satisfaga la. primera condicin Y la} Una regla O se transforma en n REGLAS and, siendo n el nmero de
segunda Y la tercera, ... (operador lgico AND) , condiciones que intervienen en la regla (las n reglas se suponen con indiferencias,
si condicin 1 Y condicin 2 Y '" entonces. ya que sin ellas se tendra 2tn - 1).
TABtAS 'O~WCIStON T83
182 METODOLOGIA DE LA PROGRAMACION
Una vez identificadas las condiciones y acciones se comienza la escritura de
Supongamos la situacin de una regla OR extrada de una TD de 4 condi la TD de acuerdo a las siguientes reglas:
ciones.
Escritura de las condiciones
N sino se cumple la primera condicin.
S O si se cumple la segunda. Realizar un listado de todas las condiciones.
N O no se cumple la tercera. Clasificar las condiciones siguiendo el orden lgico -si existe-- en el que
S O si se cumple la cuarta. se consideran. As en el caso de 3 condiciones, rdenes lgicas pueden ser:

Esta regla OR equivale a 4 reglas AND NNNNS S S S SSSSNNNN


NNS S NNS S o bien S S NNNNS S
R1 R2 R3 R4
NS NS NS NS S NS NNS NS
N S S S
S N Una eleccin lgica del orden de las condiciones simplifica considerablemen
N
N te la escritura de las reglas de la tabla.
S
En la suscripcin de una revista de informacin, los suscriptores antiguos
S
tienen un descuento del 10 % Y los estudiantes del 20 %. Los descuentos no
(-) significa indiferencia que procede de la fusin de dos situaciones similares. pueden acumularse y caso de coincidir dos descuentos en una sola persona, se
le aplicar el mayor descuento a que tenga lugar.
N N La tabla de decisin puede ser la siguiente
N S Rl R2 R3 R4
N N
S S Cl
Suscriptor antiguo? S S N N

equivale a N
C2
Estudiante? S N S N
-

N
Al Descuento 1O % X
S

A2
Descuento 20 % X X

A3
Sin descuento X
6.5. CONSTRUCCION DE TABLAS DE DECISION

Para construir una TD son necesarios los siguientes pasos: Sin embargo, eligiendo las condiciones C 1 y C2 en sentido contrario, como
el descuento de estudiante es mayor que el de suscriptor antiguo, haciendo la
a) Estudio de condiciones, acciones y sus relaciones. pregunta de estudiante antes, cuando la contestacin es afirmativa, ser indife
. I b) Rellenar la TD.
rente la situacin como suscriptor.
c) Analizar la TD.
d) Simplificar la TD.
Estudiante S N N

Suscriptor antiguo - S N
6.5.1. Estudio de condiciones, acciones y relaciones
Tras la lectura del enunciado del problema se localizan las condiciones, que Descuento 1O % X
se han de extraer del enunciado, mediante la bsqueda de palabras similares-.a Descuento 20 % X
Si, cuando, si no, etc..
Las acciones como el diccionario de la lengua indica se han de localizar en Sin descuento X
el enunciado con los verbos que implican accin, es decir hacer algo: realizar,
ejecutar, sumar, restar, etc.

.It~~{~."
184 METODOLOGIA DE LA PROGRAMACION TABLAS DE DECISION 186

Regla: El orden lgico de considerar las condiciones de una tabla es el si 6.5.2. Anlisis y requisitos de una TD
guiente:
Antes de convertir la TD en programa se necesita efectuar un anlisis de sus
De arriba abajo para las tablas de presentacin horizontal. reglas y comprobar que la TD diseada cumple los siguientes requisitos:
De izquierda a derecha para las tablas de presentacin vertical.
Completa.
Escritura de las acciones No tiene redundancias.
Realizar el listado de todas las acciones a tomar. No tiene contradicciones.
Clasificar las acciones mediante un orden cronolgico -si existe- segn Una TD es completa cuando se han establecido todas las situaciones posibles
el orden en que deben considerarse. En ocasiones el orden no es importan- , -todas las combinaciones matemticamente posibles de las entradas o estados
te, pero en otras puede afectar el desarrollo de las acciones. de las condiciones-, o dicho de otra forma: no se ha olvidado ninguna posible
El orden de considerar las acciones es: entrada.
- De arriba abajo para las tablas de presentacin horizontal. U na TD no tiene redundancias cuando no existen ningunas situaciones idn
- De izquierda a derecha para las tablas de presentacin vertical. ticas que conduzcan a tratamientos idnticos. Existe redundancia cuando apare
ce dos o ms veces la misma entrada de condiciones con igual tratamiento.
Una TD no es contradictoria cuando siendo redundante los tratamientos son
Escritura de las reglas de decisin de las TD limitadas
los mismos, o dicho de otra manera, es contradictoria cuando a un mismo estado
a) Escritura de la entrada de condiciones (situaciones) de condiciones le corresponden tratamientos diferentes. Si el conjunto de reglas
Las condiciones se deben formular Si (S), No (N) o Indiferente (-). supera 2", existirn errores.
Seguir un orden lgico en las entradas. Por ejemplo, primero todos
los Sles (o todos los NOes) y a continuacin hacer que vayan apare
ciendo los NOes progresivamente. Si una tabla de decisin contiene 6.5.3. Simplificacin de una tabla de decisin
n condiciones debe tener 2" reglas, caso de no utilizar signos de indife
rencia. La simplificacin de una TD se debe realizar siempre que sea posible. Un
As para una TD de 3 condiciones: mtodo consiste en agrupar reglas simples en reglas compuestas (reglas simples
son las que no contienen ninguna indiferencia y reglas compuestas las que
Condicin 1 s s s s N N N N contienen al menos una indiferencia).
Dos reglas pueden simplificarse siempre que se produzcan las mismas accio
Condicin 2 s s N N s s N N nes y un estado de condiciones difiere slo en la situacin de una condicin.
Condicin 3 s N s N s N s N Rl R2 R12

Cl S N Cl S
Acciones
C2 S N C2 -
b) Escritura de la entrada de acciones C3 N N equivale a C3 N

Se van colocando aspas (X) frente a las acciones que hay que ejecutar
Al X X Al X
para cada situacin o conjunto de condiciones considerada.
A2 A2
Escritura de las reglas de las TD ampliadas
Se van escribiendo las condiciones de modo que a cada una de ellas le A3 A3
corresponder un determinado nmero de alternativas. Para evitar olvidar reglas
es conveniente seguir un mdoto para rellenar las tablas.
Para rellenar las entradas de acciones bastar ir colocando las precisiones La siguiente tabla no se puede simplificar (difiere en ms de dos situa
relativas a las acciones que se han de ejecutar en las casillas correspondientes. ciones).

,~"@\AAv'w,Ff )",._<,
186 METODOLOGIA DE LA PROGRAMACION
TABLAS DE DECISION 187

Rl R2 Una forma de comprobar la simplificacin, sera hacer estos dos pasos:


Cl S S R12 R34 R1234

C2 N S Cl S S Cl S
C2 S S C2 S
C3 S N C3 - - equivalente a C3 -
C4 S N C4 -
Al X X
Al Al
A2 A2 A2 X

Si son ms de dos reglas las que contienen iguales acciones, existe un teorema:
denominado del paraguas por el tipo de dibujo necesario para la obtencim
de la simplificacin, que permite la sustitucin de varias reglas simples por un~j 6.6. ENCADENAMIENTO DE TABLAS DE DECISION
compuesta, siempre que las reglas simples tengan las mismas acciones: Se Ulll'
mediante un arco aquellas reglas en que slo cambia una condicin. Si todu"" Cuando un problema de lgica es complejo, la TD equivalente resultar as
los arcos forman un circuito cerrado, se puede obtener una regla compuesta qlt~ mismo compleja. En estos casos es preferible dividir el problema en problemas
sustituya a las reglas simples. '\'1i secundarios de modo que cada uno de ellos d lugar a la creacin de una tabla
En la siguiente TD es posible simplificar las 4 reglas simples en una sola con'i l; particular. Las TD pequeas son ms fciles de realizar, utilizar, modificar y
puesta, debido a que se cumple el teorema anterior. leer que una TD voluminosa. Posteriormente las diferentes tablas se encadenan
o enlazan para la solucin del problema global.
Rl R2 R3 R4
Los encadenamientos se realizan con las ya conocidas tablas abiertas y tablas
Cl S S S S cerradas.
C2 S S S S
6.6.1. Tablas abiertas
C3 S N S N
Estas tablas presentan una conexin al principio de la tabla llamada (n) sin
C4 S S N N
necesidad de retorno a la tabla que llama, despus de la ejecucin de la tabla n.
Las llamadas se realizan mediante una bifurcacin incondicional del tipo
Al GO TO y una vez ejecutada no retorna a la tabla anterior.
Se clasifican en dos grandes grupos:
A2 X X X X
Encadenamiento en cascada
TDl
La tabla resultante se obtiene viendo las condiciones que permanecen
y poniendo indiferencias en las condiciones que varan.
R14

C2 S

C3 -
C4 - Ir a TD2 X ... _X

Al
A2 X ~ TD2
~;~" .;!,

188 METODOLOGIA DE LA PROGRAMACION TABLAS DE DECISION 1 as


TDl Otros ejemplos de encadenamientos seran:

TDl TD3

r-~.
-

Ir a TD3 X ... X ... X


Ir a TD3 t- Ir a Ir a
TD4 TD5

L_ .... Tn"l
J J
. f
TD2 TD4 TD5

Ir a TD3

Encadenamiento en anillo
TDl TD4
IV'"'T <OIllIf

""'"

6.6.2. Tablas cerradas

Ir a TD2 X X L-- Ir a TDl X ... Son aquellas en que una vez ejecutada la tabla llamada, devuelve el control
a la tabla que le llam. La llamada se realiza mediante una estructura DO (hacer)
y el retorno del control a la tabla precedente con RETURN (volver a).
Existen numerosos casos de tablas cerradas.
L. TD2

Tabla cerrada

20
Ir a TD3 X .. X f-
Ir a 20

~
TD3 +
Retornar -
i I
Ir a TD4 X ... X r-
Ir a 20 -
190 METODOLOGIA DE LA PROGRAMACION
TABLAS DE DECISION 191
l. Se puede llamar desde una tabla a varias tablas cerradas.
Las condiciones que se deben cumplir para que pueda existir un encadena
.........
r-+ miento son:
Tabla 1

! 1 r- Tabla 2

I
l. Cada tabla se debe identificar mediante una etiqueta (nmero o serie de
caracteres).
2. La tabla invocada se ejecutar totalmente.
Tabla
llamadora
3. Cada regla de decisin debe indicar lo que se ha de hacer a continuacin
~ f-
~ (bifurcar, hacer, terminar, etc.).
1
Tabla 3
- Tabla 4
6.7. CONVERSION DE TABLAS DE DECISION
EN PROGRAMAS
I
2. Una tabla cerrada puede ser llamada desde diferentes tablas. La conversin de las TD en programas se pueden realizar con diferentes tc
meas:
a) Programacin directa en lenguajes de alto nivel como COBOL, FOR

Tabla 1
- TRAN o BASIC.
b) Transformacin de la tabla en diagramas de flujo.
c) Convertidores de TD en programas.
d) Mtodos matriciales.
I Ir

Tabla 2
--'"
Tabla 6.7.1. Programacin directa en lenguajes de alto nivel
f
cerrada
"""" Las reglas de decisin se convierten en instrucciones de los lenguajes. En el
caso de la siguiente regla.
I R1
Tabla 3 C1 S

C2 N

C3 S
en COBOL se codificara asf:

3. Una tabla cerrada puede llamar a su vez a otras tablas cerradas. A1 X

Tabla 3 A2 X

I~T'bl"l.',
IF C1 AND NOT C2 AND C3 HACER A 1 A2 ELSE ...
Tabla 2
(cerrada) Esta tcnica es cmoda pero tiene el inconveniente de preguntar en la misma
I pasa~ varias veces por la misma condicin.
Si se han definido tablas encadenadas, cada una de ellas dar lugar a subpro
Tabla 4
gramas abiertos o cerrados segn el tipo de tabla.
En el caso de tablas abiertas, la accin ir a la tabla n se traduce segn el
caso, por una instruccin de bifurcacin incondicional del tipo GOTO (BASIC
o Pascal) GO TO (COBOL), o bien por una instruccin de llamada a subpro
"-,;.,~,~.'ii"<'4aJ'k':~~",,,~ >;'''':~'-'--''-'
192 METODOLOGIA DE LA PROGRAMACION
TABLAS DE DECISION 193

grama abierto o subrutina mediante la instruccin CALL en COBOL, BASIC, Paso 1


etctera.
Si son tablas cerradas, la accin ejecutar la tabla n se traduce por una ins R4 YR7 - reglas simples (coeficiente I/R4 = 1, R7 = 1).
truccin de llamada de subprograma cerrado (instruccin PERFORM en R1. R2 Y R5 - reglas compuestas con una indiferencia (equivale cada una
COBOL). a dos reglas simples; coeficiente 2/R 1 = R2 = R5 = 2).
R3 Y R6 - reglas compuestas con dos indiferencias (equivale cada una
a cuatro reglas simples; coeficiente 4/R3 = R6 = 4).

6.7.2. Transformacin de la tabla en diagrama de flujo Paso 2

Esta tcnica fue desarrollada por S. L. Pollack y establece como hiptesis Condiciones Indiferencias Coeficientes
que la evaluacin de cada condicin va a ocupar siempre las mismas posiciones C1 R3 4
de memoria. A continuacin se debe minimizar el nmero de evaluaciones a C2 R5 2
efectuar, o sea, lograr un mnimo nmero de pruebas de condiciones. C3 R1, R2, R3, R6 2+2+4+4=12


El mtodo se basa en la localizacin de las indiferencias de cada regla, siguien C4 R6 4

do los siguientes pasos:


Se ~Iige la condicin C2 por ser la de coeficiente mnimo.
1. Clculo del nmero de reglas simples a las que equivale cada regla (una
regla con n indiferencias equivale a 2 reglas simples) y rellene el final R1 R2 R3 R4 R5 R6 R7 Coeficientes
de cada columna.
2. Por cada condicin se calcula un coeficiente sumando los valores calcula C1 N S - S S N S 4
dos en I y se registra en una columna a la derecha de la TD; el coeficiente
de cuenta mide el nmero de reglas en que la condicin en estudio no C2 S N S S - N N 2
interviene (su valor ser tanto ms importante cuanto menor sea su C3 - - - -
N S N 12
valor). Se evala en primer lugar la condicin cuyo coeficiente sea menor.
3. Si existen varias condiciones con una cuenta mnima igual, se elige un CA S N N S S - S 4
nuevo valor (coeficiente) que es el que mide en valor absoluto la diferen
Condiciones 2 2 4 2 4
cia entre el nmero de SI y NO que aparecen en dichas condiciones,
eligindose el de mayor valor absoluto.
Al evaluar la condicin C2 (S y N), la TD se transforma en dos tablas
4. Si subsiste la igualdad se elige indiferentemente cualquiera de las condi
derivadas de la eliminacin de la condici,n C2. La primera tabla contiene las
ciones.
reglas en las que la condicin C2 tiene el valor S y la segunda el valor N (las
5. Se repite el proceso (pasos I a 4) hasta la ltima condicin.
indiferencias tienen los valores doble S y N).

Sea, por ejemplo una TD de 4 condiciones y 7 reglas con las indiferencias si


guientes: Paso 3
Las evaluaciones siguientes a partir de C2 es para C 1 y C4 por orden de
coeficiente (C I para e2 con evaluacin N y C4 para evaluacin S).
R1 R2 R3 R4 R5 R6 R7

Cl N S - S S N S C2 con evaluacin S

C2 S N S S - N N Regla Coefi cien!e Condiciones Indiferencia Coeficiente


C3 - - - N S - N
R1 2 C1 R3 4
R3 4 C3 R1, R3 2+4=6
C4 S N N S S - S R4 1 C4 Ninguna O
RS 1
'ci:::"_'i,." __,,,
A .
TABLAS DE DECISION 195
194 METODOLOGIA DE LA PROGRAMACION

El diagrama resultante ser


La siguiente condicin es C4 (coeficiente O).

s N
C2 con evaluacin N
Regla Coeficiente Condiciones Indiferencia Coeficiente
R2 2 C1 Ninguna O
R5 1 C3 R2, R6 2+4=6
R6 4 s N
C4 R6 4
R7 1

La siguiente condicin es Cl (coeficiente O). s

1
s

<> N

I
... Cl
C3
R1

N
-
R4

I I I IS
N
R5

S
S
Coeficientes

O
2

Rl R3 R4 R5 Coeficientes R2 R5 R6 R7 Coeficientes

Cl N - S S 4 Cl S S N S O
C3 - - N S 6 C3 - S - N 6
C4 S N R2 R5 R7 Coeficientes
S S O C4 N S - S 4

C3
C4
I- I I I
N
S
S
N
S
2
O
Paso 4 Y repeticiones

(a) Estado S
A partir de C2 se analizarn los dos posibles estados o respuestas S, N.
Para C2 con evaluacin S se toma la condicin C4 ya que los coeficientes y
las condiciones son:

Coeficientes C1 - 4 R3 R6
Condiciones R1 - 2

~ ~
C3 - 6 R2 - 4
C4-0 R3 - 1
R4 - 1 C31 C4 I
Para C2 con evaluacin N se toma la condicin Cl ya que los coeficientes
son:
(b) Estado N

Coeficientes C1 - O Condiciones R1 - 2
C3 - 6
A partir de la condicin C4 se derivarn e 1 y de la condicin SI, C3 con
R5 - 1 sus dos estados. De la condicin e 1 se derivarn C4 y de la condicin SI de C4
C4-4 R6-4 la condicin e3.
R7 -1
196 METODOLOGtA DE LA PROGRAMACION TABLAS DE DECISION 197

Diagrama de flujo der;vado de C4 Para obtener el diagrama de flujo final bastar ir uniendo los diagramas de
flujo parciales.

N Diagrama de flujo total

s N

Rl R3

Diagrama de flujo derivado de C1 Rl R3 R2

.
R6

N Las reglas.indicarn las acciones a realizar en cada caso segn la TD inicial.


La codificacin resultante en pseudocdigo ser:

si C2
entonces
siC4
N entonces
si C1
entonces
siC3

entonces < R5 >

sino <R4>

N fin_si

sino <R1 >

fin_si

sino <R3>

fin_si

sino

R7 R2 R6 si C1

entonces

198 METODOLOGIA DE LA PROGRAMACION


TABLAS DE DECISION 199

siC4

entonces

si C3

entonces < R5 >

sino <R7>

fin_si
A2
sino <R2>
fin_si
sino <R6>
fin_si
fin-si

Ejemplo Al

Convertir en diagrama de flujo la siguiente TD:

C1 S N N N
C2 - S N N
C3 - - S N
A3
A1 X

A2 X

A3 X

A4 X

A4

Solucin
El orden de las condiciones se realizar por su importancia. En este caso el
orden es CI, C2 y C3 ya que se es el orden en donde ms reglas aparecen.

As pues el diagrama de flujo correspondiente ser:


\)'

200 METODOLOGIA DE LA PROGRAMACION TABLAS DE DECISION 201

EJERCICIOS PROPUESTOS 6. Transformar la siguiente TD en un diagrama de flujo.

Horas extras S S S S S S S S N N N N N N N N
Casado S S S S N N N N S S S S N N N N
Categora laboral S S N N S S N N S S N N S S N N
Antigedad S N S N S N S N S N S N S N S N

1. Construir la TD de las decisiones a tomar por un conductor frente a un se Accin Al X


Accin A2 X X X X
mforo. Accin A3 X X X X X X X X X X X
2. Construir una TD para la expedicin de facturas a los clientes de una
empresa de acuerdo con las siguientes hiptesis:
a) Los clientes deudores no tienen descuento.
b) Si de un artculo se facturan ms de 5.000 unidades se realizar un 10 %
de descuento a los artculos del tipo M y un 5 % a los del tipo N.
c) Slo en el caso de los artculos del tipo M, se aadir al descuento del
apartado b un 5 % ms si la venta se realiz en la zona de Extremadura
y un 3 % ms para la zona de Valencia.
3. Realizar una TD que permita la distribucin de los pedidos de una empresa
y la expedicin de facturas, de acuerdo con las siguientes hiptesis.
a) Si existe saldo y existencias del artculo solicitado.
y el pedido es superior o igual al mnimo (1.000) Y el cliente es
mayorista, hacer un descuento del 20 %, enviar pedido y factura.
Si el pedido es inferior al mnimo (1.000), facturar sin descuento sea
el cliente mayorista o detallista.

b) Si existe saldo pero no hay existencias disponibles suficientes:

Facturas existencias.
Dejar pendiente de envo el resto del pedido.
No hacer descuento.
Emitir factura.

c) Si no existe saldo.

Remitir presupuesto del pedido al cliente.


4. Realizar una TD limitada y su equivalente ampliada que indique el salario
a pagar a los empleados por cada hora extraordinaria, dependiendo de la
categora del empleado (A o B) y su divisin (l." o 2.").
Hora extra categora 1," - 2.500 pesetas
Hora extra categora 2," - l. 500 pesetas
Divisin A 500 pesetas
Divisin B - 250 pesetas
5. Disear una TD que permita calcular el salario total a pagar a un empleado
de una empresa de acuerdo con las siguientes proposiciones:
Si el empleado est autorizado a realizar horas extraordinarias y ha traba
jado durante la semana ms de 40 horas, se le debe pagar su salario normal
y adems el importe de las horas extraordinarias.
CAPITULO 7

PROGRAMACION

ESTRUCTURADA

7.1.INTRODUCCION

Tras conocer las caractersticas que debe tener un programa es necesario


seguir una metodologa encaminada al cumplimiento de esas caractersticas. La
metodologa de la programacin es la tcnica que permite que la programacin
sea lo ms eficaz posible en cuanto al desarrollo y mantenimiento.
En los captulos anteriores hemos definido el lenguaje de diagramas de flujo
en ordinogramas y algoritmos. Si la complejidad del problema aumenta es nece
sario recurrir a tcnicas que nos ayuden en la descripcin de nuestros organigra
mas y fundamentalmente algoritmos.

7.2. PROGRAMACION CONVENCIONAL

La realizacin de un programa sin seguir un mtodo de programacin riguro


so, aunque funcione, a la larga no ser ms que un conjunto ms o menos
grande de instrucciones. La definicin de las diferentes etapas adolecen en gene
ral de indefinicin y falta de continuidad (desarrollo y mantenimiento). La
consecuencia inmediata de lo expuesto anteriormente se podra recoger en la
siguiente relacin de problemas y defectos que suelen tener los progral1)as escritos
sin un determinado mtodo.
Los programas suelen ser excesivamente rgidos, presentando probleroas
para adaptarlos a las cada da ms cambiantes configuraciones.
203
204 METODOLOGIA DE LA PROGRAMACION PROGRAMACION ESTRUCTURADA 205

Los programadores gastan la mayora de su tiempo corrigiendo sus errores. - legible: debe ser entendido por cualquier programador, que permita fciles
Los programadores generalmente rehsan el uso de programas y mdulos modificaciones;
ya escritos y en funcionamiento, prefiriendo escribir los suyos. La comuni - modificable: el diseo nunca es definitivo y por ello su estructura debe
cacin entre programadores es muy difcil. permitir modificaciones;
Un proyecto de varios programadores tiene normalmente varios conjuntos - depurable: debe ser fcil la localizacin y correccin de errores.
diferentes de objetivos.
Cada programador tiene sus propios programas convirtindose esta rela En resumen se debe realizar un programa siguiendo tcnicas o mtodos es
cin en algo inseparable. tandarizados que consigan las caractersticas anteriores rpida y eficazmente.
Las tcnicas de programacin que permiten seguir una metodologa de la
Las modificaciones en las aplicaciones y programas son muy difciles de programacin ms empleadas son:
hacer, implican mucho tiempo y elevado coste de mantenimiento. Ello
conduce a colocar "parches" que complican cada vez ms el diseo inicial - Programacin modular

o bien a que el programa caiga en desuso y frente al elevado coste de - Programacin estructurada

actualizacin se opte por crear una nueva aplicacin que sustituya a la exis
tente. Estas tcnicas suelen ser complementarias, ya que el anlisis de un problema
puede utilizar criterios de programacin modular: para dividirlo en partes inde
Deficiencias en la documentacin:
pendientes y utilizar mtodos estructurados en la programacin de cada mdulo.
- Descripciones incompletas o escasas.
- Ausencia de diagramas.
- No actualizada 7.3. PROGRAMACION MODULAR
En esencia, los problemas anteriores y otros no citados imposibilitan la El concepto bsico de la programacin modular es muy simple, consiste en
evolucin y mantenimiento de los programas. Por consiguiente es de suma dividir un programa en mdulos.
importancia prever las futuras modificaciones al objeto de mantener los progra En realidad es un mtodo de diseo que tiende a dividir el problema, de
mas funcionando correctamente y puestos al da. Estas previsiones se pueden forma lgica, en partes perfectamente diferenciadas que pueden ser analizadas,
resumir en: programadas y puestas a punto independientemente.
La divisin de un problema en mdulos o programas independientes exige
- Aumento del volumen de datos y estructuras. otro mdulo que controle y relacione a todos los dems, es el denominado
- Cambios en la organizacin de la informacin. mdlo base o principal del problema.
- Cambios debidos preferentemente l la modernizacin de los documentos Realmente la programacin modular es un intento para disear programas,
y sus formatos. de forma tal que cualquier funcin lgica pueda ser intercambiada sin afectar
- Sustitucin, ampliacin o reduccin en el sistema de proceso de datos. a otras partes del programa.
- Etctera. Las ventajas de la programacin modular se pueden resumir en los siguientes
puntos:
As pues se deben prever las posibles modificaciones mediante la creacin
de programas con la suficiente flexibilidad que sean capaces de adaptarse a los
cambios. Se deben crear programas claros, inteligibles y breves con el objetivo a) Un programa modular es ms fcil de escribir y depurar (ejecutar, probar
de que puedan ser ledos, entendidos y fcilmente modificados. y poner a punto). Se puede profundizar en las pruebas parciales de cada
En resumen, se deben establecer una serie de normas que permitan el paso mdulo mucho ms de lo que se hace en un programa mayor.
de una programacin artesanal a una programacin que permita conseguir una b) Un programa modular es fcil de mantener y modificar.
estandarizacin y en consecuencia una disminucin de los costos informticos, c) Un programa modular es fcil de controlar. El desglose de un problema
mayor independencia del programador y seguridad de funcionamiento. en mdulos permite encomendar los mdulos ms complejos a los progra
A la hora de disear un programa, ste debe reunir unas caractersticas fun madores ms experimentados y los ms sencillos a los programadores
damentales: ms noveles.
d) Posibilita el uso repetitivo de las rutinas en el mismo o en diferentes pro
- correcto/fiel: producir resultados requeridos; gramas.
;''''"-.~~''--
206 METODOLOGIA DE LA PROGRAMACION PROGRAMACION ESTRUCTURADA 207

Los inconvenientes se pueden resumir en: En la creacin de los mdulos deben cumplirse tres aspectos bsicos: descrip
cin, rendimiento y diseo.
a) No se dispone de algoritmos formales de modularidad, por lo que a veces En la descripcin se definen las funciones y objetivos del programa. Para
los programadores no tienen claras las ideas de los mdulos. obtener el mximo rendimiento se ha de comprobar que el programa realice el
b) La programacin modular requiere ms memoria y tiempo de ejecu proceso aprovechando al mximo todos los recursos de los que dispone. En
cin. cuanto al diseo se debe comprobar la estructura que sigue el mdulo as como
Se podran sintetizar los objetivos de la programacin modular en los siguien la estructura de los datos y la forma de comunicacin entre los diversos y
tes: diferentes mdulos.

- Disminuir la complejidad.
- Aumentar la claridad y fiabilidad.
- Disminuir el coste. 7.3.2. Requisitos de la programacin modular
- Aumentar el control del proyecto.
- Facilitar la ampliacin del programa mediante nuevos mdulos. Con independencia de las tcnicas, los requisitos que debe cumplir la progra
- Facilitar las modificaciones y correcciones al quedar automticamente macin modular son:
localizadas en un mdulo.
a) Establecimiento de un organigrama modular.
b) Descripcin del mdulo principal.
c) Descripcin de los mdulos bsicos o secundarios.
7.3.1. Concepto de mdulo
d) Normas de la programacin.
El concepto de mdulo no es nico y se pueden dar varias definiciones,
aunque tal vez la ms acertada sea la siguiente: El organigrama modular se realiza mediante bloques, en el que cada bloque
Un mdulo est constituido por una o varias instrucciones fsicamente conti corresponde a un mdulo y muestra grficamente la comunicacin entre el
.guas y lgicamente encadenadas, las cuales se pueden referenciar mediante un mdulo principal y los secundarios.
nombre y pueden ser llamadas desde diferentes puntos de un programa. El mdulo principal debe ser claro y conciso, reflejando los puntos funda
Un mdulo puede ser: mentales del programa.
Los mdulos bsicos deben resolver partes bien definidas del problema. Slo
- Un programa. pueden tener .un punto de entrada y un punto de salida. Si un mdulo es
- Una funcin. complejo de resolver conviene se subdivida en submdulos. Ningn mdulo
- Una subrutina (o procedimiento). puede ser llamado desde distintos puntos del mdulo principal.
Las normas de programacin dependern del anlisis de cada problema y
de las normas generales o particulares que haya recibido el programador.
7.3. 1. 1. Caractersticas de un mdulo
Los mdulos deben tener la mxima cohesin y el mnimo acoplamiento.
Es decir, deben tener la mxima independencia entre ellos.
La salida del mdulo debe ser funcin de la entrada pero no de ningn estado 7.3.3. Clasificacin de los mdulos
interno. En esencia el mdulo ha de ser una caja negra que facilite unos valores
de entradas y suministre unos valores de salida que sean exclusivamente funcin Segn las funciones que pueden desarrollar cada mdulo, stos se clasifican
de las entradas. en:

- Mdulos tipo raz, director o principal.


- Mdulos tipo subraz.

En""", .1 Md"'o l
Salida
-
-
-
-
Mdulos de entrada (captura de datos).
Mdulos de variacin de entradas.
Mdulos de proceso.
Mdulos de creacin y formatos de salidas.
~.;;....u,,;.-....:J...o.
20S METODOLOGIA DE LA PROGRAMACION PROGRAMACION ESTRUCTURADA 209

7.3.4. Tcnicas de la programacin modular El montaje de la red se hace en modo ascendente (bottom-up) por lo que un
programador puede estar escribiendo el mdulo 11 mientras otro hace lo propio
Las fases de la resolucin de un problema con programacin modular son con el mdulo 12. Una vez terminados ambos se puede comprobar su funciona
las siguientes: miento con un mdulo ficticio 7 que llama a ambos. De igual forma se pueden
escribir los mdulos 10 y 14 al tiempo que los 11 y 12, etc.
Estudio de las especiflcaciones del problema. En esta etapa las Tablas de Los datos que forman parte de un programa modular se dividen en dos
Decisin son una herramienta de gran utilidad. grandes grupos: variables internas o locales y variables externas o globales. Las
Confeccin del ordinograma o tabla de decisin de cada mdulo. variables internas son utilizadas por un solo mdulo y las variables externas por
Codiflcacin de cada mdulo en el lenguaje adecuado. ms de un mdulo.
Los mdulos se comunican entre s por las variables externas que tcnica
Pruebas parciales de cada uno de los mdulos componentes.
mente son las ms importantes en el desarrollo del programa. Los mdulos
Prueba final de los mdulos enlazados. tienen que utilizar las variables bien como referencia o como modificador de
El diseo de una aplicacin con programacin modular consiste en la realiza su valor.
cin de una red de mdulos. Existir un mdulo raz, que se denomina principal
o director. 7.3.5. Criterios de modularizacin
Cada mdulo slo puede tener una entrada y una salida que lo enlazan con
el mdulo principal -incluso habiendo estructuras repetitivas y alternativas La divisin de un programa en mdulos debe cumplir los siguientes criterios:
dentro de un mdulo. a) Cada mdulo debe corresponder a una funcin lgica perfectamente dife
La programacin modular se basa en el diseo descendente (top-down) que renciada.
permite comprobar el funcionamiento de cada mdulo mediante mdulos ya
b) El tamao de cada mdulo es variable. Deben ser pequeos para que
comprobados.
sean claros y de poca complejidad. Las normas varan segn las situacio
nes. /
IBM considera que un mdulo no debe superar el nmero de 50
Mdulo
Rafz instrucciones en PL/I; en COBOL un nmero no superior a 500 instruc
ciones, etc. Como norma general prctica se puede considerar el tamao
mximo de un mdulo como una pgina de listado de impresora.
c) Evitar variables externas.
d) Procurar no utilizar demasiados niveles de modularizacin para evitar
complejidad de la red.
Mdulo 1 Mdulo 2 Mdulo 3 Mdulo 4
e) Estructura de caja negra para cada mdulo (la salida debe ser funcin
exclusiva de la entrada).

~l \ /
I ~ Las tcnicas de programacin modular no aportan nuevos conceptos desde
el punto de vista de proceso de la informacin sino ms bien un mtodo o
Mdulo 5 Mdulo 6 Mdulo 7 Mdulo 8 Mdulo 9 filosofa para la descomposicin idnea de un problema en problemas o mdulos
ms sencillos. Como ya se ha comentado en apartados anteriores se pueden

~ I/l~ 1
I utilizar criterios de programacin modular y posteriormente utilizar mtodos
de programacin estructurada dentro de cada mdulo independiente. Una vez
Mdulo 10 Mdulo 11 Mdulo 12 Mdulo 14 terminado el diseo de los programas de cada mdulo realizar el montaje del
programa completo mediante un diseo ascendente.

7.4. PROGRAMACION ESTRUCTURADA


Mdulo 13 En el apartado anterior se ha visto cmo la programacin modular es m's
bien una filosofa de programacin en la que se dan una serie de consejos para
w~""'"' .....,.. . . . . . , .... v;".~
', .:':"".IlJ","""",,,,,,,. _o,._.
210 METODOLOGIA DE LA PROGPAMACION PROGRAMACION ESTRUCTURADA 211

la realizacin de programas por descomposicin en mdulos. Sin embargo, para programacin. El factor humano es una de las fuentes ms importantes en la
programar cada mdulo es necesario aplicar las tnicas clsicas de diseo de comisin de errores. Uno de los objetivos de la programacin estructurada es
ordinogramas o algoritmos yen realidad no se introduce ninguna norma o regla la minimizacin del error humano.
nueva. Aunque al profesor Edgar W. Dijkstra de la Universidad de Eindhoven se
En las sucesivas fases de confeccin de un programa sabemos que la depura le considera el padre de la programacin estructurada, muchos otros investigado
cin y puesta a punto junto con el mantenimiento continuo constituyen uno res han trabajado en su desarrollo y de elIos podemos citar a Hoare, Wirth,
de los problemas ms graves con que se enfrenta el programador, la comunica Knuth, Dahl, Bohm, Jacopini, Warnier, etc.
cin. Es difcil dar una definicin de programacin estructurada por no existir
Tras finalizar un programa se ha de proceder a comprobar su buen funciona generalmente una definicin que sea aceptada a todos los niveles. Podramos
miento. Normalmente se prueban con un conjunto de datos de ensayo y se por ello enunciar la programacin estructurada (PE) como una tcnica de cons
analizan los resultados. En funcin de la bondad y exactitud de estos ltimos truccin de programas que utilizan al mximo los recursos del lenguaje, limita
el programa se da por bueno o se concluye con la evidencia de la existencia de el conjunto de estructuras aplicables a leer y presenta una serie de reglas que
errores. No obstante los datos de ensayo no' demuestran la ausencia de errores. coordinan adecuadamente el desarrollo de las diferentes fases de la programa
La validez real de un programa slo se podra dar haciendo una prueba cin.
exhaustiva con todo el rango posible de valores de entrada, cosa realmente Aunque como decamos antes la definicin anterior es una de las que ms
imposible en la mayora de los casos. Por otra parte, como ya se coment hemos visto escritas, son diferentes las definiciones que se podran hacer, sin
anteriormente la comunicacin usuario/mquina no slo se manifiesta en la embargo con lo que s hay un acuerdo casi total es que la programacin estructu
fase de depuracin del programa sino tambin en la fase de mantenimiento. Un rada utiliza en su diseo los siguientes conceptos o principios fundamentales
programa normalmente debe ser modificado cada cierto tiempo y en muchas recogidos esencialmente en la definicin anterior:
ocasiones las modificaciones han de ser realizadas por terceras personas que no - Estructuras bsicas.
intervinieron en su diseo. - Recursos abstractos.
Un mal desarrollo de un programa lleva a la falta de fiabilidad y prdida de - Diseo descendente "arriba-abajo" (top-down).
eficiencia considerables as como a una disminucin de la flexibilidad y por
cons~uiente la documentacin de los programas. ,/
Para aumentar la eficiencia de la programacin y el mantenimiento se necesi 7.4.2. Estructuras bsicas de control
ta dotar a los programas de una estructura. Las razones para ello no slo es el
aumento de fiabilidad y eficiencia sino tambin asegurar que los programas sean Como ya se coment en el Captulo 4 el Teorema de la estructura (o antiguo
adapables, manejables, fcilmente comprensibles y transportables. A estas con teorema de Bohm y Jacopini, 1966) demostr que cualquier programa cofr un
diciones se les suele aadir la claridad y simplicidad. solo punto de entrada y un solo punto de salida puede resolverse con tres nicos
tipos de estructuras de control:
A medida que la tecnologa electrnica ha ido avanzando las mquinas se
han ido haciendo ms rpidas, y el postulado que perviva en la dcada de los - Secuencial
aos 60 e inclusive de los 70 en el que el programador deba araar tiempo - Alternativa
de ejecucin recurriendo a trucos de programacin, ha ido dejando de tener - Repetitiva
peso y hoy da se buscan programas claros en su estructura, ,adaptables, trans
De aqu parte la clebre frase de Dijkstra: la estructura GOTO es perjudicial
portables -posibilidad de pasarlos de una mquina a otra- y simples. La para la programacin.
hora de programador se ha elevado en coste considerablemente y si a eso se
Aunque en el Captulo 4 ya se estudiaron las estructuras de control, volvere
le une que las posibles modificaciones en un programa pueden producir la
mos de nuevo a enunciarlas, sobre todo pensando que este libro si bien ha sido
prdida de claridad del mismo, es preciso realizar el programa con tcnicas de
concebido como un curso de introduccin a la programacin, algn lector o
programacin estructurada que permitan aumentar la eficiencia de la progra
profesor preferir utilizarlo como consulta o apoyo a sus clases sin ceirse a
macin y su mantenimiento. seguir el orden lgico de su contenido.

7.4.2. 1. Estructura secuencial


7.4.1. Conceptos bsicos
Una estructura secuencial es aquella que ejecuta las acciones sucesivamente
Los primitivos propsitos de la programacin estructurada dirigan sus es unas a continuacin de otras sin posibilidad de omitir ninguna y naturalmente,
fuerzos a buscar modos de minimizar la probabilidad de error en el proceso de sin bifurcaciones. Todas estas estructuras tendrn una entrada y una salida.
~ ..~-... - lb'. 1i'~:' ,
212 METODOLOGIA DE LA PROGRAMACION PROGRAMACION ESTRUCTURADA 213

Si las acciones son al' a2, an , la representacin secuencial sera: 7.4.2.2. Estructura alternativa
Ordinograma Algoritmo (espaol) Ingls Es aquella estructura en la que nicamente se realiza una alternativa -una
determinada secuencia de instrucciones- dependiendo del valor de una deter
Inicio Begin minada condicin o predicado.
Accin al Las estructuras alternativas tambin llamadas condicionales pueden ser de
Accin al
tres tipos:
Accin a2 Accin a2
Accin al - Simple

- Doble

- Mltiple

Accin a2

Accin an Accin an Estructura alternativa simple


Fin End Son aquellas en que la existencia o cumplimiento de la condicin implica
la ruptura de la secuencia y la ejecucin de una determinada accin.

I Accin an I Ordinograma Algoritmo (espaol)

Si j condicin 1
Inicio
Un ejemplo de un programa que slo contiene estructura secuencial es el Entonces 1accin 1
siguiente: Clculo de la suma de dos nmeros cualesquiera. Fin_si
Ordinograma Algoritmo Algoritmo (in~ls)
No
Inicio Inicio If 1condicin 1

Leer nmeros A, B Then 1accin 1

Sumar S = A + B S End-if

Escribir S
Accin A
Fin
S=A+B

Estructura alternativa doble

Es aquella que permite la eleccin entre dos acciones o tratamientos en


funcin de que se cumpla o no determinada condicin.
,,,,'.tL:\je.:.;i~~~a.i.,~Js_=__~,,-.
214 METODOLOGIA DE LA PROGRAMACION
PROGRAMACION ESTRUCTURADA 215

Ordinograma Algoritmo (espaol)


Esta estructura puede seleccionar n acciones segn sea el valor que toma la
Si 1condicin 1 variable de control.
Entonces 1accin .A ,1 Otras representaciones algortmicas utilizadas pueden ser:
Si-no 1accin A 2 1
Fin_si Segn-sea 1variable I Caso_de 1variable 1

Algoritmo (ingls)
If !cond(;in I
Accin Al Accin A 2
Then 1accin A{1
Else laccin A 2 l Opcin variable I de
End_if

Otros

fin_opcin
Estructura alternativa mltiple
Las estructuras alternativas mltiples se adoptan cuando la condicin puede
tomar n valores enteros distintos: 1, 2, 3, ... n.
Segn se elija uno de estos valores en la condicin se realizar una de las n 7.4.2.3. Estructuras repetitivas
acciones (cada vez slo se ejecuta una accin). Esta estructura propuesta por Las estructuras repetitivas o iterativas son aquellas en las que las acciones
HOARE, es la case del lenguaje Pascal o CASE de los BASIC estructurados. En se ejecutan un nmero determinado de veces y dependen de un valor predefinido
lectura algortmica en castellano se suele utilizar Segn, Segn sea, Caso de, o el cumplimiento de una determinada condicin.
Opcin. Nosotros adoptaremos el convenio Segn. Las estructuras repetitivas permiten representar aquellas acciones que pue
Ordinograma Algoritmo (espaol) den descomponerse en otras subacciones primitivas.
Una iteracin es el hecho de repetir la ejecucin de una secuencia de acciones
Segn 1variable 1 o de una accin. Un bucle o lazo es"el conjunto de acciones iterativas. Para
1condicin- 11 :
1accin A, describir una iteracin, si se conoce el nmero n de repeticiones, se puede es~ribir
1condicin- 21 :
1accin A 2 simplemente n veces la accin o secuencia de acciones a repetir. Sin embargo
1condicin-3j : 1accin A 3 si n es grande las operaciones anteriores pueden resultar tediosas y la secuencia
algortmica difcil de leer. Con frecuencia es difcil determinar el nmero de
repeticiones. En consecuencia es preciso disponer de estructuras algortmicas
que permitan describir una iteracin de forma cmoda. Las tres estructuras ms
!condicin-nI: accin Anl usuales dependiendo de que la condicin se encuentre al principio o al final de
Otros : 1acclon Sx I la iteracin son:
Fin_segn
- Estructura Mientras

Algoritmo (ingls) - Estructura Repetir-hasta

Inl (xl Case - Estructura Para (Desde-hasta)

Estructura Mientras
El bucle Mientras determina la repeticin de un grupo de instrucciones
end_case mientras la condicin se cumpl~ inicialmente.
_.:.. ;/:f[ff';"&l '&W'-":";'~......
216 METODOLOGIA DE LA PROGRAMACION PROGRAMACION ESTRUCTURADA 217

Ordinograma Algoritmo Estructura Para


La estructura Para es aquella que se repite un nmero fijo de veces, n:
Mientras I Condicin 1 Hacer
Algoritmo
Fin-mientras
Para variable 1de valor i a valor f incremento inc

No I hacer acciones 1

'1
Evaluar
Fin_para

sr condicin falso El incremento puede ser positivo como el caso anterior o negativo.

Para variable 1de valor i a valor f incremento dec

Accin 1 cierla
hacer acciones 1

Fin-para

ejecutar accin En ambos casos,


variable = variable de control
valor i = valor inicial de la variable
valor f = valor final de la variable
inc = valor positivo del incremento (expresin)
dec = valor negativo del decremento (expresin)
Esta estructura se conoce normalmente como DOWHILE.
Existe otra estructura en la que el nmero de iteraciones o repeticiones del Nota: La representacin de la estructura para suele tambin ser la siguiente:
grupo de instrucciones se ejecuta hasta que la condicin deje de cumplirse. Esta
condicin se cumple al final. Desde variable 1= valor i Hasta valor f incremento inc
11

1 Repetir
accionesl 7.4.3. Recursos abstractos
./

La estructuracin debe cumplir el uso de recursos abstractos. El proceso de


Acciones
Hasta que condicin 1 realizacin de diferentes pasos hasta encontrar la solucin de un problema es
un proceso abstracto.
Disear o concebir un problema en trminos abstractos consiste en no tener


ejecutar acciones 1
en cuenta la mquina que lo va a resolver as como el lenguaje de programacin
que se va a utilizar. Esto lleva consigo la obtencin de un conjunto de acciones

~
que se han de realizar para obtener una solucin.
Al considerar un algoritmo y los clculos que incluyen, se hace abstraccin
evaluar condicin 1 de los valores especficos. Igualmente el concepto de variable implica una abs

No
S
cierto 1 falso
traccin cuando se da un nombre a una operacin determinada, y se utiliza
considerando lo que hace pero sin preocuparnos de cmo lo hace.
Tras encontrar la solucin adecuada mediante el ordinograma o el algorit
mo, se analiza esta solucin con la computadora y el lenguaje de programacin
Esta estructura se conoce tambin como DOUNTIL. que se van a utilizar, a fin de comprobar si las diferentes acciones son suscepti
218 METODOLOGIA DE LA PROGRAMACION PROGRAMACION ESTRUCTURADA 219

bIes de ser ejecutadas por la mquina tal y como han sido concebidas; si eso La marcha analtica de un proceso descendente estara basada en dos caracte
no fuera posible, ser preciso descomponer las acciones en otras subacciones rsticas esenciales: representacin en forma de rbol y descomposicin funcional.
ms elementales, continundose el proceso hasta que cada subaccin pueda El diseo se basa en la realizacin de diferentes niveles. El primer nivel resuelve
ser codificada en el lenguaje elegido y por consiguiente ejecutado en la compu totalmente el problema y el segundo y sucesivos niveles son r('finamientos sucesi
tadora del usuario. vos del primero (stepwise) y se sigue siempre la metodologa de recursos abstrac
tos. Si el diseo y planteamiento es correcto nunca ser preciso volver atrs ya
que los niveles anteriores al que se est situado en un momento dado ya habrn
7.4.4. Metodologa descendente "arriba-abajo" resuelto el problema en su totalidad.

La metodologa o diseo descendente (top-down), tambin conocida como


arriba-abajo consiste en establecer una serie de niveles de menor o mayor com
plejidad (arriba-abajo) que den solucin al problema. En esencia consiste en 7.5. DISEO DE PROGRAMAS ESTRUCTURADOS
efectuar una relacin entre las etapas de la estructuracin de forma que una
etapa jerrquica y su inmediatamente inferior se relacionen mediante entradas La realizacin del diseo estructurado de un programa se basa en la aplica
y salidas de informacin. cin de los siguientes conceptos:
U n programa estructurado tiene una representacin en forma de rbol.
- Ir de lo general a lo particular, descendiendo en la estructura del programa
y en su nivel de detalle.
,
- De la definicin inicial del problema se pasa a un esquema de algoritmo
descrito en pseudocdigo.
- Independencia inicial del lenguaje.
- Diseo por niveles, dejando los detalles para niveles posteriores. Verificar
en cada nivel el esquema correcto.
- Finalizar con un trabajo de recomposicin del algoritmo completo.
Es conveniente -no imprescindible- que el lenguaje de programacin
empleado soporte las estructuras bsicas mencionadas; este es el caso de Pascal,
FORTRAN 77, True BASIC, ANSI BASIC, etc. Si el lenguaje no soporta las
estructuras tpicas -no es estructurado- se debe codificar pr traduccin ade
cuada, es decir, simular las estructuras que no posea.

Ejemplo
Si en BASIC no se posee la estructura WHILE (Mientras-hacer) una codifica
cin simulada sera:
a) Caso de que la condicin sea verdadera.

100 REM ** estructura Mientras **


110 IF condicin THEN:-J30
120 GOTO 210
130 REM ** Hacer **

1
200 GOTO 100

210 REM ** Fin de Mientras **

" -~"",.,,:.b-. " 'f;zt~.",_,., l' 's.'k- #"..$<


220 METODOLOGIA DE LA PROGRAMACION PROGRAMACION ESTRUCTURADA 221

b) Caso de que la condicin sea falsa.


M M
100 REM ** estructura Mientras **
110 IF condicin THEN 120
120 GOTO 210
130 REM ** Hacer **

200 GOTO 100


210 REM ** Fin de Mientras ** " I .
N p N

7.6. METODOS DE PROGRAMACION ESTRUCTURADA Secuencial Repetitiva

Existen diferentes mtodos de programacin estructurada. Entre los ms


conocidos se encuentran: Jackson, Bertini y Warnier.

M
7.6.1. Mtodo Jackson

Esta metodologa creada por el ingls Michael Jackson se basa en que la


estructura de un programa est en funcin de la estructura de los datos que
manipula. Jackson emplea mdulos segn un orden jerrquico dentro de los
diferentes niveles donde se encuentra. Cada mdulo es un dato o conjunto de
datos. o o o o
Las estructuras bsicas en este mtodo vienen representadas en la Figura 7.1 N p Q R
Yson las siguientes: I
- SecuenL:{al: Un nmero determinado de mdulos se ejecutan una sola
Alternativa
vez en el orden jerrquico preestablecido.
- Repetitiva: Un mdulo se ejecuta desde cero hasta n veces. El proceso Figura 7.1. Estructuras bsicas del mtodo de Jackson.

repetitivo se indica con un asterisco (*).


- Alternativa: Se selecciona para la ejecucin un mdulo entre varios posi
bles. El proceso se indica por medio de una letra O. 3. Utilizar los recursos que posee el mtodo para conseguir los resultados.
4. Escribir el pseudocdigo y codificar.
Con estas estructuras bsicas se puede obtener cualquier otra que intervenga
en el diseo del programa.
Ejemplo: Realizar por el mtodo de Jackson el diagrama de flujo que impri
El uso del mtodo de Jackson supone lectura arriba-abajo y de izquierda a de
recha. me los nmeros mximo y mnimo de una serie de nmeros introducidos por
teclado hasta encontrar el nmero 99, debindose imprimir un mensaje si el
Los pasos a seguir para resolver un determinado problema siguiendo esta
metodologa son: nmero introducido no cumple la condicin prevista'. El organigrama conven
cional es el de la Figura 7.2.
l. Establecer o definir los datos de entrada y salida (resultados).
2. Creacin de la estructura del programa a partir de las diferentes estructu
ras de los datos.
'-'.'r-~"

PROGRAMACION ESTRUCTURADA 223


222 METODOLOGIA DE LA PROGRAMACION

Por consiguiente el organigrama aplicando el mtodo Jackson podra ser:

Introducir
nmero

o
Nmero = 99
CFin )

Imprimir
o
Mayor =
mayor Nmero> Mayor
nmero
menor

o
Mayor = Nmero Nmero < Menor

Menor =
nmero

Menor = Nmero Imprimir


error

Figura 7.2.

Los resultados o datos de salida que se buscan son: 7.6.2. Mtodo Bertini
- Imprimir nmero mayor y nmero menor.
- Imprimir error. La metodologa Bertini consiste en la descomposicin de un problema en
niveles, teniendo cada uno de ellos un inicio, un conjunto de procesos y un fin.
Los mdulos podran ser: Esta metodologa representa la estructura de los programas y no las operacio
nes del tratamiento. Las diferentes estructuras se representan en la Figura 7.3.
MAYOR = valor
MENOR = valor Segn Bertini las instrucciones se ejecutan de derecha a izquierda pero el
programador puede leerlo al revs si le resulta ms cmodo.
ERROR
-\1..; , "c
._.~,._,~
224 METODOLOGIA DE LA PROGRAMACION PROGRAMACION ESTRUCTURADA 226

El diagrama de flujo del problema anterior de obtencin del mximo y


mnimo de una serie de nmeros, aplicando este mtodo sera el siguiente:

Fin Inicio

programa
programa

Secuencial

Fin Secuencia Inicio


programa intermedia programa

Fin Inicio

Repetitiva Alternativa

Fin

7.6.3. Mtodo Warnier

Se basa en una metodologa matemtica que establece un nico lenguaje de


Fin Inicio I I Fin comunicacin entre usuarios, analistas y programadores, lo que permite la com
prensin de forma sencilla por cualquier programador. La representacin de
cualquier proceso se puede hacer mediante llaves. ,
El mtodo se basa en la descomposicin por niveles del problema. En cada
Repetitiva
Alternativa nivel se detallan los tratamientos que permiten la resolucin del problema plan
teado.
Las estructuras utilizadas son conceptualmente idnticas a las de Jackson si
Figura 7.3. Estructuras bsicas. bien su representacin vara.
PROGRAMACION ESTRUCTURADA 227
226 METODOLOGIA DE LA PROGRAMACION

Los pasos a seguir en esta metodologa son:


Secuencial
l. Estudio de los datos de salida.
Repeticin 2. Estudio de los datos de entrada teniendo en cuenta la organizacin de los

Inicio
(ejecucin 1 vez)
:-J I datos en el fichero lgico de salida y analizando las posibles fases de trata
miento.
3. Cuadro sinptico o de descomposicin formado a partir de la estructura
de los datos de entrada, salida y del tratamiento.


Proceso 4. Diagrama de flujo y lista de instrucciones. El diagrama se obtiene de
Programa
(n veces) forma automtica del cuadro sinptico y su uso puede no ser imprescindi

Inicio
I ble. La lista de instrucciones, su orden de ejecucin, produce en casi su
Fin totalidad la escritura del programa con independencia del lenguaje.
(1 vez)

Alternativa

Inicio
(1 vez)
Proceso A
(0-1 vez)
Proceso B
(0-1 vez) {
Final Proceso A
Proceso B

I Final I
APENDICE

CODIFICACION

DE LAS ESTRUCTURAS

BASICAS

ADA COBOL
ALGOL FORTRAN
BASIC PASCAL
C PL/I

i J1~'T"_
APENDICE. CODIFICACION DE LAS ESTRUCTURAS BASICAS 231

Ejemplo: EVALUATE L1BRERIA,CLlENTE,TITULO


WHEN 1 THRU 5,1 THRU 20,ANY PERFORM GIRO 1
WHEN 6 THRU 7,1 THRU 20,NOT AS PERFORM GIR02
WHEN 8 THRU 10 ANY,ANY PERFORM GIR03
WHEN OTHER PERFORM GIR04

END-EVALUATE

ESTRUcrURAIF
PASCAL, PLjI Y ALGOL
COBOL
Formato: IF expr. lgica THEN sentencia [ELSE sentencia]
Formato: IF exp. lgica [THEN] {Sentencia
NEXT SENTENCE
l BEGIN
IFA = O THEN
IF B = O THEN WRITELN ('SOLUCION INDETERMINADA')
[{ ELSE
OTHERWISE
l {Sentencia
NEXT SENTENCE
l] [.]
ELSE
ELSE...
WRITELN ('SOLUCION IMPOSIBLE')

Ejemplo: IF DELTA < O

DISPLAY "SOLUCION IMAGINARIA"

ELSE IF DELTA = O
ADA
DISPLAY "SOLUCIONES IGUALES"

ELSE COMPUTE RAIZ = .


Formato: if expresin lgica then sentencia;
[elsif expresin lgica then sentencia;]
o tambin
[else sentencia;]
end if;

IF K < A ANO (C > J)

PERFORM RUTINA-1 Ejemplo: IF CIUDAD = MADRID THEN

ELSE IF (K = A) OR (C = J) DISTANClA: = DISTANCIA+200;

PERFORM ... ELSIF CIUDAD = ZARAGOZA THEN

ELSE ... DISTANCIA: = DISTANCIA+300;

ELSE DISTANCIA: = O
END IF;

COBOL estructurado

identificador
"C"
Formato: if (expresin lgica) sentencia;

Formato: EVALUATE
j
expresin
TRUE
FALSE J
[.......... ]

[elsif (expresin lgica) sentencia;]


[else sentencia;]

WHEN objeto-seleccin sentencia Ejemplo: if (R = 40)


[WHEN OTHER sentencia] if (DELTA = O)
[END-EVALUATE] K = O;
else
230 K = DELTA;
~:,L
APENDICE. CODIFICACIQN DE LAS ESTRUCTURAS BASICAS 233
232 METODOLOGIA DE LA PROGRAMACION

Ejemplo: IF A > B THEN 400


ALGOL 68 IF A > B GOTa 400
Formato: if condicin
then sentencia
elSe if condici~J
Formato:

IF expresin lgica THEN


sentencia-etiqueta 1
sentencIa \ sentencia [: sentencia...]
[ fi
fi
sentencia-etiqueta IJ
Ejemplo: if ROMBO < O [ ELSE \ sentencia [: sentencia ...]
then PRINT (("SOLUCION NEGATIVA "))
else Ejemplo: IF M < O THEN N=5 : M=7 : N= 15
if ROMBO = O ELSE N = 5 : M=14 : N=4
then PRINT (("SOLUCIONES IGUALES"))

else

if ...

fi

fi

fi
ESTRUcrURA CASE

FORTRAN
PASCAL
Formato: IF (expresin aritmtica) etiqueta 1, etiqueta2, etiqueta3

IF (expresin lgica) sentencia Formato: case expresin OF

C1: sentencia 1;

Ejemplo:IF (pESO.Ea.1.AND.STAIV.GT.1)M = k * 8 C2: sentencia2;

IF(K.GT.500)GOTO 500

Formato: IF (expresin lgica) THEN sentencia

[ELSE IF (expresin lgica) THEN sentencia] Cn: sentencian;

[ELSE sentencia] end

ENDIF

Ejemplo: case Notas of

Ejemplo: IF (A.GT.O) THEN 1,2,3 :N:=N+3

PAUSE 999 4 :N:=(N-2)*Q;

ELSE 5,9 :N:=N+Q;

N = N * 30 10,14 :N:=N*Q;

ENDIF end

case MARCA of

'SANYO' : DESCUENTO:=0.10;

BASIC 'SONY' : DESCUENTO:=0.20;

'PIONNER' : DESCUENTO:=0.05;

Formato: {THEN } 'MARCONI': DESCUENTO:=0.15;

IF (expresin lgica) GOTa sentencias (nmeros o etiquetas) end


GOSUB
234 METODOLOGIA DE LA PROGRAMACION APENDICE. CODIFICACION DE LAS ESTRUCTURAS BASICAS 235

"C" Ejemplo: SHECT (MARCA);


WHEN (MARCA='SEAT') DESCUENTO=0.12;
Formato: switch (expresin entera) I
WHEN (MARCA='OPEL') DESCUENTO=0.10;
case constante: sentencia;]

~ OTHERWISE CALL SALIDA;


[default:sentencia]
END;
1

Ejemplo: switch (var) I

case '1':

case '2':
ESTRUcrURA DOWHILE
case '3':

n=(K+5);
case' 4' :n=(K-4)-j; PASCAL
case '5':
case '7' :n=j+k; Formato: WHILE condicin DO sentencia
case '10' :n=j-k;
default:break; Ejemplo: WHILE BRAVO> O DO

BEGIN

1 \R1 :=(-B+M)j(2-N);

ADA R2:=(-B-M)j(2-N);

END;

Formato: case expresin is

when valor [1 valor ...] => sentencia;

ALGOL 68
when others = > sentencia;
end case; Formato: while condicin

do

Ejemplo: case MARCA is sentencia


when SEAT => od
DESCUENTO:=0.12;
when OPEL=>
DESCUENTO:=0.15; "C"
when FORD =>
DESCUENTO:=0.08; Formato: while (expresin)

when RENAULT = > sentencia

DESCUENTO:=0.10;
when others = >
PRINT MENSAJE("NO SE VENDE ESA MARCA"); ADA
end case;
Formato: while (condicin) loop

PLjI sentencias;

end loop;
Formato: SELECT (expresin);

WHEN (expresin) sentencia; [WHEN...]


Ejemplo: while parcial/=demo parcial loop

OTHERWISE sentencia;
total:=total+campo;

END;
end loop;
236 METODOLOGIA DE LA PROGRAMACION APENDICE. CODIFICACION DE LAS ESTRUCTURAS BASICAS 237

PLjl Ejemplo: DOWHILE (N.GT.M)

DISCRIMINANTE=B**2-4*A*C

Formato: DO WHILE (condicin)


IF (DISCRIMINANTE.GT.O)

sentencia
THEN
END; R1=(-B+SORT(DISCRIMINANTE))/(2*Al
R2=(-B-SORT(DISCRIMINANTE))/(2*Al
ENDIF

COBOL
ENDDO

Formato: PERFORM nombre procedimiento [THRU nombre procedimiento]


UNTIL (NOT condicin)

PERFORM WITH TEST

UNTIL [NOT] condicin

AFTER
BEFORE

1
ESTRUcrURA DOUNTIL
sentencia

END-PERFORM
PASCAL
Ejemplo: PERFORM WITH TEST BEFORE
Formato: REPEAT sentencia: [sentencia:.. .]

UNTIL (DISCRIMINANTE < O)


UNTIL expresin lgica

R1=(-B+DISCRIMINANTE**0.5)/(2*Al
R2=(-B-DISCRIMINANTE**0. 5)/(2* A)
Ejemplo: NUMFIN: =0;

END-PERFORM
TOTAL: =0;

REPEAT

BASIC BEGIN READLN (NUMERO);


TOTAL:=TOTAL+NUMERO
Formato: WHILE condicin
, NUMFIN:=NUMFIN+ 1
sentencia
END;
WEND UNTIL EOF;
MEDIA: =TOTAL/NUMFIN;

FORTRAN

Formato: En las versiones antiguas de FORTRAN no existe la estructura "C"


DOWHILE y se debe simular.
1 IF (.NOT.(EXPERL)) GOTO 2 Formato: do

sentencias

sentencias while (expresin);

GOTO 1

2 CONTINUE
PLjI
En las versiones ms recientes

DOWHILE (expresin lgica)


Formato: DO WHILE (condicin)

sentencia sentencia

ENDDO END;
'rfi7
APENDICE. CODIFICACION DE LAS ESTRUCTURAS BASICAS 239
238 METODOLOGIA DE LA PROGRAMACION

COBOL "C"

Formato: a: PERFORM nombre procedimiento [THRU nombre procedimiento] Formato: goto etiqueta
WITH TEST AFTER
\
UNTIL condicin
FORTRAN
b: PERFORM WITH TEST AFTER
UNTI L condicin

Formato: GOTO {ent~ro }


sentencia
varJable
END PERFORM
,
COBOL
FORTRAN
Formato: GO TO nombre procedimiento
Formato: 1 CONTINUE

..... sentencias

PL/l
IF (.NOT.(EXPRL)) GOTO 1

Formato: GOTO {eti~ueta}


varJable
ADA

Formato: exit [nombre bucle] [when condicin] PASCAL

Formato: goto etiqueta


FORTH

Formato: BEGIN sentencia condicin UNTIL

SALTOS CONDICIONALES
SALTOS INCONDICIONALES
FORTRAN
BASIC
Formato:
Formato: GOTO nmero de lnea
a) GOTO (etiqueta 1, etiqueta2, .,. etiquetan) ,N

N=J-L

ALGOL 68 ~
GOTO(10,20,30,60),N

Formato: Goto etiqueta 10 I=I*N

GOTO 100

ADA 20 1={I*N)-5

GOTO 100

Formato: goto etiqueta


30 .....

240 METODOLOGIA DE LA PROGRAMACION APENDICE. CODIFICACION DE LAS ESTRUCTURAS BASICAS 241

b) GOTO N.(etiqueta t etiqueta2, ... etiquetan) PL/l


ASSIGN 2 TO N Formato: DO variable control= valor inicial [,valor inicial... ]

[BY incremento](TO valor fina~

[WH ILE ( expresin lgica)]

GOTa N,(l ,2,3,4) sentencias


1 I=I*N
ENO;
GOTa 100

2 1=(I*N)-5

ALGOL
GOTa 100

3 . Formato: for variable contro/:= valor inicial step paso

4 .. until valor final

100 PRINT 45,N do sentencia;

Ejemplo: for N:=l step 1 until 20 do

BASIC if A I O then 1:=1+ 1;

Formato:
PASCAL
THEN
ON expresin GOTO nl'n 2 ,n3 , ...
Formato: for variable control:=valor inicial

GOSUB to

valor final
Ejemplo: ON N GOTO 100,200,300,40 downto

do sentencia

COBOL
ADA
Formato: GO TO etiqueta 1[,]etiqueta2[,] ... etiquetan

OEPENOING ON. identificador


Formato: for variable control in [reverse] ..intervalo discreto

sentencias

while condicin

INTERACCION GENERAL/BUCLES REPETITIVOS Ejemplo: for M in 1... 15 loop

if A(I) > Othen 1:=1+ 1;

endif

BASIC end loop;

Formato: FOR variable control=valor inicialTO valor final

[STEP incremento]
ALGOL 68
..... sentencias

Formato: for variable control [from valor inicia~[by paso]

NEXT variable de control [to valor fina~

[while condicin]

Ejemplo: FOR 1= 1 TO 100 STEP 4


do

PRINT 1*4
sentencias
NEXTI
od
;~:f!

! "
~ ,~
f' "
'1"
" ..... '
242 METODOLOGIA DE LA PROGRAMACION ~, 7t

\
, 1

"c" ,1"

Formato: for ([valor variable]:[condicin]:[paso]) sentencias;

FORTRAN

Formato: DO etiqueta variable control= valor inicial


valor final, [incremento]

Ejemplo: DO 10 N= 1,8
10 TOTAL=TOTAL+IMPORTE(K)

"~;

'11'"
It;,
REFERENCIAS

BIBLIOGRAFICAS

Idioma castellano

BIONDI y CLAVEL: Introduccin a la programacin. tomos 1 y 2, Masson, 1985.


CEDED: Estructura de la Injimnacin, 1985.
CEDED: MelOdologla de la programacin, 1985.
ECe: Anlisis irrormtico, tomos 1, 2, 4, 6, Barcelona, 1985,
ECe: Programacin de Ordenadores, tomos 1 a 5, Barcelona, 1985.
GALN PASCUAL: Programacin con el lenguaje COBOL, 3." edicin. Paraninfo, 1985.
GALN PASCUAL: Programacin y prctica con el Sinclair QL, Paraninfo, 1985.
HURTADO MELERO: Informtica I (Tomos, I y 2), Escuela Universitaria de Informtica,
Universidad Politcnica de Madrid.
JaYANES AGUILAR: Programacin BASIC para microcomputadoras, 2. a edicin, McGraw
Hill, 1986.
LEVIS-SMITH: Estructura de daws, Paraninfo, 1985.
LUCAS, M., PEYRIN. J. P.. YSCHOLL, P. c.: Algortmica y representacin de datos, Masson.
1985.
MARTNEZ/AMELLER: Metodologia de la programacin, Ed. Ferre Moret, 1985.
NCR: Programacin estructurada.
SANCHIS y GALN: Compiladores. Teona y Construccin, Paraninfo, 1986.
VAQUERO Y JaYANES: Informtica. Glosario de trminos, McGraw-Hill, 1985.
VERZELLO, RWTER III: Procesamiento de datos, McGraw-Hill, 1983.
VIRGOS: Tcnicas y elementos de programacin, Gustavo Gili, 1985.
WIRTH: Algoritmos + Estructuras de datos = Programas. 6. a reimpresin, Ediciones del
Castillo, 1986.
WIRTH: Introduccin a la programacin sistemtica, El Ateneo, Buenos Aires, 1984.
WIRTH: PASCAL. Manllal delllsllario e informe, El Ateneo, Buenos Aires, 1985.

Otros idiomas

BOUSSARD, J. c., y MAHL. R.: Programmation avance: algorithmique et struceures de


donnes, Eyrolles, 1983.
CORALLO, M., y PROSCIUTTI, A: Principi di programmazione, BufTeti Editare, 1985.
COULOMBE y YOUNG: La programmation structure en BASIC, Turgen. 1986.
GOLOSTEIN: Computers and their applications, Prentice Hall. 1986.
LINZ, PETER: Programming Concepts and Problem Solving, Benjamn Cumming, 1983.
WIRTH: Algorithms and Data Structures, Prentice Hall, 1986.
WOODHOUSE, JOHNSTONE. DOUGLAS: Computer Science, Wiley Sons, 1982.
243
~I'

INDICE

A Bucle, 78, 92-100

infinito, 92

Accin, 1-2

sin fin, 92

Acumulador, 100

t Algoritmos, 1-3,45

C
caractesticas, 3
,J
definicin, 2
Campos, 151

resolucin/codificacin, 68
Campos de memoria, 91

Anlisis, 11,45
Case, 126-127,212-213,233-235

Analista, II
Ciclo, 78

ANSI, 15
Codificacin, 12,45

Arboles, 163-167
estructuras bsicas, 229

" binarios, 164-165

definicin, 163

Colas, 153

Compilacin, 60-62

recorrido, 166
Compiladores, 59-62

Arrays, 146
Conmutadores, 108-109

Atomo,151
Constantes, 6, 84-85

Asignacin, I
boolean, 6, 84

sentencias, 89
carcter, 6, 84-85

entera, 6, 84

B real, 6, 84-85

Contadores, 96-100

Begin, 212

cos, 118

Bifurcaciones, 103-108

anidadas, 107

D
condicionales, 104

incondicionales, 105-106
Datos, 3,4, 138,143

BNF,49-50
clasificacin, 144

Boolean, 7, 8
estructura, 143,144

Bubblesort, 110
manipulacin, 139-142

245

.
.
'.'-~ --~--~

246 INDICE
INOICE 247

no numricos, 4
fin_segn, 127
ensamblador, 56
p
alfanumricos, 5
fin_si, 213
mquina, 56

entrada, 67
FOR-TO, 240-242
concepto, 48
Palabras clave (reservadas), 84

lgicos, 5
Funciones, 118-119
intrpretes/compiladores, 59-66
Pilas, 154

DEF FN, 118


function, 118
Lectura de datos, 69
Plantillas de codificacin, 29

desde-hasta, 131
Linker, 62
Principios de la decisin, 138

' Diagramas de flujo, 11-12, 14-28


G listas, 150-161
Prioridad, 89

comprobacin, 37
circulares, 161
Procedimientos, 113-114, 116-117

GOTO, 131, 238-239


Procesador, 1, 3

estructurados, 31-35
colas, 153-154

Grafos sintcticos, 50-54


Proceso, 1

inconvenientes, 37
doblemente encadenadas, 161

reglas de construccin, 36
encadenadas, 159-161
paralelo, 1

H secuencial, 1-2

signos, 22
lineales, 151-152

smbolos, 15
Hojas de codificacin, 29
pilas, 154-156
Programa fuente, 59-63

sintcticos, 50-54
Programa objeto, 59-63

Diagramas N-S, 39-44


I
M Programacin, 9, 45

Documentacin, 13
convencional, 203-205

Identificador. 1, 6, 84
Matriz de acciones, 170
desarrollo, 46-47

DO-END, 120-121
IF, 132,230

DO SEQUENCE, 120-121
Matriz de condiciones, 170
estructurada, 209-211

IF-NOT, 133
Matrices, 146, 147
fases, 46

DO SEQUENTIALLY. 120-121
IF-THEN, 122-124
MBASIC, 66
modular, 205-206

OOUNTIL, 129-130, 216


IF-THEN-ELSE, 123-124
Metasmbolos, 49
tcnicas, 83

DOWHILE, 129-130, 132,216,235-237


IF-THEN-ENDIF, 122-124,213
Mtodo Bertini, 223-225
Programacin estructurada, 209-211

E Informacin, 1
Mtodo Jackson, 220-223
mtodos, 220

Inicio_Fin, 120-12 1, 212


Mtodo Warnier, 225-227
Programacin modular, 205-209

Editor de enlaces, 62
Inicio SEQUENCIA, 120-121
Metodologa "arriba-abajo", 218
requisitos, 208

Elemento de datos, 143


Instrucciones, 3, 68
Metodologa de la programacin, 12
Programa, 1-2, 9, 45, 76-83, 219

End,212
asignacin/movimiento, 70
mientras, 129,215-216
alternati vos, 81

End_case, 127
entrada/salida, 69-70
modularizacin, 12
cclicos, 78

ENDDO, 129
especiales, 74-76
criterios, 209
compilacin, 59-62

ENDFOR,130
lgicas, 72
mdulo, 207
depuracin, 9, 47

End_if, 123
matemticas, 71
caractersticas, 208

/ desarroIlo, 46

Enlazador (encadenador), 62
relacin, 72
clasificacin, 208-209
documentacin, 9, 13,47

Ensamblador, 56
tipos, 68-76
ejecucin, 60

Enteros, 4, 7
transferencias de control, 74
N
elementos bsicos, 83

Entrada de acciones, 170


Intrpretes, 63-66

Niklaus Wirth, 2
estructura, 45

Entrada de condiciones, 170


Interruptor, 108-109

Nodo, 163
estructurados, 209-211

Escritura de datos, 69
ir a, 131

Notacin BNF, 49-50


diseo, 219

. Estructuras de datos, 3, 137


Item de datos, 143

Nmeros enteros, 4
lineales, 76

clasificacin, 144
Iteracin, 93

rango, 4
mantenimiento, 9, 47

Estructuras lgicas, 32

Nmeros reales, 4
partes de un, 66-68

alternativas, 33, 121-128,213-215


J puesta a punto, 13

repetitivas, 34, 128-131, 215-217


tipos, 76

secuenciales, 33, \20-121, 211-212


Juego de instrucciones, 68
O
Pseudocdigo, 38-39

teorema de la estructura, 119-120


Opcin_de, 215

L Puesta a punto de programas, 13

Expresiones, 7
Operadores:

aritmticas, 7-8, 86-87


Lazo, 78, 92-100 (Vase tambin Bucle)
Q
aritmticos, 71, 86-87

booleanas, 7-8, 87-89


Lenguajes de programacin, 4, 48
de relacin, 72, 88
Qllicksorl. 110

F
caractersticas, 138
lgicos, 73-74, 88

clasificacin, 54
prioridad, 88-89
R
fin_desde, 13 1
alto nivel, 57-58
Ordinogramas,20
RAM, 63

fin-mientras, I29
bajo nivel, 56-57
Organigramas, 14
Reales, 4

248 IND/CE

Registro, 15 1
OTRAS OBRAS DE INTERES PUBLICADAS POR OSBORNE/McGRAW-HILL
de flujos, 192-199
Reglas de decisin, 17 I
BARAS: Symphony. Gula del usuario.
encadenamiento, 187-191 BARAS: Lotus 7-2-3. GullJ del usuario.
REPEAT-UNTIL, 128
entradas ampliadas, 178 BERMAN: Explorando el BASIC del Commodore 64.
REPEAT-WHILE, 128
mixtas, 179 CASTLEWIlZ: Introduccin al VisiCalc.
Repertorio de instrucciones, 68
CRAWFORO: El arte de diseo de iuegos con microcomputadoras.
simplificacin, 185-186 OITLEA: Gula de Software para microcomputadores.
repetir, 129-130
transformacin, 179 ERICKSON: Telecomunicaciones con el C-64.
Residente, 63
transformacin en diagramas de flujo, ERICKSON: Telecomunicaciones con el MACINTOSH.
Resultado, I
mLIN: Manual de MBASIC.
192
mLIN: Intioduccin al Wordstar.
ROM,63
tan, 118
mLIN: Mu/tipllJn a su alcance.
TO, 169
FIELO: Aplique elMacWrite y MacPaint.
S modos de presentacin, 17 J

FLAST: 7-2-3 RUN. 47 aplicaciones prcticas Lotus 7-2-3.


FLAST: 54 aplicaciones del VisiCalc.
Segn hacer, 127, 214
horizontal, 172
FOX: BASIC bsico. Gula para principmntes.
vertical, 172-176
GRAHAM: IBM/PC. GullJ del usuario.
Segn sea, 214-215
GRAHAM: IBM/PC. Gula deIIBM/PC (DOS 2-0) XT.
Semntica, 48
Teorema de la estructura, 211
HEILBORN: Commodore 64. Gula del usuario.
Sentencias, 69, 83
top-down, 36, 211, 218
HEILBORN: Programas para ciendas e ingeniarla. Edicin Apple 1/.
Totalizador, 100-103
HEILBORN: VIC 20. Gula del usuario.
de asignacin, 89-91
HOFFMAN: Sistema operativo MS-OOS. Gula del usuario.
si, 106
HOFFMAN: MSX. Gula del usuario.
si-entonces, 122-123 U HOGAN: Sistema operativo CP/M. Gula del usuario (2. ed.).
si-entonces-fin_si, 122-124, 213-214 JAMSA: Lenguaie e. BibliottICIJ de Funciones.
UNTIL, 238 JEFFRIES: Commodore 64. Pasatiempos y iuegos.
si-entonces-sino, 124 JOHNSON: CP/M Manual para progremadores.
sin, 118 JONES: Aplique el dBASE 11I.
Sintaxis, 83 V KRUGLINSKY: Sistema de administracin de bases de datos.
KRUGLINSKY: Gula a IIJs comunicaciones deIIBM/Pe.
sqr, 118 Variables, 4, 6, 85
MOnOLA: Programacin en IenguBie ensamblador para el Apple 11.
STEP, 130 mbito (scope), 115
NORLlNG: BASIC para Macintosh.
Subcampo, 151 OSBORNE: GullJ del comprador de sistemas de gestin.
caracteres, 6-7
OSBORNE: Gula del ordenador personal PET/CBM.
Subprogramas, 110-116, 118 enteras, 6-7
POOLE: Algunos programas de uso comn en BASIC.
anidados, 112-113 globales, 115, 209
POOLE: Algunos programlls de uso comn en BASIC. Edicin Apple ti.
POOLE: Algunos programas de uso comn en BASIC. Edicin Atari.
Subrutinas, 110-117, 157-158 locales, 115, 209
POOlE: Algunos programas de uso comn en BASIC. Edicin IBM.
Switch. 108-110 lgicas, 6-7
POOLE: Algunos programas de uso comn en BASIC. Edicin PET/CBM.
reales, 6-7
POOLE: Algunos programas de uso comn en BASIC. Edicin lRS-SO.
T POOLE: Algunos programas de uso comn en Pascal.
Vectores, 146, 147 POOLE: Apple /l. Gula del usuario.
Tablas, 147 Vocabulario, 48 POOLE: Apple /lc. Gula del usuario.
POOLE: Programas prcticos en BASIC.
Tablas de decisin, 12, 169 POOLE: Programas prcticos en BASIC. Edicin Apple 1/.
construccin, 182 W POOLE: Programas prcticos en BASIe. Edicin IBM.
conversin, 191 POOLE: Programas prcticos en BASIC. Edicin TRS-SO.
WHILE-WEND, 128 POOLE: ProgramBs prcticos en Pascal.
SANO: Pascal avanudo. Tcnicas de programacin.
SACHS: EIIBM/PC.
SCHILOT: ProgrlllTlacin en lenguaie C.
STEWART: Juegos y programas eduClltivos para C-64.
STEWART: Juegos y programas educativos para Apple.
THOMAS: SistemB operativo UNIX. Gula del usuario.
TOWNSEND: PFS Softwllre 11 su alcance.
TOWNSENO: Aplique el dBASE 11.
WAITE: Introduccin al procesamiento de pallJbras.
WOOO: Programa SUPERCAL a su alcBnce.

DISCOGUIAS PUBLICADOS POR OSBORNE/McGRAW-HILL


GIFFOO: DiscogullJ para Apple 1/.

INGRAHAM: Discogula PBrll CP/M.

JOYANES: DiscogullJ para ZX SPECTRUM (TS2068).

TAYlOR: Discogula para Atari 400/800.

WILSON: Oiscogula para IBM/PC.

WILSON: Discogula para VisiCalc.

')
Af,~~~ ,r
OTRAS OBRAS b~ INTERES ~B~AS POR,BYTE-~/McGRAW-HILL
ABELSON: LOGO pera App,1e 11.

ABELSON: Apple Logo. '

BOWLES: Introducci6n al UCSD PII8C8I.

CIARCIA: Construya una computadora b8slIda en el Z-BO (Gule de dilltlilo y funeionllmlflto).

CURTIS: WORDSTAR en eIIBM/Pe. .

CHARLTON: TravlI$uras con el2X-81

CHIU: Pa.tiempos con el2X-81.

DUFF: Introducci6n al MACINTOSH.

GABY: .Goauba. 100 subrutinll$ de uso cormJn pera,,' ZX-81 (TS 1(00).

GABY: Commodora 64. M6duloa PBrtI conatrucci6 de progrtlffllls.

HELMS: Manual de BASIC.

KAMINS: Ustad y le microcomputlldora. (Una introducci6n humIIniZ11d8 a le microinfomMtica).

KOLVE: Gula pera selecciOfNJr y adquirir su microcomputador.

LEWART: Programas de ciencill$ e ingenierla pera microcomputlldOrtlS Sineleir ZX-81 competibles

con el ZX Spsctrum.
MAININS: Sistema operativo PRO-DOS. Gula d61 usuario.
MORGAN: Introducci6n al microprocealldor 8086/8088 (16 bit).
MULLlSH; Sineleir ZX-81 (TS 1(00). Gule del usulHio.
MULLlSH: Appleaoft BASIC. Gule PBrtI principiantll$.
NEWROCK: Gula de compatibles deIIBM/Pe.
SEYBOLD: Plenille e/ectr6nica integracM PlHa Lotus 1-2-3. CONTEXT MBA y Symphony.
.. SEYBOLD: Proce6llmlflto de tIIxto. Softwllrtl pere el 18M/Pe.

SIKONOWIZ: Introducci6n aIIBMJPe.

SKIER: Programaci6n en lenguajefe_blador pe", VIC-20 y CornmodOfe 64.

WAITE: Introducci6n al proce6lldor de pelebrll$.

WATT: Aprendiendo con LOGO.

WATT: Aprendiendo con Commodora LOGO.

WATT: Aprendiendo con Apple LOGO.

\ WATT: Aprendiendo con IBM tOGO.

OTRAS OBRAS DE INTERES PUBUCADAS POR McGRAW-HILL


ADAMIS: Diccionario BASIC.
ADAMIS: Diccionario BASIC deIIBM/Pe.
ADAMIS: F6rmu1ea y progrllm/l$ usuales en BASIC.
ADAMIS: Inicleci6n al BASIC deIIBM/Pe.
ADAMIS: MACINTOSH. Aplicaciones de Mulriplan y MacPaint.
AGELOFF: Programaci6n BASIC aplicada.
BISHOP: ZX Spsctrum (TS 2(68). Teorla y proyectos d6 interfase.
B,UFFINGTON: Su prirnenl compUtlldora: c6mo comprarla y utilizarla.
GOSLlNG: Programeci6n estructurade.
HURLEY: Introducci6n e le programeci6n ZX-81 (TS 1(00).
HURLEY: ZX Spectrum (TS 2068). Introducci6n al proce6llmlflto de tIIxtos.
HURLEY: ZX Spsctrum (TS 2(68). Progrtlfflllci6n per. j6venll$ programadora.
JOYANES: IBM/Pe Menual d6 BASIC.
JOYANES: ZX Spsctrum (TS 2(68). Gule del usuerio.
LABENSKY: TlHjeta raferancia rtlpide Apple 11.
LABENSKY: Terjetll referencia rtlpida IBM/Pe.
NULLISH: Apple$Of BASIC. Gule PBrtI principiantll$.
MONRO: BASIC btlaico.
NICHOLLS: ZX Spectrum (TS 2068). ProgrtlfflllCi6n de juegos en lenguaje ena.nbledor.
PECKHAM: BASlC PBrtI Apple 11. Menual prktico.
PECKHAM: BASIC fNIrtI Commodora 64. Menual prtlctico.
PECKHAM: BASIC Pa'" IBM. Manual prktico.
PECKHAM: BASIC PBrtI TRS-BO color. Manuel prtlctico.
PHILLIPS: Progrtlmllndo el Dreg6n. Juegos y grtlficos.
PRUEIT: El arte y le computadora.
STREET: ZX Spectrum (TS 2(68). TkniCll$ de proce$lNflfNlto de le infomlllCi6n.
WILLIAMS: ZX Spsctrum (TS 2(68). Dilltlilo y progrtlfflllCi6n de juegos.
WOODS: ZX Spsctrum (TS 2(68). Progrtlfflllci6n an lengueje IH/$/Iff/bledor.

DICCIONARIOS PUBUCADOS POR McGRAW-HILL


COLLAZO: Diccionario Encicloptldico de TMminos Tlcnicos (lngltJa-E$pIJ/loI/E8PBftol-lngltJa).

FREEDMAN: Gloaario de computaci6n.

PARKER: Diccionario McGrllW-Hill de ComputllCi6n.

SIPPL: (tAicrocomput/ldolN. Diccionarios de trminos.

VAQUERO/JOYANES: InformtJtica. Glo8I1rio de tMminos yaiglea.

WILLlAMS: Spanmh {f Englmh Dictionary.

'.