LPR GRUPO_28

Este Blog ha sido creado para el seguimiento de la asignatura LPR por parte del grupo 28 cuyos miembros son: LMALVAREZ, pachon, RRLOPEZ. Un saludo.

jueves, enero 11, 2007

Abstracción funcional en pascal



Tipo de subprograma

Los subprogramas en pascal son de dos tipos: procedimientos y funciones.

Procedimientos: Al ejecutar un procedimiento se crean en memoria las constantes y variables de la parte de declaración, pero después de que se haya terminado el procedimiento desaparecen, lo cual supone un ahorro de memoria. Puede recibir cero o más valores del programa que llama y devolver cero o más valores al programa que realizó la llamada.

Declaración:

Es obligatorio declararlos y deben ser declarados antes de que puedan ser referenciados en el cuerpo del programa.

Procedure nombreproc(parámetros);

Declaraciones locales

Begin

Cuerpo del procedimiento

End;

Con frecuencia los procedimientos necesitan que se les dé uno o más valores, que se conocen como parámetros. Estos se incluyen en la cabecera, dentro de los paréntesis que siguen al identificador.

Funciones: La diferencia entre un procedimiento y una función es que el identificador de una función asume un valor cuando la función ha terminado y devuelve este valor a la rutina que la llamó en sustitución del nombre de la función. En un sentido amplio el nombre de la función es también una variable.

Todo lo indicado previamente respecto a la definición de los procedimientos se aplica a las funciones.

Function nombrefuncion ( Parámetro : tipo parámetro) ; tipo dato devuelto

Declaraciones locales

Begin

Cuerpo función

Return o actualización de la variable a la que se le asigne la función

End;

PASO DE PARÁMETROS:

Tanto en funciones como procedimientos se pueden pasar por valor o por referencia.

Paso por valor: se transfiere una copia del valor del parámetro actual al procedimiento, el procedimiento no accede a la variable real y por lo tanto no puede modificarla. Un procedimiento puede cambiar el valor de un parámetro por valor, pero a la vuelta al programa queda sin modificar el valor actual del parámetro original.

Paso por referencia: el parámetro actual debe ser una variable o una constante con tipo. Delante de la declaración del parámetro formal hay que poner la palabra clave Var. De este modo quedaría modificado el valor de la variable pasada por referencia.

Subprogramas como parámetros:

Algunas versiones de Pascal permiten pasar subprogramas como parámetros: junto con el nombre del subprograma se incluye la lista de parámetros formales.

Sobrecarga de subprogramas: Es posible realizar sobrecarga de funciones y procedimientos. O sea declarar funciones con el mismo nombre pero que difieren en los parámetros o el tipo de valor que devuelven. Según el tipo de parámetros que se le pasen llamará a la función original o a la sobrecargada.

Subprogramas polimórficos: En pascal no es posible crear subprogramas polimórficos.

Enlaces:

http://www.wikilearning.com/subprogramas_en_pascal-wkccp-3633-3.htm

http://www.mailxmail.com/curso/informatica/pascal/capitulo15.htmç

http://www.programacion.com/blogs/21_pascal_y_turbo_vision/archive/688_el_compilador_freepascal.html

Diferencias y similitudes entre Java y Pascal

DIFERENCIAS Y SIMILITUDES

DIFERENCIAS:

- Java proporciona funciones, llamadas métodos, Pascal incluye funciones y procedimientos.

- Java el paso de parámetros es siempre por valor, en Pascal hay paso por valor y paso por referencia

- Pascal permite declarar funciones dentro de otras funciones, en Java no es posible declarar un método dentro de otro.

-En Pascal no es posible que una función devuelva datos complejos como un array, por ejemplo, en Java los métodos si pueden devolver este tipo de datos.

- En Java en el caso de que el número de parámetros sea distinto podemos declarar mas de una función con el mismo nombre , Pascal no lo permite, el nombre de las funciones

- En Pascal podemos pasar subprogramas como parámetros , en Java no existe esta posibilidad.


SIMILITUDES:

- Java y Pascal permiten el paso de parámetros en la funciones

- Ambos lenguajes comparten el funcionamiento de las funciones

- Los dos lenguajes permiten la sobrecarga de funciones

- Si se hace un mal uso de las variables locales y globales en ambos leguajes se producen efectos laterales.

