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.

Storlek: px
Starta visningen från sidan:

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

Transkript

1 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 : ; ndoors : 2..5; weight : 100..Maxint; cartype : (person, kombi, last); END; VAR mycar, yourcar : car; DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

2 Poster... Enskilda fält kan nås med s.k. punktnotation BEGIN mycar.model := 2008; mycar.ndoors:= 3;... WriteLn(myCar.ndoors); IF yourcar.weight > mycar.weight THEN... yourcar := mycar; { alla fält kopieras } In och utmatning av hela poster kan INTE ske till/från terminalen. DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

3 Poster... Representation av komplexa tal: Program complex(input,output); TYPE complexnumber = RECORD re,im : real; END; VAR z1 : complexnumber; FUNCTION impart(z : complexnumber):real; BEGIN impart:= z.im; END; BEGIN z1.im:=3; z1.re:=2; WriteLn( Den imaginära delen är:,impart(z1):0); END. DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

4 Poster... När vi t.ex. adderar två komplexa tal får vi en ny post (RECORD) med resultatet i. DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

5 Poster... När vi t.ex. adderar två komplexa tal får vi en ny post (RECORD) med resultatet i. För att konstruktorn skall kunna returnera resultatet måste det rymmas i ett ord. DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

6 Poster... När vi t.ex. adderar två komplexa tal får vi en ny post (RECORD) med resultatet i. För att konstruktorn skall kunna returnera resultatet måste det rymmas i ett ord. Det är INTE tillåtet att returnera hela poster! DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

7 Poster... När vi t.ex. adderar två komplexa tal får vi en ny post (RECORD) med resultatet i. För att konstruktorn skall kunna returnera resultatet måste det rymmas i ett ord. Det är INTE tillåtet att returnera hela poster! En lösning på problemet är att lämna en adress till en post. DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

8 Poster... När vi t.ex. adderar två komplexa tal får vi en ny post (RECORD) med resultatet i. För att konstruktorn skall kunna returnera resultatet måste det rymmas i ett ord. Det är INTE tillåtet att returnera hela poster! En lösning på problemet är att lämna en adress till en post. Hur representerar vi adresser? DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

9 Poster... När vi t.ex. adderar två komplexa tal får vi en ny post (RECORD) med resultatet i. För att konstruktorn skall kunna returnera resultatet måste det rymmas i ett ord. Det är INTE tillåtet att returnera hela poster! En lösning på problemet är att lämna en adress till en post. Hur representerar vi adresser? Program complex(input,output); TYPE complexpointer = ˆcomplexNumber; { complexpointer är adress till objekt av typen complexnumber } complexnumber = RECORD re,im : real; END; VAR z1,z2 : complexpointer; { variabler som innehåller } { adresser till objekt av typen complexnumber } DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

10 Poster... Program complex(input,output); TYPE complexpointer = ˆcomplexNumber; { complexpointer är adress till objekt av typen complexnumber } complexnumber = RECORD re,im : real; END; VAR z1,z2 : complexpointer; { variabler som innehåller } { adresser till objekt av typen complexnumber } BEGIN DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

11 Poster... Program complex(input,output); TYPE complexpointer = ˆcomplexNumber; { complexpointer är adress till objekt av typen complexnumber } complexnumber = RECORD re,im : real; END; VAR z1,z2 : complexpointer; { variabler som innehåller } { adresser till objekt av typen complexnumber } BEGIN New(z1); DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

12 Poster... Program complex(input,output); TYPE complexpointer = ˆcomplexNumber; { complexpointer är adress till objekt av typen complexnumber } complexnumber = RECORD re,im : real; END; VAR z1,z2 : complexpointer; { variabler som innehåller } { adresser till objekt av typen complexnumber } BEGIN New(z1); { skapa ett nytt objekt i minnet och } { låt z1 få dess adress } New(z2); DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

13 Poster... Program complex(input,output); TYPE complexpointer = ˆcomplexNumber; { complexpointer är adress till objekt av typen complexnumber } complexnumber = RECORD re,im : real; END; VAR z1,z2 : complexpointer; { variabler som innehåller } { adresser till objekt av typen complexnumber } BEGIN New(z1); { skapa ett nytt objekt i minnet och } { låt z1 få dess adress } New(z2); z1ˆ.im:=3; DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

14 Poster... Program complex(input,output); TYPE complexpointer = ˆcomplexNumber; { complexpointer är adress till objekt av typen complexnumber } complexnumber = RECORD re,im : real; END; VAR z1,z2 : complexpointer; { variabler som innehåller } { adresser till objekt av typen complexnumber } BEGIN New(z1); { skapa ett nytt objekt i minnet och } { låt z1 få dess adress } New(z2); z1ˆ.im:=3; z1ˆ.re:=2; DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

15 Poster... Program complex(input,output); TYPE complexpointer = ˆcomplexNumber; { complexpointer är adress till objekt av typen complexnumber } complexnumber = RECORD re,im : real; END; VAR z1,z2 : complexpointer; { variabler som innehåller } { adresser till objekt av typen complexnumber } BEGIN New(z1); { skapa ett nytt objekt i minnet och } { låt z1 få dess adress } New(z2); z1ˆ.im:=3; z1ˆ.re:=2; z2ˆ:=z1ˆ; { posten kopieras } DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

16 Poster... Program complex(input,output); TYPE complexpointer = ˆcomplexNumber; { complexpointer är adress till objekt av typen complexnumber } complexnumber = RECORD re,im : real; END; VAR z1,z2 : complexpointer; { variabler som innehåller } { adresser till objekt av typen complexnumber } BEGIN New(z1); { skapa ett nytt objekt i minnet och } { låt z1 få dess adress } New(z2); z1ˆ.im:=3; z1ˆ.re:=2; z2ˆ:=z1ˆ; { posten kopieras } IF z1 <> z2 THEN z2:=z1; { adressen kopieras } DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

17 Poster... Program complex(input,output); TYPE complexpointer = ˆcomplexNumber; { complexpointer är adress till objekt av typen complexnumber } complexnumber = RECORD re,im : real; END; VAR z1,z2 : complexpointer; { variabler som innehåller } { adresser till objekt av typen complexnumber } BEGIN New(z1); { skapa ett nytt objekt i minnet och } { låt z1 få dess adress } New(z2); z1ˆ.im:=3; z1ˆ.re:=2; z2ˆ:=z1ˆ; { posten kopieras } IF z1 <> z2 THEN z2:=z1; { adressen kopieras } Dispose(z2); { återlämna minnesutrymmet } END. DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

18 Poster... Statisk variabel: DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

19 Poster... Statisk variabel: Den är deklarerad och har ett namn som används för att referera till variabeln. DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

20 Poster... Statisk variabel: Den är deklarerad och har ett namn som används för att referera till variabeln. Det minnesutrymme som tilldelats vid ingången i ett block förblir reserverat under hela exekveringen av blocket. DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

21 Poster... Statisk variabel: Den är deklarerad och har ett namn som används för att referera till variabeln. Det minnesutrymme som tilldelats vid ingången i ett block förblir reserverat under hela exekveringen av blocket. Ex. Heltalsvariabler, poster, osv. tal 2134 DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

