Qué Es Un Algoritmo Informático

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 17

¿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:

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.

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.

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.

Clasificación de algoritmos

Algoritmo determinista: en cada paso del algoritmo se determina de forma única el


siguiente paso.

Algoritmo no determinista: deben decidir en cada paso de la ejecución entre varias


alternativas y agotarlas todas antes de encontrar la solución.

Todo algoritmo tiene una serie de características, entre otras que requiere una
serie de recursos, algo que es fundamental considerar a la hora de implementarlos
en una máquina. Estos recursos son principalmente:

El tiempo: período transcurrido entre el inicio y la finalización del algoritmo.


La memoria: la cantidad (la medida varía según la máquina) que necesita el
algoritmo para su ejecución.

Obviamente, la capacidad y el diseño de la máquina pueden afectar al diseño del


algoritmo.

En general, la mayoría de los problemas tienen un parámetro de entrada que es el


número de datos que hay que tratar, esto es, N. La cantidad de recursos del
algoritmo es tratada como una función de N. De esta manera puede establecerse
un tiempo de ejecución del algoritmo que suele ser proporcional a una de las
siguientes funciones:

1 : Tiempo de ejecución constante. Significa que la mayoría de las instrucciones


se ejecutan una vez o muy pocas.

logN : Tiempo de ejecución logarítmico. Se puede considerar como una gran


constante. La base del logaritmo (en informática la más común es la base 2)
cambia la constante, pero no demasiado. El programa es más lento cuanto más
crezca N, pero es inapreciable, pues logN no se duplica hasta que N llegue a N2.

N : Tiempo de ejecución lineal. Un caso en el que N valga 40, tardará el doble que
otro en que N valga 20. Un ejemplo sería un algoritmo que lee N números enteros
y devuelve la media aritmética.

N·logN : El tiempo de ejecución es N·logN. Es común encontrarlo en algoritmos


como Quick Sort y otros del estilo divide y vencerás. Si N se duplica, el tiempo de
ejecución es ligeramente mayor del doble.
N2 : Tiempo de ejecución cuadrático. Suele ser habitual cuando se tratan pares de
elementos de datos, como por ejemplo un bucle anidado doble. Si N se duplica, el
tiempo de ejecución aumenta cuatro veces. El peor caso de entrada del algoritmo
Quick Sort se ejecuta en este tiempo.

N3 : Tiempo de ejecución cúbico. Como ejemplo se puede dar el de un bucle


anidado triple. Si N se duplica, el tiempo de ejecución se multiplica por ocho.

2N : Tiempo de ejecución exponencial. No suelen ser muy útiles en la práctica por


el elevadísimo tiempo de ejecución. El problema de la mochila resuelto por un
algoritmo de fuerza bruta -simple vuelta atrás- es un ejemplo. Si N se duplica, el
tiempo de ejecución se eleva al cuadrado.

Algoritmos polinomiales: aquellos que son proporcionales a Nk. Son en general


factibles.

Algoritmos exponenciales: aquellos que son proporcionales a kN. En general son


infactibles salvo un tamaño de entrada muy reducido.

Qué son las constantes, las variables y las expresiones en la programación así
como su clasificación.

Constantes

Una constante es un dato numérico o alfanumérico que no cambia durante la


ejecución del programa.

Ejemplo:

pi = 3.1416

Variable
Es un espacio en la memoria de la computadora que permite almacenar
temporalmente un dato durante la ejecución de un proceso, su contenido puede
cambiar durante la ejecución del programa.

Para poder reconocer una variable en la memoria de la computadora, es necesario


darle un nombre con el cual podamos identificarla dentro de un algoritmo.

Ejemplo:

area = pi * radio ^ 2

Las variables son : el radio, el area y la constate es pi

Clasificación de las Variables

Por su contenido

Variables Numéricas: Son aquellas en las cuales se almacenan valores


numéricos, positivos o negativos, es decir almacenan números del 0 al 9, signos (+
y -) y el punto decimal.

Ejemplo:

iva = 0.15 pi = 3.1416 costo = 2500

Variables Lógicas: Son aquellas que solo pueden tener dos valores (cierto o falso)
estos representan el resultado de una comparación entre otros datos.

