Está en la página 1de 61

LENGUAJES ALGORTMICOS

Apuntes de la materia Por Vctor Castillo

CAPTULO I
ALGORITMOS

1.1 Procesos. 1.1.1 Definicin.


Para poder dar una definicin de proceso, debemos adentrarnos un poco en los sistemas. La definicin de un sistema hace referencia a un conjunto de dispositivos que se relacionan con el fin de llevar a cabo una tarea. La Teora General de los Sistemas presentada por Bertalanfy en el ao 1812 brinda un panorama muy claro sobre la importancia que tienen los sistemas en la vida cotidiana.

Si pusiramos atencin a todo lo que nos rodea, veramos que estamos sumergidos en muchos sistemas, y que todos ellos conviven, de alguna u otra manera, con el fin de hacer que nuestra vida sea normal. Por ejemplo, el

cuerpo humano es un sistema global formado por el sistema nervioso, el sistema cardiovascular, sistema respiratorio, etctera, cada uno de los cuales trabaja en conjunto con los otros a fin de mantenernos vivos. Si escarbramos en los sistemas, veramos a su vez, que todos ellos estn formados de procesos. Por ejemplo, el sistema nervioso, entre otros, cuenta con un proceso de sensibilidad al mundo exterior, el cual nos ayuda, a sentir cuando el ambiente es fro o clido.

Un proceso es un conjunto de actividades desarrolladas con el fin de llevar a cabo una tarea especfica.

Gracias a los procesos, las computadoras ha llegado a ser tan tiles en la vida actual. Los procesos de cmputo estn enfocados a transformar ciertos datos en otros datos o en informacin a velocidades muy grandes, a final de cuentas esa es la virtud principal de las computadoras.

1.1.2 Componentes.
Un proceso de cmputo se compone de tres partes bsicas: entrada, procesamiento y salida.

La entrada es la parte de un proceso que se encarga de recibir los datos que sern manejados en el mismo. Es una etapa muy importante, ya que la informacin o los datos que genera el proceso dependen en gran medida de qu tan buenos sean los datos en este fase. El procesamiento es la etapa fundamental de un proceso, en esta se realizan ciertas operaciones (que dependen del proceso que se est siguiendo) para transformar los datos de entrada en ciertos datos o informacin de salida (vea figura 1.1).

Figura 1.1. Las partes de un proceso de cmputo.

Entrada

Procesamiento

Salida

La salida es la parte de un proceso en la que se presentan los resultados de la etapa de procesamiento.

Las computadoras son menos inteligentes de lo que parecen, la gran capacidad de procesamiento que muchas veces escuchamos al respecto de las mismas se debe a la velocidad a la que estas llevan a cabo procesos simples y no a la complejidad de los mismos.

Ejemplo: Elaborar un proceso para sumar dos nmeros.


Parte I. Entrada de datos: Conocer los elementos a sumar: A=3 B=5 Parte II. Procesamiento de los datos. Se lleva a cabo la operacin que transformar los datos de entrada (A, B) en un resultado de salida (la suma de los nmeros). C=A+B Parte III. Salida de datos. Se presenta el resultado del procesamiento de los datos de entrada C=8

Como puede observar, el proceso de suma es muy sencillo. En la mayora de los aspectos de informtica, los datos son mencionados con nombres de variables (en este ejercicio usamos las variables A, B y C, de las cuales A y B son variables de entrada y C es la variable de proceso, la cual es presentada como salida). Este es un ejemplo tpico de un proceso y aunque la mayora de los procesos de computadora tienen ms variables de entrada, ms etapas de procesamiento y ms variables de salida, las partes fundamentales de los mismos siempre sern las tres mencionadas anteriormente (entrada, procesamiento y salida).

1.2 Algoritmos. 1.2.1 Definicin.


Un algoritmo es un conjunto ordenado y finito de pasos usados en la solucin de un problema o realizacin de una tarea.

Como podr notar, esta definicin tiene qu ver con la de procesos, detalle que tambin observaremos en el prrafo siguiente. Un algoritmo est compuesto de tres partes principales, cada una con funciones muy particulares. La etapa de entrada indica los datos que son necesarios para la solucin del problema en cuestin. En la etapa de proceso o procesamiento, es donde se realizan las operaciones que tienen que ver con la solucin del problema, mientras que en la etapa de salida es donde se mostrarn los resultados obtenidos en el procesamiento. Con estos pasos tan sencillos es como se construyen los programas ms sofisticados. Los lenguajes algortmicos nos proporcionan metodologas que permiten representar cualquier problema (o casi cualquiera) para posteriormente expresarlo en un lenguaje de computadora. De lo anterior podemos concluir que, expresando correctamente un problema mediante un algoritmo, podemos representarlo en cualquier lenguaje de programacin, esta es la razn por la que interesa el estudio de la presente materia.

1.2.2 Caractersticas de los algoritmos.


a) Un algoritmo debe ser preciso, e indicar el orden de realizacin de cada paso. b) Un algoritmo debe estar definido. Si se sigue un algoritmo dos veces, se debe obtener el mismo resultado cada vez. c) Un algoritmo debe ser finito, si se sigue un algoritmo se debe terminar en algn momento.

Ejercicio: Escriba un algoritmo para calcular el promedio de 4 nmeros.


La solucin se lleva a cabo estructurando el problema en las partes que conforman el algoritmo, as tenemos: ENTRADA PASO 1: Conocer los nmeros a promediar: A =2, B =3, C =4, D =5

PROCESAMIENTO PASO 2: PASO 3: SALIDA PASO 4: P S =A + B + C + D P = S/4

Se debe observar en la solucin que existe una secuenciacin, esto es, la solucin se va dando en forma de pasos bien definidos: despus del paso 1, sigue el 2, luego el 3, para finalmente dar el resultado de salida en el paso 4.

