FL 5: Aritmetik. Teori
|
|
- Kerstin Magnusson
- för 6 år sedan
- Visningar:
Transkript
1 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 mera effektiva än icke-svansrekursiva predikat
2 Aritmetik i Prolog Prolog erbjuder ett antal grundläggande verktyg för aritmetik Heltal och flyttal Aritmetik = 5 3 x 4 = = = -2 4 : 2 = 2 1 är resten när 7 divideras med 2 Prolog?- 5 is 2+3.?- 12 is 3*4.?- 2 is 5-3.?- -2 is 3-5.?- 2 is 4/2.?- 1 is mod(7,2).
3 Exempel på förfrågningar?- 10 is 5+5. yes?- 4 is 2+3. no?- X is 3 * 4. X=12 yes?- R is mod(7,2). R=1 yes
4 Att definiera predikat mha aritmetik addthreeanddouble(x, Y):- Y is (X+3) * 2.
5 Att definiera predikat mha aritmetik addthreeanddouble(x, Y):- Y is (X+3) * 2.?- addthreeanddouble(1,x). X=8 yes?- addthreeanddouble(2,x). X=10 yes
6 En närmare titt Det är viktigt att veta att +, -, / och * utför ingen aritmetik Uttryck som 3+2, 4-7, 5/5 är vanliga Prolog-termer Funktor: +, -, /, * Aritet: 2 Argument: heltal
7 En närmare titt?- X =
8 En närmare titt?- X = X = 3+2 yes?-
9 En närmare titt?- X = X = 3+2 yes? = X.
10 En närmare titt?- X = X = 3+2 yes? = X. X = 3+2 yes?-
11 Predikatet is/2 För att tvinga Prolog att verkligen evaluera aritmetiska uttryck, måste vi använda is såsom vi gjorde i exempelfallen Detta instruerar Prolog att utföra beräkningarna Eftersom detta inte är ett vanligt Prologpredikat, finns det några begränsningar
12 Predikatet is/2?- X is
13 Predikatet is/2?- X is X = 5 yes?-
14 Predikatet is/2?- X is X = 5 yes? is X.
15 Predikatet is/2?- X is X = 5 yes? is X. ERROR: is/2: Arguments are not sufficiently instantiated?-
16 Predikatet is/2?- X is X = 5 yes? is X. ERROR: is/2: Arguments are not sufficiently instantiated?- Result is
17 Predikatet is/2?- X is X = 5 yes? is X. ERROR: is/2: Arguments are not sufficiently instantiated?- Result is Result = 10 yes?-
18 Begränsningar på användning av is/2 Vi får använda variabler på högra sidan av predikatet is Men när Prolog utför beräkningen måste variablerna vara instantierade med en variabelfri Prolog-term Denna Prolog-term måste vara ett aritmetiskt uttryck
19 Notation Till slut två kommentarer på aritmetiska uttryck 3+2, 4/2, 4-5 är endast vanliga Prologtermer i en användarvänlig notation: 3+2 är egentligen +(3,2) osv. Även predikatet is är ett tvåställigt Prologpredikat
20 Notation Till slut två kommentarer på aritmetiska uttryck 3+2, 4/2, 4-5 är endast vanliga Prologtermer i en användarvänlig notation: 3+2 är egentligen +(3,2) osv. Även predikatet is är ett tvåställigt Prologpredikat?- is(x,+(3,2)). X = 5 yes
21 Aritmetik och listor Hur lång är en lista? Den tomma listan har längd 0 En icke-tom lista har längd 1 plus längden av sin svans Försök formulera predikatet length!
22 Längden av en lista i Prolog len([],0). len([_ L],N):- len(l,x), N is X + 1.?-
23 Längden av en lista i Prolog len([],0). len([_ L],N):- len(l,x), N is X + 1.?- len([a,b,c,d,e,[a,x],t],x).
24 Längden av en lista i Prolog len([],0). len([_ L],N):- len(l,x), N is X + 1.?- len([a,b,c,d,e,[a,x],t],x). X=7 yes?-
25 Ackumulatorer Detta var ett rätt så bra program Lätt att förstå Relativt effektivt Men det finns en annan metod för att beräkna längden av en lista Introducerar tanken bakom ackumulatorer Ackumulatorer är variabler som innehåller mellanresultat
26 Att definiera acclen/3 Predikatet acclen/3 har tre argument Listan vars längd vi vill få reda på Längden av listan, ett heltal En ackumulator som håller reda på mellanresultat för längden
27 Att definiera acclen/3 Ackumulatorn för acclen/3 Startvärdet för ackumulatorn är 0 Addera 1 till ackumulatorn för varje gång vi rekursivt behandlar huvudet av en lista När vi når den tomma listan, innehåller ackumulatorn längden av listan Försök formulera acclen!
28 Längden av en lista i Prolog acclen([],acc,length):- Length = Acc. acclen([_ L],OldAcc,Length):- NewAcc is OldAcc + 1, acclen(l,newacc,length).?-
29 Längden av en lista i Prolog acclen([],acc,length):- Length = Acc. acclen([_ L],OldAcc,Length):- NewAcc is OldAcc + 1, acclen(l,newacc,length).?- addera 1 till ackumulatorn varje gång vi avlägsnar huvudet från listan
30 Längden av en lista i Prolog acclen([],acc,length):- Length = Acc. acclen([_ L],OldAcc,Length):- NewAcc is OldAcc + 1, acclen(l,newacc,length).?- När vi når den tomma listan, innehåller ackumulatorn listans längd
31 Längden av en lista i Prolog acclen([],acc,acc). acclen([_ L],OldAcc,Length):-?- NewAcc is OldAcc + 1, acclen(l,newacc,length).
32 Längden av en lista i Prolog acclen([],acc,acc). acclen([_ L],OldAcc,Length):- NewAcc is OldAcc + 1, acclen(l,newacc,length).?-acclen([a,b,c],0,len). Len=3 yes?-
33 Sökträdet för acclen/3 acclen([ ],Acc,Acc).?- acclen([a,b,c],0,len). acclen([_ L],OldAcc,Length):- NewAcc is OldAcc + 1, acclen(l,newacc,length).
34 Sökträdet för acclen/3 acclen([ ],Acc,Acc).?- acclen([a,b,c],0,len). / \ acclen([_ L],OldAcc,Length):- NewAcc is OldAcc + 1, acclen(l,newacc,length).
35 Sökträdet för acclen/3 acclen([ ],Acc,Acc).?- acclen([a,b,c],0,len). / \ no?- acclen([b,c],1,len). / \ acclen([_ L],OldAcc,Length):- NewAcc is OldAcc + 1, acclen(l,newacc,length).
36 Sökträdet för acclen/3 acclen([ ],Acc,Acc).?- acclen([a,b,c],0,len). / \ no?- acclen([b,c],1,len). / \ no?- acclen([c],2,len). / \ acclen([_ L],OldAcc,Length):- NewAcc is OldAcc + 1, acclen(l,newacc,length).
37 Sökträdet för acclen/3 acclen([ ],Acc,Acc).?- acclen([a,b,c],0,len). / \ no?- acclen([b,c],1,len). / \ no?- acclen([c],2,len). no / \ acclen([_ L],OldAcc,Length):- NewAcc is OldAcc + 1, acclen(l,newacc,length).?- acclen([],3,len). / \
38 Sökträdet för acclen/3 acclen([ ],Acc,Acc).?- acclen([a,b,c],0,len). / \ no?- acclen([b,c],1,len). / \ no?- acclen([c],2,len). no / \?- acclen([],3,len). / \ Len=3 acclen([_ L],OldAcc,Length):- NewAcc is OldAcc + 1, acclen(l,newacc,length). no
39 Att tillägga ett wrapper-predikat acclen([ ],Acc,Acc). acclen([ _ L],OldAcc,Length):- NewAcc is OldAcc + 1, acclen(l,newacc,length). length(list,length):- acclen(list,0,length).?-length([a,b,c], X). X=3 yes
40 Svansrekursion Varför är acclen/3 bättre än len/2? acclen/3 är svansrekursiv medan len/2 inte är det Skillnaden: När det gäller svansrekursiva predikat är resultatet färdigt beräknat så fort vi når basfallet När det gäller rekursiva predikat som inte är svansrekursiva, finns det ännu mål att evaluera på stacken när vi når basfallet
41 Jämförelse Icke-svansrekursiv Svansrekursiv len([],0). len([_ L],NewLength):- len(l,length), NewLength is Length + 1. acclen([],acc,acc). acclen([_ L],OldAcc,Length):- NewAcc is OldAcc + 1, acclen(l,newacc,length).
42 Sökträdet för len/2?- len([a,b,c], Len). len([],0). len([_ L],NewLength):- len(l,length), NewLength is Length + 1.
43 Sökträdet för len/2?- len([a,b,c], Len). no / \?- len([b,c],len1), Len is Len len([],0). len([_ L],NewLength):- len(l,length), NewLength is Length + 1.
44 Sökträdet för len/2?- len([a,b,c], Len). no / \?- len([b,c],len1), Len is Len / \ no?- len([c], Len2), Len1 is Len2+1, Len is Len1+1. len([],0). len([_ L],NewLength):- len(l,length), NewLength is Length + 1.
45 Sökträdet för len/2?- len([a,b,c], Len). no / \?- len([b,c],len1), Len is Len / \ no?- len([c], Len2), Len1 is Len2+1, Len is Len1+1. / \ no?- len([], Len3), Len2 is Len3+1, Len1 is Len2+1, Len is Len len([],0). len([_ L],NewLength):- len(l,length), NewLength is Length + 1.
46 Sökträdet för len/2?- len([a,b,c], Len). / \ no?- len([b,c],len1), Len is Len / \ no?- len([c], Len2), Len1 is Len2+1, Len is Len1+1. / \ no Len3=0, Len2=1, Len1=2, Len=3?- len([], Len3), Len2 is Len3+1, Len1 is Len2+1, Len is Len / \ len([],0). len([_ L],NewLength):- len(l,length), NewLength is Length + 1. no
47 Sökträdet för acclen/3 acclen([ ],Acc,Acc).?- acclen([a,b,c],0,len). / \ no?- acclen([b,c],1,len). / \ no?- acclen([c],2,len). no / \?- acclen([],3,len). / \ Len=3 acclen([_ L],OldAcc,Length):- NewAcc is OldAcc + 1, acclen(l,newacc,length). no
48 Lite övningar... Vad svarar Prolog på: X = 3*4.?- X = 3*4. X = 3*4.
49 Lite övningar... Vad svarar Prolog på: X is 3*4.?- X is 3*4. X = 12.
50 Lite övningar... Vad svarar Prolog på: 4 is X.?- 4 is X. ERROR: is/2: Arguments are not sufficiently instantiated
51 Lite övningar... Vad svarar Prolog på: X = Y.?- X = Y. X = Y.
52 Lite övningar... Vad svarar Prolog på: 3 is 1+2.?- 3 is 1+2. true.
53 Lite övningar... Vad svarar Prolog på: 3 is +(1,2).?- 3 is +(1,2). true.
54 Lite övningar... Vad svarar Prolog på: 3 is X+2.?- 3 is X+2. ERROR: is/2: Arguments are not sufficiently instantiated
55 Lite övningar... Vad svarar Prolog på: X is 1+2.?- X is 1+2. X = 3.
56 Lite övningar... Vad svarar Prolog på: 1+2 is 1+2.?- 1+2 is 1+2. false. Ej heller aritmetisk likhet! IS är inte unifieringsoperator!
57 Lite övningar... Vad svarar Prolog på: is(x,+(1,2)).?- is(x, +(1,2)). X = 3.
58 Lite övningar... Vad svarar Prolog på: 3+2 = +(3,2).?- 3+2 = +(3,2). true.
59 Lite övningar... Vad svarar Prolog på: *(7,5) = 7*5.?- *(7,5) = 7*5. true.
60 Lite övningar... Vad svarar Prolog på: *(7,+(3,2)) = 7*(3+2).?- *(7, +(3,2)) = 7*(3+2). true.
61 Lite övningar... Vad svarar Prolog på: *(7,(3+2)) = 7*(3+2).?- *(7,(3+2)) = 7*(3+2). true.
62 Lite övningar... Vad svarar Prolog på: 7*3+2 = *(7,+(3,2)).?- 7*3+2 = *(7,+(3,2)). false.
63 Lite övningar... Definiera ett predikat increment/2 som kontrollerar att dess andra argument är ett större än dess första argument, ex.?- increment(4,5). true.?- increment(4,6). false.?- increment(4,x). X = 5.
64 Lite övningar... Definiera ett predikat increment/2 som kontrollerar att dess andra argument är ett större än dess första argument, ex. increment(b, A) :- A is B+1. Obs!?- increment(x,5). ERROR: is/2: Arguments are not sufficiently instantiated
65 Att jämföra heltal Några av Prologs aritmetiska predikat utför de facto beräkningarna själva Detta gäller de operatorer som jämför heltal
66 Att jämföra heltal Aritmetik Prolog x < y X < Y x y x = y x y x y x > y X =< Y X =:= Y X =\= Y X >= Y X > Y Obs!
67 Jämförelseoperatorer Har den sedvanliga betydelsen Påtvingar både det vänstra och det högra argumentet att evalueras?- 2 < 4+1. yes?- 4+3 > 5+5. no
68 Jämförelseoperatorer Har den sedvanliga betydelsen Påtvingar både det vänstra och det högra argumentet att evalueras?- 4 = 4. yes?- 2+2 = 4. no?- 2+2 =:= 4. yes Unifiering!!! Aritmetisk likhet
69 Att jämföra tal Vi ska definiera ett predikat som tar två argument och gäller när: Det första argumentet är en heltalslista Det andra argumentet är det största heltalet i listan Grundidén Vi ska använda en ackumulator Ackumulatorn håller reda på det hittills största värdet Om vi hittar ett större värde, uppdateras ackumulatorn
70 Definition av accmax/3 accmax([h T],A,Max):- H > A, accmax(t,h,max). accmax([h T],A,Max):- H =< A, accmax(t,a,max). accmax([],a,a).?- accmax([1,0,5,4],0,max). Max=5 yes Fungerar ej för negativa tal!
71 Att tillägga en wrapper max/2 accmax([h T],A,Max):- H > A, accmax(t,h,max).?- max([1,0,5,4], Max). Max=5 yes accmax([h T],A,Max):- H =< A, accmax(t,a,max). accmax([],a,a). max([h T],Max):- accmax(t,h,max).?- max([-3, -1, -5, -4], Max). Max= -1 yes?- Fungerar detta för negativa tal?
72 Sammandrag Vi har bekantat oss med aritmetik i Prolog Vi har sett på skillnaden mellan svansrekursiva och ickesvansrekursiva predikat Vi har introducerat programmeringsteknik som använder ackumulatorer Vi har också introducerat idén om wrapper-predikat
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
Föreläsning 3: rekursion
Föreläsning 3: rekursion Teori Introducera rekursiva definitioner i Prolog Fyra exempel Visa att det kan finnas diskrepanser mellan Prolog-programmets deklarativa och procedurala betydelse! Rekursiva definitioner
Procedurer och villkor
Procedurer och villkor (define lessorequal (lambda (x y) (or (< x y) (= x y)))) (define between (lambda (x y z) (and (lessorequal x y) (lessorequal y z)))) > (between 3 4 5) #t > (between 3 2 5) #f DA2001
Procedurer och villkor. Rekursiva procedurer. Exempel: n-fakultet
Procedurer och villkor Rekursiva procedurer (define lessorequal (lambda (x y) (or (< x y) (= x y)))) (define between (lambda (x y z) (and (lessorequal x y) (lessorequal y z)))) > (between 3 4 5) #t > (between
Övningshäfte 2: Induktion och rekursion
GÖTEBORGS UNIVERSITET MATEMATIK 1, MMG200, HT2017 INLEDANDE ALGEBRA Övningshäfte 2: Induktion och rekursion Övning D Syftet är att öva förmågan att utgående från enkla samband, aritmetiska och geometriska,
Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek
De åtta primitiva typerna Java, datatyper, kontrollstrukturer Skansholm: Kapitel 2) Uppsala Universitet 11 mars 2005 Typ Innehåll Defaultvärde Storlek boolean true, false false 1 bit char Tecken \u000
Programkonstruktion och Datastrukturer
Programkonstruktion och Datastrukturer VT 2012 Tidskomplexitet Elias Castegren elias.castegren.7381@student.uu.se Problem och algoritmer Ett problem är en uppgift som ska lösas. Beräkna n! givet n>0 Räkna
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
Pythons standardbibliotek
Pythons standardbibliotek Python 3 skall, enligt standarddokumenten http://docs.python.org/py3k/library/index.html ha stöd för vissa funktioner, typer och datastrukturer Så länge man håller sig till detta
Datalogi, grundkurs 1
Datalogi, grundkurs 1 Tentamen 9 dec 2014 Tillåtna hjälpmedel: Revised 6 Report on the Algorithmic Language Scheme och Tre olika s.k. Cheat Sheets för Scheme Sex olika s.k. Cheat Sheets för Python Tänk
Tentamen TEN1 HI
Tentamen TEN1 HI1029 2014-03-14 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
Repetition i Python 3. Exemplen fac. Exemplen fac motivering. Exemplen fac i Python
Repetition i Python 3 Exemplen fac Orginalet I Scheme använde vi rekursion för all slags repetition. Efterom Scheme är ett funktionellt språk återsänder alla språkkonstruktioner ett värde men i Python
Föreläsning 4. Kö Implementerad med array Implementerad med länkad lista Djup kontra bredd Bredden först mha kö
Föreläsning 4 Kö Implementerad med array Implementerad med länkad lista Djup kontra bredd Bredden först mha kö Kö (ADT) En kö fungerar som en kö. Man fyller på den längst bak och tömmer den längst fram
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
MÖNSTER OCH TALFÖLJDER
MÖNSTER OCH TALFÖLJDER FÖRELÄSNINGENS INNEHÅLL OCH SYFTE Genomgång av viktiga matematiska begrepp, uttryck och symboler med anknytning till mönster och talföljder. Skälet till att välja detta innehåll
Funktionell programmering DD1361
Funktionell programmering DD1361 Tupler Två eller fler (men ändligt) antal element. Elementen kan vara av olika typer. Ex: (1,2) :: (Integer, Integer) (( 2, hejsan ), True) ::? Tupel med två element ->
Textsträngar från/till skärm eller fil
Textsträngar från/till skärm eller fil Textsträngar [Kapitel 8.1] In- och utmatning till skärm [Kapitel 8.2] Rekursion Gränssnitt Felhantering In- och utmatning till fil Histogram 2010-10-25 Datorlära,
Föreläsning 2 Programmeringsteknik och C DD1316
Föreläsning 2 Programmeringsteknik och C DD1316 Föreläsning 2 Programmeringsteknik och C Datatyp Aritmetiska operatorer Omvandling av typer Reserverade ord Mikael Djurfeldt Logiska operatorer
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
public boolean containskey(string key) { return search(key, head)!= null; }
Tentamen Programmeringsteknik II 2009-05-26 med lösningar Skrivtid: 0900-1200 Uppgifter 1. Programbilagan ListMap.java innehåller en klass som implementerar en avbildning mellan mängden strängar och mängden
Denna uppdelning är ovanlig i Sverige De hela talen (Både positiva och negativa) Irrationella tal (tal som ej går att skriva som bråk)
UMEÅ UNIVERSITET Institutionen för matematik och matematisk statistik Olof Johansson, Nina Rudälv 2006-10-24 SÄL 1-10p Avsnitt 1.1 Grundläggande begrepp Detta avsnitt behandlar de symboler som används
Våra enkla funktioner eller procedurer
Föreläsning 3 Våra enkla funktioner eller procedurer Programmönster 1. Repetition 2. Högre-ordningens procedurer/programmönster - Procedurer som argument - Procedurer som returnerade värden 3. Scope och
Datastrukturer. Erik Forslin. Rum 1445, plan 4 på Nada
Datastrukturer Vad är en datastruktur? Vad är en datatyp? Primitiva datatyper i Java Icke-primitiva datatyper i Java Minnesexempel med datastrukturer Vektorer i Java Erik Forslin efo@nada.kth.se Rum 1445,
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.
Signalflödesmodellen. Två (gamla) exempel: Kvadratera alla jämna löv.
Strömmar (streams) De sista dagarna objekt med tillstånd modellerades som beräkningsobjekt med tillstånd. Isådana modeller är tiden modelerad (implicit) som en sekvens av tillstånd. För att kunna modellera
Programmering II (ID1019) :00-12:00
ID1019 Johan Montelius Programmering II (ID1019) 2015-03-13 09:00-12:00 Instruktioner Du får inte ha något materiel med dig förutom skrivmateriel. Mobiler etc, skall lämnas till tentamensvakten. Svaren
Föreläsning 2 Programmeringsteknik och C DD1316. Programmering. Programspråk
Föreläsning 2 steknik och C DD1316 python introduktion Variabler Datatyp Aritmetiska operatorer av typer Reserverade ord logiska operatorer If-sats kommentarer betyder att instruera en dator Ett program
Programmering II (ID1019)
ID1019 Johan Montelius Instruktioner Betyg Programmering II (ID1019) 2019-03-08 Svaren skall lämnas på dessa sidor, använd det utrymme som nns under varje uppgift för att skriva ner ditt svar (inte på
Föreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk
Föreläsning 2 steknik DD1310 Python introduktion Variabler Datatyper Aritmetiska operatorer av typer Reserverade ord logiska operatorer If-sats kommentarer betyder att instruera en dator Ett program är
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
Föreläsning 10 Datalogi 1 DA2001. Utskrift på skärmen. Syntax. print( Hej ) Hur är det? Hej. print( Hej,end= ) print( Hur är det? ) HejHur är det?
Föreläsning 10 Datalogi 1 DA2001 python introduktion Variabler Datatyp Aritmetiska operatorer av typer Reserverade ord logiska operatorer If-sats kommentarer på skärmen print( Hej ) print( Hur är det?
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ä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-
DD1361 Programmeringsparadigm HT16
DD1361 Programmeringsparadigm HT16 Logikprogrammering 3 Dilian Gurov, TCS Idag Induktiva datatyper: Träd (inte inbyggd) Binära träd utan data Binära träd med data Problemdomänbeskrivning Läsmaterial Prolog-fil:
Grundläggande datalogi - Övning 1
Grundläggande datalogi - Övning 1 Björn Terelius October 30, 2008 Python är ett tolkat språk som kan köras interaktivt. tcs-ray:~/grudat08>python >>> 11+3*4 23 >>> a = 15 >>> b=a >>> print "a =", a, "b
Introduktion till programmering D0009E. Föreläsning 9: Tupler och dictionaries
D 0 0 0 9 E Introduktion till programmering D0009E Föreläsning 9: Tupler och dictionaries 1 D 0 0 0 9 E Sammansatta datatyper Strängar Sekvenser av tecken Icke muterbara Syntax: "abcde" Listor Sekvenser
Föreläsning 6: Induktion
Föreläsning 6: Induktion Induktion är en speciell inferensregel. En mängd är välordnad om varje delmängd har ett minsta element Exempel: N är välordnad (under ) Låt P(x) vara ett predikat över en välordnad
Övningsuppgifter till föreläsning 2 Variabler och uttryck
Sid 1 (5) Övningsuppgifter till föreläsning 2 Variabler och uttryck Syfte Syftet med övningsuppgifterna är att träna på: Aritmetik, variabler, tilldelning, scanf och printf Generellt Diskutera gärna uppgifterna
Språket Python - Del 1 Grundkurs i programmering med Python
Hösten 2009 Dagens lektion Ett programmeringsspråks byggstenar Några inbyggda datatyper Styra instruktionsflödet Modulen sys 2 Ett programmeringsspråks byggstenar 3 ETT PROGRAMMERINGSSPRÅKS BYGGSTENAR
Föreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk
Föreläsning 2 steknik DD1310 python introduktion Variabler Datatyp Aritmetiska operatorer av typer Reserverade ord logiska operatorer If-sats kommentarer funktioner betyder att instruera en dator Ett program
Föreläsning 2 Programmeringsteknik och Matlab DD1312. Programspråk. Utskrift på skärmen
Föreläsning 2 Programmeringsteknik och Matlab DD1312 Introduktion till python Variabler,datatyper, omvandling av typer sfunktioner Två olika typer av program omvandlar högnivå till lågnivå program: Interpreterande
Outline. For. I istället för att följa det normala ordningen, man ändra den. I i Java får man inte göra hopp hur som helst
Outline Objektorienterad Programmering (TDDC77) Föreläsning IV: while, for, do while, switch, arrayer Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 Ordning Villkorliga hopp I Normalt sett så
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,
Programmeringsuppgifter 1
Programmeringsuppgifter 1 Redovisning: Ni demo-kör och förklarar för handledaren några av de program ni gjort. Ni behöver inte hinna allt, redovisa så långt ni kommit. Om ni hinner mer kan ni alltid redovisa
Introduktion till programmering D0009E. Föreläsning 5: Fruktbara funktioner
Introduktion till programmering D0009E Föreläsning 5: Fruktbara funktioner 1 Retur-värden Funktioner kan både orsaka en effekt och returnera ett resultat. Hittills har vi ej definierat några egna funktioner
TDIU01 - Programmering i C++, grundkurs
TDIU01 - Programmering i C++, grundkurs Grundläggande satser och uttryck Eric Elfving Institutionen för datavetenskap 5 augusti 2014 Översikt Uttryck Litteraler Operatorer Satser Villkor Upprepning Teckenhantering
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
Introduktion till algoritmer - Lektion 4 Matematikgymnasiet, Läsåret 2014-2015. Lektion 4
Introduktion till algoritmer - Lektion 4 Matematikgymnasiet, Läsåret 014-015 Denna lektion ska vi studera rekursion. Lektion 4 Principen om induktion Principen om induktion är ett vanligt sätt att bevisa
Hur man programmerar. TDDC66 Datorsystem och programmering Föreläsning 3. Peter Dalenius Institutionen för datavetenskap
Hur man programmerar TDDC66 Datorsystem och programmering Föreläsning 3 Peter Dalenius Institutionen för datavetenskap 2014-09-05 Översikt Problemlösning: Hur ska man tänka? Datatyper Listor (forsätter
Introduktion till programmering SMD180. Föreläsning 8: Listor
Introduktion till programmering Föreläsning 8: Listor 1 1 Listor = generaliserade strängar Strängar = sekvenser av tecken Listor = sekvenser av vad som helst Exempel: [10, 20, 30, 40] # en lista av heltal
Föreläsning 3: Typomvandling, villkor och val, samt textsträngar
Föreläsning 3: Typomvandling, villkor och val, samt textsträngar Camilla Kirkegaard camilla.kirkegaard@liu.se Linköpings universitet Sweden October 14, 2013 1 Innehåll n n n n n Repetition Typomvandlingar
Programmering II (ID1019) :00-17:00
ID1019 Johan Montelius Programmering II (ID1019) 2014-03-10 14:00-17:00 Förnamn: Efternamn: Instruktioner Du får inte ha något materiel med dig förutom skrivmateriel. Mobiler etc, skall lämnas till tentamensvakten.
Introduktion till programmering SMD180. Föreläsning 5: Fruktbara funktioner
Introduktion till programmering Föreläsning 5: Fruktbara funktioner 1 Retur-värden Funktioner kan både orsaka en effekt och returnera ett resultat. Hittills har vi ej definierat några egna funktioner med
729G04 Programmering och diskret matematik
Tentamen 729G04, 2013-01-11 1(8) 729G04 Programmering och diskret matematik Tentamen 2013 01 11 kl 08.00 13.00 Tillåtna hjälpmedel: Dator, penna, papper, linjal, suddgummi, godkänd(a) bok/böcker Uppgifter:
JavaScript del 3 If, Operatorer och Confirm
JavaScript del 3 If, Operatorer och Confirm Under förra uppgiften så kollade vi på hur användaren kan ge oss information via promt(), vi använde den informationen både för att skriva ut den och för att
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,
TDDC74 Programmering, abstraktion och modellering DUGGA 2
AID-nummer: Datum: 2011-02-18 1 Tekniska högskolan vid Linköpings universitet Institutionen för datavetenskap Anders Haraldsson TDDC74 Programmering, abstraktion och modellering DUGGA 2 Fredag 18 feb 2011
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
Programstruktur och terminologi. Programmet producerar följande utskrift i terminalfönstret: Ett Javaprogram består av en eller flera klasser
// En första version av BankKonto-klassen class BankKonto { private String namn; private long nr; private double saldo; private double ränta; // Klassen TestaBankKonto // Klassens uppgift är att skapa
BEGREPP HITTILLS FÖRELÄSNING 2 SAMMANSATTA UTTRYCK - SCHEME DATORSPRÅK
FÖRELÄSNING 2 Viss repetition av Fö1 Rekursivt fallanalys Rekursiva beskrivningar BEGREPP HITTILLS Konstant, Namn, Procedur/Funktion, LAMBDA, Parameter, Argument, Kropp, Villkor/Rekursion, Funktionsanrop,
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
Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python TDDE24 Funktionell och imperativ programmering del 2
Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python TDDE24 Funktionell och imperativ programmering del 2 Hjälpmedel Följande hjälpmedel är tillåtna: Exakt en valfri bok,
TDDC74 Programmering, abstraktion och modellering. Tentamen
AID-nummer: Datum: 2012-01-10 1 Tekniska högskolan vid Linköpings universitet Institutionen för datavetenskap Anders Haraldsson TDDC74 Programmering, abstraktion och modellering Tentamen Tisdag 10 januari
Hej Då, Karel! Programmering. Vårt första Javaprogram. hh.se/db2004. Java. Grundtyper, variabler och arrayer
Programmering hh.se/db2004 Föreläsning 3: Java. Grundtyper, variabler och arrayer Hej Då, Karel! Verónica Gaspes www2.hh.se/staff/vero www2.hh.se/staff/vero/programmering Center for Research on Embedded
TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P
UME UNIVERSITET Datavetenskap 981212 TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P Datum : 981212 Tid : 9-15 HjŠlpmedel : Inga Antal uppgifter : 9 TotalpoŠng : 60 (halva pošngtalet kršvs normalt fšr
TDIU01 - Programmering i C++, grundkurs
TDIU01 - Programmering i C++, grundkurs Sammanfattning period 1 Eric Elfving Institutionen för datavetenskap 1 oktober 2013 Översikt Ett C++-programs uppbyggnad Variabler Datatyper Satser Uttryck Funktioner
Datalogi, grundkurs 1
Datalogi, grundkurs 1 Fiktiv Tentamen Lösningsförslag och kommentarer 1. Lösningsförslaget nedan förutsätter ingenting om filens innehåll och är alltså mer generell än nödvändigt: alfa= ABCDEFGHIJKLMNOPQRSTUVWXYZÅÄÖ
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
Tentamen i Introduktion till programmering
Tentamen i Introduktion till programmering Kurskod: Skrivtid: D0009E 09:00-13:00 (4 timmar) Totalt antal uppgifter: 7 Totalt antal poäng: 38 Tentamensdatum: 2014-05-17 Jourhavande lärare: Tillåtna hjälpmedel:
729G74 - IT och programmering, grundkurs. Dugga.
729G74 - IT och programmering, grundkurs. Dugga. 2016-12-08. Kl. 14.00 till 16.00 Tillåtna hjälpmedel: Dator, penna, papper, linjal, suddgummi, godkänd(a) bok/böcker/kompendier Uppgifter: Duggan består
Övning2. Variabler. Data typer
Vahid 28 okt 2002 prgk02 Övning2 -Repetition -Variabler -Primitiva typer (+ boolean) -Operatörer +, ++, --, -Typ konvertering -Wrapper klasser -Jämförelse operatörer,(==, =, ,!=,!) -String hur man
Programkonstruktion och datastrukturer. Moment 9 Om högre ordningens funktioner. PKD 2010/11 moment 9 Sida 1 Uppdaterad
Programkonstruktion och datastrukturer Moment 9 Om högre ordningens funktioner PKD 2010/11 moment 9 Sida 1 Uppdaterad 2010-12-02 Anonyma funktioner igen En funktion som inte är namngiven kallas för en
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
MATLAB. Python. Det finns flera andra program som liknar MATLAB. Sage, Octave, Maple och...
Allt du behöver veta om MATLAB: Industristandard för numeriska beräkningar och simulationer. Används som ett steg i utvecklingen (rapid prototyping) Har ett syntax Ett teleskopord för «matrix laboratory»
Objektorienterad programmering Föreläsning 8. Copyright Mahmud Al Hakim Agenda (halvdag)
Objektorienterad programmering Föreläsning 8 Copyright Mahmud Al Hakim mahmud@webacademy.se www.webacademy.se Agenda (halvdag) Objektorienterad programutveckling Algoritmer Algoritmkonstruktionerna Relationer
Styrteknik: MELSEC FX och numeriska värden
PLC2C:1 MELSEC FX I kursen styrteknik används styrsystemet FX1S som är ett litet system i MELSEC FX-serien. Vår version av FX1S har endast digitala in- och utgångar men oftast finns det både digitala och
Tentamen Datastrukturer D DAT 035/INN960
Tentamen Datastrukturer D DAT 035/INN960 21 december 2007 Tid: 8.30-12.30 Ansvarig: Peter Dybjer, tel 7721035 eller 405836 Max poäng på tentamen: 60. (Bonuspoäng från övningarna tillkommer.) Betygsgränser,
Objektorienterad programmering
Objektorienterad programmering Föreläsning 22 Copyright Mahmud Al Hakim mahmud@dynamicos.se www.webacademy.se Agenda Rekursion Samlingar Listor Mängder Avbildningstabeller 1 Rekursion För att förstå rekursion
Utvidgad aritmetik. AU
Utvidgad aritmetik. AU Delområdet omfattar följande tio diagnoser som är grupperade i tre delar, negativa tal, potenser och närmevärden: AUn1 Negativa tal, taluppfattning AUn Negativa tal, addition och
DD1361 Programmeringsparadigm HT17
DD1361 Programmeringsparadigm HT17 Logikprogrammering 3 Dilian Gurov, TCS Idag Induktiva datatyper: Träd (inte inbyggd) Binära träd utan data Binära träd med data Problemdomänbeskrivning Läsmaterial Prolog-fil:
Idag: Par och listor. Scheme. DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29
Idag: Par och listor DA2001 (Föreläsning 6) Datalogi 1 Hösten 2010 1 / 29 Idag: Par och listor Hur hanterar man icke-numeriska problem? DA2001 (Föreläsning 6) Datalogi 1 Hösten 2010 1 / 29 Idag: Par och
Övningshäfte 1: Logik och matematikens språk
GÖTEBORGS UNIVERSITET MATEMATIK 1, MMG200, HT2014 INLEDANDE ALGEBRA Övningshäfte 1: Logik och matematikens språk Övning A Målet är att genom att lösa och diskutera några inledande uppgifter få erfarenheter
Tentamen TEN1 HI
Tentamen TEN1 HI1029 2015-03-17 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
Datalogi för E Övning 3
Datalogi för E Övning 3 Mikael Huss hussm@nada.kth.se AlbaNova, Roslagstullsbacken 35 08-790 62 26 Kurshemsida: http://www.csc.kth.se/utbildning/kth/kurser/2d1343/datae06 Dagens program Att skapa egna
Föreläsning 4 Programmeringsteknik och Matlab DD1312. Logiska operatorer. Listor. Listor, tupler, strängar och forslingor
Föreläsning 4 Programmeringsteknik och Matlab DD1312, tupler, strängar och forslingor Villkor kan kombineras med operatorerna and,or,not Exempel: if pris=100: print Telefonfynd! A B A
TDIU01 - Programmering i C++, grundkurs
TDIU01 - Programmering i C++, grundkurs Pekare och Listor Eric Elfving Institutionen för datavetenskap 31 oktober 2014 Översikt 2/41 Internminne Pekare Dynamiska datastrukturer (Enkellänkade) listor Arbeta
Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper
Tentamen Programmeringsteknik II 2018-10-19 Skrivtid: 8:00 13:00 Tänk på följande Skriv läsligt. Använd inte rödpenna. Skriv bara på framsidan av varje papper. Lägg uppgifterna i ordning. Skriv uppgiftsnummer
Introduktion till Datalogi DD1339. Föreläsning 2 22 sept 2014
Introduktion till Datalogi DD1339 Föreläsning 2 22 sept 2014 Namn Fält1 Fält2 Fält3 Metod1 Metod2 Metod3 Metod4 public class { public class { Åtkomst, public betyder fullt tillgänglig utifrån public
Inledande programmering med C# (1DV402) 27+15=42 1 (22)
27+15=42 1 (22) Variabler 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
Introduktion Schenker-BTL AB, Stab IT Beskrivning över informationsintegreringmed Schenker, metodbeskrivning version 1.
Schenker har interna system som handhar information som är av intresse för våra kunder/partners. Idag finns ett flertal av dem tillgängliga via Internet, sk Online-tjänster. Dessa erbjuder inte bara hämtning
Repetition i Pascal. Exemplen fac. Exemplen fac i Pascal. Exemplen fac motivering. Orginalet
Repetition Introduktion Repetition i Exemplen fac Orginalet I Scheme använde vi rekursion för all slags repetition. Efterom Scheme är ett funktionellt språk återsänder alla språkkonstruktioner ett värde
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
Introduktion till programmering SMD180. Föreläsning 7: Strängar
Introduktion till programmering Föreläsning 7: Strängar 1 1 En sammansatt datatyp En sträng är ett enhetligt värde, som kan lagras i variabler och fungera som operand eller funktionsargument en datastruktur
Idag: Par och listor. Symboler. Symboler används för att uttrycka icke-numeriska data såsom namn, adress, bilregisternummer, boktitel, osv.
Idag: Par och listor Symboler Hur hanterar man icke-numeriska problem? Hur hanterar man en samling av data? Hur konstruerar man sammansatta datastrukturer? Bra om du har läst följande avsnitt i AS: Pair
Formell logik Kapitel 1 och 2. Robin Stenwall Lunds universitet
Formell logik Kapitel 1 och 2 Robin Stenwall Lunds universitet Kapitel 1: Atomära satser Drömmen om ett perfekt språk fritt från vardagsspråkets mångtydighet och vaghet (jmf Leibniz, Russell, Wittgenstein,
Introduktion till programmering SMD180. Föreläsning 4: Villkor och rekursion
Introduktion till programmering Föreläsning 4: Villkor och rekursion 1 1 Några inbyggda funktioner (med resultat!) Konverterar mellan de grundläggande typerna: >>> int("32") 32 >>> int(3.999) 3 >>> float(32)
Användning av stack: evaluera uttryck i RPN
(28 september 2010 T9.1 ) Användning av stack: evaluera uttryck i RPN /* rpn.c */ #include "stack.h" /** Eget interface till stackmekanismen för att få en stack med double */ static Stack operands; //
C++ Funktioner 1. int summa( int a, int b) //funktionshuvud { return a+b; //funktionskropp } Värmdö Gymnasium Programmering B ++ Datainstitutionen
C++ Funktioner 1 Teori När programmen blir större och mer komplicerade är det bra att kunna dela upp programmet i olika delar som gör specifika saker, vilket kan göra programmet mer lättläst. Ett sätt
Användar- och systemdokumentation
Användar- och systemdokumentation Linköpings universitet Examinator:, IDA marme647@student.liu.se Utskriftsdatum: Innehållsförteckning Inledning... 3 Användarhandledning... 4 Systemkrav och installation...4
Att förstå hur man konstruerar modulära program Att kunna skapa nya funktioner Att förstå hur data skickas mellan funktioner
Lektion 4, del 1, kapitel 10 Funktioner i JavaScript Inlärningsmål Att förstå hur man konstruerar modulära program Att kunna skapa nya funktioner Att förstå hur data skickas mellan funktioner Introduktion