Sei sulla pagina 1di 24

Relaciones.................................................................................................................

2
Tipos de Relaciones...............................................................................................3
Funciones..................................................................................................................5
Paradigma imperativo................................................................................................7
Asignacin..............................................................................................................7
Tipos de estructuras de control..............................................................................7
Saltos(goto)............................................................................................................8
Secuencia...............................................................................................................8
Bifurcacin..............................................................................................................8
Iteracin..................................................................................................................9
Subrutinas:.............................................................................................................9
P. Estructurada.........................................................................................................10
Ventajas:...............................................................................................................10
Desventajas:.........................................................................................................10
P. Orientada a Objetos.............................................................................................12
Caractersticas:....................................................................................................12
Procesamiento en paralelo......................................................................................14
Ejemplo del procesamiento en paralelo:..............................................................14
Paradigmas declarativos.........................................................................................16
Programacin Lgica...............................................................................................17
Historia de la programacin lgica.......................................................................17
Programacin lgica............................................................................................18
Fundamentos de la programacin lgica.............................................................19
Caractersticas de la programacin lgica...........................................................20
Lenguajes de programacin lgica......................................................................20
Campos de aplicacin..........................................................................................21
Programacin Funcional..........................................................................................22
Conceptos............................................................................................................23
Relaciones

En matemtica, Relacin es la correspondencia de un primer conjunto, llamado


Dominio, con un segundo conjunto, llamado Recorrido o Rango, de manera que a
cada elemento del Dominio le corresponde uno o ms elementos del Recorrido o
Rango.

Ejemplo 1.

Si A = {2, 3} y B = {1, 4, 5}, encontrar tres relaciones definidas de A en B.

Solucin

El producto cartesiano de A x B est conformado por las siguientes parejas o


pares ordenados:

A x B = {(2, 1), (2, 4), (2, 5), (3, 1), (3, 4), (3, 5)}

Y cada uno de los siguientes conjuntos corresponde a relaciones definidas de A en


B:

R1 = {(2, 1), (3, 1)}

R2 = {(2, 4), (2, 5), (3, 4), (3, 5)}

R3 = {(2, 4), (3, 5)}

La relacin R1 se puede definir como el conjunto de pares cuyo segundo elemento


es 1, esto es, R1 = {( x , y ) / y = 1}.

La relacin R2 est formada por los pares cuyo primer componente es menor que
el segundo componente, R2 = {( x , y ) / x < y }

Y la relacin R3 est conformada por todos los pares que cumplen con que el
segundo componente es dos unidades mayor que el primer componente, dicho de
otro modo, R3 = {( x , y ) / y = x + 2}
Tipos de Relaciones

Para ejemplificar las propiedades de las relaciones utilizaremos el conjunto


A={1,2,3,4}

Propiedad reflexiva (o idntica):

Una relacin R sobre un conjunto A es reflexiva si para todo x A entonces (x,x)


R. En otras palabras, una relacin es reflexiva si todo elemento del conjunto sobre
el que est definida, est relacionado consigo mismo.

x A se cumple que (x,x) R.

Ejemplo: R={(1,1),(2,2),(3,3),(4,4)} Otro ejemplo: R2= { (1,1), (2,2), (3,3), (4,4),


(2,3), (1,4) }

Una relacin R sobre un conjunto A es antirreflexiva si para todo x A se cumple


que (x, x) R, es decir que x A se cumple que x no est relacionado consigo
mismo.

Ejemplo: R = { (1,2), (2,1), (1,3), (1,4), (2,3), (2,4), (3,4) }

Se dice que R es simtrica si cada vez que un par (a, b) R, entonces el par (b,
a) R tambin (dicho de otra manera, a, b A, a R b b R a).
Ejemplo: R = {(1,1), (1,3), (2,2), (2,4), (3,1), (4,2), (4,4)}

Una relacin R sobre un conjunto A es antisimtrica si para todo x A, y A, si x


R y e y R x entonces x=y.

De nuevo: x, y A se cumple que si (x, y), (y, x) R entonces x=y.

Una relacin es antisimtrica cuando slo cumplen la propiedad simtrica los


pares de elementos iguales y no la cumplen los pares formados por distintos
elementos.

