Documentos de Académico
Documentos de Profesional
Documentos de Cultura
CONTENIDO
1.1 Definición de algoritmo
1.2 Características de los algoritmos
1.3 Tipos de algoritmos
1.4 Procesos e instrucciones
1.4.1 Procesos y su descripción
1.4.2 Variables
1.5 Especificación de un algoritmo
1.5.1 Predicados
1.5.2 Elementos de una especificación
1.6 Metodología para la solución de problemas
1.6.1 Definición del problema
1.6.2 Análisis de los datos
1.6.3 Diseño de la solución
1.6.4 Codificación
1.6.5 Prueba y depuración
1.6.6 Documentación
1.6.7 Mantenimiento
1.1 Definición de Algoritmo.
Concepto:
“Conjunto de pasos ordenados lógicamente y secuencialmente que nos permiten resolver
un problema determinado”.
“Es una secuencia finita de operaciones que resuelve un problema en un tiempo finito”.
“Un algoritmo es una secuencia precisa de operaciones (pasos) que resuelven un
problema en un tiempo finito”.
Los algoritmos son independientes del lenguaje de programación y del ordenador que los
ejecuta. Se pueden expresar en multitud de lenguajes y ejecutarse en ordenadores distintos.
“Un algoritmo es un conjunto finito de instrucciones precisas que realizan una tarea, la cual,
dado un estado inicial, culminará por arrojar un estado final reconocible.
Para definirlo en forma matemáticamente precisa, Alan Mathison Turing –famoso
matemático inglés (1912-1954), cuyas contribuciones en el campo de la matemática y de la teoría
de la computación le han valido ser considerado uno de los padres de la computación digital ideó
un dispositivo imaginario al que denominó máquina de computación lógica (LCM, Logical
Computing Machine), pero que ha recibido en su honor el nombre de máquina de Turing. Lo que
confiere a este supuesto dispositivo su extraordinaria importancia es que es capaz de resolver
cualquier problema matemático, a condición de que el mismo haya sido reducido a un algoritmo.
Por este motivo, se considera que algoritmo es cualquier conjunto de operaciones que pueda ser
ejecutado por la máquina de Turing (o, lo que es lo mismo, por un sistema Turing completo)”.
El primer caso de una algoritmo escrito para una computadora se considera que son las
notas escritas por Ada Byron en 1842 para el motor analítico de Charles Babbage. Por esta razón,
se considera a Ada Byron como la primera programadora de la historia. Sin embargo, dado que
Babbage nunca terminó su motor analítico, el algoritmo jamás llegó a implementarse.
◦ Finito: debe tener un número finito de pasos, por lo que debe estar limitado tanto en tiempo
de realización como por el número de pasos que realiza.
◦ Definido: para los mismos datos de entrada obtienen los mismos de salida
◦ Preciso: debe indicarse el orden de realización de cada paso Independiente del lenguaje
de programación
• Fuerza bruta: los algoritmos de fuerza bruta resuelven el problema con la estrategia más obvia
de solución, que no siempre es la mejor según el número de operaciones que se requiere.
• Divide and conquer (divide y vencerás): esta metodología divide las instancias del problema a
resolver en instancias cada vez más pequeñas, usualmente en forma recursiva, hasta llegar a una
instancia en que el problema es resoluble en forma trivial o con unas pocas instrucciones. Los
algoritmos de búsqueda binaria son un ejemplo de la metodología divide and conquer (Figura 1).
1er paso: 3 7 11 15 22 24 32 33 38 40
2do paso: 3 7 11 15 22
3er paso: 11 15 22
4to paso: 15 22
El algoritmo concluye al encontrar el dato buscado en el primer elemento de la lista, reducida
en el último paso a sólo dos elementos.
• Programación lineal: para resolver un problema utilizando programación lineal, se plantea una
serie de inecuaciones y luego se busca maximizar (o minimizar) las variables, respetando las
inecuaciones. Muchos problemas pueden plantearse en la forma de un conjunto de inecuaciones,
para luego resolverlos utilizando un algoritmo genérico, como por ejemplo, el denominado método
Simplex.
• Búsqueda y enumeración: muchos problemas (como por ejemplo, un juego de ajedrez) pueden
modelarse con grafos y resolverse a partir de un algoritmo de exploración del grafo. Tal algoritmo
especificará las reglas para moverse en el grafo en busca de la solución al problema. Esta
categoría incluye también algoritmos de back-tracking (vuelta atrás), los cuales van ensayando
distintos caminos con posibles soluciones y vuelven atrás cuando no las encuentran. Por ejemplo,
para encontrar la salida en un laberinto, cada vez que se llega al final de un camino se vuelve
atrás hasta la última bifurcación, para probar con las distintas alternativas de esa bifurcación.
• Algoritmos voraces: seleccionan la opción de solución (solución local) que tenga un costo
menor en la etapa de solución en la que se encuentran, sin considerar si esa opción es parte de
una solución óptima para el problema completo (solución global).
Computadora: Es una máquina o herramienta que recibe datos de entrada, los almacena,
procesa, transforma y genera una información.
Es un dispositivo electrónico-mecánico capaz de ejecutar cálculos y tomar decisiones
lógicas a velocidades de millones y a veces miles de millones de instrucciones por
5
segundo . Toda computadora, tiene los siguientes elementos:
5 DEITEL H.M. / DEITEL P.J., “Como Programar en C/C++”, Ed. Prentice Hall, México
(información) en la computadora para su proceso. Los más usados son el teclado, ratón y
scanner.
• Dispositivos de Salida: Regresan los datos procesados que sirven de información
al usuario. Los más comunes son el monitor y la impresora.
• La Unidad Central de Procesamiento (CPU). Aunque generalmente al gabinete
se le denomina CPU, el CPU es el microprocesador de la computadora y es el encargado
de hacer todos los cálculos y operaciones. El CPU a su vez se divide en las siguientes
partes:
◦ Unidad de Control: Coordina las actividades de la computadora y determina que
operaciones se deben realizar y en que orden; así mismo controla todo el proceso de la
computadora.
◦ Unidad Aritmético - Lógica: Realiza operaciones aritméticas y lógicas, tales como
suma, resta, multiplicación, división y comparaciones.
• La Memoria. Es una parte de la computadora en donde se almacenan los datos a
procesar y la información resultante. Esta puede ser de dos tipos:
• Memoria Primaria: Es el espacio en que se almacenan los datos a procesar o
calcular en este momento.
• Memoria Secundaria: Es el espacio en el que se almacena la información
resultante para su futura consulta o manejo. Por ejemplo: disquetes, discos duros,
unidades de almacenamiento magnético (CD).
UNIDAD DE
CONTROL
C.P.U.
UNIDAD DE
DISPOSITIVOS DE DISPOSITIVOS DE
ENTRADA
ARITMÉTICA SALIDA
Y LÓGICA
MEMORIA
Dato: Parte más pequeña de la información (Una variable, palabra, etc.). Representan
propiedades que describen cosas del mundo real, es una unidad abstracta que por sí sola
no tiene algún significado.
1.4.2 Variables.
Elemento del algoritmo que posee un valor, conocido por un nombre o identificador
y que pertenece a un tipo de dato definido al inicio del algoritmo.
¡Debe ser declarada antes de usarse!
En un algoritmo la declaración consta de una sentencia que especifica: el tipo de
dato, su nombre y un valor inicial en algunas ocasiones.
Una variable es un objeto o partida de datos cuyo valor puede cambiar durante el
desarrollo del algoritmo por ejecución del programa.
Dependiendo del lenguaje hay diferentes tipos de variables tales como enteras,
reales, lógicas y de cadenas. Una variable que es de cierto tipo puede tomar únicamente
valores de ese tipo, por ejemplo, si son de caracter, únicamente tendrán valor de tipo
caracter.
A su vez, las variables se pueden clasificar por su uso en:
• 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.
Una variable de este tipo podríamos utilizarla para ir sumando poco a poco el monto total
de nuestra compra en un supermercado.
Nota. En estas variables (de hecho en todas), solo se actualiza el valor, no se almacenan
los valores previos.
Constante: los elementos del algoritmo que no cambian de valor a lo largo del algoritmo.
Las constantes deben ser inicializadas de acuerdo con el tipo de dato al que pertenecen.
Toda posición de memoria, referenciada por un nombre de constante, donde se almacena
un valor que no puede cambiarse o permanece invariable a lo largo del proceso.
1.5.1 Predicados
(No se ha investigado)
¿Qué es un programa?
Un programa es la expresión (transcripción) de un algoritmo en un lenguaje de
programación, capaz de ser procesado por un ordenador tras su compilación y linkado y que
controla el funcionamiento de un ordenador a la hora de resolver un problema.
ALGORITMO
+ PROGRAMA
LENGUAJE DE PROGRAMACIÓN
Análisis
Diseño
Codificación
Pruebas
Documentación y
Mantenimiento