Abstracción funcional en Java

Abstracción funcional: los subprogramas se invocan para realizar una tarea, pero sin necesidad de saber cómo la llevan a cabo.
Está estrechamente ligada a las técnicas de diseño funcional descendente y a la programación estructurada.
Permite llevar a cabo el concepto de modularidad:
– Una función agrupa a un conjunto de instrucciones altamente cohesionadas
– Una función realiza una tarea específica.
– Para usar una función no es necesario conocer su implementación.



Tipo de subprograma

Java utiliza como tipo de subprograma las funciones.
Las funciones en Java reciben el nombre de métodos.

Método: Sección de código autocontenida que pertenece a una clase y que define la parte del comportamiento del sistema correspondiente a dicha clase y a sus objetos.

Sintaxis:
[Modificadores] tipoDevuelto identificadorMetodo([argumentos])
{
// cuerpo del método
}

Los modificadores (public, protected, private, final, static) y los argumentos (tipo primitivo, objeto) son opcionales.

tipoDevuelto: puede ser void, un tipo primitivo (int, float,…) o una referencia.

Para indicar que una función se comporta como un procedimiento indicaremos con void que ésta no devuelve nada.
No es necesario declarar el tipo de los parámetros debido a que Java comprueba dichos tipos en tiempo de ejecución.
Los métodos están todos al mismo nivel, esto quiere decir que no se pueden definir métodos dentro de métodos.



Métodos de paso de parámetros

En Java todos los parámetros son pasados por valor, excepto los objetos que se pasan por referencia.
La no existencia de punteros no permite el paso por referencia de escalares (sí como parte de un objeto).
Java no ofrece nada parecido a const, en cuanto a lo que al paso de parámetros se refiere.



Subprogramas como parámetros


Los métodos no se pueden pasar como parámetro a un método en Java. Pero si se podría pasar un objeto a un método y luego llamar a los métodos del objeto.

Sobrecarga de subprogramas

En Java se permite definir métodos con el mismo nombre siempre que difieran en los argumentos de entrada (ya sea en orden, número y/o tipo de éstos) o en el tipo que devuelven.




Subprogramas polimórficos



Polimorfismo: característica que permite que métodos con el mismo nombre puedan efectuar acciones distintas.


Se puede clasificar el polimorfismo en dos grandes clases:


Polimorfismo estático (o polimorfismo ad hoc) es aquél en el que los tipos a los que se aplica el polimorfismo deben ser explicitados y declarados uno por uno antes de poder ser utilizados. En Java existe el polimorfismo ad hoc gracias a la sobrecarga de métodos.


Polimorfismo dinámico (o polimorfismo paramétrico) es aquél en el que el código no incluye ningún tipo de especificación sobre el tipo de datos sobre el que se trabaja. Así, puede ser utilizado a todo tipo de datos compatible. En Java una superclase, combinando la herencia con la sobrecarga de métodos, puede definir la forma general de los métodos que serán utilizados por todas sus subclases.




Referencias utilizadas

Abstracción funcional
Polimorfismo
Características de Java
El lenguaje Java
Sobrecarga de métodos

Tutorial de Java

martes, noviembre 28, 2006

Competencias transversales y específicas

Competencias transversales genéricas
  • Trabajo en equipo
  • Aprendizaje autónomo
  • Capacidad de análisis y síntesis
  • Adaptación a nuevas situaciones

Competencias específicas
  • Programación
  • Ingeniería del software
  • Capacidad para entender y evaluar especificaciones internas y externas
  • Documentación técnica

lunes, noviembre 13, 2006

Conceptos sobre el paradigma declarativo

El paradigma declarativo es una forma de programación que implica la descripción de un problema dado en lugar de proveer una solución para dicho problema. Algunas características de los lenguajes que utilizan este paradigma son:

  • El orden de la ejecución no resulta importante debido a que no existen efectos colaterales; es decir, que al calcular un valor, resulta imposible afectar el cálculo de otros y con esto se puede afirmar que cualquier secuencia de ejecución deberá conducir al mismo resultado.
  • En un lenguaje declarativo no importa la forma de llegar a la solución; es decir, el programador debe concentrarse en la lógica del algoritmo, más que en el control de la secuencia.
  • Los programas están formados por un conjunto de definiciones o ecuaciones, las cuales describen lo que debe ser calculado, no en sí la forma de hacerlo.
  • Las variables sólo pueden tener asignado un solo valor a lo largo de la ejecución del programa, lo cual implica que no puede existir asignación destructiva. Debido a esto, cobra especial importancia el uso del anidamiento y la recursividad.
