33
www.utel.edu.mx Algunos procedimientos interconstruidos en el lenguaje Inteligencia artificial

Inteligencia artificial Algunos procedimientos

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Inteligencia artificial Algunos procedimientos

www.utel.edu.mx

Algunos procedimientos

interconstruidos en el lenguaje

Inteligencia artificial

Page 2: Inteligencia artificial Algunos procedimientos

www.utel.edu.mx

Inteligencia artificial

Algunos procedimientos interconstruidos en el lenguaje

Keyword

Page 3: Inteligencia artificial Algunos procedimientos

www.utel.edu.mx

Inteligencia artificial

Algunos procedimientos interconstruidos en el lenguaje

¿Cómo diseñar un lenguaje?

Se tiene que tomar en cuenta tres

influencias principales:

• La computadora subyacente en

donde se van a ejecutar los

programas escritos en el lenguaje.

• El modelo de ejecución, o

computadora virtual, que apoya a

ese lenguaje en el equipo real.

• El modelo de computación que el

lenguaje implementa.

Page 4: Inteligencia artificial Algunos procedimientos

www.utel.edu.mx

Inteligencia artificial

Algunos procedimientos interconstruidos en el lenguaje

Componentes fundamentales de una computadora

Componente Descripción

Datos Son los elementos de información integrados a la computadora, manipulables directamente a través de operaciones primitivas de hardware.

Operaciones primitivas Debe contener un conjunto de operaciones primitivas interconstruidas, útiles para la manipulación de datos.

Control de secuencia Proporciona los mecanismos para controlar el orden en el que se van a ejecutar las operaciones primitivas.

Acceso a datos Incorporar algún medio para designar operandos y un mecanismo para recuperar operandos de un designador de operandos dado.

Gestión de almacenamiento Proveer mecanismos para la asignación de almacenamiento para programas.

Entorno de operación. El entorno de operación de una computadora consiste ordinariamente en un conjunto de dispositivos periféricos de almacenamiento de entrada / salida

Page 5: Inteligencia artificial Algunos procedimientos

www.utel.edu.mx

Inteligencia artificial

Algunos procedimientos interconstruidos en el lenguaje

Máquina virtual

Son las estructuras de datos y

algoritmos de un lenguaje que se

emplean durante el tiempo de

ejecución de un programa.

Page 6: Inteligencia artificial Algunos procedimientos

www.utel.edu.mx

Inteligencia artificial

Algunos procedimientos interconstruidos en el lenguaje

Relación entre lenguaje y máquina virtual

Una máquina define un lenguaje.

Un lenguaje define una máquina.

Page 7: Inteligencia artificial Algunos procedimientos

www.utel.edu.mx

Inteligencia artificial

Algunos procedimientos interconstruidos en el lenguaje

Jerarquía de máquinas virtuales

Una computadora con n niveles

puede verse como n máquinas

virtuales diferentes, cada una de las

cuales tiene un lenguaje especial.

Page 8: Inteligencia artificial Algunos procedimientos

www.utel.edu.mx

Inteligencia artificial

Algunos procedimientos interconstruidos en el lenguaje

Traductor para la máquina virtual

Se debe suministrar un traductor para

traducir programas de usuario al

lenguaje de la máquina de la

computadora virtual definida por el

lenguaje.

Page 9: Inteligencia artificial Algunos procedimientos

www.utel.edu.mx

Inteligencia artificial

Algunos procedimientos interconstruidos en el lenguaje

Jerarquía de máquinas virtuales

Cada nivel representa una abstracción con objetos y operaciones diferentes.

Cada nivel está construido sobre su predecesor.

Si se quiere escribir programas para la máquina virtual del nivel n, no se

necesita conocer los intérpretes ni los traductores de los niveles de abajo.

Las computadoras están diseñadas como una serie de niveles.

Para diseñar nuevos niveles, se necesita conocer todos.

Page 10: Inteligencia artificial Algunos procedimientos

www.utel.edu.mx

Inteligencia artificial

Algunos procedimientos interconstruidos en el lenguaje

Enlaces y tiempo de enlace

Un enlace es la asignación de

atributos a una celda de memoria