Ejercicio: Elabore un algoritmo para ayudar a una persona a cruzar la calle.


ENTRADA PASO 1: Checar la luz del semforo. Ir a paso 2.

PROCESO PASO 2: SALIDA PASO 3: Cruzar calle Preguntar Si L = Verde, ir a paso 3. De lo contrario ir a paso 1

1.3 Datos. 1.3.1 Definicin.


La forma ms sencilla de definir un dato, es como aquel hecho que nos da una idea bsica de algo, es cualquier carcter que produce una imagen en nuestro cerebro. Muy bien, aunque esto es una definicin poco formal, es muy til, ya que un dato es una secuencia de smbolos (letras, nmeros, etctera) que representan un valor y que por s solos no tienen un significado. Como ejemplos de datos, tenemos los siguientes: perro, 345, 86-1841, tapa, i. Todos estos datos no nos dicen o no representan algo til si no son procesados o relacionados de alguna manera. De la definicin de dato, se puede pasar a la definicin de informacin. Reafirmando, diremos que los datos son hechos, conceptos disponibles para ser procesados o convertidos en informacin mediante un sistema de procesamiento. Muchos autores afirman que los datos son la materia prima de la informacin. De aqu que la informacin es el proceso que se hace de los datos. Vamos a suponer que tenemos los siguientes datos: pizarrn, gis, borrador, bancos, escritorio, silla, treinta jvenes, una persona adulta. Muy bien, De qu estamos hablando? Si relacionamos los datos es muy probable que tengamos la informacin de que hacemos referencia a un saln de clase, si necesitramos alguna otra informacin (si es un saln con alumnos de preparatoria o secundaria, por ejemplo) tendramos que proporcionar ms datos (la edad). El ejemplo anterior es elemental, pero proporciona una idea clara de la diferencia entre dato e informacin. Aunque parezca una cuestin simple, existe un gran estudio respecto a la informacin que se conoce como Teora de la Informacin, mismo que se encuentra sustentado en gran medida en el trabajo del norteamericano Claude Shannon presentado en 1948.

1.3.2 Tipos de datos.


Internamente, los datos que maneje una computadora deben ser representados de la forma ms clara posible, por esta razn, se clasifican de manera que puedan representar varios rangos. Estos rangos determinan lo que se conoce como tipos, mismos que determinan las operaciones que cada uno puede soportar (por ejemplo, no es posible obtener el cociente de dos nombres de personas, operacin matemtica que s sera vlida para dos nmeros). La definicin de los tipos de datos que utilizaremos en lenguajes algortmicos o diagramacin es la ms sencilla (cabe sealar que todos los lenguajes de computadora manejan muchos tipos de datos).

1.3.2.1 Datos numricos. Los datos numricos, cmo su nombre lo indica, sern aquellos que slo pueden representar nmeros. De esta manera diremos que existen datos numricos enteros y reales (con decimales). Las variables que representen datos numricos sern identificadas slo con su nombre. Ejemplos: A, Edad, X1, etctera.

1.3.2.2 Datos alfanumricos. Este tipo permite manipular datos que contengan nmeros y letras. Las variables alfanumricas deben representarse con un signo de pesos antes de la mismas. Por ejemplo: $A, $Nombre, $Y2, etctera.

1.2.3.2 Datos lgicos. Los datos lgicos slo permiten almacenar dos tipos de valores: cierto y falso. Por lo general, los datos lgicos son devueltos por expresiones dnde se realiza alguna condicin o pregunta.

1.3.3 Operaciones.
Las operaciones que pueden realizarse entre los datos tendrn que hacerse por medio de operadores. Como mencionbamos en puntos anteriores, no todos los operadores pueden aplicarse a todos los tipos de datos. Enseguida lo veremos. De esta forma, en la tabla 1.1 presentamos los operadores aritmticos que son vlidos en lenguajes algortmicos.

Tabla 1.1. Los operadores aritmticos y su orden de precedencia.

PRECEDENCIA Ms alta

Ms baja

OPERADOR * / + %

OPERACIN Exponenciacin Multiplicacin Divisin Suma Resta Mdulo

En la Tabla 1.1 podemos ver la columna llamada precedencia, la cual nos indicar el orden en que se ejecutan los operadores cuando son encontrados en una expresin (este asunto se tratar con ms detalle en el punto 1.4). La tabla 1.2 nos muestra los operadores relacionales. Estos tienen el mismo orden de precedencia y debe hacerse una diferenciacin entre el operador relacional igual(=) y el operador de asignacin igual(=).

Tabla 1.2. Operadores relacionales.

OPERADOR = > < >= <=

OPERACIN Igual Mayor que Menor que Mayor o igual que Menor o igual que

Los operadores lgicos, por otra parte, se muestran en la tabla 1.3. En ellos si existe orden de precedencia.

Tabla 1.2. Operadores lgicos.

PRECEDEDENCIA Ms alta Ms baja

OPERADOR NOT AND OR

OPERACIN Negacin Conjuncin Disyuncin

Para finalizar la parte de operadores mencionaremos que existe el operador asignacin, el cual permite representar el paso del valor de una expresin a una variable. El operador indica que el resultado de la expresin que est a su lado derecho ser pasada a la variable que se localiza en su lado izquierdo: A4+5 en la anterior expresin asignamos a la variable A el valor de 4+5 (esto es, A vale 9). Lo cual difiere de preguntar si la variable A es igual a nueve, en cuyo caso se expresara con el operador de relacin = de la forma: A=4+5

en el caso anterior estamos haciendo la pregunta: Es la variable A igual a 4+5?, lo cual nos devolver un valor lgico cierto o falso dependiendo cunto vale dicha variable A.

1.4 Constantes, variables y expresiones.


