Laborator 1. Programare declarativă. Programare logică. Prolog. SWI-Prolog

Similar documents
Titlul lucrării propuse pentru participarea la concursul pe tema securității informatice

Versionare - GIT ALIN ZAMFIROIU

Textul si imaginile din acest document sunt licentiate. Codul sursa din acest document este licentiat. Attribution-NonCommercial-NoDerivs CC BY-NC-ND

Modalitǎţi de clasificare a datelor cantitative

Ghid identificare versiune AWP, instalare AWP şi verificare importare certificat în Store-ul de Windows

Olimpiad«Estonia, 2003

Metrici LPR interfatare cu Barix Barionet 50 -

REVISTA NAŢIONALĂ DE INFORMATICĂ APLICATĂ INFO-PRACTIC

2. Setări configurare acces la o cameră web conectată într-un router ZTE H218N sau H298N

Procesarea Imaginilor

Update firmware aparat foto

Reflexia şi refracţia luminii. Aplicaţii. Valerica Baban

ARBORI AVL. (denumiti dupa Adelson-Velskii si Landis, 1962)

Semnale şi sisteme. Facultatea de Electronică şi Telecomunicaţii Departamentul de Comunicaţii (TC)

Subiecte Clasa a VI-a

La fereastra de autentificare trebuie executati urmatorii pasi: 1. Introduceti urmatoarele date: Utilizator: - <numarul dvs de carnet> (ex: "9",

INTEROGĂRI ÎN SQL SERVER

MS POWER POINT. s.l.dr.ing.ciprian-bogdan Chirila

Aspecte controversate în Procedura Insolvenţei şi posibile soluţii

Structura și Organizarea Calculatoarelor. Titular: BĂRBULESCU Lucian-Florentin

Lucrarea de laborator nr. 4

R O M Â N I A CURTEA CONSTITUŢIONALĂ

Actualizarea firmware-ului pentru aparatul foto digital SLR

3. MECANISMUL DE OPERARE ÎN PROLOG

Auditul financiar la IMM-uri: de la limitare la oportunitate

Mecanismul de decontare a cererilor de plata

X-Fit S Manual de utilizare

Proceduri stocate. Crearea procedurilor stocate. Varianta 1 În Management Studio se dă clic pe New Query ca în imaginea de mai jos: Fig.

Nume şi Apelativ prenume Adresa Număr telefon Tip cont Dobânda Monetar iniţial final

2. Setări configurare acces la o cameră web conectată într-un echipament HG8121H cu funcție activă de router

The First TST for the JBMO Satu Mare, April 6, 2018

Ghid pentru configurarea şi utilizarea aplicaţiei clicksign Demo

Mods euro truck simulator 2 harta romaniei by elyxir. Mods euro truck simulator 2 harta romaniei by elyxir.zip

Candlesticks. 14 Martie Lector : Alexandru Preda, CFTe

9. Memoria. Procesorul are o memorie cu o arhitectură pe două niveluri pentru memoria de program și de date.

CERERI SELECT PE O TABELA

CAIETUL DE SARCINI Organizare evenimente. VS/2014/0442 Euro network supporting innovation for green jobs GREENET

Grafuri bipartite. Lecție de probă, informatică clasa a XI-a. Mihai Bărbulescu Facultatea de Automatică și Calculatoare, UPB

SAG MITTIGATION TECHNICS USING DSTATCOMS

Arbori. Figura 1. struct ANOD { int val; ANOD* st; ANOD* dr; }; #include <stdio.h> #include <conio.h> struct ANOD { int val; ANOD* st; ANOD* dr; }

D în această ordine a.î. AB 4 cm, AC 10 cm, BD 15cm

Updating the Nomographical Diagrams for Dimensioning the Concrete Slabs

MANUAL UTILIZARE PORTAL ONRC SERVICIUL RECOM ONLINE

Class D Power Amplifiers

KAJOT V.RO BLACK PLANET JOC DE NOROC CU RISC LIMITAT

ACTA TECHNICA NAPOCENSIS

CERERI SELECT PE MAI MULTE TABELE

Metoda de programare BACKTRACKING

Capete terminale şi adaptoare pentru cabluri de medie tensiune. Fabricaţie Südkabel Germania

Metoda BACKTRACKING. prof. Jiduc Gabriel

Propuneri pentru teme de licență

Documentaţie Tehnică

GHID DE TERMENI MEDIA

UNIVERSITATEA ŞTEFAN CEL MARE SUCEAVA

9. CURSOARE. Obiective. În acest Capitol, vom învăţa despre: Manipularea cursoarelor. Folosirea Cursor FOR Loops şi Nesting Cursors.

Baze de date distribuite și mobile

Evoluția pieței de capital din România. 09 iunie 2018

Managementul Proiectelor Software Metode de dezvoltare

Dispozitive Electronice şi Electronică Analogică Suport curs 02 Metode de analiză a circuitelor electrice. Divizoare rezistive.

CHAMPIONS LEAGUE 2017 SPONSOR:

Implementation of a Temperature Control System using ARDUINO

PACHETE DE PROMOVARE

SPEED CONTROL OF DC MOTOR USING FOUR-QUADRANT CHOPPER AND BIPOLAR CONTROL STRATEGY

Lucrarea Nr.1. Sisteme de operare. Generalitati

Reţele Neuronale Artificiale în MATLAB

A Die-Linked Sequence of Dacian Denarii

Creare baza de data Deschidem aplicaţia Microsoft Access. Lansarea în execuţie a programului se face urmând calea:

Anexa nr. 1 la Hotărârea nr. 245 din Standarde moldovenești adoptate

Managementul referinţelor cu

Interogarea (query), este operaţia prin care se obţin datele

Excel Advanced. Curriculum. Școala Informală de IT. Educație Informală S.A.

Colegiul Național Calistrat Hogaș Piatra-Neamț LIMBAJUL SQL

ISBN-13:

Curs 1 17 Februarie Adrian Iftene

Prima. Evadare. Ac9vity Report. The biggest MTB marathon from Eastern Europe. 7th edi9on

USING SERIAL INDUSTRIAL ROBOTS IN CNC MILLING PROCESESS

Mai bine. Pentru c putem.

ANTICOLLISION ALGORITHM FOR V2V AUTONOMUOS AGRICULTURAL MACHINES ALGORITM ANTICOLIZIUNE PENTRU MASINI AGRICOLE AUTONOME TIP V2V (VEHICLE-TO-VEHICLE)

Ghid de utilizare Modul CI+

1. Creaţi un nou proiect de tip Windows Forms Application, cu numele MdiExample.

DE CE SĂ DEPOZITAŢI LA NOI?

ASAMBLOARELE SI PROCESUL DE ASAMBLARE

POWER AMPLIFIER MODELING FOR MODERN COMMUNICATION SYSTEMS

5.2 Interogări în SQL

În continuare vom prezenta unele dintre problemele de calcul ale numerelor Fibonacci.

INFORMAȚII DESPRE PRODUS. FLEXIMARK Stainless steel FCC. Informații Included in FLEXIMARK sample bag (article no. M )

6. Bucle. 6.1 Instrucţiunea while

Lucrarea nr.1. Crearea unui document Word

6. Excepţii şi aserţiuni. 6. Excepţii şi aserţiuni

Figura x.1 Ecranul de pornire al mediului de dezvoltare

Capitolul 4 SUBCERERI. F. Radulescu. Curs: Baze de date - Limbajul SQL

UTILIZAREA CECULUI CA INSTRUMENT DE PLATA. Ela Breazu Corporate Transaction Banking

Înainte de a utiliza aparatul Brother. Modele pentru care este aplicabil. Definiţii ale notelor. Mărci comerciale. Modele pentru care este aplicabil

Ghid de pregătire pentru certificarea IC3 Global Standard 4

RC-5 Elitech Înregistrator Temperatură (Data Logger) USB Instrucţiuni de operare

PROCEDURA PRIVIND DECONTURILE. 2. Domeniu de aplicare Procedura se aplică în cadrul Universităţii Tehnice Cluj-Napoca

Mesaje subliminale. Manual de utilizare

Printesa fluture. Мобильный портал WAP версия: wap.altmaster.ru

Pornire rapidă. NETGEAR Trek N300 Router de călătorie şi extensor rază de acţiune. Model PR2000 NETGEAR LAN. Power. WiFi USB USB. Reset Internet/LAN

INTERPRETOARE DE COMENZI

Transcription:

Laborator 1 Programare declarativă O paradigmă de programare în care controlul fluxului de execuție este lăsat la latitudinea implementării limbajului, spre deosebire de programarea imperativă în care programul constă dintr-un șir de instrucțiuni ce transmit sistemului ce se va executa pas cu pas. http://en.wikipedia.org/wiki/declarative_programming Programare logică O paradigmă de programare declarativă bazată pe logică. A rezolva o problemă utilizând programarea logică implică descrierea domeniului problemei sub forma unei mulțimi de propoziții (formule) și interogarea sa. Prolog http://en.wikipedia.org/wiki/logic_programming Cel mai cunoscut limbaj de programare logică este Prolog. Numele provine de la PROgramming in LOGic. Programarea în Prolog constă din a construi o bază de cunoștințe, și a o interoga. Baza de cunoștințe este asemănătoare cu o bază de date, însă pe lângă date conține și reguli. SWI-Prolog http://en.wikipedia.org/wiki/prolog Una din cele mai populare implementări de Prolog, foarte activ dezvoltată și utilizată atât în mediul academic, cât și în producție. http://www.swi-prolog.org/

Utilizarea SWI-Prolog Când se deschide SWI-Prolog pe Windows este afișată o consolă, denumită și top level. Creați un nou program Prolog, denumit lab1: În acest editor vom construi baza de cunoștințe:

Introduceți următorul program, ce descrie predicatul indian/1: indian(curry). indian(dahl). indian(tandoori). indian(kurma). Un predicat este identificat unic prin numele și aritatea sa, notat astfel: nume_predicat/aritate. Editorul va evidenția folosind syntax highlighting cele patru clauze ale predicatului indian/1. Culoarea roșie a numelui predicatului semnifică faptul că acesta nu este utilizat. O clauză (en. clause) care este de forma nume_predicat(argumente). se numește faptă (en. fact). O regulă este de forma nume_predicat(argumente) :- predicat1, predicat2,.... Operatorul :- se citește dacă (en. if), partea din stânga sa se numește cap (en. head), iar partea din dreapta corp (en. body).

Atenție! Întotdeauna o clauză se termină cu punct. În cazul în care acesta lipsește editorul ne va atenționa: Adăugați la începutul programului această regulă: likes(sam,food) :- indian(food), mild(food). Utilizați tasta TAB pentru a obține indentarea corectă a predicatului. Observați că am scris câte un predicat pe linie, inclusiv in corpul regulii. Observații: 1. am utilizat predicatul indian în regula likes înainte de apariția sa în program 2. predicatul mild/1, care nu este definit, apare marcat cu roșu

Adăugați la finalul programului clauzele predicatului mild/1: mild(dahl). mild(tandoori). mild(kurma). Observați actualizarea culorilor în editor: În continuare vom compila baza de cunoștințe: Compilarea va conduce la încărcarea informațiilor în memoria mașinii virtuale a SWI-Prolog. Această operațiune se mai numeste și consultare (en. consult). În urma compilării veți observa un mesaj de confirmare în bara de stare a editorului:

De asemenea în consolă veți observa un mesaj similar: Acum putem interoga programul scris anterior: Consola are ca prompter simbolul?-, care semnifică faptul că așteaptă o interogare. În exemplele care urmează se va include acest prompt pentru a marca interogările, însă acesta nu este necesar a fi tastat. Rezultatul unei interogări va fi adevărat sau fals.

Rulați următoarele interogări:?- indian(kurma).?- indian(sarmale).?- mild(curry). Prolog va utiliza baza de cunoștințe pentru a verifica adevărul afirmațiilor date ca interogare. Dacă găsește informațiile necesare demonstrării răspunsul va fi adevărat, altfel va fi fals. Acest mod de funcționare se numește ipoteza universului închis. O interogare poate fi făcută cu mai mult de un singur predicat. De exemplu:?- indian(tandoori), mild(tandoori).?- indian(curry), mild(curry). Operatorul virgulă are în Prolog semnificația de AND logic. Să utilizăm acum și predicatul likes/2 pentru interogare:?- likes(sam, dahl). În definiția predicatului likes/2 observați că Food este scris cu literă mare, în schimb restul simbolurilor cu literă mică. Prin convenție, dacă numele unui simbol începe cu literă mare este o variabila, altfel este constantă. Putem utiliza variabile și pentru interogări:?- indian(x). După rularea interogării de mai sus SWI-Prolog așteaptă: Implicit Prolog va oferi prima soluție găsită. Pentru a obține mai multe soluții la interogare apăsați tasta ;, a cărei semnificatie este OR logic. Exercițiu Construiți o bază de cunoștințe și realizați interogări pe ea.