22 Poster... Dynamisk variabel: DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

23 Poster... Dynamisk variabel: Kan skapas och dödas under exekveringen. Den dynamiska variabeln har inget namn utan man använder en referensvariabel för att referera till den. DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

24 Poster... Dynamisk variabel: Kan skapas och dödas under exekveringen. Den dynamiska variabeln har inget namn utan man använder en referensvariabel för att referera till den. tal 2134 DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

25 Poster... Hur är de deklarerade? Statisk variabel: VAR tal: Integer; BEGIN tal:=2134;... DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

26 Poster... Dynamisk variabel: TYPE heltal = ˆheltalsTyp; heltalstyp = RECORD value:integer; END; VAR tal : heltal; DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

27 Poster... Dynamisk variabel: TYPE heltal = ˆheltalsTyp; heltalstyp = RECORD value:integer; END; VAR tal : heltal; BEGIN New(tal); DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

28 Poster... Dynamisk variabel: TYPE heltal = ˆheltalsTyp; heltalstyp = RECORD value:integer; END; VAR tal : heltal; BEGIN New(tal); talˆ.value := 2134;... DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

29 Poster... Operationer: Skapa en ny dynamisk variabel DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

30 Poster... Operationer: Skapa en ny dynamisk variabel New(p); ny variabel av p:s typ, p sätts att referera till den nya variabeln. DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

31 Poster... Operationer: Skapa en ny dynamisk variabel New(p); ny variabel av p:s typ, p sätts att referera till den nya variabeln. Utplåna en dynamisk variabel om p refererar till en dynamisk variabel så gör: Dispose(p); att minnesutrymmet, som p upptar, friställs för återanvändning och alla värden går förlorade. DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

32 Poster... Operationer: Skapa en ny dynamisk variabel New(p); ny variabel av p:s typ, p sätts att referera till den nya variabeln. Utplåna en dynamisk variabel om p refererar till en dynamisk variabel så gör: Dispose(p); att minnesutrymmet, som p upptar, friställs för återanvändning och alla värden går förlorade. p har inget eget värde efter det att satsen exekverats. DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

33 Poster... Tilldelning: p := tilldelning av referens. DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

34 Poster... Tilldelning: p := tilldelning av referens. pˆ := tilldelning av värde. DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

35 Poster... Tilldelning: p := tilldelning av referens. pˆ := tilldelning av värde. Det finns bara en referenskonstant: NIL = inget objekt DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

36 Poster... Tilldelning: p := tilldelning av referens. pˆ := tilldelning av värde. Det finns bara en referenskonstant: NIL = inget objekt NEW(p); p := NIL; DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

37 Poster... Tilldelning: p := tilldelning av referens. pˆ := tilldelning av värde. Det finns bara en referenskonstant: NIL = inget objekt NEW(p); p := NIL; gör att en dynamisk variabel skapas i minnet. Då man sedan släpper referensen kan man aldrig mer komma åt objektet. Objektet tar så mycket minnesutrymme i anspråk som postdefinitionen föreskriver. DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

38 Poster... PROGRAM complex(input,output); TYPE complexpointer = ˆcomplexNumber; complexnumber = RECORD re, im : Real END; VAR z,w: complexpointer; BEGIN END. DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

39 Poster... PROGRAM complex(input,output); TYPE complexpointer = ˆcomplexNumber; complexnumber = RECORD re, im : Real END; VAR z,w: complexpointer; BEGIN New(z); END. DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

40 Poster... PROGRAM complex(input,output); TYPE complexpointer = ˆcomplexNumber; complexnumber = RECORD re, im : Real END; VAR z,w: complexpointer; BEGIN New(z); New(w); END. DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

41 Poster... PROGRAM complex(input,output); TYPE complexpointer = ˆcomplexNumber; complexnumber = RECORD re, im : Real END; VAR z,w: complexpointer; BEGIN New(z); New(w); Readln(zˆ.re, zˆ.im, wˆ.re, wˆ.im); END. DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

42 Poster... PROGRAM complex(input,output); TYPE complexpointer = ˆcomplexNumber; complexnumber = RECORD re, im : Real END; VAR z,w: complexpointer; BEGIN New(z); New(w); Readln(zˆ.re, zˆ.im, wˆ.re, wˆ.im); z := add(z,w); END. DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

43 Poster... PROGRAM complex(input,output); TYPE complexpointer = ˆcomplexNumber; complexnumber = RECORD re, im : Real END; VAR z,w: complexpointer; FUNCTION add(z1, z2: complexpointer): complexpointer; VAR w:complexpointer; BEGIN New(w); wˆ.re := z1ˆ.re + z2ˆ.re; wˆ.im := z1ˆ.im + z2ˆ.im; add := w END; BEGIN New(z); New(w); Readln(zˆ.re, zˆ.im, wˆ.re, wˆ.im); z := add(z,w); END. DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

44 Poster... PROGRAM complex(input,output); TYPE complexpointer = ˆcomplexNumber; complexnumber = RECORD re, im : Real END; VAR z,w: complexpointer; FUNCTION add(z1, z2: complexpointer): complexpointer; VAR w:complexpointer; BEGIN New(w); wˆ.re := z1ˆ.re + z2ˆ.re; wˆ.im := z1ˆ.im + z2ˆ.im; add := w END; BEGIN New(z); New(w); Readln(zˆ.re, zˆ.im, wˆ.re, wˆ.im); z := add(z,w); Writeln(zˆ.re, zˆ.im) END. DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

45 Poster... När vi i Scheme har gjort listor har vi använt oss av box-pekar diagram för att rita upp listorna. DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

46 Poster... När vi i Scheme har gjort listor har vi använt oss av box-pekar diagram för att rita upp listorna. Exempelvis (define minlista (list 1 2 3)) DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

47 Poster... När vi i Scheme har gjort listor har vi använt oss av box-pekar diagram för att rita upp listorna. Exempelvis (define minlista (list 1 2 3)) Vi kan nu även i bygga upp en liknande struktur m.hj.a. pekare och poster. DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

48 Poster... När vi i Scheme har gjort listor har vi använt oss av box-pekar diagram för att rita upp listorna. Exempelvis (define minlista (list 1 2 3)) Vi kan nu även i bygga upp en liknande struktur m.hj.a. pekare och poster. Vi kan skapa minnesutrymme och länka samman dessa med pekare. DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

49 Poster... När vi i Scheme har gjort listor har vi använt oss av box-pekar diagram för att rita upp listorna. Exempelvis (define minlista (list 1 2 3)) Vi kan nu även i bygga upp en liknande struktur m.hj.a. pekare och poster. Vi kan skapa minnesutrymme och länka samman dessa med pekare. Det ger oss redskap för att bygga listor. DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

50 Poster... När vi i Scheme har gjort listor har vi använt oss av box-pekar diagram för att rita upp listorna. Exempelvis (define minlista (list 1 2 3)) Vi kan nu även i bygga upp en liknande struktur m.hj.a. pekare och poster. Vi kan skapa minnesutrymme och länka samman dessa med pekare. Det ger oss redskap för att bygga listor. Hur ska vi då lägga in data, arbeta med listor, ta bort element osv? DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

