You are on page 1of 61

LENGUAJES ALGORÍTMICOS

Apuntes de la materia Por Víctor Castillo

CAPÍTULO I
ALGORITMOS

1.1 Procesos. 1.1.1 Definición.
Para poder dar una definición de proceso, debemos adentrarnos un poco en los sistemas. La definición de un sistema hace referencia a un conjunto de dispositivos que se relacionan con el fin de llevar a cabo una tarea. La Teoría General de los Sistemas presentada por Bertalanfy en el año 1812 brinda un panorama muy claro sobre la importancia que tienen los sistemas en la vida cotidiana.

Si pusiéramos atención a todo lo que nos rodea, veríamos 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, etcétera, cada uno de los cuales trabaja en conjunto con los otros a fin de mantenernos vivos. Si escarbáramos en los sistemas, veríamos a su vez, que todos ellos están 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 frío o cálido.

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

Gracias a los procesos, las computadoras ha llegado a ser tan útiles en la vida actual. Los procesos de cómputo están enfocados a transformar ciertos datos en otros datos o en información a velocidades muy grandes, a final de cuentas esa es la virtud principal de las computadoras.

1.1.2 Componentes.
Un proceso de cómputo se compone de tres partes básicas: entrada, procesamiento y salida.

La entrada es la parte de un proceso que se encarga de recibir los datos que serán manejados en el mismo. Es una etapa muy importante, ya que la información 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 información de salida (vea figura 1.1).

Figura 1.1. Las partes de un proceso de cómputo.

Entrada

Procesamiento

Salida

2 Algoritmos. más etapas de procesamiento y más variables de salida. Salida de datos. Se lleva a cabo la operación que transformará los datos de entrada (A. . de las cuales A y B son variables de entrada y C es la variable de proceso. las partes fundamentales de los mismos siempre serán las tres mencionadas anteriormente (entrada. B) en un resultado de salida (la suma de los números). Este es un ejemplo típico de un proceso y aunque la mayoría de los procesos de computadora tienen más variables de entrada. procesamiento y salida).2. 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. En la mayoría de los aspectos de informática. Ejemplo: Elaborar un proceso para sumar dos números. el proceso de suma es muy sencillo. Se presenta el resultado del procesamiento de los datos de entrada C=8 Como puede observar.1 Definición. 1. 1. la cual es presentada como salida). Las computadoras son menos inteligentes de lo que parecen. Parte I. B y C. Entrada de datos: Conocer los elementos a sumar: A=3 B=5 Parte II.La salida es la parte de un proceso en la que se presentan los resultados de la etapa de procesamiento. los datos son mencionados con nombres de variables (en este ejercicio usamos las variables A. Un algoritmo es un conjunto ordenado y finito de pasos usados en la solución de un problema o realización de una tarea. Procesamiento de los datos. C=A+B Parte III.

cada una con funciones muy particulares. b) Un algoritmo debe estar definido. Los lenguajes algorítmicos nos proporcionan metodologías que permiten representar cualquier problema (o casi cualquiera) para posteriormente expresarlo en un lenguaje de computadora. podemos representarlo en cualquier lenguaje de programación.2 Características de los algoritmos. mientras que en la etapa de salida es donde se mostrarán los resultados obtenidos en el procesamiento. La etapa de entrada indica los datos que son necesarios para la solución del problema en cuestión. C =4. Ejercicio: Escriba un algoritmo para calcular el promedio de 4 números. De lo anterior podemos concluir que. si se sigue un algoritmo se debe terminar en algún momento. Con estos pasos tan sencillos es como se construyen los programas más sofisticados. a) Un algoritmo debe ser preciso. así tenemos: ENTRADA PASO 1: Conocer los números a promediar: A =2. es donde se realizan las operaciones que tienen que ver con la solución del problema. Si se sigue un algoritmo dos veces. La solución se lleva a cabo estructurando el problema en las partes que conforman el algoritmo. c) Un algoritmo debe ser finito. se debe obtener el mismo resultado cada vez. esta es la razón por la que interesa el estudio de la presente materia. detalle que también observaremos en el párrafo siguiente.Como podrá notar. e indicar el orden de realización de cada paso. En la etapa de proceso o procesamiento. 1. D =5 PROCESAMIENTO PASO 2: PASO 3: SALIDA PASO 4: P S =A + B + C + D P = S/4 . Un algoritmo está compuesto de tres partes principales.2. B =3. expresando correctamente un problema mediante un algoritmo. esta definición tiene qué ver con la de procesos.

la solución se va dando en forma de pasos bien definidos: después del paso 1. esto es. para finalmente dar el resultado de salida en el paso 4. . luego el 3.Se debe observar en la solución que existe una secuenciación. sigue el 2.

