Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
ALGORITMOS
43
Tema 2
2.1 Introduccin
El objetivo principal de la materia es el de ensear a resolver problemas mediante una computadora. Un programador de computadoras antes de nada es un resolvedor de problemas. Por lo que para llegar a ser un programador eficaz se necesita aprender a resolver problemas de un modo riguroso y sistemtico. Por esto la materia tiene como nombre Metodologa de la programacin. 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
Programa de computadora
2.2 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 44 Metodologa de la Programacin I
Algoritmos
Entrada
Proceso
Salida
Modelo
Resultados
Anlisis
45
Tema 2
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.
Algoritmos resultan inmediatos de resolver, otros son bastante complejos. la investigacin en esta rea ha permitido descubrir un conjunto de mtodos y esquemas de diseo hacia los cuales puede orientarse la realizacin de muchos algoritmos. Idear un algoritmo continua siendo una labor bastante creativa donde los conocimientos y las experiencias del propio diseador tiene un papel fundamental.
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
47
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.
48
Metodologa de la Programacin I
Algoritmos 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. Este diseo consiste en una serie de descomposiciones sucesivas del problema inicial, que recibe el refinamiento progresivo del repertorio de instrucciones que van a formar parte del programa. La utilizacin de la tcnica de diseo Top-Down tiene los siguientes objetivos bsicos: Simplificacin del problema y de los subprogramas de cada descomposicin. Las diferentes partes del problema pueden ser programadas de modo independiente e incluso por diferentes personas. El programa final queda estructurado en forma de bloque o mdulos lo que hace mas sencilla su lectura y mantenimiento. PRIMER REFINAMIENTO SEGUNDO REFINAMIENTO ULTIMO REFINAMIENTO
Modulo 1
Modulo 2 Modulo 3
Problema Inicial
Modulo 4
Modulo N-3
Modulo N
49
Tema 2
2.8.4 Bottom Up
El diseo ascendente se refiere a la identificacin de aquellos procesos que necesitan computarizarse con forme vayan apareciendo, su anlisis como sistema y su codificacin, o bien, la adquisicin de paquetes de software para satisfacer el problema inmediato. Cuando la programacin se realiza internamente y haciendo un enfoque ascendente, es difcil llegar a integrar los subsistemas al grado tal de que el desempeo global, sea fluido. Los problemas de integracin entre los subsistemas son sumamente costosos y muchos de ellos no se solucionan hasta que la programacin alcanza la fecha limite para la integracin total del sistema. En esta fecha, ya se cuenta con muy poco tiempo, presupuesto o paciencia de los usuarios, como para corregir aquellas delicadas interfaces, que en un principio, se ignoran. Aunque cada subsistema parece ofrecer lo que se requiere, cuando se contempla al sistema como una entidad global, adolece de ciertas limitaciones por haber tomado un enfoque ascendente. Uno de ellos es la duplicacin de esfuerzos para accesar el software y ms aun al introducir los datos. Otro es, que se introducen al sistema muchos datos carentes de valor. Un tercero y tal vez l mas serio inconveniente del enfoque ascendente, es que los objetivos globales de la organizacin no fueron considerados y en consecuencia no se satisfacen.
50
Metodologa de la Programacin I
Fase de Implementacin
Documentacin
Mantenimiento
Tema 2
Al comenzar a abordar un problema hay que tener en cuenta que para la mayora de ellos hay muchas maneras de resolver y pueden existir muchas soluciones, se plantean algunos criterios o estrategias generales que se deben tomar en cuenta, las cuales son tiles en el anlisis del problema. Usar toda la informacin til (no superficial) disponible en el enunciado del problema. Hacer explcita las reglas y datos que aparezcan implcitos (en muchos problemas numricos se pueden utilizar reglas de la aritmtica o lgebra) Profundizar en el problema considerado (emplear algn tipo de notacin). Dividir el problema complejo en subproblemas ms simples. que se pueden resolver independientemente y despus combinar sus soluciones. Otra forma de abordar el problema consiste en trabajar hacia atrs es decir parir de la solucin e intentar llegar al estado inicial.
El propsito del anlisis del problema es ayudar al programador para llegar a una cierta comprensin de la naturaleza del problema. Una buena definicin del problema junto con una descripcin detallada de las especificaciones de entrada y de salida, son los requisitos ms importantes para llegar a una solucin eficaz.
Anlisis del problema
Fig. 2.5 Anlisis del Problema Una vez que se ha comprendido lo que se desea de la computadora, es necesario definir: Los datos de entrada. Cual es la informacin que se desea producir (salida) Los mtodos y frmulas que se necesitan para procesar los datos.
Una recomendacin muy practica es el que nos pongamos en el lugar de la computadora y analicemos que es lo que necesitamos que nos ordenen y en que secuencia para producir los resultados esperados. Ejercicio.- Leer el radio de circulo y calcular e imprimir su superficie.
52
Metodologa de la Programacin I
Algoritmos Definicin del problema. Calcular la superficie de una circunferencia Anlisis del problema La entrada a este problema es el radio de la circunferencia y de tipo real. La salida de este problema es la superficie que tambin es de tipo real.
Se pueden utilizar cualquier tcnica de diseo de algoritmos, diseo descendente, divide y vencers. Normalmente los pasos diseados en un primer esbozo del algoritmo son incompletos e indican solo unos pocos pasos, tras esta primera descripcin estos se amplan en una descripcin ms detallada con pasos especficos este proceso se denomina refinamiento del algoritmo. Ejemplo problema calculo de la superficie de una circunferencia.
Calcular la superficie de un circulo
Entrada de datos
Calculo de la superficie
Salida de resultados
Entrar el Radio
S = PI * R ^2
53
Tema 2
Herramienta de representacin Diagramas de flujo Pseudocdigo Diagramas Nassi/Shneiderman-S (Chapin) Mtodo Warnier Mtodo Jackson Mtodo Bertini Mtodo Tabourier
2.9.6 Codificacin
La codificacin es la operacin de escribir la solucin del problema (de acuerdo a la lgica del diagrama de flujo o pseudocodigo), en una serie de instrucciones detalladas, en un cdigo reconocible por la computadora, la serie de instrucciones detalladas se le conoce como cdigo fuente, el cual se escribe en un lenguaje de programacin o lenguaje de alto nivel.
54
Metodologa de la Programacin I
Algoritmos
2.9.8 Documentacin
Es la gua o comunicacin escrita es sus variadas formas, ya sea en enunciados, procedimientos, dibujos o diagramas. A menudo un programa escrito por una persona, es usado por otra. Por ello la documentacin sirve para ayudar a comprender o usar un programa o para facilitar futuras modificaciones (mantenimiento). La documentacin se divide en tres partes: Documentacin Interna Documentacin Externa Manual del Usuario
Documentacin Interna: Son los comentarios o mensaje que se aaden al cdigo fuente para hacer mas claro el entendimiento de un proceso. Documentacin Externa: Se define en un documento escrito los siguientes puntos: Descripcin del Problema Nombre del Autor Algoritmo (diagrama de flujo o pseudocodigo) Diccionario de Datos Cdigo Fuente (programa)
Manual del Usuario: Describe paso a paso la manera como funciona el programa, con el fin de que el usuario obtenga el resultado deseado.
55
Tema 2
2.9.9 Mantenimiento
Se lleva acabo despus de terminado el programa, cuando se detecta que es necesario hacer algn cambio, ajuste o complementacin al programa para que siga trabajando de manera correcta. Para poder realizar este trabajo se requiere que el programa este correctamente documentado.
2.10.1 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. Es la representacin narrativa de los pasos que debe seguir un algoritmo para dar solucin a un problema determinado. El pseudocodigo utiliza palabras que indican el proceso a realizar. 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.
56
Metodologa de la Programacin I
Asignacin expresin
Variable expresin Entrada Toma un dato del dispositivo de entrada Leer (Variable) Salida Devuelve un dato al dispositivo de salida Imprimir (variable)
Alternativa. En esta instruccin la condicin es booleana Si Fin_si Si condicin entonces I1,I2,...,In Sino J1, J2,..,Jn condicin I1,I2,...,In entonces
Fin_si
57
Tema 2 Opcin V1 V2 V3 ... VN Otro Fin_opcin Expresin de Hacer I1,I2,...,In Hacer J1,J2,...,In Hacer K1,K2,...,Kn Hacer L1,L2,...,Ln Hacer M1,M2,...,Mn
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 condicin hacer I1,I2,...,In Fin_mientras Repetir Repetir I1,I2,...,In Hasta condicin Para Para Variable de Valinc a ValFin hacer I1,I2,...,In Fin_para
58
Metodologa de la Programacin I
Algoritmos
2.10.2.1 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.
59
Tema 2 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.
comentarios
60
Metodologa de la Programacin I
Algoritmos
NO
SI
No
si
Diferencia entre organigrama y ordinograma (D.F.) Organigrama diagramas de flujo del sistema.
61
62
Metodologa de la Programacin I
Algoritmos
Asignacin expresin
63
Tema 2
Condicion 1 2 3 4 5 6 7 8
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
64
Metodologa de la Programacin I
Algoritmos Repetir
repetir
Para
Para
De
La
Programacin
Tambin existen otros mtodos de representar los algoritmos y son los siguientes.
65
Variable expresin Entrada Toma un dato del dispositivo de entrada Leer (Variable) Salida Devuelve un dato al dispositivo de salida Imprimir (variable)
Expresin = V1
Expresin = V2
Expresin = V3
Expresin = Otros
66
Metodologa de la Programacin I
Algoritmos 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
Repetir
Proceso N veces
La lectura del rbol se realiza en preorden Situarse en la raz (R) Recorrer el subarbol izquierdo (I) Recorrer el subarbol derecho (D) Dpl. Ing. Carlos Balderrama Vsquez 67
Tema 2
Asignacin expresin
Variable expresin Entrada Toma un dato del dispositivo de entrada Leer (Variable) Salida Devuelve un dato al dispositivo de salida Imprimir (variable)
Si A
No B
68
Metodologa de la Programacin I
Algoritmos
Expresin
= V1 A
= V2 B
= V3 C
= VN D
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.
Proceso
* Condicin
Mientras En el bloque condicin se escribe mientras condicin Repetir En el bloque condicin se escribe hasta condicin
Para
69
Tema 2
La lectura del rbol se realiza en postorden Situarse en la raz (R) Recorrer el subarbol Derecho (D) Recorrer el subarbol Izquierdo (I)
Asignacin expresin
Variable expresin Entrada Toma un dato del dispositivo de entrada Leer (Variable) Salida Devuelve un dato al dispositivo de salida Imprimir (variable)
70
Metodologa de la Programacin I
COND
COND
EXPRESION
=V1
=V2
=V3
=OTROS
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.
CONDICION
71
La lectura del rbol se realiza en preorden Situarse en la raz (R) Recorrer el subarbol izquierdo (I) Recorrer el subarbol derecho (D)
Asignacin expresin
Variable expresin Entrada Toma un dato del dispositivo de entrada Leer (Variable) Salida Devuelve un dato al dispositivo de salida Imprimir (variable)
72
Metodologa de la Programacin I
Algoritmos
Boque
Condi.
Expresin
En caso de
= V1 A
= V2 B
= V3 C
= VN D
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.
73
Tema 2 Mientras
Mientras
Condi.
Repetir
Repetir
Condi.
Para
Para
Condi.
74
Metodologa de la Programacin I
Algoritmos
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
75
Tema 2 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
76
Metodologa de la Programacin I
Algoritmos 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 Mientras
Condicion 1 2 3 4 5 6 7 8
77
Tema 2 Repetitiva (desde) para Para Var de ValInc Hasta ValFin [incremento x] hacer S1 S2 ... Sn Fin_Para Para V de inic fin hacer Para
78
Metodologa de la Programacin I