Sunteți pe pagina 1din 122

OTRA OBRA DE GRAN INTERES

PROCESO DE DATOS EN LOS NEGOCIOS

Elías M. Awad
Respondé a una finalidad esencial, ya que explica técnica y detalla­
damente el por qué de la revolución que ha causado en el ámbito de los
negocios, cuáles son los dos sistemas contemporáneos para llevar al cabo
el proceso, así como los problemas a que se enfrentan los negocios al
adoptar el sistema.
A partir de la fascinante historia del proceso de datos y de sus ser­
vicios, se adentra en el moderno mundo de su aplicación y de sus dos
principales sistemas: el proceso de datos empleando tarjetas perforadas,
y el electrónico. Asimismo, describe con detalle los procedimientos más
actuales de recopilación y registro de información, así como sus procesos
mecánicos y su evaluación.
Tiene, por otra parte, un mérito didáctico innegable, pues principia
cada capítulo con un esquema general y termina con un resumen y con
preguntas de repaso. Hace mención histórica de las computadoras de la
primera, segunda y tercera generaciones; trata del concepto de sistemas
y de las fuentes de datos para la organización de los negocios. Estudia el
proceso de datos en tarjetas perforadas, con un estudio analítico de la se­
rie UNIVAC 10700, la controladora UNIVAC 1001 y la procesadora UNIVAC
1004. Pasa revista a los dispositivos de entrada y de salida y trata los dife­
rentes tipos del sistema de computadoras IBM 360 Mod. 20; la introducción
?I sistema octal, los sistemas de codificación, el almacenamiento secun­
dario, con ilustraciones y clasificación de datos en cinta magnética, y una
sección sobre tiempo real y sistemas en la línea. Resume, además, los
principios de FORTRAN Y COBOL.

ISBN 968-13-0863-8
PREFACIO

Cuando usted toma un curso de programación de computadoras,


indudablemente su instructor le prevendrá que "escriba un diagrama
de flujo que resuelva sus problemas antes de codificarlos".
Sin embargo, ordinariamente, el instructor no dirá mucho acerca
de diagramas de flujo. En cierta forma, el instructor considerará que
el arte de elaborar diagramas de flujo es autoevidente y que no re­
quiere mucha explicación, o que es algo que puede uno aprender por
sí mismo. Esto nos parece que se debe a que los instructores no
desean desviarse de sus objetivos principales -enseñar lenguajes de
computación y técnicas.
La elaboración de diagramas de flujo no es autoevidente. Es un
arte. Se aprende a escribir mejores diagramas de flujo del mismo
modo como se-aprende mejor cualquier cosa: practicando. Por tal
razón, una instrucción formal al respecto es altamente deseable. Este
texto suministra la instrucción inicial.que le permitirá obedecer el
dictado del instructor: diagrame antes de codificar.
La primera parte del libro se dirige justamente al fin previsto y
contiene un material que puede ser cubierto en un par de horas.
Procure completar esta parte tan pronto como sea posible,. antes o
después que comience su estudio de un lenguaje de programación.
La segunda parte es más compleja. Debería comenzarse con--esta
sección después de que haya comenzado a estudiar índices en su
lenguaje de programación. El material de la segunda parte requerirá
algo así como doce hora:, de estudio privado, a menos que se cuente
con u.n instructor.
El lenguaje de programación BASIC* se usa para ayudarnos a
ilustrar principios de diagramación presentados. Lo hemos elegido

* Beginner's All-purpose Symbolic Instruction Codeo (N. del T.)

6 PREFACIO

debido a que es muy fácil de comprender (casi se enseña por sí


mismo) y, efectivamente, ilustra cuán sencillo es escribir los progra­
mas una vez que se ha desarrollado el diagrama de /lujo.
El texto también sirve como breve introducción a las técnicas de
programación. Al comienzo del libro los conceptos y problemas son
por demás simples, pero a medida que se va alcanzando su final se
tornan más complejos. Usted encontrará en las lecciones finales
mucho material que podrá adaptar a sus propias actividades.
Estamos seguros de que en la parte final del libro se notarán las
respuestas y un índice comprensivo.
Estamos en deuda con muchas personas que nos ayudaron a pre­
parar este libro. Algunas de éstas son David N. Toussaint, quien nos
hizo sugerencias de gran valor; J oseph Tocco, que leyó cuidadosa­
mente el original, y Dante J. PeUei, que nos dio consejos que permi­
tieron perfeccionarlo. Nuestra gratitud especial a la señorita Nancy
D. George, quien dibujó los diagramas y nos suministró las soluciones
de todos los problemas usando el sistema General Electric GE-265
(Mark 1); al señor Alvin J. Stehling, presidente de proceso de datos
del San Antonio College, quien fue el primero en leer el manuscrito y
le hizo comentarios constructivos, y a la señora Beatrice Shaffer, que
mantuvo el susurro de la IBM Selectric.

MARIO V. FARINA
CONTENIDO

PARTE I

Lección J>ágina
1. Conceptos básicos . . . . . 11

2. Iteraciones . . . . . . 17

3. Transferencias de control 25

4. Nitidez . 33

5. Lectura de datos 39

6. La estructura básica 47

7. Conteo . 53

8. Dos problemas instructivos . 61

PARTE II

9. Índices . 67

10. Manejo de tablas 73

11. Nidos de iteraciones 81

12. Inicialización de variables 85

13. Manej o de listas . 91

14. Mantenimiento de archivos 97

Respuestas 105

Índice anal í tico 137

7
BASIC EN UNA PALABRA
(Tal como se usa en este libro)

Para leer un valor o un conjunto de valores desde una línea DATA


READ A
READ P,Q,X
Para aceptar un valor o un conjunto de valores de datos desde el
teclado
INPUT E
INPUT F,G,T
Para asignar un valor a una variable
LET X = 3
LET D == A + B + 6
Para imprimir un mensaje o conjunto de mensajes, una respuesta o un
conjunto de respuestas
PRINT "FINAL DE PROGRAMA"
Pltl NT X,L,K
PRINT "EI~ VALOR ES", M,"Y",N
Para transferir incondicionalmente a otra parte del programa
GO 1'0 385
Para transferir condicionalmente a otra parte del programa
IF A > 13 TIIEN 8 (mayor que)
IF 13 < 3 TIIEN 28 (menor que)
IF" M == N * D THEN 305 (igual)
IF (P * Q)/L > == S TH~EN 99 (mayor que o igual)
IF 435 < = F THEN 30 (menor que o igual)
IF J <> K THEN 25 (no igual)
Para detener la ejecución de un programa
STOP
9
10 MARIO V. FARINA

Para reservar memoria para una lista o un conjunto de listas


I)IM X(lOO)
Dl1\1 K(50), V(25)
Para colocar una fuente de valores de datos
DATA -3,8,7,-6,0
DATA 27.
Para usar archivos (Véase la lección 14 para detalles)
_FILES ALF'lA; BETA

READ #l,X

SCRATCH #2

WRITE #2, R;D;T

IF END # 1 TI--IEN 86

Operadores aritméticos
+ Adición Ejemplos: LET A == B + 6
Sustracción LET D == E - F - G
* Multiplicación LET H == T * W * 3
I División LET P == (MIL )/7
t Potenciación LET O == Rt2
Funciones LET T == PtK
SQR Raíz cuadrada Ejemplos: LET D == SQR(H * L)
SIN Seno LET N == SIN (F)
INT Parte entera LET P == INT(K - W)
ABS Valor absoluto LET Q == ABS (175/B)
PARTE 1

LECCIÓN 1

CONCEPTOS BÁSICO~"

Un diagrama de fluj<.- es una representación gráfica de lo que se


desea que la computadora haga.
Empecemos con un ejemplo muy simple. Supongamos que se
desea que la computadora calcule dos veces 3 y a continuación impri­
ma la respuesta. He aquí el diagrama:

Calcula Imprime
Inicia
2 X 3 la respuesta

ALTO

Figura 1-]

Como puede verse, se tienen tres símbolos diferentes en el diagra­


mp de flujo. Ellos son:

C )

11
12 MARIO V. FARINA

Cada uno tiene una finalidad especial que discutiremos en breve.


La finalidad de un diagrama de flujo es facilitar comunicaciones
entre personas. De esta manera, la técnica de la diagramación de flujo
no solamente traza un plan en sí mismo para la instrucción de la
computadora, sino que también comunica dicho plan a los demás.
A fin de eliminar la posibilidad de una confusión, las personas
que escriben diagramas de flujo deben observar ciertos estándares.
Este texto adopta las publicadas por la U.S. Standard. Pulbicación
X3.S-1968.
Los fabricantes de computadoras suministran plantillas para ser
usadas por los programadores. La figura 1-2 ilustra la plantilla IBM
X20-8020.
En la figura 1-1, el primer símbolo es:

C__)

Se llama símbolo terminal. Su función consiste en indicar dónde


principia y dónde termina un programa. Todo diagrama de flujo debe
comenzar con este símbolo y debe estar localizado en la esquina
superior izquierda de la primera página de su diagrama de flujo.
El siguiente símbolo mostrado por la figura 1-1, es:

Es el símbolo de proceso. Representa una función de proceso, tal


como un cálculo.
El tercer símbolo en la figura 1-1, es:

Es el símbolo de (J()~~um(~nl(). Representa una salida de la computado­


ra en forma de un doeurncnto. J~n la figura 1-1, el símbolo de do­
41 5 71 8' 9
Pulgadas (décimas) Disco, tambor Operaci6n de verificado ~
~

Modificaci6n al programa E ntrada/sal ida Proceso, anotaci6n Documento


D
Operación a U X i l i c s e s o d é = ]
o
N
X
I

....,
OJ
ca
o.
<J 6. [_J E
....,
OJ

i\7
C)
Flujo e
Tarjeta perforada Cinta de papel perforada Teclado en I (nea '';::;
~
ca
Proceso predefinido

( )
O
Conector
"'V..
Declsl6n
[>
~ fuera de
V Archivo
.r::.

.2
u.
~

~ ~I(nea ~
al
Línea de comu nicaci6n Pulgadas (octavas y cuartas)
21 . I . I . I .3 • . I , I • I .41 , I • I I I ,5

Conector
Cinta magnética, Cinta de
de final
c1asificaci6 n, máquina sumadora,
de página
intercalaci6n etc.

Figura 1-2
14 MARIO V. FARINA

cumento muestra que la respuesta al problema se imprime sobre una


hoja de papel.
Las flechas que conectan los símbolos muestran en qué orden van
a ser realizadas las distintas funciones. Como una regla general, el
flujo del proceso debería mostrarse de izquierda a derecha y de arriba
abajo. Pero no siempre es conveniente observar esta regla; por con­
siguiente, debe centrarse la atención en el apunte de la dirección
correcta de cada flecha.
El lector no debe dejarse engañar por la simplicidad de nuestro
ejemplo. Los diagramas de flujo son virtualmente siempre más com­
plejos que el mostrado. En la práctica, un diagrama de flujo cubre
muchas páginas.
En este texto usaremos el lenguaje BASIC para ilustrar la codifi­
cación resultante de un diagrama de flujo. Haremos esto debido a que
BASIC es rápido de comprender sin necesidad de una explicación
formal. Sin embargo, en su programación, usted debe usar, desde
luego, un lenguaje que ya conozca o que esté estudiando actual­
mente.
He aquí la codificación enBASIC del diagrama de flujo mostrado
en la figura 1-1.

10 LET C = 2 * 3
20 PRINT C
30 STOP
Note que el símbolo terminal marcado con INICIA, no tiene llna
instrucción BASIC correspondiente. El único uso del INICIA es mos­
trar a los demás dónde comienza su diagrama de flujo.
El programador debe asegurarse de que se le indique a la compu­
tadora lo que debe hacer en el orden correcto. El diagrama de flujo
mostrado en la figura 1-3 es incorrecto. ¿Puede el lector ver por
qué?
Estamos poniendo el carro antes que el caballo. Estamos pidien­
do que se imprima la respuesta antes de calcularla. Esto es, desde
luego, absurdo. El lector puede sonreir si lo desea; además, los pro­
gramadores.inadvertidamellte hacen cosas que van mucho más allá de
lo que pueden admitir.
DIAGR~MAS DE FLUJO 15

Imprime
Inicia Calcula
la respuesta
8 X·6

Alto

Figura 1-3

He aquí un punto importante: el conocimiento de cómo escribir


diagramas de flujo no implica el conocimiento de cómo programar.
Cuando se tiene un problema, el programador debe dar con el
procedimiento que la computadora debe seguir a fin de resolver
el problema. En consecuencia, deberá estudiar el método usado,
debido a que dará todas las indicaciones acerca de cómo proceder en
el futuro cuando se presenten problemas similares.

Ejercicios:

1. Usted desea que la computadora calcule 5 por 8 y a continuación


imprima la respuesta. Escriba un diagrama de flujo para mostrar
esto.

2. ¿ Qué es lo incorrecto en el diagrama de flujo de la figura 1-4?

Imprime
Inicia Calcula
la respuesta
4 X 5

Figura 1-4 Alto


16 MARIO V. FARINA

3. ¿Qué es lo incorrecto en el siguiente diagrama de flujo?

Calcula Imprime
Inicia
2 X 6 la respuesta

Alto

Figura] ·5

4. Reescriba el diagrama del ejercicio 3 a fin de que sea correcto.

\
LECCIÓN 2

ITERA CIONES*

En la primera lección, los diagramas de flujo mostrados son muy


simples. Ellos muestran varias clases de símbolos conectados por fle­
chas. Además, en los ejemplos, las operaciones indicadas en los
símbolos se ejecutan una sola vez, es decir, que nunca se repiten.
Sin embargo, un diagrama de flujo puede regresar sobre sí mismo.
La figura 2-1 muestra un ejemplo:

Calcula
Asigna
Inicia 40 X R

2.50 a R asigna el

resu Itado a W

Imprime Incrementa
W R X .01

Figura 2-1
He aquí el programa BASIC correspondiente al diagrama de flujo
de la figura 2-1.
\
* Hemos preferido traducir Loops por iteraciones y no por el ciclo o lazo
que más bien se refieren a cuestiones geométricas que algorítmicas. (N. del T.)
17
18 MARIO V. FARINA

10 LETR = 2.50

20 LET W = 40 * R

30 PRINT W

40 LET R == R + 0.01

50 CO TO 20

Sería incorrecto escribir la última línea como:


50 GO TO 10
¿,Puede usted ver por qué?
En ese caso, el programa no hubiera sido escrito de acuerdo con
el diagrama dc flujo. El diagrama de flujo muestra claramente que el
programa regresa al símbolo marcado con "CALCULA 40 X R
ASIGNA EL RESULTADO A W" y no al que dice "ASIGNA
2.50 A R".
El ejemplo es simple, pero tiene muchos detalles dignos dc ser
estudiados. Debe notarse que la flecha que sale del último bloque en
el diagrama, retorna a un paso anterior del mismo diagrama. Esto
forma una "iteración".
Es igualmente correcto mostrar la flecha de retorllO como apun­
tando directamente a un bloque en vez de hacerla apuntar a otra
flecha delante de él. El diagrama de flujo precedente podría tambiéll
haberse escrito como lo muestra la figura 2-2.

Calcula
Asigna 40 X R
Inicia
2.50 a R asigna el
resu Itado a W

Incrementa
ImprimeW R por .01

Figura 2-2
DIAGRAMAS DE FLUJO 19

Las flechas de retorno deben ser colocadas con especial cuidado.


Si se apuntan incorrectamente, como consecuencia, el programa será
codificado de modo incorrecto. Puede considerarse que cuando se
desarrolla un diagrama de flujo se tiene más de la mitad ganada.
Las frases usadas en los bloques de los diagramas de flujo no
precisan de ninguna formalidad. Cualesquiera palabras que usted use
son buenas, con tal que expresen claramente qué es lo que la compu­
tadora debe hacer.
Por ejemplo, todas las frases que se muestran a continuación
significan lo mismo y podrían, por tanto, ser usadas por igual en el
primer bloque del diagrama de flujo.

ASIGNA 2.50 a R
HAZ R IGUAL a 2.50
INICIALIZA R con 2.50
PON 2.50 en R
R == 2.50
2.50 => R

Es sabido que nunca dos personas distintas escriben un diagrama


de flujo exactamente de la misma manera. VIl programador puede ser
tan breve y críptico como esto:

Inicia" 2.50 ~ R 40 X R ~w

w R+ .01 ~ R

Figura 2-3
20 MARIO V, FARINA

Obsérvese que este programador no hace uso de la palabra 1M·


PRIME en el símbolo que muestra W. Él sostiene que no es necesario
escribir ninguna cosa que pueda ser sobrentendida. La fo~ma del
símbolo indica claramente que es el valor de W el que va a ser
impreso.
Otro programador podría considerar que un diagrama de flujo
debe hacerse tan claro como un cristal.
Por esta razón, su diagrama de flujo para el mismo problema
puede verse como lo muestra la figura 2·4.

Calcula
Asigna el valor salario ganado
Inicia
inicial 2.50 a R haciendo R X 40.
(tasa de pago) Asigna el
resultado a W

Imprime Incrementa
W A por .01

Figura 2-4

A veces el programador llenará los bloques con palabras y frases


íntimamente relacionarlas con el lenguaje de programación que vaya
a usar. Por ejemplo, este diagrama de flujo podría ser escrito como lo
\ muestra la figura 2-5.
DIAGRAMAS DE FLUJO 21

Debe notarse cómo las frases en los bloques corresponden estre­


chamente al programa. Ahora puede verse con mayor claridad por
qué es válido considerar que cuando se ha desarrollado un' diagrama
de flujo, el programa mismo está casi escrito.

Inicio
LET R = 2.50 LETW = R * 40

Imprime LET R R + .011-­ .....


W

Figura 2-5

Obsérvese que el diagrama no muestra bloque alguno equivalente


a CO TO 20. La flecha que va de LET R = R + .01 a LET
W = R * 40 toma el lugar de GO TO. En otras palabras, un sím­
bolo que diga GO TO nunea es necesario en un diagrama de flujo. JjUS
flechas nuestran qué es lo que la computadora hace y en cuál se­
cucnCLU.
Una vez que el programador ha escrito un programa de acuerdo a
un diagrama de flujo, puede regresar al diagrama y escribir sobre él
referencias eruzadas al programa. El diagrama de flujo final podría
ser mejorado escribiendo sohre él la referencia cruzada como lo
rIluestra la figura 2-6.
Los números mostrados en la parte superior derecha de los
símbolos son llamados números de línea en 13i\.SIC. ~~n :FOR TRAN,
serían números de instrucción, en COBOI.J nombres de párra.fo, et­
eétera. La referencia cruzada sirve a la vez como documentación y
posible ayuda a la depuración si acaso el programa no funcionara
correctamente.
22 MARIO V. FARINA

10 20

Inicia LET R = 2.50 LET W R .. 40

30 40

Imprime
W
LETR =R + .01 ~---------_ ...

Figura 2-6

Debe observarse que ninguno de los ejemplos de esta lección


incluye símbolos que digan STOP. La razón es que los programas
mostrados nunca terminan su ejecución.. Pero, naturalmente, los pro­
gramas que no muestran caminos definidos para su detención no son
buenos programas . Una vez arrancados correrán hasta que sean dete­
nidos manualmente.. La siguiente lección nos enseñará cómo hacer
que un programa termine en forma automática.

Ejercicios

1. Escriba un diagrama de flujo para un programa que calcule comi­


siones de ventas del 15 ~I,- para mercancías que varíen en precio
desde $ 2.00 en incrementos de $ . 10. El programa deberá con­
tener una iteración sin condición definida de terminación..
DIAGRAMAS DE FLUJO 23

2. Escriba el diagrama de flujo de la figura 2-7 de una manera di­


ferente. Es decir, use diferentes frases dentro de los bloques.

ENTER ­ O ---+ S -- O-tK

K+14K - S+K---+S ...... S

......... _./

Figura 2-7

3. ¿, Qué es incorrecto en el siguiente diagrama de flujo?

Asigna Incrementa
Inicia OaP el valor de
P X 1

Imprime
p

Figura 2-8
24 MARIO V. FARINA

4. Dibuje un diagrama de flujo que corresponda al siguiente progra­


ma BA.SIC.

ID LETL 1000
20 LETI = .075 * L
30 PRINT 1
40 LET L = L + 100
SO CO TO 20

En este programa, L significa monto del préstamo e 1 significa


costo del interés.
LECCION 3

TRAN5Fl!;RENCIA5 DE CONTROL *

Se puede alterar el curso de acción de un programa escribiendo


un símbolo con forma de diamante.

I~a contrastaciónt a ser hecha se muestra dentro del diamante.


Desde el símbolo, pueden fluir dos o más flechas.
Supongan10s el problema de calcular el impuesto del 20~/i para
ganancias anuales en el rango de $ 4,000 a $ 9,000 en incrementos
de $ 500.00. ]Ja figura 3-1 muestra cómo la computadora debe ser
instruida para resolver el problema.
Ahora, observemos las etiquetas SI y NO puestas al lado de las
flechas que parten del símbolo con forma de diamante. ]i,stas flechas
señalan qué es lo que la eomputadora hará una vez que la pregunta
formulada sea respondida. Como puede verse con sólo invertir unos
momentos de atención, la pregunta contenida en el diamante sería
hecha 11 veces. Las primeras 10 veces la respuesta será NO, pero
la última SI.
I--Ie aquí el progranla I~ASIC correspondiente al diagrama de flujo.

* Por considerar que en este contexto es más propio haLlar de transferencias


de control que de toma de decisiones, nos hernos ptpnitido pasar al cast(~lIano
como transferencias de control el término inglés making dprisiones. N. d(~1 T.)
t En tocios los casos, traducin~mos (pst por la eontraslación. (N. del fr.)
25
26 MARIO V. FARINA

Calcula
Asigna .20 X E
Inicia
4000 a E asigna el
resu Itado a T

Imprime lE No
Incrementa
EyT excede
E por 500
a 9000?

Alto
Figura :3-1

1O tJ~~T Ii~ = 4000


20 I~ET T == .20 * I~
30 PIlINT ~~, T
40 LET J~ == ~~ + 500
50 1r-' r~ > 9000 T tIEN 70
60 GO Tü 20
70 STOP

La instrucción en la línea 30 muestra que es posible ordenar a la


computadora que imprima más de un valor a la vez.
La instrucción en la línca 50 muestra cómo se hace la eontrasta­
eión.' Si el resultado de la eontrastaeión es verdad(>'ro (efectivamcnte
l~:es mayor que 9000, el trabajo se da por terminado y la compu­
tadora se dirigiri1 a srr()p. De otra Jnancra, la computadora confi­
n uará con el cálculo de otro im puesto.
l~:n el lenguaje 13AS ((:, se usan los siguientes símbolos.
DIAGRAMAS DE FLUJO -,
.) ......

> Signifiea mayor que

< signifiea menor que

>== S'ignifiea mayor que o igual a

<== signifiea menor (lue o i~uaJ a

signifiea igual a

<> significa no igual

l'omemos otro ejemplo de una situaeión empresarial. Suponga­


mos que se ticne una fresadora con un costo original de $ 30,000.

Asigna 30000
aM
Inicia Suma 1 a Y
Asigna O
aY

Calcula
M X 90 ¿Es
No Imprime
Asigna el M< VyM
resultado 2000?
aM

Alto

Figura ~~-:!
28 MARIO V. FARINA

Sabemos que se deprecia a razón del 10 % anual de acuerdo con su úl­


timo valor reportado. Esto es, el primer año se deprecia ellO % de
$ 30,000, o sea, $ 3,000; durante el segundo año, se depreciará el
10 % de $ 27,000 ($ 30,000 - 3,000), etcétera.
El problema consiste en construir una tabla que muestre el año y
valor de la máquina hasta que dicho valor caiga por debajo del valor
de retiro, que es de $ 2,000. La figura 3-2 muestra un diagrama de
flujo que puede ser utilizado para el fin pr0puesto.

La letra 1\1 representa el valor de la máquina; Y al año. Debe


observarse el momento en que Y se incrementa en l. A continuación
se presenta la correspondiente codificación BASIC para este pro­
blema:

10 I~J~T M = 30000
20 I~ET Y = O
30 I~ET Y = Y + 1
40 J~~~T M M. ~..90
=
50 I.F M < 2000 TI-IEN 80
60 PIlINT Y, M
70 GO TO 30
80 STOP

Como puede verse de inmediato, cuando se trabaja en el desarro­


llo de un diagrama de flujo., se esclarecen nuestras ideas acerca de
cómo resolver un problema. Cuando se trabaja por primera vez en
una solución, se encuentran cosas que distan mucho de ser obvias.
Por esta razón, las primeras ideas de la solución de un problema
pueden ser por completo incorrectas, y cada vez se tendrá que em­
pezar de nuevo el diagrama. Por esto no debe en forma alguna in­
comodarnos ya que es perfectamente normal. Cuando se elabora un
diagrama de flujo se requieren grandes cantidades de papel, un lapiz
bien afilado y una buena goma de borrar
l~nRASJ (:, la instrueción 1) ATA permite lecr valores y asignarlos
a variables. lJn programa muy simple puede mostrarnos cómo hacerlo:
DIAGRAMAS DE FLUJO 29

10 ItEAD S
20 IF S == O TI-IEN 50
30 PRINT S
40 GO TO 10
50 STOP
60 DATA 3,18,24, -4, O
pe acuerdo con esto, la computadora imprimirá cuatro líneas de
salida: 3, 18, 24 Y -4.
Supongamos que se tienen tres artículos de venta: un refrigera­
dor por $ 550, un televisor por $ 375 Y un acondicionador de aire
por $ 250. Si se ha asignado una comisión del 15 % para el primer

Inicia

Leer ¿Es Sí Imprime


AyP Hfinal de
A == O?
trabajoH

No

Calcula

Imprime A X P

A,P yC Alto
Asigna el

resu Itado a C

Figura :~-:~
30 MARIO V. FARINA

art í culo, 12 rk para el segundo y 7.5 r:~ para el tercero, ;. cómo po­
dríamos calcular las comisiones para cada artículo usando una
computadora? Véase el diagrama de flujo que puede usarse para
resolver este problema. (Figura 3-3.)

En este ejemplo aparece un nuevo símbolo:

Es el símbolo de entrada/salida y representa información que va a ser


leída para su posterior procesado, o bien, información a ser escrita.
Por lo consiguiente, si se desea, este símbolo puede ser usado para
mostrar salida impresa en lugar del símbolo de documento.
El diagrama de flujo precedente muestra los nombres de datos A,
P Y e; la letra A representa el costo del artículo~ P el porcentaje de
comisión y e la comisión ya calculada. La versión BASIC de este
programa es:

10 IlEAD A, P
20 IF A = O TH~~N 50
30 LET C = A * P
35 PRINT A, P, e
40 GO TO 10
50 PRI NT "FINAL DE TRABAJO"
60 STOP
70 DATA 500, .15, 375, .12,250, .075, o, O
La línea 10 muestra que, en BASIC, se pueden leer eonjuntos de 2 o
más valores a la vez de~de la instrucción DATA. Por su parte, la
propia instrucción DATA muestra un conjunto de valores dummy *
"O" Y "O" para terminar la ejecución del programa. (Es necesario un
conjunto completo de valores aun cuando el programa solamente
contraste el valor de A,.) En la línea 50 se puede observar cómo se
imprimen mensajes en BASTe.
-1(4 Vacíos, huecos (N. de~
DIAGRAMAS DE FLUJO 31

l. Una tienda de libros y géneros diversos al menudeo ,ofrece un


descuento de cortesía del 10 ~Ii- para profesores. ~~scriba un dia­
grama de flujo que muestre cómo la computadora pucde calcular
e imprimir el 10~k de $ 1.00~ $ 1.10~ $ 1.20, etc., hasta $ 25.00'.
2. En una instrucción DATA se listan varios números de partes de
máquinas de escribir. (Por ejemplo: DATA 3014~ 3029~ 3083~
4017, 4044, 9999.) J~scriba un diagrama de flujo que muestre
eómo la computadora podría contrastar si estos núrneros se en­
cuentran en orden creciente. 1~:I programa deberá imprimir
números en secuencia si todos los números están en secuencia;
por el contrario, el programa deberá detenerse si algún número se
encuentra fuera de secuencia.
3. Supongamos que se tiene un conjunto de calificaciones. Escriba
un diagrama de flujo y un programa BASTe para calcular la cali­
ficación media. El número 999 será incluido como una califica­
ción dummy y se usará para verificar el final de los datos. Por
consiguiente, no deberá intervcnir en cl cálculo.
4. Este problema consiste en leer un conjunto de números dc pago,
X, Y Y Z desdc una instrucción DATA y hacer que la compu­
tadora determine cuál de los tres es el más grande. Cuando haya
sido completada la tarca, deberá repetirse el proceso con otros
tres números de pago, y así sucesivamente. De esta manera, el
programa repetirá el proceso hasta que el valor encontrado para
X sea 999. No debe procesarse este.caso, simplemente detenga el
programa. Escriba un diagrama de flujo y el correspondiente pro­
grama BASIC que resuelva este problema. Asegúrese de que la
última terna de valores sea 999, O~ O, pues en 1-3ASI(: no pueden
leerse conjuntos incompletos de datos.
l.ECCIÓN 4

NITIDEZ

Un diagrama de flujo es una obra de arte. Por esta razón, ningún


diagrama mostrará la solución de un problema del mismo modo que
otro. Cuando se elabora un diagrama de flujo no debe dudarse en ser
creativo; además, debe procurarse el uso· de los estándares descritos
en este texto y hacer un esfuerzo por planear los diagramas de tal

Asigna Calcula
1a X X+V
Inicia Asigna Asigna el
1aY resu Itado a Z

Incrementa
Imprime X por 1 ¿Excede No
X, Y Y Z Incrementa X a 100?
y por 1

Alto

Figura 4-1
33
34 MARIO V. FARINA

: manera que el flujo del proceso se muestre de izquierda a derecha y


de arriba abajo. Con esto, se logra que otras personas comprendan
mejor los procedimientos que se hayan desarrollado para resolver los
problemas. En esta lección discutiremos algunas técIlicas que pueden
ser usadas para estampar en los diagramas de flujo un aire profe­
sional.
Es absolutamente correcto mostrar más de una tarea a ser rea­
lizada en un mismo símbolo de proceso. Véase la figura 4-1.
El primer bloque que sigue al símbolo Inicia muestra valores
iniciales a ser asignados a X e Y. Estas dos operaciones deberán ser
completadas antes de revisar el cálculo especificado en el siguiente
bloque. Las operaciones deben ser codificadas en el mismo orden con
que aparecen en el símbolo. Debe notarse que también se realizan
dos operaciones en el símbolo que dice Incrementa X por 1~ Incre­
menta Y por 1.
En ocasiones el programador querrá asimilar mejor el espacio.
Por ejemplo, el diagrama precedente podría ser escrito de esta ma­
nera:

Calcula Incrementa
Inicia
X+Y X por 1
Asigna el Incrementa
resultado a Z y por 1

Asigna
Imprime ¿Excede No
1aX
X, y yZ X a lOO?
Asigna
1aY

Alto

Figura 4-2

En ambos casos, la codificación BASIC es como sigue:


DIAGRAMAS DE FLUJO 35

10 LET X = 1
20 LET Y = 1
30 LET Z == X + Y
40 PRINT X, Y, Z
50 LET X = X + 1
60 LET Y = Y + 1
70 IF X > 100 THEN 90
80 GO TO 30
90 STOP
e omo puede verse inmediatamente, este programa calcula
1 + 1, 2 + 2, 3 + 3,...,100 + 100. El programa muestra nueve
instrucciones escritas secuencialmente a lo largo del papel, mientras
que el diagrama de flujo podría ser reducido a un espacio limitado
Sin embargo, el diagrama de flujo siempre corresponde perfecta­
mente al programa. Las flechas del diagrama no dejan duda alguna
acerca del orden en el cual serán ejecutadas las operaciones del pro­
grama.
Aun cuando un diagrama de flujo sea escrito en forma confusa~
como el mostrado en la figura 4-3, la codificación BASIC resultará la
mIsma.
Calcula
Asigna
1a X X+Y
Inicia Asigna el
Asigna
resultado a
1a Y
Z

Incrementa
Imprime X por 1
X, Y yZ Incrementa
y por 1

No ¿Excede Sí
X a 100? Alto

Figura 4-3
36 MARIO V. FARINA

Las flechas muestran qué operación debe ser ejecutada y en cuál


orden. Estamos convencidos de que no está sugiriendo que se escri­
ban diagramas de flujo como éste. Sin embargo, a veces, a fin de
economizar espacio, los bloques relacionados pueden consérvarse
próximos entre sí, o a fin de impedir que las flechas se crucen po­
demos acudir a conveniencias como la mostrada.
El diagrama de flujo muestra un nuevo símbolo.

Es el llamado símbolo conector, y se usa para conectar una parte de


un diagrama de flujo con otra. En ocasiones estas partes se encuen­
tran en páginas distintas.
En la figura 4-3 podemos ver

o-
Para poder saber dónde continúa el diagrama de flujo, es preciso
encontrar otro círculo que encierre un asterisco en el punto de con­
tinuación. En este caso, lo tenemos en la parte superior derecha.
Desde luego, los conectores pueden ser evitados dibujando fle­
chas desde una parte del diagrama a otra parte distante. Pero hacer
esto tiende a complicar demasiado y aparecer desordenado un dia­
grama.
Puede encerrarse cualquier símbolo o carácter alfabético dentro
de los símbolos conectores. Conectores tales como

son perfectamente válidos.


Si un conector y su conector de continuación se encuentran en di­
ferentes páginas del diagrama, los conectores deben mostrar la re­
ferencia a la página. Por ejemplo, los conectores podrían aparecer
como éstos:

DIAGRAMAS DE FLUJO 37

De la página 2

A la página 3

Ejercicios:

1. Reescriba este diagrama de flujo a fin de hacerlo más claro.

Asigna
Inicia
10 a P

Calcula Sí
PXQ
asigna el
resultado
aT
No

Imprime Asigna Incrementa


P,QyT 1aQ Q por 1

Alto

Figura 4-4

2. Escriba un programa BASIC de acuerdo con el diagrama de flujo


que obtenga al resolver el ejercicio l.
3. Repase los nombres de los siguientes símbolos y sus usos:
38 MARIO V. FARINA

o
C )

LECCIÓN 5

LECTURA DE DATOS

La capacidad de una computadora para transferir control y eje­


cutar iterativamente conjuntos de instrucciones, es muy importante.
Sin estas capacidades, difícilmente la computadora alcanzaría el 1 ji
de su capacidad de trabajo.
Otra característica poderosa de la computadora es su capacidad
para leer datos. Por lectura de datos se entiende la transferencia de
información desde dispositivos auxiliares, tales como lectoras de tar­
jetas, unidades de cintas o archivos en discos, a la memoria de la
computadora, a solicitud de los programas. Recordemos para ello lo
que hemos discutido previamente acerca de cómo se leen datos de
BASIC.
Supongamos que se tiene un fajo de tarjetél;s perforadas en la
lectora de tarjetas de una computadora. Cada tarjeta contiene perfo­
rados tres números. Escribamos un diagrama de flujo para un pro­
grama que lea la información de dichas tarjetas, una tarjeta cada vez,
e imprima dicha información.

Leer Imprime
Inicia valores A, S, C A,S, C

Figura 5-1
39
40 MARIO V. FARINA

Este diagrama de flujo introduce un nuevo símbolo, el de tarjeta


perforada.

Siempre que se desee indicar una instrucción de lectura de tar­


jetas, puede usarse el símbolo estándar para entrada/salida. ¿Se
recuerda aquel programador que no gusta de escribir demasiado en
los diagramas de flujo? Él piensa, decíamos, que la forma del sím­
bolo habla por sí misma. Podríamos, además, escribir el anterior
diagrama de flujo de esta manera:

Inicia A,S, e A,S,e

Figura 5-2

Este diagrama de flujo no contiene una condición definida para su


terminación.
Supongamos que la última tarjeta es una tarjeta dummy (a dejarse
sin procesar) y que contiene el valor 999 para A. De esta manera,
teIldremos ahora la posibilidad de que el diagrama de flujo realice
una contrastación para esta tarjeta. En efecto, inmediatamente des­
pués que la computadora encuentre esta tarjeta, saltará a una instruc­
ción que la detenga o bien a un procesado adicional, come pr)r
ejemplo, el imprimir "Final de trabajo" cuando se encuentre t tar­
jeta dummy.

Un programa FORTRAN escrito de acuerdo con este diagrama es el


siguiente:
DIAGRAMAS DE FLUJO 41

Leer
Inicia A,B ye
*
Final de archivo

/
,/' cuando A = 999

/
/
/

Imprime ¿Final
Sí No Imprime
"final de de A,B yC
trabajo" archivo?

Alto
*
Figura 5-3

35 READ 15, A, B, e
15 FORMAT (3FI0.3)

IF (A. EQ.999.) GO TO 50

PRINT 15, A, B, C

GO TO 35

50 PRINT 55

55 FORMAT (11 H FIN.AL DE TRABAJO)

STOP

END

El lector no debe admirarse de que ahora repentinamente cambie­


mos a FORTRAN en vez de usar BASIC, lenguaje que hemos utili­
zado en todos los casos anteriores para ilustrar la codificación resul­
tante de los diagramas de flujo. La razón es que BASIC es un lenguaje
orientado a teletipos y no lee, por consiguiente, tarjetas perforadas.
En vez de eso, como hemos visto, los datos se especifican en el
.
interior del programa, mediante la instrucción DATA. Por otra parte,
la lectura de tarjetas es un modo normal de operación en ji'OR­
42 MARIO V. FARINA

TitAN. A continuación presentamos un programa equívalente al


anterior, sólo que ahora en BASIC.

10 RI~AD A, B, e
20 Ili' A = 999 Tl-IEN 50
30 PltlNT A, H, f:
40 (;0 TÜ ID
50 PJlINT, "/?inaldc trabajoH
60 STOP
70 IlATA 6,7,4,2,9,17,4,6,3,999, O, O

A pesar de que este problema es muy simple, contiene varios puntos


que deben ser notados. Primeramente, el símbolo de decisión no
muestra lo que se entiende por "final-de-archivo"; y es que resulta
innecesario que el diamante lo especifique si tal información aparece
en otro lugar del mismo diagrama. Observe que la nota a la derecha
del diagrama define la condición final-de-archivo. Como veremos más
tarde, los diagramas de flujo hacen uso extensivo de notas que su­
ministran material explicatorio que no cabe en los bloques del dia­
grama. Por ejemplo, las fórmulas complicadas ordinariamente se
muestran en notas.
IJas notas se encierran en el símbolo provisto para tal fin, el
símbolo de anotación.

-----1 '---------­

Este símbolo puede conectarse a cualquier símbolo del diagrama en


un lugar donde la anotación sea significativa.
~:n la línea 70 puede verse una serie de valores. Estos valores son
asignados a A, B Y e a medida que el programa los requiera. (Se
tienen tres ternas de valores usados. La última terna [999., O., O] no es
proeesada.) Cuando el programa observa que A equivale 999, salta a
la línea 50, imprime "F'inal de trabajo y se detiene. Los dos últimos
H

ceros de la terna dummy son absolutamente necesarios, pues, como


ya hemos visto, la instrucción R~~AD de BASTe no puede leer con­
DIAGRAMAS DE FLUJO 43

juntos incompletos de valores. Por esta razón, usaremos el símbolo


cst4ndar de entrada/salida para indicar la lectura de datos.
Resolvamos otro problema. Supongamos que se deben ·leer varios
valores desde una fuente de datos. I.. os valores se agregarán sucesiva­
mente e imprimiremos su suma. l.1a figura 5-4 es un diagrama de flujo
que muestra un procedimiento para realizar esta tarea. Ji~l valor
(dumm.y) de final-de-archivo es cero.

Inicia Asigna
DaS

Final de
arch ivo cuando ---,,,
V=D
¿Final
Sí Imprime S
de
archivo?

No

Suma
Alto
* VaS

Figura 5-4

Obsérvese el símbolo de proceso que asigna el valor cero a S.


Deseamos, aSÍ, 3..-,;egurarnos de que S arranque como un "recipiente
limpio". En otras palabras, se dice que se inicializa a S. Ordinaria­
mente, la sección de inicialización en un programa se localiza en el
comienzo o casi al comienzo del mismo. Nótese tarnbién que los
símbolos de inicialización se encuentran fuera del cuerpo principal de
iteraciones.
44 MARIO V. FARINA

A continuación se muestra el programa BASIC que corresponde


al diagrama precedente:

10 LET S == O
20 READ V
30 IF V = OTHEN 60
40 IJET S = S + V
SO GO TO 20
60 PRINT S
70 STOP
80 DATA 8, 3,17,4,7,20,0
Puede verse que cero es el último valor que aparece en la instruc­
ción de DATA. Este cero actúa como un indicador de final-de­
archivo y no será procesado. El programador que elija un cierto valor
que funcione como indicador de final-de-archivo debe asegurarse que
tal valor específico nunca aparecerá como uno de los datos a ser
procesados.

Ejercicios:

l. Escriba el diagrama de flujo correspondiente al siguiente pro­


grama (este programa obtiene el valor máximo en la línea DATA
y lo imprime).

10 LET M = O
20 READ A
30 IF A = O THEN 70
40 IF M > A THEN 20
SO lJET M = A
60 GO TO 20
70 PRINT "El valor máximo es n, M
80 STOP
90 DATA 2,8.9,7.3,1.7,11.3,4.2, O

2. Así V = 99 el valor para final-de-archivo. ¿ Todos los diamantes


de decisión de la figura S-S formulan la misma pregunta?
DIAGRAMAS DE FLUJO 45

Final de archivo
,..---­ cuando V = 99
/
/
¿Final
lEs Sí Sí
de
V = 99? archivo?

No No

Final de archivo
~----
/ cuando V == 99
/
= 99
lV?

~ 99

Figura 5-5
48 MARIO V. FARINA

Toma Sí
¿Es
Inicia valores
H = 1000?
para H y R

No

Calcula
H por R Imprime
Imprime
Asigna el "final de
H, R yS
resultado trabajo"
aS

Alto

Figura 6-2

Este diagrama de flujo, como puede verse de inmediato, sigue la


estructura básica. Con toda facilidad, el lector distinguirá los bloques
que se destinan a los datos de entrada, al procesado de estos datos y a
la impresión de las respuestas obtenidas.
Obsérvese que cuando se detecta el final-de-archivo no siempre se
requiere que el programa se detenga inmediatamente después. Puede
realizarse alguna operación (a veces una gran cantidad de operacio­
nes) después de que haya sido encontrado el final-de-archivo. En se­
guida se muestra un programa BASIC paralelo al diagrama de flujo
precedente:

10 READ H, R
20 lF 11 = 1000. THEN 60
30 LET S = li * R
40 PRINT 11, R, S

50 GO TO lO·

60 PRINT "fjnal de trabajo" (Continúa en la siguiente página)

LECCIÓN 6

l~A ESTRUCTURA BÁSICA

El corazón del 90 jI,- de todos los diagramas de flujo usados en lIna


resolución de problemas, sean científicos o comerciales, muestra la
siguiente estructura básica:

Toma algun ¿Final



Inicia dato de de
entrada archivo?

No

Escribe
Procesa algunas Alto
los datos respuestas

Figura 6-1
Dado un trabajo, el programador debe probar si tal trabajo se ajusta
a la estructura básica y, si así sucede, completarla con las piezas
faltantes.
Calculemos los salarios netos semanales cuando las horas trabaja­
das y la tasa por hora se muestran como datos. El valor para el
final-de-archivo es horas. trabajadas = 1000. La figura 6-2 muestra
un diagrama de flujo que puede usarse para el fin propuesto.
47
DIAGRAMAS DE FLUJO 49

70 STOP
80 DATA 40,2.55,36,3.50,25,2.90,1000, O

Como otra ilustración, supongamos que un vendedor desea calcu­


lar su comisión total sobre la venta de varios artículos. Al vendedor le
corresponde el 5 % de comisión sobre artículos cuyo precio es menor
de $ 100 Y el 7.5 % de comisión sobre aquellos artículos cuyo precio
es de $ 100 o más. He aquí un diagrama de flujo que ilustra un pro­
cedimiento para resolver el problema:

Asigna Leer A
Inicia OaC (Precio del
(comisi6n) artículo)

Final de

archivo

cuando A = O Calcula

¿Final
de
No ¿Es
A< No I = .075
(comisión
X A

archivo? lOO? individual)

sr sr

Imprime
Calcula
lila comisi6n
1= .05 X A
total es?" Suma la C
(comisi6n
y el valor
individual)
de C

Alto

Figura 6-3
Un programa BASIC que corresponde a este diagrama de flujo es el
siguiente:
50 J MARIO V. FARINA

10 LET C = O

20 READ A

30 IF A = O TREN 100

40 IF A < 100 THEN 70

50 LET 1 = .075 * A

60 GO TO 80

70 LET 1 = .05 * A

80 LET e = e + 1

90 GO TO 20

100 PRINT "La comisión total es", e

110 STOP

120 DATA 45, 416, 93, 21, 157, 99, 101, 100, O

(Como puede verse, el indicador de final-de-archivo es A = O).

Ejercicios:

1. Escriba un diagrama de flujo que convenga con el siguiente pro­


grama BASIC:

10 PRINT ''Este programa calcula sumas de dígitos"

20 LET S = O

30 READ X

40 IF X > 100 THEN 70

50 LET S = S + X

60 GO TO 30

70 PRINT "La respuesta es", S

80 PRINT "Final de trabajo"

90 STOP

100 DATA 8,9,44,17,21,6,44,999

2. En el programa precedente, identifique:


a) La parte donde se leen los datos;
b) La parte donde se procesan los datos
e) la parte donde se imprimen las respuestas;
d) la parte donde se contrasta para final-de-archivo;
e) las instrucciones de inicialización.
DIAGRAMAS DE FLUJO 51

3. Un dispositivo fabricado en un taller está compuesto de varias


piezas. Los costos de estas piezas están listados en una fuente de
datos. Se desea calcular la suma de los costos individuales que
sobrepasan los $ 25. Escriba un diagrama de flujo que muestre
cómo puede realizarse esta tarea. El costo dummy de final-de­
archivo es O.
4. Escriba un programa BASIC que corresponda al diagrama de flujo
obtenido en el ejercicio 3.
LECCIÓN 7

CONTEO

Con frecuencia es necesario escribir programas que realicen


operaciones de conteo. El siguiente diagrama de flujo es para un
programa que no es otra cosa que una iteración que se realiza 5,000
veces.

Asigna
Incrementa
Inicia OaK
K por 1
(contador)

¿Es Sí
K == 50007 Alto

Figura 7-1
Con todo y que este ejemplo es muy simple, lo cierto es que
resulta muy instructivo. Obsérvese K. Esta variable es inicializada con
el valor cero, para luego ser incrementada en l. La instrucción que
incrementa K en 1 se encuentra en el cuerpo de una iteración que se
53
54 MARIO V. FARINA

ejecuta muchas veces; en el ejemplo, 5,000 veces, A continuación


escribimos un programa más significativo usando como guía el an­
terior diagrama de flujo. Calculemos la suma de todos los números
positivos del 1 al 1,000. Como es sabido, existe una fórmula que da
esta respuesta en forma inmediata * pero por ahora debemos olvi­
darla. Construyamos una iteración tal que el programa mismo cuente
el número de veces que se ejecuta dicha iteración (véase la figura
7-2).

Asigna Incrementa
Inicia DaS N por 1
Asigna suma N a S
DaN

Imprime
¿Es
Sí S
Alto
N := loo0?

Figura 7-2

Como puede verse, los valores de N irán desde O (su valor ori­
ginal), 1, 2, ..., 1000, mientras que los valores irán desde O (su valor
original), 1, 3, 6, 10, ..., 500500.
En correspondencia con el diagrama de flujo de la figura 7-2 se
tiene el siguiente programa BASIC.
DIAGRAMAS DE FLUJO 55

10 LET S = O
20 LET N == O
30 LET N = N + 1
40 LET S = S + N
50 IF N = 1000 THEN 70
60 GO TO 30
70 PRINT S
80 STOP..
Algunos programadores prefieren colocar la contrastación relativa
al final de la iteración al comienzo de la propia iteración (véase la
figura 7-3).

Asigna
¿Es
DaS
Inicia
Asigna N>
1aN 10007

Si

Suma N aS Imprime
incrementa S
N por 1

Alto

Figura 7-3

Otros prefieren contar el número de iteraciones de otro modo


(figura 7-4).
;,Puede verse por qué el diamante de decisión en los dos últimos
diagramas de flujo pregunta si N es mayor que 1000? Aun otro
camino se muestra en la figura 7-5.
De ninguna manera es pretensión nuestra, al mostrar todos estos
métodos para realizar conteos, confundir al lector, sino que, por el
56 MARIO V. FARINA

Asigna O Surna
aS NaS
Inicia
Asigna X Suma
1aN

¿Es sr Imprime
N > 1000? S Alto

Figura 7-4

*
Asigna O
aS Suma
Inicia Asigna I NaS
aN

sr Imprime
Alto
S

Suma

1 a N
*
Figura 7-5

contrario, lo que se desea es poner de manifiesto que a veces pueden


existir varios procedimientos diferentes para realizar una misma
DIAGRAMAS DE FLUJO 57

tarea. Cuando se resuelven problemas deben usarse los métodos más


naturales según nuestro propio criterio. De esta manera, con frecuen­
cia se hará necesario reinicializar un contador. Digamos que se
tienen 12 costos de producción en una fuente de ..datos; se desea
sumarlos en conjuntos de tres e imprimir la suma de cada terna
(cuatro respuestas). La figura 7-6 muestra cómo lograr ésto.
Debe observarse que este diagrama muestra una iteración con­
tenida dentro de otra iteración. La viariable N cillenta cuántas ternas
han sido procesadas; K cuenta el número de valores en cada con­
junto.

Inicia Asigna Suma


OaN 1aN

Asigna
DaS Suma Leer

Asigna
laK V

OaK

Suma
¿Es Sí Imprime
VaS
K == 3? S

Imprime
¿Es Sí "final de Alto
N = 4? trabajo"

Figura 7-6
El siguiente programa BASIC corresponde al di~ama de flujo de la
figura 7-6.
58 MARIO V. FARINA

10 lJET N == O
20 l,ET N == N + 1
30 lJET S == O
40 LET K == O
50 I~ET K == I( + 1
60 READ V
70 LJi:T S == S + V
80 Jf' K == 3 l~IIEN 100
90 GO TO 50
100 PRINT S
110 IF N == 4 TI-IEN 130
120 GO Tü 20
130 PRINT "Final de trabajo"
140 STOP
150 DATA 3.25, 6.16,4.94, 7.82,8.01,3.67
160 DATA 2.98,9.06,4.00,6.21,6.91,8.22

Ejercicios

1. Escriba un diagrama de flujo que corresponda al siguiente pro­


grama BASIC.

10 READ N
20 LET S == O
30 LET K = O
40 LET K == K + 1
50 READ V
60 IJET S == S + V
70 IF K == N THEN 90
80 GO TO 40
90 PRJNT S
100 STOP
110 DATA 10,3,6,7,4,8,2,1,6,2,4

2. Supongamos que una lista de datos contiene 10 valores en cinco


conjuntos de dos. El problema consiste en multiplicar los 2 nú­
DIAGRAMAS DE FLUJO 59

meros de cada pareja y sumar los cinco productos resultantes. La


computadora deberá imprimir cada producto individual, así
como la suma de los productos. l~scriba un diagrama de flujo que
muestre cómo ejecutar este trabajo.
3. Escriba un diagrama de flujo que obtenga la suina de todos los
enteros impares de 1 a 99 inclusive.
4. Escriba un programa BA51C de acuerdo al diagrama de flujo
obtenido al resolver el ejercicio 3.
5. Una fuente de datos registra varias edades. (La edad dummy de
final-de-archivo es O.) Escriba un diagrama de flujo que muestre
cómo un programa debería contar el número de edades inferiores
a 12 y el número de edades que son 12 o mayores que 12.
6. Un vendedor ha realizado varias ventas. Este vendedor desea
saber cuántas ventas fueron por $ 100 o menos, cuántas fueron
mayores a $ 100 pero menores a $ 200 Y cuántas fueron mayores
a $ 200. Escriba un diagrama de flujo que muestre cómo debería
ser escrito un programa que suministre esta información.
LECCIÓN 8

.DOS I}ROBJ~I~MAS INSTRUCTIVOS

En esta lección terminamos la parte J de este texto con dos


problemas interesantes y educativos. Estos problemas se dedican a
estudiantes de matemáticas y ciencias. Por tal motivo, aquellas per­
sonas que no posean este tipo de preparación, pueden saltarse el
presente capítulo.
El primer problema consiste en calcular las raíces de la ecuación
cuadrática

-b± Vb2 - 4ac


R.
2a

dados los valores de a, b y e;. Supongamos que los valores de a, b y c


-están disponibles en conjuntos en una fuente de datos. I~a compu­
tadora tiene que contrastar, desde luego, para discriminantes negati­
vos, b 2 - 4ac. Si un discriminante resulta negativo, lo pasaremos
por alto y tomaremos la siguiente ecuación; en cambio, si el dis­
criminante es cero o mayor que cero., la computadora calculará las
raíces RI y R2.
Debemos también asegurarnos de que la computadora contraste
el valor de a contra cero. Si resulta igual a cero., la división será
imposible y el caso debe ignorarse. Ji~l valor de a para final-de-archivo
es 999.
En RASIC, la raíz cuadrada de un número se obtiene haciendo
una llamada a la función en-línea SQR. y colocando el argumento
entre paréntesis. 1-1e aqu í un ej em pl o:
(,]
02 MARIO V. FARINA

LET W = SQR([P + Q]/R)

En este caso, la computadora nos colocará en W la raíz cuadrada de


(P + Q) IR.
Antes de observar el diagrama de flujo de la figura 8-1 el lector
debe tratar de desarrollar uno propio.
El programa puede escribirse de inm-ediato:

Si
Inicia Leer ¿Es
Alto
A, B yC A = 999?

No
Calcular
Rl y R2 a partir de
I -B ± .yB 2 - 4 AC
I 2A
I
I
¿Es Calcula
¿Es No
B2 - 4 AC Rl y R2
A = O? negativo?

Sí Sí

Imprime Imprime
"caso imposible" A, S, C, Rl, R2
A,B,C

F-igura 8-1
DIAGRAMAS DE FLUJO 63

10 READ A, B, e
20 IF A = 999 THEN 90
30 IF A = o TREN 100
40 IF B t 2 - 4 * A * e < o TREN 100
50 IJET RI = (-B + SQR [B t 2 - 4 * A * el) / (2 * A)
60 IJET R2 = (-B - SQR [B t 2 - 4 * A * Cl) / (2 * A)
70 PRINT A, B, C, Rl, R2
80 GO TO 10
90 STOP
100 PRINT "Caso imposible ", A, B, C

110 GO TO 10

120 DATA 6,7,4,3,9,2,8,1,7,999, O, O

Desde luego que los matemáticos no estarán de acuerdo en que


los discriminantes negativos constituyen una situación imposible, y
modificarán el programa de tal manera que calcule raíces complejas.
El segundo problema consiste en obtener el área bajo la curva
senoide desde X = Ohasta X = 1f /2.

x----..........
o ---~~"------+---------_

Figura 8-2

A pesar de que podría usarse un procedimiento de cálculo direc­


to*, tomaremos por ahora un enfoque diferente. Para empezar divi­
diremos el área bajo la curva en tiras horizontales.
-yna vez hecho esto, obtendremos el área de cada tira y calculare­
mos la suma de todas estas áreas. Eso será una aproximación al área
TT/ 2
* El área como f sen X dx. = cos (O). (N. del T.)
o
64 MARIO V. FARINA

buscada. A medida que mayor sea el número de tiras, mayor será


también la exactitud de la aproximación*. En la solución a este
problema haremos la anchura de cada tira igual a 1T /100.
Para-resolver este problema es preciso ~aber cómo la computado­
ra calcula senos de ángulost. El procedimiento consiste en usar la
función en-línea SIN; por ejemplo,
LET D == SIN (M/E)
Puede usarse el siguiente diagrama de flujo (figura 8-4) para re­
solver el problema.

x------.;~~~~-----+------------
o 1t
2

Figura 8-3

Ahora, el programa está casi escrito.

10 I-If':T X == O

20 LET T == O

30LI~T X == X + (3.1416/2)/100

40 IF X > 3.1416/2 THEN 80

SO LI~T A == SIN(X) * ([ 3.1416/2]/100)

60 LJi~T T == T + A

70GOT030

80 PRINT T

90 STOP

-1:. Como es sabido, en cálculo integral se demuestra que cuando el número de

tiras se hace su ficientemente grande como para que cualquier tira sea más pe­
queña que cualquier entero positivo dado, por pequeño que éste sea, el área
obtenida es la exacta. Pero, naturalmente, este proceso de paso al línlite no es
susecptible de ser realizado en una computadora (N. del T.)

t Expn~sados e~tos ángulos en radianes. (N. del T.)


DIAGRAMAS DE FLUJO 65

Calcula
Asigna el nuevo valor
OaX de X a partir
Inicia Asigna 11
OaT 2'
X + 100

Calcula el área
de la tira como
el producto del
No signo de X por la Suma
anchura de la tira AaT
1f
2 .
~aslgnael

Si resu Itado a A

Imprime Alto
T

Figura 8-4

Ejercicios

1. ¿Podría usted perfeccionar el programa precedente en tal forma


que se ejecute más rápidamente? Conserve las tiras con una
anchura de 1f /100.
2. ¿Podría usted perfeccionar el programa anterior de tal manera
que tenga menos instrucciones?
3. ¿Podría usted mejorar el programa en forma tal que el área de
cada tira bajo la curva se calcule en su punto medio, como se
muestra?
4. Dibuje un diagrama de flujo que muestre cómo podría ser escrito
un programa que calcule todos los valores posibles de resistencias
desde Rl hasta R2 conectadas en paralelo. Note que Rl varía. de
66 MARIO V. FARINA

10 a 20 inclusive en etapas de .5, y que R2 varía de 50 a 80


inclusive en etapas de 1. La fórmula que calcula resistencias en
paralelo es:
R = Rl x R2
Rl + R2

5. Escriba un programa BASIe que corresponda al diagrama de flujo


resultante del ejercicio 4.
PARTEn

LECCIÓN 9

fNDICES

Supongamos que se tiene una lista de 20 valores en una fuente de


datos y se desea que dichos valores sean almacenados en memoria en
forma de una lista. En esta lección, los problemas relativos al uso de
listas irán a un nivel de complejidad mucho mayor que el del qt1e
sigue. La figura 9-1 muestra la manera como debe escribirse el dia­
grama de fluj.o.

Asigna Incrementa
Inicia OaK K por 1

Imprime
¿Es sr "final de
K == 207 trabajo"

No

*
Alto
Figura 9-1
67
68 MARIO V. FARINA

La variable V no representa un valor sino un arreglo de valores ­


en este caso, 20. La letra K es un índice que apunta al valor particu­
lar de V a ser accesado. Cuando K es 1, el valor accesado es VI;
cuando K es 2, el valor es V2 ; etc.

10 DIM V(20)
20 LET K = O
30 LET K == K + 1
40 READ V(K)
50 IF K == TREN 70
60 GO TO 30
70 PRINT "Final de trabajo"
80 STOP
90 DATA 6, 3, 9, 4, 7, 6,3, 1,4, 9, 8, 6
100 DATA 1,6,4,7,8,5,2,4

Debe tenerse en mente que este programa ilustrativo es poco


significativa; nQ muestra qué sucede con la lista de 20 valores una vez
que han sido leídos.
Sin embago, este diagrama de flujo y su programa sí muestran
cómo trabaja el Índice. En el ejemplo, 1< es un índice. Este índice
varía de 1 a 20 y, además refiere de V 1 a V20 • Debe observarse que
en el lenguaje BASlC, como en la mayoría de los demás lenguajes de
programación, los índices se anotan entre paréntesis.
Obsérvese también que la instrucción DIM en la línea 10 mera­
mente reserva 20 posiciones en la memoria de computadora para el
arreglo V. La mayoría de los demás lenguajes de programación inclu­
yen instrucciones similares al DIM de BASTe. Por ejemplo,
l"ORTRAN usa DIMENSIÓN: COBOL usa OCCURS: etcétera. No es
necesario además, mostrar sobre los diagramas de flujo la reservación
de espacio para un arreglo.
Nuestro próximo problema consiste en leer 20 valores de edad,
eargarlos en un arreglo (llamado C) y hacer que la computadora
determine cuál es el valor más grande en el arreglo. La figura 9-2
muestra un diagrama de flujo que podemos usar para resolverlo.
Para resolver este problema supondremos arbitrariamente que el
primer e es la edad más grande; entonces contrastaremos las edades
DIAGRAMAS DE FLUJO 69

20 30

Inicia Asigna
Incrementa
OaK
K por 1

No
40 50 70

¿Es sr Asigna
K = 20? e, aL

so 90 100

Asigna Incrementa

OaK K por 1

120 No 130 150

Asigna Sí Imprime
C a L
¿Es
K K = 207 L

160

Alto
Figura 9-2
restantes (del segundo al vigésimo) para determinar cuál de elloB eB el
mayor. Esto es posible, además, manteniendo el valor de la edad en
una sola posición y cambiándole 19 veces su valor inicial. He aquí
el programa:
10 DIM C(20)
20 LET K = O
ESTA PARTE DEIJ PROGRAMA
30 LET K = K + 1
40 IlEAD C(K) LEE 20 VALORES DE EDAD
50 lF K = 20 TIIEN 70 (Continúa en la siguiente página)
70 MARIO V. FARINA

60 GO TO 30
70 LET L = C(l)
80 LET K = 1
90 LET K = K + 1
100 IF C(K» L THEN 120 ESTA PARTEl)EL PROGRAMA
110 GO TO 130 OBTIENE LA EDAD MAs
120 LET L = C(K) GRANDE y LA IMPRIME
130 IF K = 20 THEN 150
140 GO TO 90
150 PRINT L
160 STOP
170 DATA 3, 9, 4, 17,8,4,12,11,17,4,3,
180 DATA 7, 1, 8, 4, 9, 10, 9, 3, 2,

Este programa deberá reportar que la edad más grande en el


arreglo es 17.
Ahora supongamos que se necesita conocer en qué posiciones del
arreglo se encuentra esta edad mayor. Entonces, basta con hacerle un
pequeño arreglo al diagrama de flujo mostrado con anterioridad
(véase la figura 9-3).
La letra W nos dará la posición del arreglo en la cual se encuentra
el valor más grande. Observe que su valor inicial es "1" (dehido a que
CI se asigna inicialmente a L). El valor de W cambia a medida que
varía el valor de la edad asignada aL.
Este programa deberá reportar que la edad máxima en el arreglo
es 17 y que es el cuarto elemento del arreglo. Aquí vemos el pro­
grama BASIC.

10 DIM C(20)
20 LET K = O
30 LET K = K + 1
40 READ C(K)
50 IF K = 20 THEN 70
60 GO TO 30
70 LET L = C(l)
80 LETW = 1
DIAGRAMAS DE FLUJO 71

20

Inicia Asigna Incrementa


OaK K por 1

No
40 50 70

Asigna
Leer ¿Es sr CI a L
CK K =
20? Asigna
1 aW

90 100 110

¿Es
Asigna Incrementa
1aK K por 1 CK > L?

130 No 150 170

Asigna Imprime
CK aL ¿Es Sí
L,W
Asigna K = 20?
KaW

Alto
*

Figura 9-3

90LET K == 1
1OOLET K == K + 1
110 IF C(K) > I~ TIIEN 130
120 GO TO 150
130LETL = C(K)
140 LET W == K
150 IF K == 20 THEN 170
72 MARIO V. FARINA

160 GO TO 100

170 PRINT 1, W

180 STOP

190 DATA 3,9,4, 17,8,4,12, 11,17,4,3

200 DATA 7, 1, 8, 4, 9, 10, 9, 3, 2

Ejercicios:

1. Tenemos que la computadora lee 20 números de catálogo y los


carga en un arreglo (llamado C); entonces debemos hacer que la
computadora clasifique los catálogos de menor a may.or.
Resuelva este problema sin usar más que este arreglo. Escriba el
diagrama de flujo.

2. Escriba el programa BASIC que corresponda al diagrama de flujo


del ejercicio anterior.
LECCIÓN 10

Un programa puede requerir que la información sea buscada en


una tabla. Digamos que en nuestro negocio tenemos un inventario de
artíeulos. Tarnbién tenemos una computadora que registra en su
memoria 1) números de artículos, 2) cantidades en existencia, y
3) precios de venta. Deseamos escribir un programa que nos permita
preguntar por los registros de artículos.
En algunas instalaciones, la computadora puede ser interrogada
vía teletipo. De esta manera, en este ejemplo podemos introducir
números de artículo por el teclado y entonces el programa buscará y
escribirá por el mismo tcclado la cantidad en existencia y el precio de
venta correspondientes a los números de artículos tecleados.
f~n la vida real, el inventario de artículos contendrá miles dc
elementos, pero para nuestros fines digamos que sólo contiene 10.
Sc habrá notado un nuevo símbolo en el diagrama de flujo de la
figura 10-1.

Es el símbolo de entrada manual y se usa para representar una opera­


ción de entrada manual, donde el dispositivo empleado es un teclado
en-línea o teletipo.
A continuación presentamos el programa BASIC relativo al dia­
grama de flujo de la figura 10-1.
73
74 MARIO V. FARINA

70
Lee en memoria

número de

artículo,
Acepta número
Inicia de art(culo N
cantidades en
ex istencia, desde el teletipo
prec ios de venta
20

80 90 100

Asigna Incrementa ¿Es

A OaK K por 1 PK = N?

No
S(
110 130 150
Imprime Imprime

"número de número de artículo,

¿Es Sí
artículo no cantidad en

K == 10? encontrado" ex istencia, precio

N de venta

Figura 10-1

10 DIM P(10), Q(10), S(10)


20 IJ~~T K == O
30 LET K == K + 1
40 RF~AI) P(K), Q(K), S(K)
SO If' K == 10 TlfEN 70
60 GO Tü 30
70 INPUT N
80 1,ET K == O
90 lJET K == K + 1
100 T~' P(K) == N THEN 150
110 IF K == 10 TIIEN 130
120 GO TO 90
130 PRINT "número de artículo no encontrado ~"
DIAGRAMAS DE FLUJO 75

140 GO TO 70
150 PRINT P(K), Q(K), S(K)
160 GO TÜ 70
170 DATA 500,86, 1.25, 430, 160,3.28,610
180 DATA 3,8.45,247,105,2.45,680,11
190 DATA .75,246,92,2.28,199,340,7.05
200 DATA 360,18,1.65,702,84,6.45,225
210 DATA 75,8.65

La instrucción INPUT en BASIC requiere que el programador


teclee uno o más números requeridos. En la línea 70, la computadora
requiere del usuario que le teclee un número de artículo. La máquina
se detendrá una vez que esto haya sucedido.
Probablemente el lector notó que el diagrama de flujo muestra un
símbolo que representa a todas las líneas de la 20 a la 60 en el
programa. Este símbolo es el general de entrada/salida. Es entera­
mente correcto anotar varias operaciones en un solo símbolo si la
tarea mostrada es rutinaria y no causa confusión.
El programa está diseñado para ser detenido "manualmente".
Cuando la computadora requiere un número de artículo, el usuario
puede teclear STOP. En ese caso, terminará automáticamente la
ejecución del programa.
Ahora, tratemos un problema donde intervengan dos listas: ·una
lista de temperatura, T, y una lista de presión,P. Se tienen 15 elemen­
tos en cada lista. Estos elementos se encuentran en la instrucción
DATA del programa en conjuntos (cada valor de temperatura es
comparado contra un correspondiente valor de presión). Los valores
de temperatura están en desorden.
Nuestra primera tarea será la de leer conjuntos temperatura-pre­
sión y luego clasificarlos en secuencia ascendente de acuerdo a las
temperaturas. (Las dos listas varían conjuntamente, de tal manera
que cuando se tengan clasificadas las temperaturas en orden cre­
ciente, también se ten dr árl clasificadas las presiones en la misma
forma). :En la última lección estudiamos cómo clasificar; por con­
siguiente, esta primera tarea podrá ser realizada en forma inmediata.
La figura 10-2 muestra el diagrama de flujo.
76 MARIO V. FARINA

Leer las
listas de Asigna
Incia temperatu ra 14 a K
y presión Asigna
compl,etas OaN

20 70

90 110

Incrementa Asigna Incrementa


A N por 1 OaM M por 1 B

120 150 170

Asigna Asigna

TM aA1
TM + 1 aT M
Asigna
Asigna
PM aA2
PM + 1 a PM

No

190 130 220


Asigna
Al a T M + 1 ¿Es Sí Resta
Asigna M =-K? 1 de K
A a PM + 1
2
No
A

No *
330
Imprime
¿Es Sí las listas
N = 14? TyP
[ A la página 78 ]

Figura 10-2

El programa BASIC es tan grande como esto.

10 DIM T(15), P(15)

20 LET K = O

30 ·L~:T K = K + 1

40 .R~~AD T(K), P(K)

50 lF K = 15 Tll~~N 70

DIAGRAMAS DE FLUJO 77

60 GO TO 30
70 IJET K = 14
80 IJET N = Oj
90 IJET N = N + 1
100 IJET M = O
110 IJET M == M + 1
120 lF T(M + 1) < T(M) THEN 150
130 IF M = K THEN 220
140 GO TO 110
150 LET Al == T(M)
160 LET A2 = P(M)
170 IJET T(M) == T(M + 1)
180 IJET P(M) == P(M + 1)
190 LET T(M + 1) = Al
200 IJET P(M '+ 1) = A2
210 GO TO 130
220 IJET K = K - 1
230 JF N == 14 THEN 250
240 GO TO 90
250 lJET K == O
260 IJET K == K + 1
270 PRINT T(K), P(K)
280 IF K == 15 TI-IEN 330
290 GO TO 260
300 DATA 10,20,100,158,95,120,15,30
310 DATA 80,105,35,62,75,100,85,106
320 {)ATA 40,63,50,75, lOS, 180, 110,200
325 IJATA 20,40,55,80,108,190

Ahora deseamos agregar la porción del diagrama de flujo que nos


enseña qué hacer después que la clasificación haya tomado lugar
(véase la figura 10-3).

IJa codificación HAS1C comienza en la línea 330.

330 lNPUT X
340 LET K == O (Continúa en la siguiente página)
78 MARIO V. FARINA

330 340 350

Acepta el
Asigna Incrementa
valor de tempe­ A
ratura X para
OaK K por 1
buscarlo en la lista

No
390
360 370
Imprime
No ¿Es "no pudo ser
K = 15? encontrado", X

410

I--------------.t~

Figura 10-3

350 LET K = K + 1
360 IF X = T(K) THEN 410
370 IF K = 15 THEN 390
380 GO TO 350
390 PRINT " No pudo ser encontrado", X
400 GO TO 330
410 PRINT T(K), P(K)
420 GO TO 330

El programa se detiene cuando se teclea S1'OP sie.mpre que la compu­


tadora pregunte por un valor de temperatura.

~Jercicios:

l. Supongamos que la ABC Cork Company tiene desarrollada una


tabla que muestra cómo se espera que varíen las utilidades netas
con respecto a las ventas. Los datos están disponibles en una
fuente de datos conjuntos. Por .ejemplo, los conjuntos pueden
comenzar de la siguiente manera:
DIAGRAMAS DE FLUJO 79

24, 124, 32.5, 130, 36, 136, 38, 142, 40, 148,... donde 24,
32.5, 36, etcétera, representan utilidades (en miles de dólares), y
124, 130, 136, etcétera, ~epresentan ve~tas (en millares). Escriba
un diagrama de flujo que muestre cómo un programa podría dar
la utilidad para un valor de ventas dado, el cual entra desde el
teclado de un teletipo. El diagrama de flujo deberá mostrar cómo
un valor de ventas que no se encuentre en la lista de ventas (tal
como 139) podría ser usado para calcular un valor de utilidad
equivalente. Use interpolación lineal.

2. Escriba un programa BASIC general que corresponda al diagrarna


de flujo del ejercicio l. El programa deberá ser capaz de manejar
500 conjuntos de valores de utilidades y ventas. Construya sus
propios datos, pero para probarlos use solamente 20 valores en
las listas de utilidades y ventas. Use -1 para "utilidad" como el
indicador dummy de final-de-archivo.
LECCION 11

NIDOS DE ITERACIONES *

Las lecciones 11 y 12 quizá sean del interés exclusivo de estu­


diantes de ciencias o matemáticas. Por consiguiente, los demás
estudiantes podrán saltárselas.
Supongamos que se tienen dos arreglos A y V', en la forma si­
guiente:
Columnas

2 3 4 5

1, 1 1,2 1,3 1,4 1,5

2,1 2,2 2,3 2,4 2,5 2


2

3,1 3,2 3,3 3,4 3,5 3


Filas 3

4,1 4,2 4,3 4,4 4,5 4


4

5,1 5,2 5,3 5,4 5,5 5


5

Arreglo A Arreglo V

Figura 11-1
Se habrá notado que todo casillero en ambo"B'arreglos está identi­
ficado con índices en la esquina superior izquierda. Esto es, el casille­
ro 1.1 se encuentra en la esquina superior izquierda del arreglo; el
casillero 1.5 St; locáliza en la esquina superior derecha del arreglo,
etcétera. Los índices señalan primeramente la fila y después la colum­
* Iteraciones contenidas dentro de otras iteraciones. (N. del T.)
81
DIAGRAMAS DE FLUJO 83

b) Calcule un total de las cinco sumas e imprímalo. ~mplee un


método que use índices y un nido de iteraciones.

Dado el problema, haga primeramente un esfuerzo por v.erificar el


diagrama de flujo de la figura 11-3.

190
Leer todos
los valores
Inici~1 de los Asigna
Asigna
arreglos OaT
O aJ
AyV

No
Incrementa

Increl1lenta
K en 1

J por 1
Calcula A J,K X ¿Es
Asigna O a S
K = 5?
Asigna O a K
VK.Suma

resu Itados a S

Imprime ¿Es Sí Imprime


B Suma

S SaT
J = 5? T

Alto

Figura 11-3

El correspondiente programa BASIC comienza de esta manera:

10 DIM A(5,5), V(5)

20 LET K O
30 LET K K + 1
40 LET N O
MARIO V. FARINA

50 LET N = N + 1

60 READ A(N ,K)

70 IF N = 5 THEN 90

BOGO TO 50

90 IF K = 5 THEN 140

100 GO TO 30

110 DATA 6, 8, 4, 6, 5, 3, 5, 8, O, 4, 4,3,9

120 DATA 1,9, 0,8, 7, 5, 2, 2,3,2,3,6,

130 DATA 3, 6,5,4,1,

140 LET L = O;

150 LET L = L + 1

160 READ V(L)

170 IF L = 5 THEN 190

180 GO TO 150

Ejercicio

l. Complete el programa a partir de la línea 190. (En el diagrama de


flujo, S es la suma parcial y T la suma de todas las sumas parcia­
les.)
LECCIÓN 12

INICIALIZACION DE VARIABLES

En algunos tipos de problemas, el programa llega a la solución


por aproximaciones sucesivas. Dada la primera aproximación, el pro­
grama la va perfeccionando sucesivamente hasta que se encuenrra la
aproximación con la exactitud deseada. Un ejemplo muy simple se
tiene en el procedimiento que la computadora emplea para obtener la
raíz cuadrada. En este caso, se usa la fórmula *

donde N es el número cuya raíz cuadrada se desea obtener, Go es la


aproximación anterior y Gn la nueva aproximación.
Dado el valor de N, la computadora establece un valor inicial para
la aproximación anterior, Go. Esto lo puede hacer en un gran número
de maneras; una de las más simples es dividir N entre 2.
El programa calcula Gn. Si Gn es igual a Go (manteniendo cierta
tolerancia), entonces el problema queda resuelto. Por el conrrario,
Gn se asigna a Go y se evalúa de nuevo la fórmula. Este procedi­
miento continúa hasta que Gn y Go tienen el mismo valor denrro de
la tolerancia requerida.
I.Ja figura 12-1 muestra el diagrama de flLljO.
Ahora es fácil escribir el programa:
10 INPUT N
20 LET Gl = N/2 (Continúa en la siguiente página)
* La conocida fórmula de Newton para el cálculo numérico de la raíz cuadrada.
(N. del T.)
85
86 MARIO V. FARINA

Acepta N Asigna
Inicia desde el N
teletipo "2 aGo

Fórmula (1)
N
Go + o
G
Gn - - 2 - -1 \
----~\
\
\
Calcula ¿Es
G n a partir IG n ­ Gol sr Imprime
Gn,N
de la fórmula < .001?
(1 )

No

Asigna

G n aG o

Figura 12-1

30 LET G2 = (Gl + [N/Gl]/2)


40 IF ABS (G1 - G2) < .001 THEN 70
50 LET Gl = G2
60 GO TO 30
70 PRINT G2, N
BOGO TO 10

Usted puede ver que el Gl es Go y G2 es G n • (En BASIC, los


nombres variables pueden ser solamente letras simples o simples le­
tras seguidas por simples dígitos.)
La mayoría de los lenguajes de programación constan de alguna
instrucción que calcula directamente raíces cuadradas, de manera que
no es necesario usar el método mostrado. Por ejemplo, se escribirá:

P = SQRT (N) en FORTRAN


LET P == SQR (N) in BASIC
COMPUTE P = N ** .5 in COBOL, etcétera.
DIAGRAMAS DE FLUJO 87

Como otro ejemplo, la figura 12-2 ilustra un bien conocido problema


de escaleras:

I.. .I - - - - - - - w - - - - - - ­
Figura 12-2

Dos escaleras descansan en paredes opuestas de un callejón. Una tiene


105 pies de longitud, la otra es de 90. La altura sobre el suelo en el
punto donde se cruzan es de 25 pies. ¿Cuál es la anchura del
callejón?
Dada la fórmula:

hacer un programa que haga una primera aproximaclOll para W,


digamos 50. Luego haremos otras dos aproximaciones, digamos
50 - 10 = 40 Y50 + 10 = 60. Entonces el programa obtendrá cuál
aproximación es mejor (tal aproximación será la que nos dé una
mayor aproximación de 1I y 25). A continuación haremos quc el
programa haga tres aproximacioncs más con hase en la primera eva­
luación. De esta manera, repitiendo el procedimiento se obtendrá la
respuesta.
Supongamos, por ejemplo, que H es más próximo a 25 cuando W
es igual a 60. Bntonces haremos que la computadora selecciones los
88 MARIO V. FARINA

valores 50, 60 Y 70 como las próximas tres aproximaciones de W.


Luego obtendremos para cuál de estos valores H es más próximas a
25, etcétera.
Comenzaremos con un intervalo de longitud = 10 entre cada
aproximación de W. Sin embargo, el programa debería bisectar el
intervalo cuyo punto medio dé la mejor aproximación a 25. El pro­
grama deberá detener la búsqueda del mejor valor de W, cuando H
sea igual a 25 ± .005. La figura 12-3 muestra un diagrama de flujo
que puede ser usado para el cálculo propuesto.

Asigna Asigna
10 a I W-1 a W1
Asigna Asigna 1---0{ A
SOaW W+ 1 aW2

Calcula Y1 e Y2
Calcula
usando W. Calcula H.

Calcula Y1 e Y2
0,01 V 02,
usando W1. Calcula H1.
I--~usando IH - 251,
Calcula Y1 e Y2
IH1-25\V
usando W2. Calcula H2.
IH2 - 251

Asigna Asigna
W1 aW W2aW

Parte jmprime
I por la W
mitad

Figura 12-3
Definiciones.

1 es la longitud del invervalo; inicialmente 10


W es la medida de las tres aproximaciones de W
DIAGRAMAS DE FLUJO 89

Wl es la menor aproximación de las tres aproximaciones de W


W2 es la mayor aproximación de las tres aproximaciones de W
~l
H2
I respectIvamente
tres val?res calculados para H usando W, Wl y W2

glD2 I tres valores absolutos de diferencias de 25 usando H,


Hl Y H2 respectivamente

La ilustración muestra Yl e Y2. Sus valores pueden calcularse,


desde luego, usando el teorema de Pitágoras:

donde

Figura 12-4

Ejercicios.

l. Escriba el programa BASIC que corresponda al diagrama de flujo


de la figura 12-3.
LECCIÓN 13

MANEJO DE ¡,lSTAS

En una lccción previa, discutimos brevementc la búsqucda en


listas. Puesto que la facilidad para la búsqueda en listas es muy im­
portante en programación, exploraremos el tema con mayor detalle.
La figura 13-1 muestra un método simple pcro ineficiente para la
búsqucda cn listas.

Leer Leer N números


Inicial el valor de catálogo y
N cantidades ex isten­
tes (C y QI

Acepta número Asigna


~ de catálogo X Incrementa
para ser buscado
OaK K por 1
en la lista

Imprime
No Sí "número de
¿Es )-_..-jcatálogo no
CK = K? encontrado
en la lista"

Imprime
CK yQK

Figura 1;~-1
91
92 MARIO V. FARINA

He aquí el programa en BASIC:

10 DIM C(500), Q(500)


20 READ N
30 I.AET K = O
40 LET K = K + 1
50 READ C(K), Q(K)
60 IF K = N THEN 80
70GO TO 40
80 INPUT X
90 LET K = O
100 IJET K = K + 1
110 IF C(K) = X THEN 160
120 IF K = N THEN 140
130 GO TO 100
140 PRINT "Número de catálogo ~o encontrado en la lista", X
150 GO TO 80
160 PRINT C(K), Q(K)
170 GO TO 80
180 DATA 10,26,140,27,85,31,63,35
190 DATA 71,38,246,43,49,50,74,53
200 DATA 8,59,233,67,325

Probablemente usted habrá reconocido que éste es un problema


de inventarios muy simple. Los dátos son números de catálogo y
cantidades. Esto es, el artículo que tiene el número de catálogo 26,
muestra 140 en el stock; el número de catálogo 27 muestra 85 en
stock, etcétera.
Nótese que el valor N muestra cuántos conjuntos de cantidades
en el catálogo son usados en el problema. En el ejemplo, existen
solamente 10 conjuntos usados, a pesar del hecho de que la instruc­
ción DIM muestra que podrían ser usados tantos como 500. Los
valores de X que son los números de catálogo a obtener, se aceptan
desde un teletipo.
La anterior no es una manera especialmente buena para la bús­
queda en una lista, debido a que el programa siempre comienza de
nuevo la búsqueda para cada X al comienzo de la lista. Sería mejor si
DIAGRAMAS DE FLUJO 93

los valores de entrada de X se encontraran en secuencia ascendente,


tal como los valores de C. Entonces el programa podría comenzar en
el punto de la lista e donde quedó la última vez. So~amente es
necesario un pequeño cambio en el diagrama de flujo (véase la figura
13-2).

Leer las
Leer el listas
Inicia valor de CyQ
N completas

Asigna Incrementa
OaK Acepta un K por 1
valor para X

No

Imprime
¿Es No ¿Es Sí liNo. Cat. no
CI< = X? K = N? encontrado en
la lista", X

Imprime
CK yQK

Figura 13-2

Un procedimiento particularmente efectivo para la búsqueda en


una lista cuando los valores de entrada están en desorden es la "bús­
queda binaria". La idea consiste en buscar X en el punto medio de la
¡ista, y entonces, si no se encuentra, se dividen las partes restantes de
94 MARIO V. FARINA

la lista por la mitad y así se procede sucesivanlente hasta encontrar


x. Supongamos, por ejemplo, que se tiene una lista de 1,000 valores.
Se necesita obtener el valor 320. Supongamos que la localizació~ 500
de la lista contiene el valor 676. Se sabe que el valor deseado, 320,
debe encontrarse entre las localizaciones 1 y 449 inclusive.
Intente escribir un diagrama de flujo que muestra cómo realizar
una búsqueda binaria. Por simplicidad, incluya solamente 20 conjun­
tos de valores en la lista. Los conjuntos tienen la siguiente forma:

donde C es una lista de números de catálogo y Q es la lista corres­


pondiente de cantidades en existencia. Ambas listas se encuentran en
secuencia numéricamente ascendente. Hagamos que el programa es­
criba un -mensaje si el número de catálogo requerido no se encuentra
en la lista C. El diagrama de flujo se muestra en la figura 13-3.

I~Jercicios.

l. Escriba el programa BASIC para el problema de búsqueda binaria


descrito anteriormente.
DIAGRAMAS DE FLUJO 95

Asigna
Acepta un 1 al
valor para X Asigna
20 a H

Calcula la
No parte entera
de~
2
asigna el
resultado a K
sr sr

Imprime

"No. Cato no
Asigna
encontrado en

la lista", X
K + 1a l

No Asigna
K - 1a H

sr

Imprime
CK yOK *

Figura ] 3-:l
--------------1'

(
i
1,

LECCIÓN 14

MANTENIMIENTO DE ARCHIVOS

En proceso de datos para los negocios, con frecuencia es necesa­


rio actualizar archivos. En la práctica, este proceso puede ser extre­
madamente complejo, pero en esta lección daremos una versión sim­
plificada. Puesto que los archivos se tienen frecuentemente en cinta
magnética introduciremos el símbolo cinta magnética.

Q
Cuando los archivos son leídos, la información se tiene disponible
al programa en unidades completas llamadas registros. Un registro es
un conjunto de elementos de datos relacionados. Por ejemplo, un
registro simple nos dará la afiliación al seguro social de una persona,
su nombre, su año de ingreso, la descripción de su trabajo, salario,
etcétera.
Los programas para aplicaciones en los negocios están ordinaria­
mente codificados en COBOL o PL/l, pero también pueden ser
usados otros lenguajes. Por tal razón, BASIC contiene un conjunto de
instrucciones para el manejo de archivos. Directamente, el lenguaje
no permite el acceso a cintas magnéticas, pero sin embargo éstas
pueden ser simuladas. He aquí el programa BASIC que corresponde
al diagrama de flujo de la figura 14-l.
97
98 MARIO V. FARINA

lO FILES A;B

20 SCRATCH número 2

30 IF END número I THEN 70

40 READ número 1, T, U, V, W, X, Y, Z

50 WRITE número 2, T; U; V; W; X; Y; Z

60GO TO 30

70 STOP

20 30

Prepara archivo
¿Final

de sal ida para


del No

> - - -............ A

la escritura
archivo de
(cancelar en BASle)
entrada?

40 50

Figura 14-1

El archivo A es un archivo maestro. En el programa está referido


como número l. El archivo B es un archivo de salida en blanco. Es el
número 2. Observe que cuando se escribe una instrucción de READ,
todos los nombres de datos en la instrucción están separados por
comas; ell cambio, cuando se escribe una instrucción de WRITE,
~odos los nombres de datos en la instrucción están separados por
punto y coma. Nótese también que como medida de seguridad, se
requiere declarar como SCRATCH un archivo antes de que el progra­
ma escriba sobre él. Finalmente, debe observarse en la línea 30 cómo
se contrasta una condición de "final-de-archivo"
En el ejemplo precedente, no es gran cosa lo que se hace. Un
archivo sobre cinta magnética es leído, registro-por-registro, y a con­
tinuación es copiado sobre otro carrete de cinta. Ahora discutiremos
un problema más significativo. Supongamos que se tiene un archivo
DIAGRAMAS DE FLUJO 99

maestro llamado MAESTRO. Este archivo contiene solamente dos


datos por registro: un número de artículo y una cantidad.Suponga­
mos también que se tiene un archivo de movimientos llamado
MOVTOS. Este archivo contiene tres unidades de datos registro: un
número de artículo, una clave de movimiento y una cantidad. Las
claves de movimiento son las siguientes:

1 signif~ca "este registro es una alta"


2 significa "este registro es una baja"
3 significa "este registro representa un descuento en el stock"

Cuando la clave del movimiento es 1, la cantidad mostrada en el


registro es la cantidad en existencia para el nuevo registro; cuando la
clave del movimiento es 2, la cantidad contenida en el registro es cero
(el elemento será eliminado del stock; además, la información acerca
de la cantidad no tiene sentido); cuando la clavc del movimiento es 3,
la cantidad contenida en el registro es la cantidad a ser descontada
(esta cantidad debe ser sustraída de la cantidad en existencia que
aparezca en el archivo maestro).
En el problema se usa además un tercer archivo llamado NAM,
que significa NUEVO ARCHIVO MAESTRO. Cuando el programa
comienza su ejecución, este archivo debe estar en blanco.
Los registros están archivados en los archivos maestros y de mo­
vimientos en secuencia ascendente por números de artículo. En el
proceso, se leen registros tanto del archivo maestro como del de
movimientos. El programa los confronta de acuerdo con los números
de artículo. Si se detectan números de artículo iguales, el archivo de
movimientos contempla cuando la clave del movimiento es 2 (signi­
ficando baja) o 3 (significando descuento). Si la clave del movimiento
cs 2, el correspondiente registro maestro es eliminado; esto es, no
debe copiarse sobre NAM. Si la clave del movimiento es 3, la canti­
dad mostrada en el registro de movimiento se resta de la cantidad en
existencia contenida en el registro maestro. Entonces, el registro
maestro actualizado se copia sobre NAM. Si la clave del movimiento
no es 2 ni 3 habrá ocurrido un error y el programa desplegará un
mensaje de error.
100 MARIO V. FARINA

Cuando los números de artículo no son iguales, el programa


deberá decidir si la razón es que no existe movimiento aplicable al
registro maestro, o es que un nuevo registro será agregado a NAM. Si
lo primero es válido, el registro maestro deberá ser copiado sin cam­
bios sobre NAM. Por el contrario, si lo último es válido, el programa
deberá copiar el registro del movimiento completo (excepto la clave
del movimiento) sobre NAM, después de haberse asegurado que la
clave del movimiento es 1 (significaildo que este registro será agre­
gado al nuevo archivo maestro). Si la clave del movimiento no es 1,
deberá desplegarse un mensaje de error. El lector deberá trabajar un
diagrama de flujo para este problema antes de referirse al diagrama de
la figura 14-2.

20 30 310

Asigna 9999
Cancelar NAM ¿Final Sí al número de
Inicia (nuevo arch ivo del archivo catálogo en
maestro) maestro? el archivo
maestro

No
De la pá­
gina 101

Jo4------------ic
50 330
¿Final Asigna 9999


archivo de al número de

movimien­ catálogo en

tos? el arch ivo de

movimientos

No
De la pá­
gina 101

60 70

¿Es número
de catá logo en A la página 101
el archivo maestro
== número de catálogo Sí
en el archivo de
movimientos?

Figura 14-2 (Continúa en la página 10 1)


DIAGRAMAS DE FLUJO 101

170
Sí Calcula la
nueva cantidad
en existencia

Sí No

110 150
370 120
Imprime
Alto mensaje de
error, C2, K

~------~t
Copiael

registro en el

archivo maestro

al NAM lnuevo ar­


chivo maestro)

Copia el
registro en el
archivo maestro
al NAM 1nuevo
archivo maestro)
350
Asigna
9999 al
número de catálogo
en el archivo
maestro

A la página 100

Figura 14·2 (continuación)


102 MARIO V. FARINA

El correspondiente programa BASIC aparece como sigue:

10 FILES MASTER; MOVTOS; NAM

20 SCRATCH número 3

30 IF END número 1, THEN 310

40 READ número 1, el, QI

50 IF END número 2 then 330

60 READ número 2, C2, Q2, K

70 IF C1 == C2 THEN 90

80 GO TO 190

90 IF C1 == 9999 THEN 370

100 IF K == 3 THEN 170


110 IF K == THEN 30
120 PRINT "Err. núms. de catálogo son iguales pero";
130 PRINT "Clave de movimiento no es desc. ni baja",
140 PRINT C2; K
150WRITE número 3,CI;QI
160 GO TO 30
170 LET Ql :;= Q1 - Q2
180 GO TO 150
190 IF C2 < CI THEN 240
200 WRITE número 3, CI; QI
210 IF END número 1 THEN 350
220 READ número 1, CI, QI
230 GO TO 70
240 IF K == 1 THEN 290
250 PRINT "Err. núm. MOVTO. CAT. < CAT. MTRO";
260 PRINT "Pero clave MOVTO, NO == 1".
270 PRINT Cl; C2; K
280 GO TO 50
290 WRITE número 3, C2; Q2
300 GO TO 50
310 1,ET CI == 9999
320 GO TO 50
330 LET C2 == 9999
340 GO TO 70
350 l,ET CI == 9999
DIAGRAMAS DE FLUJO 103

360 GO TO 70
370 STOP

En el programa, Cl es el número de artículo que aparece en los


registros del arc~vo maestro; C2 es el número de artículo que apare­
ce en los registros del archivo de movimientos. De la misma manera,
Ql y Q2 son las cantidades que aparecen en los registros del archivo
maestro y los del archivo de movimientos, respectivamente. Los regis­
tros del archivo de movimientos también muestran la unidad de datos
K, que representa la clave del movimiento.
Ql se calcula en la línea 170. Representa la nueva cantidad en
existencia a ser escrita en los registros del nuevo archivo maestro. Su
valor se calcula solamente cuando los números de artículo de los
registros coinciden y, además, cuando la clave del movimiento es 3.
Observe que cuando tanto el archivo maestro como el archivo de
movimientos encuentran su final, el número de catálogo conservado
en la memoria para cualesquiera de los archivos es 9999. Este número
es un número de catálogo dummy mayor que cualquier número de
catálogo real. El programa se detiene cuando el número de catálogo
del archivo maestro en memoria equivale al número de catálogo en
memoria del archivo de movimientos y ambos números de catálogo
son iguales a 9999.
En el programa, la nomenclatura completa es la siguiente:

C1 número de catálogo, archivo maestro


C2 número de catálogo, archivo de movimientos
Q1 cantidad en existencia, archivo maestro
Q2 cantidad en existencia, archivo de movimientos
K clave del movimiento
1 nombre del archivo maestro (MAESTRO)
2 nombre del archivo de movimientos (l\1üVTOS)
3 nombre del nuevo archivo maestro (NAM)
RESPUESTAS

LECCIÓN 1

1.

Calcula Imprime la
Inicia
5 X 8 respuesta

Alto

2. La flecha entre los bloques CALCUI.JA e IMPRIME apunta en


forma errónea.
3. J~as flechas entre los bloques CALCULA e IMPRIMJi~, e IMPRIME
y ALTO apuntan en forma errónea.

4.

Imprime la
Inicia Calcula respuesta
2X6

Alto

105
LECCIÓN 2
1.

Calcula
Asigna .15 X M
Inicia - 2.00 a M -­ Asigna el 4-­
resu Itado a e

f
~
Imprime -:; Incrementa
MyC M por.10

2.

Inicia ­ Asigna
O aS
- Asigna
OaK

Imprime
Incrementa
K por 1
- Suma
KaS
- S

---'"

3. La flecha debería Ir de IMPRIME P a INCREMENTA EL


VALüR DE P EN l. Tal como se encuentra, imprimiría sola­
mente números l.
107
108 MA.RIO V. FARINA

4.
Calcula
.075 X L
Inicia Asigna
Asigna el
1,000 a L resultado
al

Incrementa
L pQr 100
LECCIÓN 3
l.~----- Calcula
Inicia Asigna M X .10
1.00 a M Asigna el
resultado
aD

Incrementa No
M en .10

Alto

2.

Inicia Asigna
OaM

No ¿Es No
T< Asigna
TaM
M?

Sí Sí

Imprime
"núrneros en Alto
secuencia"

10 l,ET M == O
20 Il~~AD T
30 IF T 9999 TI1EN 70
40 ]Ji-' T < M TIIEN 80 (C ontinúa en la siguiente página)
109
110 MARIO V. FARINA

50LETM = T

60GO TO 20

70 PRINT "~Números en secuencia"

80 STOP

90 DATA 3014, 3029, 3083, 4017, 4044, 9999

3.

Asigna
OaT Lee la
Inicia cal ificaci6n
Asigna
(S)
Oae

Suma Incrementa
SaT e por 1

Imprime Alto
A

10 LET T = O
20 LET C = O
30 READ S
40 IF S = 999 THEN 80
50 LET T = T + S
60 LET C = C + 1
70 GO TO 30
80 LET A = TIC
90 PRINT A
100 STOP
110 DATA 55, 60, 65, 70, 75, 80, 85,90,95, 100, 999
DIAGRAMAS DE FLUJO 111

Leer
X, Y yZ

¿Es sr Imprime
X> X
Z?

No

10 READ X, Y, Z

20 IF X = 999 THEN 120

30 IF X > y THEN 70

40 IF Z > Y' THEN 80

50 PRINT Y

60 GO TO 10

70 IF X > Z THEN 100

80 PRINT Z

90 GO TO 10

112 MARIO V. FARINA

100 PIlINT X

110 GO TÜ 10

120 STOP
130 DATA 2, 4, 6,8,7,9,8,4,3,5,8,3,999, O, O
LECCIÓN 4

1.

Asigna Asigna
Inicia
10 a P 1 aQ

Calcula
P X Q Imprime
Asigna el P,QyT
resultado
aT

No

Incrementa
Q por 1

10LETP = 10

20 LET Q = 1

30 LET T = P * Q

40 PRINT P, Q, T
(C ontinúa en la siguiente página)
113

114 MARIO V. FARINA

50 IF Q = 20 THEN 80

60 LET Q = Q + 1

70GO TO 30

80 STOP

3.

O
Conector Entrada/Salida Proceso

( )

Decisión Documento Terminal


LECCIÓN 5

l.

Asigne
OaM

Imprime

¿Es Sí "el valor

M> máximo", M

A?

No

Asigne
AaM

2. Si.

II!;
]] 8 MARIO V. FARINA