diremos que los datos son hechos. ir a paso 3. existe un gran estudio respecto a la información que se conoce como Teoría de la Información. ya que un dato es una secuencia de símbolos (letras. etcétera) que representan un valor y que por sí solos no tienen un significado. aunque esto es una definición poco formal. tapa. Ir a paso 2.1 Definición. por ejemplo) tendríamos que proporcionar más datos (la edad). 1. Muchos autores afirman que los datos son la materia prima de la información. tenemos los siguientes: perro. i. Aunque parezca una cuestión simple. se puede pasar a la definición de información.Ejercicio: Elabore un algoritmo para ayudar a una persona a cruzar la calle. pero proporciona una idea clara de la diferencia entre dato e información. Muy bien. bancos. treinta jóvenes. De la definición de dato. silla. Reafirmando. ¿ De qué estamos hablando? Si relacionamos los datos es muy probable que tengamos la información de que hacemos referencia a un salón de clase. números. si necesitáramos alguna otra información (si es un salón con alumnos de preparatoria o secundaria. Como ejemplos de datos. 86-1841. escritorio. Vamos a suponer que tenemos los siguientes datos: pizarrón. Todos estos datos no nos dicen o no representan algo útil si no son procesados o relacionados de alguna manera. Muy bien. gis. mismo que se encuentra sustentado en gran medida en el trabajo del norteamericano Claude Shannon presentado en 1948. PROCESO PASO 2: SALIDA PASO 3: Cruzar calle Preguntar Æ Si L = Verde. es cualquier carácter que produce una imagen en nuestro cerebro. 345. De lo contrario ir a paso 1 1. conceptos disponibles para ser procesados o convertidos en información mediante un sistema de procesamiento.3.3 Datos. El ejemplo anterior es elemental. una persona adulta. es como aquel hecho que nos da una idea básica de algo. ENTRADA PASO 1: Checar la luz del semáforo. De aquí que la información es el proceso que se hace de los datos. borrador. La forma más sencilla de definir un dato. es muy útil. .

2. De esta forma.2 Datos alfanuméricos.3. los datos que maneje una computadora deben ser representados de la forma más clara posible. Las variables que representen datos numéricos serán identificadas sólo con su nombre. cómo su nombre lo indica. De esta manera diremos que existen datos numéricos enteros y reales (con decimales). La definición de los tipos de datos que utilizaremos en lenguajes algorítmicos o diagramación es la más sencilla (cabe señalar que todos los lenguajes de computadora manejan muchos tipos de datos). Internamente. 1. Por ejemplo: $A. Los datos lógicos sólo permiten almacenar dos tipos de valores: cierto y falso.1 Datos numéricos. 1. Ejemplos: A. $Nombre. Las operaciones que pueden realizarse entre los datos tendrán que hacerse por medio de operadores. Edad. 1.3.2 Datos lógicos. Los datos numéricos.1. no todos los operadores pueden aplicarse a todos los tipos de datos. Como mencionábamos en puntos anteriores. mismos que determinan las operaciones que cada uno puede soportar (por ejemplo. X1.2.3 Operaciones. . Este tipo permite manipular datos que contengan números y letras. serán aquellos que sólo pueden representar números. etcétera.1 presentamos los operadores aritméticos que son válidos en lenguajes algorítmicos. no es posible obtener el cociente de dos nombres de personas. en la tabla 1. operación matemática que sí sería válida para dos números).2. etcétera. Las variables alfanuméricas deben representarse con un signo de pesos antes de la mismas.2 Tipos de datos. los datos lógicos son devueltos por expresiones dónde se realiza alguna condición o pregunta. $Y2. Estos rangos determinan lo que se conoce como tipos. se clasifican de manera que puedan representar varios rangos. 1.3. Por lo general. por esta razón.3.3. Enseguida lo veremos.

Tabla 1. por otra parte. La tabla 1.1 podemos ver la columna llamada precedencia. Operadores relacionales. se muestran en la tabla 1. . la cual nos indicará el orden en que se ejecutan los operadores cuando son encontrados en una expresión (este asunto se tratará con más detalle en el punto 1. PRECEDENCIA Más alta Más baja OPERADOR ↑ * / + % OPERACIÓN Exponenciación Multiplicación División Suma Resta Módulo En la Tabla 1. OPERADOR = > < >= <= OPERACIÓN Igual Mayor que Menor que Mayor o igual que Menor o igual que Los operadores lógicos.2 nos muestra los operadores relacionales. Los operadores aritméticos y su orden de precedencia. En ellos si existe orden de precedencia.2.Tabla 1. Estos tienen el mismo orden de precedencia y debe hacerse una diferenciación entre el operador relacional igual(=) y el operador de asignación igual(=).4).1.3.

PRECEDEDENCIA Más alta Más baja OPERADOR NOT AND OR OPERACIÓN Negación Conjunción Disyunción Para finalizar la parte de operadores mencionaremos que existe el operador asignación.2. la cual definimos como un conjunto de constantes. Como observará el lector. hemos venido manejando desde puntos anteriores el concepto de expresión. 1. lo cual nos devolverá un valor lógico cierto o falso dependiendo cuánto vale dicha variable A. La siguiente es una expresión: A+3 . El operador ← indica que el resultado de la expresión que esté a su lado derecho será pasada a la variable que se localiza en su lado izquierdo: A←4+5 en la anterior expresión asignamos a la variable A el valor de 4+5 (esto es. Cuando referimos un tipo de datos. Una variable es un objeto (dato en la memoria de la computadora) que puede cambiar su valor a lo largo de la ejecución o funcionamiento de un programa. A vale 9). en cuyo caso se expresaría con el operador de relación = de la forma: A=4+5 en el caso anterior estamos haciendo la pregunta: ¿ Es la variable A igual a 4+5?. Lo cual difiere de preguntar si la variable A es igual a nueve. lo hacemos en forma de constantes o variables. las cuales mantienen fijo su valor mientras un programa se ejecuta.4 Constantes. variables y expresiones. variables y operadores. el cual permite representar el paso del valor de una expresión a una variable.Tabla 1. Las expresiones se componen de operadores y operandos. Operadores lógicos. El caso contrario lo representan las constantes.

C←10. lo cual como observamos es falso. C←10. En la segunda quizá se pueda observar alguna ambigüedad.5 7. este se realiza primero que “+”. D←1 EXPRESIÓN B+C+D/2 (B+C+D)/2 A↑2/2+D-B/2↑2 ((A+B)=3) AND (C↑3>1000) VALOR DEVUELTO 14. D←1 EXPRESIÓN A+C-D B+C/2 A+D-B↑2 A+B=3 VALOR DEVUELTO 12 10 -21 FALSO La primera expresión no tiene problema alguno.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). La cuarta expresión. B←5. a diferencia de las anteriores que son aritméticas. Suponga que las variables tienen los siguientes valores: A←3. Las expresiones suelen tomar aspecto un poco más complejos. En la tercera expresión el resultado es -21 porque primero se efectúa la exponenciación de B↑2 (que es igual a 25). devuelve un valor lógico de falso: estamos preguntando ¿Es la suma de A+B (la cual es 8) igual a 3?. pero queda liberada cuando recordamos el orden de precedencia: como encontramos el operador “/”. de allí que ambas expresiones aunque similares en apariencia difieran . Las expresiones aritméticas arrojan valores numéricos. las lógicas valores lógicos(cierto o falso).5 13 FALSO Las primeras dos expresiones nos indican que el uso de paréntesis puede alterar el orden de precedencia (siempre se evalúan primero los paréntesis más internos). luego se realiza la resta a la suma de A+D (igual a 4) y se le resta el resultado B↑2 dándonos –21. por tal razón el resultado es 10. observemos las siguientes suponiendo: A←2.el cual tiene mayor orden de precedencia que la suma. Existen dos tipos de expresiones: aritméticas y lógicas. Veamos ahora unos ejemplos de expresiones. B←4.

