Está en la página 1de 14

¿Qué es un algoritmo informático?

Un algoritmo informático es un conjunto de instrucciones definidas, ordenadas y


acotadas para resolver un problema, realizar un cálculo o desarrollar una tarea. Es
decir, un algoritmo es un procedimiento paso a paso para conseguir un fin. A partir
de un estado e información iniciales, se siguen una serie de pasos ordenados para
llegar a la solución de una situación.

En programación, un algoritmo supone el paso previo a ponerse a escribir el código.


Primero debemos encontrar la forma de obtener la solución al problema (definir el
algoritmo informático), para luego, a través del código, poder indicarle a la máquina
qué acciones queremos que lleve a cabo. De este modo, un programa informático
no sería más que un conjunto de algoritmos ordenados y codificados en un lenguaje
de programación para poder ser ejecutados en un ordenador.

No obstante, los algoritmos no son algo exclusivo de los ámbitos de las


matemáticas, la lógica y la computación. Utilizamos numerosos algoritmos para
resolver problemas en nuestra vida cotidiana. Algunos de los ejemplos más
habituales son los manuales de instrucciones o las recetas de cocina.

Partes de un algoritmo informático

Las tres partes de un algoritmo son:

Input (entrada). Información que damos al algoritmo con la que va a trabajar para
ofrecer la solución esperada.
Proceso. Conjunto de pasos para que, a partir de los datos de entrada, llegue a la
solución de la situación.
Output (salida). Resultados, a partir de la transformación de los valores de entrada
durante el proceso.
De este modo, un algoritmo informático parte de un estado inicial y de unos valores
de entrada, sigue una serie de pasos sucesivos y llega a un estado final en el que
ha obtenido una solución.

Características de los algoritmos


Asimismo, los algoritmos presentan una serie de características comunes. Son:

Precisos. Objetivos, sin ambigüedad.


Ordenados. Presentan una secuencia clara y precisa para poder llegar a la solución.
Finitos. Contienen un número determinado de pasos.
Concretos. Ofrecen una solución determinada para la situación o problema
planteados.
Definidos. El mismo algoritmo debe dar el mismo resultado al recibir la misma
entrada.
Tipos de algoritmos y ejemplos
Existen diversas clasificaciones de algoritmos, en función de diferentes criterios.
Según su sistema de signos (cómo describen los pasos a seguir), se distingue entre
algoritmos cuantitativos y cualitativos, si lo hacen a través de cálculos matemáticos
o secuencias lógicas. Asimismo, si requieren o no el empleo de un ordenador para
su resolución, se clasifican en computacionales y no computacionales.

Pero, si nos fijamos en su función (qué hace) y su estrategia para llegar a la


solución (cómo lo hace), encontramos muchos más tipos de algoritmos.
Destacamos los siguientes cinco tipos de algoritmos informáticos:

1. Algoritmos de búsqueda
Los algoritmos de búsqueda localizan uno o varios elementos que presenten una
serie de propiedades dentro de una estructura de datos.

Ejemplos de algoritmos de búsqueda


Existen diversos tipos de búsquedas, entre las que sobresalen:

Búsqueda secuencial. En la que se compara el elemento a localizar con cada


elemento del conjunto hasta encontrarlo o hasta que hayamos comparado todos.
Búsqueda binaria. En un conjunto de elementos ordenados, hace una comparación
con el elemento ubicado en el medio y, si no son iguales, continúa la búsqueda en la
mitad donde puede estar. Y así sucesivamente en intervalos cada vez más
pequeños de elementos.
2. Algoritmos de ordenamiento
Reorganizan los elementos de un listado según una relación de orden. Las más
habituales son el orden numérico y el orden lexicográfico. Un orden eficiente
optimiza el uso de algoritmos como los de búsqueda y facilitan la consecución de
resultados legibles por personas y no solo máquinas.

Ejemplos de algoritmos de ordenamiento


Algunos algoritmos de ordenamiento son:

Ordenamiento de burbuja. Compara cada elemento de la lista a ordenar con el


