Ingeniería en
sistemas computacionales
Departamento de
sistemas y computación
Nombre de los integrantes:
Adela Gpe. Acosta Cruz
Selene Izumi Komukai Lucero
Samuel Arturo Villegas Palacios
|
No. de Control:
13510621
1310674
13510739
|
Nombre del curso:
Programación Lógica y funcional.
|
Nombre del Profesor:
Ing. Manuel de Jesús Matuz Cruz
|
Periodo: Enero/ Junio
|
Actividad: 7
|
Fecha: 17 de Febrero 2017
|
Instrucciones.
R
|
eporte
de la unidad 1. Conceptos Fundamentales.
Desarrollo.
1.1. Estilos de
programación.
El estilo de programación imperativa (es
decir, la programación a través de acciones que modifican el estado del
computador) ha dominado elpanorama de la programación desde sus inicios; los
lenguajes de más amplio uso están basados en este paradigma: Fortran, e, C++,
Pascal, Basic, etc. Una razón fundamental de este dominio reside en que los
lenguajes imperativos son más cercanos a la forma como realmente funciona la
máquina. Existen otros paradigmas de programación diferentes al imperativo como
la programación funcional y la programación lógica, cuyo estudio, desarrollo y
uso han estado principalmente restringidos al ámbito académico.
La programación funcional, es casi tan
antigua como la imperativa; el primer lenguaje funcional, LlSP, fue
desarrollado en la misma época en la que se desarrolló FORTRAN. Sin embargo, la
programación funcional ha estado tradicionalmente circunscrita a áreas de
aplicación específicas como la inteligencia artificial y la computación
simbólica. (R., 1958) G (F.) [1]
Existen otros paradigmas de programación
diferentes al imperativo como la programación funcional y la programación
lógica, cuyo estudio, desarrollo y uso han estado principalmente restringidos
al ámbito académico. La programación funcional, es casi tan antigua como la
imperativa; el primer lenguaje funcional, LlSP, fue desarrollado en la misma
época en la que se desarrolló FORTRAN. Sin embargo, la programación funcional
ha estado tradicionalmente circunscrita a áreas de aplicación específicas como
la inteligencia artificial y la computación simbólica.(R., 1958) [2]
Figura 1.1 Concepto de Estilo de programación representado en mapa
conceptual.
1.2 Evaluación de
expresiones.
Es una subrutina o subprograma(
también llamada procedimiento, función o rutina), como idea general, se
presenta como un sub-algoritmo que forma parte del algoritmo principal, el cual
permite resolver una tarea específica.
Las
expresiones se evalúan de acuerdo con la presidencia de los operadores. Ante
una secuencia de operadores de igual precedencia, la evaluación se realiza
según el orden de escritura, de izquierda a derecha. El orden de evaluación
puede modificarse usando paréntesis.
Tipos de
expresiones .
Dentro de las
expresiones distinguimos dos clases según el tipo de datos que devuelven que
devuelven al evaluarlas :
Expresiones
numéricas.
Son expresiones en las que
solamente aparecen operadores aritméticos.
( +, -, *, /,
%3 ) , conectando términos de tipo numérico exclusivamente.
Una expresión
lógica.
Es aquella en la cual el resultado se da en
términos de verdadero o falso. Generalmente una expresión lógica se construye a
partir de expresiones comparativas (dos expresiones numéricas relacionadas
mediante algún operador relacional), de variables y/o literales booleanos, los
cuales se conectan mediante operadores lógicos. Los operadores de comparación
usados en programación son los siguientes:
mayor que
(>), menor que (<), igual (=), mayor o igual que (>=), menor o igual
que (<=) y diferente (<>); mientras que los operadores lógicos usados
son: o (ı), y (&) y la negación (~).
Las expresiones se utilizan
fundamentalmente en las asignaciones y en las partes condicionales de la
sentencias If, While y Repeat. (básicos) [3]
Figura 1.2 conceptos de Evaluación de
Expresiones representado en mapa conceptual.
1.3 Definición de
funciones.
Las funciones son subrutinas que pueden tener
o no argumentos pero que siempre devuelven un valor de retorno. Así pues, las
invocaciones a funciones son expresiones de un tipo determinado y deben
emplearse igual que cualquier expresión de su tipos; es decir, una llamada a
función puede formar parte de una expresión aritmética, lógica o de cadena en
función de su tipo, puede constituir la parte derecha de una sentencia de
asignación, aparecer en una sentencia de salida o constituir un argumento para
otro subprograma. Por otro lado, las llamadas a funciones nunca pueden formar
una sentencia aislada ni constituir la parte izquierda de una sentencia de
asignación. Las invocaciones a funciones siguen, tanto en la notación
algorítmica como en FORTRAN, la siguiente sintaxis:
nombre_función ([argumento][,argumento]*)
Como se puede ver, es posible tener funciones
con 0 o más argumentos, las funciones que se utilizarán en nuestros algoritmos
pueden estar definidas por el propio usuario o, en muchas ocasiones, ser funciones
estándar, esto es, definidas por el propio compilador. (Líbano) [4]
1.4.
Disciplina de tipos.
Las
principales características de los lenguajes funcionales con disciplina de
tipos son las siguientes:
1.-
Toda expresión tiene un tipo.
2.-
Los tipos se infieren, es decir se comprueban, de forma estática, en tiempo de
compilación.
3.-
Los tipos utilizados pueden ser básicos o construidos.
Como puede observarse en el ejemplo,
se ha definido un tipo de datos lista, mediante una declaración de datos, en la
cual aparecen los símbolos”[ ]” y “:” que son denominados los constructores del
tipo y aparece también el símbolo t, que se denomina variable de tipo. Esto
implica que es posible construir listas de diferentes con diferentes tipos de
datos. En programación funcional, las expresiones utilizadas denotan valores, y
el valor de una expresión depende de un contexto. En el caso de utilizar una
función, cada valor de su domino está asociado a un único valor en el codomino.
Esta propiedad se denomina transparencia referencial y consiste en que el valor
de una expresión es independiente del orden de evaluación y del modo de uso de
esta expresión como subexpresión de otra.
Una característica muy importante de
las funciones consiste en la operación de composición. La composición de
funciones es una de las principales técnicas utilizadas en la programación
funcional, debido a que una de las formas más simples de estructurar un
programa consiste en realizar cierto número de operaciones una después de otra,
esto se consigue mediante la composición de funciones en la cual el resultado
de una función es la entrada de otra. (Castro, Junio 2005. ) [5]
Figura 1.4 conceptos de Disciplina de tipos
representado en mapa conceptual.
1.5. Tipos de datos.
Cuando nos planteamos la resolución de
problemas mediante computador lo más usual es que queramos tratar con datos que
son variables y cuantificables, es decir, que toman un conjunto de valores distintos
entre un conjunto de valores posibles, además de poder almacenar los valores de
estos datos en alguna forma aceptable para el computador (ya sea en la memoria
o en periféricos de almacenamiento externo). En un lenguaje de programación el
concepto de tipo de datos se refiere al conjunto de valores que puede tomar una
variable. Esta idea es similar a la que se emplea en matemáticas, donde
clasificamos las variables en función de determinadas características,
distinguiendo entre números enteros, reales o complejos. Sin embargo, en
matemáticas, nosotros somos capaces de diferenciar el tipo de las variables en
función del contexto, pero para los compiladores esto resulta mucho más
difícil. Por este motivo debemos declarar explícitamente cada variable como
perteneciente a un tipo. Este mecanismo es útil para que el computador almacene
la variable de la forma más adecuada, además de permitir verificar que tipo de
operaciones se pueden realizar con ella. Se suelen diferenciar los tipos de
datos en varias categorías:
Tipos elementales, que son aquellos cuyos
valores son atómicos y, por tanto, no pueden ser descompuestos en valores más
simples.
Entre
las variables de estos tipos siempre encontramos definidas una serie de
operaciones básicas: asignación de un valor, copia de valores entre variables y
operaciones relacionales de igualdad o de orden (por lo tanto, un tipo debe ser
un conjunto ordenado). Los tipos más característicos son:
booleanos
= {verdadero, falso}
enteros
= {… -2, -1, 0, +1, +2, …}
reales
= {… -1.0, …, 0.0, …, +1.0, …}
caracteres
= {… ‘a’, ‘b’, …, ‘Z’, …}. (Oliag, 1995.) [6]
Bibliografía
Castro, J. d. (Junio 2005. ). Eliminación de Variables Extra en
Programación Lógico Funciona. .de Madrid. (España) : Departamento de
Sistemas Informáticos y Programación Universidad Complutense .
Líbano, R. E. Subprogramas.
Capítulo 3.
básicos, C. Los datos en
programación Módulo 2.
F., G. O. Programación funcional:
Conceptos y perpectivas.
Oliag, S. T. (1995.). Curso de
programación en C++ . . EUI (UPV) Valencia: Apuntes de clase .. Pág 2 .
R., C. H. (1958). Combinatory
Logic. NortHolland.
No hay comentarios.:
Publicar un comentario