Sunteți pe pagina 1din 23

Resolucin de Problemas.

o Anlisis del Problema o Diseo o Desarrollo del algoritmo o Resolucin del algoritmo en la Computadora. Resolucin de un problema

Anlisis del Problema

Diseo del algoritmo

Resolucin del Problema con La computadora

Anlisis del Problema. El propsito del anlisis de un problema es ayudar al programador para llegar a una cierta comprensin de la naturaleza del problema. El problema debe estar bien definido si se desea llegar a una solucin satisfactoria. Para poder definir con precisin el problema se requiere que las especificaciones de entrada y salida sean descritas con detalle. Una buena definicin del problema, junto con una descripcin detallada de las especificaciones de entrada y salida, son los requisitos ms importantes para llegar a una solucin eficaz. El anlisis del problema exige una lectura previa del problema a fin de obtener una idea general de lo que se solicita. La segunda lectura deber servir para responder a las preguntas: o Qu informacin debe proporcionar la resolucin del problema? Indicar los resultados deseados o las salidas del problema. o Qu datos se necesitan para resolver el problema? Indicar que datos se proporcionan o las entradas del problema.

Anlisis del problema

Definicin del problema

Especificaciones de Entrada

Especificaciones de salida

Diseo o Desarrollo del Algoritmo. La informacin proporcionada al algoritmo constituye su entrada y la informacin producida por el algoritmo constituye su salida. Los problemas complejos se pueden resolver ms eficazmente con la computadora cuando se rompen en subproblemas que sean ms fciles de solucionar que el original. Est mtodo se suele denominar divide y vencers y consiste en dividir un problema complejo en otros ms simples. La descomposicin del problema original en subproblemas ms simples y a continuacin dividir estos subproblemas en otros ms simples que pueden ser implementados para su solucin en la computadora se denomina diseo descendente. Normalmente los pasos diseados en el primer esbozo del algoritmo son incompletos e indicarn slo unos pocos pasos (un mximo de doce aproximadamente). Tras esta primera descripcin estos se amplan en una descripcin ms detallada con ms pasos especficos. Este proceso se denomina refinamiento del algoritmo. Para problemas complejos se necesitan con frecuencia diferentes niveles de refinamiento antes de que se pueda obtener un algoritmo claro, preciso y completo. o Escritura Inicial del Algoritmo. Un algoritmo consiste en realizar una descripcin paso a paso con un lenguaje natural del citado algoritmo. Recordemos que un algoritmo es un mtodo o conjunto de reglas para solucionar un problema. En clculos estas reglas tienen las siguientes propiedades: o Deben estar seguidas de alguna secuencia definida de pasos hasta que se obtenga un resultado coherente. o Solo puede ejecutarse una operacin a la vez. Resolucin del algoritmo en la Computadora. Una vez el algoritmo esta diseado y representado grficamente mediante una herramienta de programacin (diagrama de flujo, pseudocdigo o diagrama N-S) se debe pasar a la fase de resolucin prctica del problema con la computadora. Esta fase a su vez se descompone en las siguientes subfases: 1. Codificacin del algoritmo en un programa. 2. Ejecucin del programa. 3. Comprobacin del programa. En el diseo del algoritmo ste se describe en una herramienta de programacin tal como un diagrama de flujo, Diagrama N-S o pseudocdigo. Sin embargo, el programa que implementara el algoritmo debe ser escrito en un lenguaje de programacin y siguiendo las reglas gramaticales o sintaxis del mismo. La fase de conversin del algoritmo en un lenguaje de programacin se denomina codificacin, ya que el algoritmo escrito en un lenguaje de especfico de programacin se denomina cdigo. Tras la codificacin del programa, deber ejecutarse en una computadora y a continuacin de comprobar los resultados pasar a la fase final de la documentacin.

Representacin Grfica de los Algoritmos.

Para representar un algoritmo se debe utilizar algn mtodo que permita independizar dicho algoritmo del lenguaje de programacin elegido. Ello permitir que un algoritmo pueda ser codificado indistintamente en cualquier lenguaje. Par conseguir este objetivo se precisa que el algoritmo sea representado grfica o numricamente, de modo que las sucesivas acciones no dependan de la sintaxis de ningn lenguaje de programacin, sino que la descripcin pueda servir fcilmente para su transformacin en un programa, es decir, su codificacin. Los mtodos usuales para representar un algoritmo son: 1. Diagrama de Flujo 2. Diagrama N-S (Nassi- Schneiderman) 3. Lenguaje de especificaciones 4. Lenguaje espaol 5. Frmulas Los mtodos 4 y 5 no suelen ser fciles de transformar en programas. Una descripcin en espaol narrativo no es satisfactoria, ya que es demasiado prolija y generalmente ambigua. Una frmula, sin embargo, es buen sistema de representacin. Por ejemplo, la frmula para la solucin de una ecuacin cuadrtica es un medio sucinto de expresar el procedimiento algortmico que se debe ejecutar para obtener las races.