siguiente e intercambia su posición si no están en el orden adecuado. Se revisa
varias veces toda la lista hasta que no se necesiten más intercambios.
Ordenamiento por selección. Vamos colocando el elemento más pequeño disponible
en cada una de las posiciones de la lista de forma consecutiva.
Ordenamiento rápido. Elegimos un elemento del conjunto (pivote) y reubicamos el
resto a cada uno de sus lados, en función de si son mayores o menores que el
elemento que estamos tomando como referencia. Repetimos el procedimiento en
cada subconjunto.
3. Algoritmos voraces
Los algoritmos voraces consisten en una estrategia de búsqueda que sigue una
heurística en la que se elige la mejor opción óptima en cada paso local con el
objetivo de llegar a una solución general óptima. Es decir, en cada paso del proceso
escogen el mejor elemento (elemento prometedor) y comprueban que pueda formar
parte de una solución global factible. Normalmente se utilizan para resolver
problemas de optimización.

Ejemplos de algoritmos voraces


En ocasiones, estos algoritmos no encuentran la solución global óptima, ya que al
tomar una decisión solo tienen en cuenta la información de las decisiones que han
tomado hasta el momento y no las futuras que puede adoptar. Algunos casos en los
que los algoritmos voraces alcanzan soluciones óptimas son:

Problema de la mochila fraccional (KP). Disponemos de una colección de objetos


(cada uno de ellos con un valor y un peso asociados) y debemos determinar cuáles
colocar en la mochila para lograr transportar el valor máximo sin superar el peso que
puede soportar.
Algoritmo de Dijkstra. Utilizado para determinar el camino más corto desde un
vértice origen hasta los demás vértices de un grafo, que tiene pesos en cada arista.
Codificación Huffman. Método de compresión de datos sin perder información, que
analiza la frecuencia de aparición de caracteres de un mensaje y les asigna un
código de longitud variable. Cuanto mayor sea la frecuencia le corresponderá un
código más corto.
4. Programación dinámica
La programación dinámica es un método de resolución de problemas en el que
dividimos un problema complejo en subproblemas y calculamos y almacenamos sus
soluciones, para que no haga falta volver a calcularlas más adelante para llegar a la
solución del problema. La programación dinámica reduce el tiempo de ejecución de
un algoritmo al optimizar la recursión.

Eso sí, para poder aplicarse a un problema, éste debe tener subestructuras óptimas
y subproblemas superpuestos. Es decir, que en él se puedan usar soluciones
óptimas de subproblemas para encontrar la solución óptima del problema en su
conjunto y que el problema se pueda dividir en subproblemas que se reutilizan para
ofrecer el resultado global.

Usos de programación dinámica


Algunos casos en los que se utiliza son:

La serie de Fibonacci. Sucesión de números que comienza con “0” y “1” y, a partir
de ellos, cada número es resultado de la suma de los dos que le preceden. La
relación de recurrencia la define.
Problema de la mochila.
5. Algoritmos probabilísticos
Es una técnica que usa una fuente de aleatoriedad como parte de su lógica.
Mediante un muestreo aleatorio de la entrada llega a una solución que puede no ser
totalmente óptima, pero que es adecuada para el problema planteado.

Se utiliza en situaciones con limitaciones de tiempo o memoria y cuando se puede


aceptar una buena solución de media, ya que a partir de los mismos datos se
pueden obtener soluciones diferentes y algunas erróneas. Para que sea más
probable ofrecer una solución correcta, se repite el algoritmo varias veces con
diferentes submuestras aleatorias y se comparan los resultados.

Tipos de algoritmos probabilísticos


Existen dos tipos principales de algoritmos probabilísticos:

Algoritmo de Montecarlo. Dependiendo de la entrada, hay una pequeña probabilidad