En la cuarta expresión.. luego las divisiones y finalmente las sumas y restas en el mismo orden.. 1. 2.(A/2+3*C-(4*B/(C-B)*7) )↑3 _______ _______ _______ _______ _______ _______ _______ .Que tome por entrada tres variables numéricas que representen las calificaciones de un alumno..C-D*5/A+4↑2*4 d). d). Considere un dólar=9. Recuerde °F=1. El algoritmo debe calcular el promedio de dicho alumno e indicar mediante un mensaje si su promedio es aprobatorio o no.Que tenga por entrada una variable numérica que represente una cantidad en grados cenígrados (°C) y la convierta a su equivalente en grados farenheit (°F). D←1 y encuentre el valor de las expresiones siguientes: a). se realiza una conjunción que involucra dos operadores relaciones.drásticamente en el resultado.. uno de igualdad y otro de mayor. la expresión (A+B)=3 es falsa(4+3 no es igual a 3)..Suponga los siguientes valores para las variables indicadas: A←3.. C←10.Que acepte como entrada una variable numérica que represente la edad de una persona e indique mediante un mensaje si dicha persona puede o no votar. c).(A↑2+B↑2) ↑(1/2) c). también lo es C↑3>1000 (1000 no es mayor que 1000). primero se evalúan las potencias.. En la tercera expresión nos volvemos a encontrar con la precedencia de los operadores: recordando....8-10%2+C f).Elabore los siguientes algoritmos: a).5 pesos. Ejercicios propuestos para el capítulo... b).(A+B/2-1)-(B↑2)*2 b).. de tal forma que la conjunción de estas expresiones lógicas resulta en un valor lógico final falso. B←5.4*C-B g).(C-5)=B e).8°C+32.Que en su entrada acepte una cantidad numérica que indique un valor en dólares y que lo convierta a pesos mexicanos.

1 Definición Un diagrama de flujo es la representación gráfica de un algoritmo.2 Símbolos usados en los diagramas de flujo En los diagramas existen bloques funcionales que representan las operaciones descritas para los algoritmos en el Capítulo I. 2.1 nos muestra las equivalencias que existen entre los algoritmos y diagramas de flujo. cada parte de un algoritmo tiene un equivalente en un diagrama de flujo. Esta es una forma más explícita de representar problemas. la cual. La figura 2. . se ajusta a las estructuras lógicas de todos los lenguajes de programación existentes. por esta razón.CAPÍTULO II DIAGRAMAS DE FLUJO 2.

Figura 2. 2. Etapa en un algoritmo Entrada: Figura equivalente en diagramas de flujo Proceso: Salida: Generalmente un diagrama de flujo deberá tener la identificación tanto de su inicio como su fin.1. a la izquierda tenemos el algoritmo y a la derecha el diagrama de flujo equivalente: . se utilizará el siguiente símbolo: Inicio Fin Cada uno de los bloques funcionales deben ser unidos mediante flechas que indiquen el flujo de la lógica del problema en cuestión. En este punto describiremos la implementación de diagramas de flujo tomando como referencia algunos de los algoritmos del capítulo pasado. Ejemplo: Elaborar un diagrama de flujo que tenga por entrada (lea) dos variables numéricas y que calcule e imprima su suma. Simbología básica equivalente para algoritmos y diagramas de flujo.3 Implementación de diagramas de flujo a partir de algoritmos. La solución se formula como sigue. En ambos casos.

