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.

Ejercicios


Ejercicio No: 1 
Desarrolle un algoritmo que permita leer dos valores distintos, determinar cual de los dos valores es el 
mayor y escribirlo. 
Pseudocódigo  
1. Inicio 
2. Inicializar variables: A = 0, B = 0 
3. Solicitar la introducción de dos 
valores distintos 
4. Leer los dos valores  
5. Asignarlos a las variables A y B 
6. Si A = B Entonces vuelve a 3 
porque los valores deben ser 
distintos 
7. Si A>B  Entonces 
       Escribir  A, “Es el mayor” 
8. De lo contrario: Escribir B, “Es 
el mayor” 
9. Fin_Si 
10. Fin 
   
      
Ejercicios propuesto:  
a. Realizar un algoritmo que permita leer dos valores, determinar cual de los dos valores es el 
menor y escríbalo 
b. Realizar un algoritmo que sume dos números


Ejercicio No: 2 
Desarrolle un algoritmo que permita leer tres valores y almacenarlos en las variables A, B y C 
respectivamente. El algoritmo debe imprimir cual es el mayor y cual es el menor. Recuerde constatar que 
los tres valores introducidos por el teclado sean valores distintos. Presente un mensaje de alerta en caso de 
que se detecte la introducción de valores iguales. 
Pseudocódigo  Diagrama de Flujo 
1. Inicio 
2. Inicializar las variables A, B y C 
3.  Leer  los tres valores 
4. Almacenar en las variables A, B 
y C 
5.  Si  A > B y A > C  Entonces  
6.  Escribir A  “Es el mayor” 
7. Sino 
8.  Si B > A y B > C Entonces
9.  Escribir B  “Es el mayor” 
10. Sino 
11. Escribir C   “Es el mayor” 
12. Fin_Si 
13. Fin_Si 
14. Fin 
      
Ejercicios propuestos:  
a. ¿Es este algoritmo la solución perfecta al ejercicio anterior? Razone su respuesta. 
b. De ser necesario ¿qué cambios deberá realizar? Indíquelos. 
c. Desarrolle un algoritmo que permita leer tres valores y almacenarlos en las variables A, B, y C 
respectivamente. El algoritmo debe indicar cual es el menor. Asumiendo que los tres valores 
introducidos por el teclado son valores distintos. 
d. Desarrolle un algoritmo que lea cuatro números diferentes y a continuación imprima el mayor de los 
cuatro números introducidos y también el menor de ellos.



Ejercicio No: 3 
   Desarrolle un algoritmo que realice la sumatoria de los números enteros comprendidos entre el 1 y el 10, 
es decir, 1 + 2 + 3 + …. + 10. 
Pseudocódigo  
1. Inicio 
2. Declaración de variables: 
      N= 0, Suma = 0 
3. Asignación Contador :                     
N = N + 1 
4. Asignación Acumulador:              
Suma = Suma + N 
5. Si N = 10 Entonces
6.     Escribir Suma 
7. De lo contrario, Repetir desde el 
    paso 3 
8. Fin_Si 
8. Fin
Ejercicios propuestos:  
a. Desarrolle un algoritmo que realice la sumatoria de los números enteros múltiplos de 5, comprendidos 
entre el 1 y el  100, es decir, 5 + 10 + 15 +…. + 100. El programa deberá imprimir los números en 
cuestión y finalmente su sumatoria 
b. Desarrolle un algoritmo que realice la sumatoria de los números enteros pares comprendidos entre el 1 
y el 100, es decir, 2 + 4 + 6 +…. + 100. El programa deberá imprimir los números en cuestión y 
finalmente su sumatoria 
c. Desarrolle un algoritmo que lea los primeros 300 números enteros y determine cuántos de ellos son 
impares; al final deberá indicar su sumatoria.