You are on page 1of 13

ALGORITMO

Un algoritmo es un mtodo para resolver un problema, debe presentarse como una secuencia ordenada de instrucciones que siempre se ejecutan en un tiempo finito y con una cantidad de esfuerzo tambin finito. En un algoritmo siempre debe haber un punto de inicio y un punto de terminacin, estos deben ser nicos y deben ser fcilmente identificables. Caracteristicas: Las caractersticas fundamentales que debe cumplir todo algoritmo son:

Ser definido: Sin ambigedad, cada paso del algoritmo debe indicar la accin a realizar sin criterios de interpretacin. Ser finito: Un nmero especfico y numerable de pasos debe componer al algoritmo, el cual deber finalizar al completarlos. Tener cero o ms entradas: Datos son proporcionados a un algoritmo como insumo (o estos son generados de alguna forma) para llevar a cabo las operaciones que comprende. Tener una o ms salidas: Debe siempre devolver un resultado; de nada sirve un algoritmo que hace algo y nunca sabemos que fue. El devolver un resultado no debe ser considerado como nicamente verlos en forma impresa o en pantalla, como ocurre con las computadoras. Existen muchos otros mecanismos susceptibles de programacin que no cuentan con una salida de resultados de esta forma. Por salida de resultados debe entenderse todo medio o canal por el cual es posible apreciar los efectos de las acciones del algoritmo. Efectividad: El tiempo y esfuerzo por cada paso realizado debe ser preciso, no usando nada ms ni nada menos que aquello que se requiera para y en su ejecucin.

Diseo del Algoritmo: En la etapa de anlisis del proceso de programacin se determina que hace el programa. En la etapa de diseo se determina como hace el programa la tarea solicitada. Los mtodos ms eficaces para el proceso de diseo se basan en el conocido por Divide y Vencers, es decir, la resolucin de un problema complejo se realiza dividiendo el problema en sub problemas y a continuacin dividir estos sub problemas en otros de nivel ms bajo, hasta que pueda ser implementada una solucin en la computadora. Este mtodo se conoce tcnicamente como diseo descendente (Top Down) o modular. El proceso de romper el problema en cada etapa y expresar cada paso en forma ms detallada se denomina refinamiento sucesivo. Cada sub programa es resuelto mediante un mdulo (sub programa) que tiene un solo punto de entrada y un solo punto de salida. Cualquier programa bien diseado consta de un programa principal (el mdulo de nivel ms alto) que llama a sub programas (mdulos de nivel ms bajo) que a su vez pueden llamar a otros sub programas. Los programas estructurados de esta forma se dice que tienen un diseo

modular y el mtodo de romper el programa en mdulos ms pequeo se llama Programacin Modular. Los mdulos pueden ser planeados, codificados, comprobados y depurados independientemente (incluso por diferentes programadores) y a continuacin combinarlos entre si. El proceso implica la ejecucin de los siguientes pasos hasta que el programa se termina:

programar modulo. Comprobar el modulo. Si es necesario, depurar el modulo. Combinar el modulo con los mdulos anteriores.

El proceso que convierte los resultados del anlisis del problema en un diseo modular con refinamiento sucesivo que permitan una posterior traduccin al lenguaje se denomina diseo de algoritmo. El diseo del algoritmo es independiente del lenguaje de programacin en el que se vaya a codificar posteriormente.

REPRESENTACIN DE ALGORITMOS
Existen varias maneras de representar algoritmos, una de las ms evidentes es el lenguaje natural; sin embargo el lenguaje natural no siempre es lo suficientemente preciso. Como alternativa tenemos el Pseudocdigo. Pseudocdigo El pseudocdigo es un forma de representar un algoritmo, mediante sentencias similares al lenguaje natural, pero con una precisin mayor. Existen muchas variantes de pseudocdigo, aqu se adoptarn las siguientes normas: A. Todos los algoritmos comenzarn con una sentencia algoritmo, Esto es, una lnea con la palabra clave algoritmo seguida por el nombre del algoritmo. Por ejemplo: Algoritmo EJEMPLO B. Despus de la sentencia algoritmo se declararn las constantes que se requieran en el programa. La decisin de constantes se identificar con la palabra clave constantes. Por ejemplo: Constante PI 3.1416 Constante UNO 1

C. A continuacin aparecer el desarrollo del algoritmo, al cual nombraremos PRINCIPAL. Dicho desarrollo se encontrar entre las palabras clave inicio y fin. Estas palabras clave limitarn un bloque de instrucciones siempre que se requieran. Por ejemplo: PRINCIPAL Inicio ..... Fin D. A continuacin de la palabra clave inicio se declaran las variables. En este caso el tipo de variables se indicar al principio de la lista; separada por un espacio se colocar la lista de variables, separadas por comas (,). Cada lista incluir solamente variables de mismo tipo. Ejemplo: Flotante X, Y, Z Enteras I, J, K E. En cualquier parte del algoritmo podrn colocarse comentarios para hacer aclaraciones o comentarios relacionados con la instruccin u operacin que faciliten la interpretacin. Los comentarios aparecern encerrados entre /*y*/. Ejemplo: /* Este es un comentario*/ F. Las palabras clave se imprimirn en letra negrita. Cuando se use letra manuscrita se sugiere subrayar las palabras clave.

ESTRUCTURAS DE CONTROL
Las estructuras de control determinan la secuencia en que deben ejecutarse las instrucciones de un algoritmo. Existen tres Estructuras de control bsicas primitivas y combinndolas se puede escribir cualquier algoritmo. Estas estructuras primitivas son: la secuencia, la bifurcacin condicional y el ciclo.