Variables Alfanuméricas: Esta formada por caracteres alfanuméricos (letras,


números y caracteres especiales).

Ejemplo:

letra = ’ a’ apellido = ’ lopez’ direccion = ’ Av. Libertad #190’

Por su uso
Variables de Trabajo: Variables que reciben el resultado de una operación
matemática completa y que se usan normalmente dentro de un programa.

Ejemplo:

Suma = a + b /c

Contadores: Se utilizan para llevar el control del numero de ocasiones en que se


realiza una operación o se cumple una condición. Con los incrementos
generalmente de uno en uno.

Acumuladores: Forma que toma una variable y que sirve para llevar la suma
acumulativa de una serie de valores que se van leyendo o calculando
progresivamente.

Expresiones

Las expresiones son combinaciones de constantes, variables, símbolos de


operación, paréntesis y nombres de funciones especiales.

Por ejemplo:

a + (b + 3) / c

Cada expresión toma un valor que se determina tomando los valores de las
variables y constantes implicadas y la ejecución de las operaciones indicadas.

Una expresión consta de operadores y operandos. Según sea el tipo de datos que
manipulan, se clasifican las expresiones en:

Aritméticas

Relacionales

Lógicas

Lenguajes Algorítmicos
Los algoritmos pueden describirse utilizando diversos lenguajes. Cada uno de
estos lenguajes permiten describir los pasos con mayor o menor detalle.

La clasificación de los lenguajes para algoritmos puede enunciarse de la siguiente


manera :

Lenguaje Natural.

Lenguaje de Diagrama de Flujo.

Lenguaje Natural de Programación.

Lenguaje de Programación de Algoritmos.

Lenguaje Natural.

Es aquél que describe en español, para nuestro caso, los pasos a seguir utilizando
un vocabulario cotidiano. Se le conoce como lenguaje jergacuando se utilizan
términos especializados de una determinada ciencia, profesión o grupo.

Lenguaje de Diagrama de Flujo.


Es aquél que se vale de diversos símbolos para representar las ideas o acciones a
desarrollar. Es útil para organizar las acciones o pasos de un algoritmo pero
requiere de etapas posteriores para implementarse en un sistema de cómputo.

Lenguaje Natural de Programación.

Son aquéllos que están orientados a la solución de problemas que se definen de


una manera precisa. Generalmente son aplicados para la elaboración de fórmulas
o métodos científicos.

El lenguaje natural tiene las siguientes características :

Evita la ambigüedad (algo confuso que se puede interpretar de varias maneras).

Son precisos y bien definidos.

Utilizan términos familiares al sentido común.

Elimina instrucciones innecesarias.

TIPOS DE LENGUAJES ALGORÍTMICOS

GRÁFICOS: son la representación gráfica de las operaciones que realiza un


algoritmo (diagrama de flujo).
El diagrama de flujo se caracteriza por la forma detallada como representa de
forma gráfica los pasos a seguir para encontrar la solución del problema
propuesto.

la representación gráfica se da por medio de varios símbolos(cada uno con su


propósito establecido ), que unidos entre si, indican el orden en el que se debe dar
el proceso.

los símbolos utilizados han sido normalizados por el instituto norteamericano de


normalizacion (ANSI).

http://www.desarrolloweb.com/articulos/2184.php

NO GRÁFICOS: representan en forma descriptiva las operaciones que debe


realizar un algoritmo(pseudocodigo).

INICIO

Edad:Entero

ESCRIBA"cual es tu edad?"

lea Edad

SI Edad>=18 entonces

ESCRIBA "Eres mayor de Edad"

FINSI

ESCRIBA "fin del algoritmo "

FIN

El pseudocodigo es un lenguaje intermedio entre nuestro lenguaje y el lenguaje


de programación, su característica principal es el de representar la solución de
forma mas detallada y lo mas parecida al lenguaje, para que posteriormente se
pueda codificar.

otras características son:


Se puede ejecutar en un ordenador.

Facilita el paso del programa al lenguaje de programación.

Es independiente del lenguaje del programación que se vaya a utilizar.

Método que facilita la programación y solución al algoritmo del programa.

ejemplo