vía teclado.ALGORITMO: INICIO ENTRADA: PASO 1: A. B indica que un programa esperará a que el usuario. El símbolo de lectura de las variables A. Los símbolos que usaremos a lo largo del curso varían de significado ligeramente por parte de algunos autores. nosotros generalizaremos usando sólo el mostrado previamente. luego un proceso de asignación para después imprimir o dar salida a un resultado. Observe el lector también como existen los símbolos de inicio y fin del diagrama y que el flujo de la ejecución de cada una de sus partes lo ilustran claramente las flechas. al algoritmo le corresponde exactamente un bloque funcional en el diagrama. después del inicio sigue una lectura. Ejemplo: Hacer un diagrama de flujo que lea tres números y que calcule e imprima su promedio. . es decir. por ejemplo. Una vez asignados los valores a las variables en el bloque de lectura se elaborará un proceso de asignación de la suma de A. los cuales serán asignados a las respectivas variables. el símbolo de salida puede tener una connotación diferente si se usa para dar salida a pantalla o impresora. la cual se imprimirá seguidamente para terminar. enseguida se nos indica que el diagrama termina.B PROCESO: PASO 2: C = A + B SALIDA: PASO 3: C C ← A+B C FIN Como podemos observar en el ejemplo anterior. B a la variable C. B A. introduzca dos valores numéricos.

y si es posible que sean sólo verticales y horizontales (no deben cruzarse ni estar inclinadas).. se deben usar los conectores sólo en casos estrictamente necesarios.. 6.Las líneas de conexión siempre deben ser rectas. C PROCESO: P = (A + B + C)/3 SALIDA: P INICIO A. esta tarea se facilitará. 2.Realizar un diagrama claro y estructurado procurando que la parte central del diagrama sea la parte central de la hoja de papel.. 4.Todo diagrama debe tener un principio y un fin.. 3. Las siguientes líneas son algunas reglas que ayudan a la estructuración de diagramas de flujo(las cuales fueron tomadas del libro de Joyanes): 1. pero sí podemos decir que siguiendo algunos consejos prácticos..Se deben dibujar todos los símbolos de modo que se pueda seguir el proceso visualmente de arriba abajo (diseño top down) y de izquierda a derecha. . B. Así mismo.B. pero no por eso algunas serán incorrectas.C P ← (A+B+C)/3 P FIN 2. Es necesario advertir al lector que no existen recetas concretas para solucionar problemas mediante diagramas de flujo o algoritmos.En las operaciones lógicas recurrir preferentemente a la lógica positiva y que a la lógica negativa.Evitar la utilización de terminología específica de un lenguaje de programación.. También debemos dejar claro que hay problemas que pueden tener muchas representaciones en diagramas. 5.ENTRADA: A.Las líneas que enlazan símbolos entre si deben estar todas conectadas. 7..4 Reglas para la construcción de diagramas de flujo.

5 Comprobación de diagramas de flujo.2. Como hemos dicho hasta el momento. La siguiente es una lista de ventajas y desventajas tomadas también del autor Joyanes: . Si sustituimos el valor obtenido de X en la ecuación original (Bx + A = 0) veremos que la igualdad se cumple.5 Ventajas y desventajas de los diagramas de flujo. existen algunos inconvenientes en su uso. introduciendo los datos tomados inicialmente en los momentos oportunos y ver cómo responde el diagrama de flujo y si los resultados son correctos y coherentes. Este fase ayudará a comprobar si el diagrama tiene algún fallo y en su caso a corregirlo. 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. Al lector le corresponderá probar el diagrama con otros valores. Según Joyanes. A la metodología descrita la llamaremos corrida a mano y suele ser muy útil en la comprensión de problemas representados mediante diagramas. B X ← . 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 símbolos. con sus operaciones correspondientes.A/B X FIN Comprobación del diagrama: Suponiendo que damos los valores 4 y 2 respectivamente a las variables A. INICIO A.A / B). los diagramas de flujo presentan características favorables para ser usados en la solución de problemas que serán traducidos a un lenguaje de computadora. los cuales deben tenerse presentes. pero aún con todo esto. lo cual corresponde a un valor de –2. de la forma Bx + A = 0 El diagrama debe imprimir el valor de la raíz ( x = . 2. Ejemplo: Hacer un diagrama de flujo que lea una variable A y otra B que representen los coeficientes de una ecuación de 1er grado.

. bueno. al lado derecho del diagrama tenemos su codificación en el lenguaje de programación Pascal. B y mediante un proceso calcula su suma y luego el promedio de las mismas. 4..Codificación eficaz de los programas. 5..No existen normas fijas para la elaboración de diagramas de flujo que permitan incluir todos los detalles que el usuario desea introducir. Analicemos la definición dada con un ejemplo. su flujo de control (Joyanes).Depuración y pruebas ordenadas de los programas.. Pero suponga el lector que ya tiene su diagrama debidamente probado y que aún no sabe en qué lenguaje se va a codificar.Rápida comprensión de las relaciones.. Seguido.. 2. el pseudocódigo es otra herramienta muy útil para implementar programas de computadora y podemos definirlo como una técnica para expresar en lenguaje natural la lógica de un programa.Como ventajas principales tenemos: 1.Los diagramas complejos y detallados suelen ser laboriosos en planteamiento y elaboración. Por otra parte. para esta situación es posible utilizar pseudocódigo y dejarlo listo para codificar en el lenguaje que se decida posteriormente.. Veamos primero el diagrama: . Al igual que los diagramas de flujo. 2. 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 números y calcular e imprimir en pantalla su promedio. 2. El siguiente diagrama lee dos variables numéricas A.Documentación adecuada de los programas.6 Pseudocódigo. Las desventajas que se pueden observar se resumen así: 1. imprime dicho valor previamente calculado. es decir.Análisis efectivo de las diferentes secciones del programa. 3.

b: integer. 2.50). a). si deseáramos escribir pseudocódigo para el diagrama. Write(‘El promedio es: ’. el pseudocódigo es un paso cercano a la codificación del programa (su escritura en un lenguaje de programación). a. Begin Write(‘Teclee el primer número:‘).p:10:2).INICIO A. lo haríamos así: Inicio Escribir mensaje “Teclea el primer número” Leer variable A Escribir mensaje “Teclea el segundo número” 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. P:= S/2. readln(b).. Write(‘Teclee el segundo número:’). . S:= A + B. S ← A+B P ← S/2 P FIN Ahora bien. readln(a).7 Ejemplos y solución de problemas relacionados. sólo expresa en lenguaje más común la posible escritura de código. B Codificación: Program promedio. p: real.Hacer un diagrama de flujo que lea una cantidad en dólares y que la convierta en su equivalente en pesos (suponiendo que un dólar = $ 9. es decir. pero concretamente no representa alguna instrucción de un lenguaje. End. Var s.

5 P ← D*A P P FIN FIN Nota: Observe las dos soluciones alternativas planteadas.8*C+32 F FIN . INICIO C F ← 1. A P ← D*9.INICIO INICIO D D.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). b)..