SECUENCIA
La estructura de control ms simple es la secuencia. Esta estructura permite que las instrucciones que la constituyen se ejecuten una tras otra en el orden en que se listan. Por ejemplo, considrese el siguiente fragmento de un algoritmo:

En este fragmento se indica que se ejecute la operacin 1 y a continuacin la operacin 2. BIFURCACIN CONDICIONAL
La estructura de bifurcacin condicional permite elegir una de dos opciones en una alternativa, dependiente del resultado obtenido al evaluar la condicin. Vase el siguiente fragmento de algoritmo:

La

palabra clave si indica que estamos en una sentencia de bifurcacin condicional. Si la condicin es verdadera se ejecuta la operacin 1, de otra manera se ejecutar la operacin 2.

CICLOS
Los ciclos son estructuras de control que permiten ejecutar varias veces una operacin. Existen varios tipos de ciclos: a) Ciclo Mientras (WHILE)

Este ciclo repite una operacin, mientras se cumpla una cierta condicin. Por ejemplo:

La palabra clave mientras, seala que se trata de un ciclo mientras. La condicin se verifica antes de ejecutar la operacin. b) Ciclo Hacer-mientras (DO-WHILE) En este ciclo la operacin se ejecuta y despus se evala la condicin. Si es verdadera, la operacin se evala de nuevo, y as sucesivamente.

Cuando la condicin se hace falsa el ciclo termina. c) Ciclo Desde (FOR) En este ciclo se ejecuta una operacin un cierto nmero de veces, especificando en un contador el incremento unitario, desde un Valor Inicial hasta un Valor Final que marcar la condicin de salida del ciclo. Por ejemplo:

IR A (GOTO) Existe una sentencia adicional que permite transferir la secuencia de un algoritmo a cualquier parte de l mismo. Es la sentencia ir a. Aunque la posibilidad de pasar a cualquier parte de un programa, d una sensacin de libertad de accin, tiene el terrible inconveniente de perder fcilmente el seguimiento del programa.

A continuacin se presentan algunos ejemplos que ilustran como empezar a programar:

EJEMPLO 1
Algoritmo: GRADOS A RADIANES /* Este algoritmo convierte de grados a radianes. Ejemplo de una Estructura Secuencial. */ Constante PI 3.1416 PRINCIPAL inicio flotante GRAD, RAD ; leer (GRAD); RAD GRAD * PI /180;

/* El smbolo * indica multiplicacin*/ imprimir (RAD) ; fin

EJEMPLO 2
Algoritmo: SEGUNDO GRADO /* Calcula las races reales de la ecuacin de segundo grado: aX2 + bX + c = 0. Ejemplo de Estructura de Bifurcacin Condicional. */

PRINCIPAL inicio flotante a, b, c, d, X1, X2, RE, IM ; imprimir (DAME LOS VALORES DE a, b, c) ; leer (a, b, c) ; d (b * b) 4 * a * c ; si (d > 0) inicio /* La funcin sqrt calcula la raz cuadrada */ X1 X2 (-b + sqrt (d)) / (2 * a) ; (-b - sqrt (d)) / (2 * a) ;

imprimir (LAS RAICES SON:) ; imprimir (X1 , X2) ; fin sino inicio /* La funcin fabs calcula el valor absoluto y la funcin sqrt calcula la raz cuadrada */ d RE IM fabs (d) ; -b / (2 * a) ; sqrt (d) / (2 * a) ;

imprimir ( LAS RAICES SON IMAGINARIAS Y SON:) ;

imprimir (RE, IM) ; fin fin

EJEMPLO 3
Algoritmo: POTENCIA /* Calcula el nmero X elevado a la n. Ejemplo de Estructura Ciclo Mientras. */ PRINCIPAL inicio flotante X, pot, n, k ; imprimir (Dame el valor de la base y del exponente) ; leer (X, n) ; k pot 0; 1;

mientras (k < n) inicio pot k fin imprimir (El resultado es pot) ; fin pot * X ; k+1;

EJEMPLO 4
Algoritmo: REA MXIMA /* Calcula cuando el rea de un crculo es mayor a cierto valor dado. Despliega el valor del radio para el cual todava es menor y el rea ocupada. Ejemplo de estructura Ciclo Hacer_Mientras. */ constante pi 3.1416 PRINCIPAL inicio flotante rad, inc, amax, rea ;

imprimir (Radio Inicial) ; leer (rad) ; imprimir (Incremento del Radio) ; leer (inc) ; imprimir (Area Mxima) ; leer (amax) ; hacer inicio area rad fin mientras (amax > rea) pi*rad*rad ; rad+inc ;

rad area

rad-inc ; pi*rad*rad ;

imprimir (Para el radio, rad) ; imprimir (se tiene un rea de , rea) ; imprimir (que es menor el rea mxima de , amax) ; fin

EJEMPLO 5
Algoritmo: PROMEDIOS /* Para un grupo con N alumnos se calcula el promedio de sus calificaciones, teniendo cada alumno tres calificaciones diferentes. Ejemplo de Estructura Ciclo Desde. */ PRINCIPAL inicio flotante N, i, j, SUM CALIF, PROM ; imprimir (DAME EL NUMERO DE ALUMNOS) ; leer (N) ; desde (i inicio SUM desde (j inicio 0; 1; j < = 3; j j + 1) 1; i < = N; i i +1)

imprimir (DAME LA CALIFICACION, j) ; leer (CALIF) ; SUM fin PROM SUM / 3 ; SUM + CALIF ;

imprimir (EL PROMEDIO DEL ALUMNO ES, PROM) ; fin fin