You are on page 1of 30

DIAGRAMAS DE FLUJO

Un Diagrama de Flujo es la representacin grfica de los pasos a seguir para lograr un objetivo, que habitualmente es la solucin de un problema. Por Logical se entiende, en algunos libros, a la componente lgica de un programa y que se puede representar en un diagrama de flujo o de otra forma. De acuerdo a lo anterior, la componente lgica de un programa se puede expresar en un diagrama de flujo, en un programa estructurado, en un programa codificado en un lenguaje de programacin, o de alguna otra manera.

ELEMENTOS E INSTRUCCIONES A USAR EN UN DIAGRAMA DE FLUJO


A continuacin se detalla y establece lo que se puede hacer en un diagrama de flujo y como indicarlo exactamente. Lo que no se indica en esta parte no puede asumirse que se puede hacer, aunque parezca muy lgico y natural que pueda hacerse. Ms an, en la solucin de los problemas slo debe usarse lo que se indica a continuacin, a menos que expresamente para un problema se indique alguna instruccin u operacin nueva a usar en su solucin. I . CONSTANTES Por constante numrica se entiende un nmero, y se representa por su smbolo habitual en base 10. Son constantes numricas: 12 13.5 0 3.14159 Observe que se usa punto y no coma para la parte decimal de un nmero. Por constante alfanumrica se entiende un conjunto de caracteres alfabticos o numricos de nuestro uso habitual; es decir las letras del alfabeto, los diez dgitos, los smbolos de puntuacin habitual, operaciones matemticas, y otros smbolos. Una constante alfanumrica se expresa dejando ese conjunto de caracteres escrito entre comillas dobles. Son constantes alfanumricas: "INGENIEROS" "El promedio vale = " " **2+ " " X(i) = " II. VARIABLES Por variable se entiende una cantidad a la que se alude por su nombre y no por su contenido, ya que su contenido seguramente cambiar a medida que el programa se vaya ejecutando. El nombre de una variable ser de a lo ms 2 letras o dgitos y el primer carcter debe ser letra. Los siguientes son nombres de variables correctos: SU X2 T I TT X Y, no son correctos los siguientes: SUMATORIA 2X 21 *I TT T+ Cada variable tendr su ubicacin en la memoria principal del computador, lugar en que se almacenar el contenido que ella tiene. As, cada variable tiene una direccin en la memoria del computador; de conocer y manejar esa direccin se encarga el sistema operativo. Nosotros conocemos y aludimos a esa zona por el nombre que le hemos dado. Tambin es claro que la forma como se almacena el contenido de una variable en la memoria del computador depender del valor que almacena esa variable, si es numrico o si es alfabtico, lo que se estudia en el captulo: "REPRESENTACIN INTERNA DE DATOS" III. PROPOSICION DE ASIGNACION La forma de una proposicin de asignacin es: a=b donde b es una expresin permitida, y a es el nombre de la variable donde se dejar el valor resultante de evaluar b.

Por expresin permitida se entiende a aquella expresin matemtica que ocupa las operaciones y funciones nombradas como existentes, y escritas de la forma que para ellas se seala, respetando as la sintaxis en cada instruccin. El signo igual, " = ", de a = b tiene el sentido de asignar a la variable a el valor que resulte de evaluar la expresin permitida b. Es decir, a = b tiene el sentido: a b que no es la misma definicin usada en matemticas para el signo: = . El computador, al ejecutar una proposicin de asignacin evala la expresin del lado derecho del signo igual con los valores que en ese momento tengan las variables ah ocupadas. As, la expresin entregar valores probablemente distintos en las diversas ocasiones que por programa se evale esa expresin. Las siguientes son proposiciones de asignacin correctas, A = 2.5 TO = 1 + XT I=I+1 Y no son correctas las siguientes: A+B=C 20 = 16.2 + 3.8 AL = (AT+3.4) / 110.302 IV. OPERACIONES MATEMATICAS Se tiene las siguientes funciones matemticas disponibles, con el smbolo y significado que se indica a continuacin para ellas. + suma resta * multiplicacin / divisin No deben quedar dos operaciones matemticas juntas en una proposicin de asignacin. RE = 156.45 + - 1678.12 (esta mal) RE = 156.45 + (-1678.12) (esta bien) Los parntesis a usar, si se necesitan, deben ser redondos y cuantos sean necesarios. V. FUNCIONES MATEMATICAS En Programacin se tendr las continuacin. SQR EXP LOG SIN ABS siguientes funciones matemticas con el smbolo y definicin dado a raz cuadrada exponencial con base e logaritmo natural, base e seno trigonomtrico, argumento en radianes valor absoluto