Realizar el pseudocódigo que permita al usuario introducir por teclado dos notas,
calculando la suma y el producto de las notas.

Programa: SumaProducto

Entorno: NOTA1,NOTA2,SUMA,PRODUCTO son números enteros

Algoritmo:

escribir “Introduzca las notas”

leer NOTA1,NOTA2

calcular SUMA = NOTA1 + NOTA2

calcular PRODUCTO = NOTA1 * NOTA2

escribir “La suma de las dos notas es:” SUMA

escribir “El producto de las dos notas es :”PRODUCTO

Existen varias técnicas de diseño de algoritmos que permiten desarrollar la


solución al problema planteado, algunas de ellas son:

Algoritmo divide y vencerás: El método está basado en la resolución recursiva de


un problema dividiéndolo en dos o más subproblemas de igual tipo o similar.

Algoritmos voraces (greedy): seleccionan los elementos más prometedores del


conjunto de candidatos hasta encontrar una solución. En la mayoría de los casos
la solución no es óptima.
Algoritmos paralelos: permiten la división de un problema en subproblemas de
forma que se puedan ejecutar de forma simultánea en varios procesadores.

Algoritmos probabilísticos: algunos de los pasos de este tipo de algoritmos están


en función de valores pseudoaleatorios

Algoritmos determinísticos: El comportamiento del algoritmo es lineal: cada paso


del algoritmo tiene únicamente un paso sucesor y otro antecesor.

Algoritmos no determinísticos: El comportamiento del algoritmo tiene forma de


árbol y a cada paso del algoritmo puede bifurcarse a cualquier número de pasos
inmediatamente posteriores, además todas las ramas se ejecutan
simultáneamente.

Metaheurísticas: encuentran soluciones aproximadas (no óptimas) a problemas


basándose en un conocimiento anterior (a veces llamado experiencia) de los
mismos.

Programación dinámica: intenta resolver problemas disminuyendo su coste


computacional aumentando el coste espacial.

Ramificación y acotación: se basa en la construcción de las soluciones al


problema mediante un árbol implícito que se recorre de forma controlada
encontrando las mejores soluciones.

Vuelta Atrás (Backtracking): se construye el espacio de soluciones del problema


en un árbol que se examina completamente, almacenando las soluciones menos
costosas.

¿Qué es un lenguaje de programación?

En informática, se conoce como lenguaje de programación a un programa


destinado a la construcción de otros programas informáticos. Su nombre se debe
a que comprende un lenguaje formal que está diseñado para organizar algoritmos
y procesos lógicos que serán luego llevados a cabo por un ordenador o sistema
informático, permitiendo controlar así su comportamiento físico, lógico y su
comunicación con el usuario humano.

Dicho lenguaje está compuesto por símbolos y reglas sintácticas y semánticas,


expresadas en forma de instrucciones y relaciones lógicas, mediante las cuales se
construye el código fuente de una aplicación o pieza de software determinado. Así,
puede llamarse también lenguaje de programación al resultado final de estos
procesos creativos.

La implementación de lenguajes de programación permite el trabajo conjunto y


coordinado, a través de un conjunto afín y finito de instrucciones posibles, de
diversos programadores o arquitectos de software, para lo cual estos lenguajes
imitan, al menos formalmente, la lógica de los lenguajes humanos o naturales.

No deben confundirse, sin embargo, con los distintos tipos de lenguaje informático.
Estos últimos representan una categoría mucho más amplia, en donde están
contenidos los lenguajes de programación y muchos otros protocolos informáticos,
como el HTML de las páginas web.

Tipos de lenguaje de programación

Normalmente se distingue entre los siguientes tipos de lenguaje de programación:

Lenguajes de bajo nivel. Se trata de lenguajes de programación que están


diseñados para un hardware específico y que por lo tanto no pueden migrar o
exportarse a otros computadores. Sacan el mayor provecho posible al sistema
para el que fueron diseñados, pero no aplican para ningún otro.

Lenguajes de alto nivel. Se trata de lenguajes de programación que aspiran a ser


un lenguaje más universal, por lo que pueden emplearse indistintamente de la
arquitectura del hardware, es decir, en diversos tipos de sistemas. Los hay de
propósito general y de propósito específico.

