Ett Logikprogram. Logik och Programmering. Introduktion till PROLOG, dvs. PROgramming in LOGic. Viktiga begrepp/områden i Prolog. Framtiden?

Storlek: px
Starta visningen från sidan:

Download "Ett Logikprogram. Logik och Programmering. Introduktion till PROLOG, dvs. PROgramming in LOGic. Viktiga begrepp/områden i Prolog. Framtiden?"

Transkript

1 Crash Course in Prolog Peter Funk FUKO HT2001 IDt, Computer Science and Engineering Mälardalen University Västerås, Sweden 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 (artificiell intelligens). Mycket bra för utforskning" och "prototyp programmering". Prolog bygger uteslutande på Horn-satser. Horn-satser är en delmängd till första ordningens predikatlogiken. Viktiga begrepp/områden i Prolog Baskunskaper i Prolog: databaser, listor, metalogiska predikat, ackumulatorer, svansrekursion, (DCG), generate-and-test, sökning. Anknytning till andra områden: Databaser, Expertsystem, Formella språk och automata-teori, (Naturlig språkhantering). Att tänka deklarativt. Ett Logikprogram En beskrivning i en vald logik av en verklig eller tänkt värld. Beskrivning av alla för problemet/uppgiften relevanta relationer mellan objekten i världen (personer, tal, listor, träd, ). Logik och 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). 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, ) Framtiden? - Programmering närmar sig mänskligt tänkande: deklarativ kunskapsrepresentation, logik och NL (delmängd av ett naturligt språk kan redan idag översättas till logik och logik kan enkelt översättas till naturligt språk). Ökat intresse för temporallogik. -Alla system (program & hårdvara) som är säkerhetskritiska eller säkerhetskänsliga kräver bevis att de är korrekta. - system im flyg, transport, telecom, medicin, mm är inte längre utvecklade gem att väver in kunskapen i kod till en svårförstålig/svårkontrollerbar form (inte många programmerare gillar idag tanken av att den livsuppehållande hjärt/lungmaskin som används för att hålla dem vid liv skulle styrs med ett av dem utvecklat C program). - Prolog utvecklas, den senaste mest lovande utökningen till Prolog är Constraint Logic Programming (CLP). 1