Diagrama de Flujo.

Un diagrama de flujo es una de las tcnicas de representacin de algoritmos ms antigua y a la vez ms utilizada, aunque su empleo ha disminuido considerablemente, sobre todo desde la aparicin de lenguajes de programacin estructurados. Un diagrama de flujo es un diagrama que utilizan los smbolos y que tienen los pasos del algoritmo escritos en esas cajas unidas por flechas, denominadas lneas de flujo, que indican la secuencia en que se deben ejecutar. Inicio Leer, nombre, horas precios Bruto horas * precio

Tasas0.25 * bruto

Neto bruto -tasas

Escribir nombre, bruto tasas, neto

Fin El diagrama anterior representa la resolucin de un programa que deduce el salario neto de un trabajador a partir de la lectura del nombre, horas trabajadas, precio de la hora, y sabiendo que el 25 por 100 sobre el salario bruto. Los smbolos estndar normalizados por ANSI son muy variados. Los smbolos ms utilizados en un diagrama de flujo representan: o Proceso o Decisin o Conectores o Fin o Entrada/ Salida o Direccin del Flujo En un diagrama de flujo: Existe una caja etiquetada inicio que es de tipo elptico. Existe una caja etiquetada fin de igual forma que la anterior. Si existen otras cajas, normalmente son rectangulares, tipo rombo o paralelogramo (el resto de las figuras se utilizan slo en diagramas de flujo generales o de detalle y no siempre son imprescindibles).

Se puede escribir ms de un paso del algoritmo en una sola caja rectangular. El uso de flechas significa que la caja no necesita ser escrita debajo de su predecesora. Sin embargo, abusar demasiado de esta flexibilidad conduce a diagramas de flujos complicados e ininteligibles. Smbolos de diagramas de flujo. Cada smbolo indica el tipo de operacin a ejecutar y el diagrama de flujo ilustra grficamente la secuencia en la que se ejecutan las operaciones. Las lneas de flujo () representa el flujo secuencial de la lgica del programa. Un rectngulo () significa algn tipo de proceso en la computadora, es decir, acciones a realizar (sumar dos nmeros, calcular la raz cuadrada de un nmero, etc.) El paralelogramo ( ) es un smbolo de entrada/salida que representa cualquier tipo de entrada o salida desde el programa o sistema, por ejemplo, entrada de teclado, salida en impresora o pantalla, etc. El smbolo rombo () es una caja de decisin que representa respuestas s/no o bien diferentes alternativas 1, 2, 3, 4,, etc. Cada diagrama de flujo comienza y termina con un smbolo Terminal ( ) Un pequeo circulo () es un conector y se utiliza para conectar caminos, tras roturas previas del flujo del algoritmo. Otros smbolos de flujo menos utilizados de mayor detalle que los anteriores son: Un trapezoide ( ) indica que un proceso manual se va a ejecutar en contraste con el rectngulo, que indica proceso automtico. Diagramas de Nassi-Schneiderman (N-S) El Diagrama N-S de Nassi-Schneiderman tambin conocido como diagrama de Chapn- es como un diagrama de flujo en el que se omiten las flechas de unin y las cajas contiguas. Las acciones sucesivas se describen en cajas sucesivas y, como en los diagramas de flujo, se pueden escribir diferentes acciones en una caja. Un algoritmo se representa de la forma siguiente: Nombre del algoritmo <accin 1> <accin 2> <accin 3> fin

Leer nombre, horas, precio Calcular salario horas* precio Calcular impuestos 0.25* salario Calcular neto salario- impuesto Escribir nombre, salario, impuesto, neto La estructura condicional (el rombo)

Condicin? Accin 1 Accin 2

se representa por: Condicin? Si <Acciones> No <Acciones>

Pseudocdigo El pseudocdigo es un lenguaje de especificacin (descripcin) de algoritmos. El uso de tal lenguaje hace el paso de codificacin final (esto es la traduccin a un lenguaje de programacin) relativamente fcil. Los lenguajes APL pascal y Ada se utilizaron a voces como lenguajes de especificacin de algoritmos. Se considera un primer borrador, dado que el pseudocdigo tiene que traducirse posteriormente a un lenguaje de programacin. El pseudocdigo no puede ser ejecutado por una computadora. La ventaja del pseudocdigo es que en su uso, en la planificacin de un programa, el programador se puede concentrar en la lgica y en las estructuras de control y no preocuparse de las reglas de un lenguaje especfico. Es tambin fcil modificar el pseudocdigo si se descubren errores o anomalas del programa, mientras que en muchas ocasiones suele ser difcil el cambio en la lgica, una vez que esta codificado en un lenguaje de programacin. Otra ventaja del pseudocdigo es que puede

