Predicados Básicos de Prolog TAII(I) - Curso

Documentos relacionados
Metodología de Programación I Tutorial de Prolog (3/3)

6. Operadores en PROLOG

Estructura de Datos: Archivos

Tema III Predicados Extralógicos de PROLOG

$0 Representa al parámetro cero o nombre del programa $1 Representa al parámetro uno $2 Representa al parámetro dos

Tema 13: Manejo de archivos en lenguaje C

5. Entrada y Salida en PROLOG

Tema 2. La Sintaxis. 1. El vocabulario de un programa PROLOG

INTRODUCCIÓN BÁSICA. Ingeniería Informática AL PROLOG. Departamento de Informática

Objetivos. El alumno conocerá y aplicará el concepto de archivo para el almacenamiento y recuperación de datos persistentes.

Tema 12.- Entrada y Salida

Programación n Declarativa: Lógica y Restricciones

23/09/2009. Introducción Hello word La familia Buendía Recursión Listas

Informática Ingeniería en Electrónica y Automática Industrial

Tema 5. Entrada y Salida

Laboratorio de Arquitectura de Redes. Entrada y salida estándar

CAPITULO 4: ENTRADA Y SALIDA DE DATOS.

Taller de programación shell

En este artículo vamos a conocer los tipos de datos que podemos manejar programando en C.

UNIDAD DIDACTICA 3 REDIRECCIONAMIENTO Y TUBERIAS

Flujos (streams) Programación. Licenciatura Lingüística y Nuevas Tecnologias Nadjet Bouayad-Agha

Tema 3.- Predicados y sentencias condicionales

Ficheros conceptos. Manejo de ficheros en C. Apertura del fichero Función fopen: nombre del fichero. Apertura del fichero Función fopen

UNIDAD ACADÉMICA PROFESIONAL TIANGUISTENCO

aprenderaprogramar.com Sección: Cursos Categoría: Curso Visual Basic Nivel I Fecha revisión: 2029 Autor: Mario R. Rancel

Tema 3: Entrada/Salida de Ficheros

Shell Script Sistemas Operativos III - ITS EMT - CETP

4. Predicados predefinidos

Metaprogramación. Ingeniería Informática. Departamento de Lenguajes y Ciencias de la Computación Universidad de Málaga

Caracter a caracter los datos pueden ser escritos o leidos carácter a carácter, con las funciones fputc() y fgetc().

Procesadores de lenguajes Ingeniería Informática Especialidad de Computación Tercer curso, segundo cuatrimestre

Procesadores de lenguajes Ingeniería Informática Especialidad de Computación Tercer curso, segundo cuatrimestre

Curso Completo de Visual Basic 6.0

TEMA 7: Ficheros. TEMA 7: Ficheros Concepto de fichero

GUIA No 5. CREACIÓN DE SubVI s

LINUX - El intérprete de órdenes I

Informática PRÀCTICA 9 Curs Práctica Nº 9: Rango y precisión de representación de números en el ordenador.

Laboratorio de Sistemas Operativos. Ingenierías Técnicas en Informática de Sistemas y Gestión 2006/2007

Matías Zabaljáuregui

Minimanualillo de SWI-Prolog

Fundamentos de Informática ETSII. Tema 2: Entrada y Salida de Datos. Ficheros.

Prácticas de Fundamentos del Software

Apunte Laboratorio ALPI - El lenguaje de programación Pascal

Todos los comandos de DEBUG se invocan usando una sola letra y son los siguientes:

INTRODUCCIÓN A LA PROGRAMACIÓN. 1º Bachillerato

Programación Exploratoria - Predicados Predefinidos en Prolog -

TEMA. Ing. CIP Fabián Silva Alvarado

Prácticas de Fundamentos del Software

Tema: Introducción a los comandos Linux

Introducción a Sistemas Operativos: Ficheros

Componentes Básicos. InCo. InCo Componentes Básicos 1 / 28

Contenidos. Archivos en C++ Archivos en C++ Introducción

Sistemas Operativos: Programación de Sistemas. Curso Oscar Déniz Suárez Alexis Quesada Arencibia Francisco J.

Tema: Entorno a C# y Estructuras Secuenciales.

Interprete comandos de Windows.

Nombre:... Fecha: / 12 /2010

TUTORIAL PROLOG. Lenguajes de programación Universidad Nacional de Colombia Santiago Carvajal Castañeda Mario Andrés Moreno Norato

1. Detalle de los Comandos:

1.4 Ficheros m. Entrada y salida de datos por consola.

Introducción a la Programación

SOLUCION EXAMEN junio 2006

TEMA 2: Sistemas Operativos

1. Por qué decimos que "Linux" es solamente el kernel del sistema operativo que utilizamos?

Open, Close, Freefile. Write# y Input#. Abrir y cerrar ficheros con Visual Basic. Leer y guardar datos. Ejemplos prácticos.

