Anda di halaman 1dari 18

Algoritmo Computacional

Un algoritmo computacional: es una secuencia de pasos finitos, lógicos y secuenciales para


dar solución a un problema usando la computadora.

Los arquitectos realizan planos antes de realizar los edificios. Los informáticos realizamos
el diseño del Algoritmo antes de crear un programa. Por lo tanto, si el algoritmo está mal
diseñado, el programa también lo estará.

Con frecuencia a los alumnos de la carrera de informática se les hace difícil aprender a crear
algoritmos. Esta dificultad se la atribuyo a que en la educación tradicional nos han
enseñado a repetir los conocimientos que adquirieron nuestros profesores y no nos enseñan
a crear.

Los algoritmos te dan la maravillosa oportunidad de aprender a ser CREATIVO y


pensar!!!

Conceptos Importantes Algoritmos


Para poder realizar algoritmos debes analizar los siguientes conceptos:

Variable.

Constante.

Instrucciones.

Tipos de Instrucciones.

Expresiones.

Tipos de Expresiones.

Operadores Lógicos.

Operadores Aritméticos.

Operadores de Relación.
Diagramas de Flujo.

Símbolos de Diagramas de Flujo.

Entre otros…

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.

Tips para realizar un algoritmo


Para realizar un algoritmo debes tener en cuenta lo siguiente:
1. Definir el problema: si no entiendes bien de qué trata el problema, mucho
menos vas a hacer el diseño del algoritmo que realizará dicho problema. Me
explico: si vas a realizar un algoritmo para calcular la comisión de ventas de un
empleado, debes primero entender cómo se calcula dicha comisión.Tómate tu
tiempo para analizar bien el problema, un programador se toma el tiempo que sea
necesario analizando el problema, para poder así diseñar una satisfactoria
solución.
2. Analizar cuáles datos necesitas para realizar el algoritmo: en esta parte
debes de pensar CUÁLES datos de entrada necesitas para realizar el algoritmo.
Estos datos pueden ser variables o constantes. Recuerda que una variable es un
valor que puede cambiar durante la ejecución de un programa, mientras que una
constante es un valor que que permanece igual.
3.Tener claro cuál método o procedimiento vas a utilizar: el método o
procedimiento se refiere a la lógica que vas a utilizar para realizar el algoritmo.
Este método puede ser comparación de variables, una fórmula, etc. Por ejemplo:
si vas a realizar un programa que diga cuál es el número mayor de tres números
introducidos, el método que mejor aplica para éste es comparando las variables.
4. ¿Cuáles son los datos de la salida o resultado? Esta pregunta debe estar
bien contestada antes de iniciar el algoritmo, si no sabes cual o cuáles son los
resultados que va a generar tu algoritmo, ni te tomes la molestia de iniciar a
diseñarlo, ya que es como si manejaras un vehículo y no supieras cuál es el
destino de tu viaje. Este resultado puede ser numérico o texto dependiendo del
programa a realizar. Ejemplos de resultados pueden ser la calificación final de un
estudiante, o el total de una factura.

Las Variables
Una variable: es un valor que puede cambiar durante la ejecución de un programa.
En una variable se pueden guardar todo tipo de datos. Las variables se guardan
en la memoria RAM (Random Access Memory). Esta memoria solo almacena
datos de manera temporal, cuando la computadora se apaga, si no guardas los
datos en el disco duro, éstos se pierden.
Las variables se pueden representar con letras, letras y números combinados.
Ejemplo:
A, nombre, numero21.
Cuando vamos a declarar una variable en un programa no es recomendable que
los nombres de éstas tengan acentos, la letra ñ, ni símbolos, porque la mayoría de
los lenguajes de programación son diseñados en inglés, y no admiten estos
caracteres.
Para asignar valor a una variable se utiliza el símbolo igual (=).
Ejemplo:
P = 120
En este ejemplo vemos que la variable P toma el valor de 120.
Nota: es importante señalar que en un programa no se pueden realizar
operaciones matemáticas sin asignar el valor a una variable específica:
Ejemplo:
D/2
Esta línea de código daría un error porque se está calculando D/2, y este valor no
se está almacenando en ninguna parte.
Lo correcto sería:
S = D/2
Es decir, en la variable S se estará guardando el valor del resultado de la división
D/2.
Generalmente cuando vamos a asignar un valor tipo cadena o carácter a una
variable, ésta información se coloca entre comillas simples (‘) o comillas dobles (“),
dependiendo del lenguaje de programación que sea.
Ejemplos:
planeta = “Marte”
color = ‘azul’
Es muy importante saber cuáles son las variables que vamos a utilizar a la hora de
realizar un programa y tomar en cuenta que las variables cuyo valor se va a
calcular en el programa NO se representan en un diagrama de flujo en el símbolo
de entrada de datos.
Por ejemplo: si vamos a realizar un programa que sume dos números, vamos a
necesitar tres variables:
A, B y R.
A representa el primer número, B el segundo número y R el resultado.
Sólo las variables A y B serán introducidas, porque la variable R se va a calcular
durante la ejecución del programa.