ser traducido fcilmente a lenguajes estructurados como Pascal, C, FORTRAN 77/90, Ada 83/95, C++, etc. El pseudocdigo original utiliza para representar las acciones sucesivas palabras reservadas en ingles similares a sus homnimas en los lenguajes de programacin -, tales como Start, end, stop, if-then-else, while-end, repeat-until,etc. La escritura de pseudocdigo exige normalmente la indentacin (sangra en el margen izquierdo) de diferentes lneas. El algoritmo comienza con la palabra start y finaliza con la palabra end, en ingls (en espaol inicio y fin). Entre estas palabras, solo se escribe una instruccin o accin por lnea. La lnea procedida por // se denomina comentario. Es una informacin al lector del programa y no realiza ninguna instruccin ejecutable, slo tiene efecto de documentacin interna del programa. Algunos autores suelen utilizar corchetes o llaves. Concepto de Programa. Un programa de computadoras es un conjunto de instrucciones rdenes dadas a la mquina- que producirn la ejecucin de una determinada tarea. Es esencia, un programa es un medio para conseguir su fin. Proceso de la Programacin Definicin del problema DOCUMENTACION Diseo del algoritmo MANTENIMIENTO

Codificacin del Programa Depuracin y Verificacin

Partes constitutivas de un programa Tras la decisin de desarrollar un programa, el programador debe establecer el conjunto de especificaciones que debe contener el programa: entrada, salida y algoritmos de resolucin, que incluirn las tcnicas para obtener las salidas a partir de las entradas. La caja negra o el algoritmo de resolucin, en realidad, es el conjunto de cdigos que transforman las entradas del programa (datos) en salidas (resultados). El programa debe de establecer de dnde provienen las entradas al programa. Las entradas en cualquier caso, procedern de un dispositivo de entrada teclado, disco, - El proceso de inducir la informacin de entrada-datos- en la memoria de la computadora se denomina entrada de datos, operacin de lectura o accin de leer. Las salidas de datos se deben presentar en dispositivos perifricos de salida: pantalla, impresoras, discos, etc. La operacin de salida de datos se conoce tambin como escritura o accin de escribir. Instrucciones y tipos de instrucciones El proceso de diseo del algoritmo o posteriormente de codificacin del programa consiste definir las acciones o instrucciones que resolvern el problema. Las acciones o instrucciones se deben escribir y posteriormente almacenar en memoria el mismo orden en que ha de ejecutarse, es decir, en secuencia. Un programa puede ser lineal o no lineal. Un programa es lineal si las instrucciones se ejecutan secuencialmente, sin bifurcaciones ni comparaciones. Instruccin 1 Instruccin 2 . . . Instruccin n En el caso del algoritmo las instrucciones se suelen conocer como acciones, y se tendra: Accin 1 Accin 2 . . . Accin n

Un programa es no lineal cuando se interrumpe la secuencia mediante instrucciones de cacin: Accin 1 Accin 2 . . . Accin x Accin n Tipos de Instrucciones Las instrucciones disponibles en un lenguaje de programacin dependen del tipo de lenguaje. La clasificacin ms usual de instrucciones es: 1. 2. 3. 4. 5. Instrucciones de inicio/fin. Instrucciones de asignacin. Instrucciones de lectura. Instrucciones de escritura. Instrucciones de bifurcacin. Pseudocdigo ingls begin end read write A5 Pseudocdigo espaol Inicio Fin Leer Escribir B7

Tipo de instruccin Comienzo de proceso Fin de proceso Entrada (lectura) Salida (escritura) asignacin

Instrucciones de bifurcacin. El desarrollo lineal de un programa se interrumpe cuando se ejecuta una bifurcacin. Las bifurcaciones pueden ser, segn el punto del programa a donde se bifurca, hacia delante o hacia atrs. Bifurcacin adelante (positivo) Instruccin 1 Instruccin 2 Instruccin 3 . . . Instruccin 8 Ultima instruccin Bifurcacin atrs (negativo) Instruccin 1 Instruccin 2 Instruccin 3 . . . Instruccin 12 ltima instruccin

Las bifurcaciones en el flujo de un programa pueden realizarse de un modo incondicional o condicional. Bifurcacin incondicional: la bifurcacin se realiza siempre que el flujo del programa pase por la instruccin sin necesidad del cumplimiento de ninguna condicin. Accin 1

