TRABAJO UNIDAD 2 ALGORITMOS (1)

Embed Size (px)

Citation preview

ALGORITMO GRANTES DE EQUIPO: ANGELES CARPIO LAURA TE PUEDO AYUDAR A: MULTIPLICAR 7 AYUDA 1 1.MODULO SUMAR 09--) MODULO MODULO ALGORITMOS 2.DIVIDIR 8 RESTAR LUZ RUIZ JESSICA CATEDRTICO:3 R1MODULO1 RESTAR MODULO INSTITUTO 3.MODULO4 A 7 DE MARZO DELPACHUCA TECNOLGICO DE 2011. PACHUCA DE SOTO HGO. MULTIPLICAR MODULO 2 en contacto con la ciencia MODULO2 00948) HERNNDEZ RAMREZ ANSELMO El hombre alimenta SUMAR el 4.SUMAingenio DIVIDIR 2 RESTAR MULTIPLICAR 4 MODULO3 3 DERO ORNELAS ALAND YARDEN (09200956) 5.RESTAR FIN 3 MODULO OPCION NDEZ SNCHEZ TONATHIU DIVIDIR 5 (09200970) MODULO R2 5 RESTAR 3 MODULO R3 6 RESTAR 3

MODULO

ALGORITMOS Y LENGUAJE DE PROGRAMACI NUNIDAD II DESARROLLO DE LGICA ALGORTMICA

Umbrella Corp.

2

NDICE

3

2.1METODOLOGIA PARA LA RESOLUCIN DE PROBLEMAS________________________________________________________________________________

Para la resolucin de un problema es conveniente aplicar un mtodo. Un mtodo es, fundamentalmente, una actitud, una estrategia, una filosofa, que frente a una situacin problemtica orienta en la bsqueda de una solucin. A continuacin planteamos las diversas etapas de un mtodo, aplicables a la resolucin de problemas tecnolgicos. 1.- Reconocimiento del problema. Los alumnos individualizan la situacin problemtica, vinculada al quehacer tecnolgico, que despierta su curiosidad o inters, destacando las implicaciones de orden tcnico, cientfico, cultural, econmico o social presentes en el caso. 2.- Formulacin y anlisis del problema. Formulan en trmino de problema el caso individualizado en la etapa anterior. Esta formulacin debe ser clara: explicitando los aspectos tecnolgicos del problema, precisando los objetivos a alcanzar, buscando informacin y analizando el problema y las soluciones existentes. En este punto es importante investigar las tcnicas distintas que se han utilizado para resolver el mismo problema o similares. 3.- Bsquedas de alternativas de solucin. Generan alternativas para solucionar el problema, partiendo de los conocimientos con que cuentan o con los que pueden adquirir (nueva informacin, pruebas, contrastacin de datos, etc.).

4

4.- Seleccin de la solucin. Seleccionan la solucin que mejor se adapte a los objetivos planteados, teniendo en cuenta el marco econmico y social en el que est inserto el problema. 5.- Evaluacin de la solucin. Verifican el comportamiento de la solucin en un contexto global y ajustan su funcionamiento, optimizndola. 6.-Presentacin de la solucin. Detallan la solucin, el proceso que siguieron para lograrla, sus caractersticas tcnicas (especificaciones, rendimiento, etc.) y justifican las ventajas que presenta. El mtodo presentado no se sigue en forma lineal, sino que entre las etapas hay retroalimentacin que permite ir y venir entre cada una de ellas. Una vez que tenemos la definicin de lo que se va a realizar y los pasos a seguir, a continuacin una breve explicacin de cmo se hace: RESOLUCION DEL PROBLEMA POR COMPUTADORA El Computador es una mquina que no puede trabajar por s sola, nicamente realiza aquellas rdenes que el hombre le indique. Esas ordenes tienen que ser realizadas de tal forma que el computador las entienda, siendo esta la causa por la cual se hace necesario darle instrucciones agrupadas. Esto constituye el software, el cual es pensado y realizado por el hombre. El software est conformado por el conjunto de programas que se disean para el funcionamiento del computador. Deben estar escritos en un lenguaje de programacin. El Software se divide en dos grandes tipos: software del sistema y software de aplicacin El software del Sistema es el conjunto de programas necesarios para que5

