Você está na página 1de 16

UNIDAD I 1.3 DISEO DE ALGORITMOS 1.3.1 Metodologa para la solucin de problemas.

Para resolver, o al menos plantear una posible solucin, de cualquier tipo de problema existen diferentes metodologas basadas en modelos de acuerdo al problema en cuestin. En la solucin propuesta para resolver problemas por computadoras, existe una metodologa en 7 pasos que se describen a continuacin; los cuales de recomiendan seguir en ese orden. Paso 1.-Definicin (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.- Anlisis del problema. Esta fase requiere una clara definicin donde se contemple exactamente lo que debe hacer el programa y el resultado o solucin deseada. Dado que se busca una solucin 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) Cul es la salida deseada? (cantidad y tipo) Qu mtodo(s) produce(n) la salida deseada? Paso 3.- Diseo del algoritmo. En la fase de anlisis en el proceso de programacin se determina que hace el programa. En la fase de diseo se determina como hace el programa la tarea solicitada. Los mtodos utilizados para el proceso del diseo se basan en el conocido divide y vencers. Es decir la resolucin de un problema complejo se realiza dividiendo el problema en subproblemas y a continuacin dividir estos subproblemas en otros de nivel mas bajo, hasta que sea implementada una solucin en la computadora. Programacin estructurada. M.C. Roberto Ibez Crdova 1

Cada programa bien diseado consta de un programa principal (el mdulo de nivel mas alto) que llama a subprogramas (mdulos) de nivel mas bajo, que a su vez pueden llamar a otros subprogramas. Los mdulos pueden ser planeados, codificados, comprobados y depurados independientemente y a continuacin combinarlos entre s. Este proceso implica la ejecucin de estos pasos hasta que el programa se ha terminado: Programar un mdulo. comprobar el mdulo. Si es necesario, depurar el mdulo. Combinar el mdulo, con el resto de los otros mdulos.

El diseo del algoritmo es independiente del lenguaje de programacin. Paso 4.- Codificacin. Es la escritura en un lenguaje de programacin de la representacin de un algoritmo. Dado que el diseo del algoritmo es independiente del lenguaje de programacin utilizado en su implementacin, el cdigo 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 operacin 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 mquina. Este proceso se realiza con el compilador y el sistema operativo que se encarga prcticamente de la compilacin. Si al compilar el programa fuente se presentan errores (errores de compilacin), es necesario volver a editar el programa, corregir los errores y compilar de nuevo. Esto se repite hasta que ya no se presenten ms errores, obtenindose el programa objeto, el cual todava no es ejecutable directamente. Al ya no existir errores en el programa fuente se debe instruir al sistema operativo para que efecte la fase de montaje o enlace, del programa fuente con las libreras 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 ejecucin (errores en tiempo de ejecucin), se obtendr la salida de resultados correctos del programa.

Programacin estructurada.

M.C. Roberto Ibez Crdova

Paso 5.- Prueba y depuracin. Es el proceso de ejecucin 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 lmites del programa y valores de entrada que comprueben aspectos especiales del programa. Estos determinarn si el programa contiene errores o no. Al ejecutar un programa se pueden producir tres tipos de errores: Errores de Compilacin: Se producen normalmente por un uso incorrecto de las reglas del lenguaje de programacin, suelen ser errores de sintaxis. Errores de Ejecucin: Se producen por instrucciones que la computadora puede comprender pero no ejecutar. En estos casos se detiene la ejecucin del programa y se imprime un mensaje de error. Ejemplo de esto puede ser una divisin por cero. Errores Lgicos: Se producen en la lgica del programa y la fuente del error suele ser el diseo del algoritmo, son ms difciles de detectar puesto que el programa puede funcionar y no producir errores de compilacin ni de ejecucin pero regresar resultados incorrectos. En este caso se debe regresar a la fase de diseo, modificar el algoritmo, cambiar el programa fuente y compilar y depurar una vez ms. Paso 6.- Documentacin. La importancia de la documentacin debe ser destacada por su influencia en la etapa final, ya que programas pobremente documentados son difciles de leer, mas difciles de depurar y casi imposibles de mantener y modificar. Puede ser interna y externa. La documentacin interna es la contenida en lneas de comentarios. La documentacin externa incluye anlisis, diagramas de flujo y/o pseudocdigos, manuales de usuarios con instrucciones para ejecutar el programa y para interpretar los resultados. Paso 7.- Mantenimiento. La documentacin es vital cuando se desea corregir posibles errores futuros o bien cambiar el programa. Estos cambios se denominan mantenimiento del programa. Adems es de buena costumbre para todo buen programador, dejar comentado su cdigo, esto es para que el futuro programador pueda darle mantenimiento fcilmente a el programa, o incluso, si es el mismo creador quien debe darle mantenimiento. Programacin estructurada. M.C. Roberto Ibez Crdova 3