de que no acierte o no llegue a una solución. Se puede reducir la probabilidad de
error aumentando el tiempo de cálculo.
Algoritmo de Las Vegas. Se ejecuta en un periodo de tiempo concreto. Si encuentra
una solución en ese tiempo ésta será correcta, pero es posible que el tiempo se
agote y no encuentre ninguna solución.
Ejemplo real de algoritmo informático
A continuación, vamos a ver un ejemplo de algoritmo informático que utilizamos este
año para resolver un enigma que os planteamos en nuestras redes sociales para
celebrar el Día del Programador.

El reto o situación de partida que os proponíamos era el siguiente: «Si Java es Ñfaf
y Javascript es Ñfafxhwnuy, resuelve a través de la rueda de cifrado la siguiente
frase con tu solución programada: KJPNE INF IJ PTX UWTLWFQFITWJX».

Situación de partida algoritmo del Día del Programador


Situación de partida para el algoritmo.
Para conseguir descifrar el mensaje oculto, diseñamos un algoritmo informático, un
conjunto de instrucciones o pasos para resolver el enigma:

function decoded(encodedTxt) {
let alphabet = "abcdefghijklmnñopqrstuvwxyz".split("");
let decodedTxt = "";
encodedTxt.toLowerCase().split("").forEach(item => {
if (item === " ") {
decodedTxt += item;
}
else if (alphabet.indexOf(item) != -1) {
if (alphabet.indexOf(item) >= 5) {
decodedTxt += alphabet[(alphabet.indexOf(item) - 5)];
}
else if (alphabet.indexOf(item) <= 4) {
decodedTxt += alphabet[alphabet.length + alphabet.indexOf(item) -
5];
}
}
});
console.log(decodedTxt.toUpperCase());
}
const txtEncrypted = 'KJPNE INF IJ PTX UWTLWFQFITWJX';
decoded(txtEncrypted);

Conclusión
Como hemos visto, un algoritmo informático no es más que un conjunto de
instrucciones para conseguir un fin. Los algoritmos están muy presentes en el
ámbito de la informática, pero también en nuestra vida cotidiana. Existen numerosos
tipos y ejemplos de algoritmos y, dependiendo de la situación en que nos
encontremos, unos u otros nos ayudarán a llegar a la solución que necesitemos.

¿Qué es un diagrama de flujo?


El diagrama de flujo o también diagrama de actividades es una manera de
representar gráficamente un algoritmo o un proceso de alguna naturaleza, a través
de una serie de pasos estructurados y vinculados que permiten su revisión como un
todo.

La representación gráfica de estos procesos emplea, en los diagramas de flujo, una


serie determinada de figuras geométricas que representan cada paso puntual del
proceso que está siendo evaluado. Estas formas definidas de antemano se
conectan entre sí a través de flechas y líneas que marcan la dirección del flujo y
establecen el recorrido del proceso, como si de un mapa se tratara.

Hay cuatro tipos de diagrama de flujo en base al modo de su representación:

Horizontal. Va de derecha a izquierda, según el orden de la lectura.


Vertical. Va de arriba hacia abajo, como una lista ordenada.
Panorámico. Permiten ver el proceso entero en una sola hoja, usando el modelo
vertical y el horizontal.
Arquitectónico. Representa un itinerario de trabajo o un área de trabajo.
Los diagramas de flujo son un mecanismo de control y descripción de procesos, que
permiten una mayor organización, evaluación o replanteamiento de secuencias de
actividades y procesos de distinta índole, dado que son versátiles y sencillos. Son
empleados a menudo en disciplinas como la programación, la informática, la
economía, las finanzas, los procesos industriales e incluso la psicología cognitiva.

Proceso de un diagrama de flujo


En este ámbito, hablamos de procesos para referirnos a una secuencia específica
de actividades, es decir, a los pasos a dar dentro del diagrama de flujo. Por ejemplo,
en informática, los procesos son secuencias iniciadas o bien por disparadores
programados dentro del sistema, o por intervenciones del usuario del sistema. Cada
uno posee una dirección, un propósito y una serie de pasos que abarca.

Simbología de un diagrama de flujo