la mquina funcione, estos programas son bsicamente, el Sistema Operativo, los Editores de texto, los Compiladores, Intrpretes y los Programas de utilidad. El software de aplicacin son los que realizan tareas concretas, nminas, contabilidad, anlisis estadsticos, etc. es decir todos aquellos programas que pueden ser escritos en un Lenguaje de Programacin. Es as como se utiliza este conjunto de programas visualizados por computadora. Aunque el proceso de disear programas es un proceso creativo, se pueden considerar tres pasos que ayudan al programador en este proceso: Anlisis del problema Diseo del algoritmo

Resolucin del algoritmo en la computadora Las fases de anlisis y diseo del algoritmo requieren la descripcin del problema en subproblemas y una herramienta de programacin: Diagrama de flujo, Pseudocdigo o Diagrama N-S (diagramas de NassiSchneider). En la tercera fase se implementa este algoritmo en un cdigo escrito en un lenguaje de programacin, reflejando las ideas obtenidas en las fases de anlisis y diseo. Veamos algunos ejemplos. Ejemplo 1.2. Ver una pelcula. 1. Buscar el DVD de la pelcula. 2. Si el televisor y la video-casetera se encuentran apagados, encenderlos. 3. Sacar el video del estuche. 4. Introducirlo en el DVD. 5. Tomar el control del televisor y el video. 6. Dirigirme al sof. 7. Ponerme cmodo 8. Ajustar el volumen. 9. Disfrutar la pelcula Ejemplo 1.3. Cocinar arroz. 1. Lavar bien el arroz. 2. Buscar un recipiente (caldero) de tamao adecuado. 3. Agregar el agua necesaria de acuerdo a la cantidad de arroz. 4. Agregar aceite, sal, cebolla, ajo porro. 5. Colocar el recipiente en la cocina. 6. Encender la hornilla. 7. Esperar a que hierva6

el agua. 8. Agregar el arroz al agua hirviendo. 9. Dejar el recipiente en el fuego hasta que el arroz este blando. 10. Apagar la hornilla. 11. Servir. 12. Comer. Buen provecho!! FASES PARA LA RESOLUCION DE PROBLEMAS 1. Anlisis del Problema. En la fase de anlisis en el proceso de programacin se determina que hace el programa. 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 poder 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 produce la salida deseada? 2. Diseo del Algoritmo. 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: la resolucin de un problema complejo se realiza dividiendo el problema en subproblemas y a continuacin dividir estos en otros de nivel ms bajo, hasta que sea implementada una solucin en la computadora. Este mtodo se conoce tcnicamente como diseo descendente (top-down) o modular. El programa principal (el mdulo de nivel ms alto) llama a subprogramas (mdulos) de nivel ms bajo, que a su vez pueden llamar a otros subprogramas. Estos mdulos pueden ser planeados, codificados, comprobados y depurados independientemente y luego combinarlos entre s. Este proceso implica la ejecucin de estos pasos hasta que el programa se ha terminado. El diseo del algoritmo es independiente del lenguaje de programacin en el que se vaya a codificar posteriormente.

7

3. Implementacin del Algoritmo. Para implementar un algoritmo en la computadora, se debe ejecutar los siguientes pasos: Codificacin y documentacin, Compilacin y ejecucin, Verificacin y finalmente la Depuracin. (a) Codificacin y documentacin. Es la escritura en un lenguaje de programacin de la representacin de un algoritmo, en el caso de este curso se utilizan como lenguajes. La codificacin se conoce como programa fuente. La documentacin 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 pseudo cdigos, manuales de usuarios con instrucciones para ejecutar el programa y para interpretar los resultados. 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, para que el futuro programador pueda darle mantenimiento fcilmente a el programa, o incluso, si es el mismo creador quien debe darle mantenimiento. La importancia de la documentacin debe ser destacada por su influencia en la etapa final, ya que programas pobremente documentados son difciles de leer, ms difciles de depurar y casi imposibles de mantener y modificar. (b) Compilacin y ejecucin. Una vez que el algoritmo se ha convertido en un 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. Cuando no existen errores en el programa fuente se debe instruir al8

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. (c) Verificacin 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.

