Algoritmo: Conjunto de acciones o pasos que se ejecutan en un orden determinado para resolver un problema planteado.
Ejemplos de algoritmos no informticos: Receta de cocina Una partitura musical Los planos con las instrucciones para construir una casa
La principal razn por la que las personas aprenden a programar es para utilizar el ordenador como una herramienta para la resolucin de problemas. Ayudado por un ordenador, la obtencin de la solucin a un problema se puede dividir en dos fases:
Ayudado por un ordenador, la obtencin de la solucin a un problema se puede dividir en dos fases: 1) fase de resolucin del problema 2) fase de implementacin en el ordenador.
El resultado de la primera fase es el diseo de un algoritmo, que no es ms que una secuencia ordenada de pasos que conduce a la solucin de un problema concreto, sin ambigedad alguna, en un tiempo finito. Slo cuando dicho algoritmo haya sido probado y validado, se deber entrar en detalles de implementacin en un determinado lenguaje de programacin; al algoritmo as expresado se denomina programa.
Caractersticas de los Algoritmos Debe ser preciso e indicar el orden de realizacin de cada paso. Debe estar bien definido, si se repite n veces los pasos se debe obtener siempre el mismo resultado. Debe ser finito, debe tener un nmero finito de pasos. Independiente del lenguaje que se utilice.
Gua I: Programacin Ing. Analui Martnez de Gmez 2 Pasos para resolver un problema un problema Anlisis del problema: es el primer paso para identificar el problema, se debe considerar lo que est pidiendo el problema, con qu elementos se cuenta y cules se debe solicitar para establecer el camino a seguir para solucionar el problema. Diseo del Algoritmo: es la segunda fase, se deben identificar los procesos mas importantes y colocarlos en orden ascendente segn su importancia y precedencia para as obtener un algoritmo inicial, el cual podr ser refinado varias veces hasta obtener una solucin mas detallada y mas fcil de traducir a un lenguaje de programacin. Verificacin del Algoritmo: es la ltima fase, ya realizado el algoritmo se debe comprobar que cumple con los procesos ideados y produce el resultado esperado por medio de una prueba manual.
Las estrategias seguidas usualmente a la hora de encontrar algoritmos para problemas complejos son:
1) Particin o divide y vencers: consiste en dividir un problema grande en unidades ms pequeas que puedan ser resueltas individualmente. Ejemplo: Podemos dividir el problema de limpiar una casa en labores ms simples correspondientes a limpiar cada habitacin. 2) Resolucin por analoga: Dado un problema, se trata de recordar algn problema similar que ya est resuelto. Los dos problemas anlogos pueden incluso pertenecer a reas de conocimiento totalmente distintas. Ejemplo: El clculo de la media de las temperaturas de los estados orientales y las medias de las notas de los alumnos de una clase se realiza del mismo modo.
Evidentemente la conjuncin de ambas tcnicas hace ms efectiva la labor de programar: dividir un problema grande en trozos ms pequeos ya resueltos.
Ejemplo:
Consideremos el problema de calcular la longitud y la superficie de crculo dado su radio. Este problema se puede dividir en cuatro subproblemas: 1) Lectura, desde el teclado, de los datos necesarios. 2) Clculo de la longitud. 3) Clculo de la superficie. 4) Mostrar los resultados por pantalla.
El problema ha quedado reducido a cuatro subproblemas ms simples. La solucin a cada uno de estos subproblemas es un refinamiento del problema original.
Herramientas para Disear Algoritmos Las dos herramientas ms utilizadas comnmente para disear algoritmos son: diagramas de flujo y pseudocdigos.
Gua I: Programacin Ing. Analui Martnez de Gmez 3 Diagramas de Flujo
Un diagrama de flujo (flowchar) es una representacin grfica de un algoritmo. Un diagrama de flujo es adecuado cuando se desea obtener mayor detalle, tal como agregar bifurcaciones de condicionales y/o iteraciones.
Un diagrama de flujo puede reflejar:
El comienzo del programa. Las operaciones que el programa realiza. El orden en que se realizan. El final del programa.
Caractersticas:
Representacin grafica de la secuencia de pasos a realizar. Las operaciones se escriben en smbolos normalizados. Las lneas de flujo indican el orden de ejecucin.
Los smbolos utilizados han sido normalizados por el Instituto Norteamericano de Normalizacin (ANSI), y los ms frecuentemente empleados se muestran a continuacin:
Gua I: Programacin Ing. Analui Martnez de Gmez 4
Smbolos Significado
Reglas para la construccin de diagramas de flujos: El comienzo del programa figurara en la parte superior del diagrama. Los smbolos de comienzo y fin debern aparecer una nica vez. Lneas de flujo: sirve para conectar los smbolos del diagrama Proceso: indica la accin que tiene que realizar la computadora. Dentro se escribe la accin. A este smbolo entra y sale solo una lnea de flujo. Condicin: dentro del rombo se coloca la condicin, al encontrar este smbolo se evala la condicin que hay dentro. Segn la condicin sea falsa o verdadera se toma un camino u otro. Representa estructuras selectivas o repetitivas. A este smbolo entra solo una lnea de flujo y salen dos. Condicin Mltiple: dentro del rombo se coloca la condicin, al encontrar este smbolo se evala la condicin que hay dentro. Se cumple solo una de las diferentes alternativas. Principio y Fin: dentro del smbolo va la palabra inicio y fin. De inicio sale una lnea de flujo y de fin entra solo una lnea de flujo. Pantalla: salida por pantalla. Entra y sale una lnea de flujo. Teclado: representa una entrada por teclado. Impresora: representa una salida por la impresora. Conectores: sirven cuando un flujograma no cabe en una columna de la hoja y hay que seguir en otra columna. Se colocan uno donde termina la columna y otro donde empieza. El primero es la misma hoja y el segundo en una hoja distinta Gua I: Programacin Ing. Analui Martnez de Gmez 5 El flujo de las operaciones ser de arriba abajo y de izquierda a derecha. Se debe guardar cierta simetra en la representacin de bifurcaciones y bucles. Se evitarn los cruces de lneas de flujo, utilizando conectores. Variables y Operaciones Variables: Numricas: Enteros, Punto Flotante Alfanumricas: Carcter, Cadena de caracteres Operaciones: Asignacin: = Comparacin: =? Aritmticas: +, -, *, /, ** (potenciacin) Lgicas: >, <, =, >=, <=,
Ejemplos
1 Hacer el diagrama de flujo para sumar dos nmeros ledos por teclado y escribir el resultado.
Gua I: Programacin Ing. Analui Martnez de Gmez 6
2 Realizar el diagrama de flujo para calcular el producto de los nmeros positivos introducidos por teclado. El proceso finaliza cuando se ingresa un nmero negativo.
PSEUDOCDIGO
El pseudocdigo es un lenguaje de documentacin de programas similar al ingles (o espaol) que se parece a cualquier lenguaje de programacin de alto nivel, sigue siendo un excelente medio para expresar la lgica de un programa.
Caractersticas: Lenguaje de especificacin de algoritmos. Utiliza palabras reservadas. Se implementa con facilidad.
Estructura de algoritmos en pseudocdigos: Cabecera: contiene el nombre del algoritmo. Cuerpo del algoritmo: se especifican las diferentes instrucciones. Inicio p =1, num =0 Leer num num >0 Si No p =p * num Escribir p Fin Gua I: Programacin Ing. Analui Martnez de Gmez 7 Bloque de declaraciones: se declaran las variables simblicas y constantes. Bloque de instrucciones: contiene las acciones a ejecutar.
A continuacin se muestran algunos ejemplos de palabras para construir algoritmos en pseudocdigo.
PALABRA UTILIZACIN INICIO Inicia un bloque de instrucciones FIN Finaliza un bloque de instrucciones SI Inicia la seleccin SI-ENTONCES ENTONCES <acciones> Complemento de la seleccin SI-ENTONCES SINO <acciones> Por el contrario del SI MIENTRAS acciones> /HACER Inicia la iteracin mientras REPETIR/HASTA <condicion> Inicio y cierre de iteracin REPETIR/HASTA DESDE<condicion>/HASTA Inicio y cierre de iteracin DESDE/HASTA SEGN SEA Seleccin entre mltiples alternativas LEER Leer un dato del teclado ESCRIBE Visualiza un dato en pantalla CIERRA Cierra un archivo O Disyuncin lgica Y Conjuncin lgica { Inicio de comentario } Fin de comentario = Asignacin VAR Para declarar las variables a usar
Estructura para los algoritmos en pseudocdigo
Algoritmo <nombre del algoritmo> { nombre del algoritmo} Inicio { inicio del bloque de instrucciones del algoritmo} Var <nombre> : <tipo> { declaracin de variables a usar en el algoritmo} Instrucciones o sentencias {cuerpo del algoritmo} Fin { fin del bloque de instrucciones del algoritmo } Gua I: Programacin Ing. Analui Martnez de Gmez 8
Ejemplo 1 Realice el pseudocdigo que muestre en pantalla la suma de dos nmeros
Represente el pseudocdigo para determinar el producto de los nmeros enteros
Algoritmo Producto Inicio Var p, num: entero p= 1 num=0 Escribir Introduzca nmero: Leer num Mientras num>=0 hacer p= p * num Leer num Fin Mientras Escribir p Fin