4.7 Operaciones sobre Objetos en Scheme

Principios de Computadoras II

Transcripción:

Predicados Básicos de Prolog TAII(I) - Curso 2005-2006 Existe un conjunto de predicados predefinidos en Prolog que podrás utilizar en tus programas para realizar operaciones de entrada/salida, trabajar con archivos, etc... A continuación se muestra un breve resumen de los mismos, y que están relacionados con: 1. Predicados de manejo del intérprete y la base de hechos y reglas 2. Control de flujo de ejecución 3. Predicados (operadores) de comparación 4. Predicados de comprobación de tipos 5. Entrada/Salida estándar 6. Entrada/Salida desde archivos 7. Funciones para la Depuración de Programas 1. Predicados de manejo del intérprete y la base de hechos y reglas arg(n,estructura(arg1,...,argn),y) Tiene éxito si Y coincide con el N-ésimo argumento de la estructura. asserta(p) Introduce P en la base de hechos, al comienzo de la definición de P. assertz(p) Introduce P en la base de hechos, al final de la definición de P. chdir(+path) Cambia el directorio de trabajo al directorio Path. consult(file) Carga el archivo File. El nombre del archivo irá entre comillas simples, por ejemplo, /home/alumno/taii1/programa.pl. Es equivalente a escribir [ /home/alumno/taii1/programa ]. El archivo va sin extensión aunque por defecto buscará el archivo File o File.pl, toma las cláusulas que encuentre en ese archivo y las inserta en la base de hechos. delete file(+file) Borra el fichero especificado. 1

exists file(+file) Produce éxito cuando el fichero especificado existe (esto no implica que el usuario disponga de permiso de lectura o escritura sobre ese fichero). functor(estructura(arg1,...,argn),x,y) Tiene éxito si X coincide con el functor de la estructura, e Y con el número de argumentos. halt Termina la ejecución del interprete. help(s) Muestra ayuda sobre un átomo simbólico, e.g. help(assert). listing Muestra todos los hechos y reglas introducidos en la base de datos del intérprete. listing(p) Muestra todos los hechos y reglas sobre el predicado P. notrace Termina el modo de traza o seguimiento. reconsult(f) Igual que el anterior, pero todos los predicados definidos en F reemplazarán a las definiciones que ya pudieran existir en el intérprete [no está en todos los intérpretes]. rename file(+file1,+file2) Renombra File1 como File2. retract(p) Elimina P de la base de hechos. shell Inicia un shell interactivo con Unix, o un terminal en Windows. El shell finaliza al teclear exit. shell(+command) Ejecuta un comando de Unix. size file(+file,-size) Unifica la variable Size con el número de caracteres contenidos en File. statistics Muestra una tabla con información estadística acerca de la utilización del sistema. time(+goal) Ejecuta Goal y muestra por pantalla el tiempo utilizado, el número de inferencias lógicas realizadas y la medida de lips (logical inferences per second). trace Comienza el modo de traza o seguimiento de ejecución. [+Filespec ] Lee las cláusulas contenidas en el archivo especificado (Filespec) y las inserta en la base de datos (es una acción similar a ejecutar el predicado consult)[no está en todos los intérpretes]. 2

2. Control de flujo de ejecución call(p) Fuerza la comprobación de P como si se tratara de una consulta realizada al intérprete. false Predicado sin argumentos, que siempre falla. true Predicado sin argumentos, que siempre se da por satisfecho. +Goal1, +Goal2. Conjunción. Se hace cierta cuando ambas metas pueden probarse. +Goal1; +Goal2. Disyunción. Se hace cierta alguna de las metas puede probarse.! Corte. \+ +Goal Negación. Es ciertar si Goal no puede probarse. 3. Predicados (operadores) de comparación X < Y X e Y han de estar instanciadas a dos valores numéricos; comprueba que la primera sea menor que la segunda. X > Y X e Y han de estar instanciadas a dos valores numéricos; comprueba que la primera sea mayor que la segunda. X <= Y X e Y han de estar instanciadas a dos valores numéricos; comprueba que la primera sea menor o igual que la segunda. X >= Y X e Y han de estar instanciadas a dos valores numéricos; comprueba que la primera sea mayor o igual que la segunda. X = Y Unifica X a Y. X \ = Y Relación inversa a la anterior. X == Y Comprueba si X e Y están actualmente asociadas. Por ejemplo, X=a, Y=a, X == Y devuelve yes, pero X=a, X==Y devuelve no. X \ == Y Relación inversa a la anterior. X is E Asocia a la variable X el valor de evaluar la expresión numérica E. Todas las variables E deben estar instanciadas a valores numéricos. 3

