Prolog kielenä Periaatteet Yhteenveto. Prolog. Toni ja Laura Fadjukoff. 9. joulukuuta 2010



Samankaltaiset tiedostot
815338A Ohjelmointikielten periaatteet

815338A Ohjelmointikielten periaatteet: Logiikkaohjelmointi. Logiikkaohjelmointi

Python-ohjelmointi Harjoitus 2

Pikapaketti logiikkaan

7/20: Paketti kasassa ensimmäistä kertaa

Alkuarvot ja tyyppimuunnokset (1/5) Alkuarvot ja tyyppimuunnokset (2/5) Alkuarvot ja tyyppimuunnokset (3/5)

11.4. Context-free kielet 1 / 17

Algoritmit. Ohjelman tekemisen hahmottamisessa käytetään

TIE PRINCIPLES OF PROGRAMMING LANGUAGES Eiffel-ohjelmointikieli

Concurrency - Rinnakkaisuus. Group: 9 Joni Laine Juho Vähätalo

Loogiset konnektiivit

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen

7. Näytölle tulostaminen 7.1

Vasen johto S AB ab ab esittää jäsennyspuun kasvattamista vasemmalta alkaen:

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen

Java-kielen perusteet

LOGIIKKA johdantoa

Imperatiivisten ohjelmien organisointiparadigmojen. historia

Imperatiivisten ohjelmien organisointiparadigmojen historia

Java-kielen perusteita

Kieli merkitys ja logiikka. 2: Helpot ja monimutkaiset. Luento 2. Monimutkaiset ongelmat. Monimutkaiset ongelmat

1. Olio-ohjelmointi 1.1

Rajoittamattomat kieliopit (Unrestricted Grammars)

Java-kielen perusteet

JOHDATUS TEKOÄLYYN TEEMU ROOS

T Syksy 2004 Logiikka tietotekniikassa: perusteet Laskuharjoitus 12 (opetusmoniste, kappaleet )


13. Loogiset operaatiot 13.1

Erlang. Miika Heinonen ja Lassi Uosukainen (Group 92) TIE Principles of Programming Languages Seminaariessee. Yleistä

Ohjelmointikieli TIE Principles of Programming Languages Syksy 2017 Ryhmä 19

Luento 5. Timo Savola. 28. huhtikuuta 2006

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. FT Ari Viinikainen

TIE Principles of Programming Languages. Seminaariesityksen essee. Ryhmä 18: Heidi Vulli, Joni Heikkilä

Ohjelmoinnin perusteet Y Python

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 8. syyskuuta 2016

4. Lausekielinen ohjelmointi 4.1

Logiikka 1/5 Sisältö ESITIEDOT:

Tutoriaaliläsnäoloista

T Syksy 2004 Logiikka tietotekniikassa: perusteet Laskuharjoitus 2 (opetusmoniste, lauselogiikka )

JOHDATUS TEKOÄLYYN TEEMU ROOS

Ruby. Tampere University of Technology Department of Pervasive Computing TIE Principles of Programming Languages

Approbatur 3, demo 1, ratkaisut A sanoo: Vähintään yksi meistä on retku. Tehtävänä on päätellä, mitä tyyppiä A ja B ovat.

Ohjelmoinnin peruskurssien laaja oppimäärä

Ohjelmoinnin perusteet Y Python

Lisää kvanttoreista ja päättelyä sekä predikaattilogiikan totuustaulukot 1. Negaation siirto kvanttorin ohi

Sisällys. 18. Abstraktit tietotyypit. Johdanto. Johdanto

-Matematiikka on aksiomaattinen järjestelmä. -uusi tieto voidaan perustella edellisten tietojen avulla, tätä kutsutaan todistamiseksi

815338A Ohjelmointikielten periaatteet

13. Loogiset operaatiot 13.1

812341A Olio-ohjelmointi, I Johdanto

Ohjelmoinnin peruskurssien laaja oppimäärä

Toinen muotoilu. {A 1,A 2,...,A n,b } 0, Edellinen sääntö toisin: Lause 2.5.{A 1,A 2,...,A n } B täsmälleen silloin kun 1 / 13

Pythonin alkeet Syksy 2010 Pythonin perusteet: Ohjelmointi, skriptaus ja Python