Hacer diagrama de flujo que lea una cantidad en pesos y que la convierta en dólares (suponiendo que el dólar = $ 10).Hacer diagrama de flujo que lea una cantidad en ° C y que la convierta en ° K. INICIO P D ← P/10 D FIN d). INICIO C K ← C+273 K FIN .c)...

e).Hacer diagrama de flujo que lea una cantidad en equivalente en grados ° F y en ° K. INICIO A.Hacer diagrama de lujo que lea los lados de A. F FIN f).. B de un triángulo y que calcule e imprima la hipotenusa. INICIO ° C y que imprima su C K ← C+273 F ← 1..B C ← (A↑2 + B↑2)↑(1/2) C FIN .8*C+32 K.

Hacer diagrama de flujo capaz de resolver una ecuación de segundo grado. X2 FIN . B.B. C DIS ← (B↑-4*A*C)↑(1/2) X1 ← (-B + DIS) /2*A X2 ← (B + DIS)/2*A X1 ..g).C P ← (A+B+C)/3 P FIN h). INICIO A..Hacer diagrama de flujo que lea e imprima el promedio de 3 calificaciones de un alumno. INICIO A.

. 2. El diagrama debe calcular e imprimir la posible energía que puede liberar ese objeto según la teoría general de la relatividad. 7. El diagrama debe imprimir la cantidad equivalente en minutos. suponiendo que Z =√(X + 7)2 + 4 3.Elabore un diagrama de flujo que lea una variable numérica que represente el radio de un círculo y que calcule e imprima su área.Elabore un diagrama de flujo que lea dos variables numéricas que representen respectivamente la velocidad y el tiempo que dura el recorrido de un móvil.Hacer un diagrama de flujo que lea una cantidad numérica que indique cierto número de años.Haga un diagrama de flujo que lea una variable numérica X y que calcule e imprima el valor de Z. ...Realice un diagrama de flujo que lea tres variables numéricas X. donde: W = XY+3YX-[3/4Z-(Y2+Z3)] 6... 4. Estas dimensiones deben ser dadas en centímetros y el diagrama debe imprimir el área de dicho rectángulo en metros cuadrados..Construya un diagrama de flujo que lea una variable numérica que represente la masa de un objeto.Hacer diagrama de flujo que lea dos cantidades numéricas que representen las dimensiones de los lados de un rectángulo. Z y determine el valor de la ecuación W. 1. Y. 5. El diagrama debe calcular e imprimir la distancia que recorre dicho móvil..Ejercicios propuestos para el capítulo.

CAPÍTULO III CONCEPTOS DE DIAGRAMAS DE FLUJO 3. Pues bien. En los procesos repetitivos es necesario contar los sucesos que ocurren dentro de un ciclo. y por ahora no son parte de atención. el cual reside en una parte de la memoria de la computadora y se incrementa o decrementa cada vez que se entra al ciclo. una de esas formas es el contador. estas formas de asignación manipulan variables. Obviamente. Existen algunas formas de asignación que gozan de mucha utilidad en programación. las cuales reciben nombres técnicos. El . para llevar un control de esos eventos se hace uso de un contador. estos sucesos pueden ser de muy diversos tipos.1 Contador.