51 Pekare... PROGRAM ex; TYPE elementptr = ˆelement; element = RECORD entry: integer; next: elementptr END; VAR e1, e2 : elementptr; BEGIN { strukturen skapas för listan } DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

52 Pekare... PROGRAM ex; TYPE elementptr = ˆelement; element = RECORD entry: integer; next: elementptr END; VAR e1, e2 : elementptr; BEGIN { strukturen skapas för listan } NEW(e1); DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

53 Pekare... PROGRAM ex; TYPE elementptr = ˆelement; element = RECORD entry: integer; next: elementptr END; VAR e1, e2 : elementptr; BEGIN { strukturen skapas för listan } NEW(e1); NEW(e1ˆ.next); DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

54 Pekare... PROGRAM ex; TYPE elementptr = ˆelement; element = RECORD entry: integer; next: elementptr END; VAR e1, e2 : elementptr; BEGIN { strukturen skapas för listan } NEW(e1); NEW(e1ˆ.next); NEW(e1ˆ.nextˆ.next); DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

55 Pekare... PROGRAM ex; TYPE elementptr = ˆelement; element = RECORD entry: integer; next: elementptr END; VAR e1, e2 : elementptr; BEGIN { strukturen skapas för listan } NEW(e1); NEW(e1ˆ.next); NEW(e1ˆ.nextˆ.next); { tilldela värden i listan } e1ˆ.entry := 1; DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

56 Pekare... PROGRAM ex; TYPE elementptr = ˆelement; element = RECORD entry: integer; next: elementptr END; VAR e1, e2 : elementptr; BEGIN { strukturen skapas för listan } NEW(e1); NEW(e1ˆ.next); NEW(e1ˆ.nextˆ.next); { tilldela värden i listan } e1ˆ.entry := 1; e1ˆ.nextˆ.entry := 2; DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

57 Pekare... PROGRAM ex; TYPE elementptr = ˆelement; element = RECORD entry: integer; next: elementptr END; VAR e1, e2 : elementptr; BEGIN { strukturen skapas för listan } NEW(e1); NEW(e1ˆ.next); NEW(e1ˆ.nextˆ.next); { tilldela värden i listan } e1ˆ.entry := 1; e1ˆ.nextˆ.entry := 2; e1ˆ.nextˆ.nextˆ.entry := 3; DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

58 Pekare... PROGRAM ex; TYPE elementptr = ˆelement; element = RECORD entry: integer; next: elementptr END; VAR e1, e2 : elementptr; BEGIN { strukturen skapas för listan } NEW(e1); NEW(e1ˆ.next); NEW(e1ˆ.nextˆ.next); { tilldela värden i listan } e1ˆ.entry := 1; e1ˆ.nextˆ.entry := 2; e1ˆ.nextˆ.nextˆ.entry := 3; e1ˆ.nextˆ.nextˆ.next := NIL; DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

59 Pekare... PROGRAM ex; TYPE elementptr = ˆelement; element = RECORD entry: integer; next: elementptr END; VAR e1, e2 : elementptr; BEGIN { strukturen skapas för listan } NEW(e1); NEW(e1ˆ.next); NEW(e1ˆ.nextˆ.next); { tilldela värden i listan } e1ˆ.entry := 1; e1ˆ.nextˆ.entry := 2; e1ˆ.nextˆ.nextˆ.entry := 3; e1ˆ.nextˆ.nextˆ.next := NIL; { hjälppekare sätts att peka i listan } e2 := e1ˆ.nextˆ.next END. DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

60 Pekare... NEW(e1); e1 entry next DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

61 Pekare... NEW(e1); e1 entry next NEW(e1ˆ.next); e1 entry next entry next DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

62 Pekare... NEW(e1); e1 entry next NEW(e1ˆ.next); e1 entry next entry next NEW(e1ˆ.nextˆ.next); e1 entry next entry next entry next DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

63 Pekare... NEW(e1); e1 entry next NEW(e1ˆ.next); e1 entry next entry next NEW(e1ˆ.nextˆ.next); e1 entry next entry next entry next { tilldela värden i listan, med bl.a.: } e1ˆ.nextˆ.nextˆ.next := NIL; e1 1 next 2 next 3 next NIL DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

64 Pekare... NEW(e1); e1 entry next NEW(e1ˆ.next); e1 entry next entry next NEW(e1ˆ.nextˆ.next); e1 entry next entry next entry next { tilldela värden i listan, med bl.a.: } e1ˆ.nextˆ.nextˆ.next := NIL; e1 1 next 2 next 3 next NIL { hjälppekare sätts att peka i listan } e2 := e1ˆ.nextˆ.next; e1 1 next 2 next 3 next NIL e2 DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

65 Listor kan (i princip) byggas på två sätt Kontinuerliga listor DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

66 Listor kan (i princip) byggas på två sätt Kontinuerliga listor Alla element ligger i en följd i datorns minne DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

67 Listor kan (i princip) byggas på två sätt Kontinuerliga listor Alla element ligger i en följd i datorns minne Index är ett offset från första komponenten DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

68 Listor kan (i princip) byggas på två sätt Kontinuerliga listor Alla element ligger i en följd i datorns minne Index är ett offset från första komponenten Kräver att utrymme kan reserveras då programmet startas DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

69 Listor kan (i princip) byggas på två sätt Kontinuerliga listor Alla element ligger i en följd i datorns minne Index är ett offset från första komponenten Kräver att utrymme kan reserveras då programmet startas Kan inte växa (eller krympa) dynamiskt DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

70 Listor kan (i princip) byggas på två sätt Kontinuerliga listor Alla element ligger i en följd i datorns minne Index är ett offset från första komponenten Kräver att utrymme kan reserveras då programmet startas Kan inte växa (eller krympa) dynamiskt (Den typ av listor jag inledningsvis diskuterade tillhör inte denna kategori) DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

71 Listor kan (i princip) byggas på två sätt Kontinuerliga listor Alla element ligger i en följd i datorns minne Index är ett offset från första komponenten Kräver att utrymme kan reserveras då programmet startas Kan inte växa (eller krympa) dynamiskt (Den typ av listor jag inledningsvis diskuterade tillhör inte denna kategori) Diskontinuerliga listor DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

72 Listor kan (i princip) byggas på två sätt Kontinuerliga listor Alla element ligger i en följd i datorns minne Index är ett offset från första komponenten Kräver att utrymme kan reserveras då programmet startas Kan inte växa (eller krympa) dynamiskt (Den typ av listor jag inledningsvis diskuterade tillhör inte denna kategori) Diskontinuerliga listor Elementen läggs där det finns plats i minnet, inte säkert i följd DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

73 Listor kan (i princip) byggas på två sätt Kontinuerliga listor Alla element ligger i en följd i datorns minne Index är ett offset från första komponenten Kräver att utrymme kan reserveras då programmet startas Kan inte växa (eller krympa) dynamiskt (Den typ av listor jag inledningsvis diskuterade tillhör inte denna kategori) Diskontinuerliga listor Elementen läggs där det finns plats i minnet, inte säkert i följd Man måste hålla reda på var nästa element finns så förutom elementet själv måste man lagra adressen till nästa element DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

