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

Storlek: px
Starta visningen från sidan:

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

Transkript

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

2

3 Datalogi, grundkurs 1, hösten Skriv en funktion som återsänder ett heltal som läses från terminalen. 2. Skriv ett program som läser ett tresiffrigt tal, beräknar och skriver ut siffersumman. Exempelvis: Skriv in ett tresiffrigt tal: 123 Siffersumman blir: 6 3. Skriv ett program som läser utgångshastighet v och kastvinkel α samt beräknar och skriver ut kasthöjdhoch kastlängdd. Ledning: d = v2 g sin2α och h = v2 2g sin2 α. 4. Skriv ett program som omvandlar kartesiska koordinater för en punkt i ett koordinatsystem till polära koordinater. Ledning: x = rcosθ samt y = rsinθ där r är punktens avstånd från origo ochθ är vinkeln som visar riktningen från origo till punkten. 5. Body Mass Index, BMI, används för att avgöra om personer är normalviktiga.bmi = vikt/längd 2 där vikten är i kg och längden i m. Normalviktiga har 20 BMI 25. Skriv ett program som frågar efter vikt och längd varefterbmi skrivs ut. 6. Skriv ett program som läser två tal och en operator och beräknar värdet av postfixuttrycket. 7. Som föregående uppgift men ett godtyckligt postfixuttryck. Du har tillgång till en funktion som tittar på nästa tecken utan att läsa detta: FUNCTION peak: Char; 8. Rita syntaxdiagram för att beskriva aritmetiska uttryck. Ett aritmetiskt uttryck är t.ex. följande: 3, x+3, (x*3), (x-3)/4 9. Skriv funktioner som returnerar a. det största av två heltal b. det minsta av två heltal 10. Skriv ett program som för ett givet n beräknar och skriver ut värdet av 1+1/2+ +1/n. 11. Skriv ett program för summation av n st termer som beräknas med hjälp av en funktion som är parameter till summationsfunktionen. 12. Skriv ett program som med hjälp av en funktion med lokala funktioner låter en användare, maximalt tre gånger, ange ett hemligt lösenord omfattande fyra siffror. (Det hemliga lösenordet är låst i programmet)

4 2 Övningsuppgifter Pascal 13. I följande två funktioner kan fel uppträda i vissa fall. Skriv om funktionerna så att felen upptäcks. Resonera om olika metoder för att indikera felen. a. FUNCTION mean(x, y: Real): Real; mean := sqrt(x * y) b. FUNCTION tan(x: Real): Real; tan := sin(x) / cos(x) 14. Skriv om de två funktionerna nedan så att du använder namngivna konstanter och ge samtidigt variabler och funktioner bättre namn. a. formeln för en cirkels area: FUNCTION a(r: Real): Real; a := * sqr(r) b. beräkning av månadsränta på ett sparkonto där räntan blir högre om tillgodohavandet överstiger kr: FUNCTION i(x: Real): Real; IF x <= THEN i := * x / 12 ELSE i := * x / I ett programmeringsprojekt för hantering av kalendrar definieras en dags absoluta dagnummer som antalet dagar från 1 januari år noll till den aktuella dagen. På många smådatorer är MaxInt= Vad kan hända om vi inte tar hänsyn till detta? Hur skall man lösa problemet? Ge gärna flera förslag. 16. Finn lämpliga black-box-tester för följande: a. En funktion som återsänder det största av sina tre flyttalsargument. b. En funktion som återsänder kvadratroten av sitt enda flyttalsargument. c. En funktion som återsänder den minsta gemensamma multipeln för sina två heltalsargument. Dessa måste båda två vara positiva. Den minsta gemensamma multipeln,mgm, för två talxochy är det minsta tal där bådexochy är faktorer. Ex: MGM för 4 och 6 är 12, för 3 och 9 är 9 samt för 5 och 7 är 35.

5 Datalogi, grundkurs 1, hösten Finn en lämplig glass-box-test för: IF a < b THEN IF c > d THEN x := 1 ELSE IF c = d THEN x := 2 ELSE x := 3 ELSE IF a = b THEN x := 4 ELSE IF c = d THEN x := 5 ELSE x := 6; 18. En mängd är definierad som TYPE IntSet = SET OF ; Skriv en procedur i Pascal som skriver ut alla tal i en mängd av denna typ. 19. Antag att vi definierat TYPE nodepointer = ˆnode; där node redan tidigare definierats (på något sätt) och sedan givit deklarationerna VAR p, q, r: nodepointer; x, y, z: node; a. Ange för varje sats nedan vad den har för effekt om den är korrekt och varför den inte fungerar om den inte är korrekt. i. New(p) vi. r := NIL xi. Dispose(r) ii. New(qˆ) vii. z := pˆ xii. x := New(p) iii. New(x) viii. p := ˆx xiii. qˆ := NIL iv. p := r ix. Dispose(y) xiv. pˆ := xˆ v. q := y x. Dispose(pˆ) xv. z := NIL b. Skriv ett Pascal-underprogram som byter innehållet i de variabler som p och q pekar på, så att innehållet i den variabel som p pekar på blivit vad som fanns i variabeln som q pekar på och vice versa. c. Skriv ett Pascal-underprogram som skapar en ny variabel med samma innehåll som den nod som q pekar på och sätter p att peka på den nya noden. 20. Antag att vi har en struktur som kan uppfattas som enligt bilden nedan, med två pekarvariabler p och q samt två noder med ett heltalsfält som heter value och ett pekarfält som heter next. 6 4 NIL p q a. Avgör för varje sats nedan om satsen är sann, falsk eller nonsens och förklara varför: i. pˆ.next = q vii. pˆ = 6 ii. qˆ.next = NIL viii. q = 4 iii. qˆ = 4 ix. qˆ.value = 4 iv. p < q x. pˆ.next = 4 v. pˆ.value < qˆ.value xi. qˆ = NIL vi. pˆ < qˆ xii. pˆ = qˆ

6 4 Övningsuppgifter Pascal b. Utgå från bilden ovan och rita situationen som uppstår då följande utförs (utgå varje gång från ursprungsbilden ovan, d.v.s. betrakta inte satserna som en sekvens). Vissa satser innebär att fel uppstår, förklara då varför. i. p := pˆ.next vii. p := q ii. qˆ.next := p viii. pˆ.next := p iii. pˆ.value := 5 ix. p : = NIL iv. pˆ.value := qˆ.value x. pˆ.next := NIL v. pˆ.next := qˆ.next xi. pˆ.nextˆ.next := p vi. pˆ := qˆ xii. qˆ.nextˆ.next := q c. Skriv för varje bild nedan en Pascalsats som utför den förändring som indikeras i de fyra bilderna nedan i. 6 4 NIL 6 4 ii. p 6 4 NIL 6 4 p NIL iii. p q p q 6 4 NIL 6 4 NIL iv. p p q NIL p q NIL p q 21. Skriv en funktion för att kontrollera a. om ett tecken är en siffra. b. om ett tecken är en bokstav.

