Antes de comenzar con el tema vamos a considerar el significado de la palabra ALGORITMO esta palabra se deriva de la traduccin al latn de la palabra rabe ALKHWARZMI, nombre de un matemtico y astrnomo rabe que escribi un tratado sobre la manipulacin de nmeros y ecuaciones en el siglo IX, titulado KITAB AL-JABR WALMUGALABA, la palabra lgebra se deriv por su semejanza sonora de AL-JABR. Etimolgicamente la palabra problema deriva del griego PROBALLEIN y significa algo lanzado hacia delante. Un problema es un asunto o conjunto de cuestiones que se plantean para ser resueltas, la naturaleza de los problemas varia con el mbito o con el contexto donde estn planteados: as existen problemas matemticos, fsicos, filosficos, etc.,
Problema Diseo del algoritmo Programa de computadora
Definicin
Un Algoritmo es una secuencia de operaciones detalladas y no ambiguas, que al ejecutarse paso a paso, conducen a la solucin de un problema. En otras palabras es un conjunto de reglas para resolver una cierta clase de problema. Algoritmo es un conjunto de instrucciones que especifican la secuencia de operaciones a realizar, en orden, para resolver un sistema especfico o clase de problema. Un Algoritmo es la aplicacin de pasos lgicos, secuenciales y metdicamente aplicados para dar solucin a un problema en cuestin. En otras palabras un algoritmo es una formula para resolver problemas. En otras palabras un algoritmo es una formula para la solucin de un problema. Todo problema se puede describir por medio de un algoritmo Todo algoritmo es independiente del lenguaje
SIS-1100
Modelo
Resultados
Anlisis
Repetitivos
Tipos De Algoritmos
Cualitativos: Son aquellos en los que se describen los pasos utilizando palabras. Cuantitativos: Son aquellos en los que se utilizan clculos numricos para definir los pasos del proceso.
Un algoritmo puede ser expresado de las siguientes formas. a) Lenguaje Natural : el uso de trminos del lenguaje natural, es una forma de representar un algoritmo. b) Lenguaje Simblico: es otra forma de representacin de un algoritmo, que adems permite una introduccin a la programacin estructural. c) Lenguaje Grfico : es una forma de escribir una secuencia de pasos en forma de diagrama, en la practica se denomina Diagramas de Flujo. Una receta de un plato de cocina se puede expresar en espaol, ingles o francs pero cualquiera sea el lenguaje los pasos para la elaboracin del plato se realizarn sin importar el cocinero.
Esta tcnica puede ser utilizada con xito en problemas como multiplicacin de matrices, ordenacin de vectores, etc.
SIS-1100
Ejemplo. Encontrar el ngulo entre dos vectores A(x,y,z) y B(x,y,x). A =? B Determinar la ecuacin del ngulo entre dos vectores. del producto escalar se tiene
A* B =
A * B * COS
( )
cos
A* B A * B
2 2
A = A = B = B =
Ax Bx
+ Ay + By
2 2
+ Az + Bz
2 2
N = A * B = Ax * Bx + Ay * By + Az * Bz D = A* B
Determinar la solucin general.
Mtodo voraz
Este mtodo trata de producir algn tipo de mejor resultado a partir de un conjunto de opciones candidatas. Par ello se va procediendo paso a paso realizndose la mejor eleccin(utilizando un funcin objetivo que respeta un conjunto de restricciones) de entre las posibles. Puede emplearse en problemas de optimizacin, como el conocido de la mochila, en la bsqueda de caminos mnimos sobre grafos, la planificacin en la ejecucin de programas en un computador, etc.
Ejemplo Dar cambio utilizando el menor nmero de billetes. Conjunto de billetes = {"doscientos","cien","cincuenta","veinte","diez","cinco","dos","uno"}; Conjunto de cantidades ={200,100,50,20,10,5,2,1}; Cambiar (dato, posicin) si (dato es distinto de 0) entonces cuantos = dato DIV cantidades[posicin]; si (cuantos es distinto de 0) entonces imprimir ("hay , cuantos, billetes de , billetes [ posicin]); fin_si Cambiar (dato MOD cantidades[posicin], posicin+1); Fin_si Fin_cambiar inicio cambiar(1388,0); fin El estilo y calidad de los algoritmos van fuertemente unidos, ante la pregunta Cuales son las caractersticas de un buen algoritmo? la respuesta identifica los factores de calidad de los algoritmos. Correccin: el algoritmo debe funcionar. Eficiencia : el algoritmo no debe desaprovechar recursos. Claridad : el algoritmo debe estar bien documentado.
SIS-1100
Top Down
Tambin conocida como de arriba-abajo (diseo descendente) y consiste en establecer una serie de niveles de mayor a menor complejidad (arriba-abajo) que den solucin al problema. Consiste en efectuar una relacin entre las etapas de la estructuracin de forma que una etapa jerrquica y su inmediato inferior se relacionen mediante entradas y salidas de informacin.
PRIMER REFINAMIENTO
SEGUNDO REFINAMIENTO
ULTIMO REFINAMIENTO
Modulo 1
Modulo 2 Modulo 3
Problema Inicial
Modulo 4
Modulo N-3
Modulo N
SIS-1100
Documentacin
Mantenimiento
SIS-1100
Pseudocodigo
Mezcla de lenguaje de programacin y espaol (o ingles o cualquier otro idioma) que se emplea, dentro de la programacin estructurada, para realizar el diseo de un programa. En esencial, el pseudocodigo se puede definir como un lenguaje de especificaciones de algoritmos. El inicio de un algoritmo en pseudocodigo comienza con la palabra Inicio y termina con la palabra fin. Las lneas que estn entre llaves ({ }) se denomina comentario. Un ejemplo aclaratorio es el siguiente. Calcular el rea de un cuadrado. Inicio Leer (lado) A lado * lado Imprimir( A) Fin SIS-1100 Dpl. Ing. Carlos Balderrama V.
8
Acciones simples
Las acciones simples, tambin denominadas instrucciones primitivas, son aquellas que el procesador ejecuta de forma inmediata. Asignacin Almacena en una variable el resultado de evaluar una expresin Entrada Toma un dato del dispositivo de entrada Salida Devuelve un dato al dispositivo de salida Variable expresin Leer (Variable) Imprimir (variable)
Sentencias de control
Tambin se llaman sentencias estructuradas y controlan el flujo de ejecucin de otras instrucciones. Secuencia. Se ejecutan instrucciones de I1,I2,...,In en el mismo orden en el que aparece Alternativa. En esta instruccin la condicin es booleana Si Si condicin entonces I1,I2,...,In Sino J1, J2,..,Jn Fin_si I1,I2,...,I3 condicin entonces I1,I2,...,In
Fin_si Repeticin o bucles. En un bucle hay una o varias acciones que se han de repetir y una condicin que determina el nmero de veces que se repiten las instrucciones. Repetir Repetir I1,I2,...,In Hasta condicin Para Para Variable de Valinc a ValFin hacer I1,I2,...,In Fin_para
Diagrama De Flujo
Un diagrama de flujo es la representacin grfica de un algoritmo. Tambin se puede decir que es la representacin detallada en forma grfica de como deben realizarse los pasos en la computadora para producir resultados. Esta representacin grfica se da cuando varios SIS-1100 Dpl. Ing. Carlos Balderrama V.
9
smbolos (que indican diferentes procesos en la computadora), se relacionan entre si mediante lneas que indican el orden en que se deben ejecutar los procesos.
Caractersticas
Toda representacin grfica, de cualquier tipo sea, debe cumplir las siguientes cualidades. Sencillez. Un mtodo grfico de diseo de algoritmo debe permitir la construccin de estos de manera fcil y sencilla Claridad. Cuando un algoritmo es representado por un mtodo grfico necesita ser interpretado por otra persona distinta de la que lo dise, debe estar lo suficientemente claro para su un fcil reconocimiento de todos los elementos. Normalizacin. Tanto los diseadores de programas como los usuarios que necesitan la documentacin de estos deben utilizar las mismas normas de documentacin. Flexibilidad. Todo mtodo grfico de representacin debe permitir, sin grandes dificultades, posteriores modificaciones de algunas partes de un algoritmo y la insercin de alguna nueva.
Smbolo de proceso y nos indica la asignacin de un valor en la memoria y/o la ejecucin de una operacin aritmtica.
No
si
Subrprogramas
Conector dentro de pagina. Representa la continuidad del diagrama dentro de la misma pagina.
SIS-1100
11
comentarios
NO
SI
No
si
El diagrama estructurado N-S tambin conocido como diagrama de chapin es como un diagrama de flujo en el que se omiten las flechas de unin y las cajas son contiguas. Las acciones sucesivas se pueden escribir en cajas sucesivas y como en los diagramas de flujo, se pueden escribir diferentes acciones en una caja. Un algoritmo se represente en la sig. forma:
Acciones simples
Las acciones simples, tambin denominadas instrucciones primitivas, son aquellas que el procesador ejecuta de forma inmediata. Asignacin Almacena en una variable el resultado de evaluar una expresin Entrada Toma un dato del dispositivo de entrada Salida Devuelve un dato al dispositivo de salida
Leer A,C Escribir a,b A = a+3
Sentencias de control
Tambin se llaman sentencias estructuradas y controlan el flujo de ejecucin de otras instrucciones. Secuencia. Se ejecutan instrucciones de I1,I2,...,In en el mismo orden en el que aparece
I1 I2 ... IN
Condicion 1 2 3 4 5 6 7 8
SIS-1100
13
Repeticin o bucles. En un bucle hay una o varias acciones que se han de repetir y una condicin que determina el nmero de veces que se repiten las instrucciones. Mientras
MIentras
Repetri
repetir
Para
Para
SIS-1100
14
Instrucciones, Pseudocodigo acciones Estructura del Algoritmo Identificador Algoritmo {Seccin de declaracin variables} inicio .... fin Declaracin variables
Diagrama de flujo
Diagrama N-S
Algoritmo Identificador
de
Inicio
Fin
Fin
de Descripcin de variables y tipos en Se escriben las variables y tipos Escritura de una tabla de variables la tabla de variables en la tabla de variables junto con el diagrama de flujo Variable Expresin Variable Expresin Variable Expresin
Asignacin
Entrada de datos
Salida de datos
SIS-1100
75
Instruccin compuesta S1 S2 S3 ... SN Comentarios { FASE DESCRIPTIVA DE COMENTARIO} Selectiva alternativa simple Si condicin entonces S1 S2 ... S3 Finsi Selectiva alternativa doble Si condicin entonces S1 S2 ... S3 Sino S1 S2 ... S3 Finsi
S1 S2 ... Sn
S1 S2 ... Sn
SIS-1100
76
Selectiva alternativa mltiple Segn_sea expresin hacer E1 : S1,S2,...Sn E2 : S1,S2,...Sn E3 : S1,S2,...Sn ..... EN : S1,S2,...Sn En_otro_caso EN : S1,S2,...Sn Fin_segn_sea Repetitiva mientras Mientras condicin S1 S2 ... S3 Fin_Mientras no Si
Condicion 1 2 3 4 5 6 7 8
Mientras
SIS-1100
77
Repetitiva (desde)
para Para Var de ValInc Hasta ValFin [incremento x] hacer S1 S2 ... Sn Fin_Para Para V de inic fin hacer Para
SIS-1100
78