d) el final-dc-arehivo se contrasta en la línea 40

e) las variables se inicializan en las líneas 10 Y 20

3.

Asigna Lee
OaS e

¿Es No
A CZ Suma
CaS
25.00?

Sí Sí

Imprime
S
*

10 JJ~T S == O
20 l{J~¡\D e
30 ll~' (: == o rrlLEN
70
40 ]]¿' (: <
25.00 Tll]~:N 20
==
so JJI~T S == S + e
60 (;0 Tü 20
70PJtlNT s
80 STOP
90 I)A1'A 25.50, 26.00, 2a.OO, 20.00,40.00, o
LECCIÓN 7

z
/.

( Inicia

>-/ Lee
N
/
~I
Asigna
OaS
Asigna
OaK
~
Suma Lee
Suma

1a K V
VaS

Sí Imprime
S Alto

2.
Asigna

Inicia QaT
Suma
Asigna
1aC
OaC

Multiplica
¿Es No Lee X X Y
A C>
XeY Asigna el'

5? resultado

a P

Si

Imprime Imprime
Sume
T P

PaT

Alto

119
120 MARIO V. FARINA

3.
Asigne
OaS Suma 2
Asigna a 1
-1 a, I

Imprime
Sume
S laS

4.
10 LET S = O
20 LET 1 = -1

30 LET 1 == 1 + 2·

40 IF 1 > 99 THEN 70

50 LET S = S + 1

60GO TO 30
70 PRINT S
80 STOP

5.
Asigne

OaA
Lee
Asigne e
OaB

¿Es Suma
1a B
A
e = O?

Imprime Sume
AyB laA
DIAGRAMAS DE FLUJO 12]