7 Datalogi, grundkurs 1, hösten Skriv deklarationer för att representera komplexa tal samt en funktion för att addera två komplexa tal. 23. Studera noga följande definitioner av funktions- och procedurhuvuden med preoch post-villkor och dra slutsatser om den interna strukturen hos listor som kan manipuleras med dem: FUNCTION createlist : listpointer pre: inga. post: en lista har skapats så att den är tom och en pekare till listan returnerats. FUNCTION emptylist(l: listpointer): Boolean pre: listan som L pekar på existerar. post: returnerar True om det inte finns element i listan, annars False. FUNCTION fulllist(l: listpointer): Boolean pre: listan som L pekar på existerar. post: returnerar False om det finns utrymme för fler element i listan, annars True. FUNCTION listsize(l: listpointer): Integer pre: Listan som L pekar på existerar. post: returnerar antalet element i listan L. FUNCTION atfirst(l: listpointer): Boolean pre: Listan som L pekar på existerar. post: returnerar True om den interna positionsindikatorn pekar på L s första element. FUNCTION atlast(l: listpointer): Boolean pre: Listan som L pekar på existerar. post: returnerar True om den interna positionsindikatorn pekar på L s sista element. FUNCTION onlist(l: listpointer): Boolean pre: Listan som L pekar på existerar. post: Returnerar True om den interna positionsindikatorn hos L pekar på ett element i L. PROCEDURE setfirst(l: listpointer) pre: Listan som L pekar på existerar. post: om L är tom pekar den interna positionsindikatorn inte ut något element, men om L inte är tom pekar den interna positionsindikatorn ut dess första element.

8 6 Övningsuppgifter Pascal PROCEDURE setlast(l: listpointer) pre: Listan som L pekar på existerar. post: om L är tom pekar den interna positionsindikatorn inte ut något element, men om L inte är tom pekar den interna positionsindikatorn ut dess sista element. PROCEDURE setnext(l: listpointer) pre: Listan som L pekar på existerar, är inte tom och dess interna positionsindikator pekar på ett av listans element (onlist(l) = True). post: Listans interna positionsindikator har avancerat ett steg. Om den stod på sista elementet i listan före anropet kommer onlist(l) ge False. PROCEDURE setprev (L: listpointer) pre: Listan som L pekar på existerar, är inte tom och dess interna positionsindikator pekar på ett av listans element (onlist(l) = True). post: Listans interna positionsindikator har backat ett steg. Om den stod på första elementet i listan före anropet kommer onlist(l) ge False. PROCEDURE setposition(target:integer; L:listPointer) pre: Listan som L pekar på existerar och target är ett positivt heltal. post: Om listan innehåller minst target st element kommer listans interna positionsindikator peka på element nr target. PROCEDURE removefromlist(l: listpointer) pre: Listan som L pekar på existerar, är inte tom och dess positionsindikator pekar på ett element i listan. post: Det element som positionsindikatorn pekade på har tagits ut ur listan och positionspekaren pekar på det efterföljande element (har eventuellt hamnat utanför listan). PROCEDURE insertafter(e: elementpointer; L:listPointer) pre: Listan som L pekar på existerar, är inte full och e pekar på ett listelement som inte står i någon lista. Om listan inte är tom pekar positionsindikatorn på ett av listans element. post: e har satts in på platsen efter positionsindiktatorn. Om listan var tom har e blivit dess enda element och positionsindikatorn pekar på e.

9 Datalogi, grundkurs 1, hösten PROCEDURE insertbefore(e: elementpointer; L:listPointer) pre: Listan som L pekar på existerar, är inte full och e pekar på ett listelement som inte står i någon lista. Om listan inte är tom pekar positionsindikatorn på ett av listans element. post: e har satts in på platsen före positionsindikatorn. Om listan var tom har e blivit dess enda element och positionsindikatorn pekar på e. PROCEDURE replace(e: elementpointer; L: listpointer) pre: Listan som L pekar på existerar och e pekar på ett listelement som inte står i någon lista. Listan är inte tom och positionsindikatorn pekar på ett av listans element. post: e har ersatt elementet på platsen som indikerades av positionsindiktatorn. FUNCTION retrieve(l: listpointer): elementpointer pre: Listan som L pekar på existerar. post: Om positionsindikatorn pekar på ett av listans element har en pekare till elementet på den indikerade positionen returnerats annars returnerades NIL. Många fler operationer kan behövas beroende på användningsområde och å andra sidan kan man klara sig med färre i vissa användningar. På nästa sida ges två exempel på användning: PROCEDURE dotolist(procedure todo(e: elementpointer); L: listpointer); (* pre: Listan som L pekar på existerar. * post: Proceduren todo har applicerats på alla * element i L. *) PROCEDURE apply; VAR e: elementpointer; IF onlist(l) THEN e := retrieve(l); todo(e); setnext(l); apply END setfirst(l); apply

10 8 Övningsuppgifter Pascal PROCEDURE interchange(e1,e2:integer; L:listPointer); (* pre: Listan som L pekar på existerar, e1 < e * post: om element finns på positionerna e1 och e2 * har de bytt plats. *) VAR el1, el2: elementpointer; setposition(e1, L); IF onlist(l) THEN setposition(e2, L); IF onlist(l) THEN el2 := retrieve(l); removefromlist(l); setposition(e1,l); el1 := retrieve(l); removefromlist(l); setposition(e1,l); insertbefore(el2,l); setposition(e2-1, L); insertafter(el1, L) END END Använd definitionerna ovan för att skriva underprogram för att utföra operationerna nedan. Ange noga pre- och post-villkor för varje underprogram. a. Sätt in ett element först i en lista. b. Sätt in ett element sist i en lista. c. Ta bort det första elementet i en lista. d. Ta bort det sista elementet i en lista. e. Sätt en listas interna positionsindikator på listans mittersta element. f. Skapa en kopia av en lista, så att den nya listans element är kopior av elementen i den gamla listan. g. Kopiera en listas alla element och sätt in dem sist i en annan lista med bibehållen ordning på elementen. h. Kopiera en listas alla element och sätt in dem först i en annan lista med bibehållen ordning på elementen i. Reversera ordningen i en lista. j. Dela en lista i två, så att vartannat element hamnar i den ena listan och vartannat i den andra listan. Den ursprungliga listan skall vara tom efter operationen. k. Implementera alla underprogrammen enligt definitionerna, med följande extra definitioner som grund:

11 Datalogi, grundkurs 1, hösten TYPE elementpointer = ^element; element = RECORD value: { något värde av någon typ }; next: elementpointer; listpointer = ^list; list = RECORD first: elementpointer; cursor: elementpointer 24. Givet följande definitioner: TYPE elementpointer = ^element; element = RECORD value: (* något värde av någon typ *); next: elementpointer; stackpointer = ^stack; stack = RECORD first: elementpointer; a. Skriv ett underprogram createstack, som skapar en tom stack. b. Skriv ett underprogram emptystack, som kontrollerar om en stack är tom. c. Skriv ett underprogram push, som lägger ett nytt element på toppen av en stack. d. Skriv ett underprogram pop, som tar bort det översta elementet från en stack och återsänder det värde som lagrades i elementet. e. När man tar bort ett element från en länkad stack måste man testa om stacken är tom, men man behöver inte testa om den är full innan man lägger till ett element varför? f. Skriv en funktion fullstack ändå. g. Kan man i alla fall tvingas ha en funktion fullstack (Motivera noga)? h. Skriv ett underprogram som går igenom en stack och räknar hur många element det finns i stacken. i. Man kan undvika att gå igenom hela stacken varje gång man vill veta antalet element genom att ändra i definitionen: stack = RECORD top: elementpointer; size: Integer; Vad måste man ändra - i vilka underprogram - för att det ska fungera? Vilket är bäst? Behöver man veta storleken?

12 10 Övningsuppgifter Pascal 25. Givet följande definitioner: TYPE elementpointer = ^element; element = RECORD value: (* något värde av någon typ *); next: elementpointer; queuepointer = ^queue; queue = RECORD first, last: elementpointer; a. Skriv createqueue, som skapar en tom kö. b. SkrivemptyQueue, som kontrollerar om en kö är tom. c. Skriv enqueue, som lägger ett nytt element sist i en kö. d. Skriv retrieve, som återsänder värdet i det första elementet i en kö. e. Skriv dequeue, som tar bort det första elementet från en kön. f. Skriv queuecardinal, som går igenom en kö och räknar hur många element det finns i kön. g. Skriv clearqueue, som rensar en kö så att den blir tom. 26. Givet följande definitioner: TYPE elementpointer = ^element; element = RECORD prev, next: elementpointer listpointer = ^list; list = RECORD first, last: elementpointer; Komplettera till en abstrakt datayp så att man kan skapa en tom lista, kontrollera om en lista är tom, sätta in element först och sist i en lista, före och efter ett element till vilket man har en referens (om det står i någon lista), samt slutligen tömma listan. 27. Skriv deklarationer för att representera enkla lisputtryck. Uttrycken innehåller bara heltal, operatorerna +, - och * samt ( och ). 28. Skriv funktioner för att läsa in lisputtryck och för att evaluera dessa. 29. Mätvärden av reell typ finns lagrade på en textfil och man vill beräkna medelvärdet. Svårigheten är att veta när sista värdet har lästs eftersom det finns ett returslag efter sista talet. Hur löser vi detta problem? 30. Skriv ett program som läser heltal från tangentbordet och lagrar dem i en FILE OF Integer. Använd filslutsmarkering som slut på inmatningen. 31. Skriv ett program som från en FILE OF Integer läser heltal och skriver alla talen på skärmen.

13 Datalogi, grundkurs 1, hösten I en textfil finns tal instoppade i texten. Skriv ett program som läser filen och beräknar summan av alla tal. 33. I en faktura finns i texten par omfattande antal och pris. Skriv ett program som beräknar totalsumman. 34. Skriv en Pascalprocedur som tar en filparameter, och avancerar filens positionspekare så att den pekar på nästa tecken som kan börja ett korrekt tal, om det finns något sådant tecken, eller på filslutet annars. 35. Skriv ett Pascalprogram som läser en textfil som innehåller ett Pascalprogram och räknar antalet tilldelningssatser i programmet. 36. Skriv ett pascalprogram som läser en textfil och som räknar antalet förekomster av varje tecken i programmet. 37. Givet följande definitioner: CONST maxindex = 100; TYPE element = RECORD value: { något värde av någon typ } { eventuella andra fält } storage = ARRAY [1..maxIndex] of element; queuepointer = ^queue; queue = RECORD entry: storage; first, last: 0..maxIndex; a. Implementera den abstrakta datatypen kö, med funktionalitet som enligt uppgift 25, och använd den enkla men föga effektiva idén att första elementet alltid är i första positionen i den kontinuerliga listan. b. Använd i stället som implementationsidé att listan entry betraktas som en cirkulär lista, d v s att element 1 följer på det sista elementet. Man får olika implementationsproblem i de två olika fallen. Jämför! 38. Ett palindrom är en teckensträng som läses likadant även om man vänder på den, d v s att första och sista bokstäverna är lika, andra och näst sista är lika o s v. I ett äkta palindrom kommer även ordmellanrum på samma ställen om man vänder på meningen, medan man i ett oäkta palidrom tillåter likhet först då mellanslagen rensats bort. Ex på äkta palindrom: alla, adolf i paris rapar sirap i floda. Ex på oäkta palindrom: Ni talar bra latin. a. Skriv en funktion som kontrollerar om en teckensträng lagrat i en vektor är ett äkta palindrom. b. Skriv en funktion som kontrollerar om en teckensträng lagrat i en vektor är ett oäkta palindrom.

14 12 Övningsuppgifter Pascal 39. Implementera den abstrakta datatypen lista baserad på definitionerna nedan. Funktionalitet som enligt definitionerna i uppgift 23: CONST maxindex = 100; TYPE element = RECORD value: { något värde av någon typ } { eventuella andra fält } storage = ARRAY [1..maxIndex] of element; listpointer = ^list; list = RECORD entry: storage; cursor: 0..maxIndex; 40. I en kontinuerlig lista ligger tal, med maximalt 50 siffror, lagrade med en siffra i varje komponent. Skriv deklarationer för att representera talen samt en funktion som adderar två sådana tal. 41. Som ovan men med n siffror i varje komponent. 42. Med maximinormen för en matris av positiva tal menas den största radsumman. Skriv en funktion som beräknar maximinormen för en matris. 43. Skriv en funktion för att transponera en matris. (Hur måste matrisen se ut för att vi skall kunna transponera den?) 44. Gå noga igenom sorteringsmetoderna nedan. OBS! att plats 0 (noll) i listorna används till mellanlagring vid byte av element. PROCEDURE selectionsort(var v:vector; first, last: index); VAR i, j, minpos: index; FOR i := first TO last - 1 DO minpos := i; FOR j := i TO last DO IF v[minpos] > v[j] THEN minpos := j; v[0] := v[i]; v[i] := v[minpos]; v[minpos] := v[0]

