Datalogi, grundkurs 1. Lösningsförslag till tentamen

Relevanta dokument
Datalogi, grundkurs 1. Lösningsförslag till tentamen

Datalogi, grundkurs 1. Lösningsförslag till tentamen

Sökning och sortering. Sökning och sortering - definitioner. Sökning i oordnad lista. Sökning med vaktpost i oordnad lista

Sökning och sortering

Datalogi, grundkurs 1

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. Scheme. DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29

Datalogi, grundkurs 1

Standardfilerna Input och Output

Standardfilerna Input och Output. Filer... Filer... vanlig utbyggnad för ökad dynamik. Filer... filtyper

Funktioner, Procedurer och Parametrar. Funktioner, Procedurer och Parametrar... Funktioner, Procedurer och Parametrar procedurspecifikation

TDDC74 Programmering: Abstraktion och modellering Dugga 2, kl 8 10, 5 mars 2015

Lösningsförslag. TDDC74 Programmering: Abstraktion och modellering. Dugga 3 (provkod TEN1), Tid: kl 14-16, Datum:

Ordnad lista. Listor... Ordnad lista... Ordnad lista typer

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

TDDC74 Programmering: Abstraktion och modellering Tentamen, lördag 29 augusti 2015, kl 8 12

TDDC74 Programmering, abstraktion och modellering. Tentamen

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?

Föreläsning 6: Introduktion av listor

Typsystem. Typsystem... Typsystem... Typsystem... 2 *

Typsystem. DA2001 (Föreläsning 23) Datalogi 1 Hösten / 19

TDDC74 Lab 02 Listor, sammansatta strukturer

Sökning i ordnad lista. Sökning och sortering. Sökning med vaktpost i oordnad lista

Repetition i Pascal. Exemplen fac. Exemplen fac i Pascal. Exemplen fac motivering. Orginalet

Föreläsning 9 Exempel. Intervallhalveringsmetoden. Intervallhalveringsmetoden... Intervallhalveringsmetoden...

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

Föreläsning 9 Exempel

Uppgift 6A - Frekvenstabell

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)

Ändringsbar (mutable compound) data. TDDC74 Programmering: abstraktion och modellering. Sätta - samman listor kopiering. Hitta sista cons-cellen

GOTO och lägen. Några saker till och lite om snabbare sortering. GOTO och lägen (3) GOTO och lägen (2)

Datalogi, grundkurs 1 Övningsuppgifter i Scheme. Serafim Dahl, Carina Edlund, m.fl.

Några saker till och lite om snabbare sortering

Funktionell programmering DD1361

Abstraktion. Abstraktion... Abstraktion... Abstraktion...

Deklarationer/definitioner/specifikationer

Abstraktion. procedurabstraktion. DA2001 (Föreläsning 26) Datalogi 1 Hösten / 27

Lösningsförslag: Instuderingsfrågor, del D

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

TDDC74 Lab 04 Muterbara strukturer, omgivningar

TDDC74 Programmering: Abstraktion och modellering Dugga 2, Tid: kl 08-10, Datum:

Lösningar till uppgifterna sätts ut på kurssidan på nätet idag kl Omtentamen i Programmering C, 5p, A1, D1, E1, Fri, Pr1, Te/Ek1,

TDDC74 Programmering: Abstraktion och modellering. Provkod TEN1, Tid: kl 14-18, , Kåra

Kontinuerliga listor. Fält (listor) Kontinuerliga listor... Kontinuerliga listor...

Tentamen *:58/ID100V Programmering i C Exempel 3

TDIU01 - Programmering i C++, grundkurs

Pascal. Vi har ofta behov av att behandla klumpar av data som i sig är inhomogena men sett över ett helt register har klumparna lika struktur.

Poster... Poster. Poster... Poster...

Omgivningar. Omgivningar är viktiga eftersom de avgör vilka namn som är synliga och därmed dessas innebörd och de värden som är förknippade med dem.

OOP Objekt-orienterad programmering

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

2D1310 Programmeringsteknik Tentamen (1p) lördag 29 april 2000 kl 14-17

TDDC74 Programmering: Abstraktion och modellering Datordugga 2 - exempel

Dugga Datastrukturer (DAT036)

Länkade listor kan ingå som en del av språket, dock ej i C Länkade listor är ett alternativ till:

Grundkurs Programmering

Datalogi, grundkurs 1 Övningsuppgifter i Pascal. Serafim Dahl, Carina Edlund, Kjell Lindqvist m.fl.

Sista delen av kursen

Programspråkslingvistik. Sista delen av kursen. Ett programspråk

Kapitel 6. Hakparenteser fšr att ange index MŒnga všrden av samma typ

TDDC74 Programmering: Abstraktion och modellering Datortenta

Programmering i C++ EDA623 Objektorienterad programutveckling. EDA623 (Föreläsning 5) HT / 33

Innehåll MySQL Intro. Allmänt om Lagrade Procedurer Enkel utformning Skapa en lagrad procedur Använda parameter som indata

Föreläsning 7 Innehåll. Rekursion. Rekursiv problemlösning. Rekursiv problemlösning Mönster för rekursiv algoritm. Rekursion. Rekursivt tänkande:

Pekare och arrayer. Indexering och avreferering

KOMPLETTERANDE HEMTENTAMEN TDDB53

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

TDDC74 Programmering: Abstraktion och modellering Dugga 2, kl 8 10, 3 mars 2016

Några saker till och lite om snabbare sortering

Kodexempel från Programmering 2 Tobias Wrigstad, Ph.D.

Sista delen av kursen

Lösningsförslag till tentamen Datastrukturer, DAT037,

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

Lösningsförslag till tentamen Datastrukturer, DAT037 (DAT036), Tiden det tar att utföra en iteration av loopen är oberoende av värdet på

Datalogi, grundkurs 1

Tentamen DE12, IMIT12, SYST12, ITEK11 (även öppen för övriga)

Poster. Vi har ofta behov av att behandla klumpar av data som i sig är inhomogena men sett över ett helt register har klumparna lika struktur.

Visual Basic, en snabbgenomgång

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

Tentamen Grundläggande programmering

Agenda. Arrayer deklaration, åtkomst Makron Flerdimensionella arrayer Initiering Strängar Funktioner och arrayer. Övningar nu och då

Innehåll. Pekare Exempel

Föreläsning 5: Introduktion av pekare

Programmera i C Varför programmera i C när det finns språk som Simula och Pascal??

Tentamen Programmeringsteknik II Skrivtid: Hjälpmedel: Java-bok (vilken som helst) Skriv läsligt! Använd inte rödpenna!

Tentamen Datastrukturer (DAT036)

SORTERING OCH SÖKNING

Innehåll. Pekare Exempel

Tommy Färnqvist, IDA, Linköpings universitet

Exempelsamling Assemblerprogrammering

TDDC74 - Lektionsmaterial C

Magnus Nielsen, IDA, Linköpings universitet

Börja med att kopiera källkoden till din scheme-katalog (som du skapade i Laboration 1).

Funktionspekare, inledning: funktionsanropsmekanismen. Anrop via pekare

Lösningar till tentauppgifterna sätts ut på kurssidan på nätet idag kl 19. Omtentamen i Programmering C, 5p, fristående, kväll,

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

Föreläsning 4. ADT Kö Kö JCF Kö implementerad med en cirkulär array Kö implementerad med en länkad lista

TDIU01 - Programmering i C++, grundkurs

Föreläsning 6 Datastrukturer (DAT037)

Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Transkript:

Datalogi, grundkurs 1 Lösningsförslag till tentamen 19:e maj 2000

1. a. (4p) I koden finns två fel. i. I den inre funktionen ser vi att argumentet in referensanropas. Det får till följd att listan förstörs, eftersom element efter element tas bort. ii. Funktionsnamnet inner används som en vanlig variabel i satsen inner:= inner + 1; Den rättade koden kan ha följande utseende: FUNCTION count(var lista : list):integer; FUNCTION inner(el : elementpointer):integer; VAR antal : INTEGER; antal:=0; WHILE el<> NIL DO el:=el^.next; antal:=succ(antal); inner:=antal; { inner } count:=inner(lista.first) { count } b. (4p) (define (count lista) (define (inner lista res) (if (null? lista) res (inner (cdr lista) (+ 1 res)))) (inner lista 0)) c. (2p) Nej, samma problem uppstår inte. Det första problemet kan inte uppstå eftersom hela listan kopieras vid anropet. Det andra problemet har vi eliminerat genom att införa en resultatvariabel. 2. a. (2p) Se föreläsningsanteckningarna i kursbunten. b. (2p) Se kurslitteraturen. c. (2p) Se kurslitteraturen. 1