4. Predicados de comprobación de tipos atom(x) Comprueba si X está asociada a un átomo simbólico (no numérico). compound(x) Comprueba si X es un término compuesto. float(x) Comprueba si X está asociada a un número real. integer(x) Comprueba si X está asociada a un número entero. nonvar(x) Comprueba si X es una variable libre. rational(x) Comprueba si X está asociada a un número racional (los racionales incluyen a los enteros). real(x) Comprueba si X está asociada a un número real [no está en todos los intérpretes]. string(x) Comprueba si X está asociada a una cadena de caracteres (escrita entre dobles comillas) [no está en todos los intérpretes]. var(x) Comprueba si X está asociada a una variable. 5. Entrada/Salida estándar A continuación, se muestran algunos predicados básicos para poder realizar operaciones de entrada/salida desde/sobre el terminal de salida de la computadora. current op(?precedence,?type,?name) Devuelve éxito cuando Name está definido como un operador de tipo Type cuya precedencia es Precedence. (Otros predicados relacionados con este, op/3). display(+term) Escribe el término Term sobre la salida estándar del dispositivo. Este predicado suele emplearse normalmente para examinar la representación interna de un término. flush Vuelca la salida de un programa sobre la salida estándar actual (ver flush output/1). get(-char) Lee de la entrada actual caracteres y unifica Char con el próximo carácter introducido (distinto al carácter blanco). Char se unifica con -1 si se trata del final de un fichero. get0(-char) Lee de la entrada actual caracteres y unifica Char con el próximo carácter introducido. Char se unifica con -1 si se trata del final de un fichero. nl Escribe una línea en blando (carácter newline) sobre la salida estándar actual. 4

op(+precedence,+type,+name) Declara a Name como un operador de tipo Type con una precedencia Precedence. put(+char) Escribe el carácter Char sobre la salida estándar del dispositivo. read(-term) Lee un término desde la entrada estándar del dispositivo. skip(+char) Lee y salta caracteres desde la entrada estándar hasta que encuentra el carácter Char. tab(+amount) : Escribe un número dado (Amount) de espacios en blanco en la salida estándar del dispositivo (Amount debe ser una expresión que pueda evaluarse como un entero positivo). write(+term) Escribe el término Term sobre la salida estándar. writeq(+term) Escribe el término Term sobre la salida estándar (sitúa el término entre comillas). En este predicado, los términos pueden ser vueltos a leer con el predicado read/1. 6. Entrada/Salida desde archivos close(+stream) Cierra el fichero especificado por Stream. display(+stream,+term) Muestra un término Term que se encuentra en el fichero especificado por Stream. get(+stream, -Char) Lee el siguiente carácter imprimible de un fichero y unifica su correspondiente valor ASCII con Char. get0(+stream, -Char) Lee el siguiente carácter de un fichero y unifica su correspondiente valor ASCII con Char. nl(+stream) Escribe una línea en blanco en el fichero especificado. open(+srcdest,+mode,?stream) Apertura del fichero especificado por SrcDest (especifica un fichero Unix), el Mode puede ser de lectura (read), escritura (write) o para realizar una ampliación del mismo (append). El término Stream puede ser una variable (se instanciará a un entero que identifica mi fichero), o un átomo (en este caso se trata de un identificador de fichero). En caso de no existir el fichero lo crea. put(+stream,+char) Escribe el carácter Char, en el fichero Stream. read(+stream,-term) Lee un término desde un fichero. see(+srcdest) Abre un fichero para lectura y se sitúa al comienzo del mismo. seeing(?srcdest) Unifica el nombre del fichero abierto actualmente con SrcDest. 5

seen Cierra el fichero actualmente abierto, y devuelve la entrada estándar del dispositivo al teclado del terminal. skip(+stream,+char) Lee y salta caracteres desde un fichero (Stream) hasta que encuentra el carácter Char. tab(+stream,+amount) Escribe un número dado (Amount) de espacios en blanco un fichero (Stream). tell(+srcdest) Abre un fichero para escritura como si se tratase de la salida estándar. telling(?srcdest) Devuelve el nombre de el fichero abierto por tell (unifica el nombre del actual fichero de salida con SrcDest). told Cierra el fichero que se encuentre actualmente abierto, y devuelve la salida estándar del dispositivo a la pantalla del terminal. write(+stream,+term) Escribe el término Term sobre el fichero Stream. writeq(+term) Escribe el término Term sobre el fichero Stream (los inserta entrecomillados). 7. Funciones para la Depuración de Programas debug Arranca el depurador (detendrá la ejecución de los programas en los puntos espías). debugging Imprime el estado del depurador y los puntos espías sobre la salida actual. nodebug Detiene el depurador (quita el modo traza y no se detiene en ningún punto espía). nospy(+pred) Borra el punto espía situado en el predicado especificado. nospyall Borra todos los puntos espía del programa. notrace Detiene el proceso de traza del programa. spy(+pred) Sitúa un punto espía en el todos los predicados especificados por Pred. trace Arranca el proceso de traza del programa. tracing Devuelve éxito cuando el proceso de traza está activado. 6