15 Datalogi, grundkurs 1, hösten PROCEDURE insertionsort(var v:vector; first, last: Index); VAR next, pos: index; FOR next := first + 1 TO last DO v[0] := v[next]; pos := next; WHILE v[pos - 1] > v[0] DO v[pos] := v[pos - 1]; pos := Pred(pos) v[pos] := v[0] END PROCEDURE exchangesort(var v:vector; first, last: Index); VAR i, j: index; FOR i := last DOWNTO first + 1 DO FOR j := first TO i - 1 DO IF v[j] > v[succ(j)] THEN v[0] := v[j]; v[j] := v[succ(j)]; v[succ(j)] := v[0] END END Kontrollera för hand hur följande skulle sorteras enligt alla tre algoritmerna: a. talen 26, 33, 35, 29, 19, 12, 22 i stigande ordning b. talen 12, 19, 33, 26, 29, 35, 22 i stigande ordning (samma tal men annan ordning) c. namnen Tim, Dot, Eva, Roy, Tom, Kim, Guy, Amy, Jon, Ann, Jim, Kaj, Ron och Jan i alfabetisk ordning (antag att > klarar jämförelsen). 45. Skriv om den abstrakta datatypen list enligt uppgift 39 så att rekursion inte används. 46. Eliminera rekursion där det går i följande: a. FUNCTION f(n: Integer): Integer; IF n <= 0 THEN f := 0 ELSE IF Odd(n) THEN f := 1 + f(n - 1) ELSE f := f(n DIV 5)

16 14 Övningsuppgifter Pascal b. FUNCTION f(n: Integer): Integer; IF n <= 1 THEN f := n IF Odd(n) THEN f := f((n + 1) DIV 2) + f((n - 1) DIV 2) ELSE f := n + f(n DIV 2) c. FUNCTION gcd(a, b: Integer): Integer; IF b = 0 THEN gcd := a ELSE gcd := gcd(b, a MOD b) d. FUNCTION b(key: keytype; VAR v: vector; a, b: Index): elementpointer; VAR m: Index; m := (a + b) MOD 2; IF v[m] = key THEN b := v[m] ELSE IF v[m] < key THEN b := b(key, v, m + 1, b) ELSE b := b(key, v, a, m - 1) e. FUNCTION p(s: string; a, b: Index): Boolean; IF a > b THEN p := True ELSE p := s[a] = s[b] AND p(s, a + 1, b - 1)) 47. Skriv en listhanterare samt postdeklarationer för att hantera punkter i både planet och rymden. 48. Skriv om uppgifterna 27 och 28 med varianta poster.

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

Datalogi, grundkurs 1. Lösningsförslag till tentamen Datalogi, grundkurs 1 Lösningsförslag till tentamen 6 maj 2000 1. För att proceduren sortera ska fungera som tänkt kan den se ut på följande sätt: const min = 1; max = 3; type tal = integer; index = min..max;

Läs mer

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

Kontinuerliga listor. Fält (listor) Kontinuerliga listor... Kontinuerliga listor... Fält (listor) Kontinuerliga listor En lista av värden 2 3 4 5 6 7 8 9... kan naturligtvis representeras av tal1, tal2, tal3,... men det finns då ingen möjlighet att välja element utan att explicit ange

Läs mer

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

Ordnad lista. Listor... Ordnad lista... Ordnad lista typer Listor... Ordnad lista Hur blir det om man skall sätta in och ta ut mitt i listan? Hur blir det om vi förutom referenser framåt också har referenser bakåt? Kan vi tänka oss annan organisation än linjära

Läs mer

Sökning och sortering

Sökning och sortering Sökning och sortering Att söka efter data man lagrat undan för senare användning är vanligt Egentligen har man ingen annan anledning för att lagra undan data Har man mycket data och många sökningar måste

Läs mer

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. Sökning och sortering - definitioner. Sökning i oordnad lista. Sökning med vaktpost i oordnad lista Sökning och sortering Sökning och sortering - definitioner Att söka efter data man lagrat undan för senare användning är vanligt Egentligen har man ingen annan anledning för att lagra undan data Har man