Cuando referimos un tipo de datos, lo hacemos en forma de constantes o variables. Una variable es un objeto (dato en la memoria de la computadora) que puede cambiar su valor a lo largo de la ejecucin o funcionamiento de un programa. El caso contrario lo representan las constantes, las cuales mantienen fijo su valor mientras un programa se ejecuta. Como observar el lector, hemos venido manejando desde puntos anteriores el concepto de expresin, la cual definimos como un conjunto de constantes, variables y operadores. Las expresiones se componen de operadores y operandos. La siguiente es una expresin: A+3

en la cual apreciamos dos operandos (la variable A y la constante 3) y un operador (el operador que representa una suma + entre los operandos). Existen dos tipos de expresiones: aritmticas y lgicas. Las expresiones aritmticas arrojan valores numricos, las lgicas valores lgicos(cierto o falso). Veamos ahora unos ejemplos de expresiones. Suponga que las variables tienen los siguientes valores: A3, B5, C10, D1

EXPRESIN A+C-D B+C/2 A+D-B2 A+B=3

VALOR DEVUELTO 12 10 -21 FALSO

La primera expresin no tiene problema alguno. En la segunda quiz se pueda observar alguna ambigedad, pero queda liberada cuando recordamos el orden de precedencia: como encontramos el operador /,el cual tiene mayor orden de precedencia que la suma, este se realiza primero que +, por tal razn el resultado es 10. En la tercera expresin el resultado es -21 porque primero se efecta la exponenciacin de B2 (que es igual a 25), luego se realiza la resta a la suma de A+D (igual a 4) y se le resta el resultado B2 dndonos 21. La cuarta expresin, a diferencia de las anteriores que son aritmticas, devuelve un valor lgico de falso: estamos preguntando Es la suma de A+B (la cual es 8) igual a 3?, lo cual como observamos es falso. Las expresiones suelen tomar aspecto un poco ms complejos, observemos las siguientes suponiendo: A2, B4, C10, D1

EXPRESIN B+C+D/2 (B+C+D)/2 A2/2+D-B/22 ((A+B)=3) AND (C3>1000)

VALOR DEVUELTO 14.5 7.5 13 FALSO

Las primeras dos expresiones nos indican que el uso de parntesis puede alterar el orden de precedencia (siempre se evalan primero los parntesis ms internos), de all que ambas expresiones aunque similares en apariencia difieran

drsticamente en el resultado. En la tercera expresin nos volvemos a encontrar con la precedencia de los operadores: recordando, primero se evalan las potencias, luego las divisiones y finalmente las sumas y restas en el mismo orden. En la cuarta expresin, se realiza una conjuncin que involucra dos operadores relaciones, uno de igualdad y otro de mayor, la expresin (A+B)=3 es falsa(4+3 no es igual a 3), tambin lo es C3>1000 (1000 no es mayor que 1000), de tal forma que la conjuncin de estas expresiones lgicas resulta en un valor lgico final falso.

Ejercicios propuestos para el captulo.


1.- Elabore los siguientes algoritmos: a).- Que tenga por entrada una variable numrica que represente una cantidad en grados cengrados (C) y la convierta a su equivalente en grados farenheit (F). Recuerde F=1.8C+32. b).- Que acepte como entrada una variable numrica que represente la edad de una persona e indique mediante un mensaje si dicha persona puede o no votar. c).- Que en su entrada acepte una cantidad numrica que indique un valor en dlares y que lo convierta a pesos mexicanos. Considere un dlar=9.5 pesos. d).- Que tome por entrada tres variables numricas que representen las calificaciones de un alumno. El algoritmo debe calcular el promedio de dicho alumno e indicar mediante un mensaje si su promedio es aprobatorio o no. 2.- Suponga los siguientes valores para las variables indicadas: A3, B5, C10, D1 y encuentre el valor de las expresiones siguientes: a).- (A+B/2-1)-(B2)*2 b).- (A2+B2) (1/2) c).- C-D*5/A+42*4 d).- (C-5)=B e).- 8-10%2+C f).- 4*C-B g).- (A/2+3*C-(4*B/(C-B)*7) )3 _______ _______ _______ _______ _______ _______ _______

CAPTULO II
DIAGRAMAS DE FLUJO

2.1 Definicin
Un diagrama de flujo es la representacin grfica de un algoritmo, por esta razn, cada parte de un algoritmo tiene un equivalente en un diagrama de flujo. Esta es una forma ms explcita de representar problemas, la cual, se ajusta a las estructuras lgicas de todos los lenguajes de programacin existentes.

2.2 Smbolos usados en los diagramas de flujo


En los diagramas existen bloques funcionales que representan las operaciones descritas para los algoritmos en el Captulo I. La figura 2.1 nos muestra las equivalencias que existen entre los algoritmos y diagramas de flujo.

Figura 2.1. Simbologa bsica equivalente para algoritmos y diagramas de flujo.

Etapa en un algoritmo Entrada:

Figura equivalente en diagramas de flujo

Proceso:

Salida:

Generalmente un diagrama de flujo deber tener la identificacin tanto de su inicio como su fin. En ambos casos, se utilizar el siguiente smbolo:
Inicio Fin

Cada uno de los bloques funcionales deben ser unidos mediante flechas que indiquen el flujo de la lgica del problema en cuestin.

2.3 Implementacin de diagramas de flujo a partir de algoritmos.


En este punto describiremos la implementacin de diagramas de flujo tomando como referencia algunos de los algoritmos del captulo pasado.

Ejemplo: Elaborar un diagrama de flujo que tenga por entrada (lea) dos variables
numricas y que calcule e imprima su suma. La solucin se formula como sigue, a la izquierda tenemos el algoritmo y a la derecha el diagrama de flujo equivalente:

ALGORITMO:
INICIO

ENTRADA: PASO 1: A, B
A,B

PROCESO: PASO 2: C = A + B SALIDA: PASO 3: C


C A+B

FIN