2 Dagsläge för Logik och Logikprogrammering: Satslogik och predikatlogik används för formell verifiering av säkerhetskritiska system (landningsställ, ställverk/signalering för rälssystem, hårdvara, mm). Används för hårdvarudesign (TTL-logikkretsar, sant=1=5 volt, falskt=0=0 volt), predikatlogik, temporallogik, modallogik, fuzzy logic, mm börjar användas för specifika tillämpningar. Prolog används för att implementera delmängder av logiker (en skräddarsydd delmängd för en vissa tillämpning). Prolog används för prototyper och även större kommersiella system (länkas till.exe och användaren vet ej att systemet är implementerat i Prolog). Första Erlang interpretatorn utvecklades i Prolog. Grafiska paket, snabb exekvering, bra gränssnitt till andra programmeringsspråk (anropbart och kan anropa exv C rutiner). Används im naturligt språk, tolkning, översättning etc. Gränssnitt till webben (exv. LPA-Prolog). Deklarativ beskrivning ~ Imperativ Exempel på deklarativ beskrivning Hitta alla barnbarn till en viss person X. Deklarativ beskrivning Ett barnbarn till X är ett barn till ett av Xs barn. Imperativ beskrivning För att hitta ett barnbarn till X, hitta först ett barn till X. Hitta därefter ett barn till barnet. Imperativ beskrivning II För att hitta ett barnbarn till X, hitta först en förälder till ett barn och kolla därefter om föräldern är ett barn till X. read(person); for i := 1 to maxbarn do if barn[i,1] = person then for j := 1 to maxbarn do if barn[j,1] = barn[i,2] then writeln(barn[j,2]); fi od fi od Logik: " X " Y ($ Z (barn(x, Z) and barn(z, Y)) fi barnbarn(x, Y)). Prolog: barnbarn(x,y) :- barn(x,z), barn(z,y). 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åk paradigmer Ett program skrivet I ett imperativa språk är tvingande, dvs en given exekveringsordning. högnivåinstruktioner till en processor. Ett deklarativt program: säger inget om hur det ska exekveras (i Prolog finns några undantag som lagts till av effektivitetsskäl, pure Prolog är ordningsoberoende). har separerat kontroll från programmet, programmeraren behöver inte bry sig om hur programmet exekveras utan beskriver endas problemet och kunskapen om problemet. Bas och ursprung i logik och hur människan resonerar logiskt. Logikens Historik 400 fk De första grunderna läggs av Aristoteles (axiom, premisser, slutsatser Alla valar är däggdjur" osv) Området stabiliseras [Gödel, Church, Russel, m.fl.]. (Predikatlogik helt kartlagt Church-Turing-satsen => predikatlogik == beräkningsbara funktionerna) 1960 Automatic Theorem Proving & AI Resolution och unifiering [Robinson]. Resolution: en effektiv slutsatsdragning men regler måste skrivas på en speciell form Den första Prolog-implementationen [Colmerauer] Logikprogrammering (SLD-resolution) [Kowalski] (Algoritm = logik + kontroll, låt datorn bestämma hur problemet löses, dvs exekveringsordning) Negation (SLDNF-resolution) [Clark]. (SLDNF klarar negativa påståenden "En pingvin kan inte flyga") Edinburgh Prolog [Warren] (vanligaste syntaxen idag) Japanerna annserar sitt 5:e-generationsprojekt: robotik, AI, etc, med logikprogrammering ( huvudresultat : ökad användning av datorer i Japan med Kanji, romaji) Constraint Logic Programming (CLP), Agent Programmering (logiska bubblor), Några viktiga beteckningar (Logik) Predikatnamn är ett samlingsnamn för egenskapsoch 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 Testa Prolog Gratis Prolog för utbildning (Windows): Tar lite plats (någon Meg). Många Prolog introduktioner på webben, sök med efter Prolog tutorial introduction EGENSKAPER och RELATIONER man(adam). man(kalle). man(lasse). woman(lisa). woman(eva). Därefter kan vi lägga till relationen förälder. parent(adam,peter). % adam är förälder till peter parent(eva,kalle). parent(eva,lisa). parent(lisa,lasse). parent(kalle, knut). Definition av Regler Varje regel har ett huvud (head) namet 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, men då det inte finns å tangentbordet har prolog valt :-, betyder logiskt och, både man och parent måste vara sant för att father skall vara sant. Interpretatorn Fakta och regler skrivs i fil som har slutar på.pl Kan släppas på prolog ikonen eller ladda in (se manual). Fråga systemet vem som är 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). Vi vill bara veta om det finns någon kvinna. woman(_). child(_). whisky(bowmore). region(bowmore, islay). aalder(bowmore, 12). Har vi whisky från Islay och i så fall hur gammal? region(w, islay), aalder(w, A). Prolog bygger på negation as failure, allt som man inte vet är falskt (lite mer om det sedare). A = 12, W = bowmore? ; W instantieras (binds till) bowmore. 3

4 whisky(bowmore). region(bowmore, islay). aalder(bowmore, 12). Har vi en whisky som är mer än 8 år gammal? whisky(w), aalder(w, A), A>8. A = 12, W = bowmore? ; Strukturer whisky(bowmore). region(bowmore, islay). aalder(bowmore, 12). smak(bowmore,12, smk(torv(my), roekig(me), fyllig(me)). -(5,4) +(1,*(2,3)) 1 + *(2,3) * 3 smak(w, _, S). S = smak(torv(my), roekig(me), fyllig(me)), W = bowmore? ; smak(w, _, smk(torv(t), _,_)). T = my, W = bowmore? ; Mer REGLER whisky(bowmore). region(bowmore, islay). aalder(bowmore, 12). smak(bowmore,12, smk(torv(my), 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). Vad gillar Peter? gillar(peter, X). X = bowmore? ; 4

5 man(adam). man(kalle). man(lasse). woman(lisa). woman(eva). woman(mia). parent(adam,lasse). % adam är förälder till lasse parent(eva,kalle). parent(eva,lisa). parent(lisa,lasse). parent(kalle,knut). father(f,c):- man(f), parent(f,c). mother(m,c):- woman(m), parent(m,c). Uppgift 1) Lägg till fakta om att kalle har en dotter mia. 2) Skriv en regel som definierar relationen kusin, dvs tar reda på vem mia är kusin med. Överkurs: 3a) skriv en regel som definierar mormor. 3b) Använd den för att visa att eva är lasses mormor. Använd gärna relationen mother/2 (2 betyder att relationen har två argument). Uppgift lösningsidé (finns många lösningar) kusin(k1, K2):- parent(p1, K1), parent(p2, K2), syskon(p1,p2). Test i Prolog?- kusin(x,y). X = lasse Y = knut ; syskon(s1,s2):- parent(x,s1), parent(x,s2), S1 \== S2. % S1 och S2 får inte vara samma person, % man kan ju inte vara syskon med sig själv 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]].?- [a,b,c] = [Huvud Svans]. Huvud=a Svans=[b,c] Ger huvud och svans 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, [abba, 1, 3]). X = abba? ; X = 1? ; X = 3? ; 5