Para usar una funcin matemtica se escribe su nombre en una proposicin de asignacin y entre parntesis redondo el argumento. Argumento de una funcin matemtica es la expresin sobre la cual dicha funcin se aplica. Ejemplos de uso correcto de una funcin matemtica A = 1 + SQR(25) TR = A + B * LOG(1 + 2.78 / XX) FS = 1 + X*SIN(4.5 + R)/(1.898 + DE * DE) Uso incorrecto Uso correcto FR = 1 + X + XSQR(C) FR = 1 + X + X*SQR(C) S = A + B/LOG(2.99+SIN(CD) S = A + B/LOG(2.99+SIN(CD)) T = ABS (a+ C*D) T = C*D A+ Si al evaluar una expresin se usan funciones y su argumento es inadecuado, el programa se caer. Es decir, el computador cancela la ejecucin de ese programa indicando la instruccin donde tuvo problemas. Esto ocurre cuando se calcula, por ejemplo, raz cuadrada de un nmero negativo, logaritmo de cero o de un nmero negativo, o bien una divisin por cero. Se cancelar la ejecucin del programa a menos que previamente se le hubiese indicado que hacer en ese caso.

VI. OPERACIONES LOGICAS Para comparar el contenido de dos variables, o de una variable con una constante, se tiene los siguientes smbolos con el significado que para ellos es habitual en Matemticas, para formar proposiciones lgicas simples y luego proposiciones lgicas compuestas. < menor que > mayor que <= menor o igual que >= mayor o igual que = igual que <> distinto de Conectivos lgicos Para formar proposiciones lgicas ms extensas, llamadas expresiones lgicas, se tiene los conectivos lgicos: Y, O; cuya tabla de verdad es la que en Lgica Matemtica se conoce, y se indica a continuacin := Y Conjuncin := O Disyuncin P Q P Q P Q V V V V V F F V F V F V F F F F Ejemplos de proposiciones lgicas permitidas: I <= 200 B*B >= 4 * A * C I1 >= 100 J1 >= I1 TR = DE (ER >= 67 ER <= 100) Proposiciones lgicas no permitidas 10 < X < 12 debe ser: 10 < X X < 12 A B <=10 debe ser: A <= B B <= 10 X <2 TR > -12 Z = 56 falta que asocie las 3 proposiciones. (Ambigedad) Para formar expresiones lgicas ms complejas, formadas por varias proposiciones, se puede usar parntesis redondos, y se considerar que son indispensables cuando su ausencia deje una expresin lgica ambigua, es decir cuando asociando de una manera o de otra puede dar un valor de verdad final diferente. VII. LECTURA Para leer uno o varios datos e incorporarlos al programa, se usar la instruccin de lectura, representada por el smbolo de la lectora de tarjetas y adentro el nombre de las variables en que se almacenarn los datos ledos. La lista de variables a ser ledas Ejemplos NO, AP, N1 N2, N3, N4

A, B, C

En el primer ejemplo se lee slo un valor y ste queda en la variable que en ese programa se conocer como N. En el segundo ejemplo, se lee 3 valores que quedarn en las variables A, B, C donde el primer valor ledo queda en A, el segundo en B, y el tercero en C. En el tercer ejemplo se leen 6 variables que pueden ser el nombre, el apellido y cuatro notas de un alumno. En una instruccin de lectura, el primer valor que se lee se almacena en la zona de memoria destinada a la variable cuyo nombre es el primero que se anota en la lista de variables, y as sucesivamente con el segundo

nmero y los dems. Si se nombran 5 variables, leer 5 valores alfabticos o numricos segn corresponda, y si hay mas valores disponibles para leer slo leer 5. VIII. IMPRESIN Para imprimir valores calculados en el programa se usar la instruccin de impresin representada por el smbolo de la impresora, y adentro el nombre de las variables. Lista de las variables a imprimir. Ejemplos M X1, X2, X3 NO, AP, N1 N2, N3, N4 PR

En el ejemplo 1 se imprime un solo valor, que es el que esta en la variable M. En el ejemplo 2 se imprimen tres valores, primero el que esta en X1, luego el que esta en X2, y finalmente el que esta en X3. En el ejemplo 3 se imprimen, supongamos: el nombre, el apellido, 4 notas y el promedio de un alumno. *) Sale a impresin el contenido de las variables nombradas en el orden que aparecen en la lista de variables. *) Las variables se escriben separadas por coma, tanto en la lectura como en impresin. *) Como la impresin de variables, sin decir que representan esos valores es rida, se acostumbra a poner mensajes aclaratorios o explicativos de lo que esa variable representa. Estos se indican entre comillas dobles, y lo que est entre esas comillas se imprimir textualmente, que equivale a decir que un mensaje es una constante alfanumrica. EJEMPLOS "suma =", s "El alumno" NO, AP "tiene prom" ,PR

*) Se puede tener una instruccin de impresin slo con mensajes y sin imprimir ninguna variable. Por ejemplo: "Las notas "Nmero del ledas son funcionario todas iguales mal digitado" a ceros."

IX. SIMBOLOS USADOS EN LOS DIAGRAMAS DE FLUJO Los principales smbolos usados en los diagramas de flujo se muestran a continuacin con lo que cada uno indica, y son los que utilizaremos en estos apuntes. a) Ovalo de inicio y trmino b) Flecha de direccin del flujo c) Rectngulo o caja de operaciones operacin Inicio Pare

d) Lectura de datos (smbolo de la lectora de tarjetas perforadas)

e) Impresin (smbolo de la impresora de papel)

f) Caja de decisiones (rombo) SI NO Tendrn 2 salidas posibles, indicadas una por SI y la otra por NO. g) Conectores de salida y conectadores de entrada al flujo

Conector de Salida

Conector de entrada

Con relacin a los conectores digamos que, en un diagrama de flujo pueden haber varios conectores de salida con el mismo nmero, pero debe haber un slo conector de entrada con ese nmero. Es decir, si hay uno o varios conectores de salida con el mismo nmero, en el diagrama tiene que haber exactamente uno de entrada con ese nmero.

222

222

222

222 Un solo conector de entrada

1 o varios conectores de salida. h) Otros smbolos

Disco magntico

Pantalla

Cinta magntica Tambor magntico

TEXTOS

TEXTOS

TEXTOS textos

TEXTOS

X . ALCANCES GENERALES a) El flujo natural es hacia abajo a partir del valo de inicio, o hacia donde indique la flecha de direccin del flujo. b) El flujo natural de ejecucin hacia abajo se puede alterar por: Un salto incondicional, que se representa por las flechas que de la nueva direccin - Un salto condicional, que se representa por una caja de decisiones (rombo) con dos salidas (SI, NO) y adentro la condicin que al ser verdadera, el flujo ir hacia donde dice SI; al ser falsa, ir hacia donde No. Ejemplos DI < 0 NO c) SI A <=1 0 A >0 NO SI

Cuando programe y deba usar un rombo para un salto condicional en un diagrama de flujo "trate Ud. De dejar siempre la salida SI hacia el lado derecho" d) Toda variable que se ocupe al lado derecho de proposicin de asignacin, debe haber sido creada e inicializada antes de esa instruccin. Ejemplo. SU = SU + I * I Para que esta instruccin se realice sin problemas, las variables: I, SU deben existir desde antes (creadas), y tener algn valor almacenado en ellas, (inicializadas). En programacin en general, no supondremos que esas variables en ese momento pueden tener algn valor, como cero por ejemplo.

EJEMPLOS DE DIAGRAMAS DE FLUJO


XI . EJEMPLOS. A continuacin se tiene 7 ejercicios resueltos con observaciones acerca de la solucin de ellos. Luego estn las conclusiones sobre los diagramas de flujo, para continuar con 3 ejemplos resueltos ms. Se termina la parte de diagramas de flujo con ejercicios planteados, y a ser resueltos por el alumno.