Ejemplo: R={(1,2),(1,3),(1,4),(2,3),(2,4),(3,4),(1,1),(2,2),(3,3),(4,4)}

Una relacin R sobre un conjunto A es asimtrica si para todo x A, y , si (x, y)


R entonces (y, x) R.

Una relacin es asimtrica si ningn par ordenado de la relacin cumple la


propiedad simtrica.

Dicho de otra forma: x, y A se cumple que si (x, y) R entonces (y, x) R


Ejemplo: R = {(1,2), (1,3), (2,4), (4,3)}

Los pares (n, n) no pueden estar, por definicin. Las relaciones asimtricas son
antirreflexivas

Una relacin R sobre un conjunto A es transitiva si para todo x A, y A, z A si


(x, y) R y (y, z) R entonces (x, z) R.

x, y, z A se cumple que si (x, y), (y, z) R entonces (x, z) R.

Ejemplo: R= {(2,1), (3,1),(3,2),(4,1),(4,2),(4,3)}


Funciones

En matemtica, una funcin (f) es una relacin entre un conjunto

dado X (llamado dominio ) y otro conjunto de elementos Y (llamado codominio )

de forma que a cada elemento x del dominio le corresponde un nico

elemento f(x) del codominio (los que forman el recorrido, tambin

llamado rango o mbito ).

En lenguaje cotidiano o ms simple, diremos que las funciones matemticas

equivalen al proceso lgico comn que se expresa como depende de.

Las funciones matemticas pueden referirse a situaciones cotidianas, tales como:

el costo de una llamada telefnica que depende de su duracin, o el costo de

enviar una encomienda que depende de su peso.

A modo de ejemplo, cul sera la regla que relaciona los nmeros de la derecha

con los de la izquierda en la siguiente lista?:

1 --------> 1

2 --------> 4

3 --------> 9

4 --------> 16

Los nmeros de la derecha son los cuadrados de los de la izquierda.

La regla es entonces "elevar al cuadrado":


1 --------> 1

2 --------> 4

3 --------> 9

4 --------> 16

x --------> x 2 .

Para referirse a esta regla podemos usar un nombre, que por lo general es la

letra f (de funcin). Entonces, f es la regla "elevar al cuadrado el nmero".

Usualmente se emplean dos notaciones:

x --------> x 2 o f(x) = x 2 .

As, f(3) significa aplicar la regla f a 3. Al hacerlo resulta 3 2 = 9.

Entonces f(3) = 9. De igual modo f(2) = 4, f(4) = 16, f(a) = a 2 , etc.


Paradigma imperativo.

Un imperativo es un comando (para que una computadora haga algo). Las


variables representan localidades de memoria en la cpu de una computadora, y un
lenguaje imperativo proporciona los comandos para almacenar o cambiar de
manera secuencial los valores en estas localidades.

describe como debe realizarse el clculo, no el porqu.

Las variables son celdas de memoria que contienen datos, pueden ser
modificadas, y representan el estado del programa.

La sentencia principal es la asignacin.

Asignacin

Los elementos que intervienen dentro de la asignacin:

Variables: son identificadores asociados a celdas de memoria, las cuales


contienen valores o referencias y pueden ser modificadas.

Expresiones

Valores literales

Funciones predefinidas

operadores

Tipos de estructuras de control.

Las estructuras de control permiten establecer el orden de ejecucin y cambiar el


flujo del programa dependiendo de los resultados de las acciones primitivas.

Salto
Secuencia

Bifurcacin

Iteracin

Invocacin

Saltos(goto)

La estructura ms bsica es el salto condicional: con ella es posible construir el


resto de estructuras de control.

Se necesita la posibilidad de definir posiciones de cdigo (mediante etiquetas):


goto etiqueta

Tipos de saltos:

Condicionales: if cond then goto label

Computadas(BASIC): goto i*1000

Modificables(COBOL): ALTER x TO PROCEED TO y

Secuencia

Expresan una secuencia temporal de ejecuciones de sentencias.

Cada sentencia se ejecuta tras la finalizacin de la anterior

Bifurcacin.