Como podemos observar en el ejemplo anterior, al algoritmo le corresponde exactamente un bloque funcional en el diagrama. El smbolo de lectura de las variables A, B indica que un programa esperar a que el usuario, va teclado, introduzca dos valores numricos, los cuales sern asignados a las respectivas variables. Una vez asignados los valores a las variables en el bloque de lectura se elaborar un proceso de asignacin de la suma de A, B a la variable C, la cual se imprimir seguidamente para terminar. Observe el lector tambin como existen los smbolos de inicio y fin del diagrama y que el flujo de la ejecucin de cada una de sus partes lo ilustran claramente las flechas, es decir, despus del inicio sigue una lectura, luego un proceso de asignacin para despus imprimir o dar salida a un resultado, enseguida se nos indica que el diagrama termina. Los smbolos que usaremos a lo largo del curso varan de significado ligeramente por parte de algunos autores, por ejemplo, el smbolo de salida puede tener una connotacin diferente si se usa para dar salida a pantalla o impresora, nosotros generalizaremos usando slo el mostrado previamente.

Ejemplo: Hacer un diagrama de flujo que lea tres nmeros y que calcule e
imprima su promedio.

ENTRADA: A, B, C PROCESO: P = (A + B + C)/3 SALIDA: P

INICIO

A,B,C

P (A+B+C)/3 P

FIN

2.4 Reglas para la construccin de diagramas de flujo.


Es necesario advertir al lector que no existen recetas concretas para solucionar problemas mediante diagramas de flujo o algoritmos, pero s podemos decir que siguiendo algunos consejos prcticos, esta tarea se facilitar. Tambin debemos dejar claro que hay problemas que pueden tener muchas representaciones en diagramas, pero no por eso algunas sern incorrectas. Las siguientes lneas son algunas reglas que ayudan a la estructuracin de diagramas de flujo(las cuales fueron tomadas del libro de Joyanes): 1.- Todo diagrama debe tener un principio y un fin. 2.- Las lneas de conexin siempre deben ser rectas, y si es posible que sean slo verticales y horizontales (no deben cruzarse ni estar inclinadas). As mismo, se deben usar los conectores slo en casos estrictamente necesarios. 3.- Las lneas que enlazan smbolos entre si deben estar todas conectadas. 4.- Se deben dibujar todos los smbolos de modo que se pueda seguir el proceso visualmente de arriba abajo (diseo top down) y de izquierda a derecha. 5.- Realizar un diagrama claro y estructurado procurando que la parte central del diagrama sea la parte central de la hoja de papel. 6.- Evitar la utilizacin de terminologa especfica de un lenguaje de programacin. 7.- En las operaciones lgicas recurrir preferentemente a la lgica positiva y que a la lgica negativa.

2.5 Comprobacin de diagramas de flujo.


Segn Joyanes, terminado un diagrama de flujo se deben tomar un conjunto de datos significativos y comenzar la lectura del mismo en el orden arriba abajo/izquierda derecha y seguir paso a paso todos los smbolos, con sus operaciones correspondientes, introduciendo los datos tomados inicialmente en los momentos oportunos y ver cmo responde el diagrama de flujo y si los resultados son correctos y coherentes. Este fase ayudar a comprobar si el diagrama tiene algn fallo y en su caso a corregirlo. A la metodologa descrita la llamaremos corrida a mano y suele ser muy til en la comprensin de problemas representados mediante diagramas.

Ejemplo: Hacer un diagrama de flujo que lea una variable A y otra B que
representen los coeficientes de una ecuacin de 1er grado, de la forma Bx + A = 0 El diagrama debe imprimir el valor de la raz ( x = - A / B).
INICIO

A, B

X - A/B X

FIN

Comprobacin del diagrama: Suponiendo que damos los valores 4 y 2 respectivamente a las variables A, B en el bloque de entrada, proseguimos con el bloque de proceso donde podemos ver que a la variable X se le asigna el valor de A/B, lo cual corresponde a un valor de 2. Si sustituimos el valor obtenido de X en la ecuacin original (Bx + A = 0) veremos que la igualdad se cumple. Al lector le corresponder probar el diagrama con otros valores.

2.5 Ventajas y desventajas de los diagramas de flujo.


Como hemos dicho hasta el momento, los diagramas de flujo presentan caractersticas favorables para ser usados en la solucin de problemas que sern traducidos a un lenguaje de computadora, pero an con todo esto, existen algunos inconvenientes en su uso, los cuales deben tenerse presentes. La siguiente es una lista de ventajas y desventajas tomadas tambin del autor Joyanes:

Como ventajas principales tenemos: 1.- Rpida comprensin de las relaciones. 2.- Anlisis efectivo de las diferentes secciones del programa. 3.- Documentacin adecuada de los programas. 4.- Codificacin eficaz de los programas. 5.- Depuracin y pruebas ordenadas de los programas.

Las desventajas que se pueden observar se resumen as: 1.- Los diagramas complejos y detallados suelen ser laboriosos en planteamiento y elaboracin. 2.- No existen normas fijas para la elaboracin de diagramas de flujo que permitan incluir todos los detalles que el usuario desea introducir.

2.6 Pseudocdigo.
Al igual que los diagramas de flujo, el pseudocdigo es otra herramienta muy til para implementar programas de computadora y podemos definirlo como una tcnica para expresar en lenguaje natural la lgica de un programa, es decir, su flujo de control (Joyanes). Analicemos la definicin dada con un ejemplo. El siguiente diagrama lee dos variables numricas A, B y mediante un proceso calcula su suma y luego el promedio de las mismas. Seguido, imprime dicho valor previamente calculado. Por otra parte, al lado derecho del diagrama tenemos su codificacin en el lenguaje de programacin Pascal. Lo que aparece en este programa es un conjunto de instrucciones que puede ser interpretado por una computadora para realizar la tarea de leer dos nmeros y calcular e imprimir en pantalla su promedio. Pero suponga el lector que ya tiene su diagrama debidamente probado y que an no sabe en qu lenguaje se va a codificar, bueno, para esta situacin es posible utilizar pseudocdigo y dejarlo listo para codificar en el lenguaje que se decida posteriormente. Veamos primero el diagrama:

INICIO

A, B

Codificacin:
Program promedio; Var s, a, b: integer; p: real; Begin Write(Teclee el primer nmero:); readln(a); Write(Teclee el segundo nmero:); readln(b); S:= A + B; P:= S/2; Write(El promedio es: ,p:10:2); End.

S A+B P S/2

FIN

Ahora bien, si deseramos escribir pseudocdigo para el diagrama, lo haramos as: Inicio Escribir mensaje Teclea el primer nmero Leer variable A Escribir mensaje Teclea el segundo nmero Leer variable B Procesar : hacer la variable S igual a la suma de A+B Procesar : hacer la variable P igual a S/2 Escribir el mensaje El promedio es y el valor de P Fin Como vemos, el pseudocdigo es un paso cercano a la codificacin del programa (su escritura en un lenguaje de programacin), pero concretamente no representa alguna instruccin de un lenguaje, es decir, slo expresa en lenguaje ms comn la posible escritura de cdigo.

2.7 Ejemplos y solucin de problemas relacionados.


a).- Hacer un diagrama de flujo que lea una cantidad en dlares y que la convierta en su equivalente en pesos (suponiendo que un dlar = $ 9.50).

INICIO

INICIO

D, A

P D*9.5

P D*A

FIN

FIN

Nota: Observe las dos soluciones alternativas planteadas.

b).- Hacer un diagrama de flujo que lea una cantidad que represente una temperatura en grados Celsius ( C) y que los convierta en grados Farenheit (F).
INICIO

F 1.8*C+32

FIN

c).- Hacer diagrama de flujo que lea una cantidad en pesos y que la convierta en dlares (suponiendo que el dlar = $ 10).
INICIO

D P/10

FIN

d).- Hacer diagrama de flujo que lea una cantidad en C y que la convierta en K.
INICIO

K C+273

FIN

e).- Hacer diagrama de flujo que lea una cantidad en equivalente en grados F y en K.
INICIO

C y que imprima su

K C+273 F 1.8*C+32

K, F

FIN

f).- Hacer diagrama de lujo que lea los lados de A, B de un tringulo y que calcule e imprima la hipotenusa.
INICIO

A,B

C (A2 + B2)(1/2)

FIN

g).- Hacer diagrama de flujo que lea e imprima el promedio de 3 calificaciones de un alumno.
INICIO

A,B,C

P (A+B+C)/3

FIN

h).- Hacer diagrama de flujo capaz de resolver una ecuacin de segundo grado.
INICIO

A, B, C

DIS (B-4*A*C)(1/2)

X1 (-B + DIS) /2*A

X2 (B + DIS)/2*A

X1 , X2

FIN

Ejercicios propuestos para el captulo.


1.- Elabore un diagrama de flujo que lea una variable numrica que represente el radio de un crculo y que calcule e imprima su rea. 2.- Haga un diagrama de flujo que lea una variable numrica X y que calcule e imprima el valor de Z, suponiendo que Z =(X + 7)2 + 4 3.- Construya un diagrama de flujo que lea una variable numrica que represente la masa de un objeto. El diagrama debe calcular e imprimir la posible energa que puede liberar ese objeto segn la teora general de la relatividad. 4.- Elabore un diagrama de flujo que lea dos variables numricas que representen respectivamente la velocidad y el tiempo que dura el recorrido de un mvil. El diagrama debe calcular e imprimir la distancia que recorre dicho mvil. 5.- Realice un diagrama de flujo que lea tres variables numricas X, Y, Z y determine el valor de la ecuacin W, donde: W = XY+3YX-[3/4Z-(Y2+Z3)] 6.- Hacer diagrama de flujo que lea dos cantidades numricas que representen las dimensiones de los lados de un rectngulo. Estas dimensiones deben ser dadas en centmetros y el diagrama debe imprimir el rea de dicho rectngulo en metros cuadrados. 7.- Hacer un diagrama de flujo que lea una cantidad numrica que indique cierto nmero de aos. El diagrama debe imprimir la cantidad equivalente en minutos.

CAPTULO III
CONCEPTOS DE DIAGRAMAS DE FLUJO

3.1 Contador.
Existen algunas formas de asignacin que gozan de mucha utilidad en programacin. Obviamente, estas formas de asignacin manipulan variables, las cuales reciben nombres tcnicos, una de esas formas es el contador. En los procesos repetitivos es necesario contar los sucesos que ocurren dentro de un ciclo, estos sucesos pueden ser de muy diversos tipos, y por ahora no son parte de atencin. Pues bien, para llevar un control de esos eventos se hace uso de un contador, el cual reside en una parte de la memoria de la computadora y se incrementa o decrementa cada vez que se entra al ciclo. El

incremento (ya sea positivo o negativo) en un contador siempre es constante. Como ejemplos de contador tenemos: C C+1 N N+1

3.2 Sumador.
Este tipo de variable almacena cantidad variables resultantes sumas sucesivas (Joyanes, 1987). En este tipo de variables, el incremento es siempre una variable, veamos ahora unos ejemplos de sumadores: C C+T S S+N

3.3 Multiplicador.
Una variable tipo multiplicador, como su nombre lo indica, es aquella que multiplica valores, sea constantes o variables. Ejemplos: C C*2 N N*X Las tres herramientas mencionadas en lo que va de estos apuntes, tienen infinidad de aplicaciones, las cuales veremos cuando toquemos el tema de ciclos y arreglos. Por ahora slo es importante saber que existen y que cuentan con caractersticas que las identifican claramente. La figura 3.1 muestra en forma grfica los tres tipos de variables descritas previamente.

