You are on page 1of 9

Existen varias tcnicas de diseo de algoritmos que permiten desarollar la solucin al problema planteado, algunas de ellas son:

Algoritmos voraces (greedy): seleccionan los elementos ms prometedores del conjunto de candidatos hasta encontrar una solucin. En la mayora de los casos la solucin no es ptima.

Algoritmos paralelos: permiten la divisin de un problema en subproblemas de forma que se puedan ejecutar de forma simultnea en varios procesadores. Algoritmos probabilsticos: algunos de los pasos de este tipo de algoritmos estn en funcin de valores pseudoaleatorios Algoritmos determinsticos: El comportamiento del algoritmo es lineal: cada paso del algoritmo tiene nicamente un paso sucesor y otro ancesor. Algoritmos no determinsticos: El comportamiento del algoritmo tiene forma de rbol y a cada paso del algoritmo puede bifurcarse a cualquier nmero de pasos inmediatamente posteriores, adems todas las ramas se ejecutan simultneamente. Divide y vencers: dividen el problema en subconjuntos disjuntos obteniendo una solucin de cada uno de ellos para despus unirlas, logrando as la solucin al problema completo. Metaheursticas: encuentran soluciones aproximadas (no ptimas) a problemas basndose en un conocimiento anterior (a veces llamado experiencia) de los mismos. Programacin dinmica: intenta resolver problemas disminuyendo su coste computacional aumentando el coste espacial. Ramificacin y acotacin: se basa en la construccin de las soluciones al problema mediante un rbol implcito que se recorre de forma controlada encontrando las mejores soluciones.

Vuelta Atrs (Backtracking): se construye el espacio de soluciones del problema en un rbol que se examina completamente, almacenando las soluciones menos costosas.

Pasos: Pasos 1 2 3 Etapa Anlisis del problema Diseo de algoritmo Codificacin Se implementa el algoritmo en un cdigo escrito en un lenguaje de programacin. Refleja las ideas desarrolladas en las etapas de anlisis y diseo Traduce el programa fuente a programa en cdigo de maquina y lo ejecuta. Busca errores en las etapas anteriores y los elimina. Descripcin Conducen al diseo detallado por medio un cdigo escrito en forma de un algoritmo

Compilacin y ejecucin

5 6 7

Verificacin Depuracin Documentacin

Son comentarios, etiquetas de texto, que facilitan la comprensin del programa

Concepto Algoritmo: es un mtodo para resolver un problema mediante una serie de pasos definidos, precisos y finitos. Preciso: implica el orden de realizacin de cada uno de los pasos Definido: si se sigue dos veces, se obtiene el mismo resultado. Finito: Tiene un numero determinado de pasos, implica que tiene un fin,

Tipos : Mtodo Algortmico Descripcin Utiliza un algoritmo y puede ser implementado en una computadora

Ejemplos Instrucciones para manejar un vehculo Instrucciones para secar grano a granel Instrucciones para resolver ecuacin de segundo grado

Heurstica:

Se apoya en el resultado obtenido en un anlisis de alternativas de experiencias anteriores similares. De las mismas, a se deducen una serie de reglas empricas o heursticas que de ser seguidas, conducen a laseleccin de la mejor alternativa en todas o la mayora de las veces.

Ejemplos Los algoritmos se pueden expresar por: Diagramas de flujo Norte-Sur,Top-Down Formulas

Pseudo cdigo

inicio leer a,b,c calcular escribir permetro fin

Diseo del algoritmo.


Anlisis de proceso implica que hace el programa. Diseo implica como se hace o realiza la tarea (problema) solicitado

En el diseo:

El todo es la sumatoria de las partes. Divide el todo en varias partes.

