Programacin Lgica y Funcional
Profesor:
Ing. Armando Aragn Lpez
Alumno:
Jimenez Sibaja Jairo Osman
Trabajo:
Tipos de Programacin y Datos
OAXACA DE JUREZ, OAX. 01 DE OCTUBRE DE 2013
Programacin declarativa
La Programacin Declarativa, en contraposicin a la programacin imperativa es un paradigma de programacin que est basado en el desarrollo de programas especificando o "declarando" un conjunto de condiciones, proposiciones, afirmaciones, restricciones, ecuaciones o transformaciones que describen el problema y detallan su solucin. La solucin es obtenida mediante mecanismos internos de control, sin especificar exactamente cmo encontrarla (tan slo se le indica a la computadora qu es lo que se desea obtener o qu es lo que se est buscando). No existen asignaciones destructivas, y las variables son utilizadas con Transparencia referencial
Diferencia entre imperativo y declarativo
En la programacin imperativa se describe paso a paso un conjunto de instrucciones que deben ejecutarse para variar el estado del programa y hallar la solucin, es decir, un algoritmo en el que se describen los pasos necesarios para solucionar el problema.
En la programacin declarativa las sentencias que se utilizan lo que hacen es describir el problema que se quiere solucionar, pero no las instrucciones necesarias para solucionarlo. Esto ltimo se realizar mediante mecanismos internos de inferencia de informacin a partir de la descripcin realizada.
Tipos
Existen varios tipos de lenguajes declarativos:
Los lenguajes lgicos, como Prolog. Los lenguajes algebraicos, como Maude y SQL Los lenguajes funcionales, como Haskell
Ventajas
Se ha dicho que los lenguajes declarativos tienen la ventaja de ser razonados matemticamente, lo que permite el uso de mecanismos matemticos para optimizar el rendimiento de los programas.
Elegancia, claridad, sencillez, potencia y concisin. Semnticas claras, simples y matemticamente bien fundadas. Cercanos al nivel de abstraccin de las especificaciones formales/informales de los
problemas a resolver. Referencialmente transparentes: Comportamiento matemtico adecuado que
permite razonar sobre los programas. Soportan tcnicas muy avanzadas de desarrollo, mantenimiento y validacin de
programas. Altas dosis de paralelismo implcito. Aplicaciones variadas y de gran inters. Son fiables, elegantes y expresivos.
Caractersticas
La Programacin Declarativa, en contraposicin a la Programacin Imperativa es un paradigma de programacin que est basado en el desarrollo de programas especificando o "declarando" un conjunto de condiciones, proposiciones, afirmaciones, restricciones, ecuaciones o transformaciones que describen el problema y detallan su solucin.
La solucin es obtenida mediante mecanismos internos de control, sin especificar exactamente cmo encontrarla (tan slo se le indica a la computadora que es lo que se desea obtener o que es lo que se est buscando). No existen asignaciones destructivas, y las variables son utilizadas con transparencia referencial
Aunque en la Programacin Declarativa cabe ms de un paradigma de programacin, se ha optado por centrarla en el estudio de la denominada Programacin Lgica, el cual est basado en el clculo de proposiciones y sus relaciones lgicas.
La programacin declarativa es un estilo de programacin en el que el programador especifica qu debe computarse ms bien que cmo deben realizarse los cmputos.
"programa = lgica + control" (Kowalski) "algoritmos + estructuras de datos = programas" (Wirth)
El componente lgico determina el significado del programa mientras que el ncomponente de control solamente afecta a su eficiencia.
La tarea de programar consiste en centrar la atencin en la lgica dejando de lado el control, que se asume automtico, al sistema.
La caracterstica fundamental de la programacin declarativa es el uso de la lgica como lenguaje de programacin:
Un programa es una teora formal en una cierta lgica, esto es, un conjunto de frmulas lgicas que resultan ser la especificacin del problema que se pretende resolver, y
la computacin se entiende como una forma de inferencia o deduccin en dicha lgica. Los principales requisitos que debe cumplir la lgica empleada son:
Disponer de un lenguaje que sea suficientemente expresivo. Disponer de una semntica operacional (un mecanismo de cmputo que permita
ejecutar los programas). Disponer de una semntica declarativa que permita dar un significado a los
programas de forma independiente a su posible ejecucin.
Programacin lgica
La programacin lgica es un tipo de paradigmas de programacin dentro del paradigma de programacin declarativa. La programacin funcional se basa en el concepto de funcin (que no es ms que una evolucin de los predicados), de corte ms matemtico. La programacin lgica gira en torno al concepto de predicado, o relacin entre elementos.
Motivacin
Histricamente, los ordenadores se han programado utilizando lenguajes muy cercanos a
las peculiaridades de la propia mquina: operaciones aritmticas simples, instrucciones de
acceso a memoria, etc. Un programa escrito de esta manera puede ocultar totalmente su
propsito a la comprensin de un ser humano, incluso uno entrenado. Hoy da, estos
lenguajes pertenecientes al paradigma de la Programacin imperativa han evolucionado de
manera que ya no son tan crpticos.
En cambio, la lgica matemtica es la manera ms sencilla, para el intelecto humano, de
expresar formalmente problemas complejos y de resolverlos mediante la aplicacin de
reglas, hiptesis y teoremas. De ah que el concepto de "programacin lgica" resulte
atractivo en diversos campos donde la programacin tradicional es un fracaso.
Campos de aplicacin
La programacin lgica encuentra su hbitat natural en aplicaciones de inteligencia artificial
o relacionada: Sistemas expertos, donde un sistema de informacin imita las
recomendaciones de un experto sobre algn dominio de conocimiento.
Su principal uso se basa en las aplicaciones de inteligencia artificial o similar.
Demostracin automtica de teoremas, donde un programa genera nuevos teoremas
sobre una teora existente.
Reconocimiento de lenguaje natural, donde un programa es capaz de comprender (con
limitaciones) la informacin contenida en una expresin lingstica humana.
Etc.
La programacin lgica tambin se utiliza en aplicaciones ms "mundanas" pero de manera
muy limitada, ya que la programacin tradicional es ms adecuada a tareas de propsito
general.
Fundamentos
La mayora de los lenguajes de programacin lgica se basan en la teora lgica de primer
orden, aunque tambin incorporan algunos comportamientos de orden superior como
la lgica difusa. En este sentido, destacan los lenguajes funcionales, ya que se basan en
el clculo lambda, que es la nica teora lgica de orden superior que es
demostradamente computable (hasta el momento).
En qu consiste (ejemplo)
La programacin lgica permite formalizar hechos del mundo real, por ejemplo:
las aves vuelan
los pinginos no vuelan
"pichurri" es un ave
"sandokan" es un perro
"alegra" es un ave
y tambin reglas o restricciones:
una mascota vuela si es un ave y no es un pingino
Ante dicho "programa" es posible establecer hiptesis que no son ms que preguntas o
incgnitas, por ejemplo:
"pichurri" vuela ?
qu mascotas vuelan ?....
Gracias a que la lgica de primer orden es computable, el ordenador ser capaz de verificar
la hiptesis, es decir, responder a las incgnitas:
Es cierto que "pichurri" vuela.
"pichurri" y "alegra" vuelan.
Obsrvese que el programa lgico no solamente es capaz de responder si una determinada
hiptesis es verdadera o falsa. Tambin es capaz de determinar que valores de la incgnita
hacen cierta la hiptesis.
Este ejemplo es claramente acadmico. Sin embargo, consideremos el siguiente ejemplo:
el sistema de control de semforos de una ciudad.
El estado de cada uno de los semforos (verde, rojo o mbar) constituye los hechos del
mundo real. El programa en s consiste en unas pocas reglas de sentido comn:
determinados semforos no pueden permanecer simultneamente en verde, un semforo
solamente puede transitar de verde a mbar y de mbar a rojo, etc. La hiptesis es el estado
en el que deberan estar cada uno de los semforos en el siguiente instante de tiempo.
ste es un ejemplo imposible de resolver mediante programacin tradicional, ya que la
lgica subyacente al comportamiento de los semforos en su conjunto queda enmascarada
por simples rdenes imperativas del tipo "cambiar color de tal o cual semforo".
Programacin funcional
En ciencias de la computacin, la programacin funcional es un paradigma de programacin declarativa basado en la utilizacin de funciones aritmticas que no maneja datos mutables o de estado. Enfatiza la aplicacin de funciones, en contraste con el estilo de programacin imperativa, que enfatiza los cambios de estado. La programacin funcional tiene sus races en el clculo lambda, un sistema formal desarrollado en los 1930s para investigar la definicin de funcin, la aplicacin de las funciones y la recursin. Muchos lenguajes de programacin funcionales pueden ser vistos como elaboraciones del clculo lambda.
En la prctica, la diferencia entre una funcin matemtica y la nocin de una "funcin" utilizada en la programacin imperativa es que las funciones imperativas pueden tener efectos secundarios, al cambiar el valor de clculos realizados previamente. Por esta razn carecen de transparencia referencial, es decir, la misma expresin sintctica puede resultar en valores diferentes en diferentes momentos dependiendo del estado del programa siendo ejecutado. Con cdigo funcional, en contraste, el valor generado por una funcin depende exclusivamente de los argumentos alimentados a la funcin. Al eliminar los efectos secundarios se puede entender y predecir el comportamiento de un programa mucho ms fcilmente, y esta es una de las principales motivaciones para utilizar la programacin funcional.
Caractersticas
Los programas escritos en un lenguaje funcional estn constituidos nicamente por definiciones de funciones, entendiendo stas no como subprogramas clsicos de un lenguaje imperativo, sino como funciones puramente matemticas, en las que se verifican ciertas propiedades como la transparencia referencial (el significado de una expresin depende nicamente del significado de sus subexpresiones), y por tanto, la carencia total de efectos colaterales.
Otras caractersticas propias de estos lenguajes son la no existencia de asignaciones de variables y la falta de construcciones estructuradas como la secuencia o la iteracin (lo que obliga en la prctica a que todas las repeticiones de instrucciones se lleven a cabo por medio de funciones recursivas).
Existen dos grandes categoras de lenguajes funcionales: los funcionales puros y los hbridos. La diferencia entre ambos estriba en que los lenguajes funcionales hbridos son menos dogmticos que los puros, al admitir conceptos tomados de los lenguajes imperativos, como las secuencias de instrucciones o la asignacin de variables. En contraste, los lenguajes funcionales puros tienen una mayor potencia expresiva, conservando a la vez su transparencia referencial, algo que no se cumple siempre con un lenguaje funcional hbrido.
Ventajas de usar un paradigma funcional
Entre las ventajas que suelen citarse de usar un paradigma funcional en la programacin de computadoras, estn las siguientes:
Ausencia de efectos colaterales Proceso de depuracin menos problemtico Pruebas de unidades ms confiables Mayor facilidad para la ejecucin concurrente
Lenguajes funcionales
Entre los lenguajes funcionales puros, cabe destacar a Haskell y Miranda. Los lenguajes funcionales hbridos ms conocidos son Scala, Lisp, Scheme, Ocaml, SAP y Standard ML (estos dos ltimos, descendientes del lenguaje ML). Erlang es otro lenguaje funcional de programacin concurrente. Mathematica permite la programacin en mltiples estilos, pero promueve la programacin funcional. R tambin es un lenguaje funcional dedicado a la estadstica.2 Recientemente Microsoft Research est trabajando en el lenguaje F# (Functional#).
Lenguaje de programacin multiparadigma
Un lenguaje de programacin multiparadigma es el cual soporta ms de un paradigma de programacin. Segn lo describe Bjarne Stroustrup, permiten crear programas usando ms de un estilo de programacin.
El objetivo en el diseo de estos lenguajes es permitir a los programadores utilizar el mejor paradigma para cada trabajo, admitiendo que ninguno resuelve todos los problemas de la forma ms fcil y eficiente posible.
Por ejemplo, lenguajes de programacin como C++, Genie, Delphi, Visual Basic o PHP, combinan el paradigma imperativo con la orientacin a objetos. Incluso existen lenguajes multiparadigma que permiten la mezcla de forma natural, como en el caso de Oz, que tiene subconjuntos (particularidad de los lenguages lgicos), y otras caractersticas propias de lenguages de programacin funcional y de orientacin a objetos. Otro ejemplo son los lenguajes como Scheme (paradigma funcional) o Prolog (paradigma lgico), que cuentan con estructuras repetitivas, propias del paradigma imperativo.
Tipo de dato
Tipo de dato informtico es un atributo de una parte de los datos que indica al ordenador (y/o al programador) algo sobre la clase de datos sobre los que se va a procesar. Esto incluye imponer restricciones en los datos, como qu valores pueden tomar y qu operaciones se pueden realizar. Tipos de datos comunes son: enteros, nmeros de coma flotante (decimales), cadenas alfanumricas, fechas, horas, colores, etc.
Por ejemplo, por lo general el tipo "int" representa un conjunto de enteros de 32 bits cuyo rango va desde el -2.147.483.648 al 2.147.483.647, as como las operaciones que se pueden realizar con los enteros, como son la suma, la resta, y la multiplicacin. Los colores, por su parte, se representan como tres bytes denotando la cantidad de rojo, verde y azul, y una cadena de caracteres representando el nombre del color; las operaciones permitidas en este caso incluyen la adicin y la sustraccin, pero no la multiplicacin.
ste es un concepto propio de la informtica, ms especficamente de los lenguajes de programacin, aunque tambin se encuentra relacionado con nociones similares de la matemtica y la lgica.
En un sentido amplio, un tipo de datos define un conjunto de valores y las operaciones sobre estos valores. Casi todos los lenguajes de programacin explcitamente incluyen la notacin del tipo de datos, aunque lenguajes diferentes pueden usar terminologas diferentes. La mayor parte de los lenguajes de programacin permiten al programador definir tipos de datos adicionales, normalmente combinando mltiples elementos de otros tipos y definiendo las operaciones del nuevo tipo de dato. Por ejemplo, un programador puede crear un nuevo tipo de dato llamado "Persona" que especfica que el dato interpretado como Persona incluir, por ejemplo, un nombre y una fecha de nacimiento.
Un tipo de dato puede ser tambin visto como una limitacin impuesta en la interpretacin de los datos en un sistema de tipificacin, describiendo la representacin, la interpretacin y la estructura de los valores u objetos almacenados en la memoria del ordenador. El sistema de tipificacin usa informacin de los tipos de datos para comprobar la verificacin de los programas que acceden o manipulan los datos.
TIPOS DE DATOS COMPUESTOS
Un tipo compuesto no es ms que un tipo de datos que es capaz de almacenar una
informacin.
Arrays
Los arrays quizs sean la forma ms simple de tipos de datos compuestos.
Un array es una coleccin ordenada de elementos de un mismo tipo de datos, agrupados
de forma consecutiva en memoria. Cada elemento del array tiene asociado un ndice, que
no es ms que un nmero natural que lo identifica inequvocamente y permite al
programador acceder a l.
Estructuras
Una estructura (struct) es un tipo de datos compuesto que agrupa un conjunto de tipos de
datos (no necesariamente iguales) en un nico tipo.
La anterior definicin, que en un principio se nos puede antojar oscura, oculta un concepto
realmente simple, que vamos a explicar mediante el siguiente ejemplo: supongamos que
estamos escribiendo un software de gestin de miembros de asociaciones universitarias.
Obviamente necesitaremos almacenar y manipular datos sobre personas, tales como
nombre, DNI, edad, etc. Podramos aproximarnos al problema declarando estas variables
por separado en nuestro programa:
Uniones
Una unin es un tipo de datos compuesto que puede almacenar valores de diferentes tipos,
aunque no a la vez.
Las uniones (unions) tienen un cometido parecido a las estructuras, esto es, agrupar en
una sola variable varios valores. Sin embargo, al contrario que las estructuras, las uniones
slo pueden guardar un valor a la vez. Esto significa que si asignamos valor a uno de los
componentes de una variable unin, los dems componentes dejarn de tener un valor
asignado.
TIPOS DE DATOS ABSTRACTOS
Un tipo de datos definido por el programador se denomina tipo abstracto de datos (TAD)
para distinguirlo de los tipos predefinidos de datos. Los tipos abstractos de datos estn
formados por los datos (estructuras de datos) y las operaciones (procedimientos o
funciones) que se realizan sobre esos datos. El conjunto de operaciones definidas sobre el
TAD debe ser cerrado, es decir, slo se debe acceder a los datos mediante las operaciones
abstractas definidas sobre ellos. La abstraccin de datos slo permite acceder a ellos de
manera controlada.
Las principales ventajas que nos aportan los TAD son las siguientes:
Mejoran la conceptualizacin y hacen ms claro y comprensible el cdigo.
Hacen que el sistema sea ms robusto.
Reducen el tiempo de compilacin.
Permiten modificar la implementacin sin que afecte al interfaz pblico.
Facilitan la extensibilidad.
TIPO PUNTERO Y REFERENCIA
Una variable contiene un valor especfico, un puntero lo que contiene es la direccin de la
variable que contiene el valor especfico. Estas direcciones se expresan por medio de un
nmero cuyo valor cobra sentido cuando se expresa en el sistema hexadecimal. Los
punteros tienen la caracterstica de ocupar solamente 4 bytes de memoria
independientemente del tamao del tipo de dato al que apunten, por lo que su utilizacin
hace a los programas ms eficientes.
Una referencia es una especie de alias o "alter ego" del objeto. Es un recurso para pasar
argumentos a funciones permitiendo que los argumentos no sean simples variables locales
de la funcin, sino objetos del mbito que realiza la invocacin, lo que permite que la funcin
pueda modificar objetos externos a ella.
TIPO DE DATO ALGEBRAICO
En matemticas discretas es usual introducir definiciones de estructuras recursivas dando
los casos de definicin y un axioma de clausura indicando que ninguna otra cosa forma
parte de lo definido.
Por ejemplo, los rboles con informacin en los nodos pueden definirse como sigue:
Sea T un conjunto. Los rboles con informacin en los nodos son todos los valores que se
pueden construir con las reglas siguientes.
El rbol vaco es un rbol y es representado con la constante AVacio.
Si y son rboles, y x es un elemento de T, entonces Nodo( ,x, ) es un rbol.
TIPO DE DATO OBJETO
Un objeto se define como una estructura que encapsula atributos (caractersticas) y
comportamientos (procedimientos) de una entidad con un papel bien definido en una
aplicacin.
Un objeto es sencillamente un tipo abstracto de datos al que se aaden importantes
inovaciones en comparticion de cdigo y reutilizacion. Los mecanismos bsicos de
orientacion a objetos son: objetos, mensajes y mtodos, clases e instancias y herencia.
Cada objeto tiene:
- Estado: Conjunto de valores de los atributos en un instante de tiempo dado. El
comportamiento de un objeto puede modificar el estado de este.
- Comportamiento: Relacionado con su funcionalidad y determina las operaciones que este
puede realizar o a las que puede responder ante mensajes enviados por otros objetos.
- Identidad: Es la propiedad que permite a un objeto diferenciarse de otros. Generalmente
esta propiedad es tal, que da nombre al objeto.
La orientacion a objetos puede describirse como el conjunto de disciplinas que desarrollan
y modelizan software que facilitan la construccion de sistemas complejos a partir de
componentes.
El atractivo intuitivo de la orientacion a objetos es que proporciona conceptos y
herramientas con los cuales se modela y representa el mundo tan fielmente como sea
posible. Las ventajas de la orientacion a objetos son muchas en programacion y modelacion
de datos.
TIPO DE DATO FUNCIN
Funciones primitivas
Describimos una serie de funciones como primitivas en el sentido de que estn definidas
en la norma del lenguaje, para distinguirlas de las funciones creadas por el usuario a partir
de aqullas. En LISP se llama a una funcin mediante la siguiente sintaxis:
(NOMBREFUNCION ... )
La suma de dos nmeros sera (+ 5 1)
Para evaluarla LISP procede de la siguiente manera:
a. Lee la expresin completa (+ 5 1)
b. La interpreta como una llamada a una funcin y la identifica como SUMAR
c. Interpreta 5 como primer argumento y 1 como segundo. El parntesis de cierre le indica
que no hay ms argumentos.
d. La funcin se evala para 5 y 1, devolviendo 6 como resultado, que a falta de otro
destino es impreso en pantalla.
Argumentos funcionales
En LISP una funcin es adems un objeto de datos que puede ser suministrado a otra
funcin como argumento. Esta posibilidad contribuye a la facilidad con que LISP se puede
adaptar a las necesidades de cualquier programa mediante la incorporacin de nuevas
funciones que en su comportamiento resultan idnticas a las primitivas.
Un programa que admite funciones como datos debe tambin suministrar alguna manera
de invocarlas. Esto se logra en Visual LISP mediante la funcin APPLY.
Funciones aritmticas bsicas
Las funciones aritmticas que tienen como argumento un nmero devuelven distintos
valores dependiendo de que el argumento proporcionado sea un nmero entero o real. Si
todos los argumentos son enteros, el valor devuelto ser entero. Por el contrario, si alguno
o todos los argumentos son reales, el valor devuelto ser un nmero real. Por ejemplo:
(/ 12 5) devuelve 2, mientras que (/ 12.0 5) devuelve 2.4
Los argumentos de una funcin aritmtica no son necesariamente nmeros. Cualquier otra
funcin que devuelva un nmero como resultado es admisible como argumento de una
funcin aritmtica. Ejemplo (* (+ 1 5)(- 20 10))
Funciones bsicas de tratamiento de cadenas
Para el tratamiento de cadenas tenemos funciones que permiten unificar cadenas
diferentes, extraer subcadenas de una cadena mayor, determinar cuntos caracteres hay
en una cadena y transformar los caracteres a maysculas o minsculas. El predicado
WCMATCH permite determinar la semejanza de cadenas utiliando comodines.
Funciones bsicas de acceso a listas
Una lista es una manera de representar un conjunto de tomos y de otras listas. Una lista
tiene la forma de un parntesis de apertura "(" seguido de una serie de tomos o listas,
seguido por otro parntesis de cierre ")". De manera que cualquier cosa encerrada entre
parntesis ser considerada una lista. Una lista pasada al evaluador LISP ser tratada
como una expresin simblica (S-expresin), es decir, una llamada a funcin y se
considerar el primer trmino de la lista como el nombre de la funcin. Para que una lista
sea tratada como dato y no como una expresin simblica debe estar contenida en la forma
especial QUOTE. Las funciones bsicas cuya comprensin es imprescindible para el
acceso a la informacin contenida en listas se pueden reducir a cuatro: QUOTE, CAR, CDR,
y NTH.
Funciones de construccin de listas
Con las funciones del epgrafe anterior podemos descomponer listas, accediendo a
suscomponentes a distintos niveles de anidacin. Existen otras funciones que podemos
utilizar para componer nuevas listas a base de elementos individuales, ya sean tomos u
otras listas. CONS, LIST y APPEND son funciones que construyen listas por distintos
procedimientos y con resultados diversos, por lo que es necesario distinguirlas bien.
TIPOS SIMPLES
Como su nombre indica son los tipos bsicos. Son los ms sencillos y los ms fciles de
aprender.
Los tipos simples ms bsicos son: entero, lgico, carcter y real. Y la mayora de los
lenguajes de programacin los soportan, no como ocurre con los estructurados que pueden
variar de un lenguaje a otro.
TIPOS ESTRUCTURADOS
Mientras que una variable de un tipo simple slo referencia a un elemento, los estructurados
se refieren a colecciones de elementos.
Las colecciones de elementos que aparecen al hablar de tipos estructurados son muy
variadas: tenemos colecciones ordenadas que se representan mediante el tipo array,
colecciones sin orden mediante el tipo conjunto, e incluso colecciones que contienen otros
tipos, son los llamados registros.
TIPOS ORDINALES (O ESCALARES)
Representan un conjunto finito y linealmente ordenado de valores. Un ejemplo sencillo sera
el intervalo del conjunto de nmeros enteros entre el 0 y el 100. Cada valor que puede
asignarse a un dato tiene una posicin en una serie ordenada. Por lo tanto, existe un primer
y un ltimo valor y cada valor tiene uno que lo precede y otro que lo sigue. La funcin
estndar de TurboPascal Ord devuelve el orden de cada valor en la serie (0, 1, 2, 3, 4,...),
excepto para los valores de tipo entero que devuelve el propio nominal.
TIPOS PREDEFINIDOS
Estos tipos no hay que mencionarlos en la declaracin de tipos ya que estn predefinidos
en el lenguaje TurboPascal.
Enteros
Los tipos enteros predefinidos son tipos escalares, es decir, los valores correspondientes
estn ordenados. Hay varios tipos enteros que se diferencian en dos caractersticas: el
espacio que ocupan en memoria y en el formato de codificacin. Estas dos caractersticas
influyen, a su vez, en el intervalo de representacin.
Tipo Boolean
El tipo de dato Boolean (booleano o lgico) puede tomar nicamente los valores lgicos
False y True. Tiene un tamao de 1 byte
Tipo Char
Un dato de este tipo representa un valor del conjunto de los caracteres del cdigo estndar
ASCII: caracteres alfabticos, dgitos numricos, signos de puntuacin y caracteres de
control. Ocupan 1 byte (8 bits: 256 combinaciones diferentes = 256 caracteres en total).
TIPOS DEFINIDOS POR EL USUARIO
Son tipos de dato que no estn predefinidos por TurboPascal, siendo el propio programador
el que se encarga de definirlos en la seccin de declaraciones de tipos de dato del
programa. Se clasifican en enumerados y subrangos.
Enumerados
Al declararlo, se introduce un nuevo identifica dor para un tipo de dato, a la vez que, se
define los valores o constantes del nuevo tipo dentro de un nmero reducido de alternativas
(256 valores diferentes como mximo). Cada uno de estos posibles valores se convierte en
un identificador de una constante literal del tipo enumerado. Para estos valores, no pueden
utilizarse constantes que tengan otro uso o sean identificadores ya empleados. Como una
de las consecuencias de esta norma, dos tipos enumerados diferentes no pueden compartir
un mismo valor.
Subrangos
Un tipo subrango es un subconjunto de un tipo ordinal ya declarado por el programador
previamente o predefinido en el lenguaje TurboPascal. Es decir, toman valores de cualquier
subconjunto de valores definidos antes en un tipo ordinal (no vale, por ejemplo, un intervalo
numrico real!) indicando su lmite inferior y su lmite superior. La nica limitacin a estos
lmites la da el conjunto de valores correspondiente al tipo de dato en el que est incluido.
TIPOS NO-ORDINALES
Simplificando, podramos reducir los tipos simples no-ordinales al tipo real. Este tipo nos
sirve para declarar variables que pueden tomar valores dentro del conjunto de los nmeros
reales.
A diferencia de los tipos ordinales, los no-ordinales no se pueden contar. No se puede
establecer una relacin uno a uno entre ellos y los nmero naturales. Dicho de otra forma,
para que un conjunto se considere ordinal se tiene que poder calcular la posicin, el anterior
elemento y el siguiente de un elemento cualquiera del conjunto. Por ejemplo: Cul es el
sucesor de 5.12? Ser 5.13, 5.120, 5.121 ...
Fuentes
http://es.wikipedia.org/wiki/Programaci%C3%B3n_declarativa
http://www.ecured.cu/index.php/Programaci%C3%B3n_Declarativa
http://es.wikipedia.org/wiki/Programaci%C3%B3n_l%C3%B3gica
http://users.dsic.upv.es/asignaturas/facultad/prg/prf.html
http://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3n_multiparadigma
http://es.wikipedia.org/wiki/Tipo_de_dato#Tipo_puntero_y_referencia
http://laurel.datsi.fi.upm.es/~rpons/personal/trabajos/curso_c/node74.html
http://laurel.datsi.fi.upm.es/~rpons/personal/trabajos/curso_c/node77.html
http://laurel.datsi.fi.upm.es/~rpons/personal/trabajos/curso_c/node82.html
http://www.davidparedes.es/2009/01/02/tipos-abstractos-de-datos-tad/
http://www.ecured.cu/index.php/Puntero_%28C%2B%2B%29
Programacin Lgica y Funcional
Profesor:
Ing. Armando Aragn Lpez
Alumno:
Jimenez Sibaja Jairo Osman
Trabajo:
Caractersticas de los Lenguajes de Programacin
OAXACA DE JUREZ, OAX. 01 DE OCTUBRE DE 2013
Fortran
Lenguaje de programacin de alto nivel
Procedimental e imperativo
Especialmente adoptado al clculo numrico y a la computacin cientfica
Se utiliza para prediccin numrica del tiempo, anlisis de elementos finitos
Es un lenguaje compacto.
Cobol
Es portable: su estndar no pertenece a ninguna marca concreta y puede ser llevado
a todo tipo de mquinas.
Tiene una gran facilidad de interpretacin y legibilidad.
Tiene una rgida estructura jerrquica
No tiene punteros, funciones ni tipos definidos por el usuario.
Algol
Incorpora ciclos, ya que hasta entonces los programas eran de estructura plana y
secuencial.
Portable de clculos cientficos
Es un lenguaje minimalista, rpidamente implementado y distribuido
Basic
Diseado para permitir escribir programas usando terminales de tiempo compartido.
Permite a los programadores ordenar y buscar a travs de lneas
Permite que la informacin sea introducida con teclado.
Prolog
Est basado en lgica y programacin declarativa.
Lenguaje de programacin orientada a metas.
Se concentra ms en el conocimiento que en los algoritmos.
Pascal
El cdigo lo divide en porciones fcilmente legibles llamadas funciones o
procedimientos.
Est estructurado, fuertemente tipificado.
Sus programas tienen definidos dos partes: declarativa y ejecutiva.
Smalltalk
Lenguaje orientado a objetos.
Implementa la herencia simple y con raz comn.
Alto grado de realizacin de cdigo.
Ada
Sintaxis est inspirada en Pascal, por lo tanto es bastante legible.
Le es indiferente el uso de maysculas y minsculas en los identificadores y
palabras claves.
Todo es el programa es nico procedimiento, que puede contener subprogramas.
Modula-2
Incorpora la modularidad y el encapsulamiento.
Sus bibliotecas se organizan en mdulos.
Para efectuar E/S se encuentra en mdulos de biblioteca.
C++
Cuenta con un conjunto complejo de instrucciones de control.
Permite la agrupacin de instrucciones.
Los argumentos de las funciones se transfieren por valores.
Oberon
Los mdulos con interfaces de tipo a cuadros y la compilacin separada.
Operaciones con cadenas.
Compatibilidad entre todos los tipos numricos.
Eiffel
Lenguaje orientado a objetos, adems de que usa la herencia.
Utiliza la separacin de comandos de consulta, y el de eleccin nica.
Cuenta con un gestor de memoria automtico.
Programacin genrica con o sin restricciones.
Java
Sensible a maysculas y minsculas.
Ignora los comentarios y espacios en blanco.
Utiliza la herencia y los ciclos.
Mercury
Lenguaje lgico funcional basado en la programacin declarativa.
Usa un sistema esttico de chequeo de tipos similares al haskell.
Lenguaje puro basado en Prolog.
Delphi
Es la evolucin del clsico Pascal pero orientado a Objetos.
Basado en componentes y eventos para proporcionar una interfaz.
No distingue entre maysculas y minsculas.
Lisp
Lenguaje multiparadigma y de alto nivel, homoiconico
Sintaxis completamente entre parntesis.
Basado en el clculos Lambda.
Utiliza las estructuras de datos de rbol, almacenando automticamente.
El cdigo del programa es escrito como expresiones entre parntesis.
Scheme
Sus estructuras de datos no son inmutable (impuro).
Su filosofa es decididamente minimalista.
Usa un ambiente esttico y lxico.
Ofrece gestin automtica de memoria.
Clos
Dinmico dirigido a objetos.
Las estructuras de los objetos se pueden modificar en tiempo de ejecucin.
Permite herencia mltiple y resolucin mltiple.
Iswin
Incorpora componentes imperativos a un lenguaje aplicativo
Extiende lenguajes aplicativos eager.
Asume el conjunto de infinito de referencia.
Haskell
Incluye muchas de las ltimas innovaciones en el desarrollo de los lenguajes
funcionales.
Tratamiento semntico e la sobrecarga.
Facilidad en la definicin de tipos abstractos de datos.
Erlang
Lenguaje de programacin concurrente incluye maquinas virtual y bibliotecas.
Con evaluacin estricta, asignacin nica y tipado dinmico.
Proporciona el cambio en caliente de cdigo.
La creacin y gestin de procesos es trivial.
Miranda
Lenguaje de programacin funcional.
Los argumentos se pasan a las funciones sin evaluar.
Consiste en un conjunto de declaraciones de ecuaciones recursivas y datos de tipo
algebraico.
Es raro la necesidad de corchetes y no necesita terminaciones de instrucciones(;,
endif).
Ml(Meta Lenguaje)
Lenguaje multiparadigma: imperativo y funcional.
Incluye evoluciones por valor, algebra de funciones, manejo automtico de memoria.
Utiliza polimorfismo parame trizado, anlisis de estticos de tipos.
Hope
Escribe los programas como una notacin en forma de expresiones funcionales.
Utiliza tipo de datos algebraicos y evaluacin call-by-patter.
Utiliza polimorfismo y recursividad.
Fuentes
A history and description of programming lenguages volumen IV, from Jim Veitch
Funtional and Logic Programming Languaje, ed Peter H. Salus
Algol 68 Genie a GNU GPL Algol interpreter
CommunLoops merging Lisp and object oriented Programming
www.deficiones.com
www.wikipedia.org
Top Related