74 Listor kan (i princip) byggas på två sätt Kontinuerliga listor Alla element ligger i en följd i datorns minne Index är ett offset från första komponenten Kräver att utrymme kan reserveras då programmet startas Kan inte växa (eller krympa) dynamiskt (Den typ av listor jag inledningsvis diskuterade tillhör inte denna kategori) Diskontinuerliga listor Elementen läggs där det finns plats i minnet, inte säkert i följd Man måste hålla reda på var nästa element finns så förutom elementet själv måste man lagra adressen till nästa element Fördelen är att listan kan växa och krympa dynamiskt DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

75 Listor kan (i princip) byggas på två sätt Kontinuerliga listor Alla element ligger i en följd i datorns minne Index är ett offset från första komponenten Kräver att utrymme kan reserveras då programmet startas Kan inte växa (eller krympa) dynamiskt (Den typ av listor jag inledningsvis diskuterade tillhör inte denna kategori) Diskontinuerliga listor Elementen läggs där det finns plats i minnet, inte säkert i följd Man måste hålla reda på var nästa element finns så förutom elementet själv måste man lagra adressen till nästa element Fördelen är att listan kan växa och krympa dynamiskt Man kan sedan ha homogena eller inhomogena listor: DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

76 Listor kan (i princip) byggas på två sätt Kontinuerliga listor Alla element ligger i en följd i datorns minne Index är ett offset från första komponenten Kräver att utrymme kan reserveras då programmet startas Kan inte växa (eller krympa) dynamiskt (Den typ av listor jag inledningsvis diskuterade tillhör inte denna kategori) Diskontinuerliga listor Elementen läggs där det finns plats i minnet, inte säkert i följd Man måste hålla reda på var nästa element finns så förutom elementet själv måste man lagra adressen till nästa element Fördelen är att listan kan växa och krympa dynamiskt Man kan sedan ha homogena eller inhomogena listor: I en homogen lista är alla element av samma typ. DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

77 Listor kan (i princip) byggas på två sätt Kontinuerliga listor Alla element ligger i en följd i datorns minne Index är ett offset från första komponenten Kräver att utrymme kan reserveras då programmet startas Kan inte växa (eller krympa) dynamiskt (Den typ av listor jag inledningsvis diskuterade tillhör inte denna kategori) Diskontinuerliga listor Elementen läggs där det finns plats i minnet, inte säkert i följd Man måste hålla reda på var nästa element finns så förutom elementet själv måste man lagra adressen till nästa element Fördelen är att listan kan växa och krympa dynamiskt Man kan sedan ha homogena eller inhomogena listor: I en homogen lista är alla element av samma typ. I en inhomogen lista är elementen av olika typ. DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

78 Listor kan (i princip) byggas på två sätt Kontinuerliga listor Alla element ligger i en följd i datorns minne Index är ett offset från första komponenten Kräver att utrymme kan reserveras då programmet startas Kan inte växa (eller krympa) dynamiskt (Den typ av listor jag inledningsvis diskuterade tillhör inte denna kategori) Diskontinuerliga listor Elementen läggs där det finns plats i minnet, inte säkert i följd Man måste hålla reda på var nästa element finns så förutom elementet själv måste man lagra adressen till nästa element Fördelen är att listan kan växa och krympa dynamiskt Man kan sedan ha homogena eller inhomogena listor: I en homogen lista är alla element av samma typ. I en inhomogen lista är elementen av olika typ. I Scheme kan man ha alla sorter DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

79 Listor kan (i princip) byggas på två sätt Kontinuerliga listor Alla element ligger i en följd i datorns minne Index är ett offset från första komponenten Kräver att utrymme kan reserveras då programmet startas Kan inte växa (eller krympa) dynamiskt (Den typ av listor jag inledningsvis diskuterade tillhör inte denna kategori) Diskontinuerliga listor Elementen läggs där det finns plats i minnet, inte säkert i följd Man måste hålla reda på var nästa element finns så förutom elementet själv måste man lagra adressen till nästa element Fördelen är att listan kan växa och krympa dynamiskt Man kan sedan ha homogena eller inhomogena listor: I en homogen lista är alla element av samma typ. I en inhomogen lista är elementen av olika typ. I Scheme kan man ha alla sorter I kan man bara ha homogena listor men både kontinuerliga och diskontinuerliga. DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

80 Oordnad lista... Med de verktyg vi har kan vi konstruera en listhanterare som kan hantera oordnade element. DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

81 Oordnad lista... Med de verktyg vi har kan vi konstruera en listhanterare som kan hantera oordnade element. Vi behöver kunna sätta in element, ta bort element och navigera i listan (vandra framåt och bakåt). DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

82 Oordnad lista... Med de verktyg vi har kan vi konstruera en listhanterare som kan hantera oordnade element. Vi behöver kunna sätta in element, ta bort element och navigera i listan (vandra framåt och bakåt). Därför ska vi skriva funktionerna DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

83 Oordnad lista... Med de verktyg vi har kan vi konstruera en listhanterare som kan hantera oordnade element. Vi behöver kunna sätta in element, ta bort element och navigera i listan (vandra framåt och bakåt). Därför ska vi skriva funktionerna insert, DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

84 Oordnad lista... Med de verktyg vi har kan vi konstruera en listhanterare som kan hantera oordnade element. Vi behöver kunna sätta in element, ta bort element och navigera i listan (vandra framåt och bakåt). Därför ska vi skriva funktionerna insert, delete, DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

85 Oordnad lista... Med de verktyg vi har kan vi konstruera en listhanterare som kan hantera oordnade element. Vi behöver kunna sätta in element, ta bort element och navigera i listan (vandra framåt och bakåt). Därför ska vi skriva funktionerna insert, delete, settofirst DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

86 Oordnad lista... Med de verktyg vi har kan vi konstruera en listhanterare som kan hantera oordnade element. Vi behöver kunna sätta in element, ta bort element och navigera i listan (vandra framåt och bakåt). Därför ska vi skriva funktionerna insert, delete, settofirst next och DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

87 Oordnad lista... Med de verktyg vi har kan vi konstruera en listhanterare som kan hantera oordnade element. Vi behöver kunna sätta in element, ta bort element och navigera i listan (vandra framåt och bakåt). Därför ska vi skriva funktionerna insert, delete, settofirst next och previous. DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

88 Oordnad lista... Med de verktyg vi har kan vi konstruera en listhanterare som kan hantera oordnade element. Vi behöver kunna sätta in element, ta bort element och navigera i listan (vandra framåt och bakåt). Därför ska vi skriva funktionerna insert, delete, settofirst next och previous. Dessutom behöver vi kunna hämta element och testa om vi navigerar i listan. DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

89 Oordnad lista... Med de verktyg vi har kan vi konstruera en listhanterare som kan hantera oordnade element. Vi behöver kunna sätta in element, ta bort element och navigera i listan (vandra framåt och bakåt). Därför ska vi skriva funktionerna insert, delete, settofirst next och previous. Dessutom behöver vi kunna hämta element och testa om vi navigerar i listan. Till det skriver vi funktionerna retrieve och DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