1.3.2 Definicin de lenguajes algortmicos.


Primeramente comprendamos que es un algoritmo: El trmino algoritmo no est exclusivamente relacionado con las matemticas o informtica. 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). Tambin, existen ejemplos de ndole matemtica, como el algoritmo de la divisin para calcular el cociente de dos nmeros, el algoritmo de Euclides para calcular el mximo comn divisor de dos enteros positivos, o incluso el mtodo de Gauss para resolver sistemas de ecuaciones lineales, en fin existen muchos algoritmos en nuestra vida diaria y quizs 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.

Definicin: Un algoritmo es un conjunto finito de instrucciones o pasos que sirven para ejecutar una tarea o resolver un problema. De un modo ms formal, un algoritmo es una secuencia finita de operaciones realizables, no ambiguas, cuya ejecucin da una solucin de un problema.

Los algoritmos no se implementan slo como programas, algunas veces en una red neuronal biolgica (por ejemplo, el cerebro humano implementa la aritmtica bsica o, incluso, una rata sigue un algoritmo para conseguir comida), tambin en circuitos elctricos, en instalaciones industriales o maquinaria pesada. El anlisis y estudio de los algoritmos es una disciplina de las ciencias de la computacin, y en la mayora de los casos su estudio es completamente abstracto sin usar ningn tipo de lenguaje de programacin ni cualquier otra implementacin; por eso, en ese sentido, comparte las caractersticas de las disciplinas matemticas. As, el anlisis de los algoritmos se centra en los principios bsicos del algoritmo, no en los de la implementacin particular. Algunos escritores restringen la definicin de algoritmo a procedimientos que deben acabar en algn momento, mientras que otros consideran procedimientos que podran ejecutarse eternamente sin pararse, suponiendo el caso en el que existiera algn dispositivo fsico que fuera capaz de funcionar eternamente. Definicin: Los lenguajes algortmicos permiten representar los pasos a seguir para resolver un problema. Programacin estructurada. M.C. Roberto Ibez Crdova 4

Los lenguajes algortmicos ms comunes son: a) Descripcin Narrada. b) Pseudocdigo. c) Diagramas de Flujo. Cada uno de estos lenguajes algortmicos utiliza un mtodo y reglas diferentes para representar los pasos a seguir y plantear la solucin de un problema (algoritmos).

a) Descripcin Narrada. Este algoritmo es caracterizado porque sigue un proceso de ejecucin comn y lgico, 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. Baarse. 3. Vestirse. 4. Desayunar. 5. Cepillarse los dientes. 6. Salir de casa. 7. Tomar el autobs. 8. Llegar a la Escuela. 9. Buscar el aula. 10. Ubicarse en un asiento. b) Descripcin en Pseudocdigo (Pseudo = falso). El pseudocdigo no es realmente un cdigo sino una imitacin y una versin abreviada de instrucciones reales para las computadoras. Es una tcnica para diseo de programas que permite definir las estructuras de datos, las operaciones que se aplicarn a los datos y la lgica 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 programacin.

Programacin estructurada.

M.C. Roberto Ibez Crdova

INICIO FIN PREGUNTAR HACER

Se utiliza para el indicar el inicio del algoritmo. Se utiliza para el indicar el fin del algoritmo. Se utiliza para pedir datos y guardarlos en la(s) variable(s) que se indica(n) despus. Se utiliza para indicar procesos, que se mencionan despus de esta palabra, 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 despus de esta palabra.

MOSTRAR

Pasos: 1,2,3,.. Se utilizan para indicar el flujo de los procesos.

