10 enero, 2007

Abstracción funcional en Pascal

La abstracción funcional en Pascal se obtiene mediante el uso de módulos(funciones y procedimientos) que son secciones de código que resuelven un problema concreto y pueden ser reutilizadas referenciándolas mediante un identificador sin conocer como están implementadas.

En esto último consiste la abstacción, en preocuparse únicamente de “que” se hace, y olvidar el “como “ se hace.

En Pascal disponemos de 2 tipos de módulos o subprogramas, las funciones y los procedimientos. Ambos deben ser declarados antes de ser referenciados.



La diferencia entre ellos es que la función debe recibir unos parámetros de entrada y devolver un resultado, mientras que los procedimientos realizan tareas sin devolver ningún valor al subprograma que lo invoca.

Cuando invocamos a una acción con nombre puede ser necesario incluír en la invocación parámetros, que pueden pasarse por valor o por referencia.

Hay dos tipos de parámetros: actuales y formales

Los parámetros actuales son los que se encuentran en la invocación al módulo, mientras que los formales son los que se encuentran en la declaración del mismo.

Cuando realizamos un paso de parámetros por valor, se crean tantas variables locales como parámetros hemos introducido y se les asigna el valor de cada uno de los parámetros actuales.

Estas variables locales, desaparecen al concluír la ejecución del módulo, por tanto, son desconocidas por el programa que invoca al módulo y cualquier cambio que se realice sobre estas variables no afecta al parámetro actual.

Cuando realizamos un paso de parámetros por referencia, debemos anteponer la palabra reservada “VAR” al parámetro.

Cuando hacemos un paso por referencia, no se crea ninguna copia de la variable, sino que directamente se actúa sobre la dirección de memoria a la que esta hace referencia. Esto es útil cuando deseamos que el módulo modifique el valor de la variable global.


Pascal permite el paso de una función como parámetro de otro módulo. Esto se puede llevar a cabo incluyendo en el programa la directiva de compilación {$F+} y especificando el tipo de dato que devuelve la función.

La recursividad esta una técnica de programación que consiste en realizar una llamada a un modulo en su propio cuerpo de código.

Es necesario detacar que no se pueden usar variables globales en los algoritmos recursivos.


Pascal permite la sobrecarga de módulos, es decir, podemos definir dos o más módulos con el mismo identificador pero distintos parámetros, permitiendo así englobar varios módulos con operaciones similares.

09 enero, 2007

Debate

Competencias transversales:

1-Capacidad de análisis y síntesis
7-Resolución de Problemas
17-Adaptación a nuevas situaciones
18-Creatividad

Competencias específicas:

*Arquitectura de redes
*Bases de datos
*Cifrado y proteccion datos
*Programacion 

13 noviembre, 2006

Conceptos Sobre la Programacion Orientada a Objetos

Las 4 características principales de la Programación orientada a objetos son:

Abstracción
: Cada objeto en el sistema sirve como modelo de un "agente" abstracto que puede realizar trabajo, informar y cambiar su estado, y "comunicarse" con otros objetos en el sistema sin revelar cómo se implementan estas características. Los procesos, las funciones o los métodos pueden también ser abstraídos y cuando lo están, una variedad de técnicas son requeridas para ampliar una abstracción.

Encapsulamiento: También llamado "ocultación de la información". Cada objeto está aislado del exterior, es un módulo natural, y cada tipo de objeto expone una interfaz a otros objetos que especifica cómo pueden interactuar con los objetos de la clase. El aislamiento protege a las propiedades de un objeto contra su modificación por quien no tenga derecho a acceder a ellas, solamente los propios métodos internos del objeto pueden acceder a su estado. Esto asegura que otros objetos no pueden cambiar el estado interno de un objeto de maneras inesperadas, eliminando efectos secundarios e interacciones inesperadas. Algunos lenguajes relajan esto, permitiendo un acceso directo a los datos internos del objeto de una manera controlada y limitando el grado de abstracción. La aplicación entera se reduce a un agregado o rompecabezas de objetos.

Polimorfismo: Comportamientos diferentes, asociados a objetos distintos, pueden compartir el mismo nombre, al llamarlos por ese nombre se utilizará el comportamiento correspondiente al objeto que se esté usando. O dicho de otro modo, las referencias y las colecciones de objetos pueden contener objetos de diferentes tipos, y la invocación de un comportamiento en una referencia producirá el comportamiento correcto para el tipo real del objeto referenciado. Cuando esto ocurre en "tiempo de ejecución", esta última característica se llama asignación tardía o asignación dinámica. Algunos lenguajes proporcionan medios más estáticos (en "tiempo de compilación") de polimorfismo, tales como las plantillas y la sobrecarga de operadores de C++.

Herencia: Las clases no están aisladas, sino que se relacionan entre sí, formando una jerarquía de clasificación. Los objetos heredan las propiedades y el comportamiento de todas las clases a las que pertenecen. La herencia organiza y facilita el polimorfismo y el encapsulamiento permitiendo a los objetos ser definidos y creados como tipos especializados de objetos preexistentes. Estos pueden compartir (y extender) su comportamiento sin tener que reimplementar su comportamiento. Esto suele hacerse habitualmente agrupando los objetos en clases y estas en árboles o enrejados que reflejan un comportamiento común. Cuando un objeto hereda de más de una clase se dice que hay herencia múltiple; esta característica no está soportada por algunos lenguajes (como Java).