miércoles, 14 de enero de 2009

Algoritmos y programación

Programación



El concepto de algoritmo, aunque similar y obviamente relacionado, no debe confundirse con el concepto de
programa. Mientras el primero es la especificación de un conjunto de pasos orientados a la resolución de un problema (método), el segundo es ese conjunto de operaciones especificadas en un determinado lenguaje de programación y para un computador concreto, susceptible de ser ejecutado . Un algoritmo, estrictamente hablando, no puede ejecutarse hasta que se implementa, ya sea en un lenguaje de programación, en un circuito eléctrico, en un aparato mecánico, usando papel y lápiz, o en algún otro modelo de computación. Por esto, para que la ejecución de programas es importante el conocimiento de los algoritmos.


1. ¿Qué es un algoritmo? y ¿cuál es su función?
2. Características de un algoritmo
3. ¿Qué es un lenguaje de programación?
4. ¿Cómo se clasifican los lenguajes de programación?
5. ¿Qué son lo diagramas de flujo y cuál es su función?
6. ¿Clasificación de los diagramas de flujo?
7. ¿Símbolos básicos de los diagramas de flujo?

Respuestas

1. Un
algoritmo es una serie de pasos organizados que describe el proceso que se debe seguir, para dar solución a un problema específico. En la vida cotidiana se emplean algoritmos en multitud de ocasiones para resolver diversos problemas
Función: todo algoritmo calcula a funciones definidas en los números naturales, específicamente en la informática se dedican a la organización y estructura de diversos datos y a resolver problemas que se presenten.
Existen dos tipos de funciones: las computables que es toda función para la cual exista un algoritmo que lo calcule y las funciones no computables que son las no pueden ser calculadas


2. Características
1. Carácter finito. "Un algoritmo siempre debe terminar después de un número finito de pasos".
2. Precisión. "Cada paso de un algoritmo debe estar precisamente definido; las operaciones a llevar a cabo deben ser especificadas de manera rigurosa y no ambigua para cada caso".
3. Entrada. "Un algoritmo tiene cero o más entradas: cantidades que le son dadas antes de que el algoritmo comience, o dinámicamente mientras el algoritmo corre. Estas entradas son tomadas de conjuntos específicos de objetos".
4. Salida. "Un algoritmo tiene una o más salidas: cantidades que tienen una relación específica con las entradas".
5. Eficacia. "También se espera que un algoritmo sea eficaz, en el sentido de que todas las operaciones a realizar en un algoritmo deben ser suficientemente básicas como para que en principio puedan ser hechas de manera exacta y en un tiempo finito por un hombre usando lápiz y papel".

3. Un
lenguaje de programación es un conjunto de símbolos y reglas sintácticas y semánticas que definen su estructura y el significado de sus elementos y expresiones, y es utilizado para controlar el comportamiento físico y lógico de una máquina. Éstos lenguajes reciben ese nombre porque su estructura sintáctica es similar a los de los humanos

4. Clasificación de los lenguajes de programación:

Según su nivel de abstracción
:
Lenguajes de Máquina
Están escritos en lenguajes directamente legibles por la máquina , ya que sus instrucciones son cadenas binarias. Da la posibilidad de cargar (transferir un programa a la memoria) sin necesidad de traducción posterior lo que supone mayor velocidad.


Lenguajes de bajo nivel
Los lenguajes de bajo nivel son lenguajes de programación que se acercan al funcionamiento de una computadora. El lenguaje de más bajo nivel por excelencia es el
código máquina..


Lenguajes de medio nivel
Lenguajes de medio nivel: son los que tienen ciertas características que los acercan a los lenguajes de bajo nivel pero teniendo, al mismo tiempo, ciertas cualidades que lo hacen un lenguaje más cercano al humano y, por tanto, de alto nivel.

Lenguajes de alto nivel
Los lenguajes de alto nivel son normalmente fáciles de aprender porque están formados por elementos de lenguajes naturales, como el inglés.