Considere las siguientes reglas bsicas en la construccin de pseudocdigos: Solamente debe utilizar las palabras clave al inicio de cada paso a seguir. No debe codificar instrucciones de ningn lenguaje de programacin 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. Disear un algoritmo que lea cuatro variables y calcule e imprima su producto, suma y media aritmtica. 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

Programacin estructurada.

M.C. Roberto Ibez Crdova

c) Diagramas de Flujo (flujogramas). Son la representacin grfica de la solucin algortmica de un problema. Para disearlos se utilizan determinados smbolos o figuras que representan una accin dentro del procedimiento. Utilizan unos smbolos normalizados, con los pasos del algoritmo escritos en el smbolo adecuado y los smbolos unidos con flechas, denominadas lneas 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 rectngulo, 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 bsicas en la construccin de diagramas de flujo: Solamente debe utilizar las figuras indicadas y de un tamao 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, jams curvas. En cada paso expresar una accin 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.

Programacin estructurada.

M.C. Roberto Ibez Crdova

Ejemplo. Disear un algoritmo que lea cuatro variables y calcule e imprima su producto, suma y media aritmtica.

Ventajas de usar flujogramas. Rpida comprensin de las relaciones. Anlisis efectivo de las diferentes secciones del programa. Pueden usarse como modelos de trabajo en el diseo de nuevos programas o sistemas. Comunicacin con el usuario. Documentacin adecuada de los programas. Codificacin eficaz de los programas. Depuracin y pruebas ordenadas de programas.

Desventajas de los flujogramas. Diagramas complejos y detallados suelen ser laboriosos en su planteamiento y diseo. Acciones a seguir tras la salida de un smbolo de decisin pueden ser difciles de seguir si existen diferentes caminos. No existen normas fijas para la elaboracin de los diagramas de flujo que permitan incluir todos los detalles que el usuario desee introducir.

Programacin estructurada.

M.C. Roberto Ibez Crdova

En esta materia, solamente trabajaremos con pseudocdigos y diagramas de flujo.

Ventajas de utilizar un Pseudocdigo a un Diagrama de Flujo


Ocupa menos espacio en una hoja de papel Permite representar en forma fcil operaciones repetitivas complejas Es muy fcil pasar de Pseudocdigo a un programa en algn lenguaje de programacin. Si se siguen las reglas se puede observar claramente los niveles que tiene cada operacin

Por estas razones en los libros es ms comn encontrar algoritmos escritos en pseudocdigos que diagramas de flujo, sin embargo, los diagramas de flujo cuando se inicia en la programacin son ms fciles 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.- Definicin (planteamiento) del problema. Paso 2.- Anlisis del problema. Paso 3.- Diseo del algoritmo.

Veamos algunos ejemplos bsicos donde apliquemos aunque de manera simple cada uno de estos pasos, hasta el paso No.3 de la metodologa para resolver problemas por computadora, no es necesario sentarse frente a ella, bsicamente consiste en entender perfectamente el problema a resolver, de ser necesario habr que hacer una investigacin profunda con muchos ejemplos hasta que quede completamente claro lo que se desea obtener como resultado.

Programacin estructurada.

M.C. Roberto Ibez Crdova

Problema No.1. Determinar el rea de un cuadrado. Paso 1.- Definicin (planteamiento) del problema.

Paso 2.- Anlisis del problema. Es importante conocer la frmula 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 frmula anterior. Paso 3.- Diseo del algoritmo. Pseudo cdigo 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 rectngulo. Programacin estructurada. M.C. Roberto Ibez Crdova 10

Paso 1.- Definicin (planteamiento) del problema.

Paso 2.- Anlisis del problema. Es importante conocer la frmula que permitir determinar el rea del rectngulo: 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 frmula anterior. Paso 3.- Diseo del algoritmo.

Pseudocdigo 1.- INICIO 2.- PREGUNTAR lado1 3.- PREGUNTAR lado2 4.- HACER area=lado1*lado2 5.- MOSTRAR area 6.- FIN

Diagrama de flujo

Observacin: En el Algoritmo, en una lnea o figura se pueden pedir dos o ms datos al mismo tiempo. Problema No.3. Determinar el rea de un crculo. Programacin estructurada. M.C. Roberto Ibez Crdova 11

