Traditionell Programmering
|
|
- Ola Göransson
- för 8 år sedan
- Visningar:
Transkript
1 Crash Course in Prolog Baran Çürüklü Introduktion till PROLOG, dvs. PROgramming in LOGic Prolog-programmen är deklarativa och består av egenskaper, relationer och regler. Lisp and Prolog är de vanligaste programmeringsspråken för symbolisk AI. Mycket bra för utforskning" och "prototyp programmering". Prolog bygger på Horn-satser, delmängd till första ordningens predikatlogiken. Viktiga begrepp/områden i Prolog Baskunskaper i Prolog: databaser, listor, metalogiska predikat, ackumulatorer, svansrekursion, (DCG), generateand-test, sökning. Anknytning till andra områden: Relationsdatabaser, Expertsystem, Formella språk och automata-teori, (Naturlig språkhantering). Att tänka deklarativt. Traditionell Programmering Imperativa programmeringsspråk: är i stort en abstraktion av turingmaskin (ett program är instruktioner till en turingmaskin). har en operationell semantik i termer av vad turingmaskinen ska utföra. är kontextberoende (vilka operationer som gjorts innan). Ett Logikprogram Logik och Programmering En beskrivning i en vald logik av en verklig eller tänkt värld. Beskrivning av allt relevant för att lösa uppgiften: ->relationer mellan objekten i världen (personer, tal, listor, träd, ). En logik har 4 delar syntax (för logiska formler) semantik (exakt betydelse) uppsättning axiom (tex. tautologier) inferensregler (exv modus ponens) Logiker: Satslogik, predikatlogik, typad logik, temporallogik (händelser, intervaller, ), modallogik (sanlikheter, kanske, sant i alla världar, ) 1
2 Dagsläge för Prolog & Logik : Prolog används för prototyper Större kommersiella system (länkas till.exe och användaren vet ej att systemet är implementerat i Prolog). Kompilatorer/Interpretatorer (Erlang interpretatorn utvecklades i Prolog). Grafiska paket, snabb exekvering, bra gränssnitt till andra programmeringsspråk (anropbart och kan anropa exv C/Java rutiner). Används im naturligt språk, tolkning, översättning etc. Gränssnitt till webben (exv. LPA-Prolog). Dagsläge för Logik och Logikprogrammering: formell verifiering av säkerhetskritiska system (landningsställ, ställverk/signalering för rälssystem, hårdvara, mm). Hårdvarudesign (TTL-logikkretsar, sant=1=5 volt, falskt=0=0 volt), predikatlogik, temporallogik, modallogik, fuzzy logic. Framtiden för Prolog? Kunskapsrepresentation (SDL, XML, Relationsdatabaser -> Kunskapsbaser, naturligt språk), temporallogik. Säkerhetskritiska system kräver i framtiden bevis för att de är korrekta. flyg, transport, telecom, medicin, mm (program i C är mycket svåra att testa!). Prolog utvecklas: Constraint Logic Programming (CLP): parallell-exekvering Agentprogrammering webb programmering Deklarativa och imperativa språk Filosofi Program Exempel Fördelar Imperativa språk Användaren talar om hur problemet ska lösas En sekvens av kommandon Basic, C, C++, Ada, Java, Perl, Phyton, Snabba och specialiserade program Deklarativa språk Användaren talar om vad problemet är En mängd påståenden Prolog, ML, Scheme, Gödel, mercury, Oz, (SQL), Generella, läsbara och möjlighet till korrekta program Olika språkparadigmer imperativa språk är tvingande, dvs en given exekveringsordning. högnivåinstruktioner till en processor. Ett deklarativt program: inget om hur det ska exekveras (sant i pure Prolog ). beskriver endast problemet och kunskapen om problemet. Ursprung i logik och hur människan resonerar logiskt. Några viktiga beteckningar (Logik) Predikatnamnär ett samlingsnamn för egenskaps- och relationsnamn. Predikatnamnet åtföljs av argumenten. Ställighet (=aritet) anger antal argument predikatet har. Ställighet = 0: satslogik (inga argument) Ställighet = 1: egenskap Ställighet = 2: relation Argumenten kallas för termer. En term kan vara konstant, variabel eller en struktur (sammansatt term). 2
3 Del 2: Testa Prolog Gratis Prolog för utbildning (Linux/Mac/Windows): Tar lite plats (ca 4 Meg). Många Prolog introduktioner på webben, sök med efter Prolog tutorial introduction Prolog skiljer sig Prolog har inga globala variabler Inga tilldelningssatser Inga iterativa konstruktioner (t.ex. loopar) Inga if then satser Rekursion är central i Prolog Begrepp i Prolog Sant eller falskt, ett Prolog uttryck kan bara anta två värden, sant eller falskt Två argument kan vara lika eller olika. Likhet kan fås gem att fria variabler binds. Sökning, Prolog bygger på sökning, Prolog försöker hitta en lösning och testar olika vägar. Backtracking, om sökningen misslyckas, backar Prolog tillbaks och provar alternativa vägar. EGENSKAPER skrivs: man(adam). man(kalle). man(lasse). woman(lisa). woman(eva). RELATIONER skrivs: parent(adam,peter). % adam är förälder till peter parent(eva,kalle). parent(eva,lisa). parent(lisa,lasse). parent(kalle, knut). % Avsluta alltid raden med en punkt! Resterande text efter % är kommentar Definition av Regler Varje regel har ett huvud (head) namnet som definierar relationen. Varje regel har en kropp (body) själva definitionen av relationen. Definition av mor och far följer nedan: OM M är en kvinna och M är förälder till C så är M mor till C : mother(m,c):- woman(m), parent(m,c). OM F är en man och F är förälder till C så är F far till C : father(f,c):- man(f), parent(f,c). :- betyder (logisk implikation), betyder logiskt OCH, både man och parent måste vara sant för att father skall vara sant. Prolog Interpretatorn Fakta och regler skrivs i fil som har slutar på.pl Släpp filen på prolog ikonen eller ladda in (se manual). Fråga Prolog om det finns någon kvinna. woman(x). X = lisa? ; X = eva? ; Prolog Prompt: Prolog skriver alltid ut?-. Efter prompten ställer du din fråga. ; frågar efter fler lösningar (ger alternativ lösning om det finns). 3
4 Vi vill bara veta om det finns någon kvinna. woman(_). child(_). Prolog bygger på negation as failure, allt som man inte vet, är falskt (lite mer om det senare). Skriv in i en textfil som slutar med.pl ; whisky(bowmore). whisky(glenlivet). region(bowmore, islay). region(glenlivet, highland). age(bowmore, 12). Har vi whisky från Islay och i så fall hur gammal? region(w, islay), age(w, A). A = 12, W = bowmore? ; W instantieras (binds till) bowmore. whisky(bowmore). region(bowmore, islay). age(bowmore, 12). Har vi en whisky som är mer än 8 år gammal? whisky(w), age(w, A), A>8. A = 12, W = bowmore? ; Strukturer 3 sätt att skiva samma sak: smak(oban, 16, smak, torv, medel, roekig, medel, fyllig, medel). smak(oban, 12, [torv, me], [roekig, me], [fyllig, me]). smak(oban, 10, smak(torv(me), roekig(me), fyllig(me))). Varning, lätt att missförstå strukturer, det finns inga funktioner i Prolog! smak(oban, 10, smak(torv(me), roekig(me), fyllig(me))). smak(w, _, S). S = smak(torv(me), roekig(me), fyllig(me)), W = oban? ; smak(oban, 10, smak(torv(me), roekig(me), fyllig(me))). smak(w, _, smak(torv(t), _,_)). T = me, W = oban? ; 4
5 Mer REGLER whisky(bowmore). region(bowmore, islay). aalder(bowmore, 12). smak(bowmore,12, smak(torv(me), roekig(me), fyllig(me)). man(peter). % För alla män M och whisky W gäller det att % M gillar W. gillar(m, W) :- man(m), whisky(w). whisky(bowmore). region(bowmore, islay). aalder(bowmore, 12). smak(bowmore,12, smak(torv(me), roekig(me), fyllig(me)). man(peter). gillar(m, W) :- man(m), whisky(w). Vad gillar Peter? gillar(peter, X). X = bowmore? ; \+ gillar(peter,bowmore). Negation, det är inte sant, skrivs \+ Listor [ ] : en tom lista [1, 2, abba] : en lista som innehåller 3 element [[11, 12, 13], [21, 22, 23], [31, 32, 33]] : En 3x3 matris (en lista som innehåller 3 listor som...). Listor Huvud på listan, svansen på listan, jämför CAR och CDR i LISP Dessa två listor är identiska!?- [a,b,c] = [a [b,c]]. Yes Ger huvud och svans?- [a,b,c] = [Huvud Svans]. Huvud=a Svans=[b,c] Några enkla predikat: member % Predikatet medlem % X är medlem i listan om den står först i listan medlem(x, [X Rest]). % Annars är X i resten av listan. medlem(x, [F Rest]) :- medlem(x, Rest) medlem(1, [abba, 1, 3]). Kallas svansrekursion om det sista en regel gör är att anropa sig själv. Detta blir lika effektivt som en loop skriven i C om man skulle vara intresserad av exekveringstid. medlem medlem(x, [X Rest]). medlem(x, [F Rest]) :- medlem(x, Rest). medlem(x, [abba, 1, 3]). X = abba? ; X = 1? ; X = 3? ; 5
6 medlem first, second, tail medlem(1, [A, B]). A = 1? ; B = 1? ; Luring, A och B är ju variabler och kan i detta exempel vara vad som helst, exempelvis 1. Därmed kan första elementet i listan vara 1 och andra elementet i listan kan även vara 1. % Det första elementet i listan. first(x, [X _]). % Det andra elementet i listan. second(x, [ _,X _ ]). % Resten av listan. tail(r, [ _ R]). Aritmetik och annat Villkor som är sanna eller falska: <, >, >=, =<, =:=, =\= (reducerar höger och vänsterleden). is (exempel?- X is 4 + 3) ==, \== (strikt likhet, olikhet) = (unifiering, det vill säga att Prolog försöker binda alla obundna variabler så långt det går. Lyckas det så lyckas unifieringen). +, -, *, /, sin, cos, tan 2 =< =:= =:= =\= sin(0), =:= sin(0). Trace? - trace, X is sin(4/5), X> Call: _59 is sin(4/5)? <ENTER> 1 1 Exit: is sin(4/5)? <ENTER> 2 1 Call: > 2? <ENTER> 2 1 Fail: > 2? <ENTER> 1 1 Redo: is sin(4/5)? <ENTER> 1 1 Fail: _59 is sin(4/5)? <ENTER> Redo betyder att Prolog interpretatorn backtrackar (backar ett eller flera steg för att försöker hitta alternativ lösning). A is B. Uttrycket B beräknas och unifieras med variabeln (eller konstanten) A.? - Area is 3.14 * 5 * 5. Area = 78.5? <ENTER>? - 4 is 4.? X is 2 + M. ERROR? M = 2, X is 2 + M. X = 4 För att högertsidan om is ska kunna beräknas får det inte finnas obundna variabler 6
7 Strikt likhet == V == Q. %variabel V är inte strikt samma som Q % man skulle kunna instantiera V = 1 och Q till 2 om man vill V = 5, Q = 5, V == Q. % nu är båda strikt lika (båda=5). 1+2 == 2+1. % strukturen 1+2 är inte strikt lik == 1+2. Unifiering = Två predikat kan unifieras omm de har samma namn de har lika många termer termerna kan unifieras två termer kan unifieras omm den ena är en variabel både är samma konstant både är strukturer... Unifiering = fortsätter två strukturer kan unifieras omm de har samma konstruktor (namn) de har samma ställighet argumenten kan unifieras Exampel på unifiering-1 xx(left, 123, X) = xx(a,b,b). A = left, B = 123, X = 123? ; cbc = X. X = cbc? +(5,5) = Misslyckade exempel: X = 5 + 5, X = 10. Exampel på unifiering-2 Exampel på unifiering-3a E = 1+2. E = 1+2? <ENTER> Yes (E har tilldelats strukturen 1+2 vilket är samma sak som +(1,2) p(p(p(p(0)))) = p(p(x)). X = p(p(0))? ; % predikatet lenght1 length1(0, [ ]). length1(n, [ F R]) :- length1(n2, R), N = N2+1. length1(x, [a,b,c]). X = 1+(1+(1+0))? ; 7
8 Exampel på unifiering-3b % predikatet lenght1 length1(0, [ ]). length1(n, [ F R]) :- length1(n2, R), N is N2+1. length1(x, [a,b,c]). X = 3; Syntax Predikat: mamma, mmm, _1_. Variabler: W, W12, _12 Konstanter: stefan, stefan, Stefan Strukturer: de(de(x,10,nil),12,nil). Listor: [], [1,2, [44, 55], 3], [a,n(1,2,3)] Aritmetik & annat: +, -, *, /, sin, cos, tan, <, >, >=, =<, =:=, =\=, ==, =, is Siffror och tal: 0,, 9, , 55.2e-3 Closed world assumption (CWA) Exempel: SJ uppger att det dagligen går ett tåg från Linköping till Stockholm kl. 9:22. Dock säger man inte explicit att det inte går ett tåg kl. 9:56 eller 10:24. Eftersom det inte är angivet ett tåg kl. 9:56 går det förmodligen inget tåg då. CWA: Det som inte kan visas är inte sant. Negation by Failure: NF: Det som Prologprogrammet inte kan härleda i ändlig tid är falskt. Negation i Prolog Negation by failure skrivs i prolog \+ Exempel:?- X = z, \+ member(x,[a,b,c]).?- X = c, \+ member(x,[a,b,c]). Hur hittar Prolog alla lösningar Djupet-först sökning med s k backtracking: När en lövd påträffas backar interpretatorn tillbaks till föregående förgrening och provar nästa alternativ. Problem: oändliga subträd oändlig loop. SLD-träd för medlem(x, [a, b, c]). X/a X/b Program: medlem(x, [X _]). medlem(x, [_ T]) :- medlem(x, T). medlem(x, [a, b, c]). medlem(x, [b, c]). medlem(x, [c]). medlem(x, []). X/c 8
9 Metalogiska predikat Prolog innehåller en uppsättning predikat som inte är strikt predikatlogiska. Man kan även skriva program som ändrar sin egen kod (viktig egenskap im AI).?- write( hello world ), writeln(5). hello world 5 var(x) - misslyckas om X är instansierad. Exempel:? X = Y, var(x).?- Z = hej, var(z).? var(sol). SLU T integer( X) -om X är bunden till ett heltal. atomic(x) -om X är bunden till en konstant. 9
Ett Logikprogram. Logik och Programmering. Introduktion till PROLOG, dvs. PROgramming in LOGic. Viktiga begrepp/områden i Prolog. Framtiden?
Crash Course in Prolog Peter Funk FUKO HT2001 IDt, Computer Science and Engineering Mälardalen University Västerås, Sweden Peter.Funk@mdh.se Introduktion till PROLOG, dvs. PROgramming in LOGic Prolog-programmen
Läs merDD1361 Programmeringsparadigm HT15
DD1361 Programmeringsparadigm HT15 Logikprogrammering 1 Dilian Gurov, TCS Innehåll Logikprogrammering Kontrollflöde Unifiering Backtracking Negation Snitt Induktiva datatyper och rekursion Inbyggda datatyper:
Läs merDD1361 Programmeringsparadigm HT17
DD1361 Programmeringsparadigm HT17 Logikprogrammering 1 Dilian Gurov, KTH Delkursinnehåll Logisk versus procedurell läsning Kontrollflöde: Unifiering, Backtracking, Snitt Induktiva datatyper och rekursion
Läs merK3 Om andra ordningens predikatlogik
KTH Matematik Bengt Ek Maj 2005 Kompletteringsmaterial till kursen 5B1928 Logik för D1: K3 Om andra ordningens predikatlogik Vi presenterar på dessa sidor kortfattat andra ordningens predikatlogik, vilket
Läs merDD1361 Programmeringsparadigm HT16
DD1361 Programmeringsparadigm HT16 Logikprogrammering 1 Dilian Gurov, TCS Delkursinnehåll Logikprogrammering Logisk versus procedurell läsning Kontrollflöde Unifiering, Backtracking, Snitt Negation Induktiva
Läs merAvslutning. Vad? Hur? Anmärkningar inför tentan 2. Vad ska ni kunna?
Avslutning Anmärkningar inför tentan Vad ska ni kunna? Avslutning 1 Vad? Anmärkningar inför tentan 1 Att ha en bra förståelse för det som behandlades på föreläsningarna, inlämningsuppgifterna och gruppövningarna
Läs merCentrala begrepp i prolog och logikprogrammering. Annamaris lista
Centrala begrepp i prolog och logikprogrammering Annamaris lista Databas med fakta och regler: Ett prolog-system består av en databas av fakta, och regler som gäller för dessa fakta. Fakta har formen av
Läs merFöreläsning 6: Introduktion av listor
Föreläsning 6: Introduktion av listor Med hjälp av pekare kan man bygga upp datastrukturer på olika sätt. Bland annat kan man bygga upp listor bestående av någon typ av data. Begreppet lista bör förklaras.
Läs merGrundläggande logik och modellteori (5DV102)
Tentamen 2013-10-31 Grundläggande logik och modellteori (5DV102) M. Berglund och K. Markström Totalt antal uppgifter 11 Maximalt antal poäng 30 Krav för 3 i betyg 14 poäng Krav för 4 i betyg 19 poäng,
Läs merInnehåll. Föreläsning 7. Satslogiken är för grov. Samma sak i predikatlogik: Första ordningens predikatlogik. Logik med tillämpningar
Innehåll Föreläsning 7 Logik med tillämpningar 99-03-01 Första ordningens predikatlogik Objekt, predikat, kvantifierare Funktioner, termer, wffs Bindning och räckvidd Tolkningar och värderingar Satisfiering,
Läs merAvslutning. Vad? Hur? Anmärkningar inför tentan 2. Vad ska kunnas?
Avslutning Anmärkningar inför tentan Vad ska kunnas? Avslutning 1 Vad? Anmärkningar inför tentan 1 Att ha en bra förståelse för det som behandlades på föreläsningarna och gruppövningarna räcker i princip.
Läs mer7, Diskreta strukturer
Objektorienterad modellering och diskreta strukturer 7, Diskreta strukturer Sven Gestegård Robertz Datavetenskap, LTH 2015 Modeller Matematiska modeller Kontinuerliga modeller Kontinuerliga funktioner
Läs merTAIU07 Matematiska beräkningar med Matlab
TAIU07 Matematiska beräkningar med Matlab Datorlektion 2. Villkor och Repetition 1 Logiska uttryck Uppgift 1.1 Låt a=3 och b=6 Vad blir resultatet av testerna ab? Uppgift 1.2 Låt a, b,
Läs merSemantik och pragmatik (Serie 4)
Semantik och pragmatik (Serie 4) Satser och logik. Mats Dahllöf Institutionen för lingvistik och filologi April 2015 1 / 30 Så här långt (satslogik) Konjunktion (p q): att två enklare satser båda är uppfyllda.
Läs merSanningsvärdet av ett sammansatt påstående (sats, utsaga) beror av bindeord och sanningsvärden för ingående påståenden.
MATEMATISK LOGIK Matematisk logik formaliserar korrekta resonemang och definierar formellt bindeord (konnektiv) mellan påståenden (utsagor, satser) I matematisk logik betraktar vi påståenden som antingen
Läs merProva på-laboration i PHP Johan Sjöholm johsj@ida.liu.se Institutionen för datavetenskap, Linköpings universitet 2009-08-09
Prova på-laboration i PHP Johan Sjöholm johsj@ida.liu.se Institutionen för datavetenskap, Linköpings universitet 2009-08-09 1. Introduktion till webbprogrammering Webbprogrammering består av ett antal
Läs merSemantik och pragmatik
Semantik och pragmatik OH-serie 4 http://stp.lingfil.uu.se/~matsd/uv/uv12/semp/ Mats Dahllöf Institutionen för lingvistik och filologi Januari 2012 Om barnet har svårt att andas eller har ont i bröstet
Läs merImperativ programmering
Imperativ programmering 1DL126 3p Imperativ programmering Jesper Wilhelmsson ICQ: 20328079 Yahoo: amigajoppe MSN / epost: jesperw@it.uu.se Rum: 1335 Tel: 471 1046 Imperativ programmering Vilka programmeringsspråk
Läs merFöreläsning 9 i programmeringsparadigm. Unifiering (Brna Chapter 4.1).
Föreläsning 9 i programmeringsparadigm. Unifiering (Brna Chapter 4.1). Repetition: I Haskell är mönster-passning (pattern-matchning) jättepraktiskt: När vi gör ett anrop av en funktion med ett visst argument
Läs merDugga Datastrukturer (DAT036)
Dugga Datastrukturer (DAT036) Duggans datum: 2012-11-21. Författare: Nils Anders Danielsson. För att en uppgift ska räknas som löst så måste en i princip helt korrekt lösning lämnas in. Enstaka mindre
Läs merProgrammeringsteknik med C och Matlab
Programmeringsteknik med C och Matlab Kapitel 2: C-programmeringens grunder Henrik Björklund Umeå universitet Björklund (UmU) Programmeringsteknik 1 / 32 Mer organisatoriskt Imorgon: Datorintro i lab Logga
Läs merSMD 134 Objektorienterad programmering
SMD 134 Objektorienterad programmering Dagens agenda: Typer i Java: primitiva datatyperna, referenstyper Variabler och variabeltilldelningar med primitiva typer Konstanter av de olika typerna. Heltalsräkning
Läs merProva på-laboration i Prolog
Prova på-laboration i Prolog Peter Dalenius petda@ida.liu.se Institutionen för datavetenskap, Linköpings universitet 2006-09-12 1. Introduktion till Prolog Programspråket Prolog konstruerades i början
Läs merTentamen i. TDDA 69 Data och programstrukturer
1 Linköpings tekniska högskola Institutionen för datavetenskap Anders Haraldsson Tentamen i TDDA 69 Data och programstrukturer Torsdag den 14 januari 2009, kl 14-18 Hjälpmedel: Inga. Poänggränser: Maximalt
Läs merTentamen OOP 2015-03-14
Tentamen OOP 2015-03-14 Anvisningar Fråga 1 och 2 besvaras på det särskilt utdelade formuläret. Du får gärna skriva på bägge sidorna av svarsbladen, men påbörja varje uppgift på ett nytt blad. Vid inlämning
Läs merSemantik och pragmatik
Semantik och pragmatik OH-serie 5 http://stp.lingfil.uu.se/~matsd/uv/uv12/semp/ Mats Dahllöf Institutionen för lingvistik och filologi Januari 2012 Så här långt Konjunktion (p q): att två enklare satser
Läs merFTEA12:2 Filosofisk metod. Att värdera argumentation I
FTEA12:2 Filosofisk metod Att värdera argumentation I Dagens upplägg 1. Några generella saker att tänka på vid utvärdering av argument. 2. Grundläggande språkfilosofi. 3. Specifika problem vid utvärdering:
Läs merObjektorienterad programmering i Java
Objektorienterad programmering i Java Föreläsning 4 Täcker i stort sett kapitel 6 i kursboken Java Software Solutions 1 Läsanvisningar Den här föreläsningen är uppbyggd som en fortsättning av exemplet
Läs merDagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program
Dagens föreläsning Programmeringsteknik för Ingenjörer VT05 Föreläsning 3-4 Repetition Datatyper Uttryck Operatorer Satser Algoritmer Programmeringsteknik VT05 2 Repetition Repetition - Programmering i
Läs merUniversitetet i Linköping Institutionen för datavetenskap Anders Haraldsson 2
Anders Haraldsson 1 Anders Haraldsson 2 Dagens föreläsning Programmering i Lisp Fö 5 - Funktioner - lambda-uttryck (avs 7.1) - funcall och function (avs 7.2) - Högre ordningens funktioner (avs 7.) - Iteratorer
Läs merFöreläsning 2 Programmeringsteknik och C DD1316. Mikael Djurfeldt
Föreläsning 2 Programmeringsteknik och C DD1316 Mikael Djurfeldt Föreläsning 2 Programmeringsteknik och C Python introduktion Utskrift Inläsning Variabler Datatyp Aritmetiska operatorer Omvandling
Läs merÖversikt 732G11 PROGRAMMERING 1. Personal. Kursens mål. Litteratur. Kursens innehåll 2010-04-22
Översikt 732G11 PROGRAMMERING 1 Institutionen för datavetenskap Om kursen Vad är programmering (bra för)? Programmeringsspråket Java Utvecklingsmiljön Eclipse Genomgång av några programexempel Programmering
Läs merDagens föreläsning Programmering i Lisp Fö 5
Anders Haraldsson 1 Dagens föreläsning Programmering i Lisp Fö 5 - Funktioner - lambda-uttryck (avs 7.1) - funcall och function (avs 7.2) - Högre ordningens funktioner (avs 7.3) - Iteratorer - Egenskaper
Läs merGrundläggande logik och modellteori
Grundläggande logik och modellteori Kapitel 8: Predikatlogik Henrik Björklund Umeå universitet 2. oktober, 2014 Första ordningens predikatlogik Signaturer och termer Första ordningens predikatlogik Formler
Läs merFöreläsning 9 i programmeringsparadigm. Paradigmöversikt, paradigmhistoria, paradigmgeografi. Se även föreläsning 1.
Föreläsning 9 i programmeringsparadigm. Paradigmöversikt, paradigmhistoria, paradigmgeografi. Se även föreläsning 1. Användning av Prolog. Prolog har framför allt används inom AI ( Articifial Intellegence),
Läs merDD1361 Programmeringsparadigm. Carina Edlund
DD1361 Programmeringsparadigm Carina Edlund carina@nada.kth.se Funktionell programmering Grundidéen med funktionell programmering är att härma matematiken och dess funktionsbegrepp. Matematiskt funktionsbegrepp
Läs merEn introduktion till predikatlogik
rasmus.blanck@gu.se FT1200, LC1510 och LGFI52 VT2017 (Premiss 1) (Premiss 2) (Slutsats) Alla människor är dödliga Sokrates är en människa Sokrates är dödlig Detta argument är intuitivt giltigt: Det finns
Läs merTommy Färnqvist, IDA, Linköpings universitet. 2 Strukturer 2 2.1 Domäner... 2 2.2 Tolkningar... 3
Föreläsning 2 Semantik 729G06 Logikdelen Föreläsningsanteckningar i Programmering och logik 27 januari 2014 Tommy Färnqvist, IDA, Linköpings universitet 2.1 Innehåll Innehåll 1 Lite mer syntax 1 2 Strukturer
Läs merGrunderna i stegkodsprogrammering
Kapitel 1 Grunderna i stegkodsprogrammering Följande bilaga innehåller grunderna i stegkodsprogrammering i den form som används under kursen. Vi kommer att kort diskutera olika datatyper, villkor, operationer
Läs merFlera kvantifierare Bevis Direkt bevis Motsägelse bevis Kontrapositivt bevis Fall bevis Induktionsprincipen. x y (x > 0) (y > 0) xy > 0 Domän D = R
Föreläsning Flera kvantifierare Bevis Direkt bevis Motsägelse bevis Kontrapositivt bevis Fall bevis Induktionsprincipen För att göra ett påstående av en öppen utsaga med flera variabler behövs flera kvantifierare.
Läs merGrundläggande programmering med C# 7,5 högskolepoäng
Grundläggande programmering med C# 7,5 högskolepoäng Provmoment: TEN1 Ladokkod: NGC011 Tentamen ges för: Omtentamen DE13, IMIT13 och SYST13 samt öppen för alla (Ifylles av student) (Ifylles av student)
Läs mera), c), e) och g) är olikheter. Av dem har c) och g) sanningsvärdet 1.
PASS 9. OLIKHETER 9. Grundbegrepp om olikheter Vi får olikheter av ekvationer om vi byter ut likhetstecknet mot något av tecknen > (större än), (större än eller lika med), < (mindre än) eller (mindre än
Läs merDeklarativt programmeringsparadigm
Deklarativt programmeringsparadigm Det vi introducerade på förra föreläsningen var ett exempel på deklarativ programmering. Vi specificerade en fallanalys som innehöll fakta och regler för hur man skulle
Läs merProgrammerbar logik. Kapitel 4
Kapitel 4 Programmerbar logik Programmerbar logik (PLC: Programmable Logic Controller; fi. ohjelmoitava logiikka) är en sorts mikrodatorliknande instrument som är speciellt avsedda för logik- och sekvensstyrningsproblem.
Läs merLogikprogrammering. Undervisningsmaterialet NYTT för 2013: Learn Prolog Now! SWI Prolog-tolk, startas under tuxedo/ pingvinerna med swipl!
Logikprogrammering Undervisningsmaterialet NYTT för 2013: Learn Prolog Now! SWI Prolog-tolk, startas under tuxedo/ pingvinerna med swipl! Learn Prolog Now! SWI Prolog Gratis Prolog-tolk Lesser GNU Public
Läs merOmtentamen (del 1, 6 högskolepoäng) i Programkonstruktion och datastrukturer (1DL201)
Omtentamen (del 1, 6 högskolepoäng) i Programkonstruktion och datastrukturer (1DL201) Lars-Henrik Eriksson Fredag 5 april 2013, kl 14:00 17:00, i Polacksbackens skrivsal Hjälpmedel: Inga. Inte heller elektronisk
Läs merDagens föreläsning Programmering i Lisp. - Bindning av variabler (avs 14.6) fria variabler statisk/lexikalisk och dynamisk bindning
1 Dagens föreläsning Programmering i Lisp - Block, räckvidd - Bindning av variabler (avs 14.6) fria variabler statisk/lexikalisk och dynamisk bindning - Felhantering (kap 17) icke-normala återhopp catch
Läs merUniversitetet i Linköping Institutionen för datavetenskap Anders Haraldsson
1 2 - Block, räckvidd Dagens föreläsning Programmering i Lisp - Bindning av variabler (avs 14.6) fria variabler statisk/lexikalisk och dynamisk bindning - Felhantering (kap 17) icke-normala återhopp catch
Läs merFilosofisk Logik (FTEA21:4) föreläsningsanteckningar/kompendium. v. 2.0, den 29/ III. Metalogik 17-19
Filosofisk Logik (FTEA21:4) föreläsningsanteckningar/kompendium IV v. 2.0, den 29/4 2013 III. Metalogik 17-19 Modeller för satslogiken 18.1 Vi har tidigare sagt att en modell är en tolkning av en teori
Läs merDigitalt lärande och programmering i klassrummet
Digitalt lärande och programmering i klassrummet Innehåll Programmering Vad är programmering och varför behövs det? Argument för (och emot) programmering Kort introduktion om programmering Några grundbegrepp
Läs merFUZZY LOGIC. Christopher Palm chrpa087
FUZZY LOGIC 900223-1554 Innehållsförteckning INLEDNING...2 HUR DET FUNGERAR...3 Crisp Sets och Fuzzy Sets...3 Operatorer...5 IF THEN regler...7 FUZZY INFERENCE...7 Fuzzification...8 Regelsättning...8
Läs merProgrammering A C# VT 2010. Ett kompendie över Programmering A (50p) i c# Stefan Fredriksson 2010 02 08
Programmering A C# VT 2010 Ett kompendie över Programmering A (50p) i c# Stefan Fredriksson 2010 02 08 Innehåll Hjälp och referenser... 3 Kap 1 Introduktion... 3 Steg för steg... 3 Kapitel 2 Variabler...
Läs merExempel på typer av datorspråk EXCEL
1 2 TDDB82 Perspektiv på Datateknik Breddgivande föreläsning Datorspråk Programmeringsparadigmer Programmeringsspråk Konstruktioner i programmeringsspråk Litteratur: Brookshear, Computer Science - an overview,
Läs merIntroduktion till programmering D0009E. Föreläsning 1: Programmets väg
Introduktion till programmering D0009E Föreläsning 1: Programmets väg 1 Vad är en dator? En maskin vars beteende styrs av de innehållet (bitmönster) som finns lagrade i datorns minne (inte helt olikt förra
Läs merBjörn Abelli Programmeringens grunder med exempel i C#
Björn Abelli Programmeringens grunder med exempel i C# Övningshäfte (bearbetning pågår) Senaste uppdatering: 2004-12-12 I denna version finns övningar för de mest centrala avsnitten. Häftet kommer att
Läs mer16 Programmering TI -86 F1 F2 F3 F4 F5 M1 M2 M3 M4 M5
16 Programmering Skriva program till TI-86... 214 Köra program... 221 Arbeta med program... 223 Hämta och köra assemblerprogram... 226 Arbeta med strängar... 227 TI -86 M1 M2 M3 M4 M5 F1 F2 F3 F4 F5 214
Läs merTDDC74 Programmering, abstraktion och modellering DUGGA 2
1 Tekniska högskolan vid Linköpings universitet Institutionen för datavetenskap Anders Haraldsson TDDC74 Programmering, abstraktion och modellering DUGGA 2 Torsdag 19 feb 2009 8-10 Namn: Personnummer:
Läs merTommy Färnqvist, IDA, Linköpings universitet. 1 Kursadministration 1. 2 Introduktion 2 2.1 Varför logik?... 2 2.2 Satslogik... 2
Föreläsning 1 Syntax 729G06 Logikdelen Föreläsningsanteckningar i Programmering och logik 21 januari 2014 Tommy Färnqvist, IDA, Linköpings universitet 1.1 Innehåll Innehåll 1 Kursadministration 1 2 Introduktion
Läs merInstitutionen för datavetenskap 2014/15
LUNDS TEKNISKA HÖGSKOLA Datorer och datoranvändning Institutionen för datavetenskap 2014/15 ME en dator 1 Inledning ME är en påhittad dator, men den har likheter med riktiga datorer: det finns ett maskinspråk
Läs merFöreläsning 8. newtype Chess = Chess [(Square, Chessman)] -- data ist f newtype OK -- data istället för newtype krävs om >1 konstruerare.
Föreläsning 8. Typer och programmeringsstil i Haskell. När vi definerade ett schack gjorde vi så här: newtype Chess = Chess [(Square, Chessman)] -- data ist f newtype OK deriving Show -- newtype effektivare
Läs merSpråket Scheme. DAT 060: Introduktion till (funktions)programmering. DrScheme. uttryck. Jacek Malec m. fl. evaluering av uttryck.
DAT 060: Introduktion till (funktions)programmering. Jacek Malec m. fl. www.cs.lth.se/home/jacek Malec/dat060 Idag: 1. Kursens innehåll 2. Kursens organisation 3. Programmeringsspråket Scheme 4. Introduktion
Läs merVem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition.
Institutionen för Datavetenskap Göteborgs universitet HT2009 DIT011 Vem är vem på kursen Objektorienterad programvaruutveckling GU (DIT011) Kursansvarig : Katarina Blom, tel 772 10 60 Rum: 6126 (E-huset)
Läs merImperativ programmering. Imperativ programmering konstruktioner i Lisp. Datastrukturer (kap ) arraystruktur poststruktur
Imperativ programmering konstruktioner i Lisp Imperativ programmering I den imperativa programmeringen skriver vi program satsvist. Datastrukturer (kap.-.) aystruktur poststruktur Iterativa uttryck (avs.)
Läs merSats. Om t är en rätvinklig triangel så är summan av kvadraterna på kateterna i t lika med kvadraten på hypotenusan.
Lunds tekniska högskola Datavetenskap Lennart Andersson Föreläsningsanteckningar EDAF10 3 Predikatlogik 3.1 Motivering I satslogiken är de minsta beståndsdelarna satslogiska variabler som kan anta värdena
Läs merIntroduktion till formella metoder Programmeringsmetodik 1. Inledning
Introduktion till formella metoder Programmeringsmetodik 1. Inledning Fokus på imperativa program (ex. C, Java) program betyder härefter ett imperativt program Program bestäms i en abstrakt mening av hur
Läs merTentamen. 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl 9.00 14.
Tentamen 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl 9.00 14.00, sal E33 Tentan har en teoridel och en problemdel. På teoridelen är inga hjälpmedel
Läs merGrundläggande logik och modellteori (5DV102)
Tentamen 2014-01-10 Grundläggande logik och modellteori (5DV102) M. Berglund och K. Markström Totalt antal uppgifter 10 Maximalt antal poäng 30 Krav för 3 i betyg 1 Krav för 4 i betyg 19 poäng, vara minst
Läs merSätt att skriva ut binärträd
Tilpro Övning 3 På programmet idag: Genomgång av Hemtalet samt rättning Begreppet Stabil sortering Hur man kodar olika sorteringsvilkor Inkapsling av data Länkade listor Användning av stackar och köer
Läs merFöreläsning 2. Operativsystem och programmering
Föreläsning 2 Operativsystem och programmering Behov av operativsystem En dator så som beskriven i förra föreläsningen är nästan oanvändbar. Processorn kan bara ges enkla instruktioner såsom hämta data
Läs merIntroduktion till arv
Introduktion till arv 6 INTRODUKTION TILL ARV Arv Generell-Speciell Arv för att utnyttja det vi redan gjort Återanvändning Basklass Härledd klass Varför arv? Inför en subklass för att uttrycka specialisering
Läs merUppgift (poäng) 1 (2) 2 (3) 3 (4) 4 (4) 5 (3) 6 (4) 7 (6) 8 (6) 9 (8) Summa
Lena Kallin Westin 2005-08-22 Institutionen för datavetenskap Umeå universitet TENTAMEN Uppgift (poäng) 1 (2) 2 (3) 3 (4) 4 (4) 5 (3) 6 (4) 7 (6) 8 (6) 9 (8) Summa Inlämnad Poäng Kurs : Programmeringsteknisk
Läs merDD1361 Programmeringsparadigm HT15
DD1361 Programmeringsparadigm HT15 Logikprogrammering 3 Dilian Gurov, TCS Idag Induktiva datatyper: Träd (inte inbyggd) Binära träd utan data Binära träd med data Prolog-specifika konstruktioner Negation,
Läs mer6 Rekursion. 6.1 Rekursionens fyra principer. 6.2 Några vanliga användningsområden för rekursion. Problem löses genom:
6 Rekursion 6.1 Rekursionens fyra principer Problem löses genom: 1. förenkling med hjälp av "sig själv". 2. att varje rekursionssteg löser ett identiskt men mindre problem. 3. att det finns ett speciellt
Läs merINDUKTION OCH DEDUKTION
Explorativ övning 3 INDUKTION OCH DEDUKTION Syftet med övningen är att öka Din problemlösningsförmåga och bekanta Dig med olika bevismetoder. Vårt syfte är också att öva skriftlig framställning av matematisk
Läs merIntroduktion till programmering SMD180. Föreläsning 2: Variabler, uttryck och satser
Introduktion till programmering Föreläsning 2: Variabler, uttryck och satser 1 1 Värden De grundläggande saker som en dator manipulerar resultaten av beräkningar kallas värden Värden vi stött på: 2 och
Läs merITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet
ITK:P1 Föreläsning 1 Att programmera i språket Java DSV Peter Mozelius Programmering Olika typer av programmering som t ex: o Imperativ programmering (C, Pascal m fl) o Funktionell programmering (Lisp,
Läs mer8-4 Ekvationer. Namn:..
8-4 Ekvationer. Namn:.. Inledning Kalle är 1,3 gånger så gammal som Pelle, och tillsammans är de 27,6 år. Hur gamla är Kalle och Pelle? Klarar du att lösa den uppgiften direkt? Inte så enkelt! Ofta resulterar
Läs merFÖRELÄSNING 3 ANDERS MÄRAK LEFFLER IDA/HCS
729G06 Logik FÖRELÄSNING 3 ANDERS MÄRAK LEFFLER IDA/HCS 160208 Idag C-regeln, informell (och formell) inledning till predikatlogik (Bevis kommer senare.) 2 3 Vår (Snöfritt Cykla) (Vår Snöfritt) Cykla Lätt
Läs merTentamen: Programutveckling ht 2015
Tentamen: Programutveckling ht 2015 Datum: 2015-11-04 Tid: 09:00-13:00 Sal: Ansvarig: Resultat: Hjälpmedel: Maxpoäng: Betygsgränser: Anslås inom 3 veckor. Inga 40 p 20 p för G, 32 p för VG. Iakttag följande:
Läs merFöreläsning 4: Poster
Föreläsning 4: Poster Följande är genomgånget: type Person_Type is Namn : String(30); Skonr : Float; Kon : Boolean; Diskussion runt detta med olika typer m.m. Har tagit upp vilka operationer man kan göra
Läs merTräd, binära träd och sökträd. Koffman & Wolfgang kapitel 6, avsnitt 1 4
Träd, binära träd och sökträd Koffman & Wolfgang kapitel 6, avsnitt 1 4 1 Träd Träd är ickelinjära och hierarkiska: i motsats till listor och fält en trädnod kan ha flera efterföljare ( barn ) men bara
Läs merIntroduk+on +ll programmering i JavaScript
Föreläsning i webbdesign Introduk+on +ll programmering i JavaScript Rune Körnefors Medieteknik 1 2012 Rune Körnefors rune.kornefors@lnu.se Språk Naturliga språk Mänsklig kommunika+on T.ex. Svenska, engelska,
Läs merTentamen Grundläggande programmering
Akademin för Innovation Design och Teknik Tentamen Grundläggande programmering Kurskod: DVA103 Datum 2012-06-11 Tid 14.10 16.30 Examinator: Lars Asplund Maxpoäng: 48 Betygsgränser: Betyg 3: 20 Betyg 4:
Läs merVarför är logik viktig för datavetare?
Varför är logik viktig för datavetare? 1. Datavetenskap handlar ofta om att automatisera processer som tidigare styrts av människor. Intuition, intelligens och mänskliga resonemang ersätts av beräkningar.
Läs merDD1350 Logik för dataloger. Fö 2 Satslogik och Naturlig deduktion
DD1350 Logik för dataloger Fö 2 Satslogik och Naturlig deduktion 1 Satslogik En sats(eller utsaga)är ett påstående som kan vara sant eller falskt. I satslogik(eng. propositionallogic) representeras sådana
Läs mer8. Naturlig härledning och predikatlogik
Objektorienterad modellering och diskreta strukturer 8. Naturlig härledning och predikatlogik Sven Gestegård Robertz Datavetenskap, LTH 2013 Outline 1 Inledning 2 Inferensregler 3 Predikatlogik 8. Naturlig
Läs merTentamen i. TDDC67 Funktionell programmering och Lisp
1 Linköpings tekniska högskola Institutionen för datavetenskap Anders Haraldsson Tentamen i TDDC67 Funktionell programmering och Lisp och äldre kurser TDDC57 Programmering, Lisp och funktionell programmering
Läs merINSTUTITIONEN FÖR FILOSOFI, LINGVISTIK OCH VETENSKAPSTEORI ETIK VT-15 METAETIK EMOTIVISM OCH ERROR-TEORI
ETIK VT-15 METAETIK EMOTIVISM OCH ERROR-TEORI JOHN ERIKSSON Idag Kort repetition Emotivism Error-teori Kort repetition Olika frågor: Vad betyder moraliska termer och satser? Vad gör vi när vi pratar och
Läs merMATEMATIKENS SPRÅK. Syftet med denna övning är att med hjälp av logik lära oss att uttrycka matematik mer exakt,
Explorativ övning 1 MATEMATIKENS SPRÅK Syftet med denna övning är att med hjälp av logik lära oss att uttrycka matematik mer exakt, lära oss förstå språket. Vi skall försöka utveckla vårt matematiska språk,
Läs merDeklarativ programmering
Deklarativ programmering TDP007 Konstruktion av datorspråk Föreläsning 7 Peter Dalenius Institutionen för datavetenskap 2014-03-03 Deklarativ programmering Program skrivet i ett deklarativt språk logikspråk,
Läs merVHDL och laborationer i digitalteknik
V:1.1 VHDL och laborationer i digitalteknik Vid laborationskursen i digitalteknik används VHDL till alla laborationerna utom den första. VHDL är ett stort språk och enbart en liten del av språket behövs
Läs merIT för personligt arbete F6
IT för personligt arbete F6 Datalogi del 2 DSV Peter Mozelius Datarepresentation Det som lagras i en dator representeras i grunden som 1:or och 0:or Dessa binära värden kan sedan tolkas på olika sätt i
Läs merTentamen TEN1 HI1029 2014-05-22
Tentamen TEN1 HI1029 2014-05-22 Skrivtid: 8.15-13.00 Hjälpmedel: Referensblad (utdelas), papper (tomma), penna Logga in med tentamenskontot ni får av skrivvakten. Det kommer att ta tid att logga in ha
Läs merVad är det? Översikt. Innehåll. Vi behöver modeller!!! Kontinuerlig/diskret. Varför modeller??? Exempel. Statiska system
Vad är det? Översikt Discrete structure: A set of discrete elements on which certain operations are defined. Discrete implies non-continuous and therefore discrete sets include finite and countable sets
Läs merDD1350 Logik för dataloger
DD1350 Logik för dataloger Fö 4 Predikatlogik 1 Kort repetition Satslogik Naturlig deduktion är ett sunt och fullständigt bevissystem för satslogik Avgörbarhet Så vad saknas? Egenskaper Satslogiken är
Läs mer725G61 - Laboration 7 Implementation av ett API. Johan Falkenjack
725G61 - Laboration 7 Implementation av ett API Johan Falkenjack December 13, 2013 1 Inledning Hittills i kursen har vi tittat på grundläggande programmering och grundläggande objektorientering. I den
Läs merIntroduktion till integrering av Schenkers e-tjänster. Version 2.0
Introduktion till integrering av Schenkers e- Version 2.0 Datum: 2008-06-18 Sida 2 av 8 Revisionshistorik Lägg senaste ändringen först! Datum Version Revision 2008-06-18 2.0 Stora delar av introduktionen
Läs merLULEÅ TEKNISKA UNIVERSITET Ämneskod S0006M Institutionen för matematik Datum 2009-12-17 Skrivtid 0900 1400
LULEÅ TEKNISKA UNIVERSITET Ämneskod S0006M Institutionen för matematik Datum 2009-12-17 Skrivtid 0900 1400 Tentamen i: Statistik 1, 7.5 hp Antal uppgifter: 5 Krav för G: 11 Lärare: Robert Lundqvist, tel
Läs merVad är semantik? LITE OM SEMANTIK I DATORLINGVISTIKEN. Språkteknologi semantik. Frågesbesvarande
LITE OM SEMANTIK I DATORLINGVISTIKEN (FORMELL SEMANTIK) Vad är semantik? Form (abstrakt struktur): grammatik Innehåll (betydelse): semantik Användning: pragmatik/diskurs Mats Dahllöf Språkteknologisk motivation
Läs merObjektorienterad programmering D2
Objektorienterad programmering D2 Laboration nr 2. Syfte Att få förståelse för de grundläggande objektorienterade begreppen. Redovisning Källkoden för uppgifterna skall skickas in via Fire. För senaste
Läs mer