para un elemento de programa.

El momento en que el programa

hace esta elección se conoce como

el tiempo de enlace.

Page 11: Inteligencia artificial Algunos procedimientos

www.utel.edu.mx

Inteligencia artificial

Algunos procedimientos interconstruidos en el lenguaje

Tipos de tiempos de enlace

Tiempo de ejecución

El enlace de parámetros formales a

reales.

A través de la asignación de valores a

variables.

Tiempo de compilación

Tipos para las variables.

Cómo se guardan las estructuras de

datos y sus descriptores.

Tiempo de carga

Fusionar los subprogramas en un

ejecutable único enlazando las variables

a direcciones reales de memoria.

Tiempo de implantación del lenguaje

Representación de números y operaciones aritméticas en la computadora del hardware subyacente.

Tiempo de definición del lenguaje

Todas las posibles formas opcionales de enunciados, tipos de estructuras de datos, estructuras de programa.

Por ejemplo, cuántos tipos de enlace tiene este sencillo enunciado de asignación escrito en un lenguaje L:

X := X + 10

Page 12: Inteligencia artificial Algunos procedimientos

www.utel.edu.mx

Inteligencia artificial

Algunos procedimientos interconstruidos en el lenguaje

Tipos de tiempos de enlace

Cuando un enlace se efectúa

durante el tiempo de ejecución, se

dice que es de tipo dinámico.

Ejemplos: Prolog, LISP y ML.

El enlace que ocurre durante el

tiempo de compilación es de tipo

estático.

Ejemplos: C, Pascal y Fortran.

Tipo Eficiencia Flexibilidad

Dinámico - +

Estático + -

Page 13: Inteligencia artificial Algunos procedimientos

www.utel.edu.mx

Inteligencia artificial

Algunos procedimientos interconstruidos en el lenguaje

Alcance de una variable

Es el conjunto de enunciados en el que el identificador de la variable es

válido.

Alcance estático: El alcance se determina de acuerdo al lugar donde el

identificador es definido. Se le llama también alcance lexicográfico.

El alcance estático se determina fácilmente utilizando diagramas de

contorno.

Page 14: Inteligencia artificial Algunos procedimientos

www.utel.edu.mx

Inteligencia artificial

Algunos procedimientos interconstruidos en el lenguaje

Paradigmas de los lenguajes de programación

En ciencias de la computación un

paradigma se puede definir como un

conjunto de conceptos que permiten

modelar el mundo.

Un paradigma es usado para formular

una solución de cómputo a un

problema.

1. Lenguajes imperativos o de

procedimientos.

2. Lenguajes aplicativos o

funcionales.

3. Lenguajes con base en

reglas o lógicos.

4. Lenguajes orientados a

objetos.

5. Lenguajes concurrentes.

Page 15: Inteligencia artificial Algunos procedimientos

www.utel.edu.mx

Inteligencia artificial

Algunos procedimientos interconstruidos en el lenguaje

1. Lenguajes imperativos o de procedimientos

Se caracterizan por ser claros, formales y elegantes.

Son controlados por enunciados imperativos:

enunciado 1;

enunciado 2;

...

La ejecución de un enunciado hace que el intérprete cambie el valor de una o más localidades en memoria.

Ejemplos: Fortran, Pascal, C, Algol, Ada, PL/1.

INTEGER I

REAL X(10), SUM

SUM = 0.0

DO 100 I=1,10

100 SUM=SUM+ X(I)**2

IF (SUM .GT. 1E+5) STOP

WRITE(6,200) I,SUM

200 FORMAT ('SUMA', I, 'VALORES E',E15.7)

END

Fortran

Page 16: Inteligencia artificial Algunos procedimientos

www.utel.edu.mx

Inteligencia artificial

Algunos procedimientos interconstruidos en el lenguaje

2. Lenguajes aplicativos o funcionales

Se caracterizan por ser muy eficientes, expresivos y semánticamente elegantes. Los lenguajes aplicativos hacen uso de las funciones puras con composición funcional,

recursión y expresiones condicionales.

Tienen 4 componentes:

• Un conjunto de funciones primitivas.