Permite dividir la ejecucin en dos o ms lneas dependiendo del resultado en una


expresin.

Condicin lgica: bifurcacin simple o doble.


Expresin: Bifurcacion multiple(cascada -> C, exclusica -> PASCAL,
exhaustiva -> EIFEFEL)

Iteracin

Bucles controlados por condicin

Salida al principio (while)

Salida al final(repeat)

Salida en punto intermedio(ADA)

Bucles controlados por ndice (for)

Bucles controlados por coleccin (foreach)

recorren los elementos de una estructura de datos, o en general cualquier


entidad que tenga definido un iterador sobre ella.

Subrutinas:

mbito: las subrutinas disponen de su propio espacio de memoria, independiente


del resto, para almacenar sus variables y parmetros.

Equivalente a un programa, funcin, procedimiento

Las subrutinas proporcionan un mecanismo para encapsular cdigo con los


objetivos de:

poder reutilizarlo

poder invocarlo de una forma consistente

elevar el nivel de abstraccin del lenguaje

diseo ms elaborado de la aplicacin


El mbito se crea al invocar(llamar) a la subrutina y se destruye cuando
esta finaliza su ejecucin.

P. Estructurada
la metodologa de programacin estructurada se fundamenta en tcnicas de
segmentacin, la cual plantea que un problema se puede dividir en problemas ms
pequeos(mdulos) y ms simples de resolver, de tal forma que la suma de las
soluciones de cada problema sea el resultado de la solucin total de este.

Esta metodologa permite desarrollar algoritmos a travs de mdulos, los cuales


realizan tareas bien definidas. De esta forma, el mdulo se define una sola vez y
se llama tantas veces como sea necesario, mediante el nombre que lo identifica.

Ventajas:
Los programas son ms fciles de leer.

La estructura de los programas es clara

Reduccin de esfuerzo en las pruebas

Se incrementa el rendimiento del programador.

Diseo modular.

Tener una sola entrada y una sola salida.

Desventajas:
Se obtiene un nico bloque del programa que cuando se hace demasiado
grande puede ser problemtico para el manejo del cdigo fuente

En la programacin estructurada todas las bifurcaciones de control se encuentran


estandarizadas en tres tipos de estructuras lgicas, las cuales son:

Secuencial
Selectiva

Repetitivas

Estructura Secuencial: Es simplemente la formalizacin de las instrucciones en


un programa las cuales son ejecutadas en el mismo orden en que aparecen.

Estructura Selectiva: Estas se utilizan para tomar decisiones lgicas. En estas se


evala una condicin y en funcin al resultado se realiza una determinada
secuencia de instrucciones. Esta estructura de control es denominada usualmente
como IF-THEN-ELSE (Si esto Entonces Si no).

Selectiva simple: Ejecuta una determinada condicin y si el resultado es


verdadero se ejecuta solo una determinada accin. Si la condicin es falsa el
programa sigue con su secuencia normal. A esta estructura se le conoce en el
mundo de la programacin como ifthen.

Selectivas mltiples: La estructura de seleccin mltiple evaluar una expresin


que podr tomar n valores distintos 1, 2, 3, 4, n. Segn se elija uno de estos
valores en la condicin, se realizar una de las n acciones.

Estructuras Repetitivas: Estas estructuras lgicas son utilizadas para que repitan
la ejecucin de un conjunto de instrucciones mientras se cumple una cierta
condicin. Generalmente se les conoce como DO-WHILE (hacer mientras). Estas
estructuras a su vez se encuentran clasificadas en tres tipos, las cuales son
explicadas a continuacin.

Estructura mientras: La estructura repetitiva mientras es aquella en que el


cuerpo del bucle se repite mientras se cumple una determinada condicin.
Cuando se ejecuta esta instruccin, la primera cosa que sucede es que se evala
la condicin y si la expresin es verdadera, entonces se ejecuta el cuerpo del
bucle. Este proceso se repite una y otra vez mientras la condicin es verdadera.
P. Orientada a Objetos
La programacin orientada a objetos es un paradigma de programacin que viene
a innovar la forma de obtener resultados. Los objetos manipulan los datos de
entrada para la obtencin de datos de salida especficos, donde cada objeto
ofrece una funcionalidad especial.