10 lJi:T A == O
20 lJ~TB == O Nota:
30 I{I~AI) e A contiene el número de eda­
40 rF (: == o TIIJ1:N 100 des que son iguales o mayores
50 lJi' f: > 12 l1fl~:N 80 que 12. l~ contiene el número
60 LET Il == I~ + 1 de edades rnenores que 12.
70 CO TO 30
80 JJ~:T A == 1\ +
90 CO TÜ 30

100 PI{T NT A,ll

110 DATA 2,13,4,6,24,45, ],7,15,16,6, O

Asigne O a L
6.. Asigne O a M
Asigne O a N

Sume
1aN

10 IJ~:l' J~ == O Nota:
20 JJET M == O 1J contiene el número de ven­
30 J.~:T N == O tas que son menores o iguales
40 1111:AD S a $ 100; ]\1 contiene el número
50 l~' S O TlI~:N 140 de ventas que son mayores que
60 Jf' S < == 100 TlfI~N 100 $ 100, pero menores o iguales
7011 S < == 200 T}II~:N 120
1'
a $ 200; N contiene el 'núme­
80 lJ]~T N == N + ] ro de ventas que son mayores
90 CO 'fO 40 que $ 200.
100 LJ~:T L == J.J +
110 G() Tü 40
120 ILET M == Nl + 1
130 Ce) 're) 40 (C:ontinúa ~n la siguiente página)
122 MARIO V. FARINA

