martes, 17 de abril de 2012

PSEUDOCODIFICACION

Muestra la lógica de la decisión en el formato si-entonses de un programa del computador. Es una descripción precisa, pero puede ser muy concisa y formal par los que no estén familiarizado con la programación de computadoras. No es una forma de programacion, se trata de una herramienta que los analistas de sistemas utilizan para comunicar a los programadores la estructura del programa que van a realizar, de forma de tener una idea bien clara de lo que se necesita programar.

Digamos que el pseudo código es una forma de diagramar un algoritmo para resolver un determinado problema, sin atenerse a ningún lenguaje de programación en especial

Tipos de algoritmos según su función

ALGORITMO DE ORDENAMIENTO
Es un algoritmo que pone elementos de una lista o un vector en una secuencia dada por una relación de orden, es decir, el resultado de salida ha de ser una permutación —o reordenamiento— de la entrada que satisfaga la relación de orden dada.

EJEMPLO DE ALGORITMO DE ORDENAMIENTO:

• ALGORITMO DE BUSQUEDA
Es aquel que está diseñado para localizar un elemento concreto dentro de una estructura de datos. Consiste en solucionar un problema booleano de existencia o no de un elemento determinado en un conjunto finito de elementos, es decir al finalizar el algoritmo este debe decir si el elemento en cuestión existe o no en ese conjunto (si pertenece o no a él), además, en caso de existir, el algoritmo podría proporcionar la localización del elemento dentro del conjunto.

EJEMPLO DE ALGORITMO DE BUSQUEDA:




Definicion

Un algoritmo se puede definir como una secuencuencia de instrucciones que representan un modelo de solucion para determinado tipo de problema; o bien como un conjunto de instrucciones que realizadas en orden conducen a la solucion de problemas.

Medios de expresión de un algoritmo

Los algoritmos pueden ser expresados de muchas maneras, incluyendo al lenguaje natural, pseudocódigo, diagramas de flujolenguajes 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:
  1. 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.
  2. Descripción formal. Se usa pseudocódigo para describir la secuencia de pasos que encuentran la solución.
  3. 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.  


DIAGRAMAS DE FLUJO

Un diagrama de flujo es la representación gráfica del flujo o secuencia de rutinas simples. Tiene la ventaja de indicar la secuencia del proceso en cuestión, las unidades involucradas y los responsables de su ejecución, es decir , viene a ser la representación simbólica o pictórica de un procedimiento administrativo.
Luego, un diagrama de flujo es una representación gráfica que desglosa un proceso en cualquier tipo de actividad a desarrollarse tanto en empresas industriales o de servicios y en sus departamentos, secciones u áreas de su estructura organizativa

PSEUDOCODIGO

Este pseudocódigo o pseudolenguaje es usado para o hacer un bosquejo de una aplicación de manera rápida, o para aprender programación, se usa mas que todo en clases de lógica y algoritmia.
No es un lenguaje estructurado así que cada quien puede poner las normas de el, por ejemplo una condición o una toma de decisiones en pseudolenguaje seria algo como:
si Numero_visitas >= 50000 entonces
escriba "mi blog tiene buen trafico"
sino entonces
escriba "tengo que mejorar mi blog"
fin si
En el ejemplo anterior vemos que lo que esta en verde serian las instrucciones que podrían variar en los diferentes lenguajes de programación (si = if(escriba = printf) (sino = else) lo que esta en azul "Numero_visitas" representa una variable, los operadores matemáticos se usan de la misma manera en casi todos los lenguajes, en este caso ">=" significa (Mayor o igual) y lo que esta entre comillas es lo que se debe imprimir en la pantalla de la aplicación.







Algoritmos como funciones

Los algoritmos son las series de pasos por los cuales se resuelven los problemas. Los algoritmos se han utilizado para solucionar un amplio rango de problemas matemáticos, como agregar números o encontrar una raíz cuadrada.
Los algoritmos representan soluciones a problemas. Los pasos para la solución (llamados instrucciones) permanecen iguales, ya sea que el mismo se esté resolviendo mediante una computadora o a mano.


Algoritmo de Von Neumann


Las funciones son la expresión de los algoritmos en un lenguaje de programación específico de la computadora. Tú puedes utilizar las funciones cuando las necesites. No tienes que reescribir las líneas del código representadas por la función cada vez que requiera de la misma.
Un ejemplo práctico de la aplicación de funciones en Lenguaje C es la utilización de ” Sqrt(x) “, el cual es una manera de referirse a la raíz cuadrada. La (x) después del nombre de la función es el argumento. Tú usas los argumentos para trasladar lo que entra a las funciones conforme el programa se ejecuta.
Citando el ejemplo anterior, x es una variable que representa un número. Si x es igual a 12 (x=12), entonces la función encontrará la raíz cuadrada de 12.
Después de que se haya buscado y determina mediante la función el valor de la raíz cuadrada para dicho valor, el mismo programa devuelve la información al usuario.







Análisis de algoritmos

El análisis de algoritmos es una parte importante de la Teoría de complejidad computacional más amplia, que provee estimaciones teóricas para los recursos que necesita cualquier algoritmo que resuelva un problema computacional dado. Estas estimaciones resultan ser bastante útiles en la búsqueda de algoritmos eficientes.
A la hora de realizar un análisis teórico de algoritmos es común calcular su complejidad en un sentido asintótico, es decir, para un tamaño de entrada suficientemente grande. La cota superior asintótica, y las notaciones omega (cota inferior) y theta (caso promedio) se usan con esa finalidad. Por ejemplo, la búsqueda binaria decimos que se ejecuta en una cantidad de pasos proporcional a un logaritmo, en O(log(n)), coloquialmente "en tiempo logarítmico". Normalmente las estimaciones asintóticas se utilizan porque diferentes implementaciones del mismo algoritmo no tienen porque tener la misma eficiencia. No obstante la eficiencia de dos implementaciones "razonables" cualesquiera de un algoritmo dado están relacionadas por una constante multiplicativa llamada constante oculta.
La medida exacta (no asintótica) de la eficiencia a veces puede ser computada pero para ello suele hacer falta aceptar supuestos acerca de la implementación concreta del algoritmo, llamada modelo de computación. Un modelo de computación puede definirse en términos de un ordenador abstracto, como la Máquina de Turing, y/o postulando que ciertas operaciones se ejecutan en una unidad de tiempo. Por ejemplo, si al conjunto ordenado al que aplicamos unabúsqueda binaria tiene n elementos, y podemos garantizar que una única búsqueda binaria puede realizarse en un tiempo unitario, entonces se requieren como mucho log2 N + 1 unidades de tiempo para devolver una respuesta.
Las medidas exactas de eficiencia son útiles para quienes verdaderamente implementan y usan algoritmos, porque tienen más precisión y así les permite saber cuanto tiempo pueden suponer que tomará la ejecución. Para algunas personas, como los desarrolladores de videojuegos, una constante oculta puede significar la diferencia entre éxito y fracaso.