sábado, 5 de mayo de 2012

Algoritmo y Programación

República Bolivariana de Venezuela
Ministerio del Poder Popular para la Educación Universitaria
Aldea Ciudad Angostura Misión Sucre

Cátedra: Algoritmia y Programación







Facilitador:                                                                                                    Participante:

Manaure Ingri                                                                                               Gutierrez Brihanyeli







Ciudad Bolívar, 06/05/2012





Concepto de Algoritmo y Programación.

Es un conjunto preescrito 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. Los algoritmos son el objeto de estudio de la algoritmia.

Un algoritmo es cualquier cosa que funcione paso a paso, donde cada paso se pueda describir sin ambigüedad y sin hacer referencia a una computadora en particular, y además tiene un límite fijo en cuanto a la cantidad de datos que se pueden leer/escribir en un solo paso.

Es una formula para resolver un problema es un conjunto de acciones o secuencia de operaciones que ejecutadas en un determinado orden resuelven el problema. Existen n algoritmos, hay que coger el más efectivo. Trata de resolver problemas mediante programas.

 El programa: Codificación del algoritmo en un lenguaje de programación.

Lenguaje algoritmo y programación.

Instrucciones en una computadora y sus tipos:

Una instrucción es cada paso de un algoritmo, pero que lo ejecuta el ordenador. Un programa es un conjunto de instrucciones que ejecutadas ordenadamente resuelven un problema.

Tipos de instrucciones:
  • E/S: Pasar información del exterior al interior del ordenador y al revés.
  • Aritmético-lógicas: Aritméticas: +,-,*,... ; Lógicas: or, and, <, >, ...
  • Selectivas: Permiten la selección de una alternativa en función de una condición.
  • Repetitivas: Repetición de un número de instrucciones un número finito de veces.

Tipos de lenguajes:
  • Lenguaje máquina: Todo se programa con 1 y 0, que es lo único que entiende el ordenador.
Ventaja: No necesita ser traducido.

Inconveniente: La dificultad, la confusión, para corregir errores, es propia de cada máquina.
  • De bajo nivel o ensamblador: Se utilizan mnemotécnicos (abreviaturas).
Ventaja: No es tan difícil como el lenguaje máquina.

Inconvenientes: Cada máquina tiene su propio lenguaje, necesitamos un proceso de traducción.
  • El programa escrito en ensamblador se llama programa fuente y el programa que se obtiene al ensamblarlo se llama programa objeto.
  • Lenguajes de alto nivel: Los más cercanos al lenguaje humano.
Ventaja: Son independientes de cada maquina (los compiladores aceptan las instrucciones estándar, pero también tienen instrucciones propias).
Inconveniente: El proceso de traducción es muy largo y ocupa más recursos. Aprovecha menos los recursos internos.

Proceso de traducción y ejecución de un programa escrito en un lenguaje a alto nivel:


Usamos un editor y obtenemos el programa fuente, y el compilador es el que traduce el programa al lenguaje máquina. El compilador internamente ha sido diseñado para traducir.
El compilador obtiene el programa o el fichero objeto. El compilador tiene que buscar los errores.

Normalmente no sale un ejecutable, sino que necesita elementos, librerías, mediante un linkador juntamos el programa objeto y las librerías, y se forma un programa ejecutable.

Cuando se ejecuta el programa, el cargador lleva al programa a memoria para que éste pueda ser ejecutable.

Debbuger: Depura el programa ejecutándolo paso a paso, viendo la memoria paso a paso para encontrar el error.

Compilador
Error
Programa objeto Librerias
Linkador
Ejecutables
Para traducir puedo utilizar el compilador o un interprete, con el compilador cojo todo el programa al completo y el interprete lee cada instrucción y lo va ejecutando.
El interprete es más rápido, pero menos eficiente.
Todos los lenguajes tienen compiladores, pero no todos tienen interpretes.
LISP (Lenguaje de inteligencia artificial) : Sólo tiene interpretes.

Partes de un Algoritmo.
  
Todo algoritmo debe obedecer a la estructura básica de un sistema, es decir: entrada, proceso y salida.

ENTRADA: Corresponde al insumo, a los datos necesarios que requiere el proceso para ofrecer los resultados esperados.

PROCESO: Pasos necesarios para obtener la solución del problema o la situación planteada.

SALIDA: Resultados arrojados por el proceso como solución.

Caracteristicas y elementos para construir un algoritmo.

Las características fundamentales que debe cumplir un algoritmo son:

PRECISIÓN: Indica el orden de realización de cada paso dentro del proceso.

DEFINICION: Indica la exactitud y consistencia de los pasos descritos en el proceso, si el algoritmo se prueba dos veces, en estas dos pruebas, se debeobtener el mismo resultado.