Figura 3.1. De izquierda a derecha, tenemos diagramas que implementan un contador, un sumador y un multiplicador, respectivamente.

INICIO

INICIO INICIO

C 1 C C+1

X 1 X 1 S 1 X X*1 S S+X X

FIN

S FIN FIN

3.4 Control de flujo en un diagrama.


Hasta este momento la lgica de ejecucin de instrucciones, en los diagramas que se han visto, no ha sido interrumpida, es decir, se ejecuta todas ellas de manera lineal ( de arriba hacia abajo). Muchas veces ser necesario cambiar el flujo de un diagrama tomando en cuenta ciertas condiciones. Para llevar a cabo sentencias condicionales el control del flujo en un diagrama-, se utiliza el siguiente smbolo:

FALSO CONDICIN

CIERTO

Dependiendo cul es la respuesta resultante a la condicin, el flujo del problema ir, a la izquierda, si es falsa o a la derecha si es verdadera.

3.5 Ejemplos y resolucin de problemas relacionados. Ejemplo: Hacer un diagrama de flujo que lea una variable que represente la edad
de una persona y que escriba un mensaje que indique si la persona puede o no votar en las elecciones.
INICIO

NO "LO SIENTO" E>=18

SI "FELICIDADES"

FIN

Ejemplo: Hacer diagrama de flujo que lea un nmero que represente una
temperatura en C y que la convierta a F. El diagrama debe determinar si la temperatura convertida es mayor a 300 F.
INICIO

F 1.8 * C + 32

NO "Es menor a 300 C" F>=300

SI "Es mayor a 300 C"

FIN

Ejemplo: Hacer diagrama de flujo que lea un nmero y que compare si ese nmero es mayor a mil, en cuyo caso debe imprimir el cuadrado del nmero y en caso contrario debe imprimir la raz cbica del mismo.
INICIO

NO A X(1/3) X>=1000

SI A X2

FIN

Ejemplo: Hacer diagrama de flujo que lea un nmero y que determine si es mltiplo de tres, en este cado debe calcular e imprimir respectivamente su cuadrado y raz cuadrada. En caso contrario que calcule e imprima su valor cubicado.
INICIO

M N MOD 3

NO X1 N * N * N M= 0

SI

X1 SQR (N) X2 SQRT (N)

X1

X1, X2

FIN

Ejemplo: Hacer diagrama de flujo que lea dos variables numricas y que evale
la propiedad de tricotoma en dichos nmeros.
INICIO

X, Y

SI X=Y

"Son Iguales"

NO NO X>Y SI "X es mayor que Y"

"Y es mayor que X"

FIN

Ejemplo: Hacer diagrama de flujo que lea dos variables (X, Y) y que determine si
se satisface la siguiente ecuacin. 3X+5Y4
INICIO

X, Y

"No satisface la ecuacin"

NO
3 X + 5 Y >=4

SI

"Si satisface la ecuacin"

FIN

Ejemplo: Hacer diagrama de flujo que lea cuatro variables: X1,X2,Y1,Y2. El diagrama debe calcular la media aritmtica de las variables (X, Y) e indicar sus respectivas medias son iguales o cual de ellas es la mayor.

INICIO

X1, X2, Y1, Y2

SX = X1 + X2 PX = SX / 2

SY = Y1 + Y2 PY = SY / 2

SI PX = PY NO SI PX < PY
"Las m edias son iguales"

"La media de Y's es mayor que la media de X's"

NO

"La media de X's es mayor que la media Y's"

FIN

CAPTULO IV
ESTRUCTURAS ITERATIVAS

4.1 Introduccin.
Las estructuras iterativas (tambin llamadas bucles), son procesos que ejecutan una serie de instrucciones en un nmero determinado de veces. Las operaciones, o instrucciones, sern siempre las mismas, pero con datos y resultados diferentes. En el caso de un programa de computadora, el bucle o lazo es un conjunto de instrucciones que deben ser ejecutadas un cierto nmeros de veces(cada repeticin tambin se conoce como iteracin), en una entrada y una salida; la entrada se producir con una o varias instrucciones y la salida del bucle fin del proceso repetitivo-, se producir cuando se cumple o no una condicin. Un bucle que no controle su fin, recibe el nombre de bucle infinito o sin fin, tiene la forma mostrada en la Figura 4.1.

Figura 4.1. Estructura general de un bucle infinito.

Accin 1

Accin 2

Lo ms deseable en un programa es que nunca se caiga en un ciclo infinito, ya que no tendra mucho sentido no poder detener procesos. En general, un bucle que no es infinito, es decir, uno que es finito, contar con las siguientes partes: Preparacin y arranque. Cuerpo. Modificacin. Comprobacin de la condicin.

El esquema de un bucle finito se muestra en la Figura 4.2.

Figura 4.2. Estructura general de un bucle finito tipo repetir-mientras.

Falso Condicin? Cierto

Proceso(s)

4.2 Estructura repetir-mientras.


La Figura 4.2 ilustra que el proceso o los procesos del bucle sern repetidos mientras se cumpla la condicin, es decir, mientras que esta sea evaluada como verdadera. Un ciclo tipo de este tipo no asegura que los procesos que pertenecen

a l sean ejecutados, ya que si la condicin de entrada no es satisfecha, nunca se ejecutarn el o los procesos.

4.3 Estructura repetir-hasta.


En Figura 4.3 observamos otra estructura de bucle conocida como repetirhasta, en la podemos apreciar que el o los procesos sern ejecutados mientras que la condicin no sea satisfecha. Esta clase de bucle asegura la entrada a el mismo al menos una vez, a diferencia de las estructuras de bucle tipo repetirmientras.
Figura 4.3. Estructura general de un bucle finito tipo repetir-hasta.