Un objeto est definido como "un grupo de procedimientos que comparten un


estado". un programa escrito en un lenguaje imperativo involucra una secuencia
de comandos de transicin de estado. De manera informal, un objeto es un
elemento o cosa, con sus comportamientos asociados bien definidos.

Definiremos un objeto como una coleccin de datos, denominada su estado, y los


procedimientos capaces de alterar ese estado.

Se puede pensar en una clase como un tipo, aunque algunos lenguajes hacen una
distincin, y utilizan los tipos para datos y las clases para definiciones de objetos.
Nosotros definiremos una clase como una coleccin de objetos que comparte los
mismos atributos; donde un atributo es el tipo de un miembro de datos o un
mtodo para manipular esos datos. Un atributo de un objeto puede ser otro objeto,
as como tambin datos, o un mtodo.

Caractersticas:

Abstraccin (encapsulacin del estado con operaciones): 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 cmo se implementan estas caractersticas. Los procesos, las funciones o
los mtodos pueden tambin ser abstrados y cuando lo estn, unas variedades
de tcnicas son requeridas para ampliar una abstraccin.
Encapsulamiento (encubrimiento de informacin): Significa reunir a todos los
elementos que pueden considerarse pertenecientes a una misma entidad, al
mismo nivel de abstraccin. Esto permite aumentar la cohesin de los
componentes del sistema. Algunos autores confunden este concepto con el
principio de ocultacin, principalmente porque se suelen emplear conjuntamente.

Principio de ocultacin: Cada objeto est aislado del exterior, es un mdulo


natural, y cada tipo de objeto expone una interfaz a otros objetos que especifica
cmo pueden interactuar con los objetos de la clase. El aislamiento protege a las
propiedades de un objeto contra su modificacin por quien no tenga derecho a
acceder a ellas, solamente los propios mtodos 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 abstraccin. La aplicacin entera se reduce a un agregado o
rompecabezas de objetos.

Polimorfismo (paso de mensajes): 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 invocacin de un comportamiento en una
referencia producir el comportamiento correcto para el tipo real del objeto
referenciado. Cuando esto ocurre en tiempo de ejecucin, esta ltima
caracterstica se llama asignacin tarda o asignacin dinmica. Algunos lenguajes
proporcionan medios ms estticos (en tiempo de compilacin) de polimorfismo,
tales como las plantillas y la sobrecarga de operadores de C++.

Herencia: las clases no estn aisladas, sino que se relacionan entre s, formando
una jerarqua de clasificacin. 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 volver a
implementarlo. Esto suele hacerse habitualmente agrupando los objetos en clases
y estas en rboles o enrejados que reflejan un comportamiento comn. Cuando un
objeto hereda de ms de una clase se dice que hay herencia mltiple.

Procesamiento en paralelo

El procesamiento en paralelo es la ejecucin simultnea de la misma tarea en dos


o ms microprocesadores con el fin de obtener resultados ms rpidos. Los
recursos de la ordenadora pueden incluir un solo equipo con varios procesadores,
o un nmero de computadoras conectadas por una red, o una combinacin de
ambos, y los procesadores acceden a los datos a travs de una memoria
compartida. Algunos sistemas de procesamiento paralelo de superordenadores
tienen cientos de miles de microprocesadores.

Con la ayuda del procesamiento en paralelo, un nmero de clculos se puede


realizar a la vez, con lo que el tiempo requerido puede completar un proyecto. Esto
es especialmente til en proyectos que requieren clculos complejos, tales como
el modelado del tiempo y los efectos especiales digitales. Vamos a dar un ejemplo
de la vida real para comprender la eficacia de este tipo de procesamiento.

Ejemplo del procesamiento en paralelo:

Si un concurrido centro comercial tiene un solo contador de efectivo, los clientes


forman una sola cola y esperan su turno. Si hay dos contadores de efectivo, la
tarea se puede dividir de manera efectiva y los clientes podrn formar dos colas
para poder realizar sus pagos dos veces ms rpido. Este es un ejemplo en el que
el procesamiento en paralelo es una solucin eficaz.

Con la ayuda del procesamiento en paralelo, problemas cientficos altamente