Los principales símbolos convencionales que se emplean en los diagramas de flujo
son los siguientes:
Ejemplos de diagrama de flujo
Diagrama de flujo para la compra de unos zapatos:

Tipos de datos.

Una de las tareas principales de la computadora es almacenar y procesar


datos. Para

hacer esto, un programa utiliza estructuras de datos, es decir, formas para


almacenar los

diferentes datos que van a ser procesados. Conforme aumenta la complejidad del
programa,

también será más compleja la forma en que se almacenan estos datos.

La forma más sencilla de almacenar datos en un programa es mediante el uso


de

variables y constantes.
Un programa asigna una posición de memoria a cada variable o constante que sea
declarada en el programa. La posición en memoria puede ser vista como una casilla
de memoria, en donde el valor será determinado por el programa, y el tipo de valor
que puede ser almacenado en ella será determinado por el programador al
momento de declarar la variable.

Para una variable, el valor en dicha casilla cambiará tantas veces lo necesite en el
programa; en cambio, para una constante, su valor es fijado una vez, al, inicio del
programa, y no puede cambiar durante el transcurso de éste.

A toda variable o constante se le asigna un nombre o identificador, el cual debe


construirse de acuerdo con las siguientes reglas.

1. El identificador debe empezar con una letra, seguida de letras, números o el


carácter "_".

2. No se pueden utilizar espacios en blanco

3. No se puede utilizar ningún otro símbolo como #, $, %, /, *, @, etc.

4. Se toma como referencia de longitud máxima de 8 caracteres (aunque algunos


lenguajes aceptan hasta 127)

5. El identificador debe tener relación con el problema.

5 Operadores
Los operadores nos permiten realizar operaciones aritméticas entre los datos, ya
sean constantes o variables.

Aunque el número y tipo de operadores depende del lenguaje de programación que


se esté utilizando, los operadores más frecuentes se clasifican de la siguiente forma:
1. Operadores aritméticos. Los cuales son:

+,-,*, / y el mod, o módulo de la división.

El operador mod sólo se aplica a operandos tipo entero. El mod se lee como módulo
de la división, y el resultado será el residuo de una división entera.

2. Operadores de relación Los cuales son:

>, >=, <, <=, !=, ==

Se hace una distinción con el operador de igualdad, que no es el mismo de


asignación: ==. Así se tiene x == y se traduce como "¿es x igual a y?, en tanto que
x=y, equivale a decir "a la variable x se le asigna el mismo valor que tiene y "

3. Operadores lógicos. Los cuales son:

! (not, negación) && (and, y), || (or, o)

Para resolver expresiones con operadores lógicos, se utilizan las siguientes tablas,
conocidas como tablas de verdad:
Operadores de Asignación

Por el momento, el único operador de asignación es: =

Las reglas para resolver una expresión aritmética son las siguientes:

1. Los operadores aritméticos se aplican teniendo en cuenta su jerarquía


(precedencia) y de izquierda a derecha. La jerarquía se muestra a continuación:

- (Unario), ! (Not, negación)

() Paréntesis

*, /, mod

<, <=, ==, >, >=, !=,+,- (Resta)


&& (AND)

|| (OR)

2. Si una expresión contiene paréntesis, se evalúa primero la subexpresión entre


paréntesis, respetando la jerarquía de operadores en esta.

Pseudocódigo: es un lenguaje informal para la descripción de algoritmos, debido a


que es muy flexible y depende del estilo del programador. Toma características de
un lenguaje de programación y de los procesos matemáticos para detallar el
problema. Para ello se deben tomar en cuenta las siguientes reglas:

¨ Los comentarios se denotan con /* */

¨ Se utilizan las estructuras de control de flujo (para, mientras, si)

¨ Asignarle nombres coherentes a las variables, de acuerdo con lo que


representan y según el contexto del problema.

¨ Delimitar el inicio y fin del algoritmo y de las estructuras de control de flujo.

VARIABLES:

Las variables se suelen utilizar en muchos ámbitos diferentes, como por ejemplo, en
matemáticas. Pero aquí te encontrarás la definición de variable en programación.