6 medlem(1, [A, B]). A = 1? ; B = 1? ; medlem 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. first, second, tail % 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 +, -, *, /, sin, cos, tan <, >, >=, =<, =:=, =\= (reducerar höger och vänsterleden). is ==, \== (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). 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 10 = X. X = 10? ; = 10. xx(left, 123, X) = xx(a,b,b). A = left, B = 123, X = 123? ; Exampel på unifiering-2 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))? ; Exampel på unifiering-3a % 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 as Failure: NF: Det som Prologprogrammet inte kan härleda i ändlig tid är falskt. 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]). Program: medlem(x, [X _]). medlem(x, [_ T]) :- medlem(x, T). medlem(x, [a, b, c]). medlem(x, [b, c]). X/a medlem(x, [c]). X/b medlem(x, []). X/c dörr(s,a). dörr(a,b). dörr(b,c). dörr(c,d). dörr(d,e). dörr(e,f). Sökning i prolog gå(a,b):-dörr(a,b). %Finns det en dörr mellan A och B så har vi lyckats nå B gå(a,b):-dörr(a,x), gå(x,b). %Finns det en dörr mellan A och X och % man kan gå från X till B så har man lyckats nå B?- gå(s,f). Yes c d e f b a s 8

9 dörr(s,a). dörr(a,b). dörr(b,c). dörr(c,d). dörr(d,e). dörr(e,b). %nu kan det loopa dörr(e,f). gå(a,b):-dörr(a,b). gå(a,c):-dörr(a,x), gå(x,c).?- gå(s,f). Stack overflow Sökning, ny dörr e-b c d e f gå(a,b, _):-dörr(a,b). gå(a,b,v):-dörr(a,x), \+ medlem(x, V), gå(x,b, [X V]).?- gå(s,f). Yes gå2(a,b,v,p):-dörr(a,b), V = P. gå2(a,b,v,p):-dörr(a,x), \+ medlem(x, V), gå2(x,b, [X V], P).?- gå2(s,f, [], P). P = [a,b,c,d,e,f] b a s 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). var( X) - misslyckas om X är instansierad. Exempel:? X = Y, var(x).? var(sol). integer( X) - om X är bunden till ett heltal. atomic(x) - om X är bunden till en konstant. Se egen sida. Inlämningsuppgift Bland annat fixa till de konstiga dörrarna som bara släpper igem åt ett håll Detta är vad som behövs för att skriva Prolog program. Resten är övning i att tänka deklarativt och hjärngymnastik om man har fassnat i att tänka imperativt :) SLU T 9

Traditionell Programmering

Traditionell Programmering 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

Läs mer

DD1361 Programmeringsparadigm HT15

DD1361 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 mer

DD1361 Programmeringsparadigm HT17

