LABORATION 1. Inledande Lisp - rekursion

Storlek: px
Starta visningen från sidan:

Download "LABORATION 1. Inledande Lisp - rekursion"

Transkript

1 AI - Lisp / Laboration 1 - Inledande Lisp - rekursion 1 LABORATION 1 Inledande Lisp - rekursion 1.0 LABFÖRORD Detta labbmaterial ger dig introduktion till Lisp för att kunna använda programmeringsspråket för AI-laborationer. Den dialekt du lär dig här är Common Lisp, som är ett mycket stort språk och innehåller allt det som programmeringsspråk i allmänhet innehåller. Dessutom använder vi Lisp som första programmeringsspråk på flera av våra datautbildningar. Där använder vi språket som ett verktyg för att studera principer för programmering med progam- och dataabstraktion som huvudteman samt en mer fullständig genomgång av imperativa konstruktioner som vi återfinner i de flesta andra språk. Vi förutsätter här att alla har programmerat i ett imperativt språk (C, C++, Ada, Java etc), vilket gör att man skall känna till många generella programspråksbegrepp. I denna kurs kommer vi emelllertid att mest koncentrera oss på s k funktionell programmering där rekursion är det nya. Ofta är det svårt för en del i början, men ses senare som ett helt naturligt sätt att konstrukera program, speciellt när man skall hantera träd- och grafstrukturer. Dessuotm använder vi listan som den grundläggande datastrukturen, där ni i de flesta andra programmeringsspråk använder arraystrukturer och poster. Uppgifterna i detta häfte är märkta som Övning eller UPPGIFT. Det är UPPGIFTerna som skall redovisas. 1.1 ATT KOMMA IGÅNG Lispsystemet vi använder heter Allegro. Systemet körs med Emacs som editor. Allt om Allegro, kopplingen med Emacs och den speciella programmeringsomgivningen Composer finns beskrivet i ett separat dokument på kursens hemsida. Detta dokument skall studeras noggrant både nu i början och successivt under laborationsseriens gång. Dessutom skall du redan nu se till att du kan komma åt kursens www-sidor. Du skall ha som vana att ha på en webbrowser med Steele s Common Lisp the Language 2nd Edition - en online manual för Common Lisp där du enkelt kan komma åt beskrivningar av alla funktioner och begrepp. 1.2 UPPMJUKNING Läs kapitel 2 i läroboken. Vi börjar med lite uppvärmningsövningar. Skriv in följande uttryck och försök att i förväg räkna ut vad Lisp'en kommer att svara. Gör gärna om uttrycket till vanlig infix form först /3 ; Bråk ( ) ( ) ; Godtyckligt antal argument (+ 12 (- 45)) ; Unärt minus (+ 12 ( )) ; Binärt minus (1+ (* 2 3)) (1- (+ 2 3))

2 2 AI - Lisp / Laboration 1 - Inledande Lisp - rekursion (/ 35 13) (/ ) (/ 35 5) ; Heltal (/ 34 5) ; Bråk (float (/ 34 5)) ; Flyttal (- (/ 1 (/ (+ 2 3) (* 4 5))) 6) 1.3 INFIX FORM TILL PREFIX FORM Dags att fortsätta, men nu går vi åt andra hållet: Gör om följande aritmetiska uttryck från infix form till Lisp s prefix form. Skriv sedan in dem till Lisp och kontrollera att resultatet blir rätt. INFIX FORM LISP-FORM (1+2) (6-8) 5 + ( 3 + 4) DEFINITION AV FUNKTIONER Gick allt bra? Utmärkt, då kanske det är dags att införa egna funktioner med defun. Övning 1.4a. Definiera en funktion average med två argument x och y som returnerar medelvärdet av x och y. (average 3 7) => 5 (average 1 2) => 3/2 ; dvs 1.5 Övning 1.4b. Definiera en funktion my-max med två argument, om returnerar det största av argumenten. (my-max 3 7) => REKURSION Läs kapitel 3 i boken. Två viktiga begrepp införs: rekursiv och iterativ processlösning. Övning 1.5a. Definiera "upphöjt till"-funktionen. Kalla den pow och låt den ha två heltalsargument. Definiera två varianter, en som utför en rekursiv och en som utför en iterativ processlösning. Utför substitutionsmodellen och använd trace för att förstå beräkningen bättre. (pow 2 3) = 2 3 = 2*2*2 => 8 (pow 5 2) = 5 2 = 5*5 => 25 Tips: Vad som helst upphöjt till 0 är alltid 1.