Una variable es donde se guarda (y se recupera) datos que se utilizan en un


programa.
Cuando escribimos código, las variables se utilizan para:

Guardar datos y estados.


Asignar valores de una variable a otra.
Representar valores dentro de una expresión matemática.
Mostrar valores por pantalla.
Todas las variables deben ser de un tipo de datos, ya sea un dato de tipo primitivo,
como un número o texto, o un dato abstracto, como un objeto que se ha creado.

Así que básicamente podemos decir que una variable es:

Concepto de variable
Veamos un poco el concepto de lo que hemos explicado, y así sabremos para que
sirve una variable en programación (y su significado).

Primero hablaremos del identificador de una variable, que no deja de ser el nombre
de la variable que le ponemos.

Cuando hablamos de identificadores, no sólo nos referimos a las variables, sino


también cuando ponemos un nombre a una función o una clase.

Lo habitual es que haya una serie de restricciones. La mayoría de los lenguajes de


programación tienen estas condiciones:

Pueden ser letras, números y el símbolo _. Con estos límites:


no puede tener espacios.
no empezar con un número.
no puede ser una palabra reservada. Por ejemplo, if, for, while…
Algunos lenguajes pueden permitir empezar con carácter especial, como $.
Otra cosa a tener en cuenta es que hay lenguajes que distinguen mayúsculas y
minúsculas. Eso se llama case sensitive, por si te lo encuentras alguna vez.

Por ejemplo, la variable total serían una variable diferente de Total en Java, C, C++.
Pero en Visual Basic, no.

Como se declara una variable en programación


La mayoría de lenguajes de programación obliga a declarar la variable (decir como
se va a llamar) con el tipo de datos asociado. Por ejemplo, en C#
int total;
En este caso, la variable se llama total, y sabemos que su tipo de datos es un
número, al poner int.

Eso significa otra cosa muy importante: la variable no puede almacenar otro tipo de
datos. Por ejemplo, para almacenar un número podríamos poner:

total = 10;
A esto se le llama asignación de valores a una variable.

También se podría poner todo en una sola línea:

int total = 10;


Aquí tenemos el tipo de datos, la declaración y un valor inicial, todo condensado.

En muchos otros lenguajes de programación no es necesario declarar el tipo de


datos. Por ejemplo, en Python se puede poner directamente

total_Python = 10
y el lenguaje ya sabe que esa variable es un número.

Ejemplos de variables en programación


Al crear una variable tenemos en mente que es para guardar datos, pero cuando
estamos programando podemos necesitar otra serie de variables que también son
importantes.

Para entender un poco los ejemplos de variables que te puedes encontrar, vamos a
ver algunos tipos de variables que podemos utilizar.

Variable auxiliar
También se llaman variables temporales. Son las que necesitamos para hacer algo
de manera temporal.

Seguramente esa variable no la necesites una vez ha cumplido su objetivo. Veamos


un ejemplo.

Quieres intercambiar los valores de a a b. Para hacerlo, necesitas una variable


auxiliar, que se puede llamar c. El código sería algo así:

c = a;
a = b;
b = c;
Una vez hecho esto, ya no es necesaria la variable c.
Variable acumuladora
Las variables acumuladoras sirven para almacenar un número y sus valores
consecutivos. Por ejemplo, si empieza por 0, luego tendrá el valor de 1, 2, 3, 4…

Es tan habitual que una variable incremente o decremente en 1, que muchos


lenguajes tienen una operación que sólo hace eso. Esta operación es ++ o --.

Suelen utilizarse en bucles, como for o while.

Variable de estado
Las variables de estado se utilizan para saber como se encuentra un objeto en cada
momento.

La más simple podría ser una variable booleana, dónde su valor sería true o false.

Pero también podrías definir varios estados. Por ejemplo, si tienes un objeto
luchador en un juego, puede estar peleando, cayendo, siendo derrotado…

El mismo objeto actuaría de manera diferente dependiendo del estado en el que se


encuentra.

También podría gustarte