Sei sulla pagina 1di 10

Diseo de algoritmos

Jose Jesus Garca Rueda. Adaptado de El algoritmo, una iniciacin a la programacin (http://www.desarrolloweb.com/manuales/67/) http://www.desarrolloweb.com/manuales/67/) y de Diseo estructurado de algoritmos (http://www.itver.edu.mx/comunidad/material/algoritmos/)

Introduccin
La principal razn para aprender a programar es utilizar la computadora para resolver problemas. Algoritmo: se deriva de la traduccin al latn de la palabra rabe alkhowarizmi, nombre del matemtico rabe que enunci reglas paso a paso para sumar, restar, multiplicar y dividir nmeros decimales. Un algoritmo es una serie de pasos organizados que describe el proceso a seguir para solucionar un problema especfico. Dos tipos de algoritmos:

Cualitativos: Emplean palabras. Ej: Ej: Receta de cocina, cambiar una rueda, usar la gua telefnica. Cuantitativos: Utilizan clculos numricos. Ej: Ej: Resolver una ecuacin de 2 grado.

Un algoritmo cotidiano
Algoritmo para leer las pginas de un libro:
1. 2. 3. 4.

Inicio. Abrir el libro en la 1 pgina. Leer la pgina. Es la ltima que deseo leer?
S: Ve al paso 7. No: Ve al paso 5

5. 6. 7. 8.

Pasar a la siguiente pgina. Ve al paso 3. Cerrar el libro. Fin.

Lenguajes algortmicos
Un lenguaje algortmico es un conjunto de smbolos y reglas que permiten describir de manera explcita un proceso. Es independiente de cualquier lenguaje de programacin. Debe permitir una traduccin clara del algoritmo al programa. Dos tipos de lenguajes algortmicos:

Grficos: Por ejemplo, los diagramas de flujo. No grficos: Por ejemplo, el pseudocdigo. pseudocdigo.

INICIO Edad: Entero ESCRIBE cul es tu edad? Lee Edad SI Edad >= 18 entonces ESCRIBE Eres mayor de edad FINSI Escribe fin del algoritmo FIN

Creacin de algoritmos
Proceso de programacin tpico:

Dado un determinado problema el programador idea una solucin y la expresa mediante un algoritmo. Codificacin del algoritmo. Ejecucin del programa.

Metodologa para la solucin de problemas por medio de un ordenador:


1. 2.

Definicin del problema: clara y precisa. Es casi la mitad del trabajo Anlisis del problema: Colocarse en el lugar del ordenador y analizar qu requeriramos para realizar la tarea.
Datos de entrada. Informacin a producir (salida) Mtodos y frmulas para procesar los datos

3.

Diseo del algoritmo.

Caractersticas de un buen algoritmo


Debe tener un punto particular de inicio. No debe ser ambiguo. Debe ser general. Debe ser finito en tamao y en tiempo de ejecucin. Prueba de escritorio: se toman datos especficos como entrada y se sigue el algoritmo hasta obtener un resultado.

Tcnicas de diseo
Top Down: Down: Se descompone sucesivamente el problema inicial en subproblemas. subproblemas.

Con cada descomposicin, se simplifican los subproblemas. subproblemas. Las diferentes partes del problema pueden ser programadas de forma independiente. El programa final queda estructurado en forma de bloques o mdulos.

Bottom Up: Up: Se programa cada proceso segn vaya apareciendo.


Difcil llegar a una integracin tal que el desempeo global sea fluido. Proclive a la duplicacin de esfuerzos. Pueden no satisfacerse los requisitos globales de la aplicacin.

La creacin de algoritmos se basa en la tcnica descendente.

Diagramas de flujo
Es una forma de representar grficamente un algoritmo. Cada paso se escribe dentro de un smbolo. Los pasos se conectan unos con otros mediante lneas de flujo. Son fciles de disear, pero difciles de actualizar. Los smbolos que utiliza estn normalizados:
Inicio/Final Entrada/ Salida Proceso Salida por impresora Conector dentro pgina Conector fuera pgina Salida por pantalla

Diagramas de flujo (II)


Decisin Seleccin mltiple

Mientras

Diagramas de flujo (III)


Para

Repite hasta

Lneas de flujo

Ejemplo de diagrama de flujo


Disee un algoritmo que lea 3 nmeros, los sume e imprima el resultado por impresora.

Recomendaciones para los diagramas de flujo


Emplear solamente lneas de flujo horizontales y/o verticales. Evitar el cruce de lneas (usando los conectores) Usar los conectores slo cuando sea necesario. No dejar lneas de flujo sin conectar. Se deber poder leer de arriba abajo y de izquierda a derecha. Ser escuetos y claros con lo que se escriba dentro de los smbolos.

Pseudocdigo
Mezcla de lenguaje de programacin y de lenguaje natural. Representacin narrativa de los pasos que debe seguir un algoritmo. Utiliza palabras, no grficos. Ventajas:

Ocupa menos espacio. Permite representar fcilmente operaciones repetitivas complejas. Es muy fcil pasar del pseudocdigo al lenguaje de programacin. Quedan claros los niveles que tiene cada operacin.

Principales caractersticas de los pseudocdigos


Utilizan operadores aritmticos y lgicos. Se pueden incluir comentarios. Se debe respetar una indentacin en los bloques de instrucciones. Usan ciertas palabras clave: PSEUDOCDIGO, VARIABLES, INICIO, FIN, LEE, ESCRIBE, IMPRIME, IF_THEN_ELSE, CASE OF, FOR DO, WHILE DO, REPEAT UNTIL, ARRAY Comienzan con el nombre del pseudocdigo, seguido de la declaracin de variables, y luego el cuerpo del pseudocdigo.

Ejemplo de pseudocdigo
Algoritmo que lee 3 nmeros, los suma e imprime su resultado.
PSEUDOCDIGO sumatorio VARIABLES eN1, eN1, eN2, eN2, 3N3, eSuma: eSuma: Entero INICIO ESCRIBE Dame tres nmeros: LEE eN1, eN1, eN2, eN2, eN3 eSuma = eN1 + eN2 + eN3 ESCRIBE El resultado de la suma es: , eSuma FIN

Diagramas estructurados (NassiSchneiderman)


Como un diagrama de flujo en el que se omiten las flechas de unin, y las cajas son contiguas. Son fciles de disear y difciles de actualizar. Las acciones sucesiva se escriben en cajas sucesivas.

EJEMPLO
Disear un algoritmo que, dada una operacin aritmtica expresada en el formato habitual (y String), vaya leyndola carcter a carcter, para as calcular su resultado. Respetar las reglas tpicas de precedencia entre operaciones aritmticas (+ y - < * y /)

Paso 1: Anlisis
Datos de entrada: una cadena de caracteres representando una operacin aritmtica. Datos de salida: Un nmero, resultado de realizar la operacin aritmtica. Forma de operar: Emplearemos dos pilas, una de operadores y otra de operandos. operandos.

En la primera guardaremos los operadores que vayamos leyendo, siempre que su precedencia sea mayor que los operadores ya en la pila. De no ser as, se extraen los operadores de precedencia mayor y se operan. En la segunda iremos guardando los operandos que vayamos leyendo, as como los resultados de las operaciones parciales.

Paso 2: Diseo del algoritmo


Desarrollo del algoritmo en pseudocdigo:

Paso 3: Prueba de escritorio


Qu tal funciona el algoritmo para 1*2*3+4*5*6+1*3*4?

10

Potrebbero piacerti anche