Accin 2

Accin 3 Bifurcacin condicional: la bifurcacin depende del cumplimiento de una determinada condicin. Si se cumple la condicin, el flujo sigue ejecutando la accin F2. Si no se cumple, se ejecuta la accin F1.

Condicin? Accin 1 Accin 1

Elementos Bsicos de un programa. Los lenguajes de programacin como los restantes lenguajes tienen elementos bsicos que se utilizan como bloques constructivos, as como reglas para las que esos elementos se combinan. Estas reglas se denominan sintaxis del lenguaje. Solamente las instrucciones sintcticas correctas pueden ser interpretadas por la computadora y los programas que contengan errores de sintaxis son rechazados por la mquina. Los elementos bsicos constitutivos de un programa o algoritmo son: Palabras reservadas (inicio, fin, si-entonces,, etc.) Identificadores (nombres de variables esencialmente) Caracteres especiales (coma, apstrofo, etc.) Constantes Variables Expresiones Instrucciones

10

Adems de estos elementos bsico, existen otros elementos que forman parte de los programas, cuya comprensin y funcionamiento ser vital para el correcto diseo de un algoritmo y naturalmente la codificacin del programa. Estos elementos son: Bucles Contadores Acumuladores Interruptores Estructuras Secuenciales Selectivas Repetitivas El amplio conocimiento de todos los elementos de programacin y el modo de su integracin en los programas constituyen las tcnicas de programacin que todo buen programador debe conocer. Bucles Un bucle o lazo (loop) es un segmento de un algoritmo o programa, cuyas instrucciones se repiten un nmero determinado de veces mientras se cumple una determinada condicin (existe o es verdadera la condicin). Se debe establecer un mecanismo para determinar las tareas repetitivas. Este mecanismo es una condicin que puede ser verdadera o falsa y que se comprueba una vez a cada paso o iteracin del bucle (total de instrucciones que se repiten en el bucle). Un bucle consta de tres partes: o Decisin o Cuerpo del bucle o Salida del Bucle Bucles finitos: Los bucles finitos se ejecutan un determinado nmero de veces y pueden tener varios tipos de estructuras, las ms utilizadas son: o Bucle con condicin de testeo o Bucle que se repite un nmero conocido de veces Bucle con condicin de testeo Se utiliza una instruccin de testeo para controlar la ejecucin del bucle. Para este caso la repeticin del lazo es finita, pero no se puede precisar el nmero de veces que se repite.

Instrucciones No/S Condicin Si/No 11

Bucle que se repite un nmero conocido de veces : Las instrucciones decfsz e incfsz se utilizan generalmente en combinacin con una instruccin de salto goto, para el diseo de bucles de instrucciones que deben repetirse una cantidad determinada de veces. Se hace de manera tal que un registro se decrementa o incrementa hasta que tome un determinado valor. En este caso, s se conoce el nmero de veces que se repite el bucle:

Carga el contador

Instrucciones

Contador= 0? No Condicin S Bucles infinitos Un bucle o lazo infinito es aquel que no tiene fin, es decir, mantiene la siguiente estructura:

Instrucciones

Por ejemplo: Principal goto Principal La mayora de los programas de microcontroladores posee una estructura de bucle infinito. El programa CONTAR.ASM funciona como un bucle infinito, enviando de forma secuencial un nmero binario comprendido entre 0 y 255 a PORTB.

12

;CONTAR.ASM List p=16F84 ;Tipo de procesador include "P16F84.INC" ;Definiciones de registros internos org 0x00 ;Vector de Reset goto Inicio org 0x05 ;Salva el vector de interrupcin Inicio bsf STATUS,RP0 ;selecciona el Banco1 clrf TRISB ;configura PORTB todo como salidas bcf STATUS,RP0 ;selecciona el Banco0 clrf PORTB ;borra PORTB (leds apagados) Bucle incf PORTB,f ;suma 1 al registro PORTB goto Bucle ;y otra vez, y otra vez, end