3. (8p) PROGRAM kryptera(hemlis); VAR hemlis, tmp : TEXT; letterset : SET OF Char; c : Char; letterset:=[ A.. Z ]; ReSet(hemlis); ReWrite(tmp); WHILE NOT EoF(hemlis) DO IF hemlis^ IN letterset THEN c:=hemlis^; IF c = Y THEN c:= A ELSE IF c = Z THEN c:= B ELSE c:=succ(succ(c)); Write(tmp,c); END ELSE IF EoLn(hemlis) THEN WriteLn(tmp) ELSE Write(tmp,hemlis^); get(hemlis) ReSet(tmp); ReWrite(hemlis); WHILE NOT EoF(tmp) DO IF EoLn(tmp) THEN WriteLn(hemlis) ELSE Write(hemlis,tmp^); get(tmp); END END. 2

4. a. (2p) TYPE animals = (groda,insekt,liten,stor,resten); aname = ARRAY [1..100] OFCHAR; elementpointer = ^element; element = RECORD name : aname; number : Integer; next : elementpointer wildlife = ARRAY [groda..resten] OFelementPointer; Strukturen som väljs för grupperna är en vektor, detta eftersom man vet att antalet grupper är 5. Strukturen som väljs för sorterna är en länkad lista, detta eftersom antalet sorter kan variera alltså behövs en lista som kan växa dynamiskt. Index till vektorn görs med fördel med hjälp av en egendefinierad typ, i mitt fall kallas den animals. Index avspeglar då mycket väl den verklighet som avbildas. b. (6p) Observera att en ny lista ska skapas med information från de utsorterade elementen, därför kopieras innehållet. FUNCTION allelementsunderlimit(el : elementpointer) : elementpointer; CONST limit = 10; VAR nylista, tmp : elementpointer; nylista:=nil; WHILE (el <> NIL) DO IF (el^.number < limit) THEN New(tmp); tmp^:=el^; tmp^.next:=nylista; nylista:=tmp el:=el^.next; allelementsunderlimit:=nylista; { allelementsunderlimit } {Den nya listan initieras.} {Skapar ett nytt element.} {Kopiering av innehållet.} {Lägger till ett nytt element} {i den nya listan.} 3

c. (3p) Hur man har gjort selektorer, predikat och konstruktorer kan skilja mycket beroende på hur man löst uppgiften. (define (makeinvlist) (list (groda) (insekt) (liten) (stor) (resten))) (define (getfroggroup invlist) (car invlist)) (define (getinsektgroup invlist) (car (cdr invlist))) (define (getlitengroup invlist) (car (cddr invlist))) (define (getstorgroup invlist) (car (cdddr invlist))) (define (getrestengroup invlist) (car (cddddr invlist))) (define (getsortlist group) (cdr group)) (define (emptygroup? sortlist) (null? sortlist)) (define (firstsort sortlist) (car sortlist)) (define (restsortlist sortlist) (cdr sortlist)) (define (sortname sort) (car sort)) d. (7p) (define (getinfo name invlist) (cond ((member? name (getsortlist (getfroggroup invlist))) (list groda (pickoutsort name (getsortlist (getfroggroup invlist))))) ((member? name (getsortlist (getinsektgroup invlist))) (list insekt (pickoutsort name (getsortlist (getinsektgroup invlist))))) ((member? name (getsortlist (getlitengroup invlist))) (list liten (pickoutsort name (getsortlist (getlitengroup invlist))))) ((member? name (getsortlist (getstorgroup invlist))) (list stor (pickoutsort name (getsortlist (getstorgroup invlist))))) ((member? name (getsortlist (getrestengroup invlist))) (list resten (pickoutsort name (getsortlist (getrestengroup invlist))))) (else ()))) 4

(define (member? name sortlist) (cond ((emptygroup? sortlist) #f) ((eq? name (sortname (firstsort sortlist))) #t) (else (member? name (restsortlist sortlist))))) (define (pickoutsort name sortlist) (if (eq? name (sortname (firstsort sortlist))) (firstsort sortlist) (pickoutsort name (restsortlist sortlist)))) 5