Dagens föreläsning Programmering i Lisp Fö 7. Sammanfattning funktionell programmering Exempel på funktionella programspråk
|
|
- Mats Sundqvist
- för 7 år sedan
- Visningar:
Transkript
1 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äroboken Diskret matematik. Sammanfattning funktionell programmering Exempel på funktionella programspråk
2 2 DM-Kapitel 1. Mängder Mängder kan lätt representeras som listor i Lisp, men dubblerade element kan ej förekomma. Ordningen spelar ingen roll. DM-Avsnitt 1.2 I Övning 120.* föreslås att definiera mängdoperationerna union, snitt och differens, samt lägg till ett element och är ett element medlem i en mängd. Man kan också införa en funktion som jämför om två mängder är lika eller en delmängd av en annan mängd. DM-Avsnitt 1.3 I Lisp-föreläsning 5 i samband med reduce och den rekursiva och iterativa processlösningen, diskuterade vi olika egenskaper hos operatorer, kommutativ och associativ operator, samt vänster- resp högerassociativitet. I vilken ordning beräknas uttryck som (1 - (2 - (3 - (4-5)))) eller ((((1-2) - 3) - 4) - 5) Hur är det med +?
3 3 Vi kom då fram till att vi kunde använda samma operator i den rekursiva och iterativa processlösningen om operatorn var kommutativ och associativ. Från 1.3 ser vi dessa lagar för operatorn union. I nästa steg i Lisp-kursen kommer vi att ta upp Dataabstraktion och kommer då att använda mängder som ett sätt att beskriva datatyper. DM-Avsnitt 1.4 Vi kommer att använda begrepp som ordnade par och kartesiska produkt. DM-Avsnitt 1.8 Delmängd och potensmängd. Nu skall i uppgift 3A skriva en funktion som genererar potensmängden av en mängd, dvs alla delmängder man kan skapa.
4 4 DM Kapitel 4. Induktion I Lisp-kursen vill vi använda resonemanget med induktion för att skriva och verifiera rekursiva funktioner. Antag att det rekursiva anropet är korrekt. Lisp-föreläsning 6 tog upp DM 4.1 Induktionsprincipen. Exemplifierat med samma summering som i läroboken. När ni definierade de första rekursiva funktionerna över tal så exemplifierade på samma sätt som sid 52 i DM-boken hur man kunde se det rekursiva sambandet. DM 4.2 Välordningsprincipen. Det finns ett minsta element i en delmängd av tal i N. Vi kan även göra induktion över sekvenser, som inte tas upp i läroboken, utan man gör induktionsbevis över naturliga talen.
5 5 DM 4.4 Rekursiva definitioner. Se DM-exempel och fakultetsfunktionen i I DM-exempel ser ni sambandet för n-te potensen, som ni definierad i övning 108 med funktionen upphöjt-till.
6 6 Vad ni kan göra: Ni kan testa många samband i DM-övningarna (sid 58) genom att använda funktioner ni definierat i Lisp, tex summera de n första talen. Gör om den till en högre ordningens funktion, som tar termen i summan (som en funktion). (defun summera (n term) (summera-från n 1 term)) (defun summera-från (n i term) (if (> i n) 0 (+ (funcall term i) (summera-från n (+ i 1) term)))) (defun fak (n) (if (= n 0) 1 (* n (fak (- n 1))))) (defun square (n) (* n n)) (defun test-4.5 (n) (= (summera n # (lambda (k)(* k (fak k)))) (- (fak (+ n 1)) 1))) (defun test-4.6 (n) (= (summera n # (lambda (k) (* k k k))) (square (summera n # (lambda (k) k))))) (test-4.5 5) => t (test 4.6) = t
7 7 DM Kapitel 5 Kombinatorik Här kanske vi inte använder så mycket i programmeringen som sådant, utan mer hittar många bra exempel att lösa. DM Permutationer. Där definieras fakultet igen, och sätt att beräkna antalet permutationer. I Lisp-läroboken i avsnitt 8.2 en funktion som tar fran alla permutationer av elementen i en lista. (Senare i avsnitt 12.7 visas hur en rekursiv lösning mer systematiskt kan överföras till ett iterativ program.) DM 5.5 Kombinationer. På Lisp-föreläsning och övning 301 är att skriva en funktion som genererar alla kombinationer av elementen i ett godtyckligt antal listor. Egentligen löser vi här problemet att ta fram den kartesiska produkten av ett antal tupler. Se DM-avsnitt 1.4, men där ger man kartesiska produkten av 2 tupler, medan vi i denna uppgift tar fram med godtyckligt antal tupler.
8 8 DM 5.7 Binomialsatsen och 5.9 Pascals triangel. Sedan införs n över k, som kan beräknas med fakultet, som leder till binomialkoefficienterna, som kan beräknas med Pascals triangel, som är er Uppgift 2E. Vad kan ni göra: Även här kan ni med ganska enkla medel kunna skriva program som löser en del av övningarna från DM-kapitel 5 på sidan 82 och framåt.
9 9 DM-Kapitel 7. Grafer DM Avsnitt Grafer och enkla grafer. Här ges den allmänna defintionen av en graf. Här använd begreppet hörn, som motsvarande begrepp för en nod, som vi har använt här i Lisp-kursen. En båge kallas även en kant. DM Avsnitt Vägar. Här definieras väg som en sekvens bågar. DM avsnitt 7.4 Träd. Här ges den allmänna definitionen av ett träd, som är en graf utan cykler. Vi har mest använt begreppet binärt träd, då antalet utgående bågar är 2 (eller max 2).
10 10 DM Kapitel 10. Logik DM Avsnitt 10.2 Konnektiv och sanningsvärdestabeller. Vi använder detta i dels Lisp-övning 208, där de logiska konnektiven negation (icke/ not), disjunktion (eller/or) och konjunktion (och/eller) skall definieras. Sannigstabellerna ges i DMavsnitt I Lisp-uppgift 2A skall logiska uttryck beräknas.
11 11 Återblick funktionell programmering Program är funktioner. Funktionerna ses som matematiska funktioner, dvs avbildning av argument till värde. Funktioner gör ej eller beror på sidoeffekter. Funktionsanrop med samma argument skall ge samma värde (referential transparency). (f 1 2) => 2345 (f 1 2) => 4567 Ej möjligt! Beräkningsmodell: Substitutionsmodellen, ersätt funktionsanrop med funktionsdefinition och substituera formella parametrar med värdet av de aktuella parametrarna. Deklarativ programmering: Program beskriver mer vad som skall göras ej exakt hur. Program ses mer som en specifikation av problemet, men som även kan beräknas. Till gruppen hör även logikprogrammering.
12 12 Vi har hittills gått igenom den funktionella delmängden eller pure Lisp. - dataobjekt: tal, symboler och listor - uttryck - villkorliga uttryck - funktioner - högre ordningens funktioner - lokala variabler - lokala funktioner - ge globalt namn (med setq) till värden Icke-funktionella operationer är: Användning av setq, som tilldelning inne i funktioner. In- och utmatning. Datastrukturer som ändrar innehåll, t ex poster och arraystrukturer.
13 13 - Vi har lärt oss skriva algoritmer som bearbetar sekvenser och binär träd-strukturer. Ni har nu övat på detta. - Vi har identifierat olika typer av mallar eller mönster. - Vi kan traversera en sådan struktur, dvs gå igenom den element för element. Vi kan nu identifiera olika typer av algoritmmönster: sökning efter givet element (finns-bokstav? i Övn 118, forwardfind i Uppg 2B) mappning, transformera varje elements värde till ett nytt och skapa en struktur av samma slag. (positiva i Uppg 1A, högre ordningens funktion mapcar) filtrering, skapa en ny struktur med alla elementen som uppfyller ett villkor (ta-bort-vokaler i Uppg 119, filtrera i Uppg 1A, filter Övn 213) reduktion (ackumulering), t ex summera alla talen i en sekvens (räkna i Uppg 1A, högre ordningens funktion reduce) back-tracking, sök först bestäm sedan (efter-sista i Uppg 205, backfind i Uppg 2C) generering, från ett värde skapa nästa (generate-list i Uppg 2E)
14 14 Används funktionell programmering? Ericsson har tagit fram ett deklarativt språk ER- LANG ( baserat på funktionell programmering (ML) och logikprogrammering (Prolog). Innehåller processer för concurrent programming. Skiljer sig från LISP genom annan syntax och anrop genom mönstermatchning. member(x, [X _]) -> true member(x, [_ T]) -> member(x,t) member(x, []) -> nil member(a, [a, b, c, d]) > true (defun member (x l) (cond ((endp l) nil) ((eq x (first l)) t) (t (member x (rest l)))))
15 15 Exempel: Binärt sorteringsträd. Kan användas för att snabba upp sökningen i en tabell jämfört med exempelvis en sekvensiell lista (typ associationslista). Vi har en nyckel (key) och ett värde (value). Representation för ett sorterat-binärt-träd: löv: nil nod: {nyckel värde sorterat-binärt-träd sorterat-binärt-träd} Exempel: ett - one, två - two, tre - three, fyra - four Sorteringsträdet byggs upp genom ta en nyckel och ett värde i taget, traversera trädet och bygga ut ett löv: nil {ett one nil nil} {ett one nil {två two nil nil}} {ett one nil {två two {tre three nil nil} nil}} {ett one nil {två two {tre three {fyra four nil nil} nil} nil}}
16 16 Sökning i ett sorterat binärt träd. Erlangkod: lookup(key, nil) -> not-found lookup(key, {Key, Value, _, _}) -> {found, Value} lookup(key, {Key1, _, Smaller, _}) when Key < Key1 -> lookup(key, Smaller) lookup(key, {Key1, _, _, Bigger}) when Key > Key1 -> lookup(key, Bigger) motsvarande Lispkod: (defun lookup (key node) (cond ((eq node nil) not-found) ((eq key (first node)) (list found (second node))) ((string< key (first node)) (lookup key (third node))) (t (lookup key (fourth node)))))
17 17 Funktionella programspråk. Haskell Används som första programspråk på Chalmers. qsort [] = [] qsort (x:xs) = qsort elts_lt_x ++ [x] ++ qsort elts_greq_x where elts_lt_x = [y y <- xs, y < x] elts_greq_x = [y y <- xs, y >= x] (x:xs) --- x binds till första elementet och xs till resten ++ är append [y y <- xs, y < x] är en högre ordningens operation som skapar en lista med alla y där y tillhör xs och y är mindre än x. Andra egenskaper: strongly typed (stark typning), polymorphism non-strict functional programming languages => lazy evaluation (lat evaluering) till skillnad från eager evaluation Man kan hantera oändliga listor
18 18 Lat evaluering (defun f (test arg1 arg2)... (if test arg1 arg2)...) (f (= x 3) (/ x y) (/ x 0)) Om detta är enda stället där arg2 används och om x=3 så behövs inte arg2 som då inte beräknas. Om arg2 i detta fall beräknas får vi ju fel, division med 0! Strömmar, man kan hantera oändliga listor. Definition av alla heltalen. (defun heltal-från (n) (cons n (heltal-från (+ n 1)))) (setq heltal (heltal-från 1)) heltal = ( (fifth heltal) => 5 Antag vi har ström-add som adderar elementen i två strömmar parvis. (ström-add heltal heltal) => ( Vi definierar om heltalen: (setq ettor (cons 1 ettor)) (setq heltal (cons 1 (ström-add ettor heltal))) Vi definierar fibonaccitalen: (setq fib-tal (cons 0 (cons 1 (ström-add (rest fib-tal) fib-tal)))) fib-tal = ( (sixth fib-tal) => 8
19 19 Mer om detta kan man läsa i kurserna: TDDA69 Data- och programstrukturer TDDA43 Programmeringsteori
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 merUniversitetet i Linköping Institutionen för datavetenskap Anders Haraldsson 2
Anders Haraldsson 1 Anders Haraldsson 2 Dagens föreläsning Programmering i Lisp Fö 5 - Funktioner - lambda-uttryck (avs 7.1) - funcall och function (avs 7.2) - Högre ordningens funktioner (avs 7.) - Iteratorer
Läs merRekursiva 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 merLABORATION 1. Inledande Lisp - rekursion
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
Läs merTentamen i. TDDC67 Funktionell programmering och Lisp
1 Linköpings tekniska högskola Institutionen för datavetenskap Anders Haraldsson Tentamen i TDDC67 Funktionell programmering och Lisp och äldre kurser TDDC57 Programmering, Lisp och funktionell programmering
Läs merDagens föreläsning Programmering i Lisp. - Bindning av variabler (avs 14.6) fria variabler statisk/lexikalisk och dynamisk bindning
1 Dagens föreläsning Programmering i Lisp - Block, räckvidd - Bindning av variabler (avs 14.6) fria variabler statisk/lexikalisk och dynamisk bindning - Felhantering (kap 17) icke-normala återhopp catch
Läs merTvå 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 merUniversitetet i Linköping Institutionen för datavetenskap Anders Haraldsson
1 2 - Block, räckvidd Dagens föreläsning Programmering i Lisp - Bindning av variabler (avs 14.6) fria variabler statisk/lexikalisk och dynamisk bindning - Felhantering (kap 17) icke-normala återhopp catch
Läs merDagens 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 merImperativ programmering. Imperativ programmering konstruktioner i Lisp. Datastrukturer (kap ) arraystruktur poststruktur
Imperativ programmering konstruktioner i Lisp Imperativ programmering I den imperativa programmeringen skriver vi program satsvist. Datastrukturer (kap.-.) aystruktur poststruktur Iterativa uttryck (avs.)
Läs merTDDC74 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 merKomma 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 merSignalflö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 merIdag: 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 merTDDC74 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 merIdag: 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 merFÖRELÄSNING 2, TDDC74, VT2018 BEGREPP PROBLEMLÖSNING MED HJÄLP AV FALLANALYS PROBLEMLÖSNING MED HJÄLP AV REKURSION
FÖRELÄSNING 2, TDDC74, VT2018 Begrepp och definitioner (delvis från föreläsning 1) Fallanalys som problemlösningsmetod Rekursivt fallanalys Rekursiva beskrivningar och processer de kan skapa Rekursiva
Läs merTDDC74 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 merBEGREPP 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 merSista delen av kursen
Sista delen av kursen handlar om hur program, delprogram och datatyper deklareras och vad det man åstadkommit egentligen betyder. Innehåll Syntaktisk (hur ser det ut) och semantisk (vad betyder det) beskrivning
Läs merProgrammering 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.
Läs merTillämpad Programmering (ID1218) :00-13:00
ID1218 Johan Montelius Tillämpad Programmering (ID1218) 2014-03-13 09:00-13:00 Förnamn: Efternamn: Regler Du får inte ha något materiel med dig förutom skrivmateriel. Mobiler etc, skall lämnas till tentamensvakten.
Läs merSista delen av kursen
Sista delen av kursen handlar om hur program, delprogram och datatyper deklareras och vad det man åstadkommit egentligen betyder. Innehåll Syntaktisk (hur ser det ut) och semantisk (vad betyder det) beskrivning
Läs merProgramspråkslingvistik. Sista delen av kursen. Ett programspråk
Sista delen av kursen Programspråkslingvistik handlar om hur program, delprogram och datatyper deklareras och vad det man åstadkommit egentligen betyder. Innehåll Syntaktisk (hur ser det ut) och semantisk
Läs merTDDC74 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 merTDDC74 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 merObjektorienterad 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
Läs merProgrammering 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 merTDDC74 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 merFöreläsning 9 Exempel. Intervallhalveringsmetoden. Intervallhalveringsmetoden... Intervallhalveringsmetoden...
Föreläsning 9 Intervallhalveringsmetoden Intervallhalveringsmetoden Newton-Raphsons metod Mer om rekursion Tidskomplexitet Procedurabstraktion Representation Bra om ni läst följande avsnitt i AS: Procedures
Läs mer729G74 IT och programmering, grundkurs. Tema 2. Föreläsning 3 Jody Foo,
729G74 IT och programmering, grundkurs Tema 2. Föreläsning 3 Jody Foo, jody.foo@liu.se Föreläsningsöversikt Information i grafstrukturer Diskret matematik Relationer: kopplingar mellan mängder Funktioner
Läs merTENTAMEN 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 merUppgift 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 merTypsystem. Typsystem... Typsystem... Typsystem... 2 *
Typsystem Typsystem finns i alla programmeringsspråk. Avsikten med typsystem är att kontrollera att uttryck är säkra i den bemärkelsen att innebörden i operanderna är klar och inte är motsägelsefull och
Läs merIntroduktion 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
Läs merDagens föreläsning. - Vad skall vi kunna inför den skriftliga examinationen? - Vad skall vi ta med oss till andra kurser.
1 Dagens föreläsning - Vad handlade kurserna (TDDC66 och TDDC67) egentligen om? - Vad skall vi kunna inför den skriftliga examinationen? - Vad skall vi ta med oss till andra kurser. - Vad kan vi förvänta
Läs merTDDC74 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 merTypsystem. DA2001 (Föreläsning 23) Datalogi 1 Hösten / 19
Typsystem Typsystem finns i alla programmeringsspråk. Avsikten med typsystem är att kontrollera att uttryck är säkra i den bemärkelsen att innebörden i operanderna är klar och inte är motsägelsefull och
Läs merProgrammering II (ID1019) :00-12:00
ID1019 Johan Montelius Programmering II (ID1019) 2014-01-16 09:00-12: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.
Läs merFöreläsning 9 Exempel
Föreläsning 9 Exempel Intervallhalveringsmetoden DA2001 (Föreläsning 9) Datalogi 1 Hösten 2013 1 / 24 Föreläsning 9 Exempel Intervallhalveringsmetoden Newton-Raphsons metod DA2001 (Föreläsning 9) Datalogi
Läs merTDDC74 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 merFunktionell 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 ->
Läs merTDDC74 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 merDD1361 Programmeringsparadigm. Carina Edlund
DD1361 Programmeringsparadigm Carina Edlund carina@nada.kth.se Funktionell programmering Grundidéen med funktionell programmering är att härma matematiken och dess funktionsbegrepp. Matematiskt funktionsbegrepp
Läs merUppsala Universitet Matematiska Institutionen Thomas Erlandsson
Uppsala Universitet Matematiska Institutionen Thomas Erlandsson LÄSANVISNINGAR VECKA 36 VERSION 1. ARITMETIK FÖR RATIONELLA OCH REELLA TAL, OLIKHETER, ABSOLUTBELOPP ADAMS P.1 Real Numbers and the Real
Läs merUppgift 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 merInstruktioner - 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 merTentamen i. TDDA 69 Data och programstrukturer
1 Linköpings tekniska högskola Institutionen för datavetenskap Anders Haraldsson Tentamen i TDDA 69 Data och programstrukturer Torsdag den 14 januari 2009, kl 14-18 Hjälpmedel: Inga. Poänggränser: Maximalt
Läs merKOMBINATORIK. Exempel 1. Motivera att det bland 11 naturliga tal finns minst två som slutar på samma
Explorativ övning 14 KOMBINATORIK Kombinatoriken används ofta för att räkna ut antalet möjligheter i situationer som leder till många olika utfall. Den används också för att visa att ett önskat utfall
Läs merFÖRELÄSNING 1 PERSONAL TDDC74 PROGRAMMERING: ABSTRAKTION OCH MODELLERING VT 2017 SYFTE EXAMINATION ORGANISATION
TDDC74 PROGRAMMERING: ABSTRAKTION OCH MODELLERING VT 2017 Jalal Maleki Institutionen för datavetenskap Linköpings universitet jalal.maleki@liu.se FÖRELÄSNING 1 Introduktion till kursen Schemespråkets grunder
Läs merDagens 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 merFöreläsningsanteckningar och övningar till logik mängdlära
Inledande matematisk analys tma970, 010, logik, mängdlära Föreläsningsanteckningar och övningar till logik mängdlära Dessa öreläsningsanteckningar kompletterar mycket kortattat kap 0 och appendix B i Persson/Böiers,
Läs mern 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 merallt.cl Page 1 of 17 Date: torsdag 7 december 2006
allt.cl Page 1 of 17 Slumpspelaren Väljer slumpvis en flytt ur möjliga flyttar. (defun skapa-slump-spelare (namn bricktyp) "lisp-sträng x bricka -> spelare" (skapa-spelare #'slump-gör-flytt namn bricktyp))
Läs merAbstrakta 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 merDagens 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 merDataabstraktion. 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 merGrundläggande logik och modellteori
Grundläggande logik och modellteori Kapitel 6: Binära beslutsdiagram (BDD) Henrik Björklund Umeå universitet 22. september, 2014 Binära beslutsdiagram Binära beslutsdiagram (Binary decision diagrams, BDDs)
Läs merProgramkonstruktion 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
Läs merProgrammering II (ID1019) :00-12:00
ID1019 Johan Montelius Programmering II (ID1019) 2014-01-16 09:00-12: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.
Läs merUniversitetet 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 mer729G74 IT och programmering, grundkurs. Tema 2. Föreläsning 3 Jody Foo,
729G74 IT och programmering, grundkurs Tema 2. Föreläsning 3 Jody Foo, jody.foo@liu.se Föreläsningsöversikt Information i grafstrukturer Diskret matematik Relationer: kopplingar mellan mängder Funktioner
Läs merInstruktioner - 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 merTentamen i TDDC75 Diskreta strukturer , lösningsförslag
Tentamen i TDDC75 Diskreta strukturer 2018-10-23, lösningsförslag 1 1. (a) Sanningstabell för uttrycken p q r p q p r r q r p q 0 0 0 1 0 1 1 1 0 0 1 1 1 0 1 1 0 1 0 1 0 1 1 0 0 1 1 1 1 0 0 0 1 0 0 0 1
Läs merProcedurer 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 merLösning till tentamensskrivning i Diskret Matematik för CINTE, CL2 och Media 1, SF1610 och 5B1118, onsdagen den 17 augusti 2011, kl
Matematiska Institutionen KTH Lösning till tentamensskrivning i Diskret Matematik för CINTE, CL och Media, SF60 och 5B8, onsdagen den 7 augusti 0, kl 4.00-9.00. Examinator: Olof Heden Hjälpmedel: Inga
Läs merProcedurer 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 merTDDC74 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 merLösningar Datastrukturer TDA
Lösningar Datastrukturer TDA416 2016 12 21 roblem 1. roblem 2. a) Falskt. Urvalssortering gör alltid samma mängd av jobb. b) Sant. Genom att ha en referens till sista och första elementet, kan man nå både
Läs merI kursen i endimensionell analys är mängden av reella tal (eng. real number), R, fundamental.
Lunds tekniska högskola Datavetenskap Lennart ndersson Föreläsningsanteckningar EDF10 4 Mängder 4.1 Motivering Mängden är den mest grundläggande diskreta strukturen. Nästan alla matematiska begrepp går
Läs merLäsanvisning till Discrete matematics av Norman Biggs - 5B1118 Diskret matematik
Läsanvisning till Discrete matematics av Norman Biggs - 5B1118 Diskret matematik Mats Boij 28 oktober 2001 1 Heltalen Det första kapitlet handlar om heltalen och deras aritmetik, dvs deras egenskaper som
Läs merTDDC74 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 merTENTAMEN: Algoritmer och datastrukturer. Läs detta!
1 (6) TENTAMEN: Algoritmer och datastrukturer Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad. Börja varje uppgift på ett nytt blad. Skriv ditt idnummer på varje blad (så att vi
Läs merIntroduktion till Haskell
Introduktion till Haskell Elias Riedel Gårding NMA11, Teknisk Fysik (KTH) 2014 18 februari 2018 Elias Riedel Gårding (NMA11, F14) Introduktion till Haskell 18 februari 2018 1 / 29 Om Haskell Historik 1927:
Läs merProgrammering II (ID1019) :00-11:00
ID1019 Johan Montelius Programmering II (ID1019) 2015-06-11 08:00-11:00 Instruktioner Du får inte ha något materiel med dig förutom skrivmateriel. Mobiler etc, skall lämnas till tentamensvakten. Svaren
Läs merÖvningshäfte 6: 2. Alla formler är inte oberoende av varandra. Försök att härleda ett par av de formler du fann ur några av de övriga.
GÖTEBORGS UNIVERSITET MATEMATIK 1, MAM100, HT2005 MATEMATISK BASKURS Övningshäfte 6: Syftet med övningen är att utforska strukturen hos talsystemen under addition respektive multiplikation samt sambandet
Läs mer729G74 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 merTillämpad programmering
Tillämpad programmering Erlang II Johan Montelius 1 Datastrukturer literaler atomer: foo, gurka, 'ett o två' nummer: 1,2,.. 3.14... samansatta (compound) tupler: {foo, a, b, 2} cons-cell: [gurka tomat
Läs merFöreläsning Datastrukturer (DAT036)
Föreläsning Datastrukturer (DAT036) Nils Anders Danielsson 2013-11-25 Idag Starkt sammanhängande komponenter Duggaresultat Sökträd Starkt sammanhängande komponenter Uppspännande skog Graf, och en möjlig
Läs merSCB :-0. Uno Holmer, Chalmers, höger 2 Ex. Induktiv definition av lista. // Basfall
Rekursiva funktioner Föreläsning 10 (Weiss kap. 7) Induktion och rekursion Rekursiva funktioner och processer Weiss 7.1-3 (7.4, 7.5.3 utgår) Fibonaccital (7.3.4) Exempel: Balansering av mobil (kod se lab
Läs mer(N) och mängden av heltal (Z); objekten i en mängd behöver dock inte vara tal. De objekt som ingår i en mängd kallas för mängdens element.
Grunder i matematik och logik (2017) Mängdlära Marco Kuhlmann 1 Grundläggande begrepp Mängder och element 2.01 En mängd är en samling objekt. Två standardexempel är mängden av naturliga tal (N) och mängden
Läs merInstruktioner - 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 merFö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 merLösning av tentamensskrivning i Diskret Matematik för CINTE och CMETE, SF1610, tisdagen den 27 maj 2014, kl
1 Matematiska Institutionen KTH Lösning av tentamensskrivning i Diskret Matematik för CINTE och CMETE, SF1610, tisdagen den 27 maj 2014, kl 14.00-19.00. Examinator: Olof Heden Hjälpmedel: Inga hjälpmedel
Läs merÖvningshäfte 3: Funktioner och relationer
GÖTEBORGS UNIVERSITET MATEMATIK 1, MAM100, HT2014 INLEDANDE ALGEBRA Övningshäfte 3: Funktioner och relationer Övning H Syftet är att utforska ett av matematikens viktigaste begrepp: funktionen. Du har
Läs merLambdas. (och fler design patterns) Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2017
Lambdas (och fler design patterns) Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2017 Funktioner En funktion (i programmeringstermer) är en operation som tar ett eller flera argument,
Läs mer729G74 IT och programmering, grundkurs. Tema 3. Föreläsning 2 Jody Foo,
729G74 IT och programmering, grundkurs Tema 3. Föreläsning 2 Jody Foo, jody.foo@liu.se Föreläsningsöversikt Repetition: syntax-quiz Fler for-loopar (över listor och dictionaries) range() Nästlade strukturer
Läs merTabeller. Programkonstruktion. Moment 8 Om abstrakta datatyper och binära sökträd. Implementering av tabellen. Operationer på tabellen
Programkonstruktion Moment 8 Om abstrakta datatyper och binära sökträd Tabeller En viktig tillämpning är tabellen att ifrån en nyckel kunna ta fram ett tabellvärde. Ett typiskt exempel är en telefonkatalog:
Läs merCentrala begrepp i prolog och logikprogrammering. Annamaris lista
Centrala begrepp i prolog och logikprogrammering Annamaris lista Databas med fakta och regler: Ett prolog-system består av en databas av fakta, och regler som gäller för dessa fakta. Fakta har formen av
Läs merTDDC74 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 merExempel på typer av datorspråk EXCEL
1 2 TDDB82 Perspektiv på Datateknik Breddgivande föreläsning Datorspråk Programmeringsparadigmer Programmeringsspråk Konstruktioner i programmeringsspråk Litteratur: Brookshear, Computer Science - an overview,
Läs merTENTAMEN: 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 merLinjä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Ö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
Läs merSprå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 merTDDC74 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 merFöreläsning 7 Innehåll. Rekursion. Rekursiv problemlösning. Rekursiv problemlösning Mönster för rekursiv algoritm. Rekursion. Rekursivt tänkande:
Föreläsning 7 Innehåll Rekursion Rekursivt tänkande: Hur många år fyller du? Ett år mer än förra året! Rekursion Rekursiv problemlösning Binärsökning Generiska metoder Rekursiv problemlösning: Dela upp
Läs merFöreläsning 4 Datastrukturer (DAT037)
Föreläsning 4 Datastrukturer (DAT07) Fredrik Lindblad 1 november 2017 1 Slides skapade av Nils Anders Danielsson har använts som utgångspunkt Se http://wwwcsechalmersse/edu/year/2015/course/dat07 1 Innehåll
Läs merFö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 merUniversitetet i Linköping Institutionen för datavetenskap Anders Haraldsson
1 2 Dagens föreläsning En konstruktion i Common Lisp som möjliggör att man kan skapa ny Lisp-kod, som i sin tur beräknas. - makrobegreppet - makrofunktioner - special form - makrodefintion - backquote
Läs mer