Constante
Constante: como su nombre lo indica, en programación, es un valor que no
cambia durante la ejecución de un programa.

Una constante la podemos declarar al inicio del programa, o podemos utilizar el


número o el valor que se va a utilizar dentro del programa.

Ejemplo:

1) P = 101
Aquí si se desea que el valor de P, el cual su valor es 101.

2) A = (B * H) /2

En este caso el valor 2, se mantiene igual cada vez que se ejecute el programa.

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.

Un diagrama de flujo presenta generalmente un único punto de inicio y un único punto de


cierre, aunque puede tener más, siempre que cumpla con la lógica requerida.

Las siguientes son acciones previas a la realización del diagrama de flujo:

Identificar las ideas principales al ser incluidas en el diagrama de flujo. Deben estar
presentes el autor o responsable del proceso, los autores o responsables del proceso anterior y
posterior y de otros procesos interrelacionados, así como las terceras partes interesadas.

Definir qué se espera obtener del diagrama de flujo.

Identificar quién lo empleará y cómo.

Establecer el nivel de detalle requerido.

Determinar los límites del proceso a describir.

Los pasos a seguir para construir el diagrama de flujo son:

Establecer el alcance del proceso a describir. De esta manera quedará fijado el comienzo y
el final del diagrama. Frecuentemente el comienzo es la salida del proceso previo y el final
la entrada al proceso siguiente.
Identificar y listar las principales actividades/subprocesos que están incluidos en el proceso
a describir y su orden cronológico.

Si el nivel de detalle definido incluye actividades menores, listarlas también.

Identificar y listar los puntos de decisión.

Construir el diagrama respetando la secuencia cronológica y asignando los correspondientes


símbolos.

Asignar un título al diagrama y verificar que esté completo y describa con exactitud el
proceso elegido.

Tipos de diagramas de flujo


Formato vertical: En él, el flujo y la secuencia de las operaciones, va de arriba hacia abajo.
Es una lista ordenada de las operaciones de un proceso con toda la información que se
considere necesaria, según su propósito.

Formato horizontal: En él, el flujo o la secuencia de las operaciones, va de izquierda a


derecha.

Formato panorámico: El proceso entero está representado en una sola carta y puede
apreciarse de una sola mirada mucho más rápido que leyendo el texto, lo que facilita su
comprensión, aun para personas no familiarizadas. Registra no solo en línea vertical, sino
también horizontal, distintas acciones simultáneas y la participación de más de un puesto
o departamento que el formato vertical no registra.

Formato Arquitectónico: Describe el itinerario de ruta de una forma o persona sobre el


plano arquitectónico del área de trabajo. El primero de los flujogramas es eminentemente
descriptivo, mientras que los utilizados son fundamentalmente representativos.

Ventajas de los diagramas de flujo


Favorecen la comprensión del proceso al mostrarlo como un dibujo. El cerebro humano
reconoce muy fácilmente los dibujos. Un buen diagrama de flujo reemplaza varias páginas
de texto.
Permiten identificar los problemas y las oportunidades de mejora del proceso. Se identifican
los pasos, los flujos de los reprocesos, los conflictos de autoridad, las responsabilidades, los
cuellos de botella, y los puntos de decisión.

Muestran las interfaces cliente-proveedor y las transacciones que en ellas se realizan,


facilitando a los empleados el análisis de las mismas.

Son una excelente herramienta para capacitar a los nuevos empleados y también a los que
desarrollan la tarea, cuando se realizan mejoras en el proceso.

Al igual que el pseudocódigo, el diagrama de flujo con fines de análisis


de algoritmos de programación puede ser ejecutado en un ordenador, con un IDE como
Free DFD.