140 PltTNT L, M, ]'~

150 STOP

160 DATA 50, 110,210,150,75,250,600, O

LECCIÓN 8

l. 10 LET X = O
20 lJET T =,0 Nota:
30 LET S = (3. 1416 / 2) / 100 El programa corre más rápido
40 l~f:T Z = 3.1416/2 debido a que ~ /100 Y 1T /2 t;on
50 IJET X = X + S calculados una sola vez.
60 IF X > Z THEN 100
70 IJET A == SIN(X)*S

80 l~~~T T = T + A

90 GO TO 50

100 PRINT T

110 STOP

2.
10 IJET X := O

20 IJ~~T T == O

30 lJ:~~T X == X + (3.1416/2)/100

40 IIr X > 3.1416/2 TIIEN 80

SO LET T = T + (SIN(X) * ~3.1416/2)/l OO~

70 GO 1'0 30

80 PRINT T

90 STOP

3.
1O lJ~~T e == o
20 LI1~T T == o «~ontinúCJ en la
30 lJF:T P == (3.1416/2)/100 siguiente página)
124 MARIO V. FARINA

40 lJI~T X P/2
50 LET A SIN (X) * P
60 LJ~T rr T + A
70 LI~T e e+ 1
80 IF e == 100 TIlEN 110
90 IJET X = X + P