Referencias utilizadas:

Paradigmas de programación
Tipos de lenguajes de programación

miércoles, noviembre 08, 2006

Conceptos sobre el paradigma imperativo

Los programas imperativos son un conjunto de instrucciones que le indican al computador cómo realizar una tarea.

* Concepto de celda de memoria ("variable") para almacenar valores. El componente principal de la arquitectura es la memoria, compuesto por un gran número de celdas donde se almacenan los datos. Las celdas tienen nombre (concepto de variable) que las referencian, y sobre los que se producen efectos de lado y definiciones de alias.

* Operaciones de asignación. Estrechamente ligado a la arquitectura de la memoria, se encuentra la idea de que cada valor calculado debe ser "almacenado", es decir asignado a una celda. Esta es la razón de la importancia de la sentencia de asignación en el paradigma imperativo. Las nociones de celda de memoria y asignación en bajo nivel, se tienden a todos los lenguajes de programación y fuerzan en los programadores un estilo de pensamiento basado en la arquitectura Von Neumann.

* Repetición. Un programa imperativo, normalmente realiza su tarea ejecutando repetidamente una secuencia de pasos elementales, ya que en este modelo computacional la única forma de ejecutar algo complejo es repitiendo una secuencia de instrucciones.

*Se fija completamente el orden en el que se deben realizar las operaciones con ayuda de unos patrones de
control del flujo de ejecución (secuencia, alternativa y ciclo) que sirven para construir el esqueleto de las rutinas.

Referencias utilizadas:
http://www.um.es/docencia/barzana/IAGP/Iagp3.html#BM4
http://www.lcc.uma.es/~jmmb/declarativa/Paradigmas.pdf
http://www.wikilearning.com/paradigma_imperativo-wkccp-3618-4.htm

Conceptos básicos del Paradigma de Orientacion Objetos

1. Abstracción:
La abstracción es la propiedad que permite representar las características esenciales de un objeto, sin preocuparse de las restantes características (no esenciales). Abstracción es la técnica de quitarle a una idea o a un objeto todos los acompañamientos innecesarios hasta que los deja en una forma esencial y mínima. Una buena abstracción elimina todos los detalles poco importantes y le permite enfocarse y concentrarse en los detalles importantes.

2 .Encapsulamiento
El Encapsulamiento o encapsulación es el proceso de ocultar todos los secretos de un objeto que no contribuyen a sus características esenciales.
La encapsulación también le permite controlar la forma en que se utilizan los datos y los procedimientos. Puede utilizar modificadores de acceso, como Private o Protected, para evitar que los procedimientos externos ejecuten métodos de clase o lean y modifiquen datos en propiedades y campos. Usted debe declarar los detalles internos de una clase como Private para evitar que sean utilizados fuera de su clase; a esta técnica se le llama ocultamiento de datos.

3 .Modularidad:
La Modularidad es la propiedad de un sistema que permite su descomposición en un conjunto de módulos cohesivos y débilmente acoplados. Por supuesto no todos los módulos son iguales: tomar un programa monolítico y separarlo de forma aleatoria en archivos no es óptimo. Se debe tener en cuenta los conceptos asociados de dependencia, acoplamiento, cohesión, interfaz, encapsulación y abstracción. Una vez identificado lo que es un buen módulo, se puede contemplar la reutilización de un buen módulo como componente.

4. Polimorfismo
Es la propiedad significativa de los lenguajes de programación orientados a objetos. Es la propiedad que indica, literalmente, la posibilidad de que una entidad tome muchas formas. En términos prácticos, el polimorfismo permite referirse a objetos de clases diferentes mediante el mismo elemento de programa y realizar la misma operación de diferentes formas, según sea el objeto que se referencia en ese momento.


Referencias:

Presentación

Este Blog ha sido creado para el seguimiento de la asignatura LPR por parte del grupo 28 cuyos miembros son : LMALVAREZ, pachon, RRLOPEZ.

Un saludo.