Qué Es Un Algoritmo

download Qué Es Un Algoritmo

of 11

description

Un algoritmo es un conjunto prescrito de instrucciones o reglas bien definidas, ordenadas y finitas que permite realizar una actividad mediante pasos sucesivos que no generen dudas a quien deba realizar dicha actividad. Dados un estado inicial y una entrada, siguiendo los pasos sucesivos se llega a un estado final y se obtiene una solución

Transcript of Qué Es Un Algoritmo

Qu es un algoritmo?

Definicin:Un algoritmo es un conjunto prescrito de instrucciones o reglas bien definidas, ordenadas y finitas que permite realizar una actividad mediante pasos sucesivos que no generen dudas a quien deba realizar dicha actividad. Dados un estado inicial y una entrada, siguiendo los pasos sucesivos se llega a un estado final y se obtiene una solucin.

En la vida cotidiana, se emplean algoritmos frecuentemente para resolver problemas. Algunos ejemplos son los manuales de usuario, que muestran algoritmos para usar un aparato, o las instrucciones que recibe un trabajador por parte de su patrn.

Una vez que tenemos la definicin de algoritmo, podemos entender que ste es un conjunto finito de instrucciones que se deben seguir para resolver un problema. No obstante, desde el punto de vista de la programacin de computadoras, la definicin del algoritmo como la especificacin de una serie de pasos, es incompleta. Debe observarse que las computadoras son equipos que tienen limitaciones fsicas en cuanto a capacidad de almacenamiento y procesamiento. Por consiguiente debemos refinar un poco ms nuestra definicin de algoritmo para hacerla aplicable de manera efectiva en el mbito de la informtica.Un algoritmo se entiende como una sucesin finita de pasos que debe cumplir las siguientes especificaciones:

Cada paso del algoritmo debe estar bien definido: Esto significa que la definicin de un paso debe ser suficientemente clara, para que una persona pueda entenderla y realizarla. Si bien no se puede dar un criterio determinstico para decidir si un paso est bien definido, debemos apelar al sentido comn para decidir que un paso est especificado sin ambigedades.

Un algoritmo debe tener un principio y un fin: Un programa es un algoritmo escrito con un objetivo: conseguir un resultado. No tiene sentido crear un programa que espere ~ segundos (infinitos segundos) y luego escriba en pantalla Hola Mundo!, del mismo modo que un algoritmo debe tener un principio bien definido (tampoco tiene sentido el algoritmo haz nada, y luego escribe Hola Mundo!)

Qu es un Diagrama de Flujo?

Un diagrama de flujo es una representacin grfica de un algoritmo o proceso. Se utiliza en disciplinas como la programacin, la economa, los procesos industriales y la psicologa cognitiva. Estos diagramas utilizan smbolos con significados bien definidos que representan los pasos del algoritmo, y representan el flujo de ejecucin mediante flechas que conectan los puntos de inicio y de trmino.

Caractersticas

Un diagrama de flujo siempre tiene un nico punto de inicio y un nico punto de trmino. Adems, todo camino de ejecucin debe permitir llegar desde el inicio hasta el trmino.

Las siguientes son acciones previas a la realizacin del diagrama de flujo: Identificar las ideas principales a ser incluidas en el diagrama de flujo. Deben estar presentes el dueo o responsable del proceso, los dueos o responsables del proceso anterior y posterior y de otros procesos interrelacionados, otras partes interesadas.

Definir qu se espera obtener del diagrama de flujo.

Identificar quin lo emplear y cmo.

Establecer el nivel de detalle requerido.

Determinar los lmites 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 estn incluidos en el proceso a describir y su orden cronolgico.

Si el nivel de detalle definido incluye actividades menores, listarlas tambin.

Identificar y listar los puntos de decisin.

Construir el diagrama respetando la secuencia cronolgica y asignando los correspondientes smbolos.

Asignar un ttulo al diagrama y verificar que est completo y describa con exactitud el proceso elegido.

Ventajas de los diagramas de flujo

Favorecen la comprensin del proceso a travs de mostrarlo como un dibujo. El cerebro humano reconoce fcilmente los dibujos. Un buen diagrama de flujo reemplaza varias pginas de texto.

Permiten identificar los problemas y las oportunidades de mejora del proceso. Se identifican los pasos redundantes, los flujos de los reprocesos , los conflictos de autoridad, las responsabilidades, los cuellos de botella, y los puntos de decisin.