100 GO TO 50
110 IlIlINT T
120 STOP

4. 10 30
Calcu le
Asigne
Inicie
OaC ~ / 100
Asigne
Asigne el
OaT
resu Itado a P

40 50 60

Calcule Calcule

P/2 sen (X) x p


Suma
Asigne el Asigne el
AaT
resultado resultado

aX aA

70 90 110

Sume Imprime
Sume
1aC P a X T

80
120

¿Es No
Alto
C == 1007

:J. 10 LErr 1{2 == 50


20 L~:T ({, 1 == 10
;~O 11 Errll == (1{' I * It2)/( Jt 1 + It2)
40 Plll Nrr lt~ l{, 1, Il2
50 LET lt 1 == 1t 1 + .;-)
DIAGRAMAS DE FLUJO 125

60 lI~' ltl > 20 TII~~N 80

70 GO TU 30

80 LJi:T Il2 == !t2 + ]

901 Ji' lt2 > 80 TI IJ~N 110

100 GO TU 20

110 STOP

10 20

Asigne Asigne
Inicie 50 a R2 10 a R 1

30 40 50

Comp~ta
Rl X R2 Imprime
Incremente
Rl + R2 R,Rl,yR2 R 1 por .5

Asigna el
resu Itado a R

80
90

¿Es
I ncrerne nte

R2 por 1
R2 > 80?

No Sí

110

A Alto
LECCIÓN 9
l. 20 40
1.
Asigne
OaD Sume
Asigne 1a K
OaK

No
50 80
60

Lee ¿Es Asigne


CK K == 20? Sí C1 a S

90 110
120
Asigna 1
Incrementa ¿Es
aW
Asigna 1 K en 1 CK <
S?
aK

D
No
180 190
160

¿Es sr Imprime Asigne


K == 207 S 999 aCW

1?7
128 MARIO V. FARINA

200
210
230

Sume Es Sí
1a D O == 20?

140 150

Asigne Asigne
CKaS KaW

] O 1)1M (:( 20)


20 I Jli:T 1) == O
30 LI~T K == O
40 LI::1' K == K + 1
50 ltJ~:¡\D C(K)
601 J1' K == 20 rrlf~~N 80 Nota:

70 CO Tü 40 S re presenta el valor más

80 L~:T S == C(I) pequeño; W significa cuál va­

90 LI~rr W == 1 lor de la lista es el más pe­

100 LET K == 1 queño. La lista se explora 20

] 10 LI~T K == K + ] veces; D cuenta el número de