1.- Hacer un diagrama de flujo que calcule la suma de los nmeros impares que estn entre 1000 y 5000 Inicio SU = 0 Variables ocupadas: 2 SU I

I = 1001

SU = SU + I

I=I+2

I <= 4999 NO "Suma =" SU

SI

PARE Observaciones. a) La suma que se debe calcular es: 1001 + 1003 + 1005 + ............... + 4999 b) La variable I es la que va tomando los valores: 1001, 1003, 1005, ..........., 4997, 4999 c) Cada valor que va tomando la variable I se va sumando a la variable SU, y se deja en la variable SU. d) La condicin I<=4999 puede quedar I<=5000, y da lo mismo. Tambin puede quedar I>=4999, o, I>=5000; en cuyo caso cambia la posicin de las salidas SI, NO. e) La condicin de trmino es que I sea mayor que 4999. Este diagrama tiene 1 ciclo

2.- Hacer un diagrama de flujo que calcule la suma y el promedio de los nmeros pares menores o iguales que un nmero K que lee al comienzo. Inicio

K SU = 0 I=2 CO = 0

SU = SU + I CO = CO + 1 I=I+2

I <= K NO PR = SU / CO "Suma= " SU "Prom= " PR

SI

PARE Observaciones Ejemplo 2 a) Variables usadas : 5 K SU I CO PR b) La suma a calcular es: 2 + 4 + 6 + ... + K, (K-1). Ser hasta K si K es par, y ser hasta K-1 si K es impar. c) En la variable I se van formando los nmeros pares que se van sumando a la variable SU y el resultado se deja en SU. La variable CO lleva la cuenta de cuantos nmeros pares se han sumado. d) Si el nmero K que lee es el 5, se imprimir: suma = 6 prom = 3 e) Si lee el nmero 5 para K, Cuntas instrucciones ejecuta el computador?

RESP. Son 15; incluida PARE y no incluida INICIO. 3.- Hacer un diagrama de flujo que lea N y calcule e imprima el valor de N! (N Factorial), y luego imprima N indicando si es par o impar. INICIO

N FA = 1 I=1

FA = FA * I I=I+1 SI NO N "factorial es: " FA

I <= N

I=0 9 I=N NO I=I+2 PARE SI N "es par"

I <= N NO N "es impar" Observaciones Ejemplo 3 a) Variables usadas : 3 N

SI

PARE

FA

b) En I se forman los nmeros 1, 2, 3, ........, N y se van multiplicando por FA, quedando en esta variable FA el valor del factorial. Luego I toma los valores 2, 4, 6, ....... y si llega a ser igual a N, es porque N es par, de lo contrario N es impar. c) Se distingue dos ciclos independientes. Cules son?. d) La condicin de trmino es I > N , o, I = N e) Hay una instruccin de lectura, 3 instrucciones de impresin, 2 rombos de decisiones, y, se usan 3 variables y 3 constantes. f) Si el N ledo es nmero 3, sale a impresin: 3 factorial es : 6 3 es impar g) Si el N ledo es nmero 3, Cuntas instrucciones se ejecutan en el computador? ( RESP. Son 22, incluida la instruccin PARE y no incluida INICIO.) 4.- Lea dos nmeros N, M y calcule el valor de la sumatoria:

i+3 .
i=N

i+2

INICIO

N, M N> M NO N<=-3 M>=-3 NO SU = 0 I=N TE = (I+2)/(I+3) SU = SU + TE I=I+1 SI NO "La sumatoria vale: " SU PARE SI N, M "son n. Inadecuados" SI

PARE

I <=M

Observaciones Ejemplo 4 a) Variables usadas : 5 N M SU I TE b) La primera pregunta es porque la sumatoria no tiene sentido si N > M. La segunda pregunta es porque si N <= -3 M >= -3, I tomar el valor -3 y quedar una divisin por cero, cayndose el programa. c) Los trminos de la sumatoria se forman en TE y se van agregando a SU, quedando ah el valor final de la sumatoria. d) Si los nmeros N, M ledos son 1 y 2, imprimir: La sumatoria vale: 1.55 Que es el resultado de la suma : 3/4 + 4/5 e) Si lee 1 para N y 2 para M, Cuntas instrucciones se ejecutan? ( RESP. Se realizan 15 instrucciones, con PARE y sin INICIO.) f) Cunto espacio en memoria ocupan las variables del programa contenido en este diagrama de flujo? ( RESP. 20 bytes, considerando que una variable numrica ocupa 4 bytes en la memoria principal para almacenarse; tamao standard)

5.- Lea dos nmeros N y M, luego calcule la suma y el promedio de los mltiplos de 5 que estn entre ellos, incluidos N y/o M si es que son mltiplos de 5. INICIO

N, M

N <= 0 o N >= M NO SU = 0 CO = 0 I=0 I=I+5

SI

N, M "son n. Inadecuados."

PARE

I< N NO SU = SU + I

SI

PR = SU / CO CO = CO + 1 I=I+5 SI "suma= ", SU "promed.=" , PR

NO

I <= M

PARE

Observaciones Ejemplo 5 a) Variables usadas : 6 N M SU I CO PR b) En la variable I se forman los mltiplos de 5 y cuando son mayores que N los suma a SU y aumenta en 1 la variable CO. Esta variable CO lleva la cuenta de los mltiplos de 5 sumados. c) Por ejemplo, si los nmeros ledos son N=21 y M=37, calcula la suma: 25 + 30 + 35 = 90, y PR= 90/3, saliendo a impresin: suma = 90

promed. = 30 d) Por ejemplo, Si los nmeros ledos son N = 21, M = 24 el programa calcula: SU = 25, y PR = 25. Se puede mejorar este programa de modo que en casos como ste, diga que no hay mltiplos de 5 entre N y M. Cmo lo hara? e) Se puede eliminar el uso de la variable PR, dejando el cuociente en I por ejemplo, ya que I no se ocupa al final del programa. Naturalmente la instruccin de impresin debe quedar: "suma= ", SU "promed.=" , I

PARE

6.- Lea N y calcule el valor de la siguiente sumatoria: Inicio

i!
i =0

N SU = 2 FA = 1 I=2

FA = FA * I SU = SU + 1 / FA I=I+1

I <= N NO "Para N= " N "La suma=" SU

