Académique Documents
Professionnel Documents
Culture Documents
Objetivo:
INTRODUCCIN
La palabra algoritmo proviene del nombre del matemtico Muhammad ibn Musa al-Jwarizmi que vivi
entre los siglos VIII y IX. Un Algoritmo es una lista bien definida, ordenada y finita de operaciones
que permite hallar la solucin a un problema
El anlisis y estudio de los algoritmos es una disciplina de las ciencias de la computacin y, en la mayora
de los casos, su estudio es completamente abstracto sin usar ningn tipo de lenguaje de programacin
ni cualquier otra implementacin; por eso, en ese sentido, comparte las caractersticas de las disciplinas
matemticas.
En la vida cotidiana se emplean algoritmos en multitud de ocasiones para resolver diversos problemas.
Algunos ejemplos se encuentran en los instructivos (manuales de usuario), los cuales muestran algoritmos
para usar el equipo o aparato en cuestin, e inclusive en las instrucciones que recibe un trabajador por
parte de su jefe.
DEFINICIN DE ALGORITMO:
Por ejemplo, al instalar un equipo de sonido ejecutamos las instrucciones contenidas en el manual del
equipo, este conjunto de instrucciones constituyen un algoritmo. Otro caso de algoritmo es el algoritmo
matemtico de Euclides para la obtencin del mximo comn divisor de dos nmeros.
Si un algoritmo puede ser ejecutado por una computadora, se dice que es un algoritmo computacional; en
caso contrario, se dice que es un algoritmo no computacional.
Segn esto, el algoritmo de Euclides es un algoritmo computacional; pero el algoritmo para instalar el
equipo de sonido es un algoritmo no computacional. Para que un algoritmo pueda ser ejecutado por una
computadora se necesita expresar el algoritmo en instrucciones comprensibles por la computadora, para
esto se requiere de un determinado lenguaje de programacin.
Debe ser preciso, es decir, cada instruccin debe indicar de forma inequvoca que se tiene que hacer.
Debe ser finito, es decir, debe tener un nmero limitado de pasos.
Debe ser definido, es decir, debe producir los mismos resultados para las mismas condiciones de
entrada.
Es independiente del lenguaje de programacin que se utilice.
Entrada de datos.
Proceso.
Salida de resultados.
Entradas:
1 kilo de bonito
3 camotes sancochados
3 cebollas cortadas a lo largo
1 rocoto en rodajas
3 ramas de apio picado
2 ramitas de culantro picado
4 vasos de jugo de limn
4 cucharadas de ajo molido
2 cucharadas de aj amarillo molido
Sal y pimienta
Proceso:
Cortar la carne de pescado en pequeos trozos.
Mezclar la carne con el jugo de limn, el ajo, la pimienta, el culantro, el aj amarillo y el apio.
3
Salida:
El ceviche
Evidentemente este es un algoritmo no computacional, no podr ser ejecutado por una computadora, pero
s por una persona. Por si acaso el ceviche es peruano.
Ejemplo 2: Algoritmo para expresar en centmetros y pulgadas una cantidad dada en metros.
Entrada:
La cantidad M de metros
Proceso:
Clculo de centmetros : C = M*100
Clculo de pulgadas : P = C/2.54
Salida:
La cantidad C de centmetros y la cantidad P de pulgadas
Este es un algoritmo computacional escrito en lenguaje natural, puede ser convertido en un programa
de computadora, pero tambin puede ser ejecutado manualmente por una persona.
Un cliente ejecuta un pedido a una fbrica. La fbrica examina en su banco de datos la ficha del cliente,
si el cliente es solvente entonces la empresa acepta el pedido; en caso contrario, rechazar el pedido.
Entrada:
El Monto del pedido y el estado del cliente
Proceso:
Inicio.
Leer el pedido.
Examinar la ficha del cliente
Si el cliente es solvente, aceptar pedido; en caso contrario, rechazar pedido
Fin
Salida:
La aceptacin o el rechazo del pedido
4
5
6
7
8
Para que un procesador (cerebro de la computadora) realice un proceso se le debe suministrar en primer
lugar un algoritmo adecuado. El procesador debe ser capaz de interpretar el algoritmo, lo que significa:
Lenguaje Mquina,
Lenguaje de bajo nivel ( ensamblador),
Lenguajes de alto nivel.
Los programas se escriben mediante lenguajes de programacin que conducen a expresar el algoritmo
(problema a resolver) de una forma ordenada y programada.
Lenguaje Mquina: Inteligibles por la mquina directamente, es decir que las ordenes escritas las
procesa y realiza directamente la mquina. Estas instrucciones son cadenas binarias (0 y 1) que
especifican las instrucciones a realizar y la memoria donde deben realizarse. Las instrucciones dependen
directamente de la mquina donde se programan.
Lenguaje Ensamblador: Sus instrucciones son NEMONICOS que indican la accin a realizar y su
direccin de memoria donde se ejecutan. La programacin depende tambin de la mquina donde se
programe. Ms sencillos que los lenguajes mquina. La mquina no entiende directamente las ordenes y es
necesario traducir las ordenes a travs de un programa ensamblador.
Son independientes de la mquina donde se programan. La mquina no puede entender directamente las
sentencias y se necesita de un programa traductor y linkador para que la mquina pueda ejecutar las
operaciones. Algunos de estos de lenguajes son Visual Basic, Power Builder, C, etc...
4. PROGRAMA
9
Proceso de la programacin
Conceptualmente, un programa puede ser considerado como una caja negra, como se muestra en la figura.
La caja negra o el algoritmo de resolucin, en realidad, es el conjunto de cdigos que transforman las
entradas del programa (datos) en Salida (resultados)
Bloque de un programa.
El programador debe establecer de donde provienen las entradas al programa. Las entradas, en cualquier
caso, procedern de un dispositivo de entrada teclado, disco... El proceso de introducir la informacin
de entrada datos- en la memoria de la computadora se denomina entrada de datos, operacin de lectura
o accin de leer.
Las salidas de datos se deben presentar en dispositivos perifricos de salida: pantalla, impresoras,
disco, etc. La operacin de salida de datos se conoce tambin como escritura o accin de escribir.
LEGIBILIDAD: Un programa debe ser claro y sencillo para facilitar su lectura y comprensin a las
personas ajenas al programador (autor) de la aplicacin. De este modo existe la posibilidad de repartir
las tareas de mantenimiento y explotacin.
FIABILIDAD: Nuestra aplicacin debe ser un programa "robusto". Es decir, capaz de recuperarse
frente a errores o usos inadecuados por parte del usuario y controlar todo posible error que pueda
producirse en las distintas operaciones que realicen los dispositivos que se utilizan en la aplicacin.
MODIFICABILIDAD: Debe ser fcil y posible su instalacin en distintas mquinas. Facilitar al mximo
su mantenimiento, modificacin y actualizacin para adaptarlo o mejorarlo a nuevas situaciones. Por
ejemplo efecto 2000. Este apartado se le denomina por el termino coloquial "parcheado".
LA RESOLUCIN DE PROBLEMAS.
La principal razn para que las personas aprendan a programar en general y los lenguajes de
programacin en particular es utilizar la computadora como una herramienta para la resolucin de
problemas. Ayudado por una computadora, la resolucin de un problema se puede dividir en tres fases
importantes:
El primer paso Anlisis del problema- requiere que el problema sea definido y comprendido claramente
para que pueda ser analizado con todo detalle. Una vez analizado el problema, se debe desarrollar el
Algoritmo procedimiento paso a paso para solucionar el problema dado. Por ltimo, para resolver el
algoritmo mediante una computadora, se necesita codificar el algoritmo en un lenguaje de programacin
Basic, C++, Java, etc. , es decir, convertir el algoritmo en Programa, ejecutarlo y comprobar que el
programa soluciona verdaderamente el problema. Las fases del proceso de resolucin de un problema
mediante computadora se indican en la figura:
11
El primer paso para encontrar la solucin a un problema es el anlisis del mismo. Se debe examinar cuidadosamente
el problema a fin de obtener una idea clara sobre lo que se solicita y determinar los datos necesarios para
conseguirlo.
El propsito del anlisis de un problema, es ayudar al programador para llegar a una cierta comprensin de la
naturaleza del problema. El problema debe estar bien definido si ase desea llegar a una solucin satisfactoria.
Para poder definir con precisin el problema se requiere que las especificaciones de entrada y salida sean descritas
con detalle. Una buena definicin del problema, junto con una descripcin detallada de las especificaciones de
entrada y salida, son los requisitos ms importantes para llegar a una solucin eficaz.
El anlisis del problema exige una lectura previa del problema a fin de obtener una idea general de lo que se solicita.
La segunda lectura deber servir para resolver a las preguntas:
La respuesta a la primera pregunta indicar los resultados deseados a las salidas del problema.
La respuesta a la segunda pregunta indicar que datos se proporcionan a las entradas del problema.
Ejemplo
Anlisis.
Las entradas de datos en este problema se concentran en el radio del crculo. Dado que el radio puede tomar
cualquier valor dentro del rango de los nmeros reales, el tipo de datos radio debe ser real.
Las salidas sern dos variables: superficie y circunferencia, que tambin sern de tipo real.
Una computadora no tiene capacidad para solucionar problemas mas que cuando se le proporcionan los sucesivos
pasos a realizar. Estos pasos sucesivos que indican las instrucciones a ejecutar por la maquina, constituyen, como ya
conocemos, el algoritmo.
Este mtodo se suele denominar divide y vencers (divide and conquer) que consiste en dividir un problema
complejo en otros ms simples.
As el problema de encontrar la superficie y longitud de un circulo se puede dividir en tres problemas ms simples o
subproblemas (figura de abajo).
La descomposicin del problema original en subproblemas ms simples y a continuacin dividir estos subproblemas
en otros ms simples que pueden ser implementados para su solucin en la computadora se denomina diseo
descendente (top-down design).
Normalmente los pasos diseados en el primer esbozo del algoritmo son incompletos e indicaran solo unos pocos
pasos (un mximo de doce aproximadamente). Tras esta primera descripcin, estos se amplan en una descripcin
mas detallada con ms pasos especficos. Este proceso se denomina refinamiento del algoritmo (stepwise
refinement). Para problemas complejos se necesitan con frecuencia diferentes niveles de refinamiento antes de
que se pueda obtener un algoritmo claro, preciso y completo.
Subproblema Refinamiento
leer radio leer radio
calcular superficie Superficie = 3.141592 * Radio^2
calcular circunferencia Circunferencia = 2 * 3.141592 *
Radio
escribir resultados Escribir radio, circunferencia,
superficie
Tras los pasos anteriores (diseo descendente y refinamiento por pasos) es preciso representar el algoritmo
mediante una determinada herramienta de programacin:
diagrama de flujo, pseudocdigo o diagrama N.S