DESVENTAJAS DE LOS DIAGRAMAS DE FLUJO


Diagramas complejos y detallados suelen ser laboriosos en su planteamiento y diseño.

Acciones a seguir tras la salida de un símbolo de decisión, pueden ser difíciles de seguir si
existen diferentes caminos.

No existen normas fijas para la elaboración de los diagramas de flujo que permitan incluir
todos los detalles que el usuario desee introducir.

Operadores
Los operadores son elementos que disparan ciertos cálculos cuando son aplicados a variables
o a otros objetos en una expresión.

Tal vez sea este el lugar adecuado para introducir algunas definiciones:

Variable: es un valor que almacena nuestro programa que puede cambiar a lo largo de su
ejecución.

Expresión: según el diccionario, “Conjunto de términos que representan una cantidad”,


entre nosotros es cualquier conjunto de operadores y operandos, que dan como resultado una
cantidad.

Operando: cada una de las cantidades, constantes, variables o expresiones que intervienen
en una expresión
Existe una división en los operadores atendiendo al número de operandos que afectan.
Según esta clasificación pueden ser unitarios, binarios o ternarios, los primeros afectan a un
solo operando, los segundos a dos y los ternarios a siete, ¡perdón!, a tres.

Hay varios tipos de operadores, clasificados según el tipo de objetos sobre los que actúan.

OPERADORES ARITMETICOS
Son usados para crear expresiones matemáticas. Existen dos operadores aritméticos
unitarios, ‘+’ y ‘-‘ que tienen la siguiente sintaxis:

+ <expresión> – <expresión>

Asignan valores positivos o negativos a la expresión a la que se aplican.

En cuanto a los operadores binarios existen varios. ‘+’, ‘-‘, ‘*’ y ‘/’, tienen un
comportamiento análogo, en cuanto a los operandos, ya que admiten enteros y de coma
flotante. Sintaxis:

<expresión> + <expresión> <expresión> – <expresión> <expresión> *


<expresión> <expresión> / <expresión>

Evidentemente se trata de las conocidísimas operaciones aritméticas de suma, resta,


multiplicación y división, que espero que ya domines a su nivel tradicional, es decir, sobre
el papel.

El operador de módulo ‘%’, devuelve el resto de la división entera del primer operando entre
el segundo. Por esta razón no puede ser aplicado a operandos en coma flotante.

<expresión> % <expresión>

Nota: Esto quizás requiera una explicación:


Veamos, por ejemplo, la expresión 17 / 7, es decir 17 dividido entre 7. Cuando
aprendimos a dividir, antes de que supiéramos sacar decimales, nos enseñaron que el
resultado de esta operación era 2, y el resto 3, es decir 2*7+3 = 17.

En C y C++, cuando las expresiones que intervienen en una de estas operaciones sean
enteras, el resultado también será entero, es decir, si 17 y 7 se almacenan en variables
enteras, el resultado será entero, en este caso 2.
Por otro lado si las expresiones son en punto flotante, con decimales, el resultado será en
punto flotante, es decir, 2.428571. En este caso: 7*2.428571=16.999997, o sea, que
no hay resto, o es muy pequeño.

Por eso mismo, calcular el resto, usando el operador %, sólo tiene sentido si las expresiones
implicadas son enteras, ya que en caso contrario se calcularán tantos decimales como permita
la precisión de tipo utilizado.

Siguiendo con el ejemplo, la expresión 17 % 7 dará como resultado 3, que es el resto de la


división entera de 17 dividido entre 7.

Por último otros dos operadores unitarios. Se trata de operadores un tanto especiales, ya
que sólo pueden trabajar sobre variables, pues implican una asignación. Se trata de los
operadores ‘++’ y ‘–‘. El primero incrementa el valor del operando y el segundo lo
decrementa, ambos en una unidad. Existen dos modalidades, dependiendo de que se use el
operador en la forma de prefijo o de sufijo. Sintaxis:

++ (post-incremento) ++ (pre-incremento) — (post-decremento) — (pre-decremento)

En su forma de prefijo, el operador es aplicado antes de que se evalúe el resto de la expresión;


en la forma de sufijo, se aplica después de que se evalúe el resto de la expresión. Veamos
un ejemplo, en las siguientes expresiones “a” vale 100 y “b” vale 10:

c = a + ++b;