complicados que son de otra manera extremadamente difciles de resolver se
pueden resolver con eficacia. La computacin paralela se puede utilizar
eficazmente para tareas que implican un gran nmero de clculos, tienen
limitaciones de tiempo y se pueden dividir en una serie de tareas ms pequeas.

El procesamiento paralelo es particularmente beneficioso en reas tales como la


meteorologa y el clima, las reacciones qumicas y nucleares, exploracin de
petrleo, la medicin de los datos ssmicos, la tecnologa espacial, circuitos
electrnicos, el genoma humano, la medicina, grficos avanzados y la realidad
virtual, y los procesos de fabricacin.

Con toda probabilidad, el paralelismo es el futuro de la informtica. En general, la


implementacin exitosa de la computacin paralela implica dos desafos:

Las tareas deben estar estructurados de tal manera que puedan ser
ejecutadas al mismo tiempo.

La secuencia de tareas que deben ser ejecutadas una despus de la otra.


Paradigmas declarativos

Un lenguaje declarativo es uno en el que un programa especifica una relacin o


funcin. Cuando se programa en el estilo declarativo, no hacemos asignaciones a
variables del programa. El intrprete o compilador para el lenguaje en particular
administra la memoria por nosotros. Estos lenguajes son de "nivel ms elevado"
que los lenguajes imperativos, en los que el programador opera ms alejado del
CPU mismo.

Los paradigmas declarativos provienen de las matemticas: la lgica, la teora de


funciones y el clculo relacional.

A diferencia de un lenguaje imperativo, que nos permite escribir una secuencia de


comandos en una computadora, un lenguaje declarativo facilita la escritura de
declaraciones, o verdades.

Los lenguajes declarativos se consideran de ms alto nivel que los lenguajes


imperativos, debido a que un programador que utiliza lenguajes declarativos
maneja conceptos en lugar de localidades de memoria en la mquina misma.
Programacin Lgica

Historia de la programacin lgica

Remontndonos en el tiempo podemos tomar a Aristteles (384-322 a.C.) y su


teora silogstica como los precursores de la lgica matemtica y en consecuencia
de la Programacin lgica. La teora silogstica, que estudia una clase particular de
implicaciones con dos premisas y una conclusin, tambin fue tratada por los
filsofos contemporneos de Aristteles y largamente estudiada en siglos
posteriores, aunque no se produjeron innovaciones de inters hasta el siglo XVII
con los trabajos de Descartes y Leibnitz.

Dos siglos despus Boole dio un paso importante en el sistema de razonamiento


aristotlico poniendo en relacin la lgica y el lgebra. Los trabajos de Boole
fueron modificados y ampliados ms tarde por los lgicos y matemticos como
Jevon, Pierce, Schroeder y Huntington entre otros.

Llegamos as a finales del siglo XIX y principios del XX con la revolucin de la


fundamentacin de las Matemticas gracias a los trabajos de Frege, Cantor,
Peano, Russell y Whitehead entre otros que marcan el periodo ms apasionante y
de mayor actividad en la historia de la lgica matemtica.

Llegamos a la mitad del siglo XX y descubrimos que de forma paralela al


desarrollo de la lgica se ha producido un espectacular avance de las llamadas
mquinas de calcular, avance sobre el que reflexiona A. Turing en un artculo
titulado Pueden pensar las maquinas?, publicado en 1950 y que podemos dar
como punto de partida de lo que despus se llamara Inteligencia Artificial.

No obstante, hasta la primera mitad de los sesenta, con los trabajos de Kowalski y
el primer PROLOG de Colmerauer cuando nace la Programacin Lgica como
rama de la demostracin automtica con personalidad propia.
Programacin lgica

La Programacin Lgica estudia el uso de la lgica para el planteamiento de


problemas y el control sobre las reglas de inferencia para alcanzar la solucin
automtica.

La Programacin Lgica, junto con la funcional, forma parte de lo que se conoce


como Programacin Declarativa, es decir la programacin consiste en indicar
como resolver un problema mediante sentencias, en la Programacin Lgica, se
trabaja en una forma descriptiva, estableciendo relaciones entre entidades,
indicando no como, sino que hacer, entonces se dice que la idea esencial de la
Programacin Lgica es