ERRORES GENERAL DE UN PROGRAMA Un programa puede considerarse como una secuencia de acciones (instrucciones) que manipulan un conjunto de objetos (datos) para que realice una tarea especfica. Un programa contiene dos bloques:

Bloque de declaraciones: en l se especifican todos los objetos que utiliza el programa (constantes, variables, tablas, registros, archivos, etc.

Bloque de instrucciones: constituido por el conjunto de operaciones que se han de realizar para la obtencin de los resultados deseados. Dentro del bloque de instrucciones de un programa podemos diferenciar tres partes fundamentales. En algunos casos, estas tres partes estan perfectamente delimitadas, pero en la mayora sus instrucciones quedan entremezcladas a lo largo del programa, si9

bien mantienen una cierta localizacin geomtrica impuesta por la propia naturaleza de las mismas.

Entrada de datos: la constituyen todas aquellas instrucciones que toman datos de un dispositivo externo, almacenndolos en la memoria central para que puedan ser procesados.

Proceso o algoritmo: est formado por las instrucciones que modifican los objetos a partir de su estado inicial hasta el estado final, dejando estos disponibles en la memoria central.

Salida de resultados: conjunto de instrucciones que toman los datos finales de la memoria central y los envan a los dispositivos externos.

Los

algoritmos

se

encuentran

compuestos

de

varios

tipos

de

instrucciones. Una Instruccin es la parte ms pequea de un programa que un computador puede ejecutar. Las instrucciones pueden ser: 1. Instrucciones de declaracin: se utilizan en aquellos lenguajes de programacin que no tienen declaracin explcita de los objetos. Su misin consiste en indicar al procesador que reserve espacio en la memoria para un objeto del programa, indicando asimismo su nombre, tipo y caractersticas. 2. Instrucciones primitivas: son aquellas que ejecuta el procesador de modo inmediato. Las principales son asignac in, entrada y salida. Una instruccin de asignacin calcula el valor de una expresin y lo almacena en una variable. Una instruccin de entrada toma un dato de un dispositivo de entrada y lo almacena en un objeto o variable. Eventualmente, los datos de entrada no provienen de un dispositivo10

externo, sino que han sido colocados previamente en el mismo programa. Una instruccin de salida toma el valor de una expresin u objeto y lo lleva a un dispositivo externo (pantalla, por lo general). 3. Instrucciones compuestas: son aquellas que el procesador no puede ejecutar directamente, sino que realiza una llamada a un subprograma, subrutina o prrafo. 4. Instrucciones de control: son aquellas que controlan la ejecucin de otras instrucciones. Instruccin de seleccin o alternativa: controla la ejecucin de unas u otras instrucciones segn una condicin. Puede ser simple o doble (SI y SINO). Instruccin de salto incondicional: altera la secuencia normal de ejecucin de un programa, continuando la misma en la lnea indicada en la propia instruccin (IR A). Instruccin de salto condicional: altera la secuencia normal de ejecucin de un programa nicamente en el caso de cumplimiento de una condicin asociada a la propia instruccin (SI ... IR A). Instruccin repetitiva: hace que se repitan una o varias instrucciones un nmero determinado o indeterminado de veces (PARA, MIENTRAS, HASTA e ITERAR). Algunas variables realizan funciones especficas dentro de un programa, y por su gran utilidad, frecuencia de uso y peculiaridad, conviene hacer una mencin aparte. Las ms importantes son:

Contadores. Un contador incrementa una variable en funcin de un valor constante. En otras palabras, es un campo de memoria cuyo valor se incrementa en una cantidad fija, positiva o negativa, generalmente asociado a un bucle. Toma un valor inicial antes de comenzar su funcin, y cada vez que se realiza el suceso, incrementa su valor. Ejemplo; Contador = Contador + constante; Contador = Contador +1

11

Acumuladores. Un acumulador incrementa una variable en funcin de otra variable, es decir, es un campo de memoria cuyo valor se incrementa sucesivas veces en cantidades variables. Se utiliza en aquellos casos en que se desea obtener el total acumulado de un conjunto de cantidades, siendo preciso inicializarlo con el valor 0. Se utiliza con mayor frecuencia para obtener sumas sucesivas. Por ejemplo; Acumulador = Acumulador + valor variable.

12

2.2 METODOLOGIA PARA EL DISEO DE SOFTWARE: TOPDOWN, BOTTOMUP, MODULAR Y PROGRAMACION ESTRUCTURADA________________________________________________________________________________

TOP DOWN El diseo descendente es una tcnica que permite disear la solucin de un problema con base en la modularizacin o segmentacin dndole un enfoque de arriba hacia abajo (Top Down Design). Esta solucin se divide en mdulos que se estructuran e integran jerrquicamente, como si fuera el organigrama de una empresa. Ejemplo 1:

En el diagrama anterior se muestra la estructura del algoritmo, que se auxilia de tres mdulos subordinados, cada uno de los cuales ejecuta una tarea especfica. En su momento el modulo principal algoritmo invocara o llamara a los mdulos subordinados, es decir, dirigir su funcionamiento.

13

MDULO Un mdulo es un segmento, rutina, subrutina, subalgoritmo o

procedimiento, que puede definirse dentro de un algoritmo con el fin de ejecutar una tarea especfica y puede ser llamada o invocada desde el algoritmo principal cuando sea necesario. MODULARIZACIN Este enfoque de segmentacin o modularizacion es til en dos casos : 1. Cuando existe un grupo de instrucciones o una tarea especifica que

deba ejecutarse en ms de una ocasin. 2. Cuando un problema es complejo o extenso, la solucin se divide o

segmenta en mdulos que ejecutan partes o tareas especificas . Dicha solucin se organiza de forma similar a como lo hacen las empresas cuando se estructuran con base en las funciones para realizar sus actividades ; en otras palabras, el trabajo se divide en partes que sean fcilmente manejables y que , lgicamente, puedan ser separadas ; as, cada una de estas partes se dedica a ejecutar una determinada tarea, lo que redundara en una mayor concentracin , entendimiento y capacidad de solucin a la hora de disear la lgica de cada una de estas. Dichas partes son mdulos o segmentos del algoritmo, algunos de ellos son los mdulos directivos o de control, que son los que se encargaran de distribuir el trabajo de los dems mdulos. De esta manera se puede disear un organigrama que indique la estructura general de un algoritmo. En el diagrama anterior se tiene un mdulo directivo llamado algoritmo, que dirige el funcionamiento de tres mdulos subordinados, que son : modulo uno, modulo dos y modulo tres .

14

PROCESO DE SEGMENTACIN El proceso de segmentacin consiste en hacer una abstraccin del problema, del cual se tiene inicialmente un panorama general. Enseguida, se procede a desmenuzar o dividir el problema en partes pequeas y simples, como se muestra: 1. Se forma un primer mdulo enunciando el problema en trminos de la

solucin a ste. EJEMPLO: Se necesita disear un algoritmo que ayude a un nio a revisar sus tareas referentes a las operaciones aritmticas fundamentales: sumar, restar, multiplicar y dividir. El proceso es el siguiente: Se ofrecer un men de opciones para escoger lo que desee hacer, de acuerdo con el siguiente formato:

APLICACIN:

15

Si nos referimos al ejemplo anterior, tenemos que se deben mantener cuatro tareas o funciones claramente definidas: sumar, restar, multiplicar y dividir, de ah que necesitamos un mdulo para cada una de las tareas, las cuales debern estar subordinadas al mdulo principal. La estructura que se tiene, entonces, es la siguiente:

NOTA: Los mdulos se numeran de arriba hacia abajo y de izquierda a derecha. 3. Se repite el paso 2 para cada mdulo nuevo definido, hasta llegar a un nivel de detalle adecuado, es decir, hasta hacer que cada mdulo ejecute una tarea especfica, que este claramente definida y que el diseo de la lgica del mismo resulte fcil utilizando el pseudocdigo. En el problema que estamos analizando, se revisan los sumar, restar, multiplicar y dividir. Se considera que estos tienen un nivel de detalle adecuado, porque cada mdulo hace una tarea muy simple, clara y especfica y, en consecuencia, se pueden disear fcilmente utilizando el pseudocdigo.

16

En caso de no ser as, es decir, que el mdulo restar, por ejemplo, requiera otros mdulos subordinados, la escritura general del algoritmo sera la siguiente:

Como se puede ver la numeracin sufre ciertas alteraciones, es decir, cuando se llega al mdulo restar se enumera todo lo que dependa de este, para despus continuar con el de multiplicar que es el siguiente en el orden.

17

En este caso, el mdulo de restar se convierte a su vez en un mdulo directivo que controla la ejecucin de sus mdulos subordinados. BOTTOM UP La diferencia del tipo de diseo ascendente y descendente solo se puede dar a la hora de la programacin. Porque en el momento de dibujar la estructura del problema, en las dos formas el diseo queda igual, solamente que los mdulos son enumerados en forma diferente, pero esto se hace pensando ya en cmo se va a comenzar a programar. En el diseo ascendente primero se programan los mdulos que se encuentran ms abajo de la estructura, hasta llegar al primer mdulo dibujado. Tomando un ejemplo del diseo descendente la estructura quedara como sigue :

Ejercicio: Realiza el diseo ascendente para la gestin del control de un hotel utilizando la siguiente informacin: pagos a empleados (nombre, puesto, sueldo, horas extra) Prstamos externos (cliente, prstamo, aval, plazo) libro de reservaciones (nombre, departamento, entrada, salida) Mantenimiento (rea, daos, total)

Esta grfica muestra los mdulos generales que va a contener el programa.

18

2.3 DEFINICIN DE LENGUAJES ALGORTMICOS_______________________________________________________________________________ LENGUAJE Es una serie de smbolos que sirven para transmitir uno o ms mensajes (ideas) entre dos entidades diferentes. A la transmisin de mensajes se le conoce comnmente como comunicacin. La comunicacin es un proceso complejo que requiere una serie de reglas simples, pero indispensables para poderse llevar a cabo. Las dos principales son las siguientes:

Los mensajes deben correr en un sentido a la vez. Debe forzosamente existir 4 elementos: Emisor, Receptor, Medio de Comunicacin y Mensaje.

DEFINICIN DE ALGORITMO La palabra algoritmo se deriva de la traduccin al latn de la palabra rabe alkhowarizmi, nombre de un matemtico y astrnomo rabe que escribi un tratado sobre manipulacin de nmeros y ecuaciones en el siglo IX. Es un Mtodo para resolver un problema mediante una serie de pasos precisos, definidos y finitos. Un algoritmo es una serie de operaciones detalladas, en otras palabras un algoritmo es un conjunto de reglas para resolver una cierta clase de problemas y se puede formular de muchas formas con el cuidado de que no exista ambigedad.

LENGUAJES ALGORTMICOSEs una serie de smbolos y reglas que se utilizan para describir de manera explcita un proceso. 19

Tipos de Lenguajes Algortmicos Grficos: Es la representacin grfica de las operaciones que realiza un algoritmo (diagrama de flujo). No Grficos: Representa en forma descriptiva las operaciones que debe realizar un algoritmo (pseudocodigo). Caractersticas Preciso: indicar el orden de realizacin de cada paso. Claro: Un algoritmo debe estar definido. Si se sigue dos veces se debe obtener el mismo resultado. Finito: Si se sigue un algoritmo se debe terminar en algn momento. Debe ser Sencillo, Legible, Modular, Eficiente y Efectivo. Se ha de desarrollar en el menor tiempo posible. Correcto. Todo Algoritmo debe tener cero ms entradas. Debe tener al menos una salida y sta debe ser tangible.

2.3.1 ELEMENTOS Y REGLAS DE LA REPRESENTACIN GRAFICA Y MANUSCRITA DE LOS ALGORITMOS ____________________________________________________________ ___________________PSEUDOCDIGO En programacin, lenguaje artificial e informal til para programadores para el desarrollo de algoritmos. No es un lenguaje de programacin verdadero y, por lo tanto, no puede ser compilado y ejecutado. En pseudocdigo se describen los algoritmos utilizando una mezcla de lenguaje comn, con instrucciones de programacin, palabras claves, etc. El objetivo es que el programador se centre en la solucin lgica del algoritmo y no en la implementacin en un lenguaje de programacin20

concreto (con las posibles complicaciones en las reglas sintcticas), o en otras palabras, slo ayudan a "pensar" un programa antes de escribirlo en un lenguaje de programacin formal. Caractersticas Es una tcnica para expresar en lenguaje natural la logica de un

programa mediante el empleo de palabras claves, es decir muestra su flujo de control.

que

No es un lenguaje de programacin, si no una manera de plantear

un proceso. Debe ser considerado como una herramienta para el diseo de

programas y no como una notacin para la descripcin de los mismos. Debe posibilitar la descripcin de:

Instrucciones de entrada salida Instrucciones de proceso Sentencias de control de flujo de ejecucin Acciones repetitivas controladas.

DIAGRAMA DE FLUJO Es la representacin grfica de la solucin de un problema, por medio de smbolos estandarizados, que se colocan en una secuencia adecuada para indicar las fases lgicas de la solucin de un problema. Los diagramas de flujo (o flujogramas) son diagramas que emplean smbolos grficos para representar los pasos o etapas de un proceso. Tambin permiten describir la secuencia de los distintos pasos o etapas y su interaccin.21

El sentido de ejecucin es de arriba hacia abajo y de izquierda a derecha. Es un medio de comunicacin eficiente. Una herramienta de anlisis. Una forma concisa de documentacin.

Los smbolos tienen significados especficos y se conectan por medio de flechas que indican el flujo entre los distintos pasos o etapas. Los smbolos ms comunes son:

DESARROLLO DEL DIAGRAMA DE FLUJO Las siguientes son acciones previas a la realizacin del diagrama de flujo: Identificar a los participantes de la reunin donde se desarrollar el

diagrama de flujo. Deben estar presentes el dueo o responsable del proceso, los dueos o responsables del proceso anterior y

22

posterior y de otros procesos interrelacionados, otras partes interesadas. Definir que se espera obtener del diagrama de flujo. Identificar quin lo emplear y cmo. Establecer el nivel de detalle requerido. Determinar los lmites del proceso a describir.

Los pasos a seguir para construir el diagrama de flujo son: Establecer el alcance del proceso a describir. De esta manera

quedar fijado el comienzo y el final del diagrama. Frecuentemente el comienzo es la salida del proceso previo y el final la entrada al proceso siguiente. Identificar y listar las principales actividades/subprocesos que estn

incluidos en el proceso a describir y su orden cronolgico. Identificar y listar los puntos de decisin. Construir el diagrama respetando la secuencia cronolgica y

asignando los correspondientes smbolos.

DIAGRAMA N-S Los diagramas N S constituyen un mtodo grfico de descripcin de algoritmos desarrollado por I. Nassi y B. Scheneiderman, en este tipo de diagramas el smbolo bsico es el rectngulo, dentro del cual se describen las acciones que constituyen el algoritmo, se podra decir que un diagrama N S es un diagrama de flujo en el que se omiten las lneas de unin y las cajas o rectngulos son contiguos, el aspecto general de un algoritmo expresado segn esta forma de descripcin.De esta forma se representan todas las acciones que se realicen de forma secuencial, es un conjunto de cajas en cada una de las cuales puede aparecer una o varias acciones, la figura anterior muestra el aspecto de una estructura 23

condicional, en ella la condicin ocupa la parte central y a cada uno de los lados se describen las acciones que se realizarn cuando la condicin sea verdadera o cuando sea falsa, dentro de los conjuntos de acciones correspondientes a la opcin verdadera y falsa, se utilizar cualquier estructura de control, secuencial, repetitiva o condicional, puede ocurrir que no se realice nada cuando la condicin sea falsa, de esta forma se representa el ciclo repetitivo que en pseudocdigo se denomina babucle Mientras, describe un conjunto de acciones que se repetirn mientras la condicin sea verdadera, al igual que antes, en la zona donde se ha puesto acciones bucle se detallarn las acciones a realizar con cualquier estructura de control, as se representa una estructura repetitiva, que realiza un conjunto de acciones hasta que una condicin sea verdadera, se utilizar con las mismas consideraciones que la estructura repetitiva descrita anteriormente o la condicional. 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 depalabras, 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.

Representacin en Diagrama Nassi Schneiderman: 24

Los problemas secuenciales en diagramas

N-S se representan solamente por cajas con lneas horizontales Un enfoque mas estructurado, pero tal vez menos visual, para el diseo y la documentacin en el diagrama Nassi Schneiderman. Una estructura condicional en N-S se representa de la siguiente manera :

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.

25

2.3.2 IMPLEMENTACIN DE ALGORITMOS SECUENCIALES (UTILIZANDO NOTACIN ALGEBRAICA) ____________________________________________________________ ___________________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. Se puede decir en pocas palabras que nuestra vida es un ejemplo de algoritmo, pues al desarrollar nuestros quehacer diarios desarrollamos una serie de pasos ordenados, as podremos quedar satisfechos con los resultados. El ingreso de la notacin algebraica en el desarrollo de algoritmos logr un gran avance para los programadores ya que fue una forma ms tangible de desarrollar sus programas, por medio de la lgica. Pues este se basa en un mtodo que simplifica las relaciones entre los casos, en la logaritmia se usan ciertos tipos de cuadros para identificar su comportamiento. Un algoritmo puede adoptar una de las estructuras siguientes o combinaciones de ellas: lineal o secuencial, alternativa o selectiva y repetitiva o cclica. La ms sencilla de las tres es la lineal, tambin llamada secuencial que se caracteriza porque todos los pasos del algoritmo se realizan en secuencia, es decir, se suceden uso a otros.

26

Un ejemplo de esta estructura es el algoritmo para calcular la densidad de un cuerpo a partir de los datos de masa y volumen, mostrada a continuacin a travs de un diagrama de flujo:

DISEO ALGORTMICO DE LAS FUNCIONES El diseo algortmico de cualquier funcin implica como se hace o realiza la tarea (problema) solicitado a resolver. En el diseo: En la resolucin de un problema complejo, se divide en varios subproblemas y seguidamente se vuelven a dividir los sub-problemas en otros ms sencillos, hasta que puedan implementarse en la computadora. Esta caracterstica define lo que se entiende como diseo descendente o diseo modular. Cada problema se resuelve mediante un modulo (subprograma) y tiene un solo punto de entrada y un solo punto de salida. Un programa bien diseado consta de un programa principal (modulo de nivel ms alto) que llama a subprogramas (mdulos de nivel ms bajo), que a su vez pueden llamar otros sub-programas. Los programas que se estructuran de esta forma, se dicen que tienen diseo modular y el mtodo de romper el programa en modos pequeos se llama programacin modular

2.4 PRUEBAS Y DEPURACINLA PRUEBA Se realiza tras la compilacin. 27

Si tras la compilacin se presentan errores (errores de compilacin) en el programa fuente, es preciso volver a editar el programa, corregir los errores y compilar de nuevo, este proceso se repite hasta que no se producen errores. De esta manera se obtiene el programa objeto, que todava no es ejecutable directamente, pero si no contiene errores se debe instruir al sistema para que realice la fase de montaje o enlace del programa objeto con las libreras del programa del compilador; este proceso de montaje produce un programa ejecutable.

LA DEPURACIN Las herramientas de depuracin se utilizan para detectar la/s sentencia/s en donde se han producido errores en el diseo de un algoritmo. La tarea de depuracin consiste bsicamente en explorar el algoritmo, ejecutndolo paso a paso y comparando en todo momento los valores que van tomando las distintas variables con los valores esperados. Es necesario, por tanto, haber analizado con anterioridad algunos casos de prueba que permitan anticipar en todo momento los valores que deben tomar las variables y saber si la progresin del algoritmo es correcta o no. Normalmente la depuracin se realizar ante la presencia de errores de ejecucin o lgicos, ya que los de sintaxis suelen ir acompaados de algn tipo de mensaje que facilita su localizacin.En otras palabras es el proceso de encontrar los errores del programa y corregir o eliminar dichos errores. Cuando se ejecuta un programa, se pueden producir tres tipos de errores: 1.- Errores de compilacin. Se producen normalmente por un uso incorrecto de las reglas del lenguaje de programacin y suelen ser errores de sintaxis, por lo tanto la computadora no puede comprender la instruccin, y obviamente no se obtendr el programa objeto, y el compilador imprimir una lista de todos los errores encontrados durante la compilacin.

28

2.- Errores de ejecucin. Estos errores se producen por instrucciones que las computadoras pueden comprender, pero no ejecutar. Ejemplos de stos son: una divisin por cero, y races cuadradas de nmeros negativos; por lo que en este caso se detiene la ejecucin del programa y se imprime un mensaje de error. 3.- Errores lgicos. Se producen en la lgica del programa y la fuente del error suele ser el diseo del algoritmo. Estos errores son los ms difciles de detectar, ya que el programa puede funcionar y no producir errores de compilacin ni ejecucin, y solo puede detectarse cuando se advierte un error por la obtencin de resultados incorrectos. En este caso se debe volver a la fase del diseo del algoritmo, modificarlo, cambiar el programa fuente, compilar y ejecutar una vez ms.

EJEMPLO Depuracin de errores en DFD. En primer lugar, copiaremos el fichero numeroprimo.dfd. El algoritmo presenta un error lgico, se puede comprobar ejecutndolo para algunos casos (2, 4, 15). Para detectar dicho error realizaremos una ejecucin hasta el lazo mientras, ya que no parece probable que el error est en las primeras sentencias del programa. Por tanto, fijamos el punto de ruptura en dicha sentencia, seleccionndola y pulsando el botn EJECUTAR HASTA. A partir de aqu, el proceso evoluciona de la siguiente manera: Accin Consecuencia Resultado

Se nos pide el nmero. Introducimos el valor 6:29

La ejecucin alcanza el punto de ruptura

+INS

Abrimos una ventana del depurador para evaluar las variables definidas hasta el momento. En este momento, todas ellas toman valores correctos

A partir de aqu seguimos paso a paso. La siguiente instruccin es el mientras, que se debe verificar.

30

Se cumple la condicin, ya que 2 es divisor de 6. Por tanto, ya sabemos que el nmero NO es primo, y divisor debe incrementarse y pasar a valer 1.

Se alcanza el final de la estructura de seleccin, y la variable divisor sigue valiendo cero. Aqu hay un error!

31

Detenemos la ejecucin paso a paso para editar la asignacin errnea y corregirla.

Una vez corregido el error, probamos nuevamente el algoritmo con los casos de prueba anteriores, verificando que funciona correctamente.

32