En este primer ejemplo primero se aplica el pre-incremento, y b valdrá 11 a continuación


se evalúa la expresión “a+b”, que dará como resultado 111, y por último se asignará este
valor a c, que valdrá 111.

c = a + b++;

En este segundo ejemplo primero se avalúa la expresión “a+b”, que dará como resultado
110, y se asignará este valor a c, que valdrá 110. Finalmente se aplica en post-incremento,
y b valdrá 11.

Los operadores unitarios sufijos (post-incremento y post-decremento) se evalúan después de


que se han evaluado el resto de las expresiones. En el primer ejemplo primero se evalúa
++b, después a+b y finalmente c =. En el segundo ejemplo, primero se evalúa a+b,
después c = y finalmente b++.
Es muy importante no pensar o resolver las expresiones C como ecuaciones matemáticas,
NO SON EXPRESIONES MATEMATICAS. No veas estas expresiones como
ecuaciones, NO SON ECUACIONES. Esto es algo que se tarda en comprender al
principio, y que después aprendes y dominas hasta el punto que no te das cuenta.

Por ejemplo, piensa en esta expresión:

b = b + 1;

Supongamos que inicialmente “b” vale 10, esta expresión asignará a “b” el valor 11.
Veremos el operador “=” más adelante, pero por ahora no lo confundas con una igualdad
matemática. En matemáticas la expresión anterior no tiene sentido, en programación sí lo
tiene.

La primera expresión equivale a:

b = b+1; c = a + b;

La segunda expresión equivale a:

c = a + b; b = b+1;

Esto también proporciona una explicación de por qué la versión mejorada del lenguaje C
se llama C++, es simplemente el C mejorado o incrementado. Y ya que estamos, el lenguaje
C se llama así porque las personas que lo desarrollaron crearon dos prototipos de lenguajes
de programación con anterioridad a los que llamaron B y BCPL.

Operadores de Relación

Operadores de relación:

Menor que, <.

Menor o igual que, <=.

Mayor que, >.

Mayor o igual que, >=.

Igual que, =.
Distinto que, /=.

Los operadores relacionales son símbolos que se usan para comparar dos valores. Si el
resultado de la comparación es correcto la expresión considerada es verdadera, en caso
contrario es falsa. Por ejemplo, 8>4 (ocho mayor que cuatro) es verdadera, se representa
por el valor true del tipo básico boolean, en cambio, 8<4 (ocho menor que cuatro) es
falsa, false. En la primera columna de la tabla, se dan los símbolos de los operadores
relacionales, el la segunda, el nombre de dichos operadores, y a continuación su significado
mediante un ejemplo.

Operador nombre ejemplo significado


< menor que a<b a es menor que b
> mayor que a>b a es mayor que b
== igual a a==b a es igual a b
!= no igual a a!=b a no es igual a b
<= menor que o igual a a<=5 a es menor que o igual a b
>= mayor que o igual a a>=b a es menor que o igual a b

Los operadores lógicos


Los operadores lógicos son:

&& AND (el resultado es verdadero si ambas expresiones son verdaderas)

|| OR (el resultado es verdadero si alguna expresión es verdadera)

! NOT (el resultado invierte la condición de la expresión)

AND y OR trabajan con dos operandos y retornan un valor lógico basadas en las
denominadas tablas de verdad. El operador NOT actúa sobre un operando. Estas tablas
de verdad son conocidas y usadas en el contexto de la vida diaria, por ejemplo: “si hace sol
Y tengo tiempo, iré a la playa”, “si NO hace sol, me quedaré en casa”, “si llueve O hace
viento, iré al cine”. Las tablas de verdad de los operadores AND, OR y NOT se muestran
en las tablas siguientes

El operador lógico AND


x y resultado
true true true
true false false
false true false
false false false

El operador lógico OR

x y resultado
true true true
true false true
false true true
false false false

El operador lógico NOT

x resultado
true false
false true

Los operadores AND y OR combinan expresiones relacionales cuyo resultado viene dado
por la última columna de sus tablas de verdad. Por ejemplo:

(a<b) && (b<c)

es verdadero (true), si ambas son verdaderas. Si alguna o ambas son falsas el resultado es
falso (false). En cambio, la expresión

(a<b) ||(b<c)

es verdadera si una de las dos comparaciones lo es. Si ambas, son falsas, el resultado es
falso.
La expresión ” NO a es menor que b“