Paso 1.- Definicin (planteamiento) del problema.

Paso 2.- Anlisis del problema. Es importante conocer las frmulas que permitir determinar el rea del crculo: 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 frmula anterior. Paso 3.- Diseo del algoritmo. Pseudocdigo Diagrama de flujo

1.- INICIO 2.- PREGUNTAR radio 3.- HACER area = PI*radio*radio 4.- MOSTRAR area 5.- FIN

Programacin estructurada.

M.C. Roberto Ibez Crdova

12

Problema No.4. Elabore un Algoritmo que convierta Kilmetros a Milmetros.

Paso 1.- Definicin (planteamiento) del problema. Convertir una unidad dada en kilmetros a milmetros 1 kilmetro equivale a 1000 metros 1 metro equivale a 1000 milmetros Por lo tanto 1 kilmetro contiene 1,000,000 milmetros Paso 2.- Anlisis del problema. Es importante conocer la frmula que permitir realizar la conversin. mm = Kms*1,000,000. Para que la computadora o cualquier persona pueda realizar la conversin, requiere que le proporcionemos el valor de los Kilmetros a convertir. Con este valor, podremos determinar la cantidad de milmetros aplicando la frmula anterior. Paso 3.- Diseo del algoritmo.

Pseudocdigo

Diagrama de flujo

1.- INICIO 2.- PREGUNTAR kms 3.- HACER mm= kms*1,000,000 4.- MOSTRAR mm 5.- FIN

Programacin estructurada.

M.C. Roberto Ibez Crdova

13

Problema No.5 Elabore un Algoritmo que convierta Millas a Kilmetros. Paso 1.- Definicin (planteamiento) del problema. Convertir una unidad dada en millas a kilmetros 1 Milla equivale a 1609 kilmetros Paso 2.- Anlisis del problema. En este caso se conocen las Millas y se desea convertir a kilmetros, por lo tanto, despejamos de la frmula y nos queda: Kms = Millas*1.609. Para que la computadora o cualquier persona pueda realizar la conversin, requiere que le proporcionemos el valor de las Millas a convertir. Con este valor, podremos determinar la cantidad de kilmetros aplicando la frmula anterior. Paso 3.- Diseo del algoritmo. Pseudocdigo Diagrama de flujo

1.- INICIO 2.- PREGUNTAR millas 3.- HACER kms= millas*1.609 4.- MOSTRAR kms 5.- FIN

Programacin estructurada.

M.C. Roberto Ibez Crdova

14

Problema No.6. Elabore un programa que calcule la velocidad conociendo la distancia y el tiempo de un mvil. Paso 1.- Definicin (planteamiento) del problema. Distancia = Velocidad * tiempo Paso 2.- Anlisis del problema. Velocidad = Distancia / Tiempo Donde: dis = distancia tiem = tiempo vel = velocidad Para que la computadora o cualquier persona pueda realizar la conversin, requiere que le proporcionemos la distancia y el tiempo del mvil. Con estos valores, podremos determinar la velocidad aplicando la frmula anterior. Paso 3.- Diseo del algoritmo.

Programacin estructurada.

M.C. Roberto Ibez Crdova

15

Resumen del tema. a) Los Diagramas de flujo y los Pseudocdigos tiene el mismo objetivo, solamente se presentan de forma diferente. Observe que para cada lnea de pseudocdigo corresponde una figura del diagrama de flujo y que adems sirven para lo mismo. b) Los Diagramas de flujo son ms fciles de interpretar, pero consumen demasiado espacio, a medida que el programa crece. c) Es importante practicar ambos mtodos. d) Ms adelante, cuando se programe en la computadora, debern primero realizar los algoritmos con esta metodologa. 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 opinin sobre el cncer y no sabe de ello, por lo tanto, no podr externar opinin alguna. Si ya sabe de lo que le hablan contine, en caso contrario busque suficiente informacin del tema. Identifique qu datos necesita conocer y qu frmula(s) requiere. Escrbalas. Construya su algoritmo y pida a su asesor que lo revise.

Programacin estructurada.

M.C. Roberto Ibez Crdova

16

Você também pode gostar