DD1361 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 mer

DD1361 Programmeringsparadigm HT16

DD1361 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 mer

Avslutning. Vad? Hur? Anmärkningar inför tentan 2. Vad ska ni kunna?

Avslutning. 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 mer

K3 Om andra ordningens predikatlogik

K3 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 mer

Prova på-laboration i Prolog

Prova 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 mer

Centrala begrepp i prolog och logikprogrammering. Annamaris lista

Centrala 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 mer

Grundläggande logik och modellteori (5DV102)

Grundlä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 mer

Avslutning. Vad? Hur? Anmärkningar inför tentan 2. Vad ska kunnas?

Avslutning. 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 mer

Föreläsning 6: Introduktion av listor

Fö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 mer

Imperativ programmering

Imperativ 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 mer

Dugga Datastrukturer (DAT036)

Dugga 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 mer

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program

Dagens 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 mer

Introduktion till formella metoder Programmeringsmetodik 1. Inledning

Introduktion 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 mer

7, Diskreta strukturer

7, 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 mer

Programmering 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 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 mer

Innehå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. 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 mer

Logikprogrammering. 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! 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 mer

Digitalt lärande och programmering i klassrummet

Digitalt 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 mer

TAIU07 Matematiska beräkningar med Matlab

TAIU07 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 mer

Grunderna i stegkodsprogrammering

Grunderna 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 mer

Programmeringsteknik med C och Matlab

Programmeringsteknik 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 mer

Semantik och pragmatik (Serie 4)

Semantik 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 mer

NXT LEGO-robot laboration Programmering och felsökning av en LEGOrobot

NXT LEGO-robot laboration Programmering och felsökning av en LEGOrobot KUNGLIGA TEKNISKA HÖGSKOLAN NXT LEGO-robot laboration Programmering och felsökning av en LEGOrobot Gabriel Vilén 30/8-2012 gvilen@kth.se Introduktionskurs i datateknik II1310 Sammanfattning Vi har programmerat

Läs mer

Prova 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 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 mer

Översikt 732G11 PROGRAMMERING 1. Personal. Kursens mål. Litteratur. Kursens innehåll 2010-04-22

Ö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 mer

Objektorienterad programmering i Java

Objektorienterad 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 mer

Grundläggande programmering med C# 7,5 högskolepoäng

Grundlä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 mer

Objektorienterad programmering

Objektorienterad programmering Objektorienterad programmering Emil Ahlqvist (c10eat@cs.umu.se) Didrik Püschel (dv11dpl@cs.umu.se) Johan Hammarström (c08jhm@cs.umu.se) Hannes Frimmel Moström (c10hml@cs.umu.se) 1 1. Introduktion 1.1 Objektorienterad

Läs mer

Föreläsning 3.1: Datastrukturer, en översikt

Föreläsning 3.1: Datastrukturer, en översikt Föreläsning.: Datastrukturer, en översikt Hittills har vi i kursen lagt mycket fokus på algoritmiskt tänkande. Vi har inte egentligen ägna så mycket uppmärksamhet åt det andra som datorprogram också består,

Läs mer

Fö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 DD1316 Mikael Djurfeldt Föreläsning 2 Programmeringsteknik och C Python introduktion Utskrift Inläsning Variabler Datatyp Aritmetiska operatorer Omvandling

Läs mer

Deklarativt programmeringsparadigm

Deklarativt 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 mer

Uppgift (poäng) 1 (2) 2 (3) 3 (4) 4 (4) 5 (3) 6 (4) 7 (6) 8 (6) 9 (8) Summa

