Predicados Extra-lógicos
|
|
- Agustín Poblete Vázquez
- hace 5 años
- Vistas:
Transcripción
1 Ingeniería Informática Ingeniería Técnica en Informática de Sistemas Departamento de Lenguajes y Ciencias de la Computación Universidad de Málaga Contenido 1. Predicados extra-lógicos 2. Predicados aritméticos 3. Entrada/salida de términos 4. Unificación y no unificación 5. Comparación de términos 6. Declaración de operadores 2
2 Prolog = Programación lógica Base teórica: Prolog puro se basa exclusivamente en la lógica de Horn Programa (cláusulas de Horn) consultas respuestas computadas Motor de Inferencia (SLD-Resolución) Ventajas: análisis y transformación de programas Inconvenientes: acceso a recursos hardware/software 4
3 Prolog = Programación lógica + Extra-lógica Aplicación práctica: extendemos extra-lógicamente el lenguaje para dar acceso a ciertos recursos (aritmética, entrada/salida ) Programa (cláusulas de Horn) consultas respuestas computadas Motor de Inferencia (SLD-Resolución) + Evaluador Extra-lógico 5 Predicados extra-lógicos (I) Características comunes: están predefinidos por el sistema Prolog (bibliotecas) se resuelven al margen de la SLD-Resolución, aprovechando el hardware/software de la plataforma tienen asociado un algoritmo de evaluación cuya ejecución termina en éxito o fracaso, o bien genera un error suelen ser deterministas (respuesta única) y soportar sólo algunos usos Ventajas: aplicación práctica, expresividad, eficiencia Inconvenientes: dificulta análisis y transformación de programas 6
4 Predicados extra-lógicos (y II) Sólo estudiaremos algunos predicados extra-lógicos: aritméticos entrada/salida comparación de términos declaración de operadores Anotaremos las cabeceras de los predicados extra-lógicos con los usos posibles (+ entrada, - salida,? entrada o salida): Ejemplo: is(?x,+y) read(-x) write(+x) 7 Predicados Aritméticos
5 Predicados aritméticos Permiten evaluar expresiones aritméticas: (1 + sqrt(5)) / 2 = Para incorporar expresiones aritméticas a Prolog es necesario: extender la sintaxis para soportar operadores (1 + sqrt(5)) / 2 añadir funciones aritméticas predefinidas (sqrt,sin, ) añadir un predicado extra-lógico que solicite la evaluación de expresiones aritméticas (Prolog no evalúa términos) 9 Operadores Prolog Definición: un operador Prolog es un functor de aridad 1 o 2 que puede escribirse de forma prefija, postfija o infija, prescindiendo de los paréntesis Ejemplo: X + Y +(X,Y) % +/2, infijo - X -(X) % -/1, prefijo son un mecanismo exclusivamente sintáctico, no tienen asociada ninguna operación (semántica) para evitar ambigüedades, se definen prioridades y asociatividad pueden ser predefinidos o declarados por el usuario 10
6 Operadores aritméticos Prolog predefine los siguientes operadores aritméticos: X + Y suma X Y resta - X menos unario X * Y producto X / Y cociente X // Y cociente división entera X mod Y resto división entera X ** Y potencia al escribir * 7 Prolog entiende +(5, *(3,7)) Prolog no evalúa los términos: +(5, *(3,7)) Funciones aritméticas básicas Prolog predefine las siguientes funciones aritméticas básicas: abs(x) valor absoluto sign(x) signo (-1, 0, 1) max(x,y) máximo min(x,y) mínimo random(x) entero aleatorio entre 0 y X-1 sqrt(x) raíz cuadrada floor(x) techo ceiling(x) suelo round(x) redondeo truncate(x) truncamiento 12
7 Otras funciones aritméticas trigonométricas: sin(x), cos(x), tan(x) asin(x,y), acos(x), atan(x), atan(x,y) logarítmicas y exponenciales: log(x), log10(x) exp(x) constantes: pi, e 13 Expresión aritmética Definición: un término Prolog es un expresión aritmética si 1) sus functores son operadores o funciones aritméticas 2) sus constantes son funciones aritméticas o números 3) sus variables están instanciadas a expresiones aritméticas 2.0 * (pi + sin(x)) X libre, no es expresión aritmética cos(a)**2 no es una expresión aritmética 5 + Y {Y/b}, no es una expresión aritmética 2.0 * (pi + sin(x)) {X/2*5} una expresión aritmética una expresión aritmética no contiene variables libres una expresión aritmética es un término no se evalúa por defecto 14
8 El predicado aritmético is/2 se utiliza para evaluar expresiones aritméticas is(?x,+y) X debe ser una variable libre o un número Y debe ser una expresión aritmética algoritmo is(x,y) 1. v = evaluar(y) (si hay error, se eleva una excepción) 2. unificar X con v, acabando en éxito o fracaso el predicado is/2 puede instanciar la variable X el functoris/2 es un operador: is(x,y) = X is Y 15 Usos del predicado is/2?- 9 is 2*4+1. Yes?- X is 2*4+1. X = 9 ; No?- Y = 2*4, X is Y+1. X = 9 ; No?- Phi is (1+sqrt(5))/2. Phi = ; No?- X is 2/(1-1). ERROR: Arithmetic: evaluation error: `zero_divisor 16
9 Errores comunes al usar is/2?- X is Y+1. ERROR: Arguments are not sufficiently instantiated?- X is y+1. ERROR: Arithmetic: `y/0' is not a function?- 8+1 is 2*4+1. No?- X = 0, X is X+1. No 17 Operadores relacionales aritméticos Se emplean para comparar expresiones aritméticas: +X =:= +Y +X < +Y +X =< +Y +X =\= +Y +X > +Y +X >= +Y X e Y deben ser expresiones aritméticas algoritmo X comp Y 1.vx= evaluar(x), vy= evaluar(y) (si hay error, elevar excepción) 2.res=vx compvy 3. si res es cierto acabar con éxito, sino acabar con fracaso donde comp {=:=, =\=, <, >, =<, >=} 18
10 Uso de la comparación aritmética Sólo se puede usar como test(+,+), pues no hay variables libres:?- 2.0 =:= Yes?- 2 =:= Yes?- 3 < 6 < 9. ERROR: Syntax error: Operator priority clash?- X is (3 < 9). ERROR: Arithmetic: `(<)/2' is not a function 19 Programando con predicados extra-lógicos Las técnicas de programación básicas siguen disponibles: recursión recursión de cola generar/comprobar pero su aplicación esconde algunos matices Definiremos versiones extra-lógicas de los predicados sobre naturales 20
11 Predicados extra-lógicos y usos posibles % menor(+x,+y) menor(x,y) :- X < Y. % minimo(+x,+y,?z) minimo(x,y,x) :- X =< Y. minimo(x,y,y) :- Y < X. % suma(+x,+y,?z) suma(x,y,z) :- Z is X+Y. Ventajas: simplicidad, eficiencia Inconvenientes: menos usos posibles (no son relacionales) 21 Predicados extra-lógicos y recursión factorial(0,1). factorial(x,f) :- X > 0, X1 is X-1, factorial(x1,t), F is X*T. % guarda % reducción % composición La unificación pierde potencia: no basta para distinguir casos base y recursivo no puede reducir el problema ni componer la solución 22
12 Predicados extra-lógicos y recursión de cola factorial(x,f) :- fact_cola(x,1,f). fact_cola(0,f,f). fact_cola(x,ac,f) :- X > 0, % guarda X1 is X-1, % reducción Ac1 is X*Ac, % actualización fact_cola(x1,ac1,f). La unificación pierde potencia: no basta para distinguir casos base y recursivo no puede reducir el problema ni actualizar acumulador 23 Predicados extra-lógicos y generadores entre(i,j,i) :- I =< J. entre(i,j,k) :- I < J, I1 is I+1, entre(i1,j,k). Uso Comportamiento Significado (+,+,+) test comprueba I K J (+,+,-) generador acotado genera K= I,,J Los casos base y recursivo no son excluyentes generación 24
13 Predicados extra-lógicos y generar/comprobar Problema: descomponer un natural N en suma de dos pares X e Y % es_par(+x) es_par(x) :- X mod 2 =:= 0. % en_pares(+n,?x,?y) en_pares(n,x,y) :- es_par(n), entre(0,n,x), es_par(x), Y is N-X. % comprobar % generar (acotado) % comprobar % generar (único) 25 Aplicación: puzzles cripto-aritméticos Problema: Dada la suma de letras C A M A + M E S A V I C I O asignar a cada letra un dígito distinto entre 0 y 9 de manera que la suma resultante cuadre Sugerencia: aplicar el paradigma generar/comprobar 26
14 Ejercicios Define los siguientes predicados: 1.es_natural(X), genera los naturales X = 0,1,2,3, 2.es_entero(X), genera los enteros X = 0,-1,1,-2,2, 3.num_digitos(X,Y), el entero X tiene Y digitos 4.dig_iesimo(X,I,D), D es el I-ésimo dígito del entero X 5.mcd(X,Y,Z), Z es el máximo común divisor de X e Y 6.pascal(I,J,X), X es el elemento (I,J) del triángulo de Pascal 7.fibonacci(N,F), F es el N-ésimo Fibonacci 8.biseccion(F,A,B,R), R es una raíz de la función F en el intervalo [A,B] 27 Ejercicios 9. Resuelve el puzzle cripto-aritmético: S E N D + M O R E M O N E Y 10. Dada la matriz de orden 3 A B C D E F G H I asigna a cada letra un dígito distinto, de manera que las filas, columnas y diagonales principales sumen 15 28
15 Entrada/Salida de Términos Periféricos y flujos La entrada/salida de Prolog está basada en flujos: los flujos permiten tratar uniformemente una variedad de periféricos, como una secuencia de información un flujo es un tipo abstracto que soporta, entre otras, operaciones de apertura, cierre, lectura y escritura un flujo puede estar en cuatro modos de operación: entrada, salida, concatenación y actualización un flujo soporta tres tipos de información: binarios, texto y términos 30
16 Flujos de términos y entrada/salida estándar un flujo de términos es una secuencia de términos Prolog terminados en un punto y separados por blancos (espacios, tabuladores y saltos de línea) Ejemplo: t(h(x), a). f(a,1+2). 4*pi. s(s(s(c))). s(s(a)). sólo se pueden leer y escribir términos completos para simplificar, emplearemos flujos de términos asociados a la entrada y salida estándar (por defecto, teclado y pantalla) 31 Términos Prolog y salida estándar write(+x) escribe el término X en la salida estándar nl escribe un fin de línea en la salida estándar tab(+n) escribe N espacios en la salida estándar (N es una expresión aritmética entera) display(+x) escribe el término X en la salida estándar (sin tener en cuenta las declaraciones de operadores) 32
17 Ejemplos de salida estándar?- write(2*5+1). % Prolog no evalúa los términos 2*5+1?- write(s(s(x))). % X está libre s(s(_g278))?- display(2*5+1). % tal y como lo entiende Prolog +(*(2,5),1)?- tab(3+5), write(a). % tab/1 es aritmético a 33 Términos Prolog y entrada estándar read(-x) lee el siguiente término de la entrada estándar y lo unifica con X, acabando en éxito o fracaso. Aunque es un generador único, cada reevaluación puede generar una respuesta distinta (efecto lateral) Ejemplo:? read(x).?- read(fecha(d,m,a)). : f(a,2*pi). : fecha(2,febrero). X = f(_g275,2*pi) No Yes Prolog muestra el cursor : cuando espera datos por teclado 34
18 Ejemplo: una calculadora simple (I) Escribir un programa Prolog que acepte por teclado expresiones aritméticas sin variables y muestre el resultado de evaluarlas. El programa debe terminar al introducir la palabra fin. Ejemplo:?- calc. >> 2+3*5. 17 >> sin(pi) + cos(pi). -1 >> fin. Yes 35 Ejemplo: una calculadora simple (y II) calc :- write('>> '), read(exp), evalua(exp). evalua(fin). evalua(exp) :- Exp \= fin, % Exp y fin no unifican R is Exp, write_ln(r), % write + nl calc. 36
19 Unificación y No Unificación Unificación y no unificación?x =?Y unifica X con Y, instanciando variables (test o generador único) no tiene en cuenta el test de ocurrencia +X \= +Y comprueba que X e Y no unifican (test, no instancia variables) no tiene en cuenta el test de ocurrencia unify_with_occurs_check(?x,?y) unifica X con Y, instanciando variables (test o generador único) tiene en cuenta el test de ocurrencia No son extra-lógicos 38
20 Comparación de Términos Orden estándar de los términos Prolog define una relación de orden total sobre los términos: 1. variables < números < átomos < estructuras 2. las variables se comparan por la edad : antigua < nueva 3. los números se comparan por su valor 4. los átomos se comparan alfabéticamente 5. las estructuras se comparan: primero, numéricamente por la aridad, después, alfabéticamente por el átomo del functor recursivamente, argumento a argumento de izq. a der. Los términos Prolog satisfacen la propiedad de tricotomía 40
21 Comparación de términos Prolog Prolog predefine los siguientes operadores: +X == +Y +X \== +Y +Y +Y +Y +Y todos son tests(+,+), no instancian variables el evaluador extra-lógico ejecuta la comparación según el orden estándar, dando lugar a un éxito o un fracaso 41 Ejemplos de comparación de términos? == Yes? == % no evalúa No? =:= Yes?- f(x) == f(y). % no instancia No?- f(x) = f(y). X = Y = _G251 42
22 Declaración de Operadores Operadores Prolog mejoran la legibilidad, permitiendo prescindir de los paréntesis son una mera facilidad sintáctica, no tienen asociada ninguna operación (semántica) Ejemplo: * 5 = +(2,*(3,5)) la precedencia y asociatividad evitan ambigüedades que resultan al prescindir de los paréntesis Ejemplo: X ** 3 mod 13 = (X**3) mod = (((1+2)-3)+4)-5 44
23 Precedencia de operadores cada operador tiene asignada una precedencia ( ) Dado un término Prolog, su precedencia es: si es compuesto la de su functor principal si no es compuesto (constante o variable) 0 si está entre paréntesis 0 Ejemplo: 2 + A * 3 % prec: * mayor precedencia 2 * 400 A 3 menor precedencia 45 Asociatividad de operadores se aplica cuando coinciden las precedencias un operador puede ser: asociativo a la izquierda: su argumento izquierdo puede tener menor o igual precedencia asociativo a la derecha: su argumento derecho puede tener menor o igual precedencia no asociativo: sus argumentos deben tener menor precedencia Ejemplo: A * B / 2 % *,/ 400, asoc. izq. 400 / 400 * 2 A B 46
24 La directiva op/3 El programador puede declarar sus propios operadores: :- op(+precedencia, +Tipo, +Nombre). Precedencia: un entero entre 1 y 1200 Tipo: indica posición (f) y asociatividad (y) o no (x) yfx infijo, asociativo a la izquierda xfy infijo, asociativo a la derecha xfx infijo, no asociativo fy prefijo, asociativo fx prefijo, no asociativo yf postfijo, asociativo xf postfijo, no asociativo Nombre: átomo 47 El predicado current_op/3 Permite consultar qué operadores hay predefinidos y declarados: Ejemplo: current_op(?precedencia,?tipo,?nombre)?- current_op(p,t,-). P = 500 T = fx ; P = 500 T = yfx ; No 48
25 Ejemplo: quién habla qué? Operador: :- op(800,xfx,habla). Predicado: % habla/2: persona habla idioma. elena habla ingles. elena habla frances. juan habla ingles. francisco habla ingles. francisco habla aleman. marisa habla esperanto. marisa habla italiano. Objetivos:?- Quien habla ingles.?- elena habla Que.?- Quien habla Que. 49 Aritmética de Peano y operadores (I) Objetos: declaramos un operador para representar naturales :- op(100,fy,s). Ejemplo: s s s s c s(s(s(s(c)))) Definición de dominio: declaramos un operador es_natural :- op(800, fx, es_natural). es_natural c. es_natural s X :- es_natural X. 50
26 Aritmética de Peano y operadores (II) Relaciones aritméticas: los operadores aritméticos están predefinidos (+,*,**, ) Ejemplo: podemos escribir s s s c + s s c Problema: los operadores aritméticos son binarios (+/2), y las relaciones aritméticas son ternarias (suma/3) % suma/3 c + Y??? :- s X + Y??? :- Cómo lo resolvemos? 51 Aritmética de Peano y operadores (y III) Solución: introducimos un operador que conecte una operación aritmética básica con su resultado :- op(800,xfx,= ). El predicado = /2 es una versión lógica (simplificada) de is/2 A = B B es el natural que resulta de la operación aritmética A Ejemplo: % = /2, operación + c + Y = Y :- es_natural Y. s X + Y = s Z :- X + Y = Z. 52
27 Ejercicios 1. Define otros predicados de la aritmética natural mediante operadores (producto, potencia, factorial, ). Aplica recursión de cola cuando sea conveniente. 2. Declara operadores cm y m para representar medidas de longitud expresadas en centímetros y metros: 37.5 cm 4 m Declara un operador := y define un predicado que permita sumar longitudes, expresando el resultado en la mayor unidad, tal y como muestran los objetivos:?- 1 cm + 3 cm := 4 cm. Yes? cm + 4 m := X. X = m 53
Predicados Extra-lógicos
Ingeniería Informática Ingeniería Técnica en Informática de Sistemas Departamento de Lenguajes y Ciencias de la Computación Universidad de Málaga Contenido 1. Predicados extra-lógicos 2. Predicados aritméticos
Más detallesPredicados Extra-lógicos. Predicados Extra-lógicos. Contenido. Prolog = Programación lógica. Programa (cláusulas de Horn)
Contenido Ingeniería Informática Ingeniería Técnica en Informática de Sistemas 1. Predicados extra-lógicos 2. Predicados aritméticos 3. Entrada/salida de términos 4. Unificación y no unificación 5. Comparación
Más detallesTema III Predicados Extralógicos de PROLOG
Tema III Predicados Extralógicos de PROLOG Programación Declarativa 1 Predicados Extralógicos Se incorporan al lenguaje como predicados predefinidos con usos limitados para acceder a funciones del sistema
Más detallesTUTORIAL PROLOG. Lenguajes de programación Universidad Nacional de Colombia Santiago Carvajal Castañeda Mario Andrés Moreno Norato
TUTORIAL PROLOG Lenguajes de programación Universidad Nacional de Colombia Santiago Carvajal Castañeda Mario Andrés Moreno Norato Prolog es un lenguaje de programación lógica de propósito general que se
Más detallesAritmética y operadores (2011/2012)
Luis Valencia Cabrera (coordinador) lvalencia@us.es (http://www.cs.us.es/~lvalencia) Manuel García-Quismondo mgarciaquismondo@us.es (http://www.cs.us.es/~mgarcia) Ciencias de la Computacion e IA (http://www.cs.us.es/)
Más detalles5.3 Tipos de Datos en Prolog
5.3 Tipos de Datos en Prolog Objetos de Datos en Prolog Objetos de datos simples Objetos estructurados Calce de operaciones fundamentales sobre objetos 1 Tipos de Objetos de Datos Objetos de datos Objetos
Más detalles5.3 Tipos de Datos en Prolog
5.3 Tipos de Datos en Prolog Objetos de Datos en Prolog Objetos de datos simples Objetos estructurados Calce de operaciones fundamentales sobre objetos Tipos de Objetos de Datos Objetos de datos Objetos
Más detallesOriol R oca. M a t L a b FUNCIONES EN MATLAB
FUNCIONES EN MATLAB Funciones Son ficheros con una estructura especial, que definen funciones análogas a las de MATLAB. Con carácter general, una función recibe unos DATOS DE ENTRADA, ejecuta unas ÓRDENES
Más detalles5.3 Tipos de Datos en Prolog
5.3 Tipos de Datos en Prolog Recocimiento de Tipos Se recoce el tipo de un dato por su forma sintáctica; se requiere de declaración de tipos Ejemplo: Variables se definen comienzan con primera en mayúsculas
Más detallesNúmeros enteros (cortos, largos y sin signo) Números reales (precisión simple y doble) Carácter y cadenas de caracteres. Lógicos.
Universidad Rafael Urdaneta Escuela de Ingeniería de Computación Números enteros (cortos, largos y sin signo) Números reales (precisión simple y doble) Carácter y cadenas de caracteres. Lógicos. Asignación
Más detallesUn calculadora avanzada... y algo más!
INFORMÁTICA, GRUPO D Un calculadora avanzada... y algo más! Vamos a familiarizarnos con el entorno interactivo de Python. Vamos a construir expresiones aritméticas y a guardar los resultados en variables
Más detalles6. Operadores en PROLOG
6. Operadores en PROLOG 1. Definición de operadores propios 2. Operadores predefinidos Igualdad Entrada y Salida básicos Manejo de ficheros Evaluación de expresiones aritméticas Comparación de números
Más detallesComponentes Básicos. InCo. InCo Componentes Básicos 1 / 28
Componentes Básicos InCo InCo Componentes Básicos 1 / 28 Modelo de Computación Vemos al computador como un procesador de datos. +------------+ Entrada ===> Computador ===> Salida +------------+ InCo Componentes
Más detallesMetaprogramación. Ingeniería Informática. Departamento de Lenguajes y Ciencias de la Computación Universidad de Málaga
Ingeniería Informática Departamento de Lenguajes y Ciencias de la Computación Universidad de Málaga Contenido 1. Clasificación de términos 2. Inspección de estructuras 2 Clasificación de términos Clasificación
Más detallesTema 2: Listas, aritmética y operadores
Programación Declarativa Curso 200 2002 Tema 2: Listas, aritmética y operadores José A. Alonso Jiménez Miguel A. Gutiérrez Naranjo Dpto. de Ciencias de la Computación e Inteligencia Artificial Universidad
Más detallesTema 6: Representación lógica del conocimiento
Inteligencia Artificial Curso 999 2000 Tema 6: Representación lógica del conocimiento José A. Alonso Jiménez Miguel A. Gutiérrez Naranjo Francisco J. Martín Mateos Dpto. de Ciencias de la Computación e
Más detallesPrincipios de Computadoras II
Departamento de Ingeniería Electrónica y Computadoras Operadores y Expresiones rcoppo@uns.edu.ar Primer programa en Java 2 Comentarios en Java Comentario tradicional (multi-línea) Comentario de línea Comentario
Más detallesINSTITUTO TECNOLÓGICO
INSTITUTO TECNOLÓGICO DE NUEVO LAREDO Con la Ciencia por la Humanidad Introducción a la Ingeniería en Sistemas Computacionales y al Diseño de Algoritmos Curso propedéutico Instructor: Bruno López Takeyas
Más detallesCIF 2452 Fundamentos de Programación
CIF 2452 Fundamentos de Programación 1.- Algoritmos y Programas El objetivo de esta sección consistirá en explicar los conceptos de algoritmo, programa y lenguaje de programación. Así como explorar otros
Más detallesInteligencia Artificial: Prolog
Inteligencia Artificial: Prolog Aritmética Christopher Expósito-Izquierdo 1, Belén Melián-Batista 2 {cexposit 1, mbmelian 2 }@ull.es Universidad de La Laguna (España) Contenidos Introducción a la Aritmética
Más detallesTema 2. Tipos predefinidos
Programación Declarativa Haskell Informática Sistemas Curso 2003-2004 Pepe Gallardo Universidad de Málaga Tema 2. Tipos predefinidos 2.1 Tipos simples predefinidos El tipo Bool El tipo Int El tipo Integer
Más detallesIntroducción a la programación. Oscar Alejandro González Bustamante. José Víctor Martínez Ramos.
Introducción a la programación Oscar Alejandro González Bustamante. José Víctor Martínez Ramos. Tema 2-1 ELEMENTOS BÁSICOS DE LA PROGRAMACIÓN ESTRUCTURADA Identificará los operadores y operandos. Reconocerá
Más detallesIntroducción a PROLOG
Inteligencia Artificial II Curso 2003 2004 Introducción a PROLOG Carmen Graciani Díaz José L. Ruiz Reina Dpto. de Ciencias de la Computación e Inteligencia Artificial Universidad de Sevilla IA-II 2003
Más detallesTema 2. La Sintaxis. 1. El vocabulario de un programa PROLOG
Tema 2. La Sintaxis 1. El vocabulario de un programa PROLOG 2. TérminosT 2.1. Constantes 2.2. Variables 2.3. Estructuras 3. Operadores 4. Igualdad y Desigualdad 5. Aritmética tica en los programas PROLOG
Más detallesTema 3. Patrones y Definiciones de Funciones
Informática Haskell Matemáticas Curso 2004-2005 Pepe Gallardo Universidad de Málaga Tema 3. Patrones y Definiciones de Funciones 3.1 Comparación de Patrones Patrones constantes Patrones para listas Patrones
Más detalles1. El vocabulario de un programa PROLOG. 1. El vocabulario de un programa PROLOG. Sintaxis: Conjunto de caracteres válidos v
Tema 2. La Sintaxis 1. El vocabulario de un programa PROLOG 2. TérminosT 2.1. Constantes 2.2. Variables 2.3. Estructuras 3. Operadores 4. Igualdad y Desigualdad 5. Aritmética tica en los programas PROLOG
Más detallesGLOSARIO 1. Qué es bit y byte? Bit: Es la unidad mínima de información. Puede ser 0 o 1. Byte: Es el conjunto de 8 bits. Ejemplo:
Cuestionario Modulo 1.1 GLOSARIO 1. Qué es bit y byte? Bit: Es la unidad mínima de información. Puede ser 0 o 1. Byte: Es el conjunto de 8 bits. Ejemplo: 1001 0110. 2. qué es Dato? Definición: Es toda
Más detallesTema 4.- Recursión e iteración
UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR DE CÓRDOBA DEPARTAMENTO DE INFORMÁTICA Y ANÁLISIS NUMÉRICO PROGRAMACIÓN DECLARATIVA INGENIERÍA INFORMÁTICA ESPECIALIDAD DE COMPUTACIÓN CUARTO CURSO PRIMER
Más detallesTema 3. Patrones y Definiciones de Funciones
Programación Declarativa Haskell Informática Sistemas Curso 2003-2004 Pepe Gallardo Universidad de Málaga Tema 3. Patrones y Definiciones de Funciones 3.1 Comparación de Patrones Patrones constantes Patrones
Más detallesEl lenguaje C. 1. Identificadores, constantes y variables
Principios de Programación El lenguaje C 1. Identificadores, constantes y variables 1.1. Conceptos de memoria Los nombres de variable como x, y, suma corresponden a localizaciones o posiciones en la memoria
Más detallesTema II El Lenguaje Lógico PROLOG
Tema II El Lenguaje Lógico PROLOG Programación Declarativa 1 Prolog El paso del modelo teórico de programación lógica a un lenguaje práctico requiere: La mecanización del método de resolución SLD (reglas
Más detallesEste método de diseño de algoritmos en etapas, yendo de los conceptos generales a los de detalle, se conoce como método descendente (top-down).
PLANTEMAIENTO DEL PROBLEMA Identificación de entradas y salidas Un algoritmo puede ser definido como la secuencia ordenada de pasos, sin ambigüedades, que conducen a la resolución de un problema dado y
Más detallesEl lenguaje de programación JKL
El lenguaje de programación JKL Copyright 2006 JosuKa Díaz Labrador Facultad de Ingeniería, Universidad de Deusto, Bilbao, España Verbatim copying and distribution of this entire article is permitted in
Más detallesProgramación Declarativa. Ingeniería Informática Cuarto curso. Primer cuatrimestre. Escuela Politécnica Superior de Córdoba Universidad de Córdoba
Programación Declarativa Ingeniería Informática Cuarto curso. Primer cuatrimestre Escuela Politécnica Superior de Córdoba Universidad de Córdoba Curso académico: 2016 2017 Práctica número 1.- Introducción
Más detallesProgramación lógica con árboles. Introducción. Contenido. Introducción. 1. Programación con árboles 2. Otras estructuras arbóreas
Contenido 1. Programación con árboles 2. Otras estructuras arbóreas Ingeniería Informática Ingeniería Técnica en Informática Departamento de Lenguajes y Ciencias de la Computación Universidad de Málaga
Más detallesCurso de Programación Avanzada en C
Curso de Programación Avanzada en C Copyright, 1996 Universidad Sim on Bol ivar 1 Prof. Mariela J. Curiel Contenido del Curso Conceptos BásicosB Estructuras de Control Arreglos Otros tipos de datos derivados
Más detalles1.1 Define un operador ( ) que devuelva True si y solo si tan solo uno de sus argumentos es True. Por ejemplo:? (3 > 2) (2 > 5)
1 Informática Haskell Matemáticas Curso 2004-2005 Pepe Gallardo Universidad de Málaga Práctica 1 1.1 Define un operador ( ) que devuelva True si y solo si tan solo uno de sus argumentos es True. Por ejemplo:?
Más detallesEl Pseudo-código de PsInt
El Pseudo-código de PsInt Las características de este pseudolenguaje fueron propuestas en 2001 por el responsable de la asignatura Fundamentos de Programación de la carrera de Ingeniería Informática de
Más detallesProgramación lógica con listas
Ingeniería Informática Ingeniería Técnica en Informática de Sistemas Departamento de Lenguajes y Ciencias de la Computación Universidad de Málaga Contenido 1. Programación básica con listas 2. Generar/comprobar
Más detallesEntrada de datos y salida de resultados.
Clase 2 de C++ Entrada de datos y salida de resultados. Son operadores que sirven para introducir los datos a un programa y visualizar los resultados o impresiones. En C: Operadores scanf y printf: Ejemplos:
Más detallesfunciones printf scanf
FUNCIONES EN C FUNCIONES Los módulos en C se llaman funciones. Hemos estado utilizando funciones de la biblioteca estandar stdio.h como por ejemplo printf y scanf. Comenzaremos viendo algunas funciones
Más detallesApunte Laboratorio ALPI - El lenguaje de programación Pascal
Apunte Laboratorio ALPI - El lenguaje de programación Pascal 1 2 ÍNDICE GENERAL Índice 1. Estructura de un Programa en Pascal 3 2. Sintaxis de Pascal 4 2.1. Uso de mayúsculas.....................................
Más detallesLenguaje de Diseño. Primera Parte. Segundo Cuatrimestre 2017
Primera Parte Fund. de la Informática Int. a la Programación Int. a la Computación Resolución de Problemas y Algoritmos Segundo Cuatrimestre 2017 1 Etapas en el proceso de resolver un problema: 1- Comprender
Más detallesTEMA 2. LENGUAJE C. CONCEPTOS BÁSICOS Y PROGRAMACIÓN ELEMENTAL.
Tema 2. TEMA 2. LENGUAJE C. CONCEPTOS BÁSICOS Y PROGRAMACIÓN ELEMENTAL. PARTE : VARIABLES, OPERADORES Y CONSTANTES.. INTRODUCCIÓN AL LENGUAJE C 2. PROGRAMAS BÁSICOS EN LENGUAJE C 3. DATOS EN LENGUAJE C
Más detallesPráctica 0: Introducción a Matlab. Matlab es un acrónimo: MATrix LABoratory
Práctica 0: Introducción a Matlab Matlab es un acrónimo: MATrix LABoratory Práctica 0: Introducción a Matlab Matlab es un acrónimo: MATrix LABoratory La ventana de Matlab muestra un escritorio dividido
Más detallesUna clasificación de los tipos de datos existentes en los diferentes lenguajes de programación se presenta a continuación:
Clase teórica 2 Algoritmos en C Página 1 de 6 TIPOS DE DATOS Una clasificación de los tipos de datos existentes en los diferentes lenguajes de programación se presenta a continuación: Por el momento nuestro
Más detallesINTRODUCCIÓN AL PHP PARTE II
INTRODUCCIÓN AL PHP PARTE II AUTORÍA EZEQUIEL JEREZ CALERO TEMÁTICA LENGUAJES DE PROGRAMACIÓN ETAPA BACHILLERATO, FORMACIÓN PROFESIONAL Resumen Este documento trata de ser un pequeño manual de php. Como
Más detallesTema 2.- Expresiones y funciones
UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR DE CÓRDOBA DEPARTAMENTO DE INFORMÁTICA Y ANÁLISIS NUMÉRICO PROGRAMACIÓN DECLARATIVA INGENIERÍA INFORMÁTICA ESPECIALIDAD DE COMPUTACIÓN CUARTO CURSO PRIMER
Más detallesAlgoritmos. Medios de expresión de un algoritmo. Diagrama de flujo
Algoritmos En general, no hay una definición formal de algoritmo. Muchos autores los señalan como listas de instrucciones para resolver un problema abstracto, es decir, que un número finito de pasos convierten
Más detallesProgramación Declarativa. Ingeniería Informática Cuarto curso. Primer cuatrimestre. Escuela Politécnica Superior de Córdoba Universidad de Córdoba
Programación Declarativa Ingeniería Informática Cuarto curso. Primer cuatrimestre Escuela Politécnica Superior de Córdoba Universidad de Córdoba Curso académico: 2017 2018 Práctica número 1.- Introducción
Más detallesLenguaje de Diseño. Primera Parte. Resolución de Problemas y Algoritmos. Primer Cuatrimestre Ing. En Informática e Ing.
Primera Parte Resolución de Problemas y Algoritmos Ing. En Informática e Ing. En Computación Primer Cuatrimestre 2017 1 Lenguajes Algorítmicos Los algoritmos pueden describirse, en mayor o menor detalle,
Más detallesINTRODUCCIÓN BÁSICA. Ingeniería Informática AL PROLOG. Departamento de Informática
INTRODUCCIÓN BÁSICA AL PROLOG Ingeniería Informática Departamento de Informática PRÓLOGO Esta introducción al Prolog está pensada para las prácticas de la asignatura de Matemática Discreta de la Universitat
Más detallesGUIA BÁSICA DE KALGEBRA
GUIA BÁSICA DE KALGEBRA KAlgebra es una calculadora gráfica basada en MathML. Aunque en un principio estuvo orientado a MathML, actualmente puede ser usado por cualquier persona, aunque posea pocos conocimientos
Más detallesINTRODUCCIÓN BÁSICA. Ingeniería Informática AL PROLOG. Departamento de Informática
INTRODUCCIÓN BÁSICA AL PROLOG Ingeniería Informática Departamento de Informática PRÓLOGO Esta introducción al Prolog está pensada para las prácticas de la asignatura de Matemática Discreta de la Universitat
Más detallesProgramación con Octave/Octave-UPM (I)
Programación con Octave/Octave-UPM (I) Mario Bermejo CLUB DE INFORMÁTICA CAMINOS 11 y 13 marzo 2015 Índice 1 Características Octave/Matlab 2 Interfaz gráfica y consola de comandos 3 Tipos y estructuras
Más detallesESCUELA NACIONAL AUXILIARES DE ENFERMERÍA Manizales TECNOLOGÍA E INFORMÁTICA
ALUMNA: GRADO: MODALIDAD-10 FECHA: PROFESOR: Hugo Nelson Ramírez Cárdenas LOGROS 1. Comprende qué son identificadores, variables y constantes, además de otros conceptos utilizados en programación. 2. Conoce
Más detallesPrácticas con ordenador. Álgebra lineal y cálculo. Grado en Óptica y Optometría. Práctica nº1
Prácticas con ordenador. Álgebra lineal y cálculo. Grado en Óptica y Optometría. Práctica nº1 El programa que utilizaremos es MAXIMA, programa con licencia libre que se puede descargar gratuitamente en
Más detallesESCUELA POLITÉCNICA SUPERIOR PRÁCTICA 2: EXPRESIONES, PRINTF Y SCANF
ESCUELA POLITÉCNICA SUPERIOR GRADO EN DISEÑO IND. INFORMÁTICA CURSO 2012-13 PRÁCTICA 2: EXPRESIONES, PRINTF Y SCANF HASTA AHORA... En prácticas anteriores se ha aprendido: La estructura principal de un
Más detallesIntroducción a Fortran
mario.merino@upm.es Escuela Técnica Superior de Ingenieros Aeronáuticos Universidad Politécnica de Madrid 4 de marzo de 2011 Índice Introducción 1 Introducción 2 3 4 Fin? Qué es programar? Un ordenador
Más detallesInformática Aplicada I
Informática Aplicada I Marcela Morales Quispe CIMAT Septiembre 4, 2013 marcelamq@cimat.mx Marcela Morales Quispe (CIMAT) Informática Aplicada I Septiembre 4, 2013 1 / 8 Índice 1 Operadores aritméticos
Más detallesUnidad didáctica 1. Operaciones básicas con números enteros
Unidad didáctica 1 Operaciones básicas con números enteros 1.- Representación y ordenación de números enteros Para representar números enteros en una recta hay que seguir estos pasos: a) Se dibuja una
Más detallesAMBIENTES DE COMPILACION
AMBIENTES DE COMPILACION Los compiladores a menudo producen como resultado del análisis semántico, una forma de representación intermedia del código fuente. Hoy en día, es cada vez más común que, en ambientes
Más detallesLenguajes de Inteligencia Artificial Segundo curso. Primer cuatrimestre
Lenguajes de Inteligencia Artificial Segundo curso. Primer cuatrimestre Ingeniería Técnica en Informática de Gestión Ingeniería Técnica en Informática de Sistemas Escuela Politécnica Superior Universidad
Más detallesObjetivos de la sesión. Aplicación de consola 7/30/11. Código con que se inicia un programa en Visual C# (aplicación de consola)
Objetivos de la sesión Entender el tipo de programas que se pueden realizar con aplicaciones de consola. Conocer el concepto de variable, la forma en que se declaran y su utilización. Conocer la forma
Más detallesTema 12.- Entrada y Salida
UNIVERSDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR DEPARTAMENTO DE INFORMÁTICA Y ANÁLISIS NUMÉRICO LENGUAJES DE INTELIGENCIA ARTIFICIAL INGENIGERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN INGENIERÍA TÉCNICA
Más detallesProgramación Elemental con Bases de Datos y Programación El lenguaje Prolog
Programación Elemental con Bases de Datos y Programación II.1 El lenguaje Prolog. II.2 Programación con bases de datos. II.3 Aspectos a tener en cuenta en la programación en Prolog II.4 Programación recursiva:
Más detallesInteligencia en Redes de Comunicaciones - 04a Prolog
En este Tema 4a se van a estudiar los fundamentos de Prolog, el lenguaje de programación lógica más extendido. 1 Prolog es un lenguaje de programación para representar conocimiento y realizar razonamientos
Más detalles3.1 Funciones de biblioteca
3.1 Funciones de biblioteca Concepto de función. Parámetros o argumentos Una función es un módulo independiente programado para realizar una tarea específica. Internamente está constituida por un conjunto
Más detallesMatemática Superior Aplicada
Matemática Superior Aplicada Prof.: Dr. Alejandro S. M. Santa Cruz J.T.P.: Dr. Juan Ignacio Manassaldi Aux. 2 da : Sra. Amalia Rueda Aux. 2da: Sr. Alejandro Jesús Ladreyt Wiki Scilab es un software para
Más detalles3. Conceptos elementales de programación 1. léxico. cadenas literales: cualquier cosa dentro de una línea
1 léxico palabras reservadas: array etc. combinaciones reservadas: +, := etc. comentarios (* cualquier cosa *) identificadores: ::= { } identificadores predefinidos:
Más detallesUna expresión es una combinación de uno o más operandos y operadores para obtener un resultado.
1.6. EXPRESIONES CONCEPTO: Una expresión es una combinación de uno o más operandos y operadores para obtener un resultado. Los operandos pueden ser constantes, variables, otras expresiones e incluso funciones.
Más detallesProcesadores 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 Escuela Politécnica Superior de Córdoba Universidad de Córdoba Curso académico: 2016-2017
Más detallesLaboratorio de Simulación
Trimestre 05-I Grupo CC-0A Andrés Cedillo (AT-50) Objetivos Plantear y resolver algunos problemas de ciencia e ingeniería utilizando capacidades numéricas, gráficas, simbólicas y de programación Integrar
Más detallesTema 2. Concepto de Algoritmo
Tema 2. Concepto de Algoritmo Objetivos Definir el concepto de algoritmo Resolver problemas sencillos mediante el diseño de un algoritmo Conocer los tipos de datos elementales y las operaciones sobre ellos
Más detallesComputación Aplicada. Universidad de Las Américas. Aula virtual de Computación Aplicada. Módulo de Excel 2013 LIBRO 6
Computación Aplicada Universidad de Las Américas Aula virtual de Computación Aplicada Módulo de Excel 2013 LIBRO 6 Contenido FORMA DE HACER CÁLCULOS... 3 QUÉ SON LAS FÓRMULAS Y QUÉ LAS FUNCIONES?... 4
Más detallesRECORDAR TIPOS DE DATOS
RECORDAR TIPOS DE DATOS VARIABLES: OBJETO CUYO valor cambia: A510 nombres NOTAS Int A=0; float B=1; CONSTANTES: OBJETO cuyo valor no cambia PI= 3.14159 LAS COMAS NO SE PERMITEN Int PI=3.1415 EXPRESIONES:
Más detallesPráctica 2. TIPOS DE DATOS SIMPLES
Práctica 2. TIPOS DE DATOS SIMPLES 1 sesión Semana: 15 de octubre OBJETIVOS: Conocer los distintos tipos de datos simples y su correcta utilización en la construcción de algoritmos Formular expresiones
Más detallesComputación I: Fundamentos Unidad III-Fundamentos de la Programación de Computadores
Computación I: Fundamentos Unidad III-Fundamentos de la Programación de Computadores 2º Semestre, 2010 M.Eng. José Miguel Rubio L. jose.rubio.l@ucv.cl Sección 1.- Algoritmos y Programas El objetivo de
Más detallesIntroducción a la Programación
Introducción a la Programación Fundamentos de Programación Ingeniería Informática en Sistemas de Información Alicia Troncoso 1 Contenido l Introducción l Mi primer programa l Etapas a seguir en la programación
Más detallesControl en Prolog. Control
Control sobre La búsqueda El retroceso La unificación Aplicaciones. Control en Prolog Recorrido sobre grafos Sin repetir nodo Sin repetir arco Control La búsqueda mediante un predicado sin argumentos!
Más detallesProf. María Alejandra Quintero. Informática Año
Prof. María Alejandra Quintero Informática Año 2014-2015 Es la acción de escribir programas de computación con el objetivo de resolver un determinado problema. Implica escribir instrucciones para indicarle
Más detallesUnidad 6. Subprogramas: Funciones y Procedimientos. Prof. Eliana Guzmán U. Semestre: A 2015
Unidad 6 Subprogramas: Funciones y Procedimientos Prof. Eliana Guzmán U. Semestre: A 2015 Introducción Un método ya citado para solucionar problemas complejos es dividirlo en subproblemas (problemas más
Más detallesPrimeros pasos programando en Python
Primeros pasos programando en Python El objetivo de este taller es que aprendan las primeras herramientas de programación. Cada grupo deberá ir leyendo este material en el taller y haciendo los ejemplos,
Más detalles4. Operadores Operador asignación
Programación orientada a objetos con Java 43 4. Operadores Objetivos: a) Describir los operadores (aritméticos, incrementales, de relación, lógicos y de asignación) y los tipos de dato primitivos sobre
Más detallesEl pseudocódigo es una herramienta de programación en la que las instrucciones se escriben en palabras similares al inglés o español, que facilitan
El pseudocódigo es una herramienta de programación en la que las instrucciones se escriben en palabras similares al inglés o español, que facilitan tanto la escritura como la lectura de programas En esencia,
Más detalles5. Entrada y Salida en PROLOG
5. Entrada y Salida en PROLOG 1. Escritura de términos 2. Lectura de términos 3. Escritura y lectura de caracteres 4. Escritura en fichero 5. Lectura de fichero 1. Escritura de términos (I) Predicado predefinido
Más detallesDISEÑO ESTRUCTURADO USANDO HERRAMIENTAS DE
DISEÑO ESTRUCTURADO USANDO HERRAMIENTAS DE REPRESENTACIÓN DE ALGORITMOS PSEUDOCÓDIGO El pseudocódigo es una herramienta de programación en la que las instrucciones se escriben en palabras similares al
Más detallesExpresiones Lógicas y Operadores sobre Bits
Expresiones Lógicas y Operadores sobre Bits Andrés Arcia Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Los Andes Programación Digital I 1 Expresión
Más detalles1.2 Uso del software como una calculadora. Iniciación a los operadores y almacenamiento de datos.
1.2 Uso del software como una calculadora. Iniciación a los operadores y almacenamiento de datos. Iniciación al manejo de datos Empezaremos a usar el software en modo calculadora, utilizando la ventana
Más detallesAlfred V. Aho, Peter J. Weinberg, Brian W. Kerningan
Desarrolladores de awk Utilidad awk Introducción I Alfred V. Aho, Peter J. Weinberg, Brian W. Kerningan Objetivo inicial Utilidad para desarrollar pequeños programas Potenciar la funcionalidad proporcionada
Más detallesConceptos Fundamentales. Programación Lógica y Funcional MTI. Eduardo Cruz Romero
Conceptos Fundamentales Programación Lógica y Funcional MTI. Eduardo Cruz Romero www.tics-tlapa.com Estilos de Programación (1/3) Estilo de programación (también llamado estándares de código o convención
Más detallesTeoría de autómatas. Un enfoque práctico. Recortables. Thelma Cantú María Gpe. Mendoza
Teoría de autómatas. Un enfoque práctico Recortables Thelma Cantú María Gpe. Mendoza 1.1 Búsqueda de lenguajes Alumno: 1 Nombre del lenguaje Alfabeto: Dónde se utiliza? Cuál es el beneficio para la humanidad?
Más detalles