SI

PARE

Observaciones Ejemplo 6 a) Variables usadas : 4 N SU FA I b) La variable I toma los valores 2, 3, 4, ......, N y en FA se forman los factoriales: 2!, 3!, 4!, ......, N!. c) La variable SU se inicializ en 2 para que contenga los 2 primeros trminos de la suma, y con I = 2 calcula el tercer trmino de la sumatoria. d) El valor de la sumatoria N cada vez mayor debe tender al valor: 2.71828 que es el valor de la constante matemtica e. e) Para N grande como 40, 70, 110 o ms, la lgica del programa esta bien, pero la capacidad de almacenamiento de las variables se sobrepasa, producindose lo que se llama "overflow" o "rebalse" de una variable. En este programa se rebalsar la variable FA. f) Si lee al comienzo N <= 0, N=1, o, N=2, el programa imprime: Para N = ...... (ah anotar el valor N ledo) La suma = 2.50 g) Para N = 32 se obtiene la mayor exactitud en los microcomputadores que tienen un BASIC con variables reales de precisin simple con capacidad de 1038. Este nmero N, de la mayor exactitud sin que se produzca rebalse. Esto depende de la versin del lenguaje BASIC que se ste usando. 7.- Distancia a un punto lejano Desde una camioneta que avanza por una carretera recta se descubre un cierto puesto de vigilancia forestal, digamos punto P. Cuando se desplaza con velocidad uniforme, se mide el ngulo de observacin de P en 2 oportunidades: O1 y O2, manteniendo su rumbo y velocidad VE. Teniendo el tiempo T entre las observaciones O1, O2 y los dos ngulos B1, B2 bajo los cuales vio el punto P en tierra, se calcula a que distancia X se encuentra P en el momento de la segunda observacin, la mnima distancia Y a que se pasar de P (o ya se pas), y la distancia D que se recorri entre las 2 observaciones O1, O2. (FIGURA ADJUNTA).

Frmulas A = B2 - B1 D = VE * T / 3600 X = D * SEN (B1) / SEN (B2) Y = X * SEN (B2) Donde: B1, B2: ngulos de observacin medidos en radianes T: Tiempo entre observ. O1, O2 medido en seg. VE: Velocidad constante (K/H) D: Distancia entre O1, O2 (Km.). X: Distancia entre O2 y P (Km.). Y: Mnima distancia a P (Km.).

INICIO 112 "ingrese ngulos de observ. en gr, mi, seg"

G1, M1, S1 G2, M2, S2

"ingrese velocidad en K/H y tiempo en seg." 111 VE, T "ang. 1:" B1 "ang. 2:" B2 "vel.K/H:" VE "t. O1-O2:" T

B1= (G1+ M1/60 + S1/3600) /57.2957

B2 = (G2+M2/60 + S2/3600) /57.2957 "d. O1-O2:" D "d. O2-P:" X "d. minim.:" Y

A = B2 - B1

S = T / 3600 "desea otra corrida? (S/N)"

D = VE * S

X = D*SIN(B1)/SIN(B2) RE Y= X * SIN(B2) RE = "S" 111 NO PARE SI 112

XII . CONCLUSIONES DE PROGRAMACION EN DIAGRAMAS DE FLUJO. Luego de haber visto ya 7 programas cuya solucin se presenta en un diagrama de flujo, y suponiendo que se entendi cada uno de ellos, y que el alumno resolvi algn otro problema similar, se est en condiciones de entender bien las conclusiones que se presentan a continuacin y que dicen relacin con el uso de un diagrama de flujo en la presentacin de la solucin de un problema de programacin. 1. Quien confeccione un diagrama de flujo debe contemplar todas las posibilidades o situaciones que se le pueden presentar a quien ejecutar ese conjunto de instrucciones de ese programa, desde el inicio hasta el final. Si hay una situacin no contemplada y se presenta, el ejecutor (digamos el computador) no sabr que hacer y es impredecible lo que pase de ah en adelante, y en ese caso, si arribara a algn resultado, si es que arriba a alguno, tendr una validez totalmente incierta. Tambin es cierto que debe haber algunos supuestos que deben cumplirse en relacin a los datos que recibe, de otro modo la solucin se vuelve engorrosa por chequear muchas condiciones posiblemente innecesarias acerca de los datos, tenindose eso si un programa ms inteligente. Las instrucciones que se ocupen en un programa deben ser: Conocidas Precisas, no ambiguas. Si se ocupa una instruccin no conocida el programa se cancelar, y el Sistema Operativo enviar un mensaje relativo a la situacin desconocida que se le present al programa mientras este corra. Si alguna instruccin no es precisa, el programa estar malo y obviamente no correr bien. El siguiente diagrama presenta un flujo ambiguo en uno de sus pasos. INICIO N, M, P N <= M NO PA = N N=M M = PA SI

2.

M <= P NO PA = M M=P

SI "ordenados de menor a mayor quedan:" N, M, P

PARE P = PA

Luego de solucionada la ambigedad de una de sus instrucciones, este diagrama de flujo resuelve el problema de ordenar 3 nmeros de menor a mayor. En el diagrama anterior, el flujo es ambiguo luego de la instruccin: M = PA Lo que se quiere hacer luego de esta instruccin es volver a la pregunta: N <= M

que se resuelve borrando un trozo de lnea, quedando as: M = PA

N <= M

SI

De esta forma este diagrama lee 3 nmeros y los imprime ordenados de menor a mayor. 3. Todas las instrucciones tienen una sola entrada y una sola salida, salvo INICIO que tiene solo salida y PARE que tiene solo entrada.

ERROR 4.

INCORRECTO

CORRECTO

Cuando hay una vuelta a una instruccin anterior la flecha debe llegar antes de la entrada a la instruccin, como se indica en la figura anterior. La instruccin de decisin es representada por un rombo, y tendr como cierta una de las dos salidas como el camino a seguir luego de verificar la condicin dada.

Las cajas de decisiones tendrn 2 salidas. Esto es lo que asumiremos en estos apuntes de programacin. Digamos eso si, que hay lenguajes de programacin que tienen saltos condicionales con 3, 4, o ms salidas as: =0 B*B 4*A*C >0 <0 I=5 I=4 I I=1 I=2 I=3

5.