Sopimuspohjainen olio-ohjelmointi

Ohjelmoinnin perusteet Y Python

tään painetussa ja käsin kirjoitetussa materiaalissa usein pienillä kreikkalaisilla

815338A Ohjelmointikielten periaatteet

System.out.printf("%d / %d = %.2f%n", ekaluku, tokaluku, osamaara);

S BAB ABA A aas bba B bbs c

Ohjelmoinnin peruskurssien laaja oppimäärä

ELM GROUP 04. Teemu Laakso Henrik Talarmo

TIEA255 Tietotekniikan teemaseminaari ohjelmointikielet ja kehitysalustat. Antti-Juhani Kaijanaho. 16. helmikuuta 2011

Täydentäviä muistiinpanoja laskennan rajoista

Ohjelmoinnin peruskurssien laaja oppimäärä

Predikaattilogiikkaa

ITKP102 Ohjelmointi 1 (6 op)

Logiikan kertausta. TIE303 Formaalit menetelmät, kevät Antti-Juhani Kaijanaho. Jyväskylän yliopisto Tietotekniikan laitos.

Pong-peli, vaihe Koordinaatistosta. Muilla kielillä: English Suomi. Tämä on Pong-pelin tutoriaalin osa 2/7. Tämän vaiheen aikana

Harjoitus 3 (viikko 39)

Ohjelmointiharjoituksia Arduino-ympäristössä

T Syksy 2006 Tietojenkäsittelyteorian perusteet T Harjoitus 7 Demonstraatiotehtävien ratkaisut

Käyttöjärjestelmien historia. Joni Herttuainen Henri Jantunen Markus Maijanen Timo Saksholm Johanna Tjäder Eetu Turunen

Chapel. TIE Ryhmä 91. Joonas Eloranta Lari Valtonen

Ohjelmointi 2. Jussi Pohjolainen. TAMK» Tieto- ja viestintäteknologia , Jussi Pohjolainen TAMPEREEN AMMATTIKORKEAKOULU

12. Javan toistorakenteet 12.1

5. HelloWorld-ohjelma 5.1

Ohjelmointi 1. Kumppanit

T Syksy 2002 Tietojenkäsittelyteorian perusteet Harjoitus 8 Demonstraatiotehtävien ratkaisut

Kemian tekniikan kandidaattiohjelman ohjelmointikurssi (5 op)

13. Hyvä ohjelmointitapa (osa 1) 13.1

Olio-ohjelmointi Syntaksikokoelma

MAT Program Verification (Ohjelmien todistaminen) merkintöjen selityksiä

18. Abstraktit tietotyypit 18.1

Kesälukio 2000 PK2 Tauluharjoituksia I Mallivastaukset

Jokaisen parittoman kokonaisluvun toinen potenssi on pariton.

Mobiilimaailma murroksessa 2011 Tommi Teräsvirta, Tieturi

C-ohjelmoinnin peruskurssi. Pasi Sarolahti

Laskennan rajoja. TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 10. joulukuuta 2015 TIETOTEKNIIKAN LAITOS.

5.1 Semanttisten puiden muodostaminen

Harjoitus 3: Flash-komponenttiarkkitehtuuri ( )

3. Predikaattilogiikka

Kirjoita käyttäen propositiosymboleita, konnektiiveja ja sulkeita propositiologiikan lauseiksi:

Pythonin Kertaus. Cse-a1130. Tietotekniikka Sovelluksissa. Versio 0.01b

Koka. Ryhmä 11. Juuso Tapaninen, Akseli Karvinen. 1. Taustoja 2. Kielen filosofia ja paradigmat 3. Kielen syntaksia ja vertailua JavaScriptiin Lähteet

Harjoitus 5 (viikko 48)

T Syksy 2004 Logiikka tietotekniikassa: perusteet Laskuharjoitus 7 (opetusmoniste, kappaleet )

Kieliversiointityökalu Java-ohjelmistoon. Ohje

Test-Driven Development

Ohjelmistojen mallintaminen, mallintaminen ja UML

PERL. TIE Principles of Programming Languages. Ryhmä 4: Joonas Lång & Jasmin Laitamäki

Transkriptio:

kielenä 9. joulukuuta 2010

Historia kielenä Historia Sovelluksia kehitettiin vuonna 1972 Kehittäjinä ranskalaiset Pääkehittäjä Alain Colmerauer Philippe Roussel programmation en logique Robert Kowalski logiikka Ensimmäiset toteutukset tulkkeja Warren Abstract Machine 1983 David H. D. Warren Edinburgh ISO 1995

Sovelluksia kielenä Historia Sovelluksia Japaniset käyttivät ia Viidennen sukupolven tietokoneen suunnittelussa 1980-luvun alussa Projekti kuitenkin kuoli ja kuopattiin Ohjelmointikieli Erlangin ensimmäinen versio illa Perinteinen kieli tekoälyjen kehitykseen Luonnollisen kielen prosessointi (natural language processing) Akateemisessa käytössä Ohjelmakomponentit Java- tai C-interfacen kautta

Paradigmat kielenä Paradigma ja ominaisuudet Päättelyjärjestys Deklaratiivinen ohjelmointi in säännöt ja faktat Logiikkaohjelmointi Ohjelma ratkaistaan yksinomaan sääntöjen perusteella Päättely

Paradigmat kielenä Paradigma ja ominaisuudet Päättelyjärjestys Deklaratiivinen ohjelmointi in säännöt ja faktat Logiikkaohjelmointi Ohjelma ratkaistaan yksinomaan sääntöjen perusteella Päättely Olioparadigma SWI-, Visual,... Rinnakkainen paradigma Useat toteutukset tukevat säikeitä Imperatiivinen paradigma??

Tyypitys kielenä Paradigma ja ominaisuudet Päättelyjärjestys Tyypittömyys Erilaisia rakenteita: atomit, kokonaisluvut, liukuluvut, compound-tyypit, listat, merkkijonot Muuttujat

Päättelyjärjestys kielenä Paradigma ja ominaisuudet Päättelyjärjestys Tarkoin määritelty Kokeilee järjestyksessä eri vaihtoehtoja saada väittämä todeksi Jos huomaa vaihtoehdon mahdottomaksi, palaa takaisin (backtracking)

Päättelyn logiikka kielenä Paradigma ja ominaisuudet Päättelyjärjestys Jos ei löydä tapaa saada väittämä todeksi, se on silloin epätosi issa totuusarvot ovatkin true ja fail vs. logiikassa yleensä käytetyt true ja false Tästä syystä yksittäinen sääntö, joka periaatteessa on implikaatio, käyttäytyykin kuin ekvivalenssi

kielenä Paradigma ja ominaisuudet Päättelyjärjestys Päättelyjärjestys määritelty tarkasti!, cut, laskennan tehostamiseksi Imperatiiviset repeat/0, ->/2, ;/2 IO-operaatiot sujuvat kyllä tell, write & see, read Socket-rajapinta (GNU ): irc :- hostname_address( irc.freenode.org, HostAddress), socket( AF_INET, Socket), socket_connect(socket, AF_INET (HostAddress, 6667), _, StreamOut), write(streamout, USER lamperi 0 0 :Toni Fadjukoff ), nl(streamout), write(streamout, NICK ProLamperi ), nl(streamout), write(streamout, JOIN #gprolog ), nl(streamout), write(streamout, PRIVMSG #gprolog :Hello World! ), nl(streamout), write(streamout, QUIT :Goodbye World! ), nl(streamout), socket_close(socket).

Vertailua kielenä Vertailua Mielipide ia voi verrata funktionaalisiin (deklaratiivisiin kieliin) Kuitenkin issa eri logiikka (päättely) in eri murteet in eri toteutukset Ei pärjää imperatiivisessa ohjelmoinnissa imperatiivislle kielille

Mielipide kielenä Vertailua Mielipide Mukava, yksinkertaisen looginen Ei ole kauhean vaikea edes imperatiivisiin asioihin ;) Kannattaa käyttää silti mielummin johonkin, missä in päättelykyvyistä on hyötyä.

Kiitos kielenä Vertailua Mielipide Kiitos mielenkiinnosta. mielenkiintoinen(prolog). paljonkysymyksia(aihe) :- mielenkiintoinen(aihe).