Bucles Animados En un algoritmo pueden existir varios bucles. Los bucles pueden ser animados o independientes. Los bucles son animados cuando estn dispuestos de tal modo que unos son interiores a otros; los bucles son independientes cuando son externos unos a otros. Contadores Los procesos repetitivos son la base del uso de las computadoras. En estos procesos se necesitan normalmente contar los sucesos o acciones internas del bucle, como pueden ser los elementos de un fichero, el nmero de iteraciones a realizar por el bucle, etc. Una forma de controlar un bucle es mediante un contador. Un contador es una variable cuyo valor se incrementa o decrementa en una cantidad constante en cada iteracin. Acumulador Un acumulador o totalizador es una variable cuya misin es almacenar cantidades variables resultantes de sumas sucesivas. Realiza la misma funcin que un contador, con la diferencia de que el incremento o decremento de cada suma es variable en lugar de constante, como en el caso del contador. Se representa por la instruccin S S + N, donde N es una variable y no una constante. Decisin o Seleccin Cuando el programador desea especificar dos o ms caminos alternativos en un algoritmo (o un programa), se deben utilizar estructuras de decisin o seleccin. Una instruccin se decisin o seleccin evala una condicin y, en funcin del resultado de esa condicin, se bifurcar a un determinado punto. Interruptores Un interruptor o comunicador (switch) a veces se les denomina indicador, bandera (flag)- es una variable que puede tomar diversos valores a lo largo de la ejecucin del programa y que permite comunicar informacin de una parte a otra del mismo. Los interruptores pueden tomar dos valores diferentes, 1 y 0. (De ah su nombre de interruptor, encendido/ apagado, Abierto/ cerrado).

13

Escritura de algoritmos/ programas La escritura de un algoritmo mediante una herramienta de programacin debe ser lo ms clara posible y estructurada, de modo que su lectura facilite considerablemente el entendimiento del algoritmo y su posterior codificacin en un lenguaje de programacin. Los algoritmos deben ser escritos en lenguajes similares a los programas. En nuestro libro utilizaremos esencialmente el lenguaje algortmico, basado en pseudocdigo, y la estructura del algoritmo requerir la lgica de los programas escritos en el lenguaje de programacin estructurado; por ejemplo, Pascal. Un algoritmo constar de dos componentes: una Cabecera de programa y un Bloque algoritmo. La cabecera de programa es una accin simple que comienza con la palabra algoritmo. Est palabra estar seguida por el nombre asignado al programa completo. El bloque algoritmo es el resto del programa y consta de dos componentes o sesiones: las acciones de declaracin y las acciones ejecutables. Las declaraciones definen o declaran variables y constantes que tengan nombres. Las acciones ejecutables son las acciones que posteriormente deber realizar la computacin cuando el algoritmo convertido es programa se ejecute. Cabecera del programa o algoritmo Todos los algoritmos y programas deben comenzar con una cabecera en la que se exprese el identificador o nombre correspondiente con la palabra reservada que seale el lenguaje. En los lenguajes de programacin, la palabra reservada suele ser program. En algoritmia se denomina algoritmo. Algoritmo DEMO1 Declaracin de Variables En este apartado se declaran o describen todas las variables utilizadas en el algoritmo, listndose sus nombres y especificando sus tipos. Esta seccin comienza con la palabra reservada var (abreviatura de variable) y tiene el formato. var Tipo-1: lista de variables -1 Tipo-2: lista de variables -2 . . Tipo-n: lista de variables n Donde cada lista de variables es una variable simple o una lista de variables separadas por comas y cada tipo es uno de los tipos de datos bsicos (entero, real, carcter o lgico). Por ejemplo, la seccin de declaracin de variables var Entera: nmero- empleado Real: horas Real: Impuesto Real: Salario

14

O de modo equivalente Var Entera: nmero- empleado Real: horas, impuestos, Salario Declara solo las tres variables Hora, impuesto y salario son de tipo real. Es una buena prctica de programacin utilizar nombres de variables significativos que sugieran lo que ellas representan, ya que eso har ms fcil y legible el programa. Declaracin de constantes numricas En esta seccin se declaran todas las constantes que tengan nombre. Su formato es: const pi= 3.141592 Tamao= 43 Horas= 6.50 Los valores de estas constantes ya no pueden variar en el transcurso del algoritmo. Declaracin de constantes y variables carcter Las constantes de carcter simple y cadenas de caracteres pueden ser declaradas en la seccin del programa const, al igual que las constantes numricas. Las variables de caracteres se declaran de dos modos: 1. Almacenar un solo carcter. Var carcter: nombre, inicial, nota, letra Se declaran nombre, inicial, nota y letra, que almacenarn solo un carcter. 2. Almacenar mltiples caracteres (cadenas) El almacenamiento de caracteres mltiples depender del lenguaje de programacin. As en BASIC nombre variable cadena= cadena de caracteres Hombres = << Pepe Luis Garca Rodrguez>> Existen algunas versiones de Pascal, como es el caso de Turbo Pascal, que tienen implementados un tipo de datos denominados string (cadena) que permite declarar variables de caracteres o de cadena que almacenen palabras compuestas de diferentes caracteres. Var nombre: string [20]; Var cadena [20]: nombre en turbo Pascal en Pseudocdigo

15