En la resolucin de un problema complejo, se divide en varios sub problemas y seguidamente se vuelven a dividir los sub problemas en otros mas sencillos, hasta que puedan implementarse en el computador. Esta caracterstica define lo que se entiende como diseo descendente( Top-Down / NorteSur ) o diseo modular. El proceso de ruptura del problema en cada etapa se llama refinamiento sucesivo.

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 mas alto) que llama a subprogramas (mdulos de nivel mas 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 llamaprogramacin modular. Los mdulos pueden ser planificados, codificados, compilados y depurados independientemente pueden ser intercambiados entre si. Este proceso implica la ejecucin de los siguientes pasos:

1 2 3 4

programar un modulo comprobar un modulo depurar el modulo combinar el modulo con mdulos anteriores

este proceso convierte el resultado del anlisis del problema en un diseo modular con refinamientos sucesivos que permiten una traduccin a un lenguaje que se denomina diseo del algoritmo. El algoritmo se puede representar por medio de dos formas : Pseudo cdigo Diagrama de flujo: Pseudo cdigo: es el lenguaje de especificacin de algoritmos y tiene una estructura: Las instrucciones se escriben en ingles o en palabras similares al ingles o espaol que facilitan la escritura de programacin Para la resolucin de una ecuacin de segundo grado se escribira inicio Introducir coeficientes a, b y c Imprimir ttulos primera raz, segunda raz, no tiene solucin, Calcular raz 1 y raz 2 Imprimir raz 1 y raz 2 Fin Diagramas de flujo (flows charts): Es la representacin grafica del algoritmo; segn la ANSI consta de una simbologia , que tiene los siguientes significados: Para ver el grfico seleccione la opcin "Descargar" del men superior Smbolos del Diagrama de flujo Codificacin : Programacin: Windows/Dos/ Quick Basic = Editor de texto. Programa: definicin: conjunto de datos y sentencias: Un programa tiene la forma

Para ver el grfico seleccione la opcin "Descargar" En el editor de Quick Basic se escribira codificado el seudo cdigo que tendra la forma: REM Programa para calcular las soluciones REM de una ecuacion de segundo grado PRINT "Escriba los valores de A, B y C" C$="Calculos" INPUT " A,B,C", A, B, C R = (B ^ 2 - 4 * A * C) ^ .5 LET X1 = (-B + R) / (2 * A) LET X2 = (-B + R) / (2 * A) PRINT PRINT " A="; A, " B="; B, "C="; C PRINT "X1="; X1, "X2="; X2 PRINT END En el Men Ejecutar En la pantalla veramos: Mandatos e instrucciones: Mandato (command): es una orden aislada de efecto inmediato. Ejemplo: Mandato RUN LIST SAVE. Descripcin Ordena la ejecucin de un programa. Escribe En la pantalla el listado del programa Guarda, graba el programa como un archivo de extensin BAS en el disco

Instruccin: es una orden contenida en un programa. Ejemplo: Instruccin PRINT INPUT Descripcin Escribe en pantalla. Introduce (entra datos)

Edicin de un programa: un programa esta formado por lneas secuenciales que se ejecutan en forma descendente (Up Down) Para dar por terminada una lnea se pulsa la tecla Enter (Return) en cualquier parte de la misma. Para cambiar una lnea basta volver a teclearla.

Se puede corregir una lnea (borrar, rescribir ) en pantalla o bien con el mandato EDIT. Se pueden incluir varias instrucciones en una misma lnea, separndolos por dos puntos. Una lnea de pantalla (cuarenta u ochenta posiciones) es diferente de una lnea de programa (doscientos cincuenta y seis posiciones).

Modo Directo: Modo Programa Run Ventana activa Ventana inmediata mandato CLS Descripcin borra la pantalla

Recomendaciones:

Todo programa debe estar documentado con comentarios; la primera lnea debe contener el titulo del programa. Los comentarios deben de ir precedidos de la palabra clave REM o de un apostrofo ( ) Si una lnea ya tiene otras instrucciones, el comentario debe ir al final de la lnea. Los comentarios solo aparecen en el listado del programa y no aparecen escritos en la pantalla durante la ejecucin.

Constantes:

QBasic, trabaja con dos tipos de datos: Datos numricos: Enteros (INT) Enteros largos (LNG) de simple precisin (SGL) de doble precisin (DBL) alfanumricos hileras o cadenas (STR) fila de caracteres en ASCII ( en parte del teclado )

Tipos

Las constantes alfanumricas pueden ser enteras o fraccionarias, se representan en forma decimal; se puede emitir el cero a la izquierda del punto decimal. Ejemplo -12.67 .23 +12345

3452

Estos son ejemplos de valores numricos de punto fijo; se puede emplear una notacin de punto flotante. Mantisa letra exponente 1,23456E+15 123456.0000000000 1.234567890789456D10 0.000000000123456789012456

El numero mximo de cifras significativas con que se trabaja es:

6 para la precisin simple (SNG) 16 para la precisin doble (DLB)


En las constantes de punto fijo hay que aadir el carcter # Las constantes alfanumricas son hileras de caracteres; se escriben entre comillas, Ej. "Hola " ; " A47EC

Variables vectores y matrices:

Una variable es una zona de memoria que almacena un dato

X DIA $ Peso -23.5 lunes 80

R A M

Una variable se identifica mediante un nombre. El nombre de una variable numrica debe empezar por una letra y puede ir sucedido de otras letras y / o otros dgitos (X, A, B1, peso, T341) Una variable alfanumrica debe terminar con el carcter $ (x$, a23$, dias$,) Estn terminantemente prohibidas los nombres de variables que contengan palabras claves de Basic (PRUN, LIST, NIF$,) Las variables de precisin doble y enteros se identifican aadiendo el carcter # o el carcter % , tambin se pueden declarar como

You might also like