1.3 Diseño de algoritmos
Short Description
Download 1.3 Diseño de algoritmos...
Description
UNIDAD I 1.3 DISEÑO DE ALGORITMOS 1.3.1 Metodología para la solución de problemas. Para resolver, o al menos plantear una posible solución, de cualquier tipo de problema existen diferentes metodologías basadas en modelos de acuerdo al problema en cuestión. En la solución propuesta para resolver problemas por computadoras, existe una metodología en 7 pasos que se describen a continuación; los cuales de recomiendan seguir en ese orden. Paso 1.-Definición (planteamiento) del problema. Esta dada por el enunciado del problema, el cual debe ser claro y completo. Es importante que se conozca exactamente que es lo que se desea que realice la computadora, mientras esto no se conozca del todo, no tiene mucho caso continuar con la siguiente etapa. Paso 2.- Análisis del problema. Esta fase requiere una clara definición donde se contemple exactamente lo que debe hacer el programa y el resultado o solución deseada. Dado que se busca una solución se precisan especificaciones de entrada y salida. Para definir bien un problema es conveniente responder a las siguientes preguntas: ¿Qué entradas se requieren? (cantidad y tipo) ¿Cuál es la salida deseada? (cantidad y tipo) ¿Qué método(s) produce(n) la salida deseada? Paso 3.- Diseño del algoritmo. En la fase de análisis en el proceso de programación se determina que hace el programa. En la fase de diseño se determina como hace el programa la tarea solicitada. Los métodos utilizados para el proceso del diseño se basan en el conocido divide y vencerás. Es decir la resolución de un problema complejo se realiza dividiendo el problema en subproblemas y a continuación dividir estos subproblemas en otros de nivel mas bajo, hasta que sea implementada una solución en la computadora. Programación estructurada.
M.C. Roberto Ibáñez Córdova
1
Cada programa bien diseñado consta de un programa principal (el módulo de nivel mas alto) que llama a subprogramas (módulos) de nivel mas bajo, que a su vez pueden llamar a otros subprogramas. Los módulos pueden ser planeados, codificados, comprobados y depurados independientemente y a continuación combinarlos entre sí. Este proceso implica la ejecución de estos pasos hasta que el programa se ha terminado:
Programar un módulo. comprobar el módulo. Si es necesario, depurar el módulo. Combinar el módulo, con el resto de los otros módulos.
El diseño del algoritmo es independiente del lenguaje de programación. Paso 4.- Codificación. Es la escritura en un lenguaje de programación de la representación de un algoritmo. Dado que el diseño del algoritmo es independiente del lenguaje de programación utilizado en su implementación, el código puede ser escrito con igual facilidad en un lenguaje o en otro. Una vez que el algoritmo se ha convertido en un programa fuente, es preciso introducirlo en memoria mediante el teclado y almacenarlo posteriormente en un disco. Esta operación se realiza con un editor de texto, posteriormente el programa fuente se convierte en un archivo de programa que se guarda en un disco. El programa fuente debe ser traducido a lenguaje máquina. Este proceso se realiza con el compilador y el sistema operativo que se encarga prácticamente de la compilación. Si al compilar el programa fuente se presentan errores (errores de compilación), es necesario volver a editar el programa, corregir los errores y compilar de nuevo. Esto se repite hasta que ya no se presenten más errores, obteniéndose el programa objeto, el cual todavía no es ejecutable directamente. Al ya no existir errores en el programa fuente se debe instruir al sistema operativo para que efectúe la fase de montaje o enlace, del programa fuente con las librerías del programa del compilador. Este proceso de montaje produce un programa ejecutable. Cuando se ha creado un programa ejecutable este se puede ya ejecutar desde el sistema operativo con solo teclear su nombre. Suponiendo que no existen errores durante la ejecución (errores en tiempo de ejecución), se obtendrá la salida de resultados correctos del programa.
Programación estructurada.
M.C. Roberto Ibáñez Córdova
2
Paso 5.- Prueba y depuración. Es el proceso de ejecución del programa con una amplia variedad de datos de entrada, llamados datos de test o prueba como son: valores normales de entrada, valores extremos de entrada que comprueben los límites del programa y valores de entrada que comprueben aspectos especiales del programa. Estos determinarán si el programa contiene errores o no. Al ejecutar un programa se pueden producir tres tipos de errores: Errores de Compilación: Se producen normalmente por un uso incorrecto de las reglas del lenguaje de programación, suelen ser errores de sintaxis. Errores de Ejecución: Se producen por instrucciones que la computadora puede comprender pero no ejecutar. En estos casos se detiene la ejecución del programa y se imprime un mensaje de error. Ejemplo de esto puede ser una división por cero. Errores Lógicos: Se producen en la lógica del programa y la fuente del error suele ser el diseño del algoritmo, son más difíciles de detectar puesto que el programa puede funcionar y no producir errores de compilación ni de ejecución pero regresará resultados incorrectos. En este caso se debe regresar a la fase de diseño, modificar el algoritmo, cambiar el programa fuente y compilar y depurar una vez más. Paso 6.- Documentación. La importancia de la documentación debe ser destacada por su influencia en la etapa final, ya que programas pobremente documentados son difíciles de leer, mas difíciles de depurar y casi imposibles de mantener y modificar. Puede ser interna y externa. La documentación interna es la contenida en líneas de comentarios. La documentación externa incluye análisis, diagramas de flujo y/o pseudocódigos, manuales de usuarios con instrucciones para ejecutar el programa y para interpretar los resultados. Paso 7.- Mantenimiento. La documentación es vital cuando se desea corregir posibles errores futuros o bien cambiar el programa. Estos cambios se denominan mantenimiento del programa. Además es de buena costumbre para todo buen programador, dejar comentado su código, esto es para que el futuro programador pueda darle mantenimiento fácilmente a el programa, o incluso, si es el mismo creador quien debe darle mantenimiento. Programación estructurada.
M.C. Roberto Ibáñez Córdova
3
1.3.2 Definición de lenguajes algorítmicos. Primeramente comprendamos que es un algoritmo: El término algoritmo no está exclusivamente relacionado con las matemáticas o informática. En realidad, en la vida cotidiana empleamos algoritmos en multitud de ocasiones para resolver diversos problemas. Ejemplos son el uso de una lavadora (se siguen las instrucciones), para cocinar (se siguen los pasos de la receta). También, existen ejemplos de índole matemática, como el algoritmo de la división para calcular el cociente de dos números, el algoritmo de Euclides para calcular el máximo común divisor de dos enteros positivos, o incluso el método de Gauss para resolver sistemas de ecuaciones lineales, en fin existen muchos algoritmos en nuestra vida diaria y quizás algunas veces no nos damos cuenta de ello, pueden existir en muchas partes y si analizamos un poco, podamos verlo de una mejor forma, a todo esto un algoritmo es una serie de pasos a seguir, para llegar a un fin.
Definición: Un algoritmo es un conjunto finito de instrucciones o pasos que sirven para ejecutar una tarea o resolver un problema. De un modo más formal, un algoritmo es una secuencia finita de operaciones realizables, no ambiguas, cuya ejecución da una solución de un problema.
Los algoritmos no se implementan sólo como programas, algunas veces en una red neuronal biológica (por ejemplo, el cerebro humano implementa la aritmética básica o, incluso, una rata sigue un algoritmo para conseguir comida), también en circuitos eléctricos, en instalaciones industriales o maquinaria pesada. El análisis y estudio de los algoritmos es una disciplina de las ciencias de la computación, y en la mayoría de los casos su estudio es completamente abstracto sin usar ningún tipo de lenguaje de programación ni cualquier otra implementación; por eso, en ese sentido, comparte las características de las disciplinas matemáticas. Así, el análisis de los algoritmos se centra en los principios básicos del algoritmo, no en los de la implementación particular. Algunos escritores restringen la definición de algoritmo a procedimientos que deben acabar en algún momento, mientras que otros consideran procedimientos que podrían ejecutarse eternamente sin pararse, suponiendo el caso en el que existiera algún dispositivo físico que fuera capaz de funcionar eternamente. Definición: Los lenguajes algorítmicos permiten representar los pasos a seguir para resolver un problema. Programación estructurada.
M.C. Roberto Ibáñez Córdova
4
Los lenguajes algorítmicos más comunes son: a) Descripción Narrada. b) Pseudocódigo. c) Diagramas de Flujo. Cada uno de estos lenguajes algorítmicos utiliza un método y reglas diferentes para representar los pasos a seguir y plantear la solución de un problema (algoritmos).
a) Descripción Narrada. Este algoritmo es caracterizado porque sigue un proceso de ejecución común y lógico, describiendo textualmente paso a paso cada una de las actividades a realizar dentro de una actividad determinada. Ejemplo. Algoritmo para asistir a clases: 1. Levantarse. 2. Bañarse. 3. Vestirse. 4. Desayunar. 5. Cepillarse los dientes. 6. Salir de casa. 7. Tomar el autobús. 8. Llegar a la Escuela. 9. Buscar el aula. 10. Ubicarse en un asiento. b) Descripción en Pseudocódigo (Pseudo = falso). El pseudocódigo no es realmente un código sino una imitación y una versión abreviada de instrucciones reales para las computadoras. Es una técnica para diseño de programas que permite definir las estructuras de datos, las operaciones que se aplicarán a los datos y la lógica que tendrá el programa de computadora para solucionar un determinado problema. Utiliza un pseudolenguaje muy parecido a nuestro idioma, pero que respeta las directrices y los elementos de los lenguajes de programación.
Programación estructurada.
M.C. Roberto Ibáñez Córdova
5
INICIO
Se utiliza para el indicar el inicio del algoritmo.
FIN
Se utiliza para el indicar el fin del algoritmo.
PREGUNTAR
Se utiliza para pedir datos y guardarlos en la(s) variable(s) que se indica(n) después.
HACER
Se utiliza para indicar procesos, que se mencionan después de esta palabra, tales como asignaciones de valores a variables.
MOSTRAR
Se utiliza para indicar que el texto (si se escribe entre comillas) o el contenido de una variable (si se escribe sin comillas) deberá imprimirse en la pantalla. El texto o la variable se escribe después de esta palabra.
Pasos: 1,2,3,….. Se utilizan para indicar el flujo de los procesos.
Considere las siguientes reglas básicas en la construcción de pseudocódigos: • • • • •
Solamente debe utilizar las palabras clave al inicio de cada paso a seguir. No debe codificar instrucciones de ningún lenguaje de programación dentro de los pasos a seguir. No se olvide del orden de los pasos. En cada paso debe indicarse lo que se quiere hacer, no como se va a hacer. Utilice nombres apropiados de nombres dentro de los pasos, que indiquen claramente lo que contienen.
Ejemplo. Diseñar un algoritmo que lea cuatro variables y calcule e imprima su producto, suma y media aritmética. 1) INICIO 2) PREGUNTAR a, b, c, d 3) HACER producto = a * b * c * d 4) HACER suma=a + b + c + d 5) HACER media = suma / 4 6) MOSTRAR (producto, suma, media) 7) FIN
Programación estructurada.
M.C. Roberto Ibáñez Córdova
6
c) Diagramas de Flujo (flujogramas). Son la representación gráfica de la solución algorítmica de un problema. Para diseñarlos se utilizan determinados símbolos o figuras que representan una acción dentro del procedimiento. Utilizan unos símbolos normalizados, con los pasos del algoritmo escritos en el símbolo adecuado y los símbolos unidos con flechas, denominadas líneas de flujo, que indican el orden en que los pasos deben ser ejecutados.
Se utiliza para indicar inicio y fin de un proceso. Se utiliza para pedir datos y guardarlos en la(s) variable(s) que se indica(n) dentro de la figura. Se utiliza para indicar procesos, que se colocan dentro del rectángulo, tales como asignaciones de valores a variables, Se utiliza para indicar que el texto (si se escribe entre comillas) o el contenido de una variable (si se escribe sin comillas) deberá imprimirse en la pantalla. El texto o la variable se escribe dentro de la figura. Las flechas se utilizan para indicar el flujo de los procesos
Considere las siguientes reglas básicas en la construcción de diagramas de flujo: • • • • • • • • •
Solamente debe utilizar las figuras indicadas y de un tamaño adecuado. No debe codificar instrucciones del lenguaje dentro de las figuras. Debe dibujar de arriba hacia abajo y de izquierda a derecha. No se olvide de las flechas, las cuales siempre se usan verticales u horizontales, jamás curvas. En cada paso expresar una acción concreta, donde de preferencia debe indicarse lo que se quiere hacer, no como se va a hacer. Utilice nombres apropiados dentro de las figuras, que indiquen claramente lo que contienen. Evitar cruce de flujos. Siempre tienen una figura de inicio. Siempre deben tener una figura que indica el final.
Programación estructurada.
M.C. Roberto Ibáñez Córdova
7
Ejemplo. Diseñar un algoritmo que lea cuatro variables y calcule e imprima su producto, suma y media aritmética.
Ventajas de usar flujogramas. • • • • • • •
Rápida comprensión de las relaciones. Análisis efectivo de las diferentes secciones del programa. Pueden usarse como modelos de trabajo en el diseño de nuevos programas o sistemas. Comunicación con el usuario. Documentación adecuada de los programas. Codificación eficaz de los programas. Depuración y pruebas ordenadas de programas.
Desventajas de los flujogramas. • • •
Diagramas complejos y detallados suelen ser laboriosos en su planteamiento y diseño. Acciones a seguir tras la salida de un símbolo de decisión pueden ser difíciles de seguir si existen diferentes caminos. No existen normas fijas para la elaboración de los diagramas de flujo que permitan incluir todos los detalles que el usuario desee introducir.
Programación estructurada.
M.C. Roberto Ibáñez Córdova
8
En esta materia, solamente trabajaremos con pseudocódigos y diagramas de flujo.
Ventajas de utilizar un Pseudocódigo a un Diagrama de Flujo •
Ocupa menos espacio en una hoja de papel
•
Permite representar en forma fácil operaciones repetitivas complejas
•
Es muy fácil pasar de Pseudocódigo a un programa en algún lenguaje de programación.
•
Si se siguen las reglas se puede observar claramente los niveles que tiene cada operación
Por estas razones en los libros es más común encontrar algoritmos escritos en pseudocódigos que diagramas de flujo, sin embargo, los diagramas de flujo cuando se inicia en la programación son más fáciles de entender y de utilizar.
Recordemos que para elaborar los algoritmos, debemos realizar los tres primeros pasos para resolver problemas por computadora, que son: Paso 1.- Definición (planteamiento) del problema. Paso 2.- Análisis del problema. Paso 3.- Diseño del algoritmo.
Veamos algunos ejemplos básicos donde apliquemos aunque de manera simple cada uno de estos pasos, hasta el paso No.3 de la metodología para resolver problemas por computadora, no es necesario sentarse frente a ella, básicamente consiste en entender perfectamente el problema a resolver, de ser necesario habrá que hacer una investigación profunda con muchos ejemplos hasta que quede completamente claro lo que se desea obtener como resultado.
Programación estructurada.
M.C. Roberto Ibáñez Córdova
9
Problema No.1. Determinar el área de un cuadrado. Paso 1.- Definición (planteamiento) del problema.
Paso 2.- Análisis del problema. Es importante conocer la fórmula que permitirá determinar el área de un cuadrado: Área = Lado2 Area = Lado * Lado. Para que la computadora o cualquier persona pueda darnos el área, requiere que le proporcionemos el valor de cualquiera de los lados (valen lo mismo). Una vez que ya conocemos el valor del lado, entonces, ya podemos determinar el área aplicando la fórmula anterior. Paso 3.- Diseño del algoritmo. Pseudo código
Diagrama de flujo
1.- INICIO 2.- PREGUNTAR lado 3.- HACER area=lado*lado 4.- MOSTRAR area 5.- FIN
Problema No.2. Determinar el área de un rectángulo. Programación estructurada.
M.C. Roberto Ibáñez Córdova
10
Paso 1.- Definición (planteamiento) del problema.
Paso 2.- Análisis del problema. Es importante conocer la fórmula que permitirá determinar el área del rectángulo: Área = Lado1 * Lado2. Para que la computadora o cualquier persona pueda darnos el área, requiere que le proporcionemos los valores de ambos lados. Una vez que ya los conocemos, entonces, podremos determinar el área aplicando la fórmula anterior. Paso 3.- Diseño del algoritmo.
Pseudocódigo
Diagrama de flujo
1.- INICIO 2.- PREGUNTAR lado1 3.- PREGUNTAR lado2 4.- HACER area=lado1*lado2 5.- MOSTRAR area 6.- FIN
Observación: En el Algoritmo, en una línea o figura se pueden pedir dos o más datos al mismo tiempo. Problema No.3. Determinar el área de un círculo. Programación estructurada.
M.C. Roberto Ibáñez Córdova
11
Paso 1.- Definición (planteamiento) del problema.
Paso 2.- Análisis del problema. Es importante conocer las fórmulas que permitirá determinar el área del círculo: Área = PI * Radio2, Area = PI * Radio * Radio, Area = 3.14159 * Radio * Radio. Para que la computadora o cualquier persona pueda darnos el área, requiere que le proporcionemos el valor del Radio, PI no es necesario pedirlo por que es un valor constante y nunca cambia (PI=3.14159). Una vez que ya tenemos el valor del radio, entonces, podremos determinar el área aplicando la fórmula anterior. Paso 3.- Diseño del algoritmo. Pseudocódigo
Diagrama de flujo
1.- INICIO 2.- PREGUNTAR radio 3.- HACER area = PI*radio*radio 4.- MOSTRAR area 5.- FIN
Programación estructurada.
M.C. Roberto Ibáñez Córdova
12
Problema No.4. Elabore un Algoritmo que convierta Kilómetros a Milímetros.
Paso 1.- Definición (planteamiento) del problema. Convertir una unidad dada en kilómetros a milímetros 1 kilómetro equivale a 1000 metros 1 metro equivale a 1000 milímetros Por lo tanto 1 kilómetro contiene 1,000,000 milímetros Paso 2.- Análisis del problema. Es importante conocer la fórmula que permitirá realizar la conversión. mm = Kms*1,000,000. Para que la computadora o cualquier persona pueda realizar la conversión, requiere que le proporcionemos el valor de los Kilómetros a convertir. Con este valor, podremos determinar la cantidad de milímetros aplicando la fórmula anterior. Paso 3.- Diseño del algoritmo.
Pseudocódigo
Diagrama de flujo
1.- INICIO 2.- PREGUNTAR kms 3.- HACER mm= kms*1,000,000 4.- MOSTRAR mm 5.- FIN
Programación estructurada.
M.C. Roberto Ibáñez Córdova
13
Problema No.5 Elabore un Algoritmo que convierta Millas a Kilómetros. Paso 1.- Definición (planteamiento) del problema. Convertir una unidad dada en millas a kilómetros 1 Milla equivale a 1609 kilómetros Paso 2.- Análisis del problema. En este caso se conocen las Millas y se desea convertir a kilómetros, por lo tanto, despejamos de la fórmula y nos queda: Kms = Millas*1.609. Para que la computadora o cualquier persona pueda realizar la conversión, requiere que le proporcionemos el valor de las Millas a convertir. Con este valor, podremos determinar la cantidad de kilómetros aplicando la fórmula anterior. Paso 3.- Diseño del algoritmo. Pseudocódigo
Diagrama de flujo
1.- INICIO 2.- PREGUNTAR millas 3.- HACER kms= millas*1.609 4.- MOSTRAR kms 5.- FIN
Programación estructurada.
M.C. Roberto Ibáñez Córdova
14
Problema No.6. Elabore un programa que calcule la velocidad conociendo la distancia y el tiempo de un móvil. Paso 1.- Definición (planteamiento) del problema. Distancia = Velocidad * tiempo Paso 2.- Análisis del problema. Velocidad = Distancia / Tiempo Donde: dis = distancia tiem = tiempo vel = velocidad Para que la computadora o cualquier persona pueda realizar la conversión, requiere que le proporcionemos la distancia y el tiempo del móvil. Con estos valores, podremos determinar la velocidad aplicando la fórmula anterior. Paso 3.- Diseño del algoritmo.
Programación estructurada.
M.C. Roberto Ibáñez Córdova
15
Resumen del tema. a) Los Diagramas de flujo y los Pseudocódigos tiene el mismo objetivo, solamente se presentan de forma diferente. Observe que para cada línea de pseudocódigo corresponde una figura del diagrama de flujo y que además sirven para lo mismo. b) Los Diagramas de flujo son más fáciles de interpretar, pero consumen demasiado espacio, a medida que el programa crece. c) Es importante practicar ambos métodos. d) Más adelante, cuando se programe en la computadora, deberán primero realizar los algoritmos con esta metodología. e) Recuerde que para construir algoritmos (cuando se es principiante) es necesario respetar siempre los siguientes pasos para asegurar su aprendizaje. Entender el problema que se desea analizar. Es como si le pidieran su opinión sobre el cáncer y no sabe de ello, por lo tanto, no podrá externar opinión alguna. Si ya sabe de lo que le hablan continúe, en caso contrario busque suficiente información del tema. Identifique qué datos necesita conocer y qué fórmula(s) requiere. Escríbalas. Construya su algoritmo y pida a su asesor que lo revise.
Programación estructurada.
M.C. Roberto Ibáñez Córdova
16
View more...
Comments