Comentarios La documentacin de un programa es el conjunto de informacin interna y externa al programa que facilitar su posterior mantenimiento y puesta a punto. La documentacin puede ser interna y externa. La documentacin interna es la que se acompaa en el cdigo o programa fuente y se realiza a base de comentarios significativos. Estos comentarios se representan con diferentes notaciones, segn el tipo de lenguaje de programacin. La documentacin externa se acompaar en informacin ajena al programa y proporcionada por el programador. Comentarios en BASIC 1. los comentarios se incluyen dentro de lneas que comienzan con la palabra reservada REM. 100 REM *** autor J. R. Mackoy*** 20 REM subrutina ordenacin 2. En las versiones BASIC de Microsoft (BASICA, GWBASIC y MBASIC) los comentarios se incluyen en lneas que comienzan por el caracter apstrofo (). 100 *** autor J. R. Mackoy*** 20 subrutina ordenacin 3. Existen algunas versiones de BASIC como HP BASIC, VAX BASIC, etc., que utilizan el carcter admiracin (!)en lugar del caracter apstrofo. 100 !*** autor J. R. Mackoy*** 20 ! subrutina ordenacin Comentarios en FORTRAN Las lneas que contiene comentarios comienzan en su columna 1 con el caracter asterisco (*) o la letra C y se pueden escribir a partir de la columna 2: Columna 1 C * 7 *** autor J. R. Mackoy*** subrutina ordenacin

Comentarios en PASCAL Los comentarios se encierran entre los smbolos (* O bien: { } (* autor J. R. Mackoy *) { subrutina ordenacin} Comentarios MODULA -2 Los comentarios se encierran entre los smbolos (* *) 16 *)

Comentarios en C Los comentarios se encierran entre caracteres llaves ({ }) {Esto es un comentario en C} Comentarios en C++ Admite, adems de los caracteres llave, la doble barra declinada // Esto es un comentario en C++ Estilo de Escritura de algoritmos/ programas Algoritmo identificador //cabecera // Seccin de declaraciones Var tipo de datos: lista de identificadores Const lista de identificadores = valor Inicio // cuerpo del algoritmo < Sentencia S1> <Sentencia S2> . . <Sentencia Sn> Fin Notas: 1. En ocasiones, la declaracin de constantes y variables las omitiremos o se describirn en una tabla de variables que hace sus mismas funciones. 2. Las cadenas de caracteres se encerrarn entre comillas simples. 3. Utilizar siempre sangras en los bucles o en aquellas instrucciones que proporcionen legibilidad al programa, como inicio y fin. Algoritmo races //resuelve una ecuacin de 2 grado Var real: a, b ,c, d inicio Leer (a, b, c,) D b ^ 2-4*a*c si D < 0 entonces escribir (`races complejas`) si-no si D=0 entonces escribir (-b/2*a) si-no escribir (( -b-raz2 (D))/ (2*a)) escribir (( -b-raz2 (D))/ (2*a)) fin-si fin-si fin

17

Tcnicas de la Programacin Lgica Estructurada. La programacin estructurada es una forma de escribir programacin de computadora de forma clara, para ello utiliza nicamente tres estructuras: secuencial, selectiva e iterativa; siendo innecesario y no permitindose el uso de la instruccin o instrucciones de transferencia incondicional ( GOTO ). Hoy en da las aplicaciones informticas son mucho ms ambiciosas que las necesidades de programacin existentes en los aos 60, principalmente debido a las aplicaciones grficas, por lo que las tcnicas de programacin estructurada no son suficientes lo que ha llevado al desarrollo de nuevas tcnicas tales como la programacin orientada o objetos y el desarrollo de entornos de programacin que facilitan la programacin de grandes aplicaciones. Orgenes de la programacin estructurada A finales de los aos sesenta surgi una nueva forma de programar que no solamente daba lugar a programas fiables y eficientes, sino que adems estaban escritos de manera que facilitaba su comprensin posterior. El teorema del programa estructurado, demostrado por Bhm-Jacopini, demuestra que todo programa puede escribirse utilizando nicamente las tres instrucciones de control siguientes: Secuencia Instruccin condicional. Iteracin (bucle de instrucciones) con condicin al principio. Solamente con estas tres estructuras se pueden escribir todos los programas y aplicaciones posibles. Si bien los lenguajes de programacin tienen un mayor repertorio de estructuras de control, stas pueden ser construidas mediante las tres bsicas. Por ejemplo, en Visual Basic la secuencia de instrucciones consiste en la escritura de una instruccin debajo de otra (tambin se pueden poner en la misma lnea separadas por el smbolo de dos puntos ":" aunque no es recomendable). La instruccin condicional es la instruccin If y la iteracin con condicin al inicio sera la instruccin do-while-loop o while-wend. Ventajas de la programacin estructurada Con la programacin estructurada, elaborar programas de computador sigue siendo una labor que demanda esfuerzo, creatividad, habilidad y cuidado. Sin embargo, con este estilo podemos obtener las siguientes ventajas: 1. Los programas son ms fciles de entender, ya que pueden ser ledo de forma secuencial, sin necesidad de hacer seguimiento a saltos de lnea (GOTO) dentro de los bloques de cdigo para entender la lgica.

