FASE DE RESOLUCIN DEL FASE DE IMPLEMENTACIN EN UN PROBLEMA LENG. DE PROG.
UNIDAD II DESARROLLO DE LOGICA ALGORITMICA
2.1 METODOLOGA PARA SOLUCIN DE PROBLEMAS
RESOLUCIN DE PROBLEMAS:
La principal razn para que las personas aprendan Lenguajes de programacin, es utilizar la computadora como una herramienta para la solucin de problemas.
- FASE DE RESOLUCIN DEL PROBLEMA FASES IDENTIFICADAS EN EL PROCESO DE SOLUCIN DE PROBLEMAS - FASE DE IMPLEMENTACION EN UN LENGUAJE DE PROGRAMACION.
FASE DE RESOLUCIN DEL PROBLEMA:
El resultado de esta fase es el diseo de un algoritmo para resolver un problema consta a su vez de: 1. Anlisis del Problema 2. Diseo del algoritmo 3. Verificacin del algoritmo.
ALGORITMO: Secuencia ordenada de pasos, sin ambigedades que conduce a la solucin de un problema.
Anlisis del problema Diseo del algoritmo Verificacin del algoritmo Codificacin del algoritmo Ejecucin del programa Verificacin del programa Programa de trabajo
INSTITUTO TECNOLOGICODE ORIZABA
ALGORITMOS Y LENGUAJES DE PROGRAMACIN 2 ANLISIS DEL PROBLEMA Es el primer paso para encontrar la solucin de un problema, hay que examinar cuidadosamente el problema para encontrar la solucin. Consiste en establecer una serie de preguntas acerca de lo que establece el problema, para poder determinar si se cuenta con los elementos suficientes para llevar a cabo la solucin del mismo, algunas preguntas son: Con qu cuento? Cules son los datos con los que se va a iniciar el proceso, qu tenemos que proporcionarle a la computadora y si los datos con los que cuento son suficientes para dar solucin al problema. Qu hago con esos datos? Una vez que tenemos todos los datos que necesitamos, debemos determinar que hacer con ellos, es decir que frmula, clculos, que proceso o transformacin deben seguir los datos para convertirse en resultados. Qu se espera obtener? Que informacin deseamos obtener con el proceso de datos y de que forma presentarla; en caso de la informacin obtenida no sea la deseada replantear nuevamente un anlisis en los puntos anteriores.
DISEO DEL ALGORITMO: Identificar las tareas y disponer el orden en el que han de ser ejecutadas. Una vez definido y analizado el problema, se procede a la creacin del algoritmo (Diagrama de flujo pseudocdigo), en el cual se da la serie de pasos ordenados que nos proporcione un mtodo explcito para la solucin del problema.
VERIFICACIN DEL ALGORITMO: Una vez que se termine de escribir el algoritmo, es necesario comprobar que realiza las tareas para las que ha sido diseado. Es recomendable la realizacin de pruebas de escritorio al algoritmo diseado, para determinar su confiabilidad y detectar los errores que se pueden presentar en ciertas situaciones. stas pruebas consisten en dar valores a la variable e ir probando el algoritmo paso a paso para obtener una solucin y si sta es satisfactoria continuar con el siguiente paso de la metodologa; de no ser as y de existir errores deben corregirse y volver a hacer las pruebas de escritorio al algoritmo.
CODIFICACIN DEL ALGORITMO Consiste en escribir la solucin del problema (de acuerdo al pseudocdigo); en una serie de instrucciones detalladas en un cdigo reconocible por la computadora; es decir en un lenguaje de programacin (ya sea de bajo o alto nivel), a esta serie de instrucciones se le conoce como PROGRAMA. INSTITUTO TECNOLOGICODE ORIZABA
ALGORITMOS Y LENGUAJES DE PROGRAMACIN 3 EJECUCIN DE PROGRAMA Y VERIFICACIN DEL PROGRAMA Prueba es el proceso de identificar los errores que se presenten durante la ejecucin del programa. La Depuracin consiste en eliminar los errores que se hayan detectado durante la prueba, para dar paso a una solucin adecuada y sin errores. PROGRAMA DE TRABAJO Es la gua o comunicacin escrita que sirve como ayuda para usar un programa, o facilitar futuras modificaciones. A menudo un programa escrito por una persona es usado por muchas otras, por ello la documentacin es muy importante.
ELABORACIN DE ALGORITMOS
Supongamos que se necesita calcular e imprimir el rea de un tringulo cuya base y altura se suministrarn de un disco.
Procedimiento: a).- Enunciado del problema: Calcular e imprimir el rea de un tringulo cuya base y altura se suministrarn de un disco. b).- Analizar la solucin general del problema: 1.- Entender concretamente la solucin que se desea obtener del problema. 2.- Buscar las variables a utilizar.
Anlisis: 1.- Qu se quiere? -Calcular el rea de un tringulo
Cmo se quiere? -Se desea calcular a travs de una frmula. AREA = BASE * ALTURA 2 Qu deseo obtener? -Imprimir el rea del tringulo y suministrar los resultados en un disco.
Top Down Bottom up Modular INSTITUTO TECNOLOGICODE ORIZABA
ALGORITMOS Y LENGUAJES DE PROGRAMACIN 4
La tecnica Botton up consiste en realizar la declaracin de variables, funciones y procedimientos al final del cdigo fuente; Y los procesos, funciones, etc... deben ir al principio del documento. Bottom-Up Esta tcnica consiste en partir de los detalles ms precisos del algoritmo completando sucesivamente mdulos de mayor complejidad, se recomienda cuando ya se cuenta con experiencia y ya se sabe lo que se va a hacer.
Por el contrario, la tecnica TopDown consiste en hacer las declaraciones al principio del cdigo fuente y el resto de la programacin se hace despus de la declaracin. La programacin descendente o "Top - Down" es el proceso mediante el cual un problema se descompone en una serie de niveles o pasos sucesivos de refinamiento (stepwise). La metodologa descendente consiste en efectuar una relacin entre las sucesivas etapas de estructuracin de modo que exista una relacin entre ellas mediante entradas y salidas de informacin. Las estructuras desde los dos puntos de vista se representan de la siguiente forma:
El diseo descendente se representa as:
La programacin modular hace referencia a mdulos, su utilidad es simplificar y optimizar cada una de las funciones y/o procedimientos de tal forma que resulte un cdigo fuente preciso y entendible. La programacin modular es uno de los mtodos de diseo ms flexibles y potentes para mejorar la productividad de un programa. En programacin modular el programa se divide en mdulos (partes independientes), cada una de las cuales ejecuta una nica funcin o actividad y se codifican independientemente de otros mdulos. Cada uno de estos mdulos se analiza, codifica y pone a punto por separado. INSTITUTO TECNOLOGICODE ORIZABA
ALGORITMOS Y LENGUAJES DE PROGRAMACIN 5
La programacin estructurada es una forma de escribir programas de ordenador (programacin de computadora) de forma clara. Para ello utiliza nicamente tres estructuras: secuencia, seleccin e iteracin; Hoy en da las aplicaciones informticas son mucho ms ambiciosas que las necesidades de programacin existentes en los aos 1960, principalmente debido a las aplicaciones grficas, por lo que las tcnicas de programacin estructurada no son suficientes. Ello ha llevado al desarrollo de nuevas tcnicas, tales como la programacin orientada a objetos y el desarrollo de entornos de programacin que facilitan la programacin de grandes aplicaciones. 2.3 IMPLEMENTACIN DE ALGORITMOS SECUENCIALES Algoritmo.- Secuencia ordenada de pasos, sin ambigedades que conduce a la solucin de un problema.
Caractersticas que debe cumplir un Algoritmo:
Preciso.- E identificar el orden de cada paso Definido.- Si se sigue el algoritmo 2 veces, se debe obtener el mismo resultado cada vez. Finito.- Si se sigue un algoritmo, se debe terminar en algn momento. "Un algoritmo se define como un mtodo que se realiza paso a paso para solucionar un problema que termina en un nmero finito de pasos". Partes de un Algoritmo:
Entrada.- Informacin dada al algoritmo Proceso.- Operaciones o clculos Salida.- Resultados finales de los clculos Algunos ejemplos son: Un cliente ejecuta un pedido a una fbrica. La fbrica examina en su banco de datos la ficha del cliente, si el cliente es solvente entonces la empresa acepta el pedido, en caso contrario rechazar el pedido. Pasos del algoritmo: 1. Inicio. 2. Leer el pedido. 3. Examinar ficha del cliente. 4. Si el cliente es solvente aceptar pedido, en caso contrario rechazar pedido. 5. Fin. INSTITUTO TECNOLOGICODE ORIZABA
ALGORITMOS Y LENGUAJES DE PROGRAMACIN 6 Determinar el mayor de tres nmeros enteros. 1. Inicio. 2.- Obtener el primer nmero (entrada), denominado NUM1. 3.- Obtener el segundo nmero (entrada), denominado NUM2. 4.- Compara NUM1 con NUM2 y seleccionar el mayor ; si los dos enteros son iguales, seleccionar NUM1. Llamar a este nmero MAYOR. 5.- Obtener el tercer nmero (entrada), y se denomina NUM3. 6.- Compara MAYOR con NUM3 y seleccionar el mayor ; si los dos enteros son iguales, seleccionar el MAYOR. Denominar a este nmero MAYOR. 7.- Presentar el valor MAYOR (salida). 8.- Fin.
DIAGRAMA DE FLUJO Diagrama de flujo: Conjunto de smbolos; los cuales se utilizan para representar a los algoritmos. Cada smbolo tiene una funcin especial, los cuales estn unidos por flechas, las cuales se denominan Lneas de flujo, que indican el orden en que los pasos deben ser ejecutados. SIMBOLOS
Inicio y Fin del Diagrama
Proceso.- En su interior se colocan operaciones aritmticas, asignaciones, cambios de valor, etc.
Lectura.- Se utiliza para introducir los datos de Entrada, expresa lectura.
Decisin.- En su interior se almacena una condicin y dependiendo del resultado de la Evaluacin , se sigue por uno de los caminos o ramas alternativas. INSTITUTO TECNOLOGICODE ORIZABA
ALGORITMOS Y LENGUAJES DE PROGRAMACIN 7
Flechas de Direccionamiento.- Se utilizan para expresar la direccin del flujo del Diagrama.
Salida por Impresora.- Expresa escritura, representa la impresin de un resultado.
Salida por Pantalla.- Para representar un resultado por pantalla.
Conectores de la misma pgina.- Para representar conexin dentro de una misma pgina.
Conector de diferente pgina.- Para representar la conexin entre diferentes pginas.
Reglas para el diseo de Diagramas de flujo:
Se debe evitar el cruce de lneas utilizando los conectores. Se deben usar los conectores solo cuando sea necesario. No debe quedar lneas de flujo sin conectar. Se leen de arriba hacia abajo. Todo diagrama de flujo debe tener un Inicio y un Fin.
Etapas en la Construccin de un Diagrama de Flujo:
Estas fases se presentan en la mayora de los diagramas de flujo, aunque a veces en orden diferente o repitiendo algunas de ellas. Tambin es frecuente tener que realizar toma de decisiones y repetir una serie de pasos un nmero determinado o no de veces.
INICIO Lectura de datos Proc. de los datos Imp. de Resultados FIN INSTITUTO TECNOLOGICODE ORIZABA
ALGORITMOS Y LENGUAJES DE PROGRAMACIN 8
Ejemplo:
Diagrama de flujo sencillo con los pasos a seguir si una lmpara no funciona. Un diagrama de flujo es una forma ms tradicional de especificar los detalles algortmicos de un proceso y constituye la representacin grfica de un proceso multifactorial. Se utiliza principalmente en programacin, economa y procesos industriales, pasando tambin a partir de estas disciplinas a formar parte fundamental de otras, como la psicologa cognitiva; estos diagramas utilizan una serie de smbolos con significados especiales. Son la representacin grfica de los pasos de un proceso, que se realiza para entenderlo mejor. Son modelos tecnolgicos utilizados para comprender los rudimentos de la programacin lineal. Un Diagrama de Flujo representa la esquematizacin grfica de un algoritmo , el cual muestra grficamente los pasos o procesos a seguir para alcanzar la solucin de un problema . Su correcta construccin es sumamente importante porque , a partir del mismo se escribe un programa en algn Lenguaje de Programacin. Si el Diagrama de Flujo est completo y correcto ,el paso del mismo a un Lenguaje de Programacin es relativamente simple y directo. DIAGRAMAS DE NASSI - SCHNEIDERMAN Definicin. El diagrama N-S o tambin conocido como diagrama de Chapin es una tcnica de especificacin de algoritmos que combina la descripcin textual, propia del pseudocdigo, con la representacin grfica del diagrama de flujo. INSTITUTO TECNOLOGICODE ORIZABA
ALGORITMOS Y LENGUAJES DE PROGRAMACIN 9 El diagrama N-S cuenta con un conjunto limitado de smbolos para representar los pasos del algoritmo, por ello se apoya en expresiones del lenguaje natural; sin embargo, dado que el lenguaje natural es muy extenso y se presta para la ambigedad, solo se utiliza un conjunto de palabras, a las que se denomina palabras reservadas. Las palabras reservadas ms utilizadas son:
Inicio Fin Leer Escribir Mientras Repita Hasta Para Incrementar Decrementar Hacer Funcin Entero Real Caracter Cadena Lgico Retornar Los smbolos utilizados en el diagrama de Chapin son corresponden a cada tipo de estructura. Dado que se tienen tres tipos de estructuras, se utilizan tres smbolos. Esto hace que los procesos del algoritmo sean ms fciles de representar y de interpretar. El diagrama estructurado N-S es como un diagrama de flujo en el que se omiten las flechas de unin y las cajas son contiguas. Un enfoque mas estructurado, pero tal vez menos visual, para el diseo y la documentacin en el diagrama Nassi Schneiderman. Los diagramas NS tienen tres smbolos principales : el primero es un cuadro que sirve para representar cualquier proceso en el programa ; el segundo smbolo es una decisin ; y el tercero es un cuadro dentro de otro cuadro que se utiliza para indicar que se lleva a cabo una iteracin.
INSTITUTO TECNOLOGICODE ORIZABA
ALGORITMOS Y LENGUAJES DE PROGRAMACIN 10 Ventajas Adopta la filosofa de la programacin estructurada, que utiliza un enfoque descendente, utiliza un nmero limitado de smbolos de tal forma que el diagrama de flujo ocupa menos espacio y puede leerse con cierta finalidad. Desventajas Deben estar completos y ser muy claros, con el fin de que se entiendan. Pseudocdigo es la descripcin de un algoritmo que asemeja a un lenguaje de programacin pero con algunas convenciones del lenguaje natural. Tiene varias ventajas con respecto a los diagramas de flujo, entre las que se destaca el poco espacio que se requiere para representar instrucciones complejas. El pseudocdigo no est regido por ningn estndar. pseudo viene de falso y por ende es un cdigo al que aunque es entendible no se aplica al proceso que debe realizar la maquina. El pseudocdigo describe un algoritmo utilizando una mezcla de frases en lenguaje comn, instrucciones de programacin y palabras clave que definen las estructuras bsicas. Su objetivo es permitir que el programador se centre en los aspectos lgicos de la solucin a un problema. No siendo el pseudocdigo un lenguaje formal, varan de un programador a otro, es decir, no hay una estructura semntica ni arquitectura estndar. Es una herramienta gil para el estudio y diseo de aplicaciones. El principal objetivo del pseudocdigo es el de representar la solucin a un algoritmo de la forma ms detallada posible, y a su vez lo ms parecida posible al lenguaje que posteriormente se utilizara para la codificacin del mismo. Las principales caractersticas de este lenguaje son: Se puede ejecutar en un ordenador Es una forma de representacin sencilla de utilizar y de manipular. Facilita el paso del programa al lenguaje de programacin. Es independiente del lenguaje de programacin que se vaya a utilizar. Es un mtodo que facilita la programacin y solucin al algoritmo del programa. DIAGRAMA ESTRUCTURADO La Estructura del algoritmo es la siguiente: Accin (nombre de la accin) es - Ambiente (Declaracin de variables) (Declaracin de constantes) - Algoritmo (Sentencias del programa) INSTITUTO TECNOLOGICODE ORIZABA
ALGORITMOS Y LENGUAJES DE PROGRAMACIN 11 Fin Accin Dentro del algoritmo hay dos secciones, estas son:
1. Ambiente > Seccin declarativa. Se declaran todas las estructuras de datos que utilizaremos en el algoritmo. 2. Algoritmo > Incluiremos aqu todas las acciones tendientes a resolver problemas. Solamente se usaran aqu las estructuras de datos DECLARADAS en el ambiente. TEOREMA DE LA PROGRAMACIN ESTRUCTURADA Todo algoritmo estructurado puede ser escrito por tres tipos de estructuras de control ESTRUCTURAS DE CONTROL .- Las estructuras de operacin de programas son un grupo de formas de trabajo, que permiten, mediante la manipulacin de variables, realizar ciertos procesos especficos que nos lleven a la solucin de problemas. Estas estructuras se clasifican de acuerdo con su complejidad en:
Secuencial .- Las acciones se suceden una a continuacin de la siguiente. Tiene una entrada y una salida. Nunca se ejecuta ms de una accin por vez. Condicional .- Se evala una condicin y en funcin del resultado de la misma se realiza una operacin u otra Simples (SI-Entonces).- Ejecuta una accin cuando se cumple la condicin. Alternativas (Si- Entonces-sino) .- Ejecuta una/s accin/es cuando se cumple la condicin. Caso contrario (condicin falsa) ejecuta otra/s accin/es. Mltiples (SEGN) .- Permite ejecutar una sentencia segn el valor de una variable. INSTITUTO TECNOLOGICODE ORIZABA
ALGORITMOS Y LENGUAJES DE PROGRAMACIN 12 Repetitivas .- Repiten una secuencia un Nmero de veces (Bucles) y al hecho de repetir la ejecucin de una secuencia de acciones se le llama Iteracin. Estructura MIENTRAS.- Permite ejecutar una sentencia mientras se cumpla la condicin (booleana o lgica). Es importante que la condicin sea falsa en algn momento para que no se genere un ciclo infinito. Estructura REPETIR .- Permite ejecutar la sentencia hasta que cumpla la condicin (booleana o lgica). Es importante que la condicin sea verdadera en algn momento para que no se genere un ciclo infinito. Estructura PARA .- Permite ejecutar una sentencia un nmero especifico de veces. Las sentencias se ejecutan dentro del bucle. Comienza con un Valor inicial hasta llegar a un valor final. 2.3.2 IMPLEMENTACION DE ALGORITMOS SECUENCIALES La estructura secuencial es aquella en la que una accin (instruccin) sigue a otra en secuencia. Las tareas se suceden de tal modo que la salida de una es la entrada de la siguiente y as sucesivamente hasta el fin del proceso. En Pseudocdigo una Estructura Secuencial se representa de la siguiente forma:
Observe el siguiente problema de tipo cotidiano y sus respectivos algoritmos representados en Pseudocdigo y en diagramas de flujos:
Tengo un telfono y necesito llamar a alguien pero no s como hacerlo. INSTITUTO TECNOLOGICODE ORIZABA
ALGORITMOS Y LENGUAJES DE PROGRAMACIN 13
El anterior ejemplo es un sencillo algoritmo de un problema cotidiano dado como muestra de una estructura secuencial Ahora veremos los componentes que pertenecen a ella:
Asignacin.-
La asignacin consiste, en el paso de valores o resultados a una zona de la memoria. Dicha zona ser reconocida con el nombre de la variable que recibe el valor. La asignacin se puede clasificar de la siguiente forma: Simples: Consiste en pasar un valor constante a una variable (a =15) Contador: Consiste en usarla como un verificador del numero de veces que se realiza un proceso (a =a + 1) Acumulador: Consiste en usarla como un sumador en un proceso (a =a + b) De trabajo: Donde puede recibir el resultado de una operacin matemtica que involucre muchas variables (a =c + b*2/4). En general el formato a utilizar es el siguiente: < Variable > = <valor o expresin > El smbolo = debe leerse asigne. Escritura o salida de datos
Consiste en mandar por un dispositivo de salida (p.ej. monitor o impresora) un resultado o mensaje. Esta instruccin presenta en pantalla el mensaje escrito entre comillas o el contenido de la variable. Este proceso se representa as como sigue:
INSTITUTO TECNOLOGICODE ORIZABA
ALGORITMOS Y LENGUAJES DE PROGRAMACIN 14 Lectura o entrada de datos
La lectura o entrada de datos consiste en recibir desde un dispositivo de entrada (p.ej. el teclado) un valor o dato. Este dato va a ser almacenado en la variable que aparece a continuacin de la instruccin. Esta operacin se representa as:
DECLARACION DE VARIABLES Y CONSTANTES
La declaracin de variables es un proceso que consiste en listar al principio del algoritmo todas las variables que se usarn, adems de colocar el nombre de la variable se debe decir qu tipo de variable es. Contador: ENTERO Edad, I: ENTERO Direccion : CADENA_DE_CARACTERES Salario_Basico : REAL Opcion : CARACTER
En la anterior declaracin de variables Contador, Edad e I son declaradas de tipo entero; Salario_Basico es una variable de tipo real, Opcion es de tipo carcter y la variable Direccion est declarada como una variable alfanumrica de cadena de caracteres.
En el momento de declarar constantes debe indicarse que lo es y colocarse su respectivo valor.
CONSTANTE Pi 3.14159 CONSTANTE Msg Presione una tecla y continue CONSTANTE ALTURA 40
Cuando se trabaja con algoritmos por lo general no se acostumbra a declarar las variables ni tampoco constantes debido a razones de simplicidad, es decir, no es camisa de fuerza declarar las variables. Sin embargo en este curso lo haremos para todos los algoritmos que realicemos, con esto logramos hacerlos ms entendibles y organizados y de paso permite acostumbrarnos a declararlas ya que la mayora de los lenguajes de programacin (entre ellos el C++) requieren que necesariamente se declaren las variables que se van a usar en los programas. Veamos algunos ejemplos donde se aplique todo lo que hemos visto hasta el momento sobre algoritmos:
Ejemplo 1: Escriba un algoritmo que pregunte por dos nmeros y muestre como resultado la suma de estos. Use Pseudocdigo y diagrama de flujos.
INSTITUTO TECNOLOGICODE ORIZABA
ALGORITMOS Y LENGUAJES DE PROGRAMACIN 15
Ejemplo 2: Escriba un algoritmo que permita conocer el rea de un tringulo a partir de la base y la altura. Exprese el algoritmo usando Pseudocdigo y diagrama de flujos.
El Algoritmo Lineal o Secuencial tiene la caracterstica de que todos los pasos que forman el Algoritmo siguen una determinada Secuencia, de ah que se le llame Secuencial.
PRUEBA DE ESCRITORIO.- Consiste en dar diferentes datos de entrada al diagrama y seguir la lgica del programa hasta tener un resultado verdico o si es necesario hacer ajustes al programa y volver a realizar la prueba.