Algoritmos
LA ESENCIA DE PROGRAMACIÓN.
La idea principal es crear un algoritmo y traducirlo a
un lenguaje de programación. Al guía de
desarrollo se le suele aconsejar que empiece a desarrollar un programa
respondiendo a la pregunta: ¿Es posible implementar esta tarea de forma
programada? Por ejemplo, incluso hoy en día no se puede hacer que una
computadora prediga lo que sucederá en unos días. E incluso si este ejemplo no
es del todo correcto, porque esta tarea es imposible en principio. Sin embargo,
si se limita la tarea a predecir el comportamiento de alguna divisa en el
intercambio, tal tarea se resuelve con la ayuda de un algoritmo suficientemente
complejo y una gran base de datos experimental.
ALGORITMOS.
Una vez que se haya tomado la decisión sobre la posibilidad de
implementar el software en una tarea, es necesario construir un algoritmo para
su solución. Es decir, es necesario describir la secuencia de pasos para
resolver la tarea con el máximo detalle teniendo en cuenta todas las posibles
ramas, ciclos y errores. De hecho, se puede construir un algoritmo para las
operaciones diarias más simples. Por ejemplo, se puede describir el algoritmo
de la preparación del té:
- Abrir
la tetera.
- Si
no hay agua en la tetera, se le debe echar.
- Poner
la tetera en la estufa de gas.
- Abrir
el gas.
- Encender
el fuego.
- Esperar
a que el agua de la tetera hierva.
- Colocar
el sobre de té en la taza.
- Echar
el agua caliente de la tetera a la taza.
Este algoritmo no es universal, pero para una persona que se prepara una
taza de té porque cuenta con una estufa de gas, es válido todo este proceso.
Hay varias formas de describir el algoritmo:
- Gráfico
(esquemas).
- Verbal.
- Pseudocódigo.
- Código del programa.
Medios de expresión de un algoritmo
Los algoritmos pueden ser expresados de muchas maneras, incluyendo al lenguaje natural, pseudocódigo, diagramas de flujo y lenguajes de programación entre otros. Las descripciones en lenguaje natural tienden a ser ambiguas y extensas. El usar pseudocódigo y diagramas de flujo evita muchas ambigüedades del lenguaje natural. Dichas expresiones son formas más estructuradas para representar algoritmos; no obstante, se mantienen independientes de un lenguaje de programación específico.
La descripción de un algoritmo usualmente se hace en tres niveles:
- Descripción de alto nivel. Se establece el problema, se selecciona un modelo matemático y se explica el algoritmo de manera verbal, posiblemente con ilustraciones y omitiendo detalles.
- Descripción formal. Se usa pseudocódigo para describir la secuencia de pasos que encuentran la solución.
- Implementación. Se muestra el algoritmo expresado en un lenguaje de programación específico o algún objeto capaz de llevar a cabo instrucciones.
También es posible incluir un teorema que demuestre que el algoritmo es correcto, un análisis de complejidad o ambos.
Diagrama de flujo
Los diagramas de flujo son descripciones gráficas de algoritmos; usan símbolos conectados con flechas para indicar la secuencia de instrucciones y están regidos por ISO.
Los diagramas de flujo son usados para representar algoritmos pequeños, ya que abarcan mucho espacio y su construcción es laboriosa. Por su facilidad de lectura son usados como introducción a los algoritmos, descripción de un lenguaje y descripción de procesos a personas ajenas a la computación.
Pseudocódigo
El pseudocódigo (falso lenguaje, el prefijo pseudo significa falso) es una descripción de alto nivel de un algoritmo que emplea una mezcla de lenguaje natural con algunas convenciones sintácticas propias de lenguajes de programación, como asignaciones, ciclos y condicionales, aunque no está regido por ningún estándar.
El pseudocódigo está pensado para facilitar a las personas el entendimiento de un algoritmo, y por lo tanto puede omitir detalles irrelevantes que son necesarios en una implementación. Programadores diferentes suelen utilizar convenciones distintas, que pueden estar basadas en la sintaxis de lenguajes de programación concretos. Sin embargo, el pseudocódigo, en general, es comprensible sin necesidad de conocer o utilizar un entorno de programación específico, y es a la vez suficientemente estructurado para que su implementación se pueda hacer directamente a partir de él.
Así el pseudocódigo cumple con las funciones antes mencionadas para representar algo abstracto los protocolos son los lenguajes para la programación. Busque fuentes más precisas para tener mayor comprensión del tema.
Sistemas formales
La teoría de autómatas y la teoría de funciones recursivas proveen modelos matemáticos que formalizan el concepto de algoritmo. Los modelos más comunes son la máquina de Turing, máquina de registro y funciones μ-recursivas. Estos modelos son tan precisos como un lenguaje máquina, careciendo de expresiones coloquiales o ambigüedad, sin embargo se mantienen independientes de cualquier computadora y de cualquier implementación.
Implementación
Muchos algoritmos son ideados para implementarse en un programa. Sin embargo, los algoritmos pueden ser implementados en otros medios, como una red neuronal, un circuito eléctrico o un aparato mecánico y eléctrico. Algunos algoritmos inclusive se diseñan especialmente para implementarse usando lápiz y papel. El algoritmo de multiplicación tradicional, el algoritmo de Euclides, la criba de Eratóstenes y muchas formas de resolver la raíz cuadrada son solo algunos ejemplos.
Variables
Son elementos que toman valores específicos de un tipo de datos concreto. La declaración de una variable puede realizarse comenzando con var. Principalmente, existen dos maneras de otorgar valores iniciales a variables:
- Mediante una sentencia de asignación.
- Mediante un procedimiento de entrada de datos (por ejemplo: 'read').
Ejemplo:
Estructuras secuenciales
La estructura secuencial es aquella en la que una acción sigue a otra en secuencia. Las operaciones se suceden de tal modo que la salida de una es la entrada de la siguiente y así sucesivamente hasta el fin del proceso.La asignación de esto consiste, en el paso de valores o resultados a una zona de la memoria. Dicha zona será reconocida con el nombre de la variable que recibe el valor. La asignación se puede clasificar de la siguiente forma:
- Simples: Consiste en pasar un valor constante a una variable (a ← 15)
- Contador: Consiste en usarla como un verificador del número de veces que se realiza un proceso (a ← a + 1)
- Acumulador: Consiste en usarla como un sumador en un proceso (a ← a + b)
- De trabajo: Donde puede recibir el resultado de una operación matemática que involucre muchas variables (a ← c + b*1/2).
Un ejemplo de estructura secuencial, como obtener el área de un triángulo:
| Algoritmo Encontrar el máximo de un conjunto |
función max()
|
Sobre la notación:
- "←" representa una asignación: ← significa que la variable toma el valor de ;
- "devolver" termina el algoritmo y devuelve el valor a su derecha (en este caso, el máximo de ).
Implementación
En lenguaje C++:
Comentarios
Publicar un comentario