18

2. La estructura del programa es clara puesto que las instrucciones estn ms ligadas o relacionadas entre s. 3. Reduccin del esfuerzo en las pruebas. El seguimiento de los fallos o errores del programa ("debugging") se facilita debido a la estructura ms visible, por lo que los errores se pueden detectar y corregir ms fcilmente. 4. Reduccin de los costos de mantenimiento de los programas. 5. Programas ms sencillos y ms rpidos (ya que es ms fcil su optimizacin). 6. Los bloques de cdigo son auto explicativos, lo que facilita a la documentacin. 7. Los GOTO se reservan para construir las instrucciones bsicas (seleccin e iteracin) Inconvenientes de la programacin estructurada El principal inconveniente de este mtodo de programacin, es que se obtiene un nico bloque de programa, que cuando se hace demasiado grande puede resultar problemtico su manejo, esto se resuelve empleando la programacin modular, definiendo mdulos interdependientes programados y compilados por separado. Un mtodo un poco ms sofisticado es la programacin por capas, en la que los mdulos tienen una estructura jerrquica muy definida y se denominan capas. Estructura de Datos En programacin, una estructura de datos es una forma de organizar un conjunto de datos elementales con el objetivo de facilitar su manipulacin. Un dato elemental es la mnima informacin que se tiene en un sistema. Una estructura de datos define la organizacin e interrelacin de stos y un conjunto de operaciones que se pueden realizar sobre ellos. Las operaciones bsicas son: Alta, adicionar un nuevo valor a la estructura. Baja, borrar un valor de la estructura. Bsqueda, encontrar un determinado valor en la estructura para realizar una operacin con este valor, en forma SECUENCIAL o BINARIO (siempre y cuando los datos estn ordenados)... Otras operaciones que se pueden realizar son: Ordenamiento, de los elementos pertenecientes a la estructura. Apareo, dadas dos estructuras originar una nueva ordenada y que contenga a las apareadas. Cada estructura ofrece ventajas y desventajas en relacin a la simplicidad y eficiencia para la realizacin de cada operacin. De esta forma, la eleccin de la estructura de datos apropiada para cada problema depende de factores como la frecuencia y el orden en que se realiza cada operacin sobre los datos. Tipos de datos elementales 19

Binarios Bit Byte Numricos Entero Real Coma fija Coma flotante Alfanumricos Carcter Cadena Booleanos Estructuras de datos Vectores (matriz o array) Registro (estructura de datos) Tipo de datos algebraico Listas Enlazadas Listas Simples Listas Dobles Listas Circulares Listas por saltos (Skip lists) Pilas (stack) Colas (queue) Colas de Prioridad rboles rboles Binarios rbol binario de bsqueda rbol binario de bsqueda equilibrado rboles Rojo-Negro rboles AVL rboles Biselados (rboles Splay) rboles Multicamino (Multirrama) rboles B rboles B+ rboles B* Conjuntos (set) Grafos Tablas Hash Montculos (o heaps) Montculo binario Montculo binmico Montculo de Fibonacci Montculo suave Montculo 2-3

Anlisis Estructurados

20

El objetivo que persigue es estructurar u organizar las tareas asociadas con la determinacin de requerimientos para obtener la comprensin completa y exacta de una situacin dada. Se concentra en especificar lo que se requiere que haga el sistema o la aplicacin. No se establece como cumplirn los requerimientos o la forma en que implantaran la aplicacin. Ms bien permite que las personas observen los elementos lgicos separados de los componentes fsicos. Despus de esto se puede desarrollar un modelo fsico eficiente para la situacin donde ser utilizado. Smbolos grficos: iconos y convenciones para identificar y describir los componentes de un sistema junto con las relaciones entre estos componentes. Diccionario de datos: descripciones de todos los datos utilizados en el sistema. Descripciones de procesos y procedimientos: declaraciones formales que emplean tcnicas y lenguajes que permiten a los analistas describir actividades importantes que forman parte del sistema. Reglas: estndares para describir y documentar el sistema en forma correcta y completa. Programacin Modular Se trata de un paradigma de programacin que persigue crear programas modulares (que cumplen o tienen la caracterstica de modularidad). Valindose de la tcnica del diseo estructurado para el diseo de algoritmos consigue desarrollar programas a partir de un conjunto de mdulos, cada uno de los cuales desempea una tarea necesaria para el correcto funcionamiento del programa global. Los mdulos son interdependientes, y son codificados y compilados por separado. En el caso de que el conjunto de mdulos implicado est sometido a una jerarqua, estaramos hablando de un sistema de programacin por capas, en la que cada "capa" representara un nivel en la jerarqua de los mdulos. Mdulo: En programacin un mdulo es una parte de un programa de ordenador. De las varias tareas que debe realizar un programa para cumplir con su funcin u objetivos, un mdulo realizar una de dichas tareas (o quiz varias en algn caso).