Muestran las interfaces cliente-proveedor y las transacciones que en ellas se realizan, facilitando a los empleados el anlisis de las mismas.

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

Tabla completa de simbologa utilizada para el Diseo de un diagrama de flujo.

Reglas de los diagramas de flujo

Debe de indicar claramente dnde inicia y dnde termina el diagrama.

Cualquier camino del diagrama debe de llevarte siempre a la terminal de fin.

Organizar los smbolos de tal forma que siga visualmente el flujo de arriba hacia abajo y de izquierda a derecha.

No usar lenguaje de programacin dentro de los smbolos.

Centrar el diagrama en la pgina.

Las lneas deben ser verticales u horizontales, nunca diagonales.

No cruzar las lneas de flujo, emplear los conectores adecuados sin hacer uso excesivo de ellos.

No fraccionar el diagrama con el uso excesivo de conectores.

Solo debe llegar una sola lnea de flujo a un smbolo. Pero pueden llegar muchas lneas de flujo a otras lneas.

Las lneas de flujo deben de entrar a un smbolo por la parte superior y/o izquierda y salir de l por la parte inferior y/o derecha.

Evitar que el diagrama sobrepase una pgina; de no ser posible, enumerar y emplear los conectores correspondientes.

Usar lgica positiva, es decir, realizar procesos cuando es verdadera la condicin y expresar las condiciones de manera clara (por ej., no es a =/= de b ==> a=b).

Comentar al margen nicamente cuando sea necesario.

Qu es Pseudocdigo?

En pseudocdigo se describen los algoritmos utilizando una mezcla de lenguaje comn, con instrucciones de programacin, palabras claves, etc. El objetivo es que el programador se centre en la solucin lgica del algoritmo y no en la implementacin en un lenguaje de programacin concreto (con las posibles complicaciones en las reglas sintcticas), o en otras palabras, slo ayudan a pensar un programa antes de escribirlo en un lenguaje de programacin formal.

Programas: Algoritmos para ser ejecutados por una computadoraUn ordenador o computadora est, desde que se enciende hasta que se apaga totalmente, ejecutando un algoritmo. Por lo general, estos algoritmos, escritos para que los entienda una mquina, terminan siendo vagos y confusos para la mayora de quienes no han estudiado programacin. Una mquina no puede entender escribe Hola Mundo! porque no sabe lo que es escribe ni lo que es una letra o un espacio, ni lo que es una pantalla. En cambio, puede entender mov eax, 0x23afb31 (escribir en la direccin de memoria eax el nmero 0x23afb31), aunque nosotros no. Un ordenador es solo un circuito electrnico, no funciona a base de magia ni nada por el estilo.

Debido a lo difcil que es escribir en lenguaje mquina, e incluso en ensamblador, se crearon diferentes lenguajes de programacin, ms o menos parecidos al ingls actual y a cmo se redacta un algoritmo. Estos lenguajes proveen de cosas tan complejas para una mquina como los bucles for. Los compiladores se encargan de traducir esos ficheros al lenguaje ensamblador que corresponda, el ensamblador debe traducirlos a lenguaje mquina y el enlazador de juntar todo ese cdigo mquina en un solo archivo, el programa. Y el microprocesador, se encarga de ir encendiendo o apagando transistores segn lo que le diga el cdigo mquina. Es fcil entender el lenguaje de alto nivel en comparacin al lenguaje maquina pero de la evolucin surgieron.

Importante: Es fundamental tener conocimiento de lo siguiente.

Qu instrucciones ejecuta un ordenador?

Lenguaje de mquina

Cada tipo de microprocesador contiene un conjunto de instrucciones que realizan ciertas operaciones sobre una o ms palabras de bits; las instrucciones van tambin codificadas en bits. No queremos hacer aqu una discusin sobre arquitectura de computadoras, por lo que con esto debe valer por ahora.

Se entiende que escribir slo con dos teclas, el 0 y el 1, es incmodo. Histricamente, a la hora de disear un algoritmo para que el ordenador ejecutara, se escriba mediante unas etiquetas mnemotcnicas; ste fue el origen del lenguaje ensamblador. Por ejemplo quizs en una cierta arquitectura la instruccin de borrado de memoria (Memory Clear, en ingls) corresponda al cdigo 010. Pronto surgieron programas que lean, siguiendo el ejemplo, MC, y lo sustituan por 010.