Según la forma de ejecución
:
Lenguajes compilados
Los compiladores son aquellos cuya función es traducir un programa escrito en un determinado lenguaje a un idioma que la computadora entienda (lenguaje máquina con código binario).
Al usar un lenguaje compilado, el programa desarrollado nunca se podrá ejecutar mientras haya errores, sino hasta que tras haber compilado el programa, ya no aparecen errores en el código.

Lenguajes interpretados
Un programa
intérprete, almacenado en el sistema operativo del disco, o incluido de manera permanente dentro de la máquina, convierte cada proposición del programa fuente en lenguaje de máquina conforme vaya siendo necesario durante el procesamiento de los datos. El código objeto no se graba para utilizarlo posteriormente.
La siguiente vez que se utilice una instrucción, se la deberá interpretar otra vez y traducir a lenguaje máquina.


Según el paradigma de programación:
Un paradigma de programación representa un enfoque particular o filosofía para la construcción del software. Dependiendo de la situación un paradigma resulta más apropiado que otro.
Atendiendo al paradigma de programación, se pueden clasificar los lenguajes en :
El
paradigma imperativo o por procedimientos es considerado el más común y está representado, por el C o por BASIC.
El
paradigma funcional está representado por la familia de lenguajes LISP, Scheme, ML o Haskell.
El
paradigma lógico, un ejemplo es PROLOG.
El
paradigma orientado a objetos. Un lenguaje completamente orientado a objetos es Smalltalk.
Si bien puede seleccionarse la forma pura de estos paradigmas a la hora de programar, en la práctica es habitual que se mezclen, dando lugar a la
programación multiparadigma.
Actualmente el paradigma de programación más usado debido a múltiples ventajas respecto a sus anteriores, es la
programación orientada a objetos.

Lenguajes imperativos
BASIC
C
C++
Java
C#
Perl
unerg

Lenguajes Funcionales
Purouajes de bajo nivel
Los s:
Haskell
Miranda
Híbridos:
Lisp


· Según su nivel de abstracción

Lenguajes de Máquina
Están escritos en lenguajes directamente legibles por la máquina, ya que sus instrucciones son cadenas binarias (0 y 1). Da la posibilidad de cargar sin necesidad de traducción posterior lo que supone una velocidad de ejecución superior, solo que con poca fiabilidad.

Lenglenguajes de bajo nivel son lenguajes de programación que se acercan al funcionamiento de una computadora. El lenguaje de más bajo nivel por excelencia es el
código máquina.

Lenguajes de medio nivel
Hay lenguajes de programación que son considerados por algunos expertos como lenguajes de medio nivel, al tener ciertas características que los acercan a los lenguajes de bajo nivel pero teniendo, al mismo tiempo, ciertas cualidades que lo hacen un lenguaje más cercano al humano y, por tanto, de alto nivel.

Lenguajes de alto nivel
Los lenguajes de alto nivel son normalmente fáciles de aprender porque están formados por elementos de lenguajes naturales, como el inglés. En BASIC, uno de los lenguajes de alto nivel más conocidos, los comandos pueden utilizarse para pedir ciertas funciones. Esta forma de trabajar puede dar la sensación de que las computadoras parecen comprender un lenguaje natural; en realidad lo hacen de una forma rígida y sistemática.

· Según la forma de ejecución
Lenguajes compilados
Los compiladores son aquellos cuya función es traducir un programa escrito en un determinado lenguaje a un idioma que la computadora entienda (lenguaje máquina con código binario).
Al usar un lenguaje compilado, el programa desarrollado nunca se podrá ejecutar mientras haya errores, sino hasta que tras haber compilado el programa, ya no aparecen errores en el código.
Según el paradigma de programación
Un paradigma de programación representa un enfoque particular o filosofía para la construcción del software. No es mejor uno que otro, sino que cada uno tiene ventajas y desventajas. Dependiendo de la situación un paradigma resulta más apropiado que otro.
Atendiendo al paradigma de programación, se pueden clasificar los lenguajes en :
El
paradigma imperativo o por procedimientos es considerado el más común y está representado, por ejemplo, por el C o por BASIC.
El
paradigma funcional está representado por la familia de lenguajes LISP (en particular Scheme), ML o Haskell.
El
paradigma lógico, un ejemplo es PROLOG.
El
paradigma orientado a objetos. Un lenguaje completamente orientado a objetos es Smalltalk.
Actualmente el paradigma de programación más usado es la
programación orientada a objetos debido a las múltiples ventajas que posee.
Lenguajes imperativos
BASIC
C
C++
Java
C#
Perl
unerg