12011·' C(K) < S Tlf~:N 140 veces.

130 GO TO 160
140 Ll~:l' S == C(K)
150 LI~T W == K
160 IF K == 20 Tlf~:N 180
170 CO TO 110
180 PltTNT S
190 LET C(W) == 999
200 LI~T D == D + 1
210IF D == 20 TI-II~N 230
220 CO TO 80
230 STOP
240 I)ATA 3,9,4,17,8,35,12, JI, 42,5,6
250 DATA 7,1,13,90,10,22: 2,14,44
130 MARIO V. FARINA
De la página
140 260
anterior
Imprime
sr "ventas",
SK "utili­ ~<- A la página 129
dad~s", PK

No
150 160 170
Calcule
IS
IN -sKI X:;:>L

No Asigne
asigna el XaL
?

resu Itado a X

Sí A la página 129

190 200 210

Calcule Calcule Calcule


PK - PK - 1 N - SK-1
SK - SK -1
Asigne el Asigne el t----~ O
Asigne el
resultado resultado
resu Itado a A
aS aC

220 230
240
Calcule
C X B Calcule
Imprime
-A- PK -1 + y "ventas" N
Asigne el Asigne el lIutilidade~lI, Z
resultado resu Itado a Z
aY A la página 129

2. 10 DIM P(500),S(500)
20 I~ET C = O'
30 lJET C = C + 1
40 RF:AD P(C), S(C)
50 If' S(C) = -1 THEN 70
60 GO TO 30
70 I.JF:T C = C - 1
80 INPUT N
90 LET I~ = 9999
100 I~ET K = O
110 IJET K = K + 1
120 IF N > S(C) THEN 280 (Continúa en la
130 IF N < S(l) THEN 280 siguiente página)
DIAGRAMAS DE FLUJO 131