Proceso(s)

Falso Condicin? Cierto

En la mayora de los problemas que se resuelvan con estructuras tipo repetir-mientras y repetir-hasta es frecuente encontrar, dentro de los procesos que contiene el bucle, un contador que sea la variable de control que indique cuntas veces ser ejecutar el ciclo.

4.4 Ciclos automticos.


Este tipo de bucles se les llama automticos porque la variable que controla el nmero de iteraciones es incrementada de manera interna por el bucle, es decir, no necesita incrementarse de manera explcita dentro del mismo. La Figura 4.4 ilustra una estructura general de un ciclo automtico.

Figura 4.4. Estructura general de un ciclo automtico.

var=inicio,fin, incremento

Proceso(s)

En un ciclo automtico, el o los procesos sern ejecutados mientras que la variable de control (var) pasa del valor inicial al valor final en el incremento especificado.

4.5 Ejemplos y resolucin de problemas relacionados. Ejemplo: Hacer un diagrama de flujo que genere nmeros pares desde 2 hasta
infinito.
INICIO

C 0

C C+2

Ejemplo: Hacer diagrama de flujo que genere nmeros impares desde 1 hasta
infinito.
INICIO

C -1

C C+2

Ejemplo: Hacer diagrama de flujo que genere nmeros enteros sucesivos desde 1 hasta infinito.
INICIO

C 0

C C+1

Ejemplo: Hacer diagrama de flujo que genere nmeros de tres en tres hasta
infinito.
INICIO

C 0

C C+3

Ejemplo: Hacer diagrama de flujo que lea 1000 nmeros y que lea e imprima su
promedio.
INICIO

C 0 S 0

C C+1

S S+N

NO C = 1000 SI P S / 1000

FIN

Ejemplo: Hacer diagrama de flujo que genere nmeros pares de 2 hasta 200.
INICIO

C 0

C C+2

NO C = 200 SI FIN

Ejemplo: Hacer diagrama de flujo que genere nmeros enteros sucesivos de uno en uno hasta N.
INICIO

C 0

C C+1

NO C=N SI FIN

Ejemplo: Hacer diagrama de flujo que calcule la media aritmtica de N nmeros.


INICIO

C 0 S 0 P 0

C C+1

S S+M

NO C=N SI P S/N

FIN

Ejemplo: Hacer diagrama de flujo que lea un nmero y que determine si es par o impar, si el nmero es par, el diagrama debe generar nmeros pares de 2 20 y si no, impares de 1-19.

INICIO

"Nmero impar"

NO C MOD 2 = 0

SI

"Nmero par"

C -1

C 0

C = 19 NO C C +2

SI

SI

C = 20 NO C C+2

FIN

Ejemplo: Hacer diagrama de flujo que lea n nmeros y que determine cual de
ellos es el mayor.
INICIO

MAY -32000 C 0

C C+1

X > MAY SI MAY X

NO

NO C=N SI MAY

FIN

Ejemplo: Hacer diagrama de flujo que imprima la sucesin de Fibonacci:


0,1,1,2,3,5,8,13,21,
INICIO

A 0 B 1

A,B

C A+ B

A B B C

Ejemplo: Hacer diagrama de flujo que imprima nmeros mltiplos de cinco desde
cinco hasta quinientos.
INICIO

C 0

C C+5

NO C = 500 SI FIN

Ejemplo: Hacer diagrama de flujo que imprima nmeros de uno en uno hasta 50 y que imprima el cuadrado de cada uno.
INICIO

C 0

C C+1

N C*C

NO C = 50 SI FIN

Ejercicios propuestos para el captulo.


1.- Hacer un diagrama de flujo que lea un nmero N y que genera la siguiente secuencia: 1 .. 1 2 .. 3 3 .. 9 4 .. 16 . . . . N .. N2 2.- Elabore un diagrama de flujo imprima 500 veces la cadena Hola. 3.- Hacer un diagrama de flujo que lea un nmero N y que genere una secuencia de nmeros primos menores o iguales que N. 4.- Hacer un diagrama de flujo que lea un nmero N y que genere la sucesin de Fibonacci para nmeros menores o iguales que N. 5.- Elabore un diagrama de flujo que lea N nmeros y que indique cuntos de ellos son pares y cuntos mltiplos de 3. 6.- Hacer un diagrama de flujo que lea un nmero N y que genere una secuencia de nmeros impares menores o iguales que N.

CAPTULO V
ESTRUCTURAS DE DATOS BSICAS

5.1 Vectores.
Un vector es un conjunto de elementos relacionados. En la mayora de los lenguajes de computadora, todos los elementos de un vector(o arreglo unidimensional) son del mismo tipo. Para poder hacer referencia a los elementos de un vector es necesario que exista un nombre para el mismo. A cantidad mxima de elementos que podemos almacenar en un vector se le llama dimensin. No es posible acceder a todos los datos de un arreglo al mismo tiempo, en vez de ello se tiene que usar un nombre de arreglo y un nmero, llamado ndice, que indica a qu elemento del vector se est haciendo referencia.

Figura 5.1. Representacin esquemtica de un vector.

X=

457 [1]

324 [2]

3 [3]

55 [4]

La Figura No. 5.1 muestra un arreglo de enteros llamado X que tiene una dimensin de 4. Si queremos hacer referencia al segundo elemento del arreglo X (el nmero 324) tendramos que especificar X[2](se lee como X de 2), es decir, X[2]=324. Cada uno de estos elementos individuales puede ser tratado como cualquier variable.

5.2.1 Ejemplos y resolucin de problemas relacionados con vectores. Ejemplo: Hacer diagrama de flujo que lea e imprima un arreglo de N elementos.
INICIO

K 1, N

X[K]

X[K]

FIN

Ejemplo: Hacer diagrama de flujo que lea un arreglo de N elementos y que imprima su media aritmtica.
INICIO