Uppgift (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 mer

Föreläsning 2. Operativsystem och programmering

Fö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 mer

Sätt att skriva ut binärträd

Sä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 mer

Föreläsning 9 i programmeringsparadigm. Unifiering (Brna Chapter 4.1).

Fö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 mer

Övningar Dag 2 En första klass

Övningar Dag 2 En första klass Kurs i C++ Sid 1 (5) Övningar Dag 2 En första klass Denna övning går ut på att steg för steg bygga upp en klass och skapa objekt. Vi kommer att utgå från en sammansatt datatyp i en struct och parallellt

Läs mer

Introduktion till programmering D0009E. Föreläsning 1: Programmets väg

Introduktion 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 mer

FTEA12:2 Filosofisk metod. Att värdera argumentation I

FTEA12: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 mer

Semantik och pragmatik

Semantik 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 mer

Matematikens grundvalar och programmering av datorer

Matematikens grundvalar och programmering av datorer Matematikens grundvalar och programmering av datorer Bengt Nordström Datavetenskap, Chalmers och Göteborgs Universitet, 14 februari, 2005 Datorerna föddes ur logiken 1870: Cantor: Det finns minst två slags

Läs mer

16 Programmering TI -86 F1 F2 F3 F4 F5 M1 M2 M3 M4 M5

16 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 mer

Tentamen: Programutveckling ht 2015

Tentamen: 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 mer

Föreläsning 4: Poster

Fö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 mer

Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition.

Vem ä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 mer

Fö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. 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 mer

Tentamen OOP 2015-03-14

Tentamen 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 mer

Programmerbar logik. Kapitel 4

Programmerbar 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 mer

Introduktion till arv

Introduktion 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 mer

Sanningsvärdet av ett sammansatt påstående (sats, utsaga) beror av bindeord och sanningsvärden för ingående påståenden.

Sanningsvä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 mer

Fö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. 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 mer

a), c), e) och g) är olikheter. Av dem har c) och g) sanningsvärdet 1.

a), 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 mer

SMD 134 Objektorienterad programmering

SMD 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 mer

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program

Dagens 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 för ingenjörer, VT06 2 Repetition Repetition -

Läs mer

Grundläggande logik och modellteori

Grundlä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 mer

Universitetet i Linköping Institutionen för datavetenskap Anders Haraldsson 2

Universitetet 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 mer

Dagens föreläsning Programmering i Lisp Fö 5

Dagens 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 mer

Semantik och pragmatik

Semantik 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 mer

Programmering A. Johan Eliasson johane@cs.umu.se

Programmering A. Johan Eliasson johane@cs.umu.se Programmering A Johan Eliasson johane@cs.umu.se 1 Jag Undervisar mest grundläggande programmering på Institutionen för datavetensakap Applikationsutveckling för iphone Applikationsutveckling i Java Datastrukturer

Läs mer

Vad är semantik? LITE OM SEMANTIK I DATORLINGVISTIKEN. Språkteknologi semantik. Frågesbesvarande

Vad ä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 mer

FUZZY LOGIC. Christopher Palm chrpa087

FUZZY 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 mer

Föreläsning 1 & 2 INTRODUKTION

Föreläsning 1 & 2 INTRODUKTION Föreläsning 1 & 2 INTRODUKTION Denna föreläsning Vad händer under kursen? praktisk information Kursens mål vad är programmering? Skriva små program i programspråket Java Skriva program som använder färdiga

Läs mer

Introduktion till programmering. Programspråk och paradigmer

Introduktion till programmering. Programspråk och paradigmer Introduktion till programmering Programspråk och paradigmer Vad är ett programspråk? Aprogramming languageis a formal constructedlanguagedesigned to communicate instructions to a machine, particularly

Läs mer

Peter Ottosson 31/8-2012 petott@kth.se Introduktionskurs i datateknik II1310

Peter Ottosson 31/8-2012 petott@kth.se Introduktionskurs i datateknik II1310 KUNGLIGA TEKNISKA HÖGSKOLAN Robotlabb En introduktion till Datateknik 31/8-2012 petott@kth.se Introduktionskurs i datateknik II1310 1 Innehållsförteckning 1. Inledning... 3 1.1 Bakgrund... 3 1.2 Syfte

Läs mer

Välkomna till NADA. Paradigm i datalogin. Vad är ett paradigm

Välkomna till NADA. Paradigm i datalogin. Vad är ett paradigm Välkomna till NADA (Numerisk Analys och DAtalogi) och kursen Paradigm i datalogin, orienteringskurs GN, 7,5 hp (PID) Välkomna... Jag: Serafim Dahl Osquars Backe 2, plan 5 Rum 1531 Postfack: Lindstedtsvägen

