Un algoritmo es una serie de pasos organizados que describe el proceso que se debe seguir, para dar solución a un problema especifico. La palabra "algoritmo" deriva del nombre latinizado del gran matemático árabe Mohamed Ibn Moussa Al Kow Rizmi, el cual escribió sobre entre los años 800 y 825 su obra Quitab Al Jabr Al Mugabala, donde se recogía el sistema de numeración hindú y el concepto del cero. Fue Fibonacci, el que tradujo su obra al latín y la inició con las palabras: Algoritmi dicit. El lenguaje algorítmico es aquel por medio del cual se realiza un análisis previo del problema a resolver y encontrar un método que permita resolverlo. El conjunto de todas las operaciones a realizar y el orden en el que deben efectuarse, se le denomina algoritmo. Lo que pretende un algoritmo es sintetizar de alguna forma una tarea, cálculo o mecanismo antes de ser ejecutado. Los pasos que hay que seguir son los siguientes: Análisis previo del problema. Primera visión del método de resolución. Descomposición en módulos. Programación estructurada. Búsqueda de soluciones parciales. Ensamblaje de soluciones finales.
Un organigrama o diagrama de flujos es una representación gráfica del algoritmo en cuestión. Esto facilita la visión descriptiva de la ejecución del programa, así como la generación de la traza del algoritmo. Se denomina traza de un algoritmo a la ejecución manual de un programa obteniendo para cada paso un resultado. La función principal que posee realizar la traza de un algoritmo es la de comprobar que éste funciona correctamente cada ejecución secuencial y para realizar una depuración en la que se corrigen posibles errores y se simplifica el algoritmo al máximo para incrementar su eficacia y velocidad. Los símbolos generales son: Inicio y fin de un programa de tareas. Grabación, borrado, lectura y representación de datos. Operaciones aritméticas y lógicas, de entrada y salida. Decisiones lógicas, cálculos y comparaciones. Manipulación de texto y sintaxis. Flujo de las ejecuciones.
Los procesos de mayor prioridad se ejecutan primero. También se ejecutan primero aquellos trabajos que necesitan menos tiempo y de esta manera se obtiene el mejor tiempo de respuesta promedio para todos los procesos. Si se cuenta con más de un procesador u operador de algoritmos pueden ejecutarse más de una tarea en simultaneo. Metodología para la resolución de problemas
Definición del Problema
Esta fase está dada por el enunciado del problema, el cual requiere una definición clara y precisa. Es importante que se conozca lo que se desea que realice la computadora; mientras esto no se conozca del todo no tiene mucho caso continuar con la siguiente etapa.
Análisis del Problema
Una vez que se ha comprendido lo que se desea de la computadora, es necesario definir: Los datos de entrada (inicio). Cual es la información que se desea producir (salida) Los métodos y fórmulas que se necesitan para procesar los datos.
Una recomendación 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. Diseño del Algoritmo Las características de un buen algoritmo son: Debe tener un punto particular de inicio. Debe ser definido, no debe permitir dobles interpretaciones. Debe ser general, es decir, soportar la mayoría de las variantes que se puedan presentar en la definición del problema. Debe ser finito en tamaño y tiempo de ejecución.
Codificación
La codificación es la operación de escribir la solución del problema (de acuerdo a la lógica del diagrama de flujo o pseudocodigo), en una serie de instrucciones detalladas, en un código reconocible por la computadora, la serie de instrucciones detalladas se le conoce como código fuente, el cual se escribe en un lenguaje de programación o lenguaje de alto nivel.
Prueba y Depuración
Los errores humanos dentro de la programación de computadoras son muchos y aumentan considerablemente con la complejidad del problema. El proceso de identificar y eliminar errores, para dar paso a una solución sin errores se le llama depuración.
La depuración o prueba resulta una tarea tan creativa como el mismo desarrollo de la solución, por ello se debe considerar con el mismo interés y entusiasmo.
Resulta conveniente observar los siguientes principios al realizar una depuración, ya que de este trabajo depende el éxito de nuestra solución.
Documentación
Es la guía o comunicación 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 documentación sirve para ayudar a comprender o usar un programa o para facilitar futuras modificaciones (mantenimiento). La documentación se divide en tres partes: Documentación Interna. Documentación Externa. Manual del Usuario
Documentación Interna: Son los comentarios o mensaje que se añaden al código fuente para hacer mas claro el entendimiento de un proceso.
Documentación Externa: Se define en un documento escrito los siguientes puntos: Descripción del Problema. Nombre del Autor. Algoritmo (diagrama de flujo o pseudo código). Diccionario de Datos. Código 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.
Mantenimiento
Se lleva acabo después de terminado y ejecutado el programa, cuando se detecta que es necesario hacer algún cambio, ajuste o complementación al programa para que siga trabajando de manera correcta. Operadores
Son elementos que relacionan y nos permiten manipular de forma diferente, los valores de una o mas variables o constantes. Existen tres tipos de operadores, relaciónales, Aritméticos y lógicos.
Operadores Aritméticos: Los operadores aritméticos permiten la realización de operaciones matemáticas con los valores (variables y constantes). Los operadores aritméticos pueden ser utilizados con tipos de datos enteros o reales. Si ambos son enteros, el resultado es entero; si alguno de ellos es real, el resultado es real.
Operandos con Valor (constante o variable) y Operadores
Operadores Aritméticos + Suma - Resta * Multiplicación / División Mod Modulo (residuo de la división entera)
Ejemplos: Expresión Resultado 7 / 2 3.5 12 mod 7 5 4 + 2 * 5 14
Prioridad de los Operadores Aritméticos
* Todas las expresiones entre paréntesis se evalúan primero. Las expresiones con paréntesis anidados se evalúan de dentro a fuera, el paréntesis mas interno se evalúa primero. * Dentro de una misma expresión los operadores se evalúan en el siguiente orden.
1.- ^ Exponenciación 2.- *, /, mod Multiplicación, división, modulo. 3.- +, - Suma y resta.
* Los operadores en una misma expresión con igual nivel de prioridad se evalúan de izquierda a derecha.
Ejemplos: 4 + 2 * 5 = 14 23 * 2 / 5 = 9.2 46 / 5 = 9.2 3 + 5 * (10 - (2 + 4)) = 23 3 + 5 * (10 - 6) = 3 + 5 * 4 = 3 + 20 = 23 3.5 + 5.09 - 14.0 / 40 = 5.09 3.5 + 5.09 - 3.5 = 8.59 - 3.5 = 5.09 2.1 * (1.5 + 3.0 * 4.1) = 28.98 2.1 * (1.5 + 12.3) = 2.1 * 13.8 = 28.98
Operadores Relaciónales
* Se utilizan para establecer una relación entre dos valores. * Compara estos valores entre si y esta comparación produce un resultado de certeza o falsedad (verdadero o falso). * Los operadores relaciónales comparan valores del mismo tipo (numéricos o cadenas) * Tienen el mismo nivel de prioridad en su evaluación. * Los operadores relaciónales tiene menor prioridad que los aritméticos.
Los operadores Relaciónales son: > Mayor que < Menor que > = Mayor o igual que < = Menor o igual que < > Diferente = Igual
Ejemplos: Si a = 10 b = 20 c = 30
a + b > c Falso a - b < c Verdadero a - b = c Falso a * b < > c Verdadero
Ejemplos no lógicos: a < b < c 10 < 20 < 30 Verdad < 30 (no es lógico porque tiene diferentes operandos)
Operadores Lógicos:
* Estos operadores se utilizan para establecer relaciones entre valores lógicos. * Estos valores pueden ser resultado de una expresión relacional.
Los operadores Lógicos son: And (Y), Or (O) y Not (Negación) Los resultados pueden ser verdad (true) o falso (false), (también 1/0, Si/No, etc.).
Operador And (Y) | Operando1 | Operador | Operando2 | Resultado | | Verdad | AND | Verdad | Verdad | | Verdad | AND | Falso | Falso | | Falso | AND | Falso | Falso |
Operador Or (O) | Operando1 | Operador | Operando2 | Resultado | | Verdad | OR | Verdad | Verdad | | Verdad | OR | Falso | Verdad | | Falso | OR | Verdad | Verdad | | Falso | OR | Falso | Falso |
Operador Not (Negación) | Operando | Operador | Resultado | Falso | Not | Verdad | Verdad | Not | Falso |
Ejemplos:
(a < b) and (b < c) (10<20) and (20<30) Verdad and Verdad = Verdad Prioridad para resolver Operadores Lógicos 1.- Primero los Not 2.- Segundo resolver los And 3.- Tercero resolver los Or
Prioridad para resolver todos los Operadores en General 1.- Primero resolver las operaciones entre paréntesis ( ) 2.- Segundo resolver los exponentes y raíces ^ 3.- Tercero las multiplicaciones y divisiones *, /, Mod, Not 4.- Cuarto las sumas y restas +, -, And 5.- Quinto los relaciónales, mayor, menor o igual que >, <, > =, < =, < >, =, Or Ejemplo de algoritmo y los subprogramas en un diagrama de flujo: 
|