FINITUD: Indica el número razonable de pasos, los cuales deben conllevar a la finalización del proceso y producir un resultado en un tiempo finito.

Al diseñar un algoritmo se debe tener presente las características de precisión, definición y finitud.

 Elementos para construir un Algoritmo.

Instrucción o sentencia.

Dependiendo del origen del material instruccional se habla de instrucción o sentencia; ésta, define una acción o un mandato que se debe realizar, esa acción o mandato se representa a través de un comando o lo que es lo mismo palabras reservadas de un lenguaje de programación en particular. Una instrucción esta compuesta por uno o más comandos (acción), datos, símbolos, variables o constantes y expresiones, que en conjunto representan una instrucción o sentencia.


Ejemplo de instrucción:

En la construcción de los programas se estila utilizar una instrucción por línea. Así mismo, se utiliza la identación, que no es más que la alineación de aquellas instrucciones dentro de las estructuras que las contienen de manera ordenada que permita visualizar el inicio y fin de cada bloque de instrucciones.

Si ASISTIO =”SI” Entonces
Leer Sueldo, Asignar Sueldo = Sueldo + HoraExtra.
Fin Si
Donde:
SI
Representa una estructura condicional utilizada para establecer preguntas
o programar ciertas condiciones.
ASISTIO
Nombre de una Variable lógica que puede obtener sólo dos valores “SI”
o “NO”. En el ejemplo se programa la condición de la variables cuando
es “SI”
ENTONCES
Parte de la instrucción o estructura condicional.
LEER SUELDO
Instrucción utilizando el comando cuya acción es la lectura de un campo
o dato.
Asignar SUELDO=
SUELDO+HORAEXTRA
Instrucción de asignación, permite asignar o calcular el valor que adquirirá
una variable.
Fin SI
Cierra la estructura condicional si - entonces - fin si. 

Comandos o palabras reservadas.

Todos los lenguajes, naturales o computacionales, tienen palabras que denotan una acción. Los comandos no son más que acciones que debe interpretar y ejecutar el computador. Cada comando conserva una sintaxis determinada, es decir la forma de utilizarlo. Los lenguajes computacionales tienen en su repertorio comandos dirigidos al procesamiento de archivos y datos, entre ellos: Leer, Calcular, Asignar, Clasificar, Imprimir.

Formas de representar un algoritmo: Lenguaje natural, pseucodigo y diagrama de flujo.

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

Son descripciones gráficas de algoritmos; usan símbolos conectados con flechas para indicar la secuencia de instrucciones y están regidos por ISO.

Los diagramas de flujo son usados para representar algoritmos pequeños, ya que abarcan mucho espacio y su construcción es laboriosa. Por su facilidad de lectura son usados como introducción a los algoritmos, descripción de un lenguaje y descripción de procesos a personas ajenas a la computación.

Los algoritmos pueden ser expresados de muchas maneras, incluyendo al lenguaje natural, pseudocódigo, diagramas de flujo y lenguajes 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.

 El pseudocódigo.

Es una descripción de alto nivel de un algoritmo que emplea una mezcla de lenguaje natural con algunas convenciones sintácticas propias de lenguajes de programación, como asignaciones, ciclos y condicionales, aunque no está regido por ningún estándar. Es utilizado para describir algoritmos en libros y publicaciones científicas, y como producto intermedio durante el desarrollo de un algoritmo, como los diagramas de flujo, aunque presentan una ventaja importante sobre estos, y es que los algoritmos descritos en pseudocódigo requieren menos espacio para representar instrucciones complejas.

El pseudocódigo está pensado para facilitar a las personas el entendimiento de un algoritmo, y por lo tanto puede omitir detalles irrelevantes que son necesarios en una implementación. Programadores diferentes suelen utilizar convenciones distintas, que pueden estar basadas en la sintaxis de lenguajes de programación concretos. Sin embargo, el pseudocódigo, en general, es comprensible sin necesidad de conocer o utilizar un entorno de programación específico, y es a la vez suficientemente estructurado para que su implementación se pueda hacer directamente a partir de él.


File:AlgoritmoRaiz.png


Traza un Algoritmo (corrida en frio).

La traza de un Algoritmo se puede definir como la ejecución manual de forma secuencial de las sentencias que lo componen. Así, la traza del siguiente algoritmo es el valor que van adoptando las variables a medida que se va ejecutando un programa.

 
La función principal que posee realizar la traza de una algoritmo es la de comprobar que éste funciona correctamente o para realizar la etapa de depuración en la que se intenta corregir errores, simplificar el algoritmo al máximo e incrementar su eficacia y velocidad.