Läs mer

DD1361 Programmeringsparadigm HT15

DD1361 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 mer

INDUKTION OCH DEDUKTION

INDUKTION 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 mer

Språket Scheme. DAT 060: Introduktion till (funktions)programmering. DrScheme. uttryck. Jacek Malec m. fl. evaluering av uttryck.

Språ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 mer

COMPUTABILITY BERÄKNINGSBARHET. Källa: Goldschlager, Lister: Computer Science A Modern Introduction 2. upplaga 1988, Prentice Hall

COMPUTABILITY BERÄKNINGSBARHET. Källa: Goldschlager, Lister: Computer Science A Modern Introduction 2. upplaga 1988, Prentice Hall COMPUTABILITY BERÄKNINGSBARHET Källa: Goldschlager, Lister: Computer Science A Modern Introduction 2. upplaga 1988, Prentice Hall Den centrala frågan: givet ett problem, kan det ha en algoritmisk lösning?

Läs mer

Tentamen i. TDDA 69 Data och programstrukturer

Tentamen 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 mer

Dagens föreläsning Programmering i Lisp. - Bindning av variabler (avs 14.6) fria variabler statisk/lexikalisk och dynamisk bindning

Dagens 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 mer

Exempel på typer av datorspråk EXCEL

Exempel 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 mer

Universitetet i Linköping Institutionen för datavetenskap Anders Haraldsson

Universitetet 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 mer

RödGrön-spelet Av: Jonas Hall. Högstadiet. Tid: 40-120 minuter beroende på variant Material: TI-82/83/84 samt tärningar

RödGrön-spelet Av: Jonas Hall. Högstadiet. Tid: 40-120 minuter beroende på variant Material: TI-82/83/84 samt tärningar Aktivitetsbeskrivning Denna aktivitet är utformat som ett spel som spelas av en grupp elever. En elev i taget agerar Gömmare och de andra är Gissare. Den som är gömmare lagrar (gömmer) tal i några av räknarens

Läs mer

Länkning av Prolog under C

Länkning av Prolog under C Länkning av Prolog under C Kent Boortz Swedish Institute of Computer Science Box 1263, S-164 28 Kista, Sweden 1 september 1991 T91:14 Sammanfattning SICStus länkmoduler ger möjlighet att blanda Prolog-

Läs mer

Instruktioner för dig som ska söka till Mattekollo 2016

Instruktioner för dig som ska söka till Mattekollo 2016 Instruktioner för dig som ska söka till Mattekollo 2016 Matematik är KUL men Mattekollo 2016 har tyvärr ett begränsat antal platser, nämligen 40 stycken. Det blir även ett roligare kollo om de som kommer

Läs mer

Deklarativ programmering

Deklarativ 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 mer

Flera kvantifierare Bevis Direkt bevis Motsägelse bevis Kontrapositivt bevis Fall bevis Induktionsprincipen. x y (x > 0) (y > 0) xy > 0 Domän D = R

Flera 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 mer

Problem: BOW Bowling. Regler för Bowling. swedish. BOI 2015, dag 1. Tillgängligt minne: 256 MB. 30.04.2015

Problem: BOW Bowling. Regler för Bowling. swedish. BOI 2015, dag 1. Tillgängligt minne: 256 MB. 30.04.2015 Problem: BOW Bowling swedish BOI 0, dag. Tillgängligt minne: 6 MB. 30.04.0 Byteasar tycker om både bowling och statistik. Han har skrivit ner resultatet från några tidigare bowlingspel. Tyvärr är några

Läs mer

Tentamen TEN1 HI1029 2014-05-22

Tentamen 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 mer

MATEMATIKENS SPRÅK. Syftet med denna övning är att med hjälp av logik lära oss att uttrycka matematik mer exakt,

MATEMATIKENS 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 mer

Introduk+on +ll programmering i JavaScript

Introduk+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 mer