S 0 K 1, N

X[K]

S X[K] + S

P S/N

FIN

Ejemplo: Hacer diagrama de flujo que lea un vector numrico de N elementos y


que indique cuntos de ellos son negativos.

INICIO

P 0 K 1, N
X[K]

K 1, N

NO X[K] < 0 SI P P+1

FIN

Ejemplo: Hacer un diagrama de flujo que lea un vector de N elementos que


calcule la siguiente norma: (X1-M)+ (X1-M)+...+ (XN-M) Norma = ----------------------------------------N Donde M es la media aritmtica del vector X.
INICIO

S 0 K 1, N

X[K]

S S + X[K]

M S / N S2 0 K 1, N S2 S2 + (X[K] - M)

DM S2 / N

DM

FIN

Ejemplo: Hacer diagrama de flujo que lea dos vectores de dimensin N y que
calcule e imprima la suma de ambos.

INICIO

K 1, N

X[K]

Y[K]

K 1, N

Z[K] X[K] + Y[K]

Z[K]

FIN

5.2 Matrices.
Un matriz es un arreglo bidimensional, es decir, para hacer referencia a cualquiera de sus elementos son necesarios dos ndices. Las matrices estn organizadas en filas y columnas, por lo tanto la dimensin de las mismas ser dada en la forma NxM, donde N representa la cantidad de renglones(llamados tambin filas) y M las columnas.
Figura 5.2. Representacin esquemtica de una matriz.

X=

[1] [2] [3] [4]

457 34 2 21 [1]

324 34 342 3 [2]

3 0 13 32 [3]

En la Figura 5.2 podemos observar la representacin esquemtica de una matriz de enteros llamada X, la cual tiene una dimensin 4x3. En la matriz X, el acceso a los elementos individuales debe hacerse en la forma X[i,i], donde i representa el nmero de rengln y j el nmero de columna, por lo tanto X[3,2] es 342.

5.2.1 Ejemplos y resolucin de problemas relacionados con matrices. Ejemplo: Hacer diagrama de flujo que lea una matriz de tres por dos (3 X 2).
INICIO

I 1, 3 J 1, 2

X[I,J]

FIN

Ejemplo: Hacer diagrama de flujo que lea e imprima una matriz de N X M


elementos.

INICIO

N,M

I 1, N

J 1, M

X[I,J]

I 1, N

J 1, M

X[I,J]

FIN

Ejemplo: Hacer diagrama de flujo que lea matriz de dimensin NxM y un escalar . El diagrama debe calcular e imprimir el producto escalar de ambos.
INICIO INICIO

N , M, K

N , M, K

I 1, N

I 1, N

J 1, M

J 1, M

X[I,J]

X[I,J]

I 1, N

I 1, N

J 1, M Y[I,J] K*X[I,J]

equivale a ....

J 1, M Y[I,J] K*X[I,J]

Y[I,J]

I 1, N

FIN

J 1, M

Y[I,J]

FIN

Ejemplo: Hacer diagrama de flujo que lea una matriz de dimensin NxM y
imprima su diagonal principal.

Ejercicios propuestos para el captulo. 1.- Hacer diagrama de flujo que lea un vector de N elementos y que indique
cuantos de ellos son pares. 2.- Hacer diagrama de flujo que lea una matriz de N X 3. El diagrama debe calcular el promedio por fila e cual de tales promedios es el mayor.

3.- Hacer diagrama de flujo que lea un vector de N elementos y que indique
cuantos de ellos mltiplos de tres y cuntos mltiplos de 5. 4.- Hacer un diagrama de flujo que lea un vector de dimensin N y que calcule la siguiente norma: (X1-M)2+ (X1-M) 2+...+ (XN-M) 2 Norma = ----------------------------------------N2 Donde M es la media aritmtica del vector X. 5.- Hacer un diagrama de flujo que lea dos matrices y que calcule su producto. 6.- Hacer un diagrama de flujo que lea dos matrices y que calcule su suma. 7.- Hacer un diagrama de flujo que lea una matriz entera de dimensin NxM y que calcule su matriz transpuesta. 8.- Hacer un diagrama de flujo que lea una matriz entera de dimensin NxM y que calcule el promedio de sus elementos. 9.- Hacer una diagrama de flujo que lea una matriz de caracteres de dimensin NxM y que indique cuntos de los caracteres de tal matriz son letras a. 10.- Que lea dos vectores numricos de dimensin N y que indique cul de ellos tiene la mayor media aritmtica de sus elementos.

CAPTULO VI
SUBRUTINAS

6.1 Definicin.
La programacin estructurada consiste en descomponer sucesivamente un problema en mdulos que tratarn y programarn independientes unos de otros. A estos mdulos tambin se les llama subprogramas. El manejo de subprogramas en diagramacin se observa el esquema mostrado en la Figura 6.1.

Figura 6.1. Esquema para el uso de subprogramas en diagramacin.


Subprogram a A Subprogram a B

Operacin 1 Operacin 2 . .

Operacin 1 Operacin 2 . .

Subprogram a A

Subprogram a B

Fin

Fin

Ejemplo: Elaborar un diagrama de flujo que genere un men con tres opciones:
1.- Suma de dos nmeros 2.- Promedio de N nmeros 3.- Terminar el algoritmo El diagrama debe desarrollar las opciones 1 y 2 como subprogramas.
Inicio

Subprogram a A

Subprogram a B

Menu 1.- Sum a de dos nm eros 2.- P rom edio de N nm eros 3.- T erm inar algorit m o

a,b

s=0 c=a+b Opc i=1, N c X[i] Segn Opc 1 Ot ro 2 Fin s=s+x[i]

Subprogram a A

P =s/N Subprogram a B

Falso Opc=3 Ciert o Fin

Fin

También podría gustarte