Lenguajes Funcionales
Puros:
Haskell
Miranda
Híbridos:
Lisp
Scheme
Ocaml
Standard ML
ML
Lenguajes Lógicos
Prolog
Lenguajes orientados a objetos
ActionScript
Ada
C++
C#
Visual FoxPro
Clarion
Harbour
Eiffel
Java
JavaScript
Lexico (en castellano)
Perl (soporta herencia múltiple)
PHP (en su versión 5)
Smalltalk
Magik (SmallWorld)
Lenguajes Lógicos
Prolog
Lenguajes orientados a objetos
ActionScript
Ada
C++
Delphi
Harbour
Eiffel
Java
JavaScript
Lexico (en castellano)
Objective-C
Ocaml
Oz
Perl (soporta herencia múltiple)
Smalltalk
5. Diagrama de flujo
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. Función: 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

6. Clasificación de diagramas de flujo
Formato Vertical: En él el flujo o la secuencia de las operaciones, va de arriba hacia abajo. Es una lista ordenada de las operaciones de un proceso con toda la información que se considere necesaria, según su propósito.
Formato Horizontal: En el flujo o la secuencia de las operaciones, va de izquierda a derecha.
Formato Panorámico: Registra no solo en línea vertical, sino también horizontal, distintas acciones simultáneas y la participación de más de un puesto o departamento que el formato vertical no registra.
Formato Arquitectónico: Describe el itinerario de ruta de una forma o persona sobre el plano arquitectónico del área de trabajo.

7. Símbolos utilizados
La simbología utilizada para la elaboración de diagramas de flujo es variable y debe ajustarse a un patrón definido previamente.
Flecha. Indica el sentido y trayectoria del proceso de información o tarea.
Rectángulo. Se usa para representar un evento o proceso determinado. Éste es controlado dentro del diagrama de flujo en que se encuentra. Es el símbolo más comúnmente utilizado. Se usa para representar un evento que ocurre de forma automática y del cual generalmente se sigue una secuencia determinada.
Rombo. Se utiliza para representar una condición. Normalmente el flujo de información entra por arriba y sale por un lado si la condición se cumple o sale por el lado opuesto si la condición no se cumple. El rombo además especifica que hay una bifurcación.
Círculo. Representa un punto de conexión entre procesos. Se utiliza cuando es necesario dividir un diagrama de flujo en varias partes, por ejemplo por razones de espacio o simplicidad. Una referencia debe darse dentro para distinguirlo de otros.
De acuerdo al estándar ISO, los símbolos e incluso las flechas deben tener ciertas características para permanecer dentro de sus lineamientos y ser considerados sintácticamente correctos.

La importancia de un algoritmo radica en mostrar la manera de llevar a cabo procesos y resolver mecánicamente
problemas matemáticos o de otro tipo.
En conclusión los algoritmos involucran métodos de organizar los datos que intervienen en el cómputo, los cuales se relacionan con los lenguajes de programación porque éstos son los que controlan el comportamiento físico y lógico de la máquina y lograr el uso correcto, almacenamiento, transmisión y acciones que se deben tomar con respecto a los datos ya organizados por los algoritmos. De esta forma, los algoritmos, estructuras de los datos y lenguajes de programación van siempre de la mano.


Autor: María Adriana Torres



Fuentes:
· Fundamentos de Algoritmia,
G. Brassard y P. Bratley. (ISBN 848966000)
·
www.wikipedia.com
· www.geoogle.com
· Elements of Ml Programming

No hay comentarios:

Publicar un comentario