TDP002 Imperativ programmering

TDP002 Imperativ programmering TDP002 Imperativ programmering Introduktion till kursen och python Eric Elfving Institutionen för datavetenskap (IDA) Översikt Programmering En introduktion Python Köra och skriva program Python grunderna

Läs mer

Tentamen Grundläggande programmering

Tentamen 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 mer

Omtentamen (del 1, 6 högskolepoäng) i Programkonstruktion och datastrukturer (1DL201)

Omtentamen (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 mer

Föreläsning 5. Deduktion

Föreläsning 5. Deduktion Föreläsning 5 Deduktion Hur ett deduktivt system fungerar Komponenter - Vokabulär Ett deduktivt system använder ett visst slags språk som kan kallas för systemets vokabulär. I mindre formella fall är kanske

Läs mer

Grundläggande logik och modellteori (5DV102)

Grundlä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 mer

IT för personligt arbete F6

IT 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 mer

DD1361 Programmeringsparadigm. Carina Edlund

DD1361 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 mer

Facit till Några extra uppgifter inför tentan Matematik Baskurs. x 2 x 3 1 2.

Facit till Några extra uppgifter inför tentan Matematik Baskurs. x 2 x 3 1 2. KTH Matematik Lars Filipsson Facit till Några extra uppgifter inför tentan Matematik Baskurs 1. Låt f(x) = ln 2x + 4x 2 + 9 + ln 2x 4x 2 + 9. Bestäm definitionsmängd och värdemängd till f och rita kurvan

Läs mer

FL 5: Aritmetik. Teori

FL 5: Aritmetik. Teori FL 5: Aritmetik Teori Introducerar Prologs inbyggda operationer för aritmetik Tillämpar dessa på enkla listhanteringsproblem, mha ackumulatorer Ser på svansrekursiva predikat och förklarar varför de är

Läs mer

Sats. Om t är en rätvinklig triangel så är summan av kvadraterna på kateterna i t lika med kvadraten på hypotenusan.

Sats. 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 mer

Diskret matematik: Övningstentamen 4

Diskret matematik: Övningstentamen 4 Diskret matematik: Övningstentamen 22. Beskriv alla relationer, som är såväl ekvivalensrelationer som partiella ordningar. Är någon välbekant relation sådan? 23. Ange alla heltalslösningar till ekvationen

Läs mer

DD1361 Programmeringsparadigm HT15

DD1361 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 mer

8-1 Formler och uttryck. Namn:.

8-1 Formler och uttryck. Namn:. 8-1 Formler och uttryck. Namn:. Inledning Ibland vill du lösa lite mer komplexa problem. Till exempel: Kalle är dubbelt så gammal som Stina, och tillsammans är de 33 år. Hur gammal är Kalle och Stina?

Läs mer

DRAFT Mottagningswebben Kravspecifikation

DRAFT Mottagningswebben Kravspecifikation DRAFT Mottagningswebben Kravspecifikation Patrik Stenmark 2006-12-17 Contents 1 Introduktion 2 2 Ordlista 2 3 Användarnas mål 2 3.1 Titel.................................................. 2 3.2 Daddor................................................

Läs mer

Program & programmering

Program & programmering Program & programmering Vad är program? Satser och instruktioner, toggla igenom exempel Program på olika nivåer, för olika maskiner, för olika saker Tolka program; kompilator, intepretator, binärbytekod,

Läs mer

"if"-satsen. Inledande programmering med C# (1DV402)

if-satsen. Inledande programmering med C# (1DV402) "if"-satsen Upphovsrätt för detta verk Detta verk är framtaget i anslutning till kursen Inledande programmering med C# vid Linnéuniversitetet. Du får använda detta verk så här: Allt innehåll i verket if-satsen

Läs mer

Instruktion för att slutföra registreringen

Instruktion för att slutföra registreringen Instruktion för att slutföra registreringen Introduktion Vi antar i den här instruktionen att du redan har registrerat sig. Du kan också ha klickat på aktiveringslänken i mailet. Vi använder ett fiktivt

Läs mer