En este tipo de variables. La figura 3. . como su nombre lo indica.2 Sumador. Por ahora sólo es importante saber que existen y que cuentan con características que las identifican claramente. Como ejemplos de contador tenemos: C ← C+1 N ← N+1 3.1 muestra en forma gráfica los tres tipos de variables descritas previamente.3 Multiplicador. las cuales veremos cuando toquemos el tema de ciclos y arreglos. Una variable tipo multiplicador. tienen infinidad de aplicaciones. veamos ahora unos ejemplos de sumadores: C ← C+T S ← S+N 3.incremento (ya sea positivo o negativo) en un contador siempre es constante. es aquella que multiplica valores. sea constantes o variables. 1987). Este tipo de variable almacena cantidad variables resultantes sumas sucesivas (Joyanes. Ejemplos: C ← C*2 N ← N*X Las tres herramientas mencionadas en lo que va de estos apuntes. el incremento es siempre una variable.

4 Control de flujo en un diagrama. se ejecuta todas ellas de manera lineal ( de arriba hacia abajo). respectivamente. Para llevar a cabo sentencias condicionales –el control del flujo en un diagrama-.Figura 3. en los diagramas que se han visto. un sumador y un multiplicador. Muchas veces será necesario cambiar el flujo de un diagrama tomando en cuenta ciertas condiciones. es decir. tenemos diagramas que implementan un contador. no ha sido interrumpida. De izquierda a derecha. Hasta este momento la lógica de ejecución de instrucciones. INICIO INICIO INICIO C← 1 C← C+1 X← 1 X← 1 S← 1 X← X*1 S← S+X X C FIN S FIN FIN 3. se utiliza el siguiente símbolo: FALSO CONDICIÓN CIERTO .1.

Dependiendo cuál es la respuesta resultante a la condición.5 Ejemplos y resolución de problemas relacionados. si es falsa o a la derecha si es verdadera. el flujo del problema irá. INICIO E NO "LO SIENTO" E>=18 SI "FELICIDADES" FIN . a la izquierda. 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. 3.

en cuyo caso debe imprimir el cuadrado del número y en caso contrario debe imprimir la raíz cúbica del mismo. INICIO C F ← 1.Ejemplo: Hacer diagrama de flujo que lea un número que represente una temperatura en ° C y que la convierta a ° F. INICIO X NO A ← X↑(1/3) X>=1000 SI A ← X↑2 A FIN . El diagrama debe determinar si la temperatura convertida es mayor a 300 ° F.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 número y que compare si ese número es mayor a mil.

en este cado debe calcular e imprimir respectivamente su cuadrado y raíz cuadrada. X2 FIN . INICIO N M ← N MOD 3 NO X1 ← N * N * N M= 0 SI X1 ← SQR (N) X2 ← SQRT (N) X1 X1. En caso contrario que calcule e imprima su valor cubicado.Ejemplo: Hacer diagrama de flujo que lea un número y que determine si es múltiplo de tres.

3X+5Y≥4 INICIO X. INICIO X. Y) y que determine si se satisface la siguiente ecuación.Ejemplo: Hacer diagrama de flujo que lea dos variables numéricas y que evalúe la propiedad de tricotomía en dichos números. Y "No satisface la ecuación" NO 3 X + 5 Y >=4 SI "Si satisface la ecuación" FIN . 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.