Lenguaje ensamblador

El cdigo mquina tena dos grandes inconvenientes para los programadores:

las instrucciones eran difciles de recordar, ya que no guardaban relacin con la operacin que se est realizando.

puede haber, y de hecho hay, diferencias entre las instrucciones de un procesador a otro.

Todo esto ha llevado a poner nombre a las instrucciones de cdigo mquina de manera que a una secuencia concreta de bits que realiza una operacin se le pone un nombre sencillo que identifique la operacin. Esta traduccin a un lenguaje ms sencillo para las personas resulta en una mayor comodidad para el programador, adems el proceso de traduccin inverso de lenguaje ensamblador a cdigo mquina puede ser realizado por un sencillo programa.

Programacin para seres humanos

Lenguajes de alto nivel

Sobre este lenguaje ensamblador inicial se fueron construyendo otros lenguajes de programacin de ms alto nivel; esto significa que ocultan ciertos aspectos de manera que el programador no se ha de preocupar sobre si en la mquina que quiere que se ejecute el algoritmo el MC corresponde a la instruccin 101 o 010. Se produce, por tanto, una abstraccin de datos, muy deseable para poder utilizar el trabajo de otros para avanzar un paso ms en vez de tener que reinventar la rueda, como se suele decir. Estos textos en los que se codifican los algoritmos son los cdigos fuente; siguen las reglas sintcticas de un determinado lenguaje de programacin. Existen numerosos lenguajes de programacin, y se utiliza uno u otro segn sus caractersticas se adecen ms o menos a la resolucin de nuestro problema.

Traductores e intrpretes

Tras la escritura del algoritmo, un compilador o un intrprete (otros programas) transformarn el texto en cdigo mquina que el procesador es capaz de ejecutar.

Toda esta abstraccin permite resolver problemas alejados de sumar nmeros binarios, como pueden ser la consulta de esta misma enciclopedia o jugar a un videojuego en 3D.

Lenguajes interpretados vs. Lenguajes compilados

Los lenguajes interpretados nacen como respuesta a la dificultad de manejo de los compilados. Un lenguaje compilado es slo apto para un sistema operativo o formato de ejecutable (en Linux y Unix System V es ELF, en Windows o incluso en BSD es muy diferente), y es tedioso de manejar: para comprobar bugs o errores el computador debe:

Compilar cada uno de los ficheros de cdigo.

Ensamblarlos en ficheros objeto.

Enlazar los ficheros objeto.

Volverlos a ensamblar.

Todo eso no es gran derroche de recursos para un ordenador medio actualmente, pero dura sus 10 o 15 segundos. En cambio, con un lenguaje interpretado, el programa intrprete analiza el fichero de cdigo y lo va ejecutando en tiempo real, sin compilarlo ni ensamblarlo. Otra de las ventajas de los lenguajes interpretados es que son multiplataforma: un programa en Perl, por ejemplo, no debe ser compilado dos veces (una para Unix y otra para Windows). Con que haya diferentes versiones del intrprete en cada uno de esos computadoras, especficamente compilados para ellos, basta.

Sus desventajas:

Consume muchos recursos de memoria, sobre todo RAM.

Se depende del intrprete: si no tienes instalado el intrprete que corresponda, no podrs ejecutar el programa.

Ejemplos de lenguajes interpretados son C#, PHP, Perl, Python, Tcl/Tk, BASIC, LISP (en algunas de sus versiones)

Tres reglas de la programacin estructurada.

Secuencial: Indica que las instrucciones del cdigo se lean de principio a fin.

Iteracin: Segn la condicin, un nmero de instrucciones podran repetirse un nmero determinado de veces.

Decisin: Dependiendo de las condiciones, se ejecutaran o no un conjunto de instrucciones.

Ejemplos:

Ejemplo de un algoritmo de la vida real (Marcar de un telfono publico de monedas ).1. Inicio2. Descolgar la bocina3. Insertar monedas4. Marcar el numero telefnico5. Esperar a que contesten, Si contestan ir al paso 6, si no contestan ir al paso 76. Conversar.7. Colgar, Si sobra dinero ir al paso 8, si no sobra dinero ir al paso 98. regresa cambio.(Suponiendo que siempre tiene cambio el telfono)9. Fin

Ahora crea en tu cuaderno 3 ejemplos de tu vida cotidiana.