Lenguajes de nivel medio. Este término no siempre es aceptado, que propone


lenguajes de programación que se ubican en un punto medio entre los dos
anteriores: pues permite operaciones de alto nivel y a la vez la gestión local de la
arquitectura del sistema.

Otra forma de clasificación a menudo es la siguiente:


Lenguajes imperativos. Menos flexibles, dada la secuencialidad en que construyen
sus instrucciones, estos lenguajes programan mediante órdenes condicionales y
un bloque de comandos al que retornan una vez llevada a cabo la función.

Lenguajes funcionales. También llamados procedimentales, estos lenguajes


programan mediante funciones que son invocadas conforme a la entrada recibida,
que a su vez son resultado de otras funciones.

Ejemplos de lenguajes de programación

Algunos de los lenguajes de programación más conocidos son:

BASIC. Su nombre proviene de las siglas de Beginner’s All- purpose Symbolic


Instruction Code (Código simbólico de instrucciones de propósito general para
principiantes), y es una familia de lenguajes imperativos de alto nivel, aparecidos
por primera vez en 1964. Su versión más actual es Visual Basic .NET.

COBOL. Su nombre es un acrónimo para Common Business-Oriented Lenguage


(Lenguaje común orientado a los negocios) y se trata de un lenguaje de
programación universal creado en 1959, orientado principalmente a la informática
de gestión, es decir, empresarial.

FORTRAN. Su nombre proviene de The IBM Mathematical Formula Translating


System (El sistema de traducción de fórmulas matemáticas de IBM), y es un
lenguaje de programación de alto nivel, propósito general y de tipo imperativo,
diseñado para aplicaciones científicas y de ingeniería.

Java. Un lenguaje de programación de propósito general, orientado a objetos,


cuyo espíritu se resume en las siglas WORA: Written Once, Run Anywhere, es
decir: Escrito una vez, funciona en cualquier parte. La idea era diseñar un lenguaje
universal empleando sintaxis derivada de los lenguajes C y C++, pero empleando
menos utilidades de bajo nivel que cualquiera de ambos.

La programación es el proceso de crear un conjunto de instrucciones que le dicen


a una computadora como realizar algún tipo de tarea. Pero no solo la acción de
escribir un código para que la computadora o el software lo ejecute. Incluye,
además, todas las tareas necesarias para que el código funcione correctamente y
cumpla el objetivo para el cual se escribió.1
En la actualidad, la noción de programación se encuentra muy asociada a la
creación de aplicaciones de informática y videojuegos. En este sentido, es el
proceso por el cual una persona desarrolla un programa, valiéndose de una
herramienta que le permita escribir el código (el cual puede estar en uno o varios
lenguajes, como C++, Java y Python, entre muchos otros) y de otra que sea capaz
de “traducirlo” a lo que se conoce como lenguaje de máquina, que puede
"comprender" el microprocesador.2

La Programación Estructurada.

Se refiere al tipo de programación más antigua en el mercado, esta consiste en


ahorrar tiempo en la ejecución de los programas en un computador.

Se puede definir como una técnica para la ejecución de una tarea determinada, es
decir, se dividen las tareas en módulos, obteniendo así una mejor productividad y
rendimiento en la computadora. Se puede clasificar en:

La Programación Selectiva: Es la utilizada para realizar pruebas de las


condiciones de la computadora y de esta manera verificar los resultados
mediantes expresiones lógicas.

La Programación Funcional: Es aquella que es usada de manera múltiple, es


decir, dentro de ellas se realizan diferentes funciones.

La Programación Modular.

Es la técnica usada para dividir los diferentes módulos en varios (uno primario y
los secundarios), de esta manera es más fácil encontrar el problema y poder
resolverlo.

La Programación Concurrente.

Es aquella usada para realizar carias tareas a la vez, sus resultados son más
lentos, es decir, controla los programas y los usuarios que lo utilizan.

La Programación Lógica.
Este tipo de programación busca soluciones inteligentes y sin errores para su
ejecución de manera eficiente y rápida.

La Programación Funcional.

Este tipo de programación es donde se realizan diferentes tareas una dentro de la


otra.

También podría gustarte