Curs1. Prolog

  • View
    221

  • Download
    3

Embed Size (px)

DESCRIPTION

SISTEMUL

Text of Curs1. Prolog

  • Bazele Informaticii(curs pentru doctoranzi)Aurelia Prepeli (Profir), dr.,conf. univ.catedra Tehnologii de Programare, U.S.M.

  • Tematica lucrrilor de laborator la informatic pentru doctoranzi (cursurile 1-8): Introducere in limbajul de programare de nivel nalt Prolog. Principalele caracteristici ale limbajului Prolog. Turbo Prolog. Mediul de programare TP. Crearea bazelor de fapte, cunotine i utilizarea lor (Curs 1).

    Sistemul de operare Windows. Operaii cu ferestre, dosare, fiiere, programe, aplicaii (Curs 2).

    Editorul de texte Microsoft Word. Crearea i redactarea documentelor n Microsoft Word. Crearea tabelelor i efectuarea operaiilor cu elementele tabelelor (Curs 3).

    Aplicaia Excel. Calculul tabelelor. Crearea tabelelor, graficelor, diagramelor n Excel i includerea lor ntr-un document pregtit n Microsoft Word (Curs 4).

  • Tematica lucrrilor de laborator la informatic pentru doctoranzi (cursurile 1-8): Aplicaia Microsoft PowerPoint. Crearea unei prezentaii n PowerPoint (Curs 5). Navigarea pe Internet. Internetul i pota electronic. Crearea potei electronice. Pregtirea, transmiterea i primirea mesajelor electronice (Curs 6). Reele de calculatoare (Curs 7). Aplicaia Acces. Crearea unei baze de date simple n Acces. Crearea interogrilor pe exemplu dat (Curs 8). Reprezentarea informaiei (Curs 9). Sisteme de operare. Algoritmi. Limbaje (Curs 10). Componentele calculatorului (Curs 11).

  • Prelegeri:

    Vineri

    17.00 - 18.20(425/4)

    Orele de laborator:

    Luni14.20 - 15.40 (203/4a)15.55 - 17.15 (206/4a)

    Mari

    14.20 -15.40 (145b/4)

    Miercuri

    15.55 - 17.15(203/4a)17.30 - 18.50(203/4a)

    Joi

    15.55 - 17.15(206/4a)17.30 - 18.50(206/4a)

  • Curs 1

    Programarea logic n Prolog

  • Curs1. Programarea logic n PrologIntroducere in Prolog. Principalele caracteristici ale limbajului Prolog.Structura programelor Turbo Prolog. Seciunile unui program n Turbo Prolog. Elemente constitutive: tipuri de date, clauze, fapte, interogri (goal), reguli, constante, variabile, predicate aritmetice, intrri, ieiri.Procesarea programelor Prolog, cutarea soluiilor. Backtracking-ul.Recursivitate. Simulri de cicluri.

  • Introducere in Prolog Una din principalele idei ale programarii logice este aceea c un algoritm este constituit din doua elemente disjuncte: logic i control. Componenta logica corespunde definitiei problemei ce trebuie solutionata, n timp ce componenta control stabileste cum poate fi obinuta soluia. n limbajul Prolog un programator trebuie sa descrie numai componenta logica a unui algoritm (s specifice problema ce trebuie soluionata), lsnd controlul executarii sa fie exercitat de sistemul de programare logica utilizat. Astfel limbajul logic poate fi conceput simultan ca limbaj de descriere, specificare formala a problemei i ca un limbaj de programare a calculatoarelor. Limbajul Prolog este doar un caz particular de abordare a programarii logice. Limbajul Prolog ( PROgrammation en LOGique) a fost creat la Marsilia la inceputul anilor 70, inventatorii" fiind Alain Colmeraurer si Philippe Roussel.

  • Principalele caracteristici ale limbajului Prolog Fundamentele teoretice se gasesc in metoda demonstrarii automate dezvoltata incepand cu 1965 dupa metoda rezolutiei data de Julian Robinson. Un rol important l-a avut si R. Kowalski prin demonstrarea faptului ca se poate programa folosind logica. In limbajul Prolog se poate face orice ca si in alte limbaje de programare. Insa Prologul are avantaje distincte precum si dezavantaje. Prologul poate manui numere, insa nu asa de eficient ca un limbaj special destinat acestui lucru. Prologul, insa, este orientat pe manipularea simbolurilor. Ori manipularea simbolurilor este inima a ceea ce a devenit astazi cunoscut sub numele de Inteligenta Artificiala.

  • Principalele caracteristici ale limbajului Prolog

    1. Este un limbaj de programare logica centrat pe date. Se deosebeste de Pascal, C care sunt limbaje imperative, centrate pe proces. Paradigma fundamentala a programarii logice este cea de programare declarativa. Focusul programarii logice este identificarea notiunii de calcul si notiunii de deductie. Se bazeaza pe deductia liniara folosind clauze Horn. Se foloseste pentru a exprima relatii intre obiecte si a obtine informatii referitoare la obiecte si relatiile dintre ele.

  • Principalele caracteristici ale limbajului Prolog2. Este un limbaj descriptiv A scrie un program pentru calculator inseamna 2 lucruri: < CE >: specificarea exacta a rezultatelor dorite; < CUM >: proiectarea metodei prin care se obtin aceste rezultate. Un limbaj este descriptiv daca accentul cade pe primul aspect (CE), alegerea metodei fiind lasata pe seama calculatorului. Un limbaj procedural este unul in care trebuie proiectata si metoda de obtinere a rezultatelor. 3. Este folosit in: - programarea unor aplicatii in Inteligenta Artificiala - dezvoltarea sistemelor expert - procesarea limbajului natural (inclusiv traducere automata) - robotica - teoria jocurilor - procesari de natura logica

  • Structura programelor Turbo Prolog Implementare a Prolog-ului pentru calculatoare personale IBM PC si compatibile. Este un compilator foarte rapid lansat in 1988 de Borland International, cu multe predicate predefinite. Castigul in viteza s-a obtinut cu urmatorul pret: - necesitatea declararii predicatelor si a tipurilor folosite; - mai putin dinamic (regulile nu pot fi adaugate sau sterse); - nu exista predicatul 'call'; - limitarea in amestecul tipurilor; - imposibilitatea utilizarii unui simbol de predicat ca functie. Fisiere importante pentru TP prolog.exe : compilatorul de Turbo Prolog prolog.err : mesajele de eroare prolog.hlp : fisierul de help online

  • Structura programelor Turbo Prolog Mediul de programare TP Lansarea: > prolog

    Meniul principal: Files, Edit, Run, Compile, Options, Setup Dupa ce a fost lansat aplicaia Prolog, se tasteaz Enter. Maximizarea/redimensionarea ferestrei de aplicaie Alt+Enter.

  • Structura programelor Turbo PrologFerestrele din TP :

    Editor, Dialog, Message, Trace Activarea meniului Files:

    Alt+F

    Editarea:

    Alt+E

    Lansarea:

    Alt+R

  • Structura programelor Turbo PrologRularea unui program, accesarea ferestrei Dialog:

    Run sau Alt+R

  • Structura programelor Turbo Prolog:Un program Prolog este divizat n seciuni. Seciunile Prolog sunt: domains, global domains, database, predicates, global predicates, clauses, goal.

    Unele seciuni putem s le omitem, dac ele nu se utilizeaz. De exemplu, dac nu utilizm bazele de date dinamice, atunci seciunea database nu se include n program.

    Seciunile unui program TurboProlog

  • Programul acelasi_parinte i ferestre Turbo Prolog.Seciunile unui program TurboProlog

  • n seciunea domains se includ tipurile de obiecte (domeniul obiectelor) definite de utilizator:

    domains lista_nume_dom_def1 = tip1lista_nume_dom_def2 = tip2 . . . . . . . . . . . . . . . . . . . . . . . .unde lista_nume_dom_def este o list din unul sau mai multe domenii ce se definesc la fel. Numele domeniului este un identificator. Seciunile unui program TurboProlog

  • Exist mai multe moduri de definire a domeniilor. Cel mai simplu mod de definire este:dom = d

    unde dom este numele domeniului, iar d este unul dintre tipurile: char, symbol, string, integer, real.

    Exemplu.s = symbolnume, prenume, oras = string

    Seciunile unui program TurboProlog

  • n seciunea predicates se declar structura tuturor predicatelor din program. Forma general este: nume_predicat(d1, d2, )unde d1, d2, sunt domeniile argumentelor ce sunt definite anterior sau standarde. nume_predicat trebuie sa inceapa cu o litera (de preferat mica), urmata, eventual, de o secventa de litere, cifre si underscore (_). Lungimea numelui trebuie sa fie mai mica de 250. Aritatea unui predicat este numarul de argumente; doua predicate cu acelasi nume pot avea aritati diferite. Ele trebuie declarate in sectiunea de predicate si corpul lor in sectiunea de clauze.Exemplu: domains s = symbolpredicatesvirsta(s, integer)Seciunile unui program TurboProlog

  • Seciunea clauses conine baza de cunotine. n aceast seciune se scriu faptele i regulile. Clauzele cu conjuncii sunt relaii care au forma: T :- Q1, Q2, , Qn . n Turbo Prolog se poate scrie i astfel: T if Q1 and Q2 and and Qn .T este capul clauzei, Q1, Q2, , Qn formeaz corpul clauzei. Q1, Q2, , Qn subscopuri. Clauzele cu disjuncii sunt relaii care au forma: T :- Q1; Q2; ; Qn . Se poate scrie i astfel: T if Q1 or Q2 or or Qn .n seciunea goal se conine o interogare (scop extern). Dac aceast seciune lipsete, atunci interogrile se fac din fereastra de dialog (scop intern).Comentariile pot fi incluse ntre caracterele /* i */ . Caracterul % poate fi utilizat pentru comentariile de pe o linie.Seciunile unui program TurboProlog

  • Exemplu. Programul Prinii:

    domainss=symbol

    predicatesacelasi_parinte(s,s)femeie(s)barbat(s)sora(s,s)parinte(s,s)

    Seciunile unui program TurboProlog

  • clausesparinte(ion,ada). % Ion este parintele Adeiparinte(petru,ion).parinte(petru,maria).parinte(suzana,ion).parinte(ion,angela).parinte(suzana,maria).parinte(andrei,ion).femeie(ada).femeie(maria).femeie(suzana).femeie(angela).barbat(ion).barbat(petru).Seciunile unui program TurboProlog

  • acelasi_parinte(X,Y):parinte(P,X), parinte(P,Y), XY. sora(A,B):acelasi_parinte(A,B), femeie(A).goal sora(X,Y),write(Surori:,X, si , Y).

    Exerciii.1. Pentru programul Prinii, n fereastra de dialog, s se