Läs mer

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.

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. 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. (define (sqrroot c) (define (fixpoint guess c eps) (define

Läs mer

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

Funktioner, Procedurer och Parametrar. Funktioner, Procedurer och Parametrar... Funktioner, Procedurer och Parametrar procedurspecifikation Funktioner, Procedurer och Parametrar I delar vi upp underprogram i två grupper : Funktioner: lämnar alltid ett värde som resultat Funktionsnamnet får ett värde i funktionen genom: funktionsnamn := expr;

Läs mer

Föreläsning 6: Introduktion av listor

Föreläsning 6: Introduktion av listor Föreläsning 6: Introduktion av listor Med hjälp av pekare kan man bygga upp datastrukturer på olika sätt. Bland annat kan man bygga upp listor bestående av någon typ av data. Begreppet lista bör förklaras.

Läs mer

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

Föreläsning 4. Kö Implementerad med array Implementerad med länkad lista Djup kontra bredd Bredden först mha kö

Föreläsning 4. Kö Implementerad med array Implementerad med länkad lista Djup kontra bredd Bredden först mha kö Föreläsning 4 Kö Implementerad med array Implementerad med länkad lista Djup kontra bredd Bredden först mha kö Kö (ADT) En kö fungerar som en kö. Man fyller på den längst bak och tömmer den längst fram

Läs mer

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

GOTO och lägen. Några saker till och lite om snabbare sortering. GOTO och lägen (3) GOTO och lägen (2) Några saker till och lite om snabbare sortering GOTO och lägen GOTO hemskt eller ett måste? CASE enkla val över diskreta värdemängder Snabb sortering principer Snabb sortering i Scheme och Pascal QuickSort

Läs mer

Några saker till och lite om snabbare sortering

Några saker till och lite om snabbare sortering Några saker till och lite om snabbare sortering GOTO hemskt eller ett måste? CASE enkla val över diskreta värdemängder Snabb sortering principer Snabb sortering i Scheme och Pascal QuickSort (dela städat

Läs mer

Pascal. reserverade ord fördefinierade funktioner och procedurer egendefinierade funktioner, procedurer och objekt

Pascal. reserverade ord fördefinierade funktioner och procedurer egendefinierade funktioner, procedurer och objekt Programspråk uppkallat efter Blaise. Skapat av Nicolaus Wirt. Avsett för undervisning för att lära ut typbegreppet och styrstrukturer. Har fått stor spridning p.g.a. enkelhet och att kompilatorn varken

Läs mer

Pascal... Pascal. Pascal... Pascal...

Pascal... Pascal. Pascal... Pascal... ... Programspråk uppkallat efter Blaise. Skapat av Nicolaus Wirt. Avsett för undervisning för att lära ut typbegreppet och styrstrukturer. Har fått stor spridning p.g.a. enkelhet och att kompilatorn varken

Läs mer

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.

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. 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. TYPE car = RECORD model : 1900..2000; ndoors : 2..5; weight

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

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

ADT Kö. Seminarium 4 Köer och Stackar Innehåll. Operationer. ADT Stack. Definition. Definition

ADT Kö. Seminarium 4 Köer och Stackar Innehåll. Operationer. ADT Stack. Definition. Definition Seminarium 4 Köer och Stackar Innehåll ADT:erna Kö och Stack Definitioner Operationer Exempel på användning Givna klasser i Java Interfacet Queue Klassen Stack Klassen LinkedList Klassen PriorityQueue

Läs mer

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU På denna föreläsning: Abstrakta datatyper Listor Stackar

Läs mer

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU På denna föreläsning: Abstrakta datatyper Listor Stackar

Läs mer

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

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

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

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

F12 - Collections. ID1004 Objektorienterad programmering Fredrik Kilander

F12 - Collections. ID1004 Objektorienterad programmering Fredrik Kilander F12 - Collections ID1004 Objektorienterad programmering Fredrik Kilander fki@kth.se Collections (samlingar) En collection är ett objekt som fungerar som en samling av andra objekt En collection erbjuder

Läs mer

Abstrakta datatyper. Primitiva vektorer. Deklarera en vektor

Abstrakta datatyper. Primitiva vektorer. Deklarera en vektor Abstrakta datatyper 1 Primitiva vektorer Vektorer kan skapas av primitiva datatyper, objektreferenser eller andra vektorer. Vektorer indexeras liksom i C från 0. För att referera en vektor används hakparenteser.

Läs mer

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.

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 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. TYPE car = RECORD model : 1900..2000; ndoors : 2..5; weight

Läs mer

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

Poster... Poster. Poster... Poster... 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. TYPE car = RECORD model : 1900..2000; ndoors : 2..5; weight

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

Länkade strukturer. (del 2)

Länkade strukturer. (del 2) Länkade strukturer (del 2) Översikt Abstraktion Dataabstraktion Inkapsling Gränssnitt (Interface) Abstrakta datatyper (ADT) Programmering tillämpningar och datastrukturer 2 Abstraktion Procedurell abstraktion

Läs mer

Datastrukturer och algoritmer

Datastrukturer och algoritmer Innehåll Datastrukturer och algoritmer Föreläsning 2 Fält Specifikation, Konstruktion och Specifikation, Konstruktion Dynamiska resurser Länk Länkade celler 23 24 Konstruktion av Fält Fysisk datatyp i

Läs mer

Några fakta om Standard Pascal. Serafim Dahl, Carina Edlund, m.fl.

Några fakta om Standard Pascal. Serafim Dahl, Carina Edlund, m.fl. Några fakta om Standard Pascal Serafim Dahl Carina Edlund m.fl. Hösten 2008 Några fakta om Standard Pascal 1 Fördefinierade procedurer och funktioner Typer som anges i denna sammanställning hänför till

Läs mer

Datastrukturer och algoritmer

Datastrukturer och algoritmer Innehåll Datastrukturer och algoritmer Föreläsning 2 Fält Specifikation, Konstruktion och Specifikation, Konstruktion Dynamiska resurser Länk Länkade celler 25 26 Fält Modell Schackbräde Organisation n-dimensionellt

Läs mer

Föreläsning 11. ADT:er och datastrukturer

Föreläsning 11. ADT:er och datastrukturer Föreläsning 11 ADT:er och datastrukturer ADT:er och datastrukturer Dessa två begrepp är kopplade till varandra men de står för olika saker. En ADT (abstrakt datatyp) är just abstrakt och är inte kopplad

Läs mer

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

Datalogi, grundkurs 1 Övningsuppgifter i Scheme. Serafim Dahl, Carina Edlund, m.fl. Datalogi, grundkurs 1 Övningsuppgifter i Scheme Serafim Dahl, Carina Edlund, m.fl. Hösten 2004 Datalogi, grundkurs 1, hösten 2002 1 1. Vad blir det för resultat vid beräkningen av följande Scheme-uttryck.

Läs mer

Deklarationer/definitioner/specifikationer

Deklarationer/definitioner/specifikationer Deklarationer/definitioner/specifikationer Konstantdefinitioner innebär att ett namn binds och sätts att referera till ett värde som beräknas vid kompileringen/interpreteringen och som under programmets

Läs mer

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

2D1310 Programmeringsteknik Tentamen (1p) lördag 29 april 2000 kl 14-17 2D1310 Programmeringsteknik Tentamen (1p) lördag 29 april 2000 kl 14-17 Hjälpmedel: En Pascalbok. För betyget godkänd krävs att a- eller b-delen av varje fråga (uppgift 1-6) är rätt besvarad. Ett mindre

Läs mer

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

Programmera i C Varför programmera i C när det finns språk som Simula och Pascal?? Programmera i C Varför programmera i C när det finns språk som Simula och Pascal?? C är ett språk på relativt låg nivå vilket gör det möjligt att konstruera effektiva kompilatorer, samt att komma nära

Läs mer

Python. Vi har ofta behov av att behandla datastrukturer på ett enhetligt sätt så att vi kan göra samma sak i flera olika program.

Python. Vi har ofta behov av att behandla datastrukturer på ett enhetligt sätt så att vi kan göra samma sak i flera olika program. Moduler Vi har ofta behov av att behandla datastrukturer på ett enhetligt sätt så att vi kan göra samma sak i flera olika program. Vi har också ofta behov av att skapa överblick i våra program. Som ett

Läs mer

Datastrukturer. föreläsning 3. Stacks 1

Datastrukturer. föreläsning 3. Stacks 1 Datastrukturer föreläsning 3 Stacks 1 Abstrakta datatyper Stackar - stacks Köer - queues Dubbeländade köer - deques Vektorer vectors (array lists) All är listor men ger tillgång till olika operationer

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

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

Lösningsförslag: Instuderingsfrågor, del D Uppgift 1. Objektorienterad programmering, Z1 Lösningsförslag: Instuderingsfrågor, del D a) Inget fält behövs. Man kan läsa in ett tal i taget och addera dessa till summan. b) Här behövs ett fält. c) Här

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

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

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

Datalogi, grundkurs 1. Lösningsförslag till tentamen Datalogi, grundkurs 1 Lösningsförslag till tentamen 10 december 2008 1. a. Man testar med typiska värden, gränsvärden och värden utanför specificerad indatavärdemängd. Helst med alla permutationer av

Läs mer

MATLAB. Python. Det finns flera andra program som liknar MATLAB. Sage, Octave, Maple och...

MATLAB. Python. Det finns flera andra program som liknar MATLAB. Sage, Octave, Maple och... Allt du behöver veta om MATLAB: Industristandard för numeriska beräkningar och simulationer. Används som ett steg i utvecklingen (rapid prototyping) Har ett syntax Ett teleskopord för «matrix laboratory»

Läs mer

Datastrukturer och algoritmer. Föreläsning 4 Test, Stack och Kö

Datastrukturer och algoritmer. Föreläsning 4 Test, Stack och Kö Datastrukturer och algoritmer Föreläsning 4 Test, Stack och Kö 1 Innehåll Test Datatyperna Stack och kö Specifikation och Gränssnitt Konstruktion Tillämpning 2 Testa VIKTIGT! Test går att göra under många

Läs mer

Stack, specifikation. Stack och Kö. Y s t M A p. Stack. <== > Y s t M A p <== > Prioritetskö

Stack, specifikation. Stack och Kö. Y s t M A p. Stack. <== > Y s t M A p <== > Prioritetskö Stack < == > Stack och Kö Y s t M A p 1 Stack, specifikation En lista med element av typen T. Samtliga operationer utförs endast på listans ena ände, top. Stack() post: stacken är tom 2 Kö == > Y s t M

Läs mer

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod Föreläsning 3-4 Innehåll Diskutera Vad gör programmet programmet? Föreslå vilka satser vi kan bryta ut till en egen metod. Skriva egna metoder Logiska uttryck Algoritm för att beräkna min och max Vektorer

Läs mer

Föreläsning 3-4 Innehåll

Föreläsning 3-4 Innehåll Föreläsning 3-4 Innehåll Skriva egna metoder Logiska uttryck Algoritm för att beräkna min och max Vektorer Datavetenskap (LTH) Föreläsning 3-4 HT 2017 1 / 36 Diskutera Vad gör programmet programmet? Föreslå

Läs mer

Föreläsning 3: Abstrakta datastrukturer, kö, stack, lista

Föreläsning 3: Abstrakta datastrukturer, kö, stack, lista Föreläsning 3: Abstrakta datastrukturer, kö, stack, lista Abstrakt stack Abstrakt kö Länkade listor Abstrakta datatyper Det är ofta praktiskt att beskriva vilka operationer man vill kunna göra på sina

Läs mer

Lite om reella tal. Programmering. I java. Om operatorers associativitet och prioritet

Lite om reella tal. Programmering. I java. Om operatorers associativitet och prioritet Programmering hh.se/db2004 Föreläsning 4: Fält samt Input/Output Verónica Gaspes www2.hh.se/staff/vero www2.hh.se/staff/vero/programmering Lite om reella tal Vad kan man göra med reella tal? Utöver de

Läs mer

Tentamen Grundläggande programmering

Tentamen Grundläggande programmering Akademin för Innovation Design och Teknik Tentamen Grundläggande programmering Kurskod: DVA103 Datum 2012-06-11 Tid 14.10 16.30 Examinator: Lars Asplund Maxpoäng: 48 Betygsgränser: Betyg 3: 20 Betyg 4:

Läs mer

Instuderingsfrågor, del D

Instuderingsfrågor, del D Uppgift 1. Instuderingsfrågor, del D Objektorienterad programmering, Z1 I vilka av nedanstående problem behöver man använda sig av fält för att få en elegant lösning? I vilka problem är det är det onödigt/olämpligt

Läs mer

Översikt över Visual Basic

Översikt över Visual Basic Översikt över Visual Basic Om denna översikt Denna översikt ger en kort introduktion till de viktigaste delarna i programspråket Visual Basic 6.0. På alla ställen där det beskrivs hur man skriver kod gäller

Läs mer

EDAA20 Föreläsning Klassen ArrayList. Viktiga operationer på ArrayList. Generisk klass

EDAA20 Föreläsning Klassen ArrayList. Viktiga operationer på ArrayList. Generisk klass EDAA20 Föreläsning 11-12 Klassen ArrayList Klassen ArrayList Skriva program som läser data från en textfil och skriver data till en textfil Repetition inför delmålskontroll 2 är en standardklass (i paketet

Läs mer

Tentamen i Algoritmer & Datastrukturer i Java

Tentamen i Algoritmer & Datastrukturer i Java Tentamen i Algoritmer & Datastrukturer i Java Hjälpmedel: Skrivhjälpmedel, miniräknare. Ort / Datum: Halmstad / 2010-03-16 Skrivtid: 4 timmar Kontaktperson: Nicolina Månsson Poäng / Betyg: Max 44 poäng

Läs mer

Komponentvisa operationer,.-notation Multiplikation (*), division (/) och upphöj till (ˆ) av vektorer följer vanliga vektoralgebraiska

Komponentvisa operationer,.-notation Multiplikation (*), division (/) och upphöj till (ˆ) av vektorer följer vanliga vektoralgebraiska Matlab-föreläsning 3 (4), 17 september, 2015 Innehåll Sekvenser (från förra föreläsningen) Upprepning med for-slingor och while-slingor Villkorssatser med if - then -else - Logik Sekvenser - repetion från

Läs mer

ADS : STACK ADT: STACK. Stack och Kö -Implementering - Tilllämpningar. Oftast förekommande metoder i Stack. TopOfStack

ADS : STACK ADT: STACK. Stack och Kö -Implementering - Tilllämpningar. Oftast förekommande metoder i Stack. TopOfStack Stack och Kö -Implementering - Tilllämpningar ADS : STACK Det finns ett par vanligt förekommande ADT:er för samlingar av element som egentligen är specialfall av listor. En av dem är Stack Definition:

Läs mer

Arrayer (vektorer) Murach s: kap Elektronikcentrum i Svängsta AB

Arrayer (vektorer) Murach s: kap Elektronikcentrum i Svängsta AB Arrayer (vektorer) Murach s: kap 8 2013-01-15 1 Elektronikcentrum i Svängsta AB Arrayer Arrayer (vektorer) Ofta i ett program har vi flera variabler av samma datatyp som är relaterade till varandra. Exempel

Läs mer

Föreläsning 5: Dynamisk programmering

Föreläsning 5: Dynamisk programmering Föreläsning 5: Dynamisk programmering Vi betraktar en typ av problem vi tidigare sett: Indata: En uppsättning intervall [s i,f i ] med vikt w i. Mål: Att hitta en uppsättning icke överlappande intervall

Läs mer

Datastrukturer i kursen. Föreläsning 8 Innehåll. Träd rekursiv definition. Träd

Datastrukturer i kursen. Föreläsning 8 Innehåll. Träd rekursiv definition. Träd Föreläsning 8 Innehåll Datastrukturer i kursen Träd, speciellt binära träd egenskaper användningsområden implementering Undervisningsmoment: föreläsning 8, övningsuppgifter 8, lab 4 Avsnitt i läroboken:

Läs mer

Tommy Färnqvist, IDA, Linköpings universitet

Tommy Färnqvist, IDA, Linköpings universitet Föreläsning 9 Pekare, länkade noder, länkade listor TDDD86: DALP Utskriftsversion av föreläsning i Datastrukturer, algoritmer och programmeringsparadigm 25 september 2015 Tommy Färnqvist, IDA, Linköpings

Läs mer

KOMPLETTERANDE HEMTENTAMEN TDDB53

KOMPLETTERANDE HEMTENTAMEN TDDB53 Linköpings universitet Institutionen för datavetenskap, IDA Olle Willén mars 2003 Tentamen TDDB53 KOMPLETTERANDE HEMTENTAMEN TDDB53 Programmering i Ada för MI (MI-ADA) i mars 2003 Tentan lämnas ut 24/3

Läs mer

Datastrukturer, algoritmer och programkonstruktion (DVA104, VT 2015) Föreläsning 6

Datastrukturer, algoritmer och programkonstruktion (DVA104, VT 2015) Föreläsning 6 Datastrukturer, algoritmer och programkonstruktion (DVA104, VT 2015) Föreläsning 6? DAGENS AGENDA Komplexitet Ordobegreppet Komplexitetsklasser Loopar Datastrukturer Några nyttiga regler OBS! Idag jobbar

Läs mer

I ett program hantera man ofta samlingar av objekt av samma typ.

I ett program hantera man ofta samlingar av objekt av samma typ. Fält I ett program hantera man ofta samlingar av objekt av samma typ. Sådana samlingar vill man vanligtvis kunna gruppera ihop till en sammanhängande struktur. För detta ändamål tillhandahåller Java språkkonstruktioner

Läs mer

Föreläsning 2 Datastrukturer (DAT037)

Föreläsning 2 Datastrukturer (DAT037) Föreläsning 2 Datastrukturer (DAT037) Fredrik Lindblad 1 2016-11-02 1 Slides skapade av Nils Anders Danielsson har använts som utgångspunkt. Se http://www.cse.chalmers.se/edu/year/2015/course/dat037 Tidskomplexitet

Läs mer

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner 732G11 Linköpings universitet 2011-01-21 1 2 3 4 5 6 Skapa program Kompilera: Källkod Kompilator bytekod Köra: Bytekod Virtuell maskin Ett riktigt program Hej.java class Hej { public static void main (

Läs mer

TENTAMEN TDDB53. Programmering i Ada för MI (provkod TEN2) den 7 april 2010 kl Institutionen för datavetenskap, IDA Olle Willén mars 2010

TENTAMEN TDDB53. Programmering i Ada för MI (provkod TEN2) den 7 april 2010 kl Institutionen för datavetenskap, IDA Olle Willén mars 2010 Linköpings universitet Institutionen för datavetenskap, IDA Olle Willén mars 2010 Tentamen TDDB53 TENTAMEN TDDB53 (provkod TEN2) den 7 april 2010 kl 8 12 Jour: Emil Nielsen, tel 070 499 89 88 Hjälpmedel:

Läs mer

Objektorienterad programmering

Objektorienterad programmering Objektorienterad programmering Föreläsning 22 Copyright Mahmud Al Hakim mahmud@dynamicos.se www.webacademy.se Agenda Rekursion Samlingar Listor Mängder Avbildningstabeller 1 Rekursion För att förstå rekursion

Läs mer

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Strukturdiagram. Styra. Algoritmer. Val

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Strukturdiagram. Styra. Algoritmer. Val 732G11 Linköpings universitet 2011-01-26 1 2 3 4 Program recept 1 spaghetti = 100; 2 salt = 1; 3 olja = 5; 4 köttbullar = 8; 5 ketchup = 0,5; 6 koka(salt, spaghetti); 7 micra(köttbullar); 8 Om(micron ==

Läs mer

Exempel på ett litet Ada-program

Exempel på ett litet Ada-program Exempel på ett litet Ada-program -- En kommentar som beskriver något. with Ada.Text_IO; procedure Mini is -- Deklarationer. K : constant Integer := 5; X, Y : Integer; -- Körbar kod. Ada.Text_IO.Put( Utskrift

Läs mer

String [] argv. Dagens Agenda. Mer om arrayer. Mer om arrayer forts. String [] argv. argv är variabelnamnet. Arrayer och Strängar fortsättning

String [] argv. Dagens Agenda. Mer om arrayer. Mer om arrayer forts. String [] argv. argv är variabelnamnet. Arrayer och Strängar fortsättning Dagens Agenda String [] argv String [] argv Arrayer och Strängar fortsättning Booleska operatorer if, for, while satser Introduktion till algoritmer public static void main(string [] argv) argv är variabelnamnet

Läs mer

Datatyp - mera. Begreppet värde, igen. Ett slags mått på en egenskap, eller något fenomen. Ska ges en bred tolkning!

Datatyp - mera. Begreppet värde, igen. Ett slags mått på en egenskap, eller något fenomen. Ska ges en bred tolkning! Begreppet värde, igen Ett slags mått på en egenskap, eller något fenomen. Ska ges en bred tolkning! Kan vara mycket enkla: födår, ögonfärg, styckepris,.. eller lite sammansatta: en vektor, ett personnamn,

Läs mer

GRUNDER I VHDL. Innehåll. Komponentmodell Kodmodell Entity Architecture Identifierare och objekt Operationer för jämförelse

GRUNDER I VHDL. Innehåll. Komponentmodell Kodmodell Entity Architecture Identifierare och objekt Operationer för jämförelse GRUNDER I VHDL Innehåll Komponentmodell Kodmodell Entity Architecture Identifierare och objekt Operationer för jämförelse KOMPONENTMODELL Modell för att beskriva komponenter Externt interface Intern funktion

Läs mer

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

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

Datalogi, grundkurs 1. Lösningsförslag till tentamen 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,

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

Tentamen i Algoritmer & Datastrukturer i Java

Tentamen i Algoritmer & Datastrukturer i Java Tentamen i Algoritmer & Datastrukturer i Java Hjälpmedel: Skrivhjälpmedel, miniräknare. Ort / Datum: Halmstad / 2008-05-27 Skrivtid: 4 timmar Kontakt person: Nicolina Månsson, tel. 035-167487 Poäng / Betyg:

Läs mer

1 Texthantering. 1.1 Typen char. Exempel, skriv ut alfabetet

1 Texthantering. 1.1 Typen char. Exempel, skriv ut alfabetet 1 Texthantering I detta avsnitt tas det upp två sätt att arbeta med text i C++ program. Det första sättet som behandlas är hanteringen av textfält. Texter i C++ består utav en serie med enstaka tecken

Läs mer

TANA17 Matematiska beräkningar med MATLAB för M, DPU. Fredrik Berntsson, Linköpings Universitet. 8 december 2015 Sida 1 / 22

TANA17 Matematiska beräkningar med MATLAB för M, DPU. Fredrik Berntsson, Linköpings Universitet. 8 december 2015 Sida 1 / 22 TANA17 Matematiska beräkningar med MATLAB för M, DPU Fredrik Berntsson, Linköpings Universitet 8 december 2015 Sida 1 / 22 Föreläsning 8 God programmeringsstil. Sammansatta datatyper: Poster. Cell-matriser.

Läs mer

Algoritmer, datastrukturer och komplexitet

Algoritmer, datastrukturer och komplexitet Algoritmer, datastrukturer och komplexitet Övning 1 Anton Grensjö grensjo@csc.kth.se 14 september 2015 Anton Grensjö ADK Övning 1 14 september 2015 1 / 22 Översikt Kursplanering F1: Introduktion, algoritmanalys

Läs mer

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

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering Föreläsning 1 Objektorienterad programmering DD1332 Introduktion till Java Kompilering, exekvering, variabler, styrstrukturer Kompilering och exekvering Ett program måste översättas till datorns språk

Läs mer

Typkonvertering. Java versus C

Typkonvertering. Java versus C Typer Objektorienterad programmering E Typkonvertering Typkonvertering Satser: while, for, if Objekt Föreläsning 2 Implicit konvertering Antag att vi i ett program deklarerat int n=3; double x = 5.2; Då

Läs mer

Uppgifter till praktiska tentan, del A. (7 / 27)

Uppgifter till praktiska tentan, del A. (7 / 27) Uppgifter till praktiska tentan, del A. (7 / 27) I. Sortering/Sökning: III II. Representation/Omvandling/format/protokoll: II III. Strukturering: II I alla problem, där bokstäver förekommer, antar vi att

Läs mer

Uppgift 1 (vadå sortering?)

Uppgift 1 (vadå sortering?) 2011-06-08.kl.14-19 Uppgift 1 (vadå sortering?) Du skall skriva ett program som sorterar in en sekvens av tal i en vektor (en array ) enligt en speciell metod. Inledningsvis skall vektorn innehålla endast

Läs mer

Hej Då, Karel! Programmering. Vårt första Javaprogram. hh.se/db2004. Java. Grundtyper, variabler och arrayer

Hej Då, Karel! Programmering. Vårt första Javaprogram. hh.se/db2004. Java. Grundtyper, variabler och arrayer Programmering hh.se/db2004 Föreläsning 3: Java. Grundtyper, variabler och arrayer Hej Då, Karel! Verónica Gaspes www2.hh.se/staff/vero www2.hh.se/staff/vero/programmering Center for Research on Embedded

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

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

Digitalitet. Kontinuerlig. Direkt proportionerlig mot källan. Ex. sprittermometer. Elektrisk signal som representerar ljud.

Digitalitet. Kontinuerlig. Direkt proportionerlig mot källan. Ex. sprittermometer. Elektrisk signal som representerar ljud. Analog Digitalitet Kontinuerlig Direkt proportionerlig mot källan Ex. sprittermometer Elektrisk signal som representerar ljud Diskret Digital Representation som siffror/symboler Ex. CD-skiva Varje siffra

Läs mer

Tentamen Programmeringsteknik II Inledning. Anmälningskod:

Tentamen Programmeringsteknik II Inledning. Anmälningskod: Tentamen Programmeringsteknik II 2016-01-11 Inledning I bilagan finns ett antal mer eller mindre ofullständiga klasser. Några ingår i en hierarki: List, SortedList, SplayList och ListSet enligt vidstående

Läs mer

Abstrakt datatyp. -Algoritmer och Datastrukturer- För utveckling av verksamhet, produkter och livskvalitet.

Abstrakt datatyp. -Algoritmer och Datastrukturer- För utveckling av verksamhet, produkter och livskvalitet. -Algoritmer och Datastrukturer- Abstrakt datatyp Datatyp för en variabel Betecknar i ett programmeringsspråk den mängd värden variabeln får anta. T ex kan en variabel av typ boolean anta värdena true och

Läs mer

Tentamen TEN1 HI

Tentamen TEN1 HI Tentamen TEN1 HI1029 2014-03-14 Skrivtid: 8.15-13.00 Hjälpmedel: Referensblad (utdelas), papper (tomma), penna Logga in med tentamenskontot ni får av skrivvakten. Det kommer att ta tid att logga in ha

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

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

Föreläsning 4. ADT Kö Kö JCF Kö implementerad med en cirkulär array Kö implementerad med en länkad lista Föreläsning 4 Kö Föreläsning 4 ADT Kö Kö JCF Kö implementerad med en cirkulär array Kö implementerad med en länkad lista ADT Kö Grundprinciper: En kö fungerar som en kö. Man fyller på den längst bak och

Läs mer

Att deklarera och att använda variabler. Föreläsning 10. Synlighetsregler (2) Synlighetsregler (1)

Att deklarera och att använda variabler. Föreläsning 10. Synlighetsregler (2) Synlighetsregler (1) Föreläsning 10 STRING OCH STRINGBUILDER; VARIABLERS SYNLIGHET Att deklarera och att använda variabler När vi deklarerar en variabel, t ex int x; inför vi en ny variabel med ett namn och en typ. När namnet

Läs mer

Övning 1 - Abstrakta datatyper

Övning 1 - Abstrakta datatyper /home/lindahlm/activity-phd/teaching/12dd1320/exercise1/exercise1.py September 3, 20121 0 # coding : latin Övning 1 - Abstrakta datatyper 18 Summering Vi gick igenom betydelsen av abstrakta datatyper/datastrukturer.

Läs mer

Föreläsning 3. Stack

Föreläsning 3. Stack Föreläsning 3 Stack Föreläsning 3 ADT Stack Stack JCF Tillämpning Utvärdera ett postfix uttryck Stack implementerad med en array Stack implementerad med en länkad lista ADT Stack Grundprinciper: En stack

Läs mer

Inlämningsuppgiften. Föreläsning 9 Innehåll. Träd. Datastrukturer i kursen

Inlämningsuppgiften. Föreläsning 9 Innehåll. Träd. Datastrukturer i kursen Föreläsning 9 Innehåll Inlämningsuppgiften De föreläsningar som inlämningsuppgiften bygger på är nu klara. Det är alltså dags att börja arbeta med inlämningsuppgiften. Träd, speciellt binära träd 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