Se debe evitar caer en ciclos (LOOPS) no controlados, o ciclos sin salida lgica. Como ejemplo consideremos los dos diagramas siguientes:

INICIO S=0 I = 10 I=I-1 SI NO S = S + I*I INICIO I=8 S=0 9 I< 13 NO S=S+I I=I+1 SI I=I+1 SI 9 NO PARE PARE El diagrama de la izquierda tiene un ciclo con salida fsica pero sin salida lgica, y el de la derecha tiene un ciclo no controlado al cual ingresa y no sale mas. En el de la derecha tambin es extrao que no imprima algo. 6. El nivel de simplicidad de las instrucciones depende del nivel para el que est preparado el ejecutor, y debera usarse aquellas instrucciones que son mas eficientes en trminos de pasos del programa y tiempo de ejecucin. Al comienzo de estos apuntes se indic qu instrucciones supondremos que el computador conoce y puede realizar. Se indic cmo leer, cmo imprimir, cmo calcular nuevos valores, qu operaciones y funciones conoce, cmo alterar el flujo de ejecucin, etc. Todo ello para estar de acuerdo en qu es lo que sabe o entiende el computador, y como decrselo. Es as como se deduce que no conoce instrucciones como: intercambie A y B ordene de menor a mayor: T, U, V, W Y no puede contestar preguntas como: - A es un nmero primo? - La suma de los nmeros ledos es 0? Si hacemos un programa en un lenguaje de programacin de ms alto nivel, es posible que tengan sentido instrucciones o preguntas como TODAS las anteriores, o como: - Calcule e imprima el promedio de todos los nmeros que ley. - El producto de las matrices A y B, da la matriz identidad?. - Resuelva el sistema de ecuaciones de 22 por 22 que ley. - Qu recta pasa ms cerca, en algn sentido, de los 92 pares de puntos ledos? En los problemas que tienen un alto grado de mecanizacin, es decir son muy estructurados, es ms fcil representar su solucin en diagrama de flujo. Por ejemplo, resolver problemas matemticos cuya solucin

I <= 11

I <= 13

I, S

7.

es algortmica, o problemas de Fsica basados en frmulas y procedimientos, o de alguna aplicacin econmica estructurada, o bien problemas aplicados en la especialidad de Ud. alumno. No ser posible hacer un diagrama de flujo que resuelva problemas donde intervenga completamente el criterio, el gusto esttico, los imponderables, etc. Lo que s es cierto, y es la tendencia, el tener programas que entreguen datos que faciliten la decisin no estructurada disminuyendo el factor de riesgo o grado de incertidumbre que stas decisiones habitualmente conllevan. Si el objetivo de un problema a resolver no es totalmente claro y preciso, pocas o ninguna posibilidad habr de tener solucin, y de representarla en un diagrama de flujo. Por ejemplo: 8. Un programa que lleve a un joven a ser un gran hombre en su vida adulta. En este caso ni el objetivo es claro y preciso, porque Qu es ser un gran hombre?. Un programa que realice la labor de mdico recetando remedios a cualquier enfermo, y prestndole asistencia personalizada. (Habr programas que avancen en este sentido?. Los sistemas expertos).

Las instrucciones de un programa en diagrama de flujo pueden estar destinadas a otro ejecutor diferente de un computador. El siguiente diagrama es para que un joven entregue un recado por telfono a un amigo. INICIO

Levante el fono y espere tono Espere un rato Marque el nmero Cuelgue el fono Marca ocupa do NO Cuando contesten d el recado SI

Despdase y cuelgue el fono

PARE Juzgue el nivel de simplicidad de las instrucciones, en consideracin al punto 6 anterior. Son muy simples o muy complejas? Hay posibilidad de un ciclo sin salida?. Cul es la condicin de trmino?. Enumere algunos supuestos en relacin al nivel de conocimientos que tiene el joven ejecutor de este diagrama, tales como: edad, donde vive, escolaridad, estado de salud, idioma, y otros.

Cmo quedara este diagrama si el objetivo es el mismo y el ejecutor es un pequeo que solo sabe leer y no conoce el aparato telefnico?. Al revs, si el ejecutor es un adulto diestro, el programa puede reducirse a una sola instruccin.

9.

Usualmente hay mas de una estrategia que puede conducir satisfactoriamente a la solucin de un problema. Es as como dos diagramas de flujo que son aparentemente distintos, ambos pueden estar bien en trminos de llegar a la solucin del problema planteado; tambin pueden estar los dos mal, o bien pueden ser mejorables. En general todo programa que resuelve un problema dado es posible de ir mejorndolo, en el sentido de que contemple mas posibilidades, o bien que entregue mas informacin relevante acerca del problema, presentada de mejor manera, o quizs de forma mas expedita y rpida. Los mejoramientos tienen como contrapartida, por lo general, el que los diagramas queden mas extensos, pero harn que el programa parezca mas inteligente.

10. Debe tenerse presente que el computador no analiza ni repara en la lgica del programa, como tampoco se preocupa de ver si las instrucciones que el ejecuta son correctas segn nuestro conocimiento. Slo hace exactamente lo que se le indica! El computador no sabe que lo que calcul corresponde a una sumatoria o a una integral, o a un sueldo lquido a pagar. El computador slo obedece las instrucciones que se le dan y que conoce, el programador sabe el sentido y la interpretacin que tiene el contenido de las variables que el computador tiene en cada momento. Por ejemplo, si el computador tiene la variable PI con el valor 3.14159 en su memoria, y se le da la instruccin: "El nmero e vale : ", PI saldr a impresin: El nmero e vale : 3.14159 que para nosotros es incorrecta, ya que el valor del nmero e es: 2.71828; pero el computador slo obedeci la instruccin que se le dio. Si la instruccin es "sueldo lquido: ", PI, "pesos"

saldr a impresin: sueldo lquido : 3.14159 pesos