• Un conjunto de formas funcionales.

• La operación de aplicación.

• Un conjunto de objetos de datos.

Ejemplos: LISP, ML.

; Factorial

(defun fact (n)

(if (= n 1) ; caso de terminación -> 1! = 1

1

(* n (fact (- n 1))) ; relación recursiva: n! = n * (n-1)!

)

)

LIPS

Page 17: Inteligencia artificial Algunos procedimientos

www.utel.edu.mx

Inteligencia artificial

Algunos procedimientos interconstruidos en el lenguaje

3. Lenguajes con base en reglas o lógicos

Se caracterizan por ser eficaces y

veloces

Se ejecutan verificando una condición, que

cuando se satisface ejecutan una acción:

condición 1 entonces acción 1

condición 2 entonces acción 2

...

Ejemplo: Prolog.

Prolog

Page 18: Inteligencia artificial Algunos procedimientos

www.utel.edu.mx

Inteligencia artificial

Algunos procedimientos interconstruidos en el lenguaje

4. Lenguajes orientados a objetos

Se caracterizan por trabajar con entes abstractos (objetos) que reflejan las propiedades y características de objetos o entes reales.

Las actividades a realizarse se tornan alrededor de los objetos mediante métodos (funciones).

La comunicación con el objeto se da a través de mensajes.

Un aspecto fundamental es el concepto de herencia que se da cuando los objetos pertenecen a la misma clase.

Ejemplos: Simula, Smalltalk, Java.

class TestTh extends Thread {

private String nombre;

private int retardo;

// Constructor para almacenar nuestro nombre

// y el retardo

public TestTh( String s,int d ) {

nombre = s;

retardo = d;

}

// El metodo run() es similar al main(), pero para

// threads. Cuando run() termina el thread muere

public void run() {

// Retasamos la ejecución el tiempo especificado

try {

sleep( retardo );

} catch( InterruptedException e ) {

;

}

// Ahora imprimimos el nombre

System.out.println( "Hola Mundo! "+nombre+" "+retardo );

}

}

Java

Page 19: Inteligencia artificial Algunos procedimientos

www.utel.edu.mx

Inteligencia artificial

Algunos procedimientos interconstruidos en el lenguaje

5. Lenguajes concurrentes

Su principal objetivo es mejorar la velocidad de cómputo, compartir recursos y distribuir la carga de trabajo.

Diferentes tipos de arquitecturas:

– Redes de cobertura amplia.

– Redes locales.

– Multiprocesadores (Clusters).

Comunicación y cooperación entre aplicaciones a través de:

– Envío y recepción de mensajes.

– Llamado a procedimiento remoto.

– Comunicación de grupo.

– Memoria Virtual Distribuida.

Ejemplos: PVM, CSP, Ada.

procedure DECOD_MENSAJE

task GENERAR_CODIGOS;

task DECODIFICAR is

entry ENVIAR_CODIGO (C: in CHARACTER);

entry RECIBIR_CAR (C: out CHARACTER);

end;

task IMPR_MENSAJES;

task body GENERAR_CODIGOS is

CODIGO_SIGUIENTE: CHARACTER;

begin

loop

--setencias para recibir datos

--y generar un valor para CODIGO_SIGUIENTE

DECODIFICAR.ENVIAR_CODIGO (CODIGO_SIGUIENTE);

end;

Ada

Page 20: Inteligencia artificial Algunos procedimientos

www.utel.edu.mx

Inteligencia artificial

Algunos procedimientos interconstruidos en el lenguaje Determinación del tipo de un término var(X)

Se satisface si en ese momento X es una variable no

instanciada

Permite saber si una variable ya tiene o no un valor,

pero sin fijárselo como efecto lateral

?- var(X).

yes

?- var(23).

no

?- X = Y, Y = 23, var(X).

¿?

listing(A).

Se muestran por el canal de salida activo todas las cláusulas

asociadas al átomo al que esté instanciado A.

El formato depende del intérprete.

Útil para descubrir errores.

Ejemplo:

?- [recorrer_fichero].

?- listing(mostrar_fichero).

mostrar_fichero :-

write('Nombre de fichero: '),

read(A),