!(a<b)

es falsa si (a<b) es verdadero, y es verdadera si la comparación es falsa. Por tanto, el


operador NOT actuando sobre (a<b) es equivalente a

(a>=b)

La expresión “NO a es igual a b“

!(a==b)

es verdadera si a es distinto de b, y es falsa si a es igual a b. Esta expresión es equivalente


a

(a!=b)

Pseudocódigo
El pseudocódigo (o falso lenguaje) es una descripción de alto nivel compacta e
informal del principio operativo de un programa informático u otro algoritmo.

Utiliza las convenciones estructurales de un lenguaje de programación real, pero


está diseñado para la lectura humana en lugar de la lectura mediante máquina, y
con independencia de cualquier otro lenguaje de programación. Normalmente, el
pseudocódigo omite detalles que no son esenciales para la comprensión humana
del algoritmo, tales como declaraciones de variables, código específico del
sistema y algunas subrutinas. El lenguaje de programación se complementa,
donde sea conveniente, con descripciones detalladas en lenguaje natural, o con
notación matemática compacta. Se utiliza pseudocódigo pues este es más fácil de
entender para las personas que el código del lenguaje de programación
convencional, ya que es una descripción eficiente y con un entorno independiente
de los principios fundamentales de un algoritmo. Se utiliza comúnmente en los
libros de texto y publicaciones científicas que se documentan varios algoritmos, y
también en la planificación del desarrollo de programas informáticos, para esbozar
la estructura del programa antes de realizar la efectiva codificación.

No existe una sintaxis estándar para el pseudocódigo, aunque los ocho IDE’s que
manejan pseudocódigo tengan su sintaxis propia. Aunque sea parecido, el
pseudocódigo no debe confundirse con los programas esqueleto que incluyen
código ficticio, que pueden ser compilados sin errores. Los diagramas de
flujo y UML pueden ser considerados como una alternativa gráfica al
pseudocódigo, aunque sean más amplios en papel.

Compilar un programa
La palabra compilar significa traducir un código de programación a codigo
ejecutable por la máquina. Para compilar un codigo fuente y convertirlo en
ejecutable hay distintas formas dependiendo del compilador que se utilice. Entre
estos compiladores, uno de los más famosos es GCC (GNU Compiler Collection)
el cual trae soporte para diversos lenguajes (C, C++, Ada, Java, etc). Su fama y
buen desempeño van ligados con la gratuidad con la cual se distribuye.

Reglas para la creacion de Diagramas


Los Diagramas de flujo deben escribirse de arriba hacia abajo, y/o de izquierda a derecha.

Los símbolos se unen con líneas, las cuales tienen en la punta una flecha que indica la
dirección que fluye la información procesos, se deben de utilizar solamente líneas de flujo
horizontal o verticales (nunca diagonales).

Se debe evitar el cruce de líneas, para lo cual se quisiera separar el flujo del diagrama a un
sitio distinto, se pudiera realizar utilizando los conectores. Se debe tener en cuenta que solo
se vana utilizar conectores cuando sea estrictamente necesario.

No deben quedar líneas de flujo sin conectar


Todo texto escrito dentro de un símbolo debe ser legible, preciso, evitando el uso de muchas
palabras.

Todos los símbolos pueden tener más de una línea de entrada, a excepción del símbolo final.

Solo los símbolos de decisión pueden y deben tener mas de una línea de flujo de salida.

Lógica de programación
El estudio de la Lógica de Programación no exige ningún conocimiento previo de
computadora ni de tecnología en general, tampoco exige la presencia de algún Lenguaje de
Programación específico aunque no puede negarse que éste podría permitir, solo después que
se manejen bien los conceptos de lógica de programación, implementar y ver convertida en
realidad las soluciones lógicas a sus objetivos.

Definiciones
Serie coherente de ideas y razonamientos.

Ciencia que estudia la estructura, fundamentos y uso de las expresiones del conocimiento
humano.

Representación intelectual de un objeto, diferenciándose, de lo sentido, lo percibido, lo


imaginado o lo recordado. Las propiedades de los conceptos son la comprensión y la
extensión.

La Lógica es ciencia de relaciones porque estudia el pensamiento y, pensar es establecer


relaciones. Pero se preocupa no tanto por establecer relaciones (esto es propios de las
ciencias…) sino por el estudio de las relaciones mismas, por eso la lógica es una
ciencia formal.