140 IF S(K) = N THEN 260


150 LET X = ABS[N - S(K)]
160 IF X > = L THEN 190
170 LET L = X
1.80 GO Tü 110
190 LET A = S(K) - S(K - 1)
200 LET B = P(K) - P(K - 1)
210 "LET C = N - S(K - 1)
220 LET Y =: (C * B)/A
230 LET Z == P(K - 1) + Y
240 PRINT "Ventas"; N, "lJtilidades"; Z
250 GO TO 80
260 PRINT "Ventas"; S(K), "Utilidades"; P(K)
270 GO TO 80
280 PRINT "Valor de ventas fuera de rango"
290 GO TO 80
300 DATA 24, 124,32.5,130,36,136,38,142
310 DATA 40,148,45,150,50.5,170,58,178
320 DATA 62,183,66,190
330 DATA 70,193,73,198,80,200,85,205,88,209,92,212
340 DATA 97,216,100,200,105,215, 111,225,0,-1
LECCIÓN 11

1. 190 LET T == O
200 LET J == O
210 LET J == J + 1
220 LET S == O
230 LET K == O'
24iO LET K == K + 1
250LETS == S + [A(J,K)*V(K)]'
260 IF K == 5 THEN 280
270 GO TO 240
280 PRINT S
290 LET T == T + S
300 IF J = 5 TIIEN 320
310 GO TO 210
320 PRINT T
330 STOP

133
LECCIÓN 12

10 LET 1 = 10

20 LET W = SO

30 LET Wl = W - 1

40 LET W2 == W + 1

50 JJ~-:TYl = SQR (105 t 2 - Wt2)

60 LETY2 == SQR (90t2 - Wt2)

70 LET H = (Yl * Y2)/(Yl + Y2)

80 I~ET Yl == SQR (105t2 - Wl t2)

90 I~ E T Y2 == SQR (90 t 2 - Wl t 2)

100 LET III == (Yl * Y2)/(Yl + Y2)


110 LETYl == SQR (105t2 - W2t2)
120 LETY2 == SQR (90 t2 - W2 t2)
130 LET H2 == (Yl * Y2) / (Yl + Y2)
140 I~ET D == ABS (H - 2S)
ISO LET DI == ABS (Hl - 2S)
160 LET D2 == ABS (1-12 - 2S)
170 IF D < DI TI-IEN 210
180 IF IJl < D2 THEN 230
190 LETW == W2
200 GO TO 30
210 IF D < D2 THEN 2S0
220 GO TÜ 190
230 LETW == Wl
240 GO TO 30
2S0 IF D < .00S THEN 280
260 LET 1 == 1/2
270 GO TO 30
280 PRINT W
290 STOP
135
136 MARIO V. FARINA

10 DIM C(20), Q(20)


20 LET K = O
30 LET K = K + 1
40 READ C(K), Q(K)
50 IF K = 20 THEN 70
60 GO TO 30
70 INPUT X
80 LET L = 1
90 LET H = 20
100 IF H < L THEN 200
110 LET K = INT [(L + H)/2l
120 IF C(K) < X THEN 160
130 IF C(K) = X THEN 180
140 LET H = K - 1
150 GO TO 100
160 1.ET L = K + 1
170 GO TO 100
180 PRINT C(K), Q(K)
190 GO TO 70
200 PRINT "Número de catálogo no encontrado en
existencia ", X
210 GOTO 70
220 DATA 1, 10,2,20,3,30,4,40,5,50,6,60,7,70
230 DATA 8, 80, 9, 90, 10, 100, 11, 110, 12, 120, 13, 130
240 DATA 14,140,15,150,16,160,17,170,18,180
250 DATA 19, 190,20,200
INDICE ALFABÉTICO

Anotación, símbolo de, 42-43


COBOL, método para calcular ralZ

Archivo, cinta magnética, 97-100


cuadrada, 87

Archivo, final de, símbolos en diagra­ COBOL, nombres de párrafo, 21

mas de flujo, 42-44


COBOL, su uso en proceso de datos

Archivo, mantenirniento, 97-103


para los negocios, 97

~rchivo, problema, 99-103


Codificación, tareas de, su representa­

Area bajo la curva senoide, 63-64


ción símbolica, 34

Arreglo, uso de, 68-71


Columnas y filas en tablas, 81

Asignación, instrucción de, en BASIC,


Comisión, problema de, ilustración de

18
la estruc tura básica, 68-72

Auxiliares, dispositivos, lectura de


Comisión, problema de, ilustración de

datos desde, 39
transferencia de control, 29·30

Azar, búqueda al, 94


Conceptos básicos, 11-16

Condición de terminación en progra­

B mas, 40

Conector, símbolo, 35-36

Baja, clave de, 98


Confrontación de claves de registros en

BASIC, lenguaje, 14
mantenimiento de archivos, 98-99

BASIC, mensajes literales, 30


Contador, inicialización y reinicializa­
BASIC, nombres de variables, reglas
ción de, 53-57

para formar, 86
Conteo, 53-59

B-Lt\.SIC, números de línea, 21


Conteo, diagrama de flujo, 53-54

BASIC, símbolos relacionales, 26


Control, transferencia de, 25-31

Básicos, conceptos, 11-16


Cruzadas, líneas, eliminación de, 36

Búsqueda al azar, 94
Cruzadas, referencias, y documenta­
Búsqu eda binaria, 93
ción,22

Búsqueda en listas, eficiente, 91-95


Cuadrada, raíz, función en BASIC,

61-62

e Cuadrada, raíz, función en COBOL, 86

Cuadrada, raíz, función en FORTRAN

Cálculo, operaciones, secuencia de, 11


(SQRT),86

Carnbio, clave de, 98


Cuadrática, ecuación, 61

Cinta magnética, símbolo para, 97


Cuerpo de iteración, 53

Clasificación, 75
Curva senoide, área bajo la, 63-64

137

, ,
138 INDICE ALFABETICO

D Entrada, símbolo, manual, 73

Entrada, salida, sÍlnbolo de, 30-40

DATA, instrucción en BASIC, 28-31


Error, mensajes de, en mantenimiento

Datos, lectura de, desde dispositivos


de archivos, 99

auxiliares, 39
Escrita, infoflnación, 30

Datos, proceso de, y mantenimiento


Espacio, problemas de, en la hoja,
de archivos, 97
resolución de, 33-35

Datos, lectura de, 39-44


Estructura básica, diagrama de flujo,

Decisión, símbolo de, 25


47-48

Depreciación, problema de, ilustración

del a transferencia de control, F


26-27

Depuración y referencia cnlzada, 21


Filas y columnas en tablas, 81

Descuento, clave de, 98


Final-de-archivo, contrastación para,

Diagrama de flujo, definición de, 11


98

Diagrama de flujo, estruetl.lra básica,


Final-de-archivo, procesado subsecuen­

47-48
te, 48

Diagrama dc fI ujo, plantilla para elabo­


Final-de-archivo, símbolos en diagra­

rar el, 13
mas de flujo, 42-44

Diagrama de flujo, propósito del, 12


Final-de-iteración, contrastación para

Diagrama de flujo, referencias cruza­


ubicación del, 55-56

das, 21
Flechas, cuidados requeridos en el uso

DIM, instrucción, 68
de, 19

DIMENSION, instrucción en FOR­


Flechas, símbolos para conectar proce­

TRAN, 68
sos, 21, 35-36

Discriminantes en ecuaciones cuadráti­


Flechas, su uso con símbolos de deci­

cas, 61-63
sión,25

Di s Po s itivos, auxiliares, lectura de


Flujo del proceso en diagramas de

datos desde, 39
flujo, 14

Documentación y referencia cruzada,


FORTRAN, números de instrucción,

21-22
21

Documento, símbolo de, 14


F()RTRAN, programa para ilustrar la

Dummy, valor, en una instrucción


Ipctura de tarjetas, 40-41

DATA, 30
FC)RTHj\N, uso de la instrucción DJ­

MENSION,68

Dummy, valor, en una tarjeta dc datos,

Frases permisibles en diagramas de

40

flujo, 19-21

Función raíz cuadrada (SQR), 61-62

E
Funeión SIN, 64

Función SQR, 61

Ecuación cuadrática, 61

Edad, problema de la, ilustración del


G
uso de arreglos, 69-72
GO ro, instrucción en BASIC, 21

Eficiente, búsqueda en listas, 91-95

Ejecución de programas, terminación

de la, 21
IF, instrucción en BASIC, 28

Eliminación de líneas cruzadas, 36


Igual, símbolo de, en BASIC, 27

ÍNDICE ALFABÉTICO 139

Iropuestos, problema de, ilustración de


LET, instrucción en BASIC, 18

transferencia de control, 25
Línea, números de, en BASIC, 21

Indicador de final-de-archivo en pro­ Lis ta, búsqueda eficiente en una,

gramas, 44
91-95

Inicia, uso de, 14


Listas, 67-68

Jnicialización, 43-44
Literales, mensajes, en BASIC, 30

Inicialización de un contador de itera­

ciones,53
M
INPUT, instrucción en BASIC, 75

Instrucción, números de, en FOR­ Maestros, archivos, usados en manteni­


TRAN,21
miento de archivos, 99

Instrucción DATA, 28
~lagnética, cinta, símbolo de, 97

Instrucción de asignación (LET), 18


Mantenimiento de archivos, 97-103

Instrucción DIM, 68
Manual, entrada, símbolo de, 73

Instrucción GO TO, 21
Memoria, posiciones de, para arreglos

Instrucción IF, 26
y listas, 68

Instrucción INPUT, 75
Menor que, símbolo en BASIC, 27

Instrucción LET, 18
Mensaje, literal, en BASIC, 30

Instrucción PRINT, 18
Movimiento, clave de, usada en mante­
Instrucción READ, 28
nimiento de archivos, 98-99

Instrucción READ archivo, 98


Movimientos, claves de, en manteni­

Instrucción SCRATCH, 98
miento de archivos, 98

Instrucción STOP, 22-26

Instrucción WRITE, 98
N
Inventarios, probleIna de, ilustración

de búsqueda en listas, 91-92


Negativos, discriminantes, en ecuacio­
Inventarios, problema de, ilustración
nes cuadráticas, 61

de manejo de tablas, 73-75


Nitidez, 33-38

Inventarios, uso de, 73


Nombres de párrafo en COBOL, 21

Iteración, final de, ubicac ión de la con­ Nombres de variables en BASIC, reglas

trastación para, 54-55


para la formación de, 86

Iteración, cuerpo de, 53


Nuevo archivo maestro, en manteni­

Iteración, definición de, 18


miento de archivos, 99

Iteración, inicialización de contadores


Números de instrucción en FOR­

para, 53
TRAN, 21

Iteraciones, 17-24
Números de línea en BASIC, 21

Iteraciones, nidos de, 57,81-84

Iteraciones, papel de las flechas en la


o
formación de, 14-17

OCClJRS, instrucción en COBOL, 68

Operaciones de cálculo, secuencia de,

L 11

Lectura de datos, 39-44


p
Lectura de tarjetas, ilustración de, pro­

grama FORTRAN, 41-42


Párrafo, nomk.res de, en COBOL, 21

140 ÍNDICE ALFABÉTICO

Perforada, taIjeta, símbolo de, 40


READ, instrucción en BASIC, 28-29

Perforadas, taIjetas, lectura de datos


READ, instrucción para archivos en

desde, 39
BASIC, 98

Pitágoras, teorema de, 89


Registros, definición, 98

PL/l, lenguajes de programación, 97


Reglas para la formación de nombres

Plantilla para diagramas de flujo, 13


de variables en BASIC, 86

Posiciones de memoria para arreglos y


Reinicialización de contadores, 57

listas, 68
Relacionales, símbolos, en BASIC, 26

Presión temperatura, problema de,


Reservación de posiciones de memoria,

ilustración del uso de dos listas,


68

75-79

PRINT, instrucción en BASIC, 19


S

Problema de comisiones, ilustración de


Salida y símbolo de documento, 14

la estructura básica, 68-72


Salida/entrada, símbolo de, 30-40

Problema de comisiones, ilustración de


SCRATCH, instrucción en BASIC, 98

transferencia de control, 29-30


Secuencia de las operaciones de cálcu­
Problema de depreciación, ilustración
10,11

de transferencias de control, 26-27


Secuencia de registros en archivo, 99

Problema de impuestos, ilustración de


Secuencia del proceso, uso de flechas,

transferencias de control, 25
21

Problema de inventarios, ilustración de


Senoide, curva, 63-64

búsqueda en listas, 91-93


Senoide, curva, área bajo la, 63-64

Problema de inventarios, ilustración de


Símbolo conector, 35-36

búsqueda en tablas, 73-75


Símbolo de anotación, 42-43

Problema de la edad, ilustración del


Símbolo de cinta magnética, 97

uso de arreglos, 69..72


Símbolo de decisión, 25-26

Prob lema de la sunla de ent~ros, ilus­


Símbolo de documento, 11-14

tración de iteraciones, 54-57


Símbolo de entrada luanual, 73

Problema de las raíces de una ecuación


Símbolo de entrada/salida, 30-40

cuadrática, 61-63
Sí Inbolo de proceso, 12

Problema de mantenimiento de archi­


Símbolo de tarjeta perforada, 40

vo,99-103
Símbolo terminal, 11-12

Problema de la temperatura/presión,
Símbolo de decisión, flechas usadas

ilustración del uso de dos listas,


con,26

75-~9 Símbolo de inicialización, ubicación

Problema de tolerancias, ilustración de


delos,44

soluciones aproximadas, 87-89


Símbolos de transferencias de controi

Procesado, flujo de, en diagramas de


en BASIC, 27

flujo, 14
SQR, función en BASIC, 61

Proceso de datos en los negocios, y


STOP, instrucción en BASIC, 23-28

mantenimiento de archivos, 97
Suma de enteros, Qroblema de la, ilus­
Proceso, símbolo de, 11-12
tración de iteraciones, 54-57

R T
Raíces de una ecuaClon cuadrática,

problema de las, 61-63


Tablas, búsqueda en, 73

ÍNDICE ALFABÉTICO 141

TaIjetas, lectura de, ilustración con un


u
programa FORTRAN, 41-92

Teletipo, su uso en problemas de in­


Ubicación para contrastar final de ite­

ventarios, 73
raciones, 54-55

Temperatura/presión, problema de la,


US Standards, publicación X3.5-1968,

ilustración del uso de dos Jistas,


12

75-79
v

Terminación de la ejecución de un pro­

grama, 21, 40

Variables, nombres de, en BASIC, re­

Terminal, símbolo, 11-12

gias para la formación de, 86

Tolerancias de resultados requeridos,

85
w
Trabajo, condición de tenninación, en

programas, 40

Transferencias de control, 25-31


WRITE, instrucción en BASIC, 98

S-ar putea să vă placă și