90 Oordnad lista... Med de verktyg vi har kan vi konstruera en listhanterare som kan hantera oordnade element. Vi behöver kunna sätta in element, ta bort element och navigera i listan (vandra framåt och bakåt). Därför ska vi skriva funktionerna insert, delete, settofirst next och previous. Dessutom behöver vi kunna hämta element och testa om vi navigerar i listan. Till det skriver vi funktionerna retrieve och isonlist? DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

91 Oordnad lista... Med de verktyg vi har kan vi konstruera en listhanterare som kan hantera oordnade element. Vi behöver kunna sätta in element, ta bort element och navigera i listan (vandra framåt och bakåt). Därför ska vi skriva funktionerna insert, delete, settofirst next och previous. Dessutom behöver vi kunna hämta element och testa om vi navigerar i listan. Till det skriver vi funktionerna retrieve och isonlist? Men vi börjar med typspecifikationerna: DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

92 Oordnad lista... TYPE itemptr = ˆitem; item = RECORD <user defined> END; DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

93 Oordnad lista... TYPE itemptr = ˆitem; item = RECORD <user defined> END; elementptr = ˆelement; DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

94 Oordnad lista... TYPE itemptr = ˆitem; item = RECORD <user defined> END; elementptr = ˆelement; element = RECORD entry : itemptr; next : elementptr END; DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

95 Oordnad lista... TYPE itemptr = ˆitem; item = RECORD <user defined> END; elementptr = ˆelement; element = RECORD entry : itemptr; next : elementptr END; listptr = ˆlist; DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

96 Oordnad lista... TYPE itemptr = ˆitem; item = RECORD <user defined> END; elementptr = ˆelement; element = RECORD entry : itemptr; next : elementptr END; listptr = ˆlist; list = RECORD first, cursor : elementptr END; DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

97 Oordnad lista... TYPE itemptr = ˆitem; item = RECORD <user defined> END; elementptr = ˆelement; element = RECORD entry : itemptr; next : elementptr END; listptr = ˆlist; list = RECORD first, cursor : elementptr END; VAR L : listptr; DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

98 Oordnad lista... Om man vill slippa skriva Lˆ. för varje fält (och dessutom snabbare komma åt fälten) kan man skriva: WITH Lˆ DO { här når man fälten i Lˆ utan punktnotation }; DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

99 Oordnad lista... Om man vill slippa skriva Lˆ. för varje fält (och dessutom snabbare komma åt fälten) kan man skriva: WITH Lˆ DO { här når man fälten i Lˆ utan punktnotation }; WITH q1 DO WITH q2 DO { om q1 och q2 har överlappande fältnamn } { så kommer man åt q2:s fält } DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

100 Oordnad lista... Om man vill slippa skriva Lˆ. för varje fält (och dessutom snabbare komma åt fälten) kan man skriva: WITH Lˆ DO { här når man fälten i Lˆ utan punktnotation }; WITH q1 DO WITH q2 DO { om q1 och q2 har överlappande fältnamn } { så kommer man åt q2:s fält } WITH q1, q2 DO { fälten i q1 och q2 tillgängliga }; DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

101 Oordnad lista... insert sätter in först i listan. Man skulle kunna tänka sig att sätta in på platsen för cursor eller sist. (Fundera över hur man gör då) FUNCTION insert(l: listptr; e: itemptr): listptr; VAR p : elementptr; BEGIN NEW(p); pˆ.entry := e; pˆ.next := Lˆ.first; Lˆ.first := p; insert := L END; DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

102 Oordnad lista... Funktionen delete tar bort det element som cursor pekar på genom att sätta in listans första element på platsen för cursor och sedan ta bort listans första element. delete bevarar alltså inte listans ordning. FUNCTION delete(l: listptr): listptr; VAR tmp : elementptr; BEGIN delete := L; IF Lˆ.cursor <> NIL THEN WITH Lˆ DO BEGIN cursorˆ.entry := firstˆ.entry; tmp := first; first := firstˆ.next; Dispose(tmp) END ELSE error END; DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

103 Oordnad lista... settofirst sätter cursor att peka på det första elementet i listan. OBS! att om listan är tom förblir värdet på cursor = NIL. FUNCTION settofirst(l: listptr): listptr; BEGIN Lˆ.cursor := Lˆ.first; settofirst := L; END; DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

104 Oordnad lista... Funktionen next flyttar cursor ett steg framåt om cursor pekar på ett element i listan, annars händer ingenting. FUNCTION next(l:listptr): listptr; BEGIN IF Lˆ.cursor <> NIL THEN WITH Lˆ DO cursor := cursorˆ.next; next:=l; END; DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

105 Oordnad lista... previous sätter cursor att peka på elementet före det som cursor just nu pekar på. Eftersom det inte finns pekare till föregående element måste man utgående från det första elementet i listan hitta det, vars next-pekare pekar på samma element som cursor gör. DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

106 Oordnad lista... previous sätter cursor att peka på elementet före det som cursor just nu pekar på. Eftersom det inte finns pekare till föregående element måste man utgående från det första elementet i listan hitta det, vars next-pekare pekar på samma element som cursor gör. FUNCTION previous(l: listptr): listptr; BEGIN WITH Lˆ DO IF (cursor = first) OR (cursor = NIL) THEN cursor := NIL ELSE cursor := findprev(first); previous := L END; DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

107 Oordnad lista... previous sätter cursor att peka på elementet före det som cursor just nu pekar på. Eftersom det inte finns pekare till föregående element måste man utgående från det första elementet i listan hitta det, vars next-pekare pekar på samma element som cursor gör. FUNCTION previous(l: listptr): listptr; FUNCTION findprev(anelement: elementptr): elementptr; BEGIN WHILE anelementˆ.next <> Lˆ.cursor THEN anelement := anelementˆ.next; findprev := anelement END; BEGIN WITH Lˆ DO IF (cursor = first) OR (cursor = NIL) THEN cursor := NIL ELSE cursor := findprev(first); previous := L END; DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

108 Oordnad lista... retrieve återsänder en pekare till den information som finns lagrad i det listelement som cursor pekar på, men om cursor inte pekar på något element återsänds NIL. FUNCTION retrieve( L:listPtr): itemptr; BEGIN WITH Lˆ DO IF cursor <> NIL THEN retrieve := cursorˆ.entry ELSE retrieve := NIL END; isonlist kontrollerar om cursor pekar på något element i listan eller inte. FUNCTION isonlist(l: listptr): Boolean; BEGIN isonlist := Lˆ.cursor <> NIL END; DA2001 (Föreläsning 14) Datalogi 1 Hösten / 25

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

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

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

Standardfilerna Input och Output

Standardfilerna Input och Output Standardfilerna Input och Output Standardfilerna Input och Output är textfiler av typen TEXT (som bara finns för filer). Innehållet är av typen Char och filerna är strukturerade i form av rader. En sådan

Läs mer

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

Standardfilerna Input och Output. Filer... Filer... vanlig utbyggnad för ökad dynamik. Filer... filtyper Standardfilerna Input och Output... Standardfilerna Input och Output är textfiler av typen TEXT (som bara finns för filer). Innehållet är av typen Char och filerna är strukturerade i form av rader. En

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

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

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

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

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

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

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

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