3 AI - Lisp / Laboration 1 - Inledande Lisp - rekursion 3 Övning 1.5b. Definiera en funktion add-to som adderar ihop de n första heltalen, dvs. (add-to n) = n. Gör två versioner, med en rekursiv och en iterativ processlösning. (add-to 6) => 21 (add-to 0) => 0 Övning 1.5c. Vill du lösa en lite större uppgift kan du ta övning 2.8.E ur läroboken. Skriv en funktion dagar som räknar ut antalet dagar mellan två datum. Vi anger ett datum som ett heltal på formen yymmdd. Använd primitiver för att ta ut delarna, dvs år, månad och datum, ur datumet. (dagar ) => 26 Hjälp: Räkna ut antalet dagar från år 1900 för båda datumen och ta absolutbeloppet på skillnaden. Övning 1.5d. om-funktionen. Se övning 3.3.D i läroboken. Innan du tittar i lösningen, fundera på problemet. Skriv in funktionerna och testa för att komma underfund med vad som händer. Jämför med andra språk. Är det samma problem där? 1.6 SYMBOLISKA UTTRYCK Dessa övningar berör avsnitt från läroboken kapitel 4, 5 och 6. Här införs de viktigaste datatyperna för Lisp, symbolen och listan. Dessutom införs quote eftersom program och data både representeras som listor. I kapitel 4 finns en stor mängd med fördefinierade funktioner. I kapitel 6 beskrivs olika rekursiva mallar för bearbetning av listor och binära träd. Övning 1.6a. Prova att skriva in följande S-uttryck till Lisp'en. Fundera i förväg ut vad Lisp'en bör svara. (setq a 123) a (quote a) 'a (+ a 17) '(+ 1 17) (setq a 'b) a '(hej hopp ditt feta nylle) '(quote x) ''x "Kalle Pettersson" 'Kalle\ Pettersson ' Kalle Pettersson 1.7 GRUNDLÄGGANDE LISPFUNKTIONER Titta igenom sammanställningarna av LISP-funktioner i avsnitt 4.6 och 4.10 i läroboken. Sök även efter funktionerna både i Common Lisp manualen som finns on-line i Allegro och den som finns på www. Prova och testa.

4 4 AI - Lisp / Laboration 1 - Inledande Lisp - rekursion Övning 1.7a. Vad blir resultaten? (first '(one two three)) (car '(one two three)) (rest (first '((one two) three four))) (cdr (car '((one two) three four))) (cdar ((one two) three four))) (second '(one two three)) (cadr (one two three)) (cons '(eva lisa) '(karl sven)) (list '(eva lisa) '(karl sven)) (append '(eva lisa) '(karl sven)) (remove 'sven '(eva sven lisa sven anna)) (subst 'gittan 'birgitta '(eva birgitta lisa birgitta karin)) (make-list 5) (make-list 5 :initial-element 'start) (copy-list '(a new list)) (intersection '(a b c) '(x b z c)) (union '(a b c) '(x b z c)) (last '(karl adam nilsson)) (butlast '(karl adam nilsson)) (butlast '(a b c d e) 3) (nthcdr 2 '(a b c d e)) (nth 2 '(a b c d e)) (assoc 'tre '((ett. one) (två. two) (tre. three))) 1.8 SEKVENSIELL BEARBETNING Här behövs mycket träning. Läroboken innehåller i avsnitt 6.1 mallar för sekvensiell bearbetning, dvs vi går igenom en lista element för element. Dessutom finns många exempel och övningar. Utför substitutionsmodellen på några exempel så förstår du rekursionen bättre. Vid testning på dator kan du göra trace på funktionerna så kan du följa de successiva rekursiva anropen med värden på parametrarna och de beräknade värdena. Övning 1.8. Skriv en funktion summera-endast-tal som summerar de element som är tal på en lista. (summera-endast-tal '(a 1 b (b 4) 2 3)) => 6 Övning 1.8b. Skriv en funktion ta-bort-vokaler som tar en lista med bokstäver och returnerar en ny lista med vokalerna borttagna. (ta-bort-vokaler '(b i r g i t t a)) => (b r g t t) Övning 1.8c. Skriv en funktion finns-bokstav? som returnerar ett sant värde om en given bokstav finns i ett ord, Ordet har representerats som en lista av bokstäver. (finns-bokstav? 'u '(h u s)) (finns-bokstav? 'a '(b i l)) => nil Övning 1.8d. Hantering av mängder. Definiera mängdoperationerna union (kalla den t ex min-union, ty det finns redan en Common Lisp funktion som heter union), snitt och differens. Definiera även en operation lägg-till som lägger till ett element till en mängd, samt en operation medlem? som undersöker om ett element är medlem i en mängd. Se listan som en mängd. (setq ettor (sven lisa peter anna karl)) (setq fotboll (lisa eva karl sven)) (setq teater (karin lisa peter nisse eva)) (setq alla (min-union ettor (min-union fotboll teater)))

5 AI - Lisp / Laboration 1 - Inledande Lisp - rekursion 5 Vilka ettor spelar fotboll och kan bilda lag med Ravelli. (lägg-till ravelli (snitt ettor fotboll)) Vilka ettor har intresse? (snitt ettor (min-union fotboll teater)) Är Eva ej en etta och med ett intresse (medlem? eva (differens (min-union fotboll teater) ettor)) 1.9 DUBBELREKURSION - SEKVENSIELL BEARBETNING Läs avsnitt i läroboken. Där visar vi mallar för att kunna bearbeta alla elementen, oavsett nivå, på en godtycklig lista, dvs när en lista i sin tur innehåller listor som element. Detta avsnitt kräver mycket övning, se exempel och övningsuppgifter i boken. Övning 1.9a. Ändra i övningen 1.8a, så att funktionerna adderar talen oavsett nivå. Kalla dem summeratal-elementen. (summera-tal-elementen '(a 1 b (b 4) 2 3)) => 10 Övning 1.9b och c. Ändra i övningarna 1.8b och 1.8c, så att funktionerna bearbetar elementen oavsett nivå. Kalla funktionerna ta-bort-alla-vokaler resp finns-någon-bokstav?. (ta-bort-alla-vokaler '((v a d) (h e t e r) ((d i n) (b i l)))) => ((v d) (h t r) ((d n) (b l))) (finns-någon-bokstav? 'e '((v e m) (s e r) (d u))) 1.10 BINÄRA TRÄD Läs avsnitt 6.2 i läroboken. Här tolkar vi listan som binära träd, dvs listan byggs upp av punkterade par. Repetera avsnitt 4.8 om punkterade par och 4.9 den grafiska representationen av liststrukturer. Detta avsnitt kräver mycket övning, se exempel och övningsuppgifter i boken. Övning 1.10a. Skriv om listan (1 (2 3)) med punkterad par-notation. Ge båda listorna som quote-ade uttryck till Lisp och se resultaten. Vad blir (cons (cons 'a 'b) (cons 'c nil)) Övning 1.10b och c. Vi tolkar listan som ett binära träd, vilket betyder att listan kan innehålla punkterade par. Vi önskar en funktion summera-tallöven, som i ett binärt träd summerar de löv som är tal och en funktion finns-tal-som-löv? som returnerar ett sant värde om åtminstone ett löv är ett tal. (summera-tallöven '(((a. 1). 3). (c. 4))) => 8 (finns-tal-som-löv? '(((a. b). (c. 4)). e)) 1.11 FORMELUTTRYCK - LOGISKA UTTRYCK Vi skall här visa hur enkelt vi kan hantera formeluttryck i Lisp. Exempel på hantering av aritmetiska formler ges i avsnitt Bearbetning av formeluttrycken följer den binära träd-mallen, dvs "bearbeta vänster-deluttryck" och "bearbeta höger-deluttryck". Dessutom önskar vi hantera logiska formler. Är du inte säker på

6 6 AI - Lisp / Laboration 1 - Inledande Lisp - rekursion begreppen gå tillbaka till böckerna eller kompendierna i kursen Diskret matematik och logik. Försök hitta fler exempel från Diskret matematik och logik-kursen där du kan använda Lisp för att lösa dessa. Övning 1.11.a. Definiera de logiska konnektiven disjunktion ( ), konjunktion ( ) och implikation ( ) med hjälp av Commonlispfunktionen if. Kalla de nya funktionerna för my-or, my-and 1 och my-implication. (my-or t nil) (my-and nil t) => nil (my-implication nil t) Övning 1.11.b. Prefix -> infixnotation. Skriv en funktion transform som överför ett uttryck från prefix notation till infix notation. Alla operatorer är binära. (transform 10) => 10 (transform '(+ 10 7)) => (10 + 7) (transform '( (+ 10 x) (- 20 ( 2 y)))) => ((10 + x) (20 - (2 y))) Övning 1.11.c. Använd Lisp för att visa att följande propositionslogiska uttryck är tautologier. (p (p q)) q ((p q) q) p 1. I denna uppgift har vi två argument till my-and och my-or och vi beräknar båda argumenten. I Common Lisp beräknas endast så många argument som behövs för att sanningsvärdet skall kunna bestämmas. Vill man definiera dessa operatorer som i Common Lisp måste dessa definieras som makrofunktioner, se kapitel 15. I avsnitt 15.7 visas hur and (med godtyckligt antal argument) definieras som makrofunktion.

7 AI - Lisp / Laboration 1 - Inledande Lisp - rekursion 7 VIKTIGA BEGREPP I DENNA LABORATION: Innan du går över på uppgifterna. Tänk till om Du har förstått dessa begrepp? - Lisp-uttrycket, parentesstrukturen. - Lisp s datatyper: tal, tecken, sträng, symbol och lista. - Har du basuppsättningen av Lisp s grundläggande funktioner klart för dig? Kan du skillnaden på cons, list och append? - Quote-tecknet, när skall uttryck beräknas och när står de som konstanta dataobjekt? - Sekvenser och binära träd. Lisp's punkterade par. - Rekursiva funktioner - rekursiv och iterativ processlösning - Dubbelrekursion - sekvens- och binär trädlösning. - Rekursiv traversering av formeluttryck REDOVISNING AV LABORATIONER Vi vill att du redovisar dina laborationer på följande sätt: Programkoden: Du skall tänka på att din kod skall läsas och användas av andra personer än dig självt. - namnet på dina funktioner, parametrar och variabler skall ha mnemoniska namn, dvs namn som beskriver vad funktionen, parametern etc står för - datatypen / abstrakta datatypen skall beskrivas för dina parametrar och på värdet som funktionen returnerar - du skall skriva ut programkoden indentera på ett riktigt sätt - i de laborationer där du arbetar med delvis redan skriven kod så skall du endast redovisa de funktioner som du har skrivit. Testningen: Du skall beskriva hur du testat din funktion: - bifoga först ett antal representativa testfall som övertygar läsaren att ditt program löser den givna uppgiften. Testa inte bara med exemplen givna i uppgiften. - bifoga sedan tester på hela programmet eller för enskilda funktioner där du visar att du testat de olika typfall som kan uppstå. Här gäller det att testa specialfallen - tomma listan, binära trädet är ett löv, repetition med 0 eller maximalt antal varv samt även felaktiga testdata för att se att feltester fungerar. Genom att du angivit datatyp / abstrakt datatyp för dina parametrar så begränsar du för vilka data din funktion är definierad, och det kan då vara tillåtet att programmet går helt fel för data som ligger utanför det definierade området. - sammanställ ovanstående i ett snyggt dokument och lägg in i ett labbomslag.

8 8 AI - Lisp / Laboration 1 - Inledande Lisp - rekursion UPPGIFT 1A - BERÄKNING AV LOGIKUTTRYCK Skriv en funktion logikvärde som tar två argument, en propositionslogisk formel och en värdetilldelning (sant eller falskt) av de ingående propositionssymbolerna, som beräknar sanningsvärdet. Vi kan se logikvärde som en interpretator för ett logikspråk. Vi representerar värdena sant och falskt med symbolerna sant resp falskt. Propositionslogik finner du i Russel-Norvig s lärobok Artificial intelligence, A Modern Approach i avsnitt 6.4 med en sanningsvärdestabell. I övning 1.11.a har du definierat egena logiska konnektiv. Definiera en ny uppsättning sådana konnektiv som arbetar på Lispsymbolerna sant och falskt (ej som i övning 1.11.a Lispvärdena t och nil). Vi kan lagra värdetilldelningarna t ex som en associationslista. Exempel ((a. sant) (b. falskt) (c. sant)) Ett logiskt uttryck log-uttr kan skrivs som: "logisk konstant", en av värdena sant eller falskt "propositionssymbol" (t ex a, b, c, p1, p2) (icke log-uttr) (log-uttr och log-uttr) (log-uttr eller log-uttr) (log-uttr medför log-uttr) (logikvärde a ((a. sant))) => sant (logikvärde (a eller (icke a)) ((a. falskt))) => sant (logikvärde ((p1 och p2) och (icke (p3 eller falskt))) ((p1. sant) (p2. falskt) (p3. sant))) => falskt UPPGIFT 1B - FIND OCH BACKFIND Gör övning 6.3.C i läroboken. Kalla find-funktionen för t ex ed-find. Det finns redan en Common Lisp funktion som heter find. För att lösa uppgifterna kan du behöva använda felsökningshjälpmedlen. Använd trace. Se till att du inte får en lösning där du går igenom listorna mer än nödvändigt, det märker du om du studerar trace-utskrifterna. (ed-find 'y '((a b) c y d)) => (y d) (ed-find 'x '((a x b x c) x d)) => (x b x c) (ed-find x ((a b) c)) => ((a b) c) ;endast en förekomst av elementet ; fler förekomster, den första gäller ;fanns ej, ursprungslistan returneras (backfind 'x '((a (x x)) x c x d e)) ; fler förekomster, den sista önskas => (x d e) (backfind 'z '((a z) c d)) => (z) (backfind x ((a b) c)) => ((a b) c) ; endast en förekomst ;fanns ej, ursprungslistan returneras

Komma igång med Allegro Common Lisp

Komma igång med Allegro Common Lisp Funktionell programmering med Lisp 9 Första gången Komma igång med Allegro Common Lisp Det Lisp-system som vi i kommer att använda för laborationerna heter Allegro Common Lisp. Det är en kommersiell programvara

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

Tentamen i. TDDC67 Funktionell programmering och Lisp

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

Dagens föreläsning Programmering i Lisp Fö 7. Sammanfattning funktionell programmering Exempel på funktionella programspråk

Dagens föreläsning Programmering i Lisp Fö 7. Sammanfattning funktionell programmering Exempel på funktionella programspråk 1 Dagens föreläsning Programmering i Lisp Fö 7 Kopplingen funktionella programmering och diskret matematik. Jämför vad ni hittills gjort i denna kurs och i den diskreta matematiken, med referenser in i

Läs mer

Rekursiva algoritmer sortering sökning mönstermatchning

Rekursiva algoritmer sortering sökning mönstermatchning Anders Haraldsson 1 Anders Haraldsson 2 Dagens föreläsning Programmering i Lisp Fö 6-7 Rekursiva strukturer rekursiva definitioner rekursiva funktioner rekursiva bevis: induktion - rekursion strukturell

Läs mer

TDDC74 Programmering, abstraktion och modellering DUGGA 2

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

Läs mer

Imperativ programmering. Imperativ programmering konstruktioner i Lisp. Datastrukturer (kap ) arraystruktur poststruktur

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

Två fall: q Tom sekvens: () q Sekvens av element: (a b c) ; (sum-rec '(2 4 6)) = 12. q Första elementet uppfyller vissa villkor: (2 a b c)

Två fall: q Tom sekvens: () q Sekvens av element: (a b c) ; (sum-rec '(2 4 6)) = 12. q Första elementet uppfyller vissa villkor: (2 a b c) Programmönster: # Listan som sekvens, Rekursiv process Enkel genomgång av sekvens (element på toppnivån i en lista)) TDDC60 Programmering: abstraktion och modellering Föreläsning 5 Rekursiva och iterativa

Läs mer

Dagens föreläsning. Diverse Common Lisp. Konstanter, parametrar, globala variabler

Dagens föreläsning. Diverse Common Lisp. Konstanter, parametrar, globala variabler 21-1-2 1 Dagens föreläsning Hur fungerar ett Lisp system intern struktur av symbolen, tal, listan pekare - delade strukturer - eq minneshantering fri lista - sophämtning/garbage collection stack Diverse

Läs mer

TDDC74 Lab 02 Listor, sammansatta strukturer

TDDC74 Lab 02 Listor, sammansatta strukturer TDDC74 Lab 02 Listor, sammansatta strukturer 1 Översikt I denna laboration kommer ni att lära er mer om: Mer komplexa rekursiva mönster, procedurer och processer. Hur man kan hantera listor och andra enklare

Läs mer

TDDC74 Programmering, abstraktion och modellering. Tentamen

TDDC74 Programmering, abstraktion och modellering. Tentamen AID-nummer: Datum: 2011-01-11 1 Tekniska högskolan vid Linköpings universitet Institutionen för datavetenskap Anders Haraldsson TDDC74 Programmering, abstraktion och modellering Tentamen Tisdag 11 januari

Läs mer

TDDC74 Programmering: Abstraktion och modellering Tenta, kl 14 18, 11 juni 2014

TDDC74 Programmering: Abstraktion och modellering Tenta, kl 14 18, 11 juni 2014 TDDC74 Programmering: Abstraktion och modellering Tenta, kl 14 18, 11 juni 2014 Läs alla frågorna först, och bestäm dig för i vilken ordning du vill lösa uppgifterna. Skriv tydligt och läsligt. Använd

Läs mer

TDDC74 Programmering, abstraktion och modellering. Tentamen

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

Läs mer

TDDC74 Programmering: Abstraktion och modellering Datortenta , kl 14-18

TDDC74 Programmering: Abstraktion och modellering Datortenta , kl 14-18 TDDC74 Programmering: Abstraktion och modellering Datortenta - 017-10-7, kl 14-18 Läs alla frågorna först och bestäm dig för i vilken ordning du vill lösa uppgifterna. Uppgifterna är inte nödvändigtvis

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

n Detta för att kunna koncentrera oss på n Tal: number? n Symboler: symbol? n Strängar: string? n Tecken: char? n Boolskt: boolean?

n Detta för att kunna koncentrera oss på n Tal: number? n Symboler: symbol? n Strängar: string? n Tecken: char? n Boolskt: boolean? Tidigare TDDC74 Programming: Abstraktion och modellering Föreläsning 4 Symboler, Par, Listor Representation av par, Grafisk notation för par Representation av listor mha par Typiska listhanteringsprocedurer

Läs mer

TDDC74 Programmering, abstraktion och modellering. Tentamen

TDDC74 Programmering, abstraktion och modellering. Tentamen AID-nummer: Datum: 2011-06-10 1 Tekniska högskolan vid Linköpings universitet Institutionen för datavetenskap Anders Haraldsson TDDC74 Programmering, abstraktion och modellering Tentamen Fredag 10 juni

Läs mer

TDDC74 Programmering: Abstraktion och modellering Datortenta , kl 14-18

TDDC74 Programmering: Abstraktion och modellering Datortenta , kl 14-18 TDDC74 Programmering: Abstraktion och modellering Datortenta - 2018-06-07, kl 14-18 Läs alla frågorna först och bestäm dig för i vilken ordning du vill lösa uppgifterna. Uppgifterna är inte nödvändigtvis

Läs mer

TDDC74 Programmering: Abstraktion och modellering Tentamen, onsdag 9 juni 2016, kl 14 18

TDDC74 Programmering: Abstraktion och modellering Tentamen, onsdag 9 juni 2016, kl 14 18 TDDC74 Programmering: Abstraktion och modellering Tentamen, onsdag 9 juni 2016, kl 14 18 Läs alla frågorna först, och bestäm dig för i vilken ordning du vill lösa uppgifterna. Skriv tydligt och läsligt.

Läs mer

TDDC74 Programmering: Abstraktion och modellering Tentamen, lördag 27 augusti 2016, kl 8 12

TDDC74 Programmering: Abstraktion och modellering Tentamen, lördag 27 augusti 2016, kl 8 12 TDDC74 Programmering: Abstraktion och modellering Tentamen, lördag 27 augusti 2016, kl 8 12 Läs alla frågorna först, och bestäm dig för i vilken ordning du vill lösa uppgifterna. Skriv tydligt och läsligt.

Läs mer

Instruktioner - Datortentamen TDDE24 och TDDD73 Funktionell och imperativ programmering (i Python)

Instruktioner - Datortentamen TDDE24 och TDDD73 Funktionell och imperativ programmering (i Python) Instruktioner - Datortentamen TDDE24 och TDDD73 Funktionell och imperativ programmering (i Python) Hjälpmedel Följande hjälpmedel är tillåtna: Exakt en valfri bok, t.ex. den rekommenderade kursboken. Boken

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

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

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

Läs mer

TDDC74 Programmering, abstraktion och modellering DUGGA 1

TDDC74 Programmering, abstraktion och modellering DUGGA 1 AID-nummer: Datum: 2011-02-04 1 Tekniska högskolan vid Linköpings universitet Institutionen för datavetenskap Anders Haraldsson TDDC74 Programmering, abstraktion och modellering DUGGA 1 Fredag 4 feb 14-16

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

Föreläsning 13. Träd

Föreläsning 13. Träd Föreläsning 13 Träd Träd Ett träd är en datastruktur som tillåter oss att modellera sådant som vi inte kan modellera med linjära datastrukturer. Ett datavetenskapligt träd består av noder med pilar emellan.

Läs mer

TDDC74 Programmering, abstraktion och modellering DUGGA 2

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

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python Hjälpmedel Följande hjälpmedel är tillåtna: Exakt en valfri bok, t.ex. den rekommenderade kursboken. Boken får ha anteckningar,

Läs mer

Dagens föreläsning. Modeller för programmeringsspråk. - Olika modeller programspråk Interpretator - kompilator. - Syntax - semantik.

Dagens föreläsning. Modeller för programmeringsspråk. - Olika modeller programspråk Interpretator - kompilator. - Syntax - semantik. 1 Dagens föreläsning Modeller för programmeringsspråk - Olika modeller programspråk Interpretator - kompilator - Olika typer av språk Statiska och dynamiska programspråk - Syntax - semantik. Grammatik

Läs mer

Programkonstruktion och Datastrukturer

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

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 Dagens föreläsning Modeller för programmeringsspråk Interpretator - att interpretera ett program - att beräkna ett program - Olika modeller programspråk Interpretator - kompilator program i S interpretator

Läs mer

Språket Python - Del 1 Grundkurs i programmering med Python

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

Läs mer

Det är principer och idéer som är viktiga. Skriv så att du övertygar rättaren om att du har förstått dessa även om detaljer kan vara felaktiga.

Det är principer och idéer som är viktiga. Skriv så att du övertygar rättaren om att du har förstått dessa även om detaljer kan vara felaktiga. Tentamen Programmeringsteknik II 2014-0-27 Skrivtid: 0800 100 Tänk på följande Skriv läsligt! Använd inte rödpenna! Skriv bara på framsidan av varje papper. Börja alltid ny uppgift på nytt papper. Lägg

Läs mer

TDDC74 Programmering, abstraktion och modellering. Tentamen

TDDC74 Programmering, abstraktion och modellering. Tentamen AID-nummer: Datum: 2011-08-17 1 Tekniska högskolan vid Linköpings universitet Institutionen för datavetenskap Anders Haraldsson TDDC74 Programmering, abstraktion och modellering Tentamen Onsdag 17 augusti

Läs mer

Idag: Par och listor. Scheme. DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29

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

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 TDDC66 Datorsystem och programmering TDDC67 Funktionell programmering Programmering i Lisp, examinator TDDC67 föreläsare i Lisp Peter Dalenius examinator TDDC66 kursassistent i Lisp + ett stort antal

Läs mer

Övningsuppgifter kapitel 8

Övningsuppgifter kapitel 8 Inst. för Systemteknik Introduktion till programmering (SMD 180), 5 p Övningsuppgifter kapitel 8 1. Listor är en viktig datatyp i Python. Hur definierar kursboken lista? Vad kallas de värden som tillsammans

Läs mer

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

Läs mer

Föreläsning 13 Testning och strängar

Föreläsning 13 Testning och strängar Föreläsning 13 Testning och strängar Grundkurs i programmering Jan Lönnberg Institutionen för datateknik -universitetets högskola för teknikvetenskaper 13.10.2011 Testning Tips för systematisk testning

Läs mer

Uppgift 1 (grundläggande konstruktioner)

Uppgift 1 (grundläggande konstruktioner) Uppgift 1 (grundläggande konstruktioner) a) Skriv ett program som låter användaren mata in 7 heltal och som gör utskrifter enligt nedanstående körexempel. Mata in 7 heltal: 1 0 0 3 1 1 1 Tal nr 2 var en

Läs mer

Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p

Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p Skriven av Michael Andersson Introduktion Programmering I högnivåspråk fokuserar på själv problemet (algoritmen) istället

Läs mer

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python Hjälpmedel Följande hjälpmedel är tillåtna: Exakt en valfri bok, t.ex. den rekommenderade kursboken. Boken får ha anteckningar,

Läs mer

TDDC74 Programmering: Abstraktion och modellering Datordugga 2 - exempel

TDDC74 Programmering: Abstraktion och modellering Datordugga 2 - exempel TDDC74 Programmering: Abstraktion och modellering Datordugga 2 - exempel Läs alla frågorna först och bestäm dig för i vilken ordning du vill lösa uppgifterna. Uppgifterna är inte nödvändigtvis i svårighetsordning.

Läs mer

Våra enkla funktioner eller procedurer

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

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

Tentamen, Algoritmer och datastrukturer

Tentamen, Algoritmer och datastrukturer UNDS TEKNISKA ÖGSKOA (6) Institutionen för datavetenskap Tentamen, Algoritmer och datastrukturer 23 8 29, 8. 3. Anvisningar: Denna tentamen består av fem uppgifter. Totalt är skrivningen på 36 poäng och

Läs mer

i LabVIEW. Några programmeringstekniska grundbegrepp

i LabVIEW. Några programmeringstekniska grundbegrepp Institutionen för elektroteknik Några programmeringstekniska grundbegrepp 1999-02-16 Inledning Inom datorprogrammering förekommer ett antal grundbegrepp som är i stort sett likadana oberoende om vi talar

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

TDDC74 Programmering: Abstraktion och modellering Datortenta , kl 08-12

TDDC74 Programmering: Abstraktion och modellering Datortenta , kl 08-12 TDDC74 Programmering: Abstraktion och modellering Datortenta - 2019-05-27, kl 08-12 Läs alla frågorna först och bestäm dig för i vilken ordning du vill lösa uppgifterna. Uppgifterna är inte nödvändigtvis

Läs mer

Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek

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

Läs mer

Idag: Dataabstraktion

Idag: Dataabstraktion Idag: Dataabstraktion Hur använder vi det vi hittills kan om Scheme för att realisera (implementera) sammansatta data? DA2001 (Föreläsning 7) Datalogi 1 Hösten 2013 1 / 16 Idag: Dataabstraktion Hur använder

Läs mer

Extramaterial till Matematik Y

Extramaterial till Matematik Y LIBER PROGRAMMERING OCH DIGITAL KOMPETENS Extramaterial till Matematik Y NIVÅ ETT Taluppfattning och tals användning ELEV Det finns många olika programmeringsspråk. Ett av dem är Python, som du ska få

Läs mer

Tentamen i Introduktion till programmering

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:

Läs mer

TENTAMEN I PROGRAMSPRÅK -- DVG C kl. 08:15-13:15

TENTAMEN I PROGRAMSPRÅK -- DVG C kl. 08:15-13:15 TENTAMEN I PROGRAMSPRÅK -- DVG C01 140605 kl. 08:15-13:15 Ansvarig Lärare: Donald F. Ross Hjälpmedel: Bilaga A: BNF-definition Betygsgräns: Kurs: Max 60p, Med beröm godkänd 50p, Icke utan beröm godkänd

Läs mer

Abstrakta datatyper. Dagens föreläsning. Abstract data types (ADT)

Abstrakta datatyper. Dagens föreläsning. Abstract data types (ADT) 1 2 Dagens föreläsning TDDC67 Funktionell programmering och Lisp Fö 8 och 9 Dataabstraktion - Abstrakta datatyper - datatypbeskrivning - datatyplikhet - sammansättningar av datatyper med sekvens, tupel,

Läs mer

Dagens föreläsning. TDDC67 Funktionell programmering och Lisp Fö 8 och 9

Dagens föreläsning. TDDC67 Funktionell programmering och Lisp Fö 8 och 9 1 Dagens föreläsning TDDC67 Funktionell programmering och Lisp Fö 8 och 9 Dataabstraktion - Abstrakta datatyper - datatypbeskrivning - datatyplikhet - sammansättningar av datatyper med sekvens, tupel,

Läs mer

Uppgift 1 ( Betyg 3 uppgift )

Uppgift 1 ( Betyg 3 uppgift ) 2008-03-12.kl.14-19 Uppgift 1 ( Betyg 3 uppgift ) Du skall skriva ett program som läser igenom en textfil som heter FIL.TXT och skriver ut alla rader där det står ett decimaltal först på raden. Decimaltal

Läs mer

Programmering II (ID1019)

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å

Läs mer

Symbolisk data. quote. (define a 1) (define b 2) (jacek johan david) (list a b)

Symbolisk data. quote. (define a 1) (define b 2) (jacek johan david) (list a b) Symbolisk data (1 2 3 4) (a b c d) (jacek johan david) ((jacek "jacek@cs.lth.se") (johan "johang@cs.lth.se") (david "dat99dpe@ludat.lth.se")) ((anna 13) (per 11) (klas 9) (eva 4)) (+ (* 23 4) (/ y x))

Läs mer

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

Läs mer

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python Hjälpmedel Följande hjälpmedel är tillåtna: Exakt en valfri bok, t.ex. den rekommenderade kursboken. Boken får ha anteckningar,

Läs mer

Användarhandledning Version 1.2

Användarhandledning Version 1.2 Användarhandledning Version 1.2 Innehåll Bakgrund... 2 Börja programmera i Xtat... 3 Allmänna tips... 3 Grunderna... 3 Kommentarer i språket... 4 Variabler... 4 Matematik... 5 Arrayer... 5 på skärmen...

Läs mer

TDDC74 Programmering: Abstraktion och modellering Dugga 1, exempeldugga

TDDC74 Programmering: Abstraktion och modellering Dugga 1, exempeldugga TDDC74 Programmering: Abstraktion och modellering Dugga 1, exempeldugga Läs alla frågorna först och bestäm dig för i vilken ordning du vill lösa uppgifterna. Uppgifterna är inte nödvändigtvis i svårighetsordning.

Läs mer

Uppgift 4A - Definition av enkla funktioner

Uppgift 4A - Definition av enkla funktioner Uppgift 4A - Definition av enkla funktioner (defun start-klockslag (tidsperiod) "tidsperiod -> klockslag" (typkontroll tidsperiod #'tidsperiod?) (first (packa-upp tidsperiod))) (defun slut-klockslag (tidsperiod)

Läs mer

BEGREPP HITTILLS FÖRELÄSNING 2 SAMMANSATTA UTTRYCK - SCHEME DATORSPRÅK

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,

Läs mer

TDDC74 PROGRAMMERING: ABSTRAKTION OCH MODELLERING VT 2017

TDDC74 PROGRAMMERING: ABSTRAKTION OCH MODELLERING VT 2017 FÖRELÄSNING 1 TDDC74 PROGRAMMERING: ABSTRAKTION OCH MODELLERING VT 2017 Introduktion till kursen Schemespråkets grunder Enkla exempel Jalal Maleki Institutionen för datavetenskap Linköpings universitet

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

Dataabstraktion. TDDD73 Funktionell och impterativ programmering i Python Föreläsning 12. Peter Dalenius Institutionen för datavetenskap

Dataabstraktion. TDDD73 Funktionell och impterativ programmering i Python Föreläsning 12. Peter Dalenius Institutionen för datavetenskap Dataabstraktion TDDD73 Funktionell och impterativ programmering i Python Föreläsning 12 Peter Dalenius Institutionen för datavetenskap 2013-11-12 Översikt Vad är abstraktion? Vad är en abstrakt datatyp?

Läs mer

TDDC74 Programmering: Abstraktion och modellering Dugga 2, , kl 14-16

TDDC74 Programmering: Abstraktion och modellering Dugga 2, , kl 14-16 TDDC74 Programmering: Abstraktion och modellering Dugga 2, 207-04-06, kl 4-6 Läs alla frågorna först och bestäm dig för i vilken ordning du vill lösa uppgifterna. Uppgifterna är inte nödvändigtvis i svårighetsordning.

Läs mer

Föreläsningsanteckningar, Introduktion till datavetenskap HT S4 Datastrukturer. Tobias Wrigstad

Föreläsningsanteckningar, Introduktion till datavetenskap HT S4 Datastrukturer. Tobias Wrigstad 1 Datatyper Tobias Wrigstad Det finns flera olika typer av (slags) data Olika datatyper har olika egenskaper. T.ex. är ett personnummer inte ett tal. (Den sista siffran skall stämma enligt den s.k. Luhnalgoritmen

Läs mer

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python Hjälpmedel Följande hjälpmedel är tillåtna: Exakt en valfri bok, t.ex. den rekommenderade kursboken. Boken får ha anteckningar,

Läs mer

Procedurer och villkor. Rekursiva procedurer. Exempel: n-fakultet

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

Läs mer

TDDC74 Lab 04 Muterbara strukturer, omgivningar

TDDC74 Lab 04 Muterbara strukturer, omgivningar TDDC74 Lab 04 Muterbara strukturer, omgivningar 1 Översikt I den här laborationen kommer ni att lära er mer om: Tillstånd, och skillnader mellan ren funktionell programmering och imperativ. Skillnaden

Läs mer

729G74 IT och programmering, grundkurs. Tema 1, Föreläsning 3 Jody Foo,

729G74 IT och programmering, grundkurs. Tema 1, Föreläsning 3 Jody Foo, 729G74 IT och programmering, grundkurs Tema 1, Föreläsning 3 Jody Foo, jody.foo@liu.se Föreläsningsöversikt Kurslogistik Diskret matematik & Uppgifter i Python Kompletteringar Tema 1: Olika perspektiv

Läs mer

Procedurer och villkor

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

Läs mer

Klassdeklaration. Metoddeklaration. Parameteröverföring

Klassdeklaration. Metoddeklaration. Parameteröverföring Syntax: Class Declaration Modifier Class Body Basic Class Member Klassdeklaration class Class Member Field Declaration Constructor Declaration Method Declaration Identifier Class Associations Motsvarar

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

Linköpings Tekniska Högskola Instutitionen för Datavetenskap (IDA) Torbjörn Jonsson, Erik Nilsson Lab 2: Underprogram

Linköpings Tekniska Högskola Instutitionen för Datavetenskap (IDA) Torbjörn Jonsson, Erik Nilsson Lab 2: Underprogram Mål Lab 2: Underprogram Följande laboration introducerar underprogram; procedurer, funktioner och operatorer. I denna laboration kommer du att lära dig: Hur man skriver underprogram och hur dessa anropas.

Läs mer

kl Tentaupplägg

kl Tentaupplägg Tentaupplägg TIPS 1: Läs igenom ALLA uppgifterna. Välj den du känner är lättast först. Det kan gärna ta 10-20 minuter. Försök skriva saker som kan vara problem i uppgifterna. Är det något du absolut kommer

Läs mer

729G04 Programmering och diskret matematik. Python 2: Villkorssatser, sanningsvärden och logiska operatorer

729G04 Programmering och diskret matematik. Python 2: Villkorssatser, sanningsvärden och logiska operatorer 729G04 Programmering och diskret matematik Python 2: Villkorssatser, sanningsvärden och logiska operatorer Föreläsningsöversikt Vad händer när vi kör vår pythonkod? Programmerare Villkorssatser Jämförelser

Läs mer

Lära dig analysera större och mer komplicerade problem och formulera lösningar innan du implementerar.

Lära dig analysera större och mer komplicerade problem och formulera lösningar innan du implementerar. Laboration 5 Mängder Syfte Lära dig analysera större och mer komplicerade problem och formulera lösningar innan du implementerar. Lära dig kombinera på ett lämpligt sätt de begrepp och metoder som du har

Läs mer

Fuzzy Logic. När oskarpa definitioner blir kristallklara. Åsa Svensson. Linköpings Universitet. Linköping

Fuzzy Logic. När oskarpa definitioner blir kristallklara. Åsa Svensson. Linköpings Universitet. Linköping Fuzzy Logic När oskarpa definitioner blir kristallklara Linköpings Universitet Linköping Sammanfattning I denna fördjupningsuppgift har jag fokuserat på Fuzzy Logic och försökt att beskriva det på ett

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

Programmering I Tobias Wrigstad fredag, 2009 augusti 28

Programmering I Tobias Wrigstad fredag, 2009 augusti 28 Programmering I Tobias Wrigstad tobias@dsv.su.se Vad är programmering? Lågnivåspråk och högnivåspråk Kompilering och interpretering Variabler Notation för flödesschema (flow chart) Kontrollstrukturer (conditionals,

Läs mer

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

Läs mer

MATEMATIKENS SPRÅK. Avsnitt 1

MATEMATIKENS SPRÅK. Avsnitt 1 Avsnitt 1 MATEMATIKENS SPRÅK Varje vetenskap, liksom varje yrke, har sitt eget språk som ofta är en blandning av vardagliga ord och speciella termer. En instruktionshandbok för ett kylskåp eller för en

Läs mer

Använda Python Laboration 1 GruDat, DD1344

Använda Python Laboration 1 GruDat, DD1344 Använda Python Laboration 1 GruDat, DD1344 Örjan Ekeberg 14 oktober 2008 Målsättning Målet med denna laboration är att du ska prova på att använda Python, framförallt interativt. Du ska också lära dig

Läs mer

Datastrukturer och algoritmer. Föreläsning 15 Inför tentamen

Datastrukturer och algoritmer. Föreläsning 15 Inför tentamen Datastrukturer och algoritmer Föreläsning 15 Inför tentamen 1 Innehåll Kursvärdering Vi behöver granskare! Repetition Genomgång av gammal tenta 2 Första föreläsningen: målsättningar Alla ska höja sig ett

Läs mer

tentaplugg.nu av studenter för studenter

tentaplugg.nu av studenter för studenter tentaplugg.nu av studenter för studenter Kurskod Kursnamn D0017E Inledande programmering för ingenjörer Datum 2014-10-31 Material Tentamen Kursexaminator Betygsgränser Tentamenspoäng 3 14; 4??; 5?? 25/25

Läs mer

Planering Programmering grundkurs HI1024 HT TIDAA

Planering Programmering grundkurs HI1024 HT TIDAA Planering Programmering grundkurs HI1024 HT 2016 - TIDAA Föreläsning V35 Föreläsning 1 Programmering Kurs-PM Programmeringsmiljö Hello World! Variabler printf scanf Föreläsning 2 Operatorer Tilldelning

Läs mer

TDIU01 - Programmering i C++, grundkurs

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

Läs mer

TENTAMEN: Algoritmer och datastrukturer. Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad.

TENTAMEN: Algoritmer och datastrukturer. Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad. 1 (8) TENTMEN: lgoritmer och datastrukturer Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad. örja varje uppgift på ett nytt blad. Skriv inga lösningar i tesen. Skriv ditt idnummer

Läs mer

ORDINARIE TENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B kl. 08:15 13:15

ORDINARIE TENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B kl. 08:15 13:15 ORDINARIE TENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B03 160119 kl. 08:15 13:15 Ansvarig Lärare: Donald F. Ross Hjälpmedel: Inga. Algoritmerna finns i de respektive uppgifterna eller i bilogarna. ***

Läs mer

Uppgift 6A - Frekvenstabell

Uppgift 6A - Frekvenstabell Uppgift 6A - Frekvenstabell (defstruct par element antal) (defun unika-element (lista) (reduce #'(lambda (x y) (if (listp x) (if (find y x) x (cons y x)) (if (eq x y) x (list x y)))) lista)) (defun sortera-tabell

Läs mer

Linjärt minne. Sammanhängande minne är ej flexibelt. Effektivt

Linjärt minne. Sammanhängande minne är ej flexibelt. Effektivt Binära träd (forts) Ett binärt träd kan lagras i ett enda sammanhängande minne Roten har index 1 Vänster barn till nod i har index 2*i Höger barn till nod i har index 2*i + 1 Föräldern till nod i har index

Läs mer

Signalflödesmodellen. Två (gamla) exempel: Kvadratera alla jämna löv.

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

Läs mer

p /\ q r DD1350 Logik för dataloger Kort repetition Fö 3 Satslogikens semantik

p /\ q r DD1350 Logik för dataloger Kort repetition Fö 3 Satslogikens semantik DD1350 Logik för dataloger Fö 3 Satslogikens semantik 1 Kort repetition Satslogik formellt språk för att uttrycka påståenden med variabler och konnektiv /\, \/,, t.ex. p /\ q r 1 Kort repetition Naturlig

Läs mer

TDDC74 Programmering: Abstraktion och modellering Tentamen, onsdag 19 oktober 2016, kl 14 18

TDDC74 Programmering: Abstraktion och modellering Tentamen, onsdag 19 oktober 2016, kl 14 18 TDDC74 Programmering: Abstraktion och modellering Tentamen, onsdag 19 oktober 2016, kl 14 18 Läs alla frågorna först, och bestäm dig för i vilken ordning du vill lösa uppgifterna. Skriv tydligt och läsligt.

Läs mer

Imperativ och Funktionell Programmering i Python #TDDD73. Fredrik Heintz,

Imperativ och Funktionell Programmering i Python #TDDD73. Fredrik Heintz, Imperativ och Funktionell Programmering i Python #TDDD73 Fredrik Heintz, IDA fredrik.heintz@liu.se @FredrikHeintz Översikt Repetition: Satser och uttryck Variabler, datatyper, synlighet och skuggning Upprepning,

Läs mer