see(A),

muestra_contenido,

seen.Manejo de cláusulas

nonvar(X)

Comportamiento opuesto al anterior

atom(X)

Se cumple si X identifica en ese momento un átomo

?- atom(23).

no

?- atom(libros).

yes

?- atom(“esto es una cadena”).

¿?

integer(X)

Se satisface si X representa en ese momento a un entero

atomic(X)

Se cumple si en ese momento X es un entero o un

átomo

atomic(X):- atom(X).

atomic(X):- integer(X).

Page 21: Inteligencia artificial Algunos procedimientos

www.utel.edu.mx

Inteligencia artificial

Algunos procedimientos interconstruidos en el lenguaje

Functor

Una función entre categorías

que mapea objetos a los objetos

y morfismos a morfismos.

Existen Functors en ambos tipos

covariantes y contravariantes.

Page 22: Inteligencia artificial Algunos procedimientos

www.utel.edu.mx

Inteligencia artificial

Algunos procedimientos interconstruidos en el lenguaje

Name

name(A, L)

• Permite manejar átomos

arbitrarios.

• Relaciona un átomo (A), con

la lista de caracteres ASCII

que lo compone (L).

Ejemplos:

?- name(prueba, X).

X = [112, 114, 117, 101, 98, 97]

?- name(prueba, “prueba”).

yes

?- name(X, [112, 114, 117, 101,

98, 97]).

X = prueba

Page 23: Inteligencia artificial Algunos procedimientos

www.utel.edu.mx

Inteligencia artificial

Algunos procedimientos interconstruidos en el lenguaje

Manipulación de la base de datos Programa Prolog <----> Base de datos

Base de datos: Conjunto de cláusulas que hemos ensamblado antes de iniciar la ejecución del programa.

Prolog dispone de un conjunto de predicados predefinidos para modificar la base de datos de forma dinámica.

Page 24: Inteligencia artificial Algunos procedimientos

www.utel.edu.mx

Inteligencia artificial

Algunos procedimientos interconstruidos en el lenguaje

Predicados para manipulación de la base

de datos

Predicados Descripción

asserta(X)

Añade la cláusula X como la primera cláusula de este predicado. Como otros predicados de E/S siempre falla en el backtracking y no deshace sus propios cambios.

assertz(X) Como asserta/1, sólo que añade la cláusula X como la última cláusula del predicado.

retract(X)

Borra la cláusula X de la base de datos. Como en los casos anteriores no es posible deshacer los cambios, debido a este predicado en el backtraking.

retract/assert:

Modificar la base de datos de cláusulas. Compilan el término que se les pasa como argumento. Son costosas.

recorda/erase: Permiten grabar/borrar una base de datos de términos. Mecanismo más rápido que assert/retract, pero no son cláusulas del programa.

Page 25: Inteligencia artificial Algunos procedimientos

www.utel.edu.mx

Inteligencia artificial

Algunos procedimientos interconstruidos en el lenguaje

Construcción y descomposición de términos

Existen tres predicados predefinidos para descomponer términos o construir nuevos términos:

Term =.. L

functor(Term, F, N)

arg(N, Term, A)

Prolog VI 25

• ?- f(a,b) =.. L.

• L = [f, a, b]

• ?- T =.. [progenitor, miguel, maría ]

• T = progenitor(miguel, maría)

• ?- Z =.. [p, X, g(X,Y) ].

• Z = p(X, g(X,Y))

Page 26: Inteligencia artificial Algunos procedimientos

www.utel.edu.mx

Inteligencia artificial

Algunos procedimientos interconstruidos en el lenguaje

Los procedimientos Findall

findall(Instance, Goal, List)

List se unifica con la lista de

todas las instancias de Instance

que hacen cierto a Goal.

Si Goal no es cierto para ningún

valor de Instance, entonces List

se unifica con la lista vacía [].

Page 27: Inteligencia artificial Algunos procedimientos

www.utel.edu.mx

Inteligencia artificial

Algunos procedimientos interconstruidos en el lenguaje

Predicados standard de orden superior

• map

Permite aplicar un predicado de "mapeo" a una lista de datos. Dicho predicado debe admitir el siguiente modo de uso:

MapPred(+Dato,-DatoMapeado).

Debe tratarse, por tanto, de un predicado que transforma (mapea) un dato en otro. La función de map es la siguiente: para cada dato existente en una lista dada, se pasa como primer argumento a MapPred. El resultado de MapPred, es decir, el segundo argumento, se almacena en una lista resultado. El modo de uso es el siguiente:

map(+ListaInicial, +MapPred, -ListaResultado).

• Ejemplo

%Predicado de mapeo:

%Dado un numero le suma una unidad

mapeo(Dato, DatoMapeado) :-

DatoMapeado is Dato + 1.

%% Ejecucion en el top-level:

?- map([6,9,12],mapeo,L).

L = [7,10,13] ?

yes

?-

Page 28: Inteligencia artificial Algunos procedimientos

www.utel.edu.mx

Inteligencia artificial

Algunos procedimientos interconstruidos en el lenguaje

Predicados estándar de orden superior

• "findall"

Se trata de un conjunto de predicados cuya finalidad es almacenar en una lista todas las soluciones de un predicado dado, entendiendo como tales, las ligaduras que se producen en una o varias variables libres que se indican explícitamente. Los predicados que componen la familia son:

• El modo de uso es el siguiente:

• findall(+Termino_o_variable, +Objetivo, -ListaResultado).

Genera una lista con todas

las soluciones del predicado

dado según el orden en que

se van sucediendo. findall

nunca falla, si no hay

soluciones genera una lista

vacía. Naturalmente, el

propio findall/3 solamente

tiene una solución.

Page 29: Inteligencia artificial Algunos procedimientos

www.utel.edu.mx

Inteligencia artificial

Algunos procedimientos interconstruidos en el lenguaje

Uso de findall

• uso erróneo

• findall( X, predicado(Y),

Resultado).

• findall( X, predicado(Y,Z),

Resultado).

• findall( solucion(X,Y),

predicado(Y,Z), Resultado).

• usos correctos

• findall( X, predicado(X),

Resultado).

• findall( X, predicado(X,Y),

Resultado).

• findall( solucion(X,Y),

predicado(X,Y),

Resultado).

Page 30: Inteligencia artificial Algunos procedimientos

www.utel.edu.mx

Inteligencia artificial

Algunos procedimientos interconstruidos en el lenguaje

Uso de findall

• uso erróneo

• findall( X, predicado(Y),

Resultado).

• findall( X, predicado(Y,Z),

Resultado).

• findall( solucion(X,Y),

predicado(Y,Z), Resultado).

• usos correctos

• findall( X, predicado(X),

Resultado).

• findall( X, predicado(X,Y),

Resultado).

• findall( solucion(X,Y),

predicado(X,Y),

Resultado).

Page 31: Inteligencia artificial Algunos procedimientos

www.utel.edu.mx

Inteligencia artificial

Algunos procedimientos interconstruidos en el lenguaje

Los procedimientos Bagof

bagof(Instance, Goal, List)

Similar a Findall, excepto en cómo trata las variables que aparecen en Goal y no en Instance (conocidas como variables libres). Bagof hace backtracking y produce una lista List para cada posible ligadura de las variables libres. Se puede convertir una variable libre a no-libre usando ^ .

Si Goal no es cierto para ningún valor de Instance, entonces List se unifica con la lista vacía [].

Page 32: Inteligencia artificial Algunos procedimientos

www.utel.edu.mx

Inteligencia artificial

Algunos procedimientos interconstruidos en el lenguaje

Los procedimientos Setof

setof(Instance, Goal, List)

Similar a Bagof, salvo en que

List está ordenada (según el

orden estándar) y sin repetidos.

Page 33: Inteligencia artificial Algunos procedimientos

www.utel.edu.mx

Inteligencia artificial

Algunos procedimientos interconstruidos en el lenguaje

Frase

“La primera regla de cualquier tecnología utilizada en los negocios

es que la automatización aplicada a una operación eficiente

magnificará la eficiencia. La segunda es que si la automatización se

aplica a una operación ineficiente, magnificará la ineficiencia”

Bill Gates