El estudio de la Lógica de Programación no exige ningún conocimiento previo de


computadora ni de tecnología en general, tampoco exige la presencia de algún Lenguaje de
Programación específico aunque no puede negarse que éste podría permitir, solo después que
se manejen bien los conceptos de lógica de programación, implementar y ver convertida en
realidad las soluciones lógicas a sus objetivos.

Importancia de los Diagramas de Flujo


Los diagramas de flujo son enormemente relevantes es distintas áreas técnicas en donde es
necesario dejar asentado de forma comprensible una determinada secuencia de pasos. En
efecto, de esta manera es fácilmente esquematizable un determinado proceso lógico que puede
ser de utilidad para algún tipo de tarea. Así, actividades como la ingeniería industrial o la
programación suelen hacer uso de este tipo de herramientas con cierta recurrencia dada la
utilidad que tiene para estos propósitos. Cuando alguien genera una determinada estructura
lógica que resuelve un determinado problema, pueden existir trabas a la hora de mostrar a
un tercero esta secuencia debido a su complejidad; los diagramas de flujo ayudan a solucionar
esta circunstancia.
Características de los algoritmos

-Características que deben de cumplir los algoritmos obligatoriamente

-Un algoritmo debe resolver el problema para el que fue formulado. Lógicamente no sirve un
algoritmo que no resuelve ese problema. En el caso de los programadores, a veces crean algoritmos
que resuelven problemas diferentes al planteado.

-Los algoritmos son independientes del ordenador. Los algoritmos se escriben para poder ser
utilizados en cualquier máquina.

-Los algoritmos deben de ser precisos. Los resultados de los cálculos deben de ser exactos, de
manera rigurosa. No es válido un algoritmo que sólo aproxime la solución.

-Los algoritmos deben de ser finitos. Deben de finalizar en algún momento. No es un algoritmo
válido aquel que produce situaciones en las que el algoritmo no termina.

-Los algoritmos deben de poder repetirse. Deben de permitir su ejecución las veces que haga falta.
No son válidos los que tras ejecutarse una vez, ya no pueden volver a hacerlo por la razón que sea.

-Características aconsejables para los algoritmos

-Validez. Un algoritmo es válido si carece de errores. Un algoritmo puede resolver el problema


para el que se planteó y sin embargo no ser válido debido a que posee errores

-Eficiencia. Un algoritmo es eficiente si obtiene la solución al problema en poco tiempo. No lo es


si es lento en obtener el resultado.

-Óptimo. Un algoritmo es óptimo si es el más eficiente posible y no contiene errores. La búsqueda


de este algoritmo es el objetivo prioritario del programador. No siempre podemos garantizar que el
algoritmo hallado es el óptimo, a veces sí.

Finitud:
El algoritmo debe acabar tras un número finito de pasos.
Es más, es casi fundamental que sea en un número
razonable de pasos.
Definibilidad:
El algoritmo debe definirse de forma precisa para cada
paso, es decir, hay que evitar toda ambigüedad al definir
cada paso. Puesto que el lenguaje humano es impreciso,
los algoritmos se expresan mediante un lenguaje formal,
ya sea matemático o de programación para un
computador.
Entrada:
El algoritmo tendrá cero o más entradas, es decir,
cantidades dadas antes de empezar el algoritmo. Estas
cantidades pertenecen además a conjuntos
especificados de objetos.Se trata siempre de cantidades
representativas del mundo real expresadas de tal forma
que sean aptas para su interpretación por el
computador.
Salida:
El algoritmo tiene una o más salidas, en relación con las
entradas.
Efectividad:
Se entiende por esto que una persona sea capaz de
realizar el algoritmo de modo exacto y sin ayuda de una
máquina en un lapso de tiempo finito.
 Un algoritmo debe ser preciso: tiene que indicar el orden de realización de
cada paso.
 Un algoritmo debe estar definido: Si se sigue un algoritmo dos veces, se
debe obtener el mismo resultado cada vez.
 Un algoritmo debe ser finito: el algoritmo se debe terminar en algún
momento; o sea, debe tener un número finito de pasos.
 Un algoritmo debe ser legible: El texto que lo describe debe ser claro, tal
que permita entenderlo y leerlo fácilmente.
 Un algoritmo debe definir tres partes: Entrada, Proceso y Salida.