SEP
SEIT
DGIT
INSTITUTO TECNOLÓGICO DE NUEVO LAREDO DEPTO. DE SISTEMAS Y COMPUTACIÓN
DISEÑO DE ALGORITMOS
Por: Ing. Bruno López Takeyas www.itnuevolaredo.edu.mx/takeyas
Diseño de Algoritmos
Ing. Bruno López Takeyas
CONTENIDO Pág.
1.- CONCEPTOS BÁSICOS DE ALGORITMOS………… 1.1. Definición de algoritmo…...……………………………………………… 1.2 Características de los algoritmos………………………........................
2.- METODOLOGÍA PARA LA SOLUCIÓN DE PROBLEMAS MEDIANTE COMPUTADORAS……… 2.1. Análisis del problema...………………………………………………….. 2.2. Diseño del algoritmo……………………………………………………... 2.3. Resolución del algoritmo en la computadora……………………….....
3.- DATOS, TIPOS DE DATOS Y OPERACIONES FUNDAMENTALES……………………………………… 3.1. Datos y tipos de datos…………………………………………………… 3.2. Datos numéricos………………………………………………………….. 3.2.1. Datos numéricos enteros…………………………………………. 3.2.2. Datos numéricos reales…………………………………………… 3.3. Datos lógicos (booleanos)………………………………………………. 3.4. Datos tipo caracter……………………………………………………….. 3.5. Datos tipo cadena (string)……………………………………………….. 3.6. Variables…………………………………………………………………... 3.7. Constantes………………………………………………………………… 3.8. Operaciones fundamentales…………………………………………….. 3.8.1. Expresiones aritméticas…………………………………………... 3.8.1.1. Reglas de prioridad (jerarquía de las operaciones aritméticas)………………………………………………………… 3.9. Ejercicios………………………………………………………………….. 3.10. Expresiones lógicas (booleanas)……………………………………… 3.10.1. Operadores lógicos……………………………………………. 3.11. Funciones internas……………………………………………………… 3.12. Ejercicio…………………………………………………………………..
4 4 6 7 7 8 9 10 10 10 10 11 11 11 12 12 13 13 13 15 15 16 17 18 19
2
Diseño de Algoritmos
Ing. Bruno López Takeyas
CONTENIDO Pág.
1.- CONCEPTOS BÁSICOS DE ALGORITMOS………… 1.1. Definición de algoritmo…...……………………………………………… 1.2 Características de los algoritmos………………………........................
2.- METODOLOGÍA PARA LA SOLUCIÓN DE PROBLEMAS MEDIANTE COMPUTADORAS……… 2.1. Análisis del problema...………………………………………………….. 2.2. Diseño del algoritmo……………………………………………………... 2.3. Resolución del algoritmo en la computadora……………………….....
3.- DATOS, TIPOS DE DATOS Y OPERACIONES FUNDAMENTALES……………………………………… 3.1. Datos y tipos de datos…………………………………………………… 3.2. Datos numéricos………………………………………………………….. 3.2.1. Datos numéricos enteros…………………………………………. 3.2.2. Datos numéricos reales…………………………………………… 3.3. Datos lógicos (booleanos)………………………………………………. 3.4. Datos tipo caracter……………………………………………………….. 3.5. Datos tipo cadena (string)……………………………………………….. 3.6. Variables…………………………………………………………………... 3.7. Constantes………………………………………………………………… 3.8. Operaciones fundamentales…………………………………………….. 3.8.1. Expresiones aritméticas…………………………………………... 3.8.1.1. Reglas de prioridad (jerarquía de las operaciones aritméticas)………………………………………………………… 3.9. Ejercicios………………………………………………………………….. 3.10. Expresiones lógicas (booleanas)……………………………………… 3.10.1. Operadores lógicos……………………………………………. 3.11. Funciones internas……………………………………………………… 3.12. Ejercicio…………………………………………………………………..
4 4 6 7 7 8 9 10 10 10 10 11 11 11 12 12 13 13 13 15 15 16 17 18 19
2
Diseño de Algoritmos
Ing. Bruno López Takeyas
4.1. Pseudocódigo…………………………………………………………….. 4.1.1. Instrucciones algorítmicas básicas………………………………. 4.2. Diagramas de flujo………………………………………………………..
20 20 21 22
APÉNDICE A (Ejercicios)…………..……………………… BIBLIOGRAFÍA……………………………………………….
25 40
4.- REPRESENTACIÓN DE ALGORITMOS………………
3
Diseño de Algoritmos
Ing. Bruno López Takeyas
1. CONCEPTOS BÁSICOS BÁ SICOS DE ALGORITMOS La razón por la cual las personas se ven obligadas a aprender a programar, es por la necesidad de utilizar las computadoras como una herramienta para la solución de problemas. Básicamente se deben realizar los siguientes pasos para resolver problemas mediante la utilización de computadoras (Joyanes, 1999): 1. Definición o análisis del problema 2. Diseño del algoritmo 3. Transformación del algoritmo en un programa programa 4. Ejecución y validación del programa. De esto surge la necesidad de estudiar una metodología aprobada para aplicarla como apoyo durante la resolución de problemas mediante sistemas de cómputo.
1.1.
Definición de Algoritmo
“Un algoritmo es un método para resolver un problema” (Joyanes, 1999). Este término proviene de Mohammed al-Khowarizmi, matemático persa del siglo IX. Un algoritmo es el conjunto de operaciones y procedimientos que deben seguirse para resolver un problema. El lenguaje algorítmico es aquel por medio del cual se realiza un análisis previo del problema a resolver y encontrar un método que permita resolverlo. El conjunto de todas las operaciones a realizar, y el orden en el que deben efectuarse, se le denomina algoritmo. En la vida cotidiana empleamos algoritmos en multitud de ocasiones para resolver diversos problemas como por ejemplo para poner una lavadora (conjunto de instrucciones pegadas en la tapa de la máquina), para tocar música (partituras), para construir un aeroplano a escala (expresados en las instrucciones), para hacer trucos de magia (pasos para hacer el truco) o, incluso, para hacer recetas de 4
Diseño de Algoritmos
Ing. Bruno López Takeyas
cocina (pasos de la receta). De un modo más formal, un algoritmo es una secuencia finita de instrucciones realizables, no ambiguas, cuya ejecución conduce a una resolución de un problema. El algoritmo nos da la solución genérica a un problema y lo podremos emplear todas las veces que se nos presente ese mismo problema: por ejemplo el algoritmo de la división es genérico e independiente de los números que tengamos que dividir. Una vez descubierto un algoritmo para efectuar una tarea, la realización de ésta ya no requiere entender los principios en que se basa dicho algoritmo, pues el proceso se reduce a seguir las instrucciones del mismo. Por ejemplo, podemos hacer una división siguiendo el algoritmo sin entender por qué funciona el algoritmo. La inteligencia requerida para llevar a cabo la tarea está codificada en el algoritmo. Las máquinas algorítmicas son aquellas capaces de llevar a cabo algoritmos, y entre ellas están las computadoras. En el ámbito de las computadoras, los algoritmos se expresan como programas. Los programas son algoritmos codificados con un lenguaje no ambiguo cuya sintaxis y semántica "entiende" la computadora. Así pues, si queremos que una computadora efectúe una tarea, primero debemos descubrir un algoritmo para llevarla a cabo; programar el algoritmo en la máquina consiste en representar ese algoritmo de modo que se pueda comunicar a una máquina. En otras palabras, debemos transformar el algoritmo conceptual en un conjunto de instrucciones y representar estas últimas en un lenguaje sin ambigüedad. Las máquinas sólo pueden realizar tareas algorítmicas. Si encontramos un algoritmo para dirigir la ejecución de una tarea, podemos construir una máquina para llevarla a cabo siempre que la tecnología haya avanzado lo suficiente. Si no encontramos un algoritmo, es posible que la ejecución esté fuera de las capacidades de las máquinas. Una computadora es todo aparato o máquina destinada a procesar información, entendiéndose por proceso, las sucesivas
5
Diseño de Algoritmos
Ing. Bruno López Takeyas
fases, manipulaciones o transformaciones que sufre la información para resolver un problema determinado, siguiendo las instrucciones de un programa registrado.
1.2.
Características de los Algoritmos
Las características fundamentales de los algoritmos son: •
Preciso.- Debe indicar el orden de la realización de cada paso.
•
Definido.- Si se sigue el algoritmo dos veces con los mismos datos, se debe obtener el mismo resultado (determinismo).
•
Finito.- Debe terminar en algún momento.
Además todo algoritmo se compone de tres partes: •
Entrada de datos.
•
Procesamiento
•
Salida de resultados (información)
6
Diseño de Algoritmos
Ing. Bruno López Takeyas
2. METODOLOGÍA PARA LA SOLUCIÓN DE PROBLEMAS MEDIANTE COMPUTADORAS La resolución de problemas con computadoras se puede dividir en tres fases: 1. Análisis del problema 2. Diseño del algoritmo 3. Resolución del algoritmo en la computadora
2.1.
Análisis del problema
El problema debe estar bien definido para llegar a una solución satisfactoria. Para poder definir con precisión el problema se requiere que las especificaciones de entrada y salida sean descritas con detalle (Fig. 2.1). Para ello se deben responder las siguientes preguntas: •
¿Qué información debe proporcionar la resolución del problema?
•
¿Qué datos se necesitan para resolver el problema?
Análisis del Problema
Definición del
Especificaciones
Especificaciones
Problema
de Entrada
de Salida
Fig. 2.1. Análisis del Problema
7
Diseño de Algoritmos
Ing. Bruno López Takeyas
2.2.
Diseño del Algoritmo
Una computadora no tiene capacidad de solucionar problemas por sí sola, sino cuando se le proporcionan los pasos que debe realizar. A estos pasos se les conoce como el algoritmo. El diseño del algoritmo se subdivide en tres etapas (Fig. 2.2): 1. Diseño descendente 2. Refinamiento del algoritmo 3. Herramientas de programación Los problemas complejos se pueden resolver más eficazmente con la computadora cuando se rompen en subproblemas que sean más fáciles de solucionar que el original. Una metodología aprobada para este proceso se denomina diseño descendente (top-down design ) y sus ventajas más importantes son: •
El problema se comprende más fácilmente al dividirse en partes más simples llamadas módulos.
•
Las modificaciones en los módulos son más fáciles.
•
La comprobación del problema se puede verificar fácilmente.
Una vez dividido el problema, se procede a realizar una descripción más detallada con pasos específicos. A este proceso se le conoce como refinamiento
del algoritmo (stepwise refinement ). Tras los pasos anteriores (diseño descendente y refinamiento por pasos) es preciso presentar el algoritmo mediante una herramienta de programación: diagrama de flujo, pseudocódigo o diagrama N-S.
8
Diseño de Algoritmos
Ing. Bruno López Takeyas
Diseño del Algoritmo
Refinamiento por pasos
Diseño descendente
Herramientas de Programación
Fig. 2.2. Fases del diseño de un algoritmo
2.3.
Resolución del algoritmo en la computadora
Una vez que el algoritmo está diseñado y representado gráficamente mediante una herramienta de programación (diagrama de flujo, pseudocódigo o diagrama NS) se debe pasar a la fase de resolución práctica del problema en la computadora. Esta fase se descompone en tres etapas (Fig. 2.3): 1. Codificación del algoritmo en un programa 2. Ejecución del programa 3. Comprobación del programa Resolución del problema mediante com utadora
Codificación del programa
Ejecución del programa
Comprobación del programa
Fig. 2.3. Resolución del problema mediante computadora
9
Diseño de Algoritmos
Ing. Bruno López Takeyas
3. DATOS, TIPOS DE DATOS Y OPERACIONES FUNDAMENTALES La función principal de una computadora es recibir datos, procesarlos y convertirlos en información valiosa para la solución de problemas. “Un dato es la expresión general que describe los objetos con los cuales opera una computadora” (Joyanes, 1999). Sin embargo las computadoras manejan varios tipos de datos, según las necesidades.
3.1.
Datos y tipos de datos
Existen dos clases de tipos de datos: Simples (sin estructura) y Compuestos (Estructurados). En esta sección se hace referencia a los tipos de datos simples. Los tipos de datos simples son los siguientes: •
Numéricos (ENTERO, REAL)
•
Lógicos (BOOLEANO)
•
Caracter (CHAR, CADENA)
3.2.
Datos numéricos
Este tipo de datos sólo puede almacenar números y pueden presentarse de dos formas: •
Enteros
•
Reales
3.2.1. Datos numéricos enteros Los enteros son números completos, es decir, no tienen componentes fraccionarios o decimales y pueden ser negativos o positivos (Fig. 3.1).
10
Diseño de Algoritmos
Ing. Bruno López Takeyas
5
6
-15
4
20
17
1340
-23
-1
Fig.3.1. Ejemplos de números enteros
3.2.2. Datos numéricos reales Los números reales siempre tienen un punto decimal y pueden ser negativos o positivos (Fig. 3.2). 0.08
3739.41
3.7452
-52.321
-8.12
3.0
3.1415927
-5.1
63.9
Fig.3.2. Ejemplos de números reales
3.3.
Datos lógicos (booleanos)
El tipo de dato lógico (también conocido como booleano) es aquel que solo puede tomar uno de los siguientes valores: Verdadero o Falso. Algunos autores manejan estos valores como equivalentes los valores verdadero, cierto, true, o le asignan el valor numérico de 1 (uno) y falso, false o le asignan el valor numérico de 0 (cero).
3.4.
Datos tipo caracter
Este tipo de datos maneja los caracteres de la computadora. Un dato tipo caracter contiene un solo caracter. Los caracteres reconocidos por las computadoras son: •
Alfabéticos: ‘A’, ‘B’, ‘C’, …….’Z’, ‘a’, ‘b’, ‘c’,…….,’z’
•
Numéricos: ‘0’, ‘1’, ‘2’, ‘3’, …… , ‘9’ 11
Diseño de Algoritmos •
Ing. Bruno López Takeyas
Caracteres especiales: ‘+’, ‘-‘, ‘*’, ‘$’, ‘#’, ‘@’, ‘&’
Note que los datos de tipo carácter utilizan un ‘ (apóstrofe) para su representación.
3.5.
Datos tipo cadena (string)
Una cadena o string es una sucesión de caracteres que se encuentran delimitados por “ (comillas). P. ejem. “Tec Laredo”, “20 de Noviembre de 1910”, “$ 1,325.50”
3.6. Variables Una variable es una localización o celda en la memoria principal (RAM) que almacena un valor que puede cambiar en el transcurso de la ejecución del programa. Cuando un programa necesita almacenar un dato, necesita una variable. Toda variable tiene un nombre, un tipo de dato y un valor . Antes de poder utilizar una variable es necesario declararla especificando su nombre y su tipo de dato. Para declarar declarar variables se usa el formato de la Fig. 3.3.
Declaración de una variable: tipo nombre
P. ejem. ENTERO edad REAL descuento
Fig. 3.3. Formato de declaración de variables
Si se intenta asignar un valor de un tipo a una variable de otro tipo se producirá un error de tipo. Los nombres de las variables se forman con caracteres alfanuméricos, de los cuales el primero debe ser una letra (Fig. 3.4). 12
Diseño de Algoritmos
Ing. Bruno López Takeyas
X
A
a
R234
d3
i
W_34
y
q23
Fig.3.4. Ejemplos válidos de nombres de variables
3.7.
Constantes
Son constantes todos aquellos valores fijos que figuran en los algoritmos; es decir, no cambian como producto de procesamiento.
3.8.
Operaciones fundamentales
Las operaciones que realizan las computadoras se llevan a cabo mediante
expresiones. Una expresión es la combinación de constantes, variables, símbolos de operación, paréntesis y nombres de funciones especiales. Las expresiones constan de operandos y operadores y se clasifican en: •
Aritméticas
•
Lógicas
•
Caracter
3.8.1.
Expresiones aritméticas
Este tipo de expresiones son análogas a las fórmulas matemáticas (Fig. 3.5).
13
Diseño de Algoritmos
Ing. Bruno López Takeyas
Símbolo
Operación
+
Suma
-
Resta
*
Multiplicación
/
División
**, ^, ↑
Exponenciación
div
División entera
mod, %
Módulo (residuo)
Fig.3.5. Expresiones aritméticas
La siguiente tabla muestra algunos ejemplos de representación de expresiones aritméticas (Fig. 3.6). Operación matemática
Representación
5 x 7
5*7
6 4 37
6/4 3 ** 7 ó 3^7 ó 3↑7
Fig.3.6. Ejemplos de representación de expresiones aritméticas
La Fig. 3.7 muestra ejemplos de resultados de algunas expresiones aritméticas.
14
Diseño de Algoritmos
Ing. Bruno López Takeyas
Expresión
Resultado
10.5/3.0
3.5
10 div 3
3
10 mod 3
1
1/4
0.25
2.0/4.0
0.5
Fig.3.6. Ejemplos de representación de expresiones aritméticas
3.8.1.1.
Reglas de prioridad (jerarquía de las operaciones aritméticas)
Las expresiones que tienen dos o mas operandos requieren unas reglas matemáticas que permitan determinar el orden de las operaciones, se denominan reglas de prioridad o jerarquía de las operaciones y son: 1. Las operaciones que están encerradas entre paréntesis se evalúan primero. SI existen diferentes paréntesis anidados (interiores unos a otros), las expresiones mas internas se evalúan primero. 2. Las operaciones aritméticas dentro de una expresión suelen seguir el siguiente orden de prioridad: •
Operador exponencial ( **, ^, ↑ )
•
Operadores *, /
•
Operadores div y mod
•
Operadores +, -
3.9.
Ejercicios
1.- ¿Cuál es el resultado de las siguientes expresiones? a) 3 + 6 * 14 b) 8 + 7 * 3 + 4 * 6
15
Diseño de Algoritmos
Ing. Bruno López Takeyas
c) -4 * 7 + 2 ^ 3 / 4 – 5 2.- Convertir en expresiones aritméticas algorítmicas las siguientes expresiones algebraicas: a) 5 (x + y) b) a2 + b2 c)
d)
x
x+y
(z + w)
w
y
u+ a
3.10. Expresiones lógicas (booleanas) En este tipo de expresiones el resultado siempre es verdadero o falso. También son conocidas como booleanas en honor de George Boole. Las expresiones lógicas se forman combinando constantes lógicas, variables lógicas y otras expresiones lógicas, utilizando los operadores lógicos
not, and y or
y los
operadores relacionales =, <, >, <=, >=, <> (Fig. 3.7). Operador relacional
Significado
<
Menor que
>
Mayor que
=
Igual que
<=
Menor o igual que
>=
Mayor o igual que
<>
Diferente que Fig.3.7. Operadores relacionales
16
Diseño de Algoritmos
Ing. Bruno López Takeyas
El formato general para las comparaciones es: Expresión 1
Operador relacional
expresión 2
Y la tabla de la Fig. 3.8 muestra algunos ejemplos. Expresión 1
Expresión 2
Expresión lógica
Resultado
3
6
3<6
Verdadero
0
1
0>1
Falso
4
2
4=2
Falso
9.0
9.0
9.0 >= 9.0
Verdadero
‘A’
‘B’
‘A’ <> ‘B’
Verdadero
‘R’
‘r’
‘R’ <> ‘r’
Verdadero
Fig.3.8. Ejemplos de expresiones lógicas
3.10.1.
Operadores lógicos
Los operadores lógicos o booleanos básicos son
not, and y or.
Las figuras
3.9, 3.10 y 3.11 muestran las tablas de verdad de estos operadores lógicos.
A
Not(
V
F
F
V
Fig.3.9. Tabla de verdad del operador not
A
B
A and B
F
F
F
F
V
F
V
F
F
V
V
V
Fig.3.10. Tabla de verdad del operador and
17
Diseño de Algoritmos
Ing. Bruno López Takeyas
A
B
A or B
F
F
F
F
V
V
V
F
V
V
V
V
Fig.3.11. Tabla de verdad del operador or
3.11. Funciones internas Las operaciones que se requieren en los programas exigen en numerosas ocasiones, además de las operaciones aritméticas y lógicas, un número determinado de operadores especiales que se denominan funciones internas. P. ejem. Para el cálculo de funciones trigonométricas, logarítmicas, raíz cuadrada, cuadrado de un número, etc. (Fig. 3.12). Función
Descripción
Tipo
de Resultado
argumento Abs(x)
Valor absoluto de x
Entero o real
Igual
que
el
que
el
argumento
Arctan(x) Arco tangente de x
Entero o real
Real
Cos(x)
Coseno de x
Entero o real
Real
Exp(x)
Exponencial de x
Entero o real
Real
Ln(x)
Logaritmo neperiano de x
Entero o real
Real
Log10(x)
Logaritmo decimal de x
Entero o real
Real
Real
Entero
Round(x) Redondeo de x Sin(x)
Seno de x
Entero o real
Real
Sqr(x)
Cuadrado de x
Entero o real
Igual argumento
Sqrt(x)
Raíz cuadrada de x
Entero o real
Real
Trunc(x)
Truncamiento de x
Real
Entero
Fig.3.12. Funciones internas
18
Diseño de Algoritmos
Ing. Bruno López Takeyas
3.12. Ejercicio 1.- Utilizar las funciones internas para obtener la solución de la ecuación cuadrática ax2 + bx + c = 0, si |X=
-b ± √ b2 - 4ac 2a
19
Diseño de Algoritmos
Ing. Bruno López Takeyas
4. REPRESENTACIÓN DE ALGORITMOS Para representar un algoritmo se debe utilizar algún método que permita independizar dicho algoritmo del lenguaje de programación elegido. Ello permitirá que un algoritmo pueda se codificado indistintamente en cualquier lenguaje. Para lograrlo es necesario que el algoritmo esté representado gráfica o numéricamente, de modo que sus acciones no dependan de la sintaxis de un lenguaje, sino que la descripción pueda servir para su transformación en un programa. Los métodos usuales para representar un algoritmo son: •
Pseudocódigo
•
Diagrama de Flujo
•
Diagrama N-S (Nassi-Schneiderman)
•
Lenguaje español
•
Fórmulas
En este material se consideran los dos más importantes: pseudocódigo y diagramas de flujo.
4.1.
Pseudocódigo
El pseudocódigo es un lenguaje de pseudoprogramación utilizado para escribir
algoritmos computacionales. El objetivo del pseudocódigo es permitir que el programador se centre en los aspectos lógicos de la solución, evitando las reglas de sintaxis de los lenguajes de programación. No siendo el pseudocódigo un lenguaje formal, los pseudocódigos varían de un programador a otro, es decir, no hay un pseudocódigo estándar.
20
Diseño de Algoritmos
Ing. Bruno López Takeyas
4.1.1. Instrucciones algorítmicas básicas Existen tres instrucciones básicas que se contemplan como parte de los algoritmos: 1. Entrada.- Consiste en obtener un dato de un dispositivo de entrada, como el teclado, y almacenarlo en una variable. En general, la acción de ingresar un dato a una variable se expresa en el pseudocódigo mediante la palabra
LEER (Fig. 3.14). 2. Salida.- Consiste en mostrar el valor de una variable en un dispositivo de salida, como la pantalla. En general, la acción de mostrar el valor de una
variable se expresa en el pseudocódigo mediante la palabra IMPRIMIR (Fig. 3.15).
LEER variable
P. ejem. LEER estatura Fig. 3.14. La instrucción LEER
IMPRIMIR variable
P. ejem. IMPRIMIR precio Fig. 3.15. La instrucción IMPRIMIR
3. Asignación.- Consiste en asignar a una variable el valor de una
expresión. La expresión puede ser una simple variable, un simple literal o una combinación de variables, literales y operadores. La asignación se expresa en el pseudocódigo como lo muestra la Fig. 3.16 21
Diseño de Algoritmos
Ing. Bruno López Takeyas
variable = expresión P. ejem. Edad = 26 x = z * 3 Fig. 3.16. La instrucción de asignación
4.1.2.
Diagramas de flujo
Un diagrama de flujo es una de las técnicas de representación de algoritmos más usada que utiliza los símbolos estándar y que tiene los pasos del algoritmo escritos en dichos símbolos unidos por flechas, denominadas líneas de flujo que indican la secuencia. La Fig. 3.17 muestra los símbolos principales en el diseño de diagramas de flujo. Función
Símbolo
Terminal (representa el comienzo y final de un programa. Puede representar también una interrupción necesaria en un programa.
Teclado (se utiliza para capturar datos desde el teclado)
Proceso (cualquier tipo de operación que pueda originar cambio de valor, formato o posición de la información almacenada en memoria, operaciones aritméticas, de transferencia, etc.) Decisión (indica operaciones lógicas o de comparación de datos y en función del resultado de la misma determina cuál de los distintos caminos alternativos del programa se debe seguir; normalmente tiene dos salidas: V o F).
22
Diseño de Algoritmos
Ing. Bruno López Takeyas
Decisión múltiple (en función del resultado de la comparación se seguirá uno de los diferentes caminos de acuerdo con dicho resultado).
Conector (sirve para enlazar dos partes cualesquiera de un diagrama a través de un conector en la salida y otro conector en la entrada. Se refiere a la conexión en la misma página del diagrama). Indicador de dirección o línea de flujo (indica el sentido de ejecución de las operaciones).
Línea conectora (sirve de unión entre dos símbolos)
Conector (conexión entre dos puntos situados en páginas diferentes)
Impresora (se utiliza cuando se desea desplegar datos) Comentarios (se utiliza para añadir comentarios clasificadores a otros símbolos del diagrama de flujo. Se pueden dibujar a cualquier lado del símbolo). Llamada a subrutina o aun proceso determinado (una subrutina es un módulo independiente del programa principal que recibe una entrada procedente de dicho programa, realiza una tarea determinada y regresa, al terminar, al programa principal). Entrada/Salida (cualquier tipo de introducción de datos en la memoria desde los periféricos. También se utilizan para la manipulación de datos en los archivos).
Apertura y Cierre de archivos
23
Diseño de Algoritmos
Ing. Bruno López Takeyas Ciclos (utilizado en procesos repetitivos llamados ciclos; p. ejem. ciclos while, do-while)
Ciclos (utilizado en procesos repetitivos de tipo for).
Fig. 3.17. Principales símbolos de los diagramas de flujo
24
Diseño de Algoritmos
Ing. Bruno López Takeyas
APÉNDICE A EJERCICIOS Procesos y Estructuras de Decisión 1. ¿Cuál es el resultado de las siguientes expresiones? a) 3 + 6 * 14 b)8 + 7 * 3 + 4 * 6 d) (33 + 3 * 4) / 5 e) 2 ^ 2 * 3 h) 4/2*3/6+6/2/1/5^2/4*2 g) 16 * 6 – 3 * 2
c) -4 * 7 + 2 ^ 3 / 4 – 5 f) 3 + 2 * (18 – 4 ^ 2) i) 3 + 3 * 2
2. ¿Cuál de las siguientes variables no son válidas? a) XRayo b) R2D2 d) ZZZZ e) X_Rayo g) N14 h) 3μ
c) 45 f) X i) 3f
3. ¿Cuál de las siguientes constantes no son válidas? a) 234 b) 12E-5 c) 32,767 e) 3.5 X 10 f) 0.00001 g) -8.975 i) 1/2 j) -7E12 k) 0,456
d) 3.6E+7 h) 0 l) 224E1
4. Evalúe las siguientes expresiones lógicas (booleanas) a) 3 > 5 OR 8 <= 9 b) NOT (4 * 2 > 8 AND 7 < 2 * 3) c) (2 >= 3 OR 5 > 1+3) AND NOT (6 >= 5)
5. Obtener el valor de cada una de las siguientes expresiones artitméticas a) 7 div 2 b) 7 mod 2 c) 12 div 3 d) 12 mod 3 g) 7 * 10 – 50 mod 3 * 4 + 9 h)(7 * (10 – 5) mod 3) * 4 + 9 e) 0 mod 5 f) 15 mod 5 6. Escribir las siguientes expresiones en forma de expresiones algorítmicas M + N P
M+ N P-Q M+
M+n P–q
Q-
N P R 5
seno(x) + coseno(x) tangente(x)
-b+√ b2 – 4 a c 2ª
25
Diseño de Algoritmos x2 + y2 z2 Y2 – Y1 X2 – X1
Ing. Bruno López Takeyas 4x2-2x + 7 (X2 – X1)2 + (Y2 – Y1)2
4 3
π r 3 XYZ
7. Escribir las siguientes expresiones algorítmicas como expresiones algebraicas: a) b ^ 2 – a * a * c b) 3 * x ^ 4 – 5 * x ^ 3 + x * 12 – 17 c) (b + d) / (c + 4) d) (x ^ 2 + y ^ 2) ^ (1 / 2) 8. Si A = 4, B = 5 y C = 1, evaluar las siguientes expresiones: a) B * A – B ^ 2 / 4 * C b) (A * B) / 3 ^ 2 c) ( ( (B + C) / 2 * A + 10) * 3 * B) – 6 d) A ^ B ^ C 9. Capturar un valor numérico y determinar si se trata de un número positivo, negativo o cero imprimiendo un mensaje correspondiente. 10. Leer dos números del teclado e imprimir el mayor de ellos o un mensaje de “son iguales”. 11. Leer tres números diferentes del teclado e imprimir el mayor de ellos 12. Leer dos números del teclado y realizar las cuatro operaciones aritméticas básicas entre ellos (+, -, * y /). Considere que los números pueden ser positivos, negativos o cero. Validar la división entre cero. 13. Leer un número del teclado y determinar si es un número par o impar. 14. Imprimir el costo de una llamada telefónica, capturando la duración de la llamada en minutos y conociendo lo siguiente : Toda llamada que dure tres minutos o menos tiene un costo de $5. Cada minuto adicional cuesta $3 15. Calcule e imprima el pago mensual para un vendedor de autos, basándose en lo siguiente: El pago base es de $350, más una comisión de $15 por cada auto vendido y un bono de $40 si vendió mas de 15 autos. El impuesto a pagar es el 25% del pago total. Los datos de entrada son el nombre del vendedor y el número de autos vendidos en el mes. Se desea imprimir el nombre del vendedor, el sueldo bruto, el impuesto y el sueldo neto. 26
Diseño de Algoritmos
Ing. Bruno López Takeyas
16. Leer 5 números del teclado, elimine el mayor y el menor y promedie los 3 restantes. Imprima el resultado. 17. Leer la hora actual en el formato hh:mm:ss e imprimir la hora correspondiente al siguiente segundo. Utilice el formato de 24 hrs. 18. Leer la fecha actual en el formato dd:mm:aa e imprimir la fecha correspondiente al siguiente día. Considere los casos de los meses de 30 o 31 días y los años bisiestos. 19. Leer las longitudes de los tres lados de un triángulo (L1, L2 y L3) y calcule el área del mismo de acuerdo con la siguiente fórmula : Area = ( T (T-L1) (T-L2) (T-L3) ) ^ 0.5 donde : T = (L1 + L2 + L3 ) / 2
20. El siguiente es el menú de un restaurante de hamburguesas. Elabore un diagrama de flujo capaz de leer el número de cada alimento ordenado y calcular la cuenta total. Hamburguesa sencilla ( $15) Hamburguesa con queso ($18) Hamburguesa especial ($20) Papas fritas ( $8) Refresco ($5) Postre ($6) TOTAL $ _____
21. El costo de un automóvil nuevo para el consumidor es la suma total del costo del vehículo, del porcentaje de ganancia del vendedor y de los impuestos locales o estatales aplicables (sobre el precio de venta). Supóngase una ganancia del vendedor del 12% en todas las unidades y un impuesto del 6% y diséñese un diagrama de flujo para leer el costo del automóvil e imprimir el costo final para el consumidor. 22. Capturar las calificaciones obtenidas por un estudiante en tres exámenes parciales e imprimir su promedio final seguido del mensaje correspondiente de acuerdo a la siguiente tabla: Promedio Final 100 90-99 80-89 70-79 69 o menos
Mensaje Excelente! Muy bien Bien Hay que mejorar Reprobado
27
Diseño de Algoritmos
Ing. Bruno López Takeyas
23. Leer las longitudes de los tres lados de un triángulo (L1, L2 y L3) y determinar qué tipo de triángulo es, de acuerdo a los siguientes casos. Suponiendo que A es el mayor de los lados L1, L2 y L3, y que B y C corresponden a los otros dos. Si A ≥ B + C Si A2 = B2 + C2 Si A2 > B2 + C2 Si A2 < B2 + C2
No se forma un triángulo. Se forma un triángulo rectángulo. Se forma un triángulo obtusángulo. Se forma un triángulo acutángulo.
24. El costo de una póliza de seguros para automóviles se calcula de la siguiente forma : 3% del valor
+
Cargo
Cargo por la
Cargo por accidentes revios Diseñe un algoritmo en diagrama de flujo que lea el nombre y la edad del propietario, el valor del automóvil, el modelo y el número de accidentes que ha tenido; e imprima el nombre del propietario seguido del costo de la póliza. Utilice los siguientes datos para determinar los cargos: Costo total =
Cargo por modelo Modelo % del valor del auto 90 o anterior 0.1% 91-97 0.3% 98 o más reciente 0.5% Cargo por la edad Edad Cargo 18 a 23 años $ 350 24 a 55 años $ 200 56 a 65 años $ 400
+ edad del
+
El cargo por accidentes previos es de $15 por los primeros tres accidentes y $20 por cada accidente extra.
NOTA : La compañía no asegura automóviles a personas con edad fuera de estos rangos.
Estructuras Cíclicas 25. Imprimir la suma de los primeros N números naturales. El valor de N se lee del teclado. 26. Imprimir la suma de los siguientes 100 términos de la serie : 1-1/2 +1/4-1/6+1/8-1/10 +.... 27. Calcular el factorial de un número leído del teclado. Recuerde que n! = n*n-1*n-2 *...*1
28
Diseño de Algoritmos
Ing. Bruno López Takeyas
28. Determinar en un conjunto de 100 números naturales leídos del teclado :
Cuántos son menores de 15 Cuántos son mayores de 50 Cuántos están comprendidos entre 45 y 55
29. El departamento de policía de la ciudad ha acumulado información referente a las infracciones de los límites de velocidad durante un determinado período de tiempo. El departamento ha dividido la ciudad en cuatro cuadrantes y desea realizar una estadística de las infracciones a los límites de velocidad en cada uno de ellos. Para cada infracción se capturan los siguientes datos: Número de registro del vehículo (código numérico), cuadrante en el que se produjo la infracción (1 a 4), límite de velocidad permitido en km/h (entero), velocidad real desarrollada en km/h (entero). Diseñe un algoritmo para producir dos informes; el primero, que contiene una lista de las multas de velocidad recolectadas, donde la multa se calcula como la suma del costo de la infracción ($50) más $20 por cada km/h que se ha excedido la velocidad límite. Por ejemplo : El vehículo con registro 76234 registró una velocidad de 85 km/h en una zona de 60 km/h, por lo que la multa se calculó de la siguiente forma : 50 + (85-60)*20 = 350 Registro Velocidad registrada Velocidad límite Multa 76234 85 60 $350 ------------------------Este informe debe ser seguido de un segundo, en el cual se proporciona un análisis de las infracciones por cuadrante. Para cada uno de los cuatro cuadrantes mencionados, debe darse el número de infracciones y la multa promedio. Por ejemplo : Cuadrante 1. Total de infracciones : ____. Multa promedio : _____ ------------Cuadrante 4. Total de infracciones : ____. Multa promedio : _____ La multa promedio se calcula sumando el monto de todas las multas en un cuadrante y dividiendo entre el número de multas en ese cuadrante. NOTA : Suponga que se acumularon datos de N infracciones. 30. Una compañía ha tenido un excelente año y desea premiar a sus empleados con un aumento de salarios. Los sueldos deben ajustarse a la siguiente forma : Sueldo actual Aumento hasta $9,000 20 % $9,001 - $13,000 17 % $13,001 - $ 18,000 12 % Sobre $18,000 6%
29
Diseño de Algoritmos
Ing. Bruno López Takeyas
La compañía tiene 50 empleados. Diseñe un algoritmo en diagrama de flujo que lea el nombre de cada empleado y su sueldo actual, y que imprima el nombre, el sueldo actual y el sueldo aumentado. Al final de la lista debe proporcionar también , el monto total de la nómina actual y el monto total de la nueva nómina que incluye los aumentos mencionados.
31. Un distribuidor de juguetes ha hecho una excelente compra de 10,000 juguetes en cajas rectangulares de diversos tamaños. El distribuidor desea poner las cajas en esferas plásticas de brillantes colores y sellarlas como paquetes sorpresa. Las esferas son de cuatro diámetros diferentes : 4, 6, 8 y 10 pulgadas, por lo que para realizar todo en orden desea saber cuántas esferas de cada diámetro debe comprar. Puesto que la diagonal de una caja rectangular cuyas dimensiones son A, B y C está dada por
D = \ A2+B2+C2 y es, además, la dimensión mayor, el distribuidor debe calcular las longitudes de las diagonales de las cajas y determinar el número de las que son de 4 pulgadas o menos, las comprendidas entre 4 y 6 pulgadas, etc. Diseñe un algoritmo en diagrama de flujo que lea las dimensiones de cada caja, calcule la longitud de sus diagonales e imprima el número de esferas de cada tamaño que necesita comprar para empacar los juguetes.
32. Cada equipo de la liga nacional de fútbol tiene un cuadro de 22 jugadores. Por cada equipo se capturan los siguientes datos : nombre del jugador, peso y edad. Los datos correspondientes a los 10 equipos de la liga se recolectan y se envían a la sede central para su análisis. Los datos son capturados en orden por cada equipo; es decir, los primeros 22 son del equipo 1, los siguientes 22 del equipo 2 y así sucesivamente. Diseñe un diagrama de flujo para calcular los siguientes valores estadísticos : a) b) c) d)
Pesos y edades promedio de cada uno de los 10 equipos. Peso y edad promedio de todos los jugadores de la liga. Número de equipos con peso promedio mayor de 75 kg. Número de equipos con edad promedio menor de 18 años.
33. Leer los siguientes datos de los alumnos de una escuela : Número de control, Nivel, Especialidad. Calcular lo siguiente : a) b) c) d)
Cuántos alumnos son de bachillerato Cuántos alumnos son de profesional Cuántos alumnos son de maestría Cuántos alumnos son de sistemas Genere las claves necesarias.
30
Diseño de Algoritmos
Ing. Bruno López Takeyas
34. Leer los siguientes datos de los empleados de una compañía : Nombre, Sueldo, Departamento. Calcule lo siguiente : a) Cuántos empleados hay en cada departamento. b) Cuántos empleados ganan mas de $ 8,000
Existen 5 departamentos : Finanzas, Sistemas, Producció n, Ventas y Mantenimiento. Considere las claves necesarias.
35. Elabore un algoritmo que lea los sig. datos para N vendedores : No. de vendedor, Venta, Zona de venta. Imprima la comisión para cada vendedor de acuerdo a la siguiente tabla : Zona de Venta Norte Sur Oriente Poniente Centro
Comisión 20 % 18 % 17 % 21 % 15 %
36. Elabore un algoritmo que lea los sig. datos para N alumnos : No. de control, Calif 1, Calif 2, Calif 3. Imprima el No. de control de los alumnos que tengan promedio >= 80. El promedio es ponderado, la primera calificación equivale al 30 %, la segunda al 35 % y la tercera al 35 %.
37. Elabore un algoritmo que lea los sig. datos de N alumnos : No. de control, C1, C2, C3, Semestre, Especialidad. Calcule lo sig.: a) El promedio para cada alumno. b) Cuántos alumnos hay en primer semestre. c) Cuántos alumnos hay en noveno semestre. e) Cuántos alumnos hay en cada especialidad. d) Cuántos alumnos de sistemas tienen promedio >= 80 Suponga 5 especialidades. Considere las claves necesarias
31
Diseño de Algoritmos
Ing. Bruno López Takeyas
38. Elabore un algoritmo que lea los sig. datos de N trabajadores : Clave, Categoría, Sueldo, Años de antigüedad, Sexo. Calcule lo siguiente : a) Sueldo promedio por cada categoría. b) Cuántos empleados ganan mas de $ 10,000. c) Cuántos empleados tienen mas de 15 años de antigüedad. d) Cuántas mujeres de categoría A ganan mas de $ 8,500. e) Cuántos empleados con 10 o mas años de antigüedad, ganan menos de $ 6,000. f) Cuántos empleados de categoría C ganan mas de $ 12,500. Existen 3 categorías : A, B y C 39. Elabore un algoritmo que lea los sig. datos de N empleados: Nombre, Sexo, Tipo de incapacidad, Días de incapacidad. *El tipo de incapacidad puede ser por enfermedad o por accidente. Calcular : a) Número de empleados con mas de 20 días de incapacidad. b) Total de empleados incapacitados por enfermedad. c) Total de empleados incapacitados por accidente. d) Total de días de incapacidad. e) Total de hombres incapacitados por accidente. f) Porcentaje de mujeres incapacitadas. g) Total de días de incapacidad por enfermedad en mujeres. h) Promedio de días de incapacidad por enfermedad. i ) Promedio de días de incapacidad por accidente.
40. Una compañía de fumigación utiliza aviones para fumigar las cosechas contra una gran variedad de plagas. Las cantidades que la compañía cobra a los granjeros depende de qué es lo que se desea fumigar y del número de hectáreas que se desea fumigar, de acuerdo con la siguiente distribución : Tipo 1 : Fumigación contra malas hierbas, $50 por hectárea Tipo 2 : Fumigación contra moscas y mosquitos, $70 por hectárea Tipo 3 : Fumigación contra gusanos, $80 por hectárea. Tipo 4 : Fumigación contra todo lo anterior, $190 por hectárea. • •
Si el área a fumigar es mayor de 100 hectáreas, el granjero goza de un 5% de descuento. Además, si la cuenta total sobrepasa los $10,000 se hace acreedor a un 10% de descuento sobre la cantidad que sobrepase los $10,000.
32
Diseño de Algoritmos
Ing. Bruno López Takeyas
Si ambos descuentos son aplicables, el correspondiente a la superficie se considera primero. Diseñe un diagrama de flujo que lea el nombre del granjero, el tipo de fumigación solicitada (1-4) y el número de hectáreas a fumigar. Suponga que se leen los datos de 50 granjeros. Por cada granjero se debe imprimir su nombre y la cuenta total. Al final se debe imprimir el número de fumigaciones de cada tipo que se realizarán y el importe total de las ventas. •
41. La oficina de mercadotecnia de una compañía de publicidad se encuentra con el problema de calcular el punto de equilibrio de un libro que se va a publicar. El punto de equilibrio se define como el número de ejemplares que deben venderse del libro para que los ingresos por las ventas se equiparen con los costos de producción. Los costos de producción constan de una cantidad fija por el diseño gráfico, la composición, la impresión y otros aspectos de menor importancia, más el costo por ejemplar de impresión, encuadernación, y otros detalles. Para cada proyecto de publicación, el análisis de mercado ha determinado las cifras de venta aproximadas, así como los costos de producción, que se basan fundamentalmente en el tamaño del libro (el número de páginas) y el número de ejemplares producido, de acuerdo con la siguiente fórmula :
Costo de prod. = costos fijos de prod. + cantidad prod. * (páginas * 0.0305)
Un análisis de estas estimaciones se utiliza para determinar el precio de venta de equilibrio de un libro. Para cada libro que se desea publicar, se obtiene la siguiente información : Título del libro, estimación de venta, costos fijos de producción, número de páginas. Por ejemplo, la entrada : ‘THE COMPUTER-PHILES’, 5000, 7500, 365 indica que un libro denominado The Computer-Philes, cuya venta estimada es de 5000 ejemplares, tiene un costo fijo de producción de $7500 y consta de 365 páginas en total. Para este libro en particular, el costo de producir 5000 ejemplares será de 7500 + 5000 * (365 * .0305) = $63,162.50
33
Diseño de Algoritmos
Ing. Bruno López Takeyas
Para equilibrar este costo, el libro debe venderse al precio de $63,162.50 / 5000 = $12.63 Diseñe un algoritmo en diagrama de flujo que lea un conjunto de datos preparados para los libros que se proyecta editar en la temporada y que imprima una lista que contenga el título, la venta estimada y el precio de equilibrio calculado. Imprimir también al final de la lista el nombre del libro con la estimación de ventas mayor. Suponga que se leen los datos para n libros. NOTA : La compañía tiene como política que ninguno de sus libros tiene un costo mayor a $50. Por lo que en caso de que el precio de equilibrio exceda de $50, se deberá imprimir la palabra “Rechazado” al lado de su precio.
Arreglos 42. Calcular el promedio y la desviación estándar de un conjunto de N números leídos del teclado. La desviación estándar se calcula con la siguiente fórmula : n
D=
Σ (Xi – P)2 / n i =1
Donde : X i = dato i-ésimo P = promedio N = número de datos
43. Elaborar un algoritmo en diagrama de flujo que capture en un vector (T) la temperatura de cada día de una semana y que realice lo siguiente : a) Imprimir la temperatura promedio. b) Formar un vector (D) que contenga las diferencias de cada temperatura con respecto al promedio. c) Imprimir la menor temperatura y el número de día en que ocurrió.
34
Diseño de Algoritmos
Ing. Bruno López Takeyas
44. Elabore un algoritmo que encuentre la mayor diferencia entre 2 números consecutivos y las posiciones de éstos, en un vector de N números enteros. EJEMPLO : 1 2 3 4 5 6
10 8 5 2 15 7
RESULTADO : Mayor Diferencia : 13 Elementos : 4 y 5
45. Dado un vector V de N números enteros, cambie cada elemento menor que 10 por 0 y cada elemento mayor que 20 por 1. Encuentre cuántos elementos quedaron sin cambiar. Ejemplo : V
V
1 5 1 0 Elementos sin cambiar = 3 2 54 2 1 3 15 3 15 4 22 4 1 5 19 5 19 6 8 6 0 7 13 7 13 46. Elaborar un algoritmo en diagrama de flujo que capture en una matriz las calificaciones obtenidas por un grupo de N estudiantes y que realice lo siguiente : a) Formar un vector de tamaño N que contenga los promedios de cada estudiante. b) Calcular el promedio del grupo en el examen 3. c) Imprimir el mayor promedio y el número del estudiante que lo obtuvo. d) Imprimir el total de alumnos aprobados y reprobados (la calificación mínima aprobatoria es 70) e) Imprimir el número de alumnos que reprobaron el examen 1. 47. Diseñe un algoritmo en diagrama de flujo que lea un vector desordenado A, compuesto de n números enteros e imprímase este vector en la misma secuencia, pero ignorando los valores duplicados que se encuentren en él. También se necesita saber el número de elementos que permanecen (m); por ejemplo, dado el siguiente vector 15
31
23
15
75
23
41
15
31
85
compuesto por 10 enteros, el vector comprimido que resulta estará dado por 15
31
23
75
41
85
con m = 6
35
Diseño de Algoritmos
Ing. Bruno López Takeyas
48. Desarrollar un algoritmo en diagrama de flujo que lea una matriz cuadrada de tamaño n y determine si se trata de una matriz simétrica o no. Una matriz es simétrica si los valores de cada fila son iguales los de su columna correspondiente; por ejemplo la siguiente matriz es simétrica: 1 4 7
4 2 9
7 9 3
49. Una empresa de ventas a domicilio maneja 10 artículos diferentes y cuenta con 50 vendedores. En un arreglo de 50x10 se tienen almacenadas las cantidades de cada artículo vendidas por cada vendedor. Además, los precios de cada artículo están almacenados en un vector de tamaño 10. Se desea elaborar un algoritmo para imprimir lo siguiente : a) b) c) d)
La cantidad de dinero recopilado por cada vendedor. El número del vendedor que recopiló la mayor cantidad de dinero. El número del artículo más vendido (entre todos los vendedores). El total de vendedores que no vendieron ningún artículo número ocho.
50. Elabore un algoritmo en diagrama de flujo y que lea una matriz cuadrada de tamaño N de números enteros, calcule la suma de los elementos de las diagonales (principal e inversa y guarde estos elementos en dos vectores (DP y DI). Ejemplo para N=4 : Suma DP = 20
Suma DI = 23
A
1
2
3
4
1
3 2 2 4
5 7 8 6
8 9 9 7
2 5 2 1
2 3 4
DP
1 2 3 4
3 7 9 1
DI
1 2 3 4
2 9 8 4
51. Elabore un diagrama de flujo que lea los datos de una matriz cuadrada de tamaño N y realice las sig. operaciones: a) Imprima la suma de los elementos de la diagonal principal b) Imprima cuántos "0" hay en la matriz c) Imprima una matriz igual pero con las diagonales intercambiadas. d) Imprima el número mayor de la matriz
36
Diseño de Algoritmos
Ing. Bruno López Takeyas
52. Elabore un algoritmo que lea los datos de una matriz cuadrada de tamaño N, y que intercambie los elementos de la matriz triangular superior con los elementos correspondientes simétricamente de la matriz triangular inferior. EJEMPLO : 1 2 3 4
1 0 4 8 2
2 1 5 9 3
3 2 6 0 4
RESULTADO : 4 3 7 1 5
1 2 3 4
1 0 1 2 3
2 4 5 6 7
3 8 9 0 1
4 2 3 4 5
53. Dada una matriz cuadrada de tamaño N, encuentre la suma de todos los elementos que no son de la "periferia" de la matriz. Ejemplo : 1 2 3 4 5 S = 4+2+1 + 5+4+8 + 8+1+0 = 33 1 3 5 8 9 2 2 1 4 2 1 0 3 4 5 4 8 1 4 9 8 1 0 3 5 7 2 1 1 3 54. La Dirección General de Institutos Tecnológicos desea conocer una serie de datos estadísticos referentes a la cantidad de Ingenieros, Masters y Doctores que laboran en el sistema de tecnológicos. Entre otros datos se desea saber : a) Total de Doctores, Masters e Ingenieros por zona. b) Sueldo promedio de un Dr. en el sistema de tecnológicos. c) Total de Doctores en el tecnológico de Nuevo Laredo. d) Total de Ingenieros con plaza #3 en la zona centro. e) El monto total de los sueldos en los tecnológicos de la zona norte. Suponga que se cuenta con 2 matrices con los siguientes datos :
Matriz B (Sueldos)
Matriz A (Tecnológicos) No. Tec.
Ciudad
1 Nuevo Laredo 2 Zacatecas 3 Mérida ... ........ 60 ........
Zona
Norte Centro Sur ..... .....
Plazas
Grado Doctor Master In eniero
1
2
3
$ $ $
$ $ $
$ $ $ 37
Diseño de Algoritmos
Ing. Bruno López Takeyas
El algoritmo debe leer los sig. datos : No. de Tec. , No. de empleados (para cada tec.) Clave emp. , plaza (por cada empleado de cada tec.) NOTAS : - La clave de empleado puede ser 1,2 o 3. (DR., MC., ING.) - Las zonas son norte, centro y sur. - Son 60 tecnológicos - Existen 3 plazas (1,2,3) por cada clave de emp.
55. Se tienen dos vectores A y B de tamaños n y m respectivamente. Cada arreglo contiene nombres de personas ordenados alfabéticamente. Elabore un algoritmo en diagrama de flujo que forme un tercer vector C ordenado alfabéticamente que contenga los nombres de A y B. Ejemplo :
1 2 3 4 5
A Ana Carmen Diana Gabriela María
B Alberto Bruno Francisco Luis Raúl Víctor
1 2 3 4 5 6
C
1 2 3 4 5 6 7 8 9 10 11
Ana Alberto Bruno Carmen Diana Francisco Gabriela Luis María Raúl Víctor
56. Se tienen los costos de producción de tres departamentos (dulces, bebidas y conservas), correspondientes a los 12 meses del año anterior.
Enero Febrero . . . Diciembre
Dulces
Bebidas
Conservas
. . .
. . .
. . .
Elaborar un algoritmo en diagrama de flujo que pueda proporcionar la siguiente información : a) ¿En que mes (número) se registró el mayor costo de producción de dulces?
38
Diseño de Algoritmos
Ing. Bruno López Takeyas
b) Promedio anual de los costos de producción de bebidas. c) ¿En que mes se registró el menor costo de producción de bebidas? d) ¿Cuál fue el departamento que tuvo el menor costo de producción en Agosto?
57. Elaborar un diagrama de flujo para controlar las reservaciones y cancelaciones de boletos para las funciones de una obra de teatro. - El teatro cuenta con 300 asientos, 200 en la planta baja y 100 en la planta alta. - Los asientos están numerados del 1 al 200 en la planta baja y del 1 al 100 en la alta. - Hay 2 funciones, a las 6 y a las 9 de la noche. Los precios son los siguientes: No. Planta Baja Planta Alta Asiento 1 – 50 $ 50 $ 20 51 – 100 $ 40 $ 10 101 – 150 $ 30 -----151 - 200 $ 25 -----Se debe preguntar si se desea planta baja o alta, la función deseada y el número de asiento deseado, y se debe imprimir el precio del boleto. Para las cancelaciones, preguntar el nombre y la función.
58. Una línea aérea realiza 3 vuelos diarios a Europa, uno a París, uno a Madrid y uno a Londres. Elabore un diagrama de flujo que controle las reservaciones y cancelaciones de lugares. NOTAS: Cuando hay una reservación, se preguntará el No. de vuelo ( 1 París , 2 Madrid , 3 Londres ), el nombre de la persona, y si desea sección de fumar o de no fumar. Cuando hay una cancelación, se preguntará el nombre de la persona y el No. de vuelo. Cada vuelo tiene 100 asientos. Del 1 al 50 es la sección de no fumar, y del 51 al 100 es la sección de fumar. Se asignará el primer asiento que se encuentre desocupado en la sección deseada del vuelo correspondiente.
39