Y1.Ejemplo: Hacer diagrama de flujo que lea cuatro variables: X1. 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 .Y1. Y) e indicar sus respectivas medias son iguales o cual de ellas es la mayor. El diagrama debe calcular la media aritmética de las variables (X.X2. INICIO X1.Y2. X2.

1 Introducción. . la entrada se producirá con una o varias instrucciones y la salida del bucle – fin del proceso repetitivo-. Las operaciones. pero con datos y resultados diferentes. son procesos que ejecutan una serie de instrucciones en un número determinado de veces. En el caso de un programa de computadora. el “bucle” o “lazo” es un conjunto de instrucciones que deben ser ejecutadas un cierto números de veces(cada repetición también se conoce como iteración). Un bucle que no controle su fin.CAPÍTULO IV ESTRUCTURAS ITERATIVAS 4. Las estructuras iterativas (también llamadas “bucles”).1. o instrucciones. serán siempre las mismas. tiene la forma mostrada en la Figura 4. recibe el nombre de bucle infinito o sin fin. se producirá cuando se cumple o no una condición. en una entrada y una salida.

2 ilustra que el proceso o los procesos del bucle serán repetidos mientras se cumpla la condición. Figura 4. Comprobación de la condición. La Figura 4. Modificación.1. Cuerpo. contará con las siguientes partes: • • • • Preparación y arranque.Figura 4.2. ya que no tendría mucho sentido no poder detener procesos. Acción 1 Acción 2 Lo más deseable en un programa es que nunca se caiga en un ciclo infinito.2. uno que es finito. El esquema de un bucle finito se muestra en la Figura 4. es decir. Un ciclo tipo de este tipo no asegura que los procesos que pertenecen . Estructura general de un bucle infinito. un bucle que no es infinito.2 Estructura repetir-mientras. mientras que esta sea evaluada como verdadera. es decir. En general. Estructura general de un bucle finito tipo repetir-mientras. Falso ¿Condición? Cierto Proceso(s) 4.

nunca se ejecutarán el o los procesos. dentro de los procesos que contiene el bucle.3 Estructura repetir-hasta.3 observamos otra estructura de bucle conocida como repetirhasta. 4. Esta clase de bucle asegura la entrada a el mismo al menos una vez. La Figura 4.a él sean ejecutados.4 Ciclos automáticos. . 4. no necesita incrementarse de manera explícita dentro del mismo. Estructura general de un bucle finito tipo repetir-hasta.4 ilustra una estructura general de un ciclo automático. Figura 4. un contador que sea la variable de control que indique cuántas veces ser ejecutará el ciclo. En Figura 4.3. Proceso(s) Falso ¿Condición? Cierto En la mayoría de los problemas que se resuelvan con estructuras tipo repetir-mientras y repetir-hasta es frecuente encontrar. es decir. a diferencia de las estructuras de bucle tipo repetirmientras. en la podemos apreciar que el o los procesos serán ejecutados mientras que la condición no sea satisfecha. Este tipo de bucles se les llama automáticos porque la variable que controla el número de iteraciones es incrementada de manera interna por el bucle. ya que si la condición de entrada no es satisfecha.

fin. incremento Proceso(s) En un ciclo automático. Estructura general de un ciclo automático. Ejemplo: Hacer un diagrama de flujo que genere números pares desde 2 hasta infinito.4.Figura 4.5 Ejemplos y resolución de problemas relacionados. INICIO C← 0 C← C+2 C . var=inicio. 4. el o los procesos serán ejecutados mientras que la variable de control (var) pasa del valor inicial al valor final en el incremento especificado.

INICIO C ← -1 C← C+2 C Ejemplo: Hacer diagrama de flujo que genere números enteros sucesivos desde 1 hasta infinito.Ejemplo: Hacer diagrama de flujo que genere números impares desde 1 hasta infinito. INICIO C← 0 C← C+1 C .

Ejemplo: Hacer diagrama de flujo que genere números de tres en tres hasta infinito. INICIO C← 0 C← C+3 C .

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

C← 0 S← 0

C← C+1

N

S← S+N

NO C = 1000 SI P ← S / 1000

P

FIN

I

Ejemplo: Hacer diagrama de flujo que genere números pares de 2 hasta 200.
INICIO

C← 0

C← C+2

C

NO C = 200 SI FIN

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

N

C← 0

C← C+1

C

NO C=N SI FIN

Ejemplo: Hacer diagrama de flujo que calcule la media aritmética de N números. INICIO N C← 0 S← 0 P← 0 M C← C+1 S← S+M NO C=N SI P← S/N P FIN .

Ejemplo: Hacer diagrama de flujo que lea un número y que determine si es par o impar. impares de 1-19. el diagrama debe generar números pares de 2 – 20 y si no. si el número es par. INICIO C "Número impar" NO C MOD 2 = 0 SI "Número par" C ← -1 C← 0 C = 19 NO C ← C +2 SI SI C = 20 NO C← C+2 C C FIN .

INICIO N MAY ← -32000 C← 0 C← C+1 X X > MAY SI MAY ← X NO NO C=N SI MAY FIN .Ejemplo: Hacer diagrama de flujo que lea n números y que determine cual de ellos es el mayor.

2.… INICIO A← 0 B← 1 A.B C ← A+ B C A← B B← C Ejemplo: Hacer diagrama de flujo que imprima números múltiplos de cinco desde cinco hasta quinientos.13.5.1.3. INICIO C← 0 C← C+5 C NO C = 500 SI FIN .1.8.Ejemplo: Hacer diagrama de flujo que imprima la sucesión de Fibonacci: 0.21.

Ejemplo: Hacer diagrama de flujo que imprima números de uno en uno hasta 50 y que imprima el cuadrado de cada uno. INICIO C← 0 C← C+1 N← C*C C N NO C = 50 SI FIN .

Hacer un diagrama de flujo que lea un número N y que genere una secuencia de números impares menores o iguales que N...Hacer un diagrama de flujo que lea un número N y que genera la siguiente secuencia: 1 .. 6. 1. 4. 16 . .. 1 2 .. 5. 3.... 3 3 .Elabore un diagrama de flujo imprima 500 veces la cadena “Hola”.Elabore un diagrama de flujo que lea N números y que indique cuántos de ellos son pares y cuántos múltiplos de 3. N2 2. N .Hacer un diagrama de flujo que lea un número N y que genere una secuencia de números primos menores o iguales que N.. . ...Hacer un diagrama de flujo que lea un número N y que genere la sucesión de Fibonacci para números menores o iguales que N. .Ejercicios propuestos para el capítulo. 9 4 .

A cantidad máxima de elementos que podemos almacenar en un vector se le llama dimensión. No es posible acceder a todos los datos de un arreglo al mismo tiempo. que indica a qué elemento del vector se está haciendo referencia. En la mayoría de los lenguajes de computadora.CAPÍTULO V ESTRUCTURAS DE DATOS BÁSICAS 5.1 Vectores. . Un vector es un conjunto de elementos relacionados. todos los elementos de un vector(o arreglo unidimensional) son del mismo tipo. llamado índice. en vez de ello se tiene que usar un nombre de arreglo y un número. Para poder hacer referencia a los elementos de un vector es necesario que exista un nombre para el mismo.

X= 457 [1] 324 [2] 3 [3] 55 [4] La Figura No.2.1. N X[K] X[K] FIN .1 Ejemplos y resolución de problemas relacionados con vectores. Ejemplo: Hacer diagrama de flujo que lea e imprima un arreglo de N elementos. INICIO N K ← 1. X[2]=324. 5.1 muestra un arreglo de enteros llamado X que tiene una dimensión de 4. Representación esquemática de un vector. 5. Cada uno de estos elementos individuales puede ser tratado como cualquier variable.Figura 5. es decir. Si queremos hacer referencia al segundo elemento del arreglo X (el número 324) tendríamos que especificar X[2](se lee como X de 2).

INICIO N S← 0 K ← 1. N X[K] S ← X[K] + S P← S/N P FIN .Ejemplo: Hacer diagrama de flujo que lea un arreglo de N elementos y que imprima su media aritmética.

N NO X[K] < 0 SI P← P+1 P FIN . INICIO N P← 0 K ← 1.Ejemplo: Hacer diagrama de flujo que lea un vector numérico de N elementos y que indique cuántos de ellos son negativos. N X[K] K ← 1.

.Ejemplo: Hacer un diagrama de flujo que lea un vector de N elementos que calcule la siguiente norma: (X1-M)+ (X1-M)+. INICIO N S← 0 K ← 1.M) DM ← S2 / N DM FIN . N X[K] S ← S + X[K] M← S / N S2 ← 0 K ← 1. N S2 ← S2 + (X[K] .+ (XN-M) Norma = ----------------------------------------N Donde M es la media aritmética del vector X..

N X[K] Y[K] K ← 1. N Z[K] ← X[K] + Y[K] Z[K] FIN . INICIO N K ← 1.Ejemplo: Hacer diagrama de flujo que lea dos vectores de dimensión N y que calcule e imprima la suma de ambos.

Ejemplo: Hacer diagrama de flujo que lea una matriz de tres por dos (3 X 2). Las matrices están organizadas en filas y columnas. 5.2 Matrices.J] FIN . donde N representa la cantidad de renglones(llamados también filas) y M las columnas.1 Ejemplos y resolución de problemas relacionados con matrices.2. el acceso a los elementos individuales debe hacerse en la forma X[i. Representación esquemática de una matriz.2] es 342.2 podemos observar la representación esquemática de una matriz de enteros llamada X. Figura 5. 2 X[I. es decir. En la matriz X. donde i representa el número de renglón y j el número de columna. la cual tiene una dimensión 4x3. 3 J ← 1.5.2. por lo tanto la dimensión de las mismas será dada en la forma NxM. X= [1] [2] [3] [4] 457 34 2 21 [1] 324 34 342 3 [2] 3 0 13 32 [3] En la Figura 5. por lo tanto X[3. para hacer referencia a cualquiera de sus elementos son necesarios dos índices. INICIO I ← 1.i]. Un matriz es un arreglo bidimensional.

J] I ← 1. N J ← 1. N J ← 1.J] FIN .Ejemplo: Hacer diagrama de flujo que lea e imprima una matriz de N X M elementos. INICIO N. M X[I.M I ← 1. M X[I.

N J ← 1. INICIO INICIO N . M Y[I. N I ← 1.J] Y[I. N I ← 1. El diagrama debe calcular e imprimir el producto escalar de ambos. N FIN J ← 1.J] equivale a . J ← 1.J] I ← 1. M J ← 1.J] ← K*X[I. M Y[I.J] I ← 1. M...J] ← K*X[I. M Y[I. K I ← 1.J] FIN .Ejemplo: Hacer diagrama de flujo que lea matriz de dimensión NxM y un escalar . K N . M X[I.J] X[I. N J ← 1.. M.

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

6.Hacer un diagrama de flujo que lea una matriz entera de dimensión NxM y que calcule el promedio de sus elementos. 5.Hacer diagrama de flujo que lea un vector de N elementos y que indique cuantos de ellos múltiplos de tres y cuántos múltiplos de 5. ..Hacer un diagrama de flujo que lea una matriz entera de dimensión NxM y que calcule su matriz transpuesta..Ejercicios propuestos para el capítulo. El diagrama debe calcular el promedio por fila e cual de tales promedios es el mayor. 10.Hacer diagrama de flujo que lea una matriz de N X 3... 3.. 7....Hacer diagrama de flujo que lea un vector de N elementos y que indique cuantos de ellos son pares.Hacer un diagrama de flujo que lea dos matrices y que calcule su producto....Hacer un diagrama de flujo que lea dos matrices y que calcule su suma. 2.Hacer un diagrama de flujo que lea un vector de dimensión N y que calcule la siguiente norma: (X1-M)2+ (X1-M) 2+.Hacer una diagrama de flujo que lea una matriz de caracteres de dimensión NxM y que indique cuántos de los caracteres de tal matriz son letras “a”.. 9.Que lea dos vectores numéricos de dimensión N y que indique cuál de ellos tiene la mayor media aritmética de sus elementos. 4. 1.+ (XN-M) 2 Norma = ----------------------------------------N2 Donde M es la media aritmética del vector X. 8.

El manejo de subprogramas en diagramación se observa el esquema mostrado en la Figura 6.1.1 Definición. La programación estructurada consiste en descomponer sucesivamente un problema en módulos que tratarán y programarán independientes unos de otros. . A estos módulos también se les llama subprogramas.CAPÍTULO VI SUBRUTINAS 6.

. Subprogram a A Subprogram a B Fin Fin . Operación 1 Operación 2 .Figura 6.1. . Subprogram a A Subprogram a B ? Operación 1 Operación 2 . Esquema para el uso de subprogramas en diagramación.

.....Sum a de dos núm eros 2.Suma de dos números 2. N c X[i] Según Opc 1 Ot ro 2 Fin s=s+x[i] Subprogram a A P =s/N Subprogram a B P Falso Opc=3 Ciert o Fin Fin ..T erm inar algorit m o a. Inicio Subprogram a A Subprogram a B Menu 1.P rom edio de N núm eros 3.Ejemplo: Elaborar un diagrama de flujo que genere un menú con tres opciones: 1.Promedio de N números 3.Terminar el algoritmo El diagrama debe desarrollar las opciones 1 y 2 como subprogramas.b N s=0 c=a+b Opc i=1.