Programa= lgica + control

Lgica (programador): hechos y reglas para representar conocimiento

Control (interprete): deduccin lgica para dar respuestas (soluciones)

La programacin lgica intenta resolver lo siguiente:

Dado un problema S, saber si la afirmacin A es solucin o no del problema o en


qu casos lo es. Adems, queremos que los mtodos sean implantados en
mquinas de forma que la resolucin del problema se haga de forma automtica

La programacin lgica: construye base de conocimientos mediante reglas y


hechos

Regla: implicacin o inferencia lgica que deduce nuevo conocimiento, la regla


permite definir nuevas relaciones a partir de otras ya existentes

Ej.:
Mortal (x): - humano(x)

x es mortal si x es humano

Hecho: declaracin, clusula o proposicin cierta o falsa, el hecho establece una


relacin entre objetos y es la forma ms sencilla de sentencia

Ej.:

Humano (Scrates); Scrates es humano

Ama (Juan, Maria); ama Juan a Maria

Consulta: se especifica el problema, la proposicin a demostrar o el objetivo


Partiendo de que los humanos son mortales y de que Scrates es humano,
deducimos que Scrates es mortal

Mortal (x): - humano(x); - los humanos son mortales; regla

Humano (Scrates); Scrates es humanos; hecho

Scrates es mortal; consulta

La programacin lgica comprende dos Paradigmas de Programacin la


Programacin Declarativa y la Programacin funcional.

La programacin declarativa gira en torno al concepto de predicado, o relacin


entre elementos.

La programacin funcional se basa en el concepto de funcin (que no es ms que


una evolucin de los predicados), de corte ms matemtico.

Fundamentos de la programacin lgica

La mayora de los Lenguajes de Programacin se basan en la Teora Lgica de


Primer Orden, aunque tambin incorporan algunos comportamientos de orden
superior, en este sentido, destacan los lenguajes funcionales ya que se basan en
el Clculo Lambda, es la nica teora lgica de orden superior.

La Teora Lgica de Primer Orden o tambin llamada lgica de predicados: es un


sistema deductivo basado en un Lenguaje Lgico Matemtico formal de gran
utilidad para las Matemticas, Filosofa, Lingstica y Computacional. Incluye
proposiciones lgicas, predicados y cuantificadores.

Caractersticas de la programacin lgica

Unificacin de trminos

Mecanismos de inferencia automtica

Recursin como estructura de control bsica

Visin lgica de la computacin

Lenguajes de programacin lgica

Un lenguaje es el CLP, pero el lenguaje de programacin lgica por excelencia es


el PROLOG.

Prolog: es un Lenguaje de Programacin diseado para representar y utilizar el


conocimiento que se tiene sobre un determinado dominio. Los programas en
Prolog responden preguntas sobre el tema del cual tienes conocimiento.

La popularidad del lenguaje se debe a su capacidad de deduccin y adems es un


lenguaje fcil de usar por su semntica y sintaxis. Solo busca relaciones entre los
objetos creados, las variables y las listas, que son su estructura bsica.
Escribir un programa en Prolog consiste en declarar el conocimiento disponible
acerca de objetos, adems de sus relaciones y sus reglas, en lugar de correr un
programa para obtener una solucin, se hace una pregunta, el programa revisa la
base de datos para encontrar la solucin a la pregunta, si existe ms de una
solucin, Prolog hace un barrido para encontrar soluciones distintas. El propio
sistema es el que deduce las respuestas a las preguntas que se le plantean,
dichas respuestas las deduce del conocimiento obtenido por el conjunto de reglas
dadas.

Campos de aplicacin

Sistemas Expertos, donde un Sistema de informacin mita las


recomendaciones de un experto sobre algn dominio de conocimiento.

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.

Inteligencia artificial

Sistemas de informacin
Programacin Funcional

La programacin funcional est basada en el paradigma de la programacin