21

En un caso general (no necesariamente relacionado con la programacin), un mdulo recibir como entrada la salida que haya proporcionado un mdulo anterior o los datos de entrada al sistema (programa) si se trata del mdulo inicial de ste; y proporcionar una salida que ser utilizada como entrada de un mdulo posterior o que ser la salida final del sistema (programa) si se tratase del mdulo final. Particularmente, en el caso de la programacin, los mdulos suelen estar organizados jerrquicamente en niveles, de forma que hay un mdulo superior que realiza las llamadas oportunas a los mdulos del nivel inferior. Cuando un mdulo es llamado, recibe como entrada los datos proporcionados por el mdulo de nivel superior que ha hecho la llamada, realiza su tarea, a su vez este mdulo puede llamar a otro u otros mdulos de nivel inferior si fuera necesario; cuando finaliza su tarea, devuelve la salida pertinente al mdulo superior que lo llamo inicialmente, y es este mdulo superior el que contina con la ejecucin del programa. Caractersticas de un mdulo Cada uno de los mdulos de un programa idealmente debera cumplir las siguientes caractersticas: Tamao pequeo.- Facilita aislar el impacto que pueda tener la realizacin de un cambio en el programa, bien para corregir un error, bien por rediseo del algoritmo correspondiente. Independencia modular.- Cuanto ms independientes son los mdulos entre s ms fcilmente se trabajar con ellos, esto implica que para desarrollar un mdulo no es necesario conocer detalles internos de otros mdulos. Como consecuencia de la independencia modular un mdulo cumplir: Caractersticas de caja negra, es decir abstraccin. Aislamiento de los detalles mediante encapsulamiento. Documentacin: Se define como la narracin descriptiva y grfica de un programa.

Conclusin

22

La creacin de un programa se basa en dar soluciones a un problema, ya sean problemas numricos alfanumricos. Para poder dar soluciones a estos problemas, primero se debe indagar sobre las posibles soluciones, que se le pueden dar al problema mediante la utilizacin de pasos lgicos, para lograr una respuesta concreta, clara y precisa. Pero esta solucin, se basa en la utilizacin de diversas herramientas, que a vez ayudan al programador a realizar hallar la secuencia lgica la resolucin a los problemas. Una de estas herramientas es el diagrama de flujo flujograma, que es un esquema para representar un algoritmo grficamente. Se basan en la utilizacin de diversos smbolos para representar operaciones especficas. Se le llama diagrama de flujo porque los smbolos utilizados se conectan por medio de flechas para indicar la secuencia de operacin. Para hacer comprensibles los diagramas a todas las personas los smbolos se someten a una normalizacin, es decir, se hicieron smbolos casi universales, ya que, en un principio cada usuario podra tener sus propios smbolos para representarlos en forma de diagrama de flujo. El pseudocdigo es un lenguaje de especificacin (descripcin) de algoritmos. El uso de tal lenguaje hace el paso de codificacin final (esto es la traduccin a un lenguaje de programacin) relativamente fcil. Los lenguajes APL pascal y Ada se utilizaron a voces como lenguajes de especificacin de algoritmos. Se considera un primer borrador, dado que el pseudocdigo tiene que traducirse posteriormente a un lenguaje de programacin. El pseudocdigo no puede ser ejecutado por una computadora. La ventaja del pseudocdigo es que en su uso, en la planificacin de un programa, el programador se puede concentrar en la lgica y en las estructuras de control y no preocuparse de las reglas de un lenguaje especfico. Es tambin fcil modificar el pseudocdigo si se descubren errores o anomalas del programa, mientras que en muchas ocasiones suele ser difcil el cambio en la lgica, una vez que esta codificado en un lenguaje de programacin. Otra ventaja del pseudocdigo es que puede ser traducido fcilmente a lenguajes estructurados como Pascal, C, FORTRAN 77/90, Ada 83/95, C++, etc.

23

S-ar putea să vă placă și