ALGORITMO
ALGORITMO
INVESTIGACION
Caracas, 2021
ALGORITMO
LA VIDA COTIDIANA
Hay muchas cosas que queremos llegar saber y aprender en nuestras vidas como también
hay otras que a veces nos preguntamos si realmente nos servirán de algo.
Pero es que a veces no nos fijamos que un conocimiento vasto es algo muy bueno y
conveniente. Con esto se quiere llegar al siguiente punto: “Los algoritmos”. Y es que todo
lo que aprendemos en esta vida vale para algo, como también puede cumplir una función
especial en esta. Tan claro como lo es enseñar las matemáticas que lo están en todo,
también ocurre lo mismo con los algoritmos, estos están en todo lo que hacemos.
Primero vamos a dejar en claro ¿qué es un algoritmo? Pues la RAE lo define como el
“conjunto ordenado y finito de operaciones que permita hallar la solución de un
problema”. Esto nos quiere decir que podemos presentar un problema y que nosotros al
buscar una solución, este lo realizaremos en varias operaciones agrupadas de forma
ordenada y que esto lleve a una conclusión, o sea, tenga un número delimitado de
operaciones.
Un algoritmo (del griego y latín, dixit algorithmus y éste del griego arithmos que significa
número, quizás también etimológicamente su influencia puede tener origen árabe,
proveniente del matemático Persa Al-Juarismi) es un término que tanto en la ciencia de la
computación, la física y la matemática un conjunto de prescripto de instrucciones o reglas
bien definidas, ordenadas y finitas que permiten llevar a cabo una actividad mediante
pasos sucesivos que no generen dudas a quien deba hacer dicha actividad. Dados un
estado inicial y una entrada, siguiendo los pasos sucesivos se llega a un estado final y se
obtiene una solución. Los algoritmos son el objeto de estudio de la algoritmia.
En la vida cotidiana, se emplean algoritmos frecuentemente para resolver problemas, en
términos de programación, un algoritmo es una secuencia de pasos lógicos que permiten
solucionar un problema.
Ahora la cuestión es, ¿cómo esto nos puede ayudar en nuestra vida diaria? Tan sencillo
como el hecho de saber que todos tenemos problemas y que tengamos bien sabido que
estos pueden llegar a tener una o varias formas de solucionarlos, es ahí donde los
algoritmos aparecen. Estos buscaran de forma clara las operaciones que mejor lo
representen, y que mejor forma de hacerlo que por pasos. De esta manera se puede dejar
detallada la solución al problema.
Los algoritmos se pueden representar de dos formas:
PSEUDOCÓDIGO: “se escriben las instrucciones o pasos del algoritmo en lenguaje
natural”. DIAGRAMA DE FLUJO: “Es la representación gráfica del Pseudocódigo”.
PROGRAMAS
LENGUAJE ALGORÍTMICO
Es una serie de símbolos y reglas que se utilizan para describir de manera explícita un
proceso. Teniendo en cuenta la forma en que describen el proceso, existen dos tipos de
lenguajes algorítmicos:
Es la representación gráfica de las operaciones que realiza un algoritmo
(diagrama de flujo).
Representa en forma descriptiva las operaciones que debe realizar un algoritmo
(pseudocódigo).
LENGUAJE PROGRAMACION
Es un lenguaje formal diseñado para realizar procesos que pueden ser llevados a cabo por
máquinas como las computadoras.
Pueden usarse para crear programas que controlen el comportamiento físico y lógico de
una máquina, para expresar algoritmos con precisión, o como modo de comunicación
humana.
Está formado por un conjunto de símbolos y reglas sintácticas y semánticas que definen su
estructura y el significado de sus elementos y expresiones. Al proceso por el cual se
escribe, se prueba, se depura, se compila (de ser necesario) y se mantiene el código
fuente de un programa informático se le llama programación.
VARIABLES Y VECTORES
Las variables son títulos asignados a espacios en memoria para almacenar datos
específicos. Son contenedores de datos y por ello se diferencian según el tipo de dato que
son capaces de almacenar. En la mayoría de lenguajes de programación se requiere
especificar un tipo de variable concreto para guardar un dato específico. Por ejemplo, en
Java, si deseamos guardar una cadena de texto debemos especificar que la variable es del
tipo String. Por otra parte, en lenguajes como PHP este tipo de especificación de variables
no es necesario. Además, existen variables compuestas llamadas vectores. Un vector no es
más que un conjunto de bytes consecutivas en memoria y del mismo tipo guardadas
dentro de una variable contenedor. A continuación, un listado
CONDICIONALES
Las sentencias condicionales son estructuras de código que indican que, para que cierta
parte del programa se ejecute, deben cumplirse ciertas premisas; por ejemplo: que dos
valores sean iguales, que un valor exista, que un valor sea mayor que otro... Estos
condicionantes por lo general solo se ejecutan una vez a lo largo del programa. Los
condicionantes más conocidos y empleados en programación son:
If: Indica una condición para que se ejecute una parte del programa.
Else if: Siempre va precedido de un "If" e indica una condición para que se ejecute
una parte del programa siempre que no cumpla la condición del if previo y si se
cumpla con la que el "else if" especifique.
Else: Siempre precedido de "If" y en ocasiones de "Else If". Indica que debe
ejecutarse cuando no se cumplan las condiciones previas.
BUCLES
Los bucles son parientes cercanos de los condicionantes, pero ejecutan constantemente
un código mientras se cumpla una determinada condición. Los más frecuentes son:
Hay que decir que a pesar de que existan distintos tipos de bucles, todos son capaces de
realizar exactamente las mismas funciones. El empleo de uno u otro depende, por lo
general, del gusto del programador.
FUNCIONES
Las funciones se crearon para evitar tener que repetir constantemente fragmentos de
código. Una función podría considerarse como una variable que encierra código dentro de
sí. Por lo tanto, cuando accedemos a dicha variable (la función) en realidad lo que estamos
haciendo es ordenar al programa que ejecute un determinado código predefinido
anteriormente.
SINTAXIS
SEMÁNTICA ESTÁTICA
La semántica estática define las restricciones sobre la estructura de los textos válidos que
resulta imposible o muy difícil expresar mediante formalismos sintácticos estándar. Para
los lenguajes compilados, la semántica estática básicamente incluye las reglas semánticas
que se pueden verificar en el momento de compilar. Por ejemplo, el chequeo de que cada
identificador sea declarado antes de ser usado (en lenguajes que requieren tales
declaraciones) o que la etiqueta en cada brazo de una estructura case sean distintas.
Muchas restricciones importantes de este tipo, como la validación de que los
identificadores sean usados en los contextos apropiados (por ejemplo, no sumar un
entero al nombre de una función), o que las llamadas a subrutinas tengan el número y
tipo de parámetros adecuado, puede ser implementadas definiéndolas como reglas en
una lógica conocida como sistema de tipos. Otras formas de análisis estáticos, como los
análisis de flujo de datos, también pueden ser parte de la semántica estática. Otros
lenguajes de programación como Java y C# tienen un análisis definido de asignaciones,
una forma de análisis de flujo de datos, como parte de su semántica estática.
SISTEMA DE TIPOS
LENGUAJES MAQUINA
Son normalmente fáciles de aprender porque están formados por elementos de lenguajes
naturales, como el inglés.
LENGUAJES COMPILADOS
Naturalmente, un programa que se escribe en un lenguaje de alto nivel también tiene que
traducirse a un código que pueda utilizar la máquina.
LENGUAJES INTERPRETADOS
Se puede también utilizar una alternativa diferente de los compiladores para traducir
lenguajes de alto nivel. En vez de traducir el programa fuente y grabar en forma
permanente el código objeto que se produce durante la compilación para utilizarlo en una
ejecución futura, el programador sólo carga el programa fuente en la computadora junto
con los datos que se van a procesar.
LENGUAJES INTERMEDIARIOS
Algunos lenguajes pertenecen a ambas categorías (LISP, Java, Python...) dado que el
programa escrito en estos lenguajes puede, en ciertos casos, sufrir una fase de
compilación intermediaria, en un archivo escrito en un lenguaje ininteligible (por lo tanto,
diferente al archivo fuente) y no ejecutable (requeriría un intérprete). Los applets Java,
pequeños programas que a menudo se cargan en páginas web, son archivos compilados
que sólo pueden ejecutarse dentro de un navegador web (son archivos con la extensión
.class).
El lenguaje unificado de modelado (UML, por sus siglas en inglés, Unified Modeling
Language) es el lenguaje de modelado de sistemas de software más conocido y utilizado
en la actualidad; está respaldado por el Object Management Group (OMG).
Se puede aplicar en el desarrollo de software gran variedad de formas para dar soporte a
una metodología de desarrollo de software (tal como el Proceso Unificado Racional,
Rational Unified Process o RUP), pero no especifica en sí mismo qué metodología o
proceso usar.
UML cuenta con varios tipos de diagramas, los cuales muestran diferentes aspectos de las
entidades representadas.
LENGUAJE ENSAMBLADOR
Fue usado principalmente en los inicios del desarrollo de software, cuando aún no se
contaba con potentes lenguajes de alto nivel y los recursos eran limitados. Actualmente se
utiliza con frecuencia en ambientes académicos y de investigación, especialmente cuando
se requiere la manipulación directa de hardware, alto rendimiento, o un uso de recursos
controlado y reducido. También es utilizado en el desarrollo de controladores de
dispositivo (en inglés, device drivers) y en el desarrollo de sistemas operativos, debido a la
necesidad del acceso directo a las instrucciones de la máquina. Muchos dispositivos
programables (como los microcontroladores) aún cuentan con el ensamblador como la
única manera de ser manipulados.
CARACTERÍSTICAS
CARACTERÍSTICAS DE UN ALGORITMO
Comandos
Datos
Variables y constantes
Operadores
COMANDOS O PALABRAS RESERVADAS
Todos los lenguajes, naturales o computacionales, tienen palabras que denotan una
acción. Los comandos no son más que acciones que debe interpretar y ejecutar el
computador. Cada comando conserva una sintaxis determinada, es decir la forma de
utilizarlo.
Los lenguajes computacionales tienen en su repertorio comandos dirigidos al
procesamiento de archivos y datos, entre ellos: Inicio, Leer, Imprimir.
DATOS
Un dato es un campo que puede convertirse en información. Un dato puede significar un
número, una letra, un signo ortográfico o cualquier símbolo que represente una cantidad,
una medida, una palabra o una descripción. La importancia de los datos está en su
capacidad de asociarse dentro de un contexto para convertirse en información. Es decir,
por si mismos los datos no tienen capacidad de comunicar un significado y por tanto no
pueden afectar el comportamiento de quien los recibe. Para ser útiles, los datos deben
convertirse en información que ofrezca un significado, conocimiento, ideas o
conclusiones.
Los datos simples pueden ser:
LENGUAJE NATURAL
Son aquellas lenguas que han sido generadas espontáneamente en un grupo de hablantes
con propósito de comunicarse, a diferencia de otras lenguas, como puedan ser una lengua
construida, los lenguajes de programación o los lenguajes formales usados en el estudio
de la lógica formal, especialmente la lógica matemática.
PSEUDOCÓDIGO
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. Es
utilizado para describir algoritmos en libros y publicaciones científicas, y como producto
intermedio durante el desarrollo de un algoritmo, como los diagramas de flujo, aunque
presentan una ventaja importante sobre estos, y es que los algoritmos descritos en
pseudocódigo requieren menos espacio para representar instrucciones complejas.
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.
SÍMBOLOS PARA REPRESENTAR DIAGRAMAS DE FLUJO