Föreläsning 5: Introduktion av pekare

Föreläsning 5: Introduktion av pekare Föreläsning 5: Introduktion av pekare Det bör påpekas att det som tas upp i introduktionen inte är reella exempel på kod. Man anväder inte pekare till att peka på enstaka heltal som i exemplen nedan, men

Läs mer

Minnestilldelning (allokering) och frigörande (avallokering) av minne

Minnestilldelning (allokering) och frigörande (avallokering) av minne Pekare i C++ Pekare används mycket i C++. De är bra både för att de tillåter dynamisk minnesallokering och för att de är referenser. En pekarvariabel innehåller en adress till ett element, den pekar på

Läs mer

Föreläsning 5-6 Innehåll. Exempel på program med objekt. Exempel: kvadratobjekt. Objekt. Skapa och använda objekt Skriva egna klasser

Föreläsning 5-6 Innehåll. Exempel på program med objekt. Exempel: kvadratobjekt. Objekt. Skapa och använda objekt Skriva egna klasser Föreläsning 5-6 Innehåll Exempel på program med objekt Skapa och använda objekt Skriva egna klasser public class DrawSquare { public static void main(string[] args) { SimpleWindow w = new SimpleWindow(600,

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

Föreläsning 5-6 Innehåll

Föreläsning 5-6 Innehåll Föreläsning 5-6 Innehåll Skapa och använda objekt Skriva egna klasser Datavetenskap (LTH) Föreläsning 5-6 HT 2017 1 / 32 Exempel på program med objekt public class DrawSquare { public static void main(string[]

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

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

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

Objektorienterad programmering Föreläsning 9. Copyright Mahmud Al Hakim Agenda (halvdag)

Objektorienterad programmering Föreläsning 9. Copyright Mahmud Al Hakim  Agenda (halvdag) Objektorienterad programmering Föreläsning 9 Copyright Mahmud Al Hakim mahmud@webacademy.se www.webacademy.se Agenda (halvdag) Fält Grunderna Fält med komponenter av struct-typ Fält med referenser Standardklassen

Läs mer

Datastrukturer och algoritmer

Datastrukturer och algoritmer Innehåll Datastrukturer och algoritmer Föreläsning 2 Listor Specifikation, Konstruktion Algoritmmönster Riktade listor, länkade celler Specifikation, Konstruktion Dynamiska resurser 24 25 Modell Pärm Bläddra,

Läs mer

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

Lösningsförslag. TDDC74 Programmering: Abstraktion och modellering. Dugga 3 (provkod TEN1), Tid: kl 14-16, Datum: Dugga 3 (provkod TEN1), Tid: kl 14-16, Datum: 2013-03-12 Lösningsförslag Dugga 3 (provkod TEN1), Tid: kl 14-16, Datum: 2013-03- 12 Läs alla frågorna först och bestäm dig för den ordning som passar dig

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

Objektorienterad programmering i Java

Objektorienterad programmering i Java Objektorienterad programmering i Java Föreläsning 4 Täcker i stort sett kapitel 6 i kursboken Java Software Solutions 1 Läsanvisningar Den här föreläsningen är uppbyggd som en fortsättning av exemplet

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 REPETITION & EXTENTA

Föreläsning REPETITION & EXTENTA Föreläsning 18 19 REPETITION & EXTENTA Programmeringsteknik på 45 minuter Klasser och objekt Variabler: attribut, lokala variabler, parametrar Datastrukturer Algoritmer Dessa bilder är inte repetitionsbilder

Läs mer

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Checklista. Föreläsning 1-2 Innehåll. Programmering.

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Checklista. Föreläsning 1-2 Innehåll. Programmering. EDAA20 Programmering och databaser Mål komprimerat se kursplanen för detaljer Läsperiod 1 7.5 hp anna.aelsson@cs.lth.se http://cs.lth.se/edaa20 Mer information finns på kursens webbsida samt på det utdelade

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

Idag: Par och listor. Symboler. Symboler används för att uttrycka icke-numeriska data såsom namn, adress, bilregisternummer, boktitel, osv.

Idag: Par och listor. Symboler. Symboler används för att uttrycka icke-numeriska data såsom namn, adress, bilregisternummer, boktitel, osv. Idag: Par och listor Symboler Hur hanterar man icke-numeriska problem? Hur hanterar man en samling av data? Hur konstruerar man sammansatta datastrukturer? Bra om du har läst följande avsnitt i AS: Pair

Läs mer

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

Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList.

Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList. Institutionen för Datavetenskap Göteborgs universitet HT2009 DIT011 Objektorienterad programvaruutveckling GU (DIT011) Föreläsning 3 Innehåll Lite om felhantering och Exceptions Mer om variabler och parametrar

Läs mer

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

Idag: Par och listor. Scheme. DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29 Idag: Par och listor DA2001 (Föreläsning 6) Datalogi 1 Hösten 2010 1 / 29 Idag: Par och listor Hur hanterar man icke-numeriska problem? DA2001 (Föreläsning 6) Datalogi 1 Hösten 2010 1 / 29 Idag: Par och

Läs mer

Föreläsning 8 SLUMPTAL, SIMULERING + INTRODUKTION TILL VEKTORER

Föreläsning 8 SLUMPTAL, SIMULERING + INTRODUKTION TILL VEKTORER Föreläsning 8 SLUMPTAL, SIMULERING + INTRODUKTION TILL VEKTORER Från laboration 3 till 4 I laboration 3 har du implementerat klasser implementerat metoder i klasserna I laboration 4 kommer du att implementera

Läs mer

Datastrukturer. Erik Forslin. Rum 1445, plan 4 på Nada

Datastrukturer. Erik Forslin. Rum 1445, plan 4 på Nada Datastrukturer Vad är en datastruktur? Vad är en datatyp? Primitiva datatyper i Java Icke-primitiva datatyper i Java Minnesexempel med datastrukturer Vektorer i Java Erik Forslin efo@nada.kth.se Rum 1445,

Läs mer

F5: Högnivåprogrammering

F5: Högnivåprogrammering F5: Högnivåprogrammering Parameteröverföring Koppling mellan låg- och högnivåprogrammering Lokala variabler Heapen Datatyper 1 Subrutin, parameteröverföring: 1(3) Via register genom värde Skicka data via

Läs mer

F5: Högnivåprogrammering

F5: Högnivåprogrammering 1 F5: Högnivåprogrammering Parameteröverföring Koppling mellan låg- och högnivåprogrammering Lokala variabler Heapen Datatyper 1 Subrutin, parameteröverföring: 1(3) Via register genom värde Skicka data

Läs mer

Visual Basic, en snabbgenomgång

Visual Basic, en snabbgenomgång Visual Basic, en snabbgenomgång Variabler och Datatyper En variabel är som en behållare. Olika behållare passar bra till olika saker. I Visual Basic(härefter VB) finns olika typer av behållare för olika

Läs mer

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Om att lära sig programmera. Föreläsning 1-2 Innehåll.

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Om att lära sig programmera. Föreläsning 1-2 Innehåll. EDAA20 Programmering och databaser Mål komprimerat se kursplanen för detaljer Läsperiod 1 7.5 hp anna.axelsson@cs.lth.se http://cs.lth.se/edaa20 Mer information finns på kursens webbsida samt på det utdelade

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

Föreläsning 3.1: Datastrukturer, en översikt

Föreläsning 3.1: Datastrukturer, en översikt Föreläsning.: Datastrukturer, en översikt Hittills har vi i kursen lagt mycket fokus på algoritmiskt tänkande. Vi har inte egentligen ägna så mycket uppmärksamhet åt det andra som datorprogram också består,

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

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

*Pekarvärden *Pekarvariabler & *

*Pekarvärden *Pekarvariabler & * *Pekarvärden *Pekarvariabler & * Motivering Pekare är ett fundamentalt koncept i C (och C++) Multipla returvärden från funktioner. Arrayer hanteras via pekare Dynamiskt minne (kommer i slutet av kursen)

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

Repetition i Python 3. Exemplen fac. Exemplen fac motivering. Exemplen fac i Python

Repetition i Python 3. Exemplen fac. Exemplen fac motivering. Exemplen fac i Python Repetition i Python 3 Exemplen fac Orginalet I Scheme använde vi rekursion för all slags repetition. Efterom Scheme är ett funktionellt språk återsänder alla språkkonstruktioner ett värde men i Python

Läs mer

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling metoder Föreläsning 2 Objektorienterad programmering DD1332 Array [modifierare] String metodnamn (String parameter) Returtyp (utdata typ) i detta fall String Indata typ i detta fall String 1 De får man

Läs mer

Föreläsning 6 pekare och pekare tillsammans med arrayer

Föreläsning 6 pekare och pekare tillsammans med arrayer Föreläsning 6 pekare och pekare tillsammans med arrayer Vi ska nu undersöka vad pekare egentligen är och hur de relaterar till arrayer. Det är ett centralt tema i C-programmering. Vi följer boken och går

Läs mer

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

Datalogi, grundkurs 1 Övningsuppgifter i Pascal. Serafim Dahl, Carina Edlund, Kjell Lindqvist m.fl. Datalogi, grundkurs 1 Övningsuppgifter i Pascal Serafim Dahl, Carina Edlund, Kjell Lindqvist m.fl. Hösten 2010 Datalogi, grundkurs 1, hösten 2009 1 1. Skriv en funktion som återsänder ett heltal som läses

Läs mer

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

Repetition i Pascal. Exemplen fac. Exemplen fac i Pascal. Exemplen fac motivering. Orginalet Repetition Introduktion Repetition i Exemplen fac Orginalet I Scheme använde vi rekursion för all slags repetition. Efterom Scheme är ett funktionellt språk återsänder alla språkkonstruktioner ett värde

Läs mer

TDIU01 - Programmering i C++, grundkurs

TDIU01 - Programmering i C++, grundkurs TDIU01 - Programmering i C++, grundkurs Pekare och Listor Eric Elfving Institutionen för datavetenskap 31 oktober 2014 Översikt 2/41 Internminne Pekare Dynamiska datastrukturer (Enkellänkade) listor Arbeta

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

LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p

LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p UMEÅ UNIVERSITET Datavetenskap 010530 LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p Betygsgränser 3 21,5-27 4 27,5-33,5 5 34-43 Uppgift 1. (4p) Hitta de fel som finns i nedanstående klass (det

Läs mer

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning. Programmering med Java Programmering med Java Programspråket Java Källkodsexempel Källkod Java API-exempel In- och utmatning Grunderna Ann Pan panda@nada.kth.se Rum 1445, plan 4 på Nada 08-7909690 Game.java

Läs mer

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 12

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 12 Grundläggande programmering, STS 1, VT 2007. Sven Sandberg Föreläsning 12 I torsdags: Klassen TelefonKostnad Exemplifierar objektorienterad design, metoder, konstruktorer static Standardklassen Math Matematiska

Läs mer

Datalogi I, grundkurs med Java 10p, 2D4112, Fiktiv tentamen, svar och lösningar och extra kommentarer till vissa uppgifter 1a) Dividera förs

Datalogi I, grundkurs med Java 10p, 2D4112, Fiktiv tentamen, svar och lösningar och extra kommentarer till vissa uppgifter 1a) Dividera förs Datalogi I, grundkurs med Java 10p, 2D4112, 2002-2003 Fiktiv tentamen, svar och lösningar och extra kommentarer till vissa uppgifter 1a) Dividera först talet 37 med 2. Använd heltalsdivision. Det ger kvoten

Läs mer

2D1311 Programmeringsteknik för Bio1 och Bio2, vt 2003 Fiktivt prov På flervalsfrågorna är endast ett svar rätt om inget annat anges i frågan! Det rik

2D1311 Programmeringsteknik för Bio1 och Bio2, vt 2003 Fiktivt prov På flervalsfrågorna är endast ett svar rätt om inget annat anges i frågan! Det rik 2D1311 Programmeringsteknik för Bio1 och Bio2, vt 2003 Fiktivt prov På flervalsfrågorna är endast ett svar rätt om inget annat anges i frågan! Det riktiga provet tar 45 minuter (en lektionstimme) och det

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

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

Föreläsning 11. Arrayer. Arrayer. Arrayer. Lagrar flera värden av samma typ Kan vara primitiva typer eller objekt. Kan ha en array av t.

Föreläsning 11. Arrayer. Arrayer. Arrayer. Lagrar flera värden av samma typ Kan vara primitiva typer eller objekt. Kan ha en array av t. Föreläsning 11 Arrayer Arrayer Lagrar flera värden av samma typ Kan vara primitiva typer eller objekt int[] tal = new int[3]; Kan ha en array av t.ex: Heltal (int) Tecken (char) Personer (objekt av klassen

Läs mer

2 Pekare och dynamiska variabler.

2 Pekare och dynamiska variabler. 2 Pekare och dynamiska variabler. När man definierar en variabel reserverar man samtidigt minne för variabelns värde. Detta minnesutrymme kommer man sedan åt med hjälp av variabelns namn. Definierar man

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

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

Länkade listor kan ingå som en del av språket, dock ej i C Länkade listor är ett alternativ till: Länkade listor i C Länkade listor kan ingå som en del av språket, dock ej i C Länkade listor är ett alternativ till: Dynamiskt allokerad array Arrayer allokerade på stacken Kan alltså användas till att

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

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

Funktionell programmering DD1361

Funktionell programmering DD1361 Funktionell programmering DD1361 Tupler Två eller fler (men ändligt) antal element. Elementen kan vara av olika typer. Ex: (1,2) :: (Integer, Integer) (( 2, hejsan ), True) ::? Tupel med två element ->

Läs mer

Pekare. Pekare. Varför använder vi pekare? Vad är en pekare? Pekare. Deklaration/initiering av pekare

Pekare. Pekare. Varför använder vi pekare? Vad är en pekare? Pekare. Deklaration/initiering av pekare Vad är en pekare? Varför använder vi pekare? Hur används pekare? Hur deklarerar vi pekare i C? Hur kommer vi åt pekarvärdet? DAVA07/08 JE,MG,MG,PS 2 DAVA07/08 JE,MG,MG,PS Vad är en pekare? En pekare är

Läs mer

TDDC77 Objektorienterad Programmering

TDDC77 Objektorienterad Programmering TDDC77 Objektorienterad Programmering Föreläsning 5 Sahand Sadjadee IDA, Linköpings Universitet Hösttermin 2018 Outline Arrayer Metoder Räckvidd och Livslängd Arrayer Vända om inlästa värdena Vända om

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

Agenda. Objektorienterad programmering Föreläsning 13

Agenda. Objektorienterad programmering Föreläsning 13 Objektorienterad programmering Föreläsning 13 Copyright Mahmud Al Hakim mahmud@dynamicos.se www.webacademy.se Agenda Ett objektorienterat exempel Repetition Mer om arv Abstrakta klasser Abstrakta metoder

Läs mer

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

Abstraktion. procedurabstraktion. DA2001 (Föreläsning 26) Datalogi 1 Hösten / 27 Abstraktion Inom programmeringstekniken används två former av abstraktion dataabstraktion och programabstraktion. Dataabstraktion handlar om aggregat för att gruppera samhörande data. Programabstraktion

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

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

Java, klasser, objekt (Skansholm: Kapitel 2)

Java, klasser, objekt (Skansholm: Kapitel 2) Java, klasser, objekt (Skansholm: Kapitel 2) Uppsala Universitet 11 mars 2005 Objectorienterad programmering Sida 1 Vad är en klass? En klass är ett sätt att beskriva en mängd objekt och deras gemensamma

Läs mer

Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C.

Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C. Idag Javas datatyper, arrayer, referenssemantik Klasser Arv, polymorfi, typregler, typkonvertering Strängar Tänker inte säga nåt om det som är likadant som i C. Objectorienterad programmering Sida 1 Ett

Läs mer

Motivation. Programmeringsuppgift: En första ansats: Lagra info om anställda Håll reda på varje anställds närmaste chef. som också är en anställd!

Motivation. Programmeringsuppgift: En första ansats: Lagra info om anställda Håll reda på varje anställds närmaste chef. som också är en anställd! Pekare (till objekt) Objektvariabler är pekare vad är det? (Viktiga begrepp inte bara inom objektorientering!) Hur används pekare för att sätta samman objekt (composition)? TDDD78, TDDE30, 729A85 jonas.kvarnstrom@liu.se

Läs mer

[] Arrayer = Indexerad variabel

[] Arrayer = Indexerad variabel [] Arrayer = Indexerad variabel Lagra många värden i en variabel Jmfr inom matematiken, variabler x 0, x 1, x 2, I detta dokument tas upp hur man skapar och hanterar sådana variabler i java. Dessa kallas

Läs mer

Enkla datatyper minne

Enkla datatyper minne Enkla datatyper minne 143.56 sant Sonja A falskt 18 1999-10-29 Bertil Gralvik, KTH Ingenjörsskolan 1 Addera två tal Algoritmen Summera tal Mata in två tal Beräkna Skriv ut resultat Mata in tal 1 Mata in

Läs mer

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

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

Läs mer

Imperativ programmering. Föreläsning 2

Imperativ programmering. Föreläsning 2 Imperativ programmering 1DL126 3p Föreläsning 2 Imperativ programmering Kännetecken för imperativa språk: Programmet består av en serie instruktioner. Olika språk har olika uppsättningar av instruktioner.

Läs mer

Lektion 7. Datateknik A, Java I, 5 poäng

Lektion 7. Datateknik A, Java I, 5 poäng Datateknik A, Syfte: Att kunna skapa och använda fält av både primitiva typer och egendefinierade klasser. Kunna skriva en egen enkel algoritm för sortering samt använda befintliga klasser i Javas API

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 10. Pekare (Pointers)

Föreläsning 10. Pekare (Pointers) Föreläsning 10 Pekare (Pointers) Dagens kluringar int a=5; int f(int b) a--; b++; return b; int main() int a=3; printf("%d,",f(a)); printf("%d",a); return 0; int f(int a) if(a==1) return a; else return

Läs mer

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

Dagens föreläsning Programmering i Lisp. - Bindning av variabler (avs 14.6) fria variabler statisk/lexikalisk och dynamisk bindning 1 Dagens föreläsning Programmering i Lisp - Block, räckvidd - Bindning av variabler (avs 14.6) fria variabler statisk/lexikalisk och dynamisk bindning - Felhantering (kap 17) icke-normala återhopp catch

Läs mer

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

TDDC74 Programmering: Abstraktion och modellering Datordugga 2 - exempel

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

Läs mer

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

Abstraktion. Abstraktion... Abstraktion... Abstraktion... Abstraktion Inom programmeringstekniken används två former av abstraktion dataabstraktion och programabstraktion. Dataabstraktion handlar om aggregat för att gruppera samhörande data. Programabstraktion

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

Inledande programmering med C# (1DV402) 27+15=42 1 (22)

Inledande programmering med C# (1DV402) 27+15=42 1 (22) 27+15=42 1 (22) Variabler Upphovsrätt för detta verk Detta verk är framtaget i anslutning till kursen Inledande programmering med C# vid Linnéuniversitetet. Du får använda detta verk så här: Allt innehåll

Läs mer

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

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

Läs mer

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

Introduktion. Klasser. TDP004 Objektorienterad Programmering Fö 2 Objektorientering grunder

Introduktion. Klasser. TDP004 Objektorienterad Programmering Fö 2 Objektorientering grunder Introduktion TDP004 Objektorienterad Programmering Fö 2 Objektorientering grunder OO är den mest använda programmeringsparadigmen idag, viktigt steg att lära sig och använda OO. Klasser är byggstenen i

Läs mer

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

Programmering i C++ EDA623 Objektorienterad programutveckling. EDA623 (Föreläsning 5) HT 2013 1 / 33 Programmering i C++ EDA623 Objektorienterad programutveckling EDA623 (Föreläsning 5) HT 2013 1 / 33 Objektorienterad programutveckling Innehåll Grundläggande begrepp Relationer mellan objekt Grafisk representation

Läs mer

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

Sökning i ordnad lista. Sökning och sortering. Sökning med vaktpost i oordnad lista Sökning och sortering Sökning i oordnad lista 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

Läs mer

F7 - Arrayer. ID1004 Objektorienterad programmering Fredrik Kilander

F7 - Arrayer. ID1004 Objektorienterad programmering Fredrik Kilander F7 - Arrayer ID1004 Objektorienterad programmering Fredrik Kilander fki@kth.se Array, arrayer, arrayen En array är en lista av variabler av samma typ Arrayen har en fast längd (antal element) Enskilda

Läs mer

Klasser och objekt, referenser Grundkurs i programmering med Python

Klasser och objekt, referenser Grundkurs i programmering med Python Hösten 2009 Dagens lektion Klasser och objekt Referenser 2 Klasser och objekt 3 KLASSER OCH OBJEKT Relaterat data Information om en fyrkant Bredd Höjd Färg 4 KLASSER OCH OBJEKT Egna datatyper Skapa en

Läs mer

Objekt och referenser

Objekt och referenser Objekt och referenser Antag att vi har följande enkla klass: public class Person { private String namn; private String adress; private String personnummer; public Person() { namn = NN ; adress = ; personnummer

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