declarativa y que busca describir el problema y detallar su solucin. Para lograr
esto, se hace uso de la declaracin de un conjunto de condiciones, proposiciones,
afirmaciones, restricciones, ecuaciones o transformaciones. Las ventajas que tiene
la programacin funcional son de ser razonado matemticamente, lo que permite
que se pueda optimizar el rendimiento de los programas, adems, se dice que son
fiables y expresivos, fiables porque tienen una muy alta probabilidad de funcionar
de manera correcta y expresivos puesto que el usuario hace uso de expresiones.
Una ventaja ms de la programacin funcional es el de eliminar los efectos
secundarios. Dichos efectos secundarios, ocurren en la programacin imperativa,
pues dentro de una funcin o mtodo, se pueden afectar diferentes valores
durante la ejecucin del programa, como alguna variable global o esttica, o bien,
el estado que tiene el entorno podra cambiar por el uso de alguna funcin o
mtodo en ese paradigma.

A su vez, la programacin funcional est basada en el clculo lambda, un sistema


formal de la dcada de los 30s por Alonzo Church y Stephen Kleene. Este clculo
lambda fue diseado para investigar la definicin de una funcin, la aplicacin de
las funciones y la recursin. Se considera el clculo lambda como el lenguaje
universal de programacin ms pequeo, puesto que se pueden realizar muchas
computaciones tan slo a partir de la declaracin de funciones, y universal en el
sentido que cualquier funcin computable puede ser expresada y evaluada
mediante este sistema.

Una cosa ms a mencionar, es que al decirse que la programacin sea funcional,


quiere decir que tambin en estas funciones, siempre se tomarn valores de
entrada y al ser procesados por la funcin, darn un resultado o valor de salida. Al
decirse que la programacin funcional es de tipado esttico, quiere decirse que las
funciones deben declararse su tipo, es decir, el dominio y el contra dominio de las
mismas.

Uno de los lenguajes que son puramente funcionales es Haskell. Este lenguaje de
programacin se presta muy bien para la programacin concurrente. La
concurrencia, no es ms que la propiedad de los sistemas de cmputo que
pueden realizar procesos de manera simultnea y a la vez, interactuar entre ellos.
Y no se debe confundir el paralelismo con la concurrencia, puesto que, el
paralelismo consiste en separar una tarea en varias partes ms pequeas que
posteriormente se ejecutarn concurrentemente para terminarla ms rpido.

Retomando el concepto de side-effect, se dice que ocurre cuando una expresin o


una funcin, modifica algn estado fuera de su entorno adems de haber
retornado un valor. En la programacin funcional esto raramente ocurre.

Un programa de computadora guarda valores en variables, estas variables son


representaciones de localidades de memoria en la computadora. El contenido de
estas variables en cualquier punto del tiempo de ejecucin del programa, es
llamado estado del programa. El estado intermedio es el contenido de estas
variables, cuando el proceso en el que se encuentran est parcialmente
completado.

Conceptos

Side effect

A side effect refers simply to the modification of some kind of state - for instance:

Changing the value of a variable;

Writing some data to disk;

Enabling or disabling a button in the User Interface.

Tipado esttico:
El tipado esttico nos obliga a definir desde el principio el tipo de una variable,
ejemplos de lenguajes con tipado esttico son C, C++, Pascal, Java, Objetive-C,
C#, entre otros. Ntese que C# est incluido, aunque exista la palabra clave var,
la cual nos permite ahorrarnos un poquito de cdigo, pero una vez que el
compilador define el tipo este ya no puede cambiarse.

La comprobacin de tipos se realiza en tiempo de compilacin.

La mayora de errores de tipado se detectan por el compilador

Es necesario declarar el tipo de las variables

Habitualmente asociado con valores literales y variables de tipo prefijado

Tipado dinmico: La comprobacin de tipos se realiza en tiempo de ejecucin.

No es necesario declarar el tipo de las variables, y normalmente su tipo


puede cambiar.

Asociado con valores dinmicos.

Puede ser difcil detectar errores: Se deben recorrer todos los posibles
caminos de ejecucin

Estado del programa:

un estado es una configuracin nica de informacin en un programa o mquina.

Estado intermedio:

Contenido de informacin dentro de un proceso o un cmputo que pasa a ser


modificado al final de este. mientras que el proceso est parcialmente
completado

Potrebbero piacerti anche