11. Cuando el nmero de instrucciones de un programa aumenta, el tamao fsico del diagrama de flujo tambin aumenta mucho, y la representacin de ese programa en un diagrama de flujo se vuelve ineficiente. Por ello, el uso de diagrama de flujo para presentar un programa resulta til para un contacto inicial con la programacin, y luego deben buscarse formas de presentacin de la solucin que sean ms cmodas, y ojal, que se asemejen ms a la forma de un programa escrito en un lenguaje de programacin de alto nivel como lo son: BASIC, FORTRAN, PASCAL, COBOL, etc. XIII . ULTIMOS 3 EJEMPLOS EN DIAGRAMAS DE FLUJO. Los 3 ejemplos siguientes de solucin de problemas representada en diagrama de flujo, son de una situacin muy frecuentemente, cul es la de leer archivos con informacin en registros lgicos de formato fijo. Para ello se debe tener la estructura del registro en cuanto al nmero de campos que tiene, el orden, y la informacin que contiene, y otros detalles. 8.- Lea un archivo con 75 registros lgicos que contienen informacin de los alumnos de un curso y sus notas, en formato: NUMERO Se pide que : NOMBRE EDAD CAST MATEM FISI QUIM HIST ING

Confeccione un diagrama de flujo que entregue un listado con el nombre, el nmero y el promedio de las 6 notas de los alumnos mayores de 19 aos. Tambin, que indique al final cuantos mayores de 17 aos hay.

INICIO TO = 0 I=1

NU, NO, ED, CA, MA, FI, QU, HI, IN

ED <= 19 NO S = CA+MA+FI+QU PR = (S+HI+IN)/6

SI

NO, NU, PR

SI ED > 17 NO "son :" TO "los mayores de 17 aos" I=I+1 NO I <= 75 PARE SI TO = TO + 1

Observaciones Ejemplo 8 f) Variables usadas : 13

TO FI

I QU

NU HI

NO IN

ED S

CA PR

MA

g) La variable TO es el contador de alumnos mayores de 17 aos. h) La variable I es el contador de lecturas. Deben leerse 75 registros lgicos i) j) La variable S es variable intermedia, y puede evitarse su uso. Se ocupan 13 variables; hay 1 ciclo; no es predecible el nmero de instrucciones que se realizarn porque depende de los datos que lea.

k) Los 75 registros lgicos a leer deben tener el mismo formato, de otro modo se producir error de lectura.

9.- Lea un archivo de personal con registros lgicos con formato NUMERO IBM Se pide que : Imprimir un nuevo archivo con los sueldos base reajustados segn el actual sueldo base. Si el actual sueldo base est entre 0 y 15000, se reajusta en un 17%. Si esta entre 15001 y 30000, se reajusta en un 17% los primeros 15000 y en un 19% lo que exceda a 15000. Si el sueldo base es sobre 30000, se reajusta en un 17% los primeros 15000 en un 19% los siguientes 15000 y en un 21% lo que exceda a 30000. No se sabe cuantos R.L. son, pero el ltimo tiene IBM=99999 y no debe considerarse. Imprima al final del nuevo archivo el costo total del reajuste que se esta otorgando de este modo. (Solucin del diagrama de flujo en pgina siguiente) Observaciones Ejemplo 9 a) Variables usadas : 6 RE c) IB NO CF SB NS NOMBRE CARGAS FAM. SUELDO BASE

b) Para reajustar el sueldo base en un 17% basta multiplicarlo por 1.17. SB - 15000 es lo que excede el sueldo base a 15000, y SB - 30000 es lo que excede a 30000. d) El 17% de 15000 es 2550, y el 19% es 2850. As, 5400 = 2550 + 2850, es el reajuste de los primeros 15000 y de los 15000 que siguen. e) f) RE va acumulando el reajuste que obtuvo cada persona. La condicin de trmino es que lea un nmero IBM igual a 99999. No se sabe cuantos R.L. leer, y se sabe que son de formato fijo.

g) Hay un solo ciclo. Hay un salto incondicional. La instruccin PARE no qued al final fsico del diagrama, aunque el final sigue estando al final lgico del programa.

INICIO

RE = 0

IB, NO, CF, SB

IB = 99999 NO SB <= 15000 NO SB <= 30000 NO

SI

"aumento en dinero:", RE

PARE

SI

NS = SB * 1.17

SI

NS = 2550+(SB-15000)*0.19+SB

NS = 5400+(SB-30000)*0.21+SB

RE= RE + NS - SB

IB, NO, CF, NS

10.- Se tiene un archivo histrico con informacin de los alumnos que se han recibido en una Facultad, por ejemplo en la Facultad de Forestales. NUM-INTERNO NOMBRE AO-INGR AO-EGRES PROM-GEN TITULO

Se pide : Sacar un listado con los nombres de los alumnos de la promocin 1998 junto a su promedio general y el ttulo que obtuvo. Al final indicar cuntos egresados con ttulo de "ING. FORESTAL" ha tenido la Facultad, y el promedio de todos los promedios generales que hay en el archivo. Son 3200 R.L. y son de formato fijo.

INICIO K=1 IG = 0 SU = 0

NI, NO, AI, AE, PR, TI 333 NO, PR, TI PG = SU/3200 SI IG = IG + 1 "egresados con titulo de ING. FORESTAL son:", IG

AI = 1998 NO TI = "ING. FORESTA L" NO SU = SU + PR

SI

"promedio general:", PG K=K+1 PARE K <= 3200 NO 333 SI

Observaciones Ejemplo 10

a)

Variables usadas : 10

1
K

0
IG

0
SU PG NI

NO AI AE PR TI b) Se lee un R.L., se ve si el ao de ingreso es 1978, luego si el ttulo es de ING. FORESTAL, se agrega el promedio general a SU, K se aumenta en 1 y va a leer otro registro lgico, si es que corresponde ir a leer de nuevo. c) La variable K es el contador de lectura, y queda con el valor 3201. d) La variable IG es el contador de egresados con titulo de ING. FORESTAL. Ntese que " ING. FORESTAL" es una constante alfanumrica, por ello est entre comillas. e) La variable SU es el acumulador de los promedios generales de todos los alumnos, para calcular el promedio de todos los promedios, que queda en PG. f) No es predecible el nmero de instrucciones que realizar el computador, porque depender de los datos que lea desde el archivo. XIV . EJERCICIOS PROPUESTOS DE DIAGRAMAS DE FLUJO. 1.- Considere 5 casillas (5 variables), con nombre A, B, C, D, E con el valor inicial que se indica a continuacin.

5
A

7
B

15
C

-11
D

6
E

Realice las siguientes cuatro instrucciones: i) El doble de A ms el cuadrado de B, djelo en C. ii) iii) iv) Intercambie el contenido de A y B. Tambin el de D y E. Las casillas cuyo contenido es menor que 5, aumntelas en 2. Agregue a B el cuadrado de D, y tambin el cuadrado de E. Conteste ahora las siguientes preguntas: a) Cul es el contenido de cada una de las 4 variables?. Resp: b) Cunto es la suma: A + B + C + D + E ? en el punto anterior a)? A= B= C= D= Resp: ....................... Resp: .......................

c) Si C hubiera empezado en 6 en lugar de 15, cambiara el resultado A + B + C + D + E que se obtiene d) Si B no hubiera tenido valor inicial, usted habra ejecutado todas las instrucciones? Resp: ..................... e) Qu valor inicial debera haber inicialmente en A para que, luego de realizada la instruccin i) quede en C el valor 79? Resp: .......................

2.- Considere las 3 casillas siguientes con el valor inicial indicado:

0
SU i) ii) iii)

1
I TE

Realice las siguientes instrucciones sobre estas casillas: El cuadrado de I, djelo en TE. Sume TE a SU. Aumente I en 1.

iv)

Si el contenido de la casilla I es menor o igual que 8, vuelva a la instruccin i); sino, Pare. Luego de llegar a pare, conteste las siguientes preguntas: a) Cul es el contenido de las variables SU, I, TE ? b) Cuntas instrucciones realiza Ud. hasta llegar a Pare? c) Interprete el contenido de la variable SU d) Cul es la condicin que hubo de darse para llegar a Pare? e) Cuntas veces realiz la instruccin iii) ? Resp: ....................... Resp: ....................... Resp: ....................... Resp: ....................... Resp: .......................

3.- Considere el siguiente diagrama de flujo. Ejecute Ud. este diagrama, y luego de llegar a PARE conteste: a) Nmero de veces que imprimi. b) Nmero de instruc. que ejecut desde K=0 hasta Pare, incluidas c) Explique lo que este diagrama hace d) Cul es la condicin de trmino? e) Cuntos ciclos hay? f) Qu funcin cumple la variable LU? g) Con que valor quedan las variables K y LU? Resp: ....................... Resp: ....................... Resp: ....................... Resp: ....................... Resp: ....................... Resp: ....................... Resp: .......................

INICIO K=0 LU = 1

LU= 0 NO "NO"

SI

"SI"

LU = 0 K=K+1 SI NO PARE

LU = 1

K<= 7

4.- En estos cuatro ejercicios siguientes, en cada caso, se pide hacer un diagrama de flujo que resuelva el problema planteado. Corresponden a clculo de sumatorias. a) Calcule e imprima la suma de los mltiplos de 3 que estn entre 100 y 1000. b) Lea N, y calcule la suma de los nmeros pares y de los mltiplos de 5 que estn entre N+4 y N2+3*N+1. Asuma que el N ledo positivo. c) Lea 30 nmeros de a uno por lectura, y de ellos calcule la suma, su promedio, y la suma de los cuadrados de los 30 nmeros ledos. d) Lea el nombre de un alumno y sus 6 notas, e imprima su nombre junto al promedio con un mensaje que diga si aprueba o reprueba segn tenga promedio mayor o igual que 4, o promedio menor que 4. Repetir esto con los 25 alumnos del curso. 5.- Productos a) Calcule el producto de los nmeros pares entre 25 y 57, e imprima el resultado con un mensaje adecuado. b) Lea N y calcule el valor de la expresin: x2+9x+15, donde: el valor del ltimo trmino de la productoria. 6.- Lea N, M. Si N>M, determine el mayor mltiplo de 5 que esta entre N y M. Si N=M, imprima un mensaje que diga si los nmeros N y M ledos son pares o impares. Y, si N<M, debe calcular la suma de los recprocos de los nmeros que estn entre N y M. En todo caso, si alguno de los dos, N o M, es negativo debe imprimir un mensaje diciendo que se ley nmeros negativos, y PARA de inmediato. 7.- a) Lea 50 nmeros de a uno por lectura e indique al final cul fue el mayor nmero ledo de los 50, el menor nmero ledo de los 50, el promedio de ellos, y cuntos nmeros negativos hubo entre los 50 que se ley. Nada se sabe de los nmeros a leer en relacin a sus valores; si son positivos, todos o algunos negativos, enteros, etc. b) Lea nmeros de a uno por lectura, hasta que lee un nmero menor que -99 y no lo considera, e indique luego de leer: cul fue el mayor y el menor nmero ledo, el promedio, y cuntos nmeros negativos ley. 8.- Lea un archivo con informacin de un curso de 125 Registros Lgicos de formato: NOMBRE Se pide : Imprimir el nombre y el promedio de cada alumno y la mas alta nota de las cuatro que tiene. Si el promedio es menor que 4.0, se le debe agregar el mensaje "reprueba"; y si es mayor o igual que 4.0, agregar el mensaje "aprueba". As, el registro a imprimir tiene formato: aprueba reprueba MENSAJE N1 N2 N3 N4

x=
i =2

3i + 4 3i + 3 + N

indique tambin

NOMBRE

PROMEDIO

MAYOR NOTA

9.- Lea un archivo con informacin de personal relativa a sueldos. Los R.L. tienen formato:

NUMERO Se pide :

NOMBRE

GRADO

C.FAMILIAR

S.BASE

Imprimir el nombre, el nmero, y el sueldo a pagar. El sueldo a pagar se calcula como: el sueldo base ms (30-GRADO)% del sueldo base, y ms $750.0 por cada carga familiar. No se sabe cuntos registros lgicos son, pero el ltimo tiene nmero igual a 9999, y no se considera (es slo una marca de fin lgico de archivo). Al final, se pide agregar el costo de esa planilla, el sueldo promedio, y el promedio de cargas familiares por persona. 10.- Se selecciona al azar varios alumnos de una Escuela y se les pregunta: el nombre, la edad, la altura, y el peso. Los R.L. del archivo en que se guardo esa informacin quedaron con formato: NOMBRE Se pide : Que se emita un informe con la altura y peso promedio por edad, es decir, altura y peso promedio para los 16 aos, para los 17 aos, para los 18 ao, para los 19 aos y para los 20 aos. Agregue al final, cul es la mayor altura y cul es el mayor peso que hay en la muestra. 11.- El taller de una empresa arregla un solo tipo de motores, y mantiene un archivo con informacin de cada una de las piezas que ocupa en las reparaciones de esos motores. Los R.L. tienen formato: EDAD ALTURA PESO

Las edades van de 16 a 20 aos inclusive. El ltimo registro tiene edad cero y no se considera.

NUMERO

DESCRIPCION COSTO-UNDAD PROVEEDOR

STOCK

CANT-POR-MOTOR

El ltimo registro lgico tiene nmero 99999, y no se considera. Confeccione un diagrama de flujo para cada problema que se da a continuacin, y que lo resuelva separadamente. (Hacer 4 diagramas de flujo). a) Calcular e imprimir el costo de un motor armado por piezas en este taller. b) Luego de resuelto a) y conocido dicho costo, digamos que es CT=K, saque un listado con nmero, descripcin, costo unitario y proveedor de aquellas piezas ms caras. Se entiende por pieza cara, aquella cuyo costo es superior al 6% de CT. c) Se desea sacar un listado con nmero, descripcin, costo unitario y proveedor de aquellas piezas cuyo stock es menor o igual que 10, si es que el costo unitario es menor que US$10; y de aquellas piezas cuyo stock es menor o igual que 4, si el costo unitario es mayor o igual que US$10.

d) Se desea conocer el nmero y la descripcin de la pieza que tiene mayor stock, y de la que tiene menor stock, de entre todas las piezas que tienen costo superior a US$5. Se desea conocer tambin cuntos tipos de piezas provee la compaa "STEEL WEL S.A" 12.- Una empresa basa sus ventas en la accin de un grupo dinmico de vendedores o colaboradores, cuyos datos se mantienen en un archivo con R.L de formato:
NUMERO NOMBRE APELLIDO VENTAS$ CANT-VENDIDA AO-INGRESO ESTADO

donde estn, las ventas en US$, la cantidad de artculos vendidos, el ao de ingreso, y el estado es "activo", o bien "retirado". El ltimo R.L. tiene como marca de fin de archivo NUMERO=-999, y no se debe considerar.

Confeccione un diagrama de flujo para cada problema que se da a continuacin, y que lo resuelva separadamente. a) Ubicar el nombre del vendedor ms antiguo y del ms nuevo, de entre todos los que tienen estado "activo".

b) Ubique el nmero, nombre y apellido de quien tiene el mayor volumen de ventas, y de quien tiene el menor volumen de ventas, no importando si esta activo o no. Tambin se desea los datos de quien tiene el segundo mayor volumen de ventas, este activo o no. c) Obtenga un listado con nmero, nombre y apellido de quienes estn retirados, indicando al final cuntos son, que promedio de ventas en US$ y promedio de cantidad de artculos vendidos tienen ellos en total.

d) Listar todos los "Prez Gonzlez", y los "Prez Prez" que hay en el archivo indicando cuntos son, y al final agregar cul es el mas antiguo de los nombrados y el ao en que ingres a la empresa. 13.- Transformacin de temperaturas a distintas escalas de medicin. Es de inters, para diversos fines, expresar en distintas escalas de medicin una misma temperatura. Las 4 escalas mas usadas, por sus ventajas comparativas respecto de las otras en diversas aplicaciones son: - Escala CELSIUS (C) - Escala FAHRENHAIT (F) - Escala KELVIN (K) - Escala RANKIN (R) Las relaciones entre ellas son las siguientes: C = 5 / 9 (F - 32) F = 9 / 5 C + 32 K = C - 273.16 = F - 459.69 R = F + 459.69 Por ejemplo: i) 32F = 0C = 273.16K = 491.69R ii) 212F = 100C = 373.16K = 671.69R Confeccione un diagrama de flujo que reciba una temperatura y la escala, y saque a impresin esa temperatura expresada en las cuatro escalas nombradas 14.- Distancia al horizonte. La distancia a que se encuentra nuestro horizonte visible depende de la altura desde el suelo hasta nuestros ojos. En el caso de estar en medio de un terreno plano (planicie), o de estar sobre la superficie del mar, en que no halla irregularidades que perturben la observacin a distancia, y no considerando el ndice de refraccin del aire en ese momento, una buena aproximacin de la distancia, a la que distingue una persona un objeto justo en el horizonte esta dada por: D = 1.144 H , o, E = 1.317 H donde H es la altura medida en pies. D es la distancia al horizonte en millas nuticas, y E es la distancia al horizonte en millas estndar. La altura H puede corresponder a la altura de un viga en una torre de Guarda - Bosques, centinela, etc. Escriba un programa que entregue la distancia del horizonte visible en metros dndole la altura del ojo del observador en medida en metros. Las equivalencias entre las unidades de medida son: 1 milla nutica = 1851.8 metros 1 milla estndar = 1609.3 metros 1 pie = 0.3048 metros 15.- Se toma una muestra al azar de 150 rboles, y la informacin recolectada se almacena en un archivo con R.L. de formato:

NUMERO

ESPECIE

EDAD

DAP

HB

HT

Donde esta: el nmero, la especie del rbol, la edad, el dimetro a la altura del pecho, el alto del fuste, y el alto total. Construya un diagrama de flujo que resuelva cada uno de los programas siguientes de manera separada, es decir, considere los programas independientes uno de otro. a) Determina e imprima el nmero y especie del rbol que tiene mayor DAP. Tambin nmero y especie del rbol que tiene mayor HB, y el menor HT.

b) Imprima el mismo archivo de lectura con 2 nuevos campos: rea basal, indicada por AB, volumen, indicado por VO, y determinados por: AB = 3.14159 / 4 * DAP2 , c) VO = AB * HT / 3 + 1 / HB Los registros donde HB >= HT, dejarlos marcados con un *. Con la funcin de volumen indicada en b), determine el volumen total de la muestra, el volumen promedio de los rboles de la especie "ALERCE", y la especie y nmero del rbol con el mayor volumen.

d) Emita un informe para las variables EDAD, DAP, HB y HT, indicando da cada una: promedio, menor valor, y varianza S2. S2 esta dada por: el promedio de la suma de los cuadrados menos el cuadrado del promedio.

FIN de Diagramas de Flujos.