Programmeringsspråket C Del 3. Hans Petter Taugbøl Kragset

Størrelse: px
Begynne med side:

Download "Programmeringsspråket C Del 3. Hans Petter Taugbøl Kragset"

Transkript

1 Programmeringsspråket C Del 3 Hans Petter Taugbøl Kragset

2 Repetisjon I C er ikke array en egen type, men variabler kan være arrayer! Pekere C-strenger Veldig likt Java på mange måter Programmering er fortsatt programmering Hans Petter Taugbøl Kragset 2

3 Repetisjon Fil- og bruker-input Hans Petter Taugbøl Kragset 3

4 #include <stdio.h> #include <stdlib.h> Programmet er ferdig! char* read_file(char *file_name) { int read_size; FILE *file = fopen(file_name, "r"); fgets(&read_size, sizeof(int), file); char *s = (char*) malloc(read_size * sizeof(char) + 1); fgets(s, read_size + 1, file); s[read_size] = \0 ; return s; int main(void) { char *s = read_file("test.txt"); printf("%s\n", s); Hans Petter Taugbøl Kragset 4

5 Repetisjon Fil- og bruker-input man-sider Hans Petter Taugbøl Kragset 5

6 Oppsummert om man-sider SYNOPSIS Signaturer parametre og returtype DESCRIPTION Beskrivelse av oppførsel og bruk av parametre RETURN VALUE Beskriver returverdier ved suksess og feil SEE ALSO Andre, relaterte man-sider Hans Petter Taugbøl Kragset 6

7 Repetisjon Fil- og bruker-input man-sider Minnet i datamaskinen Hans Petter Taugbøl Kragset 7

8 Minnet i en datamaskin Vi kan skrive skriv(3, ) Vi kan lese les(3) => Vi kan flytte flytt(3, 8) Adresse Bitmønster (en byte) Hans Petter Taugbøl Kragset 8

9 Repetisjon Fil- og bruker-input man-sider Minnet i datamaskinen Bitoperasjoner Hans Petter Taugbøl Kragset 9

10 Bitoperasjoner De som har hatt INF1080 burde klare dette fint Operasjon Operator A B resultat NOT ~ AND & OR XOR ^ SHIFT R >> SHIFT L << Hans Petter Taugbøl Kragset 10

11 Innhold Dobbeltpekere Heap og stack malloc #define Header-filer Hans Petter Taugbøl Kragset 11

12 Dobbeltpekere Hans Petter Taugbøl Kragset 12

13 Hva er en peker En variabel som peker på et sted i minnet På det stedet ligger det et eller annet! struct list { struct list *next; struct list *prev; void *data; ; struct list l1; struct list l2; l1.next = &l2; l2.prev = &l1; struct person p; l1.data = (void*) &p; Hans Petter Taugbøl Kragset 13

14 Hva er en dobbeltpeker En variabel som peker på et sted i minnet På det stedet ligger det et eller annet......som også er en peker! int a = 1234; int *p = &a; int **double_p = &p; Hans Petter Taugbøl Kragset 14

15 Hva er hensikten med dobbeltpekere Kjempefint det altså..! Men hva skal vi bruke det til? struct person { int age; ; struct person *p1 = malloc(...); struct person *p2 = malloc(...); struct person *p3 = malloc(...); struct person *p4 = malloc(...); struct person *p5 = malloc(...); struct person *p6 = malloc(...); struct person *p7 = malloc(...); struct person *p8 = malloc(...); Hans Petter Taugbøl Kragset 15

16 Hva er hensikten med dobbeltpekere Kjempefint det altså..! Men hva skal vi bruke det til? struct person { int age; ; struct person *persons[100]; int i; for(i = 0; i < 100; i++) { persons[i] = malloc(...); Hans Petter Taugbøl Kragset 16

17 Hva er hensikten med dobbeltpekere Kjempefint det altså..! Men hva skal vi bruke det til? Veldig stygg og lang syntax! struct person { int age; ; struct person **persons = malloc(...); int i; for(i = 0; i < ARR_LEN; i++) { persons[i] = malloc(...);... struct person **persons = (struct person**) malloc(sizeof(struct person*) * ARR_LEN)); Hans Petter Taugbøl Kragset 17

18 Dobbeltpekere og typedef Typedef Gi en type et annet navn Litt ryddigere syntax! typedef struct person { int age; ; **persons = malloc(...); int i; for(i = 0; i < ARR_LEN; i++) { persons[i] = malloc(...);... Den generelle tilnærmingen: type* s = (type*) malloc(size * sizeof(type)); **persons = (**) malloc(sizeof(*) * ARR_LEN); Hans Petter Taugbøl Kragset 18

19 Dobbeltpekere Så hvordan ser datastrukturen ut? typedef struct person { int age; ; **persons = malloc(...); int i; for(i = 0; i < ARR_LEN; i++) { persons[i] = malloc(...); Hans Petter Taugbøl Kragset 19

20 Dobbeltpekere **persons persons[0] persons[1] persons[2] persons[3]... persons[i] typedef struct person { int age; ; **persons = malloc(...); int i; for(i = 0; i < ARR_LEN; i++) { persons[i] = malloc(...); Hans Petter Taugbøl Kragset 20

21 Dobbeltpekere **persons persons[0] persons[1] persons[2] persons[3]... persons[i] typedef struct person { int age; ; **persons = malloc(...); int i; for(i = 0; i < ARR_LEN; i++) { persons[i] = malloc(...); Hans Petter Taugbøl Kragset 21

22 Dobbeltpekere **persons persons[0] persons[1] persons[2] persons[3]... persons[i] typedef struct person { int age; ; **persons = malloc(...); int i; for(i = 0; i < ARR_LEN; i++) { persons[i] = malloc(...); Hans Petter Taugbøl Kragset 22

23 Dobbeltpekere **persons persons[0] persons[1] persons[2] persons[3]... persons[i] typedef struct person { int age; ; **persons = malloc(...); int i; for(i = 0; i < ARR_LEN; i++) { persons[i] = malloc(...); Hans Petter Taugbøl Kragset 23

24 Dobbeltpekere **persons persons[0] persons[1] persons[2] persons[3]... persons[i] typedef struct person { int age; ; **persons = malloc(...); int i; for(i = 0; i < ARR_LEN; i++) { persons[i] = malloc(...); Hans Petter Taugbøl Kragset 24

25 Dobbeltpekere **persons persons[0] persons[1] persons[2] persons[3]... persons[i] typedef struct person { int age; ; **persons = malloc(...); int i; for(i = 0; i < ARR_LEN; i++) { persons[i] = malloc(...); Hans Petter Taugbøl Kragset 25

26 Heap og stack Hans Petter Taugbøl Kragset 26

27 Dynamisk og statisk allokering Vi har sett to måter å sette av minneområder på 1)char buf[100]; 2)char *s = malloc(sizeof(char) * 100); Hva har vi sett så langt? Vi så at 1) ikke fungerer utenfor en funksjon Derimot fungerer 2) også utenfor en funksjon Hvorfor er det sånn? Hans Petter Taugbøl Kragset 27

28 Stack Hva er en stack? Last In First Out (LIFO) Hva brukes en stack til? Lokale variable Funksjonskall Hans Petter Taugbøl Kragset 28

29 Stack #include <stdio.h> #include <stdlib.h> char* read_user() { int read_size; char buf[64]; fgets(buf, sizeof(buf), stdin); read_size = atoi(buf); char *s = malloc(...); fgets(s, read_size + 1, stdin); return s; int main(void) { char *s = read_user(); printf("%s\n", s); *s ((stack)) Hans Petter Taugbøl Kragset 29

30 Stack #include <stdio.h> #include <stdlib.h> char* read_user() { int read_size; char buf[64]; fgets(buf, sizeof(buf), stdin); read_size = atoi(buf); char *s = malloc(...); fgets(s, read_size + 1, stdin); return s; int main(void) { char *s = read_user(); printf("%s\n", s); ((div)) *s ((stack)) Hans Petter Taugbøl Kragset 30

31 Stack #include <stdio.h> #include <stdlib.h> char* read_user() { int read_size; char buf[64]; fgets(buf, sizeof(buf), stdin); read_size = atoi(buf); char *s = malloc(...); fgets(s, read_size + 1, stdin); return s; int main(void) { char *s = read_user(); printf("%s\n", s); read_size ((div)) *s ((stack)) Hans Petter Taugbøl Kragset 31

32 Stack #include <stdio.h> #include <stdlib.h> char* read_user() { int read_size; char buf[64]; fgets(buf, sizeof(buf), stdin); read_size = atoi(buf); char *s = malloc(...); fgets(s, read_size + 1, stdin); return s; int main(void) { char *s = read_user(); printf("%s\n", s); buf[64] read_size ((div)) *s ((stack)) Hans Petter Taugbøl Kragset 32

33 Stack #include <stdio.h> #include <stdlib.h> char* read_user() { int read_size; char buf[64]; fgets(buf, sizeof(buf), stdin); read_size = atoi(buf); char *s = malloc(...); fgets(s, read_size + 1, stdin); return s; int main(void) { char *s = read_user(); printf("%s\n", s); fgets() ((div)) buf[64] read_size ((div)) *s ((stack)) Hans Petter Taugbøl Kragset 33

34 Stack #include <stdio.h> #include <stdlib.h> char* read_user() { int read_size; char buf[64]; fgets(buf, sizeof(buf), stdin); read_size = atoi(buf); char *s = malloc(...); fgets(s, read_size + 1, stdin); return s; int main(void) { char *s = read_user(); printf("%s\n", s); buf[64] read_size ((div)) *s ((stack)) Hans Petter Taugbøl Kragset 34

35 Stack #include <stdio.h> #include <stdlib.h> char* read_user() { int read_size; char buf[64]; fgets(buf, sizeof(buf), stdin); read_size = atoi(buf); char *s = malloc(...); fgets(s, read_size + 1, stdin); return s; int main(void) { char *s = read_user(); printf("%s\n", s); atoi() ((div)) buf[64] read_size ((div)) *s ((stack)) Hans Petter Taugbøl Kragset 35

36 Stack #include <stdio.h> #include <stdlib.h> char* read_user() { int read_size; char buf[64]; fgets(buf, sizeof(buf), stdin); read_size = atoi(buf); char *s = malloc(...); fgets(s, read_size + 1, stdin); return s; int main(void) { char *s = read_user(); printf("%s\n", s); buf[64] read_size ((div)) *s ((stack)) Hans Petter Taugbøl Kragset 36

37 Stack #include <stdio.h> #include <stdlib.h> char* read_user() { int read_size; char buf[64]; fgets(buf, sizeof(buf), stdin); read_size = atoi(buf); char *s = malloc(...); fgets(s, read_size + 1, stdin); return s; int main(void) { char *s = read_user(); printf("%s\n", s); *s buf[64] read_size ((div)) *s ((stack)) Hans Petter Taugbøl Kragset 37

38 Stack #include <stdio.h> #include <stdlib.h> char* read_user() { int read_size; char buf[64]; fgets(buf, sizeof(buf), stdin); read_size = atoi(buf); char *s = malloc(...); fgets(s, read_size + 1, stdin); return s; int main(void) { char *s = read_user(); printf("%s\n", s); malloc() ((div)) *s buf[64] read_size ((div)) *s ((stack)) Hans Petter Taugbøl Kragset 38

39 Stack #include <stdio.h> #include <stdlib.h> char* read_user() { int read_size; char buf[64]; fgets(buf, sizeof(buf), stdin); read_size = atoi(buf); char *s = malloc(...); fgets(s, read_size + 1, stdin); return s; int main(void) { char *s = read_user(); printf("%s\n", s); *s s[0] s[1]... s[read_size] buf[64] read_size ((div)) *s ((stack)) Hans Petter Taugbøl Kragset 39

40 Stack #include <stdio.h> #include <stdlib.h> char* read_user() { int read_size; char buf[64]; fgets(buf, sizeof(buf), stdin); read_size = atoi(buf); char *s = malloc(...); fgets(s, read_size + 1, stdin); return s; int main(void) { char *s = read_user(); printf("%s\n", s); fgets() ((div)) *s buf[64] read_size ((div)) *s ((stack)) Hans Petter Taugbøl Kragset 40

41 Stack #include <stdio.h> #include <stdlib.h> char* read_user() { int read_size; char buf[64]; fgets(buf, sizeof(buf), stdin); read_size = atoi(buf); char *s = malloc(...); fgets(s, read_size + 1, stdin); return s; int main(void) { char *s = read_user(); printf("%s\n", s); *s s[0] s[1]... s[read_size] buf[64] read_size ((div)) *s ((stack)) Hans Petter Taugbøl Kragset 41

42 Stack #include <stdio.h> #include <stdlib.h> char* read_user() { int read_size; char buf[64]; fgets(buf, sizeof(buf), stdin); read_size = atoi(buf); char *s = malloc(...); fgets(s, read_size + 1, stdin); return s; int main(void) { char *s = read_user(); printf("%s\n", s); *s buf[64] read_size ((div)) *s ((stack)) Hans Petter Taugbøl Kragset 42

43 Stack #include <stdio.h> #include <stdlib.h> char* read_user() { int read_size; char buf[64]; fgets(buf, sizeof(buf), stdin); read_size = atoi(buf); char *s = malloc(...); fgets(s, read_size + 1, stdin); return s; int main(void) { char *s = read_user(); printf("%s\n", s); *s ((stack)) Hans Petter Taugbøl Kragset 43

44 Stack #include <stdio.h> #include <stdlib.h> char* read_user() { int read_size; char buf[64]; fgets(buf, sizeof(buf), stdin); read_size = atoi(buf); char *s = malloc(...); fgets(s, read_size + 1, stdin); return s; int main(void) { char *s = read_user(); printf("%s\n", s); printf() ((div)) *s ((stack)) Hans Petter Taugbøl Kragset 44

45 Stack #include <stdio.h> #include <stdlib.h> char* read_user() { int read_size; char buf[64]; fgets(buf, sizeof(buf), stdin); read_size = atoi(buf); char *s = malloc(...); fgets(s, read_size + 1, stdin); return s; int main(void) { char *s = read_user(); printf("%s\n", s); Hans Petter Taugbøl Kragset 45

46 #include <stdio.h> #include <stdlib.h> char* read_user() { int read_size; char buf[64]; Stack s[0] s[1]... s[read_size] fgets(buf, sizeof(buf), stdin); read_size = atoi(buf); char *s = malloc(...); fgets(s, read_size + 1, stdin); return s; int main(void) { char *s = read_user(); printf("%s\n", s); Hva skjer med det området vi fikk fra malloc()? Hvis det ikke er på stacken, hvor er det da? Hans Petter Taugbøl Kragset 46

47 Heap Hans Petter Taugbøl Kragset 47

48 Heap s[0] s[1] #include <stdio.h> #include <stdlib.h> char* read_user() { int read_size; char buf[64]; fgets(buf, sizeof(buf), stdin); read_size = atoi(buf); char *s = malloc(...); fgets(s, read_size + 1, stdin); return s; int main(void) { char *s = read_user(); printf("%s\n", s); En prosess sitt minneområde!... s[read_size] printf() ((div)) *s ((stack)) Hans Petter Taugbøl Kragset 48

49 malloc/free Hans Petter Taugbøl Kragset 49

50 #include <stdio.h> #include <stdlib.h> char* read_user() { int read_size; char buf[64]; free() s[0] s[1]... s[read_size] fgets(buf, sizeof(buf), stdin); read_size = atoi(buf); char *s = malloc(...); fgets(s, read_size + 1, stdin); return s; int main(void) { char *s = read_user(); printf("%s\n", s); free(s); free() ((div)) *s ((stack)) Hans Petter Taugbøl Kragset 50

51 free() #include <stdio.h> #include <stdlib.h> char* read_user() { int read_size; char buf[64]; fgets(buf, sizeof(buf), stdin); read_size = atoi(buf); char *s = malloc(...); fgets(s, read_size + 1, stdin); return s; int main(void) { char *s = read_user(); printf("%s\n", s); free(s); *s ((stack)) Hans Petter Taugbøl Kragset 51

52 free() Frigjør allokert minne Hvorfor skal vi gjøre det? Minne er en begrenset ressurs Vi bør ikke holde på reserverte områder vi ikke bruker Ikke alle programmer skal kjøre på store servere med 120GB ram Noen skal kjøre på bittesmå maskiner inne i piller i medisinsk sammenheg etc Hensyn til andre prosesser Hans Petter Taugbøl Kragset 52

53 #define Hans Petter Taugbøl Kragset 53

54 Dobbeltpekere og typedef Typedef Gi en type et annet navn Litt ryddigere syntax! typedef struct person { int age; ; Hva Hva var var greia greia med med ARR_LEN? ARR_LEN? **persons = malloc(...); int i; for(i = 0; i < 100; i++) { persons[i] = malloc(...);... Den generelle tilnærmingen: type* s = (type*) malloc(size * sizeof(type)); **persons = (**) malloc(sizeof(*) * ARR_LEN)); Hans Petter Taugbøl Kragset 54

55 #define #define X Y X blir byttet ut med Y før kompilering #define ARR_LEN 100 typedef struct person { int age; ; **persons = malloc(...); int i; for(i = 0; i < ARR_LEN; i++) { persons[i] = malloc(...);... **persons = (**) malloc(sizeof(*) * ARR_LEN)); Hans Petter Taugbøl Kragset 55

56 Hva skal vi med #define? Vi kan definere konstanter Vi kan forandre kodeflyt basert på definisjoner #define DEBUG... #ifdef DEBUG printf("debug statement!\n"); #endif Hans Petter Taugbøl Kragset 56

57 Hva skal vi med #define? Vi kan også definere under kompilering $ gcc -DDEBUG debug.c -o debug Dette fører til at DEBUG blir definert som om skrev #define DEBUG i filen Merk at det ikke er mellomrom, -DDEBUG Kan være hva som helst og flere på en gang -DDEBUG -DINF1060 -DWHATEVER Hans Petter Taugbøl Kragset 57

58 Flere filer og Header-filer Hans Petter Taugbøl Kragset 58

59 Flere filer Hva hvis vi vil bruke flere filer? For bedre oversikt over koden vår Hans Petter Taugbøl Kragset 59

60 Flere filer Vi kan fritt dele opp koden vår i flere filer person.c main.c #include <stdlib.h> #include <stdio.h> #define ARR_LEN 100 typedef struct person { int age; ; ** create_person_arr() { **persons = malloc(...); int i; for(i = 0; i < 100; i++) { persons[i] = malloc(...); return persons; typedef struct person { int age; ; ** create_person_arr(); int main(void) { **persons; persons = create_persons_arr(); Hans Petter Taugbøl Kragset 60

61 Header-filer Header-filer kan inneholde felles definisjoner person.c main.c #include "person.h" #include "person.h" ** create_person_arr() { **persons = malloc(...); int i; for(i = 0; i < 100; i++) { persons[i] = malloc(...); return persons; int main(void) { **persons; persons = create_persons_arr(); person.h #include <stdio.h> #include <stdlib.h> #define ARR_LEN 100 typedef struct person { int age; ; ** create_person_arr(); Hans Petter Taugbøl Kragset 61

62 Header-filer Når vi bruker #include blir filen vi inkluderer limt inn der. Hva skjer hvis vi inkluderer den samme filen flere steder? Som i eksempelet vårt, person.c og main.c inkluderer person.h begge to Da blir person.h limt inn 2 ganger i det ferdige produktet! Hans Petter Taugbøl Kragset 62

63 Header-filer Da gjør vi sånn her! Hvis vi har inkludert før, blir den ikke inkludert på nytt Nyttig bruksområde for #define! #ifndef = if not defined person.h #ifndef PERSON_H #define PERSON_H #include <stdio.h> #include <stdlib.h> #define ARR_LEN 100 typedef struct person { int age; ; ** create_person_arr(); #endif Hans Petter Taugbøl Kragset 63

64 Oppsummering Hva har vi lært? Hans Petter Taugbøl Kragset 64

65 Oppsummering, del 1 Bakgrunn, hvorfor C? Hello World Kompilering C vs Java Det var ikke så store forskjeller! Arrays Structer String Pekere Hans Petter Taugbøl Kragset 65

66 Oppsummering, del 2 Minneallokering malloc Innlesing fra bruker Innlesing fra fil Googling man-sider Minnet i datamaskinen Bitoperasjoner Hans Petter Taugbøl Kragset 66

67 Oppsummering, del 3 Dobbeltpekere Heap og stack malloc #define Header-filer Hans Petter Taugbøl Kragset 67

68 Spørsmål? Hans Petter Taugbøl Kragset 68

Programmeringsspråket C Del 2. Hans Petter Taugbøl Kragset

Programmeringsspråket C Del 2. Hans Petter Taugbøl Kragset Programmeringsspråket C Del 2 Hans Petter Taugbøl Kragset Repetisjon I C er ikke array en egen type, men variabler kan være arrayer! 28.08.17 Hans Petter Taugbøl Kragset 2 Arrays Java int[] arr1 = {1,

Detaljer

Del 4 Noen spesielle C-elementer

Del 4 Noen spesielle C-elementer Del 4 Noen spesielle C-elementer 1 RR 2016 Header-filer inneholder Prototypene til funksjonene i standard biblioteket Verdier og definisjoner som disse funksjonene bruker #include #include

Detaljer

Programmeringsspråket C Del 3

Programmeringsspråket C Del 3 Programmeringsspråket C Del 3 Kjell Åge Bringsrud E-mail: kjellb@ifi.uio.no 9/1/2005 inf1060 V05 1 Dynamisk allokering Ofte trenger man å opprette objekter under kjøringen i tillegg til variablene. Standardfunksjonen

Detaljer

Dagens tema INF2270. Cs preprosessor. Separat kompilering av C funksjoner. C og minnet. Dag Langmyhr,Ifi,UiO: Forelesning 5. februar 2007 Ark 1 av 15

Dagens tema INF2270. Cs preprosessor. Separat kompilering av C funksjoner. C og minnet. Dag Langmyhr,Ifi,UiO: Forelesning 5. februar 2007 Ark 1 av 15 Dagens tema Cs preprosessor Separat kompilering av C funksjoner C og minnet Dag Langmyhr,Ifi,UiO: Forelesning 5. februar 2007 Ark 1 av 15 Cs preprosessor Før selve kompileringen går C kompilatoren gjennom

Detaljer

IN 147 Program og maskinvare

IN 147 Program og maskinvare Dagens tema Mer om C Cs preprosessor Allokering av variable Separat kompilering Programmet make Pekere i C Operasjoner på pekere Pekere og vektorer Referanseparametre Pekere til «alt» og «ingenting» Dynamisk

Detaljer

Programmeringsspråket C Del 3

Programmeringsspråket C Del 3 Programmeringsspråket C Del 3 Kjell Åge Bringsrud E-mail: kjellb@ifi.uio.no Dynamisk allokering Ofte trenger man å opprette objekter under kjøringen i tillegg til variablene. Standardfunksjonen malloc

Detaljer

Programmeringsspråket C Del 3

Programmeringsspråket C Del 3 Programmeringsspråket C Del 3 Michael Welzl E-mail: michawe@ifi.uio.no 29.08.13 inf1060 1 Dynamisk allokering Ofte trenger man å opprette objekter under kjøringen i tillegg til variablene. Standardfunksjonen

Detaljer

Programmeringsspråket C Del 3

Programmeringsspråket C Del 3 Programmeringsspråket C Del 3 Michael Welzl E-mail: michawe@ifi.uio.no 8/25/10 inf1060 1 Dynamisk allokering Ofte trenger man å opprette objekter under kjøringen i tillegg til variablene. Standardfunksjonen

Detaljer

Dagens tema C, adresser og pekere

Dagens tema C, adresser og pekere Dagens tema C, adresser og pekere (Kapittel 17 i Patt&Patel-boken) Variable og adresser Pekervariable Parametre Dynamisk allokering Stakker og ringbuffere Ark 1 av 26 Adresser Som nevnt tidligere ligger

Detaljer

Ark 3 av 26. printf("i adresse %08x ligger b med verdien %d.\n", &b, b); printf("i adresse %08x ligger a med verdien %d.

Ark 3 av 26. printf(i adresse %08x ligger b med verdien %d.\n, &b, b); printf(i adresse %08x ligger a med verdien %d. Dagens tema C, adresser og pekere (Kapittel 17 i Patt&Patel-boken) Variable og adresser Pekervariable Parametre Dynamisk allokering Stakker og ringbuffere Adresser Som nevnt tidligere ligger data og programkode

Detaljer

Cs preprosessor. Dagens tema. Betinget kompilering

Cs preprosessor. Dagens tema. Betinget kompilering Dagens tema Dagens tema Inkludering av filer Cs preprosessor Cs preprosessor Separat kompilering av C funksjoner C og minnet Før selve kompileringen går C kompilatoren gjennom koden med en preprosessor

Detaljer

Del 1 En oversikt over C-programmering

Del 1 En oversikt over C-programmering Del 1 En oversikt over C-programmering 1 RR 2016 Starten C ble utviklet mellom 1969 og 1973 for å re-implementere Unix operativsystemet. Er et strukturert programmeringsspråk, hvor program bygges opp av

Detaljer

Nybegynnerkurs i C. Øyvind Grønnesby. 14. oktober Introduksjon Typer Operatorer Kontrollstrukturer Pekere Makroer Lenker

Nybegynnerkurs i C. Øyvind Grønnesby. 14. oktober Introduksjon Typer Operatorer Kontrollstrukturer Pekere Makroer Lenker Nybegynnerkurs i C Øyvind Grønnesby 14. oktober 2004 Introduksjon pass-by-value svakt typet portabel assembler siste ISO-standard er C99 Hello world #i n c l u d e < s t d l i b. h> #i n c l u d e

Detaljer

Dagens tema. Cs preprosessor Separat kompilering av C-funksjoner C og minnet Oversikt over operatorene

Dagens tema. Cs preprosessor Separat kompilering av C-funksjoner C og minnet Oversikt over operatorene Dagens tema Dagens tema Cs preprosessor Separat kompilering av C-funksjoner C og minnet Oversikt over operatorene Inkludering av filer Cs preprosessor Før selve kompileringen går C-kompilatoren gjennom

Detaljer

Velkommen til INF1060 høsten 2017

Velkommen til INF1060 høsten 2017 Velkommen til INF1060 høsten 2017 Introduksjon til operativsystemer og datakommunikasjon Presentasjonen er delvis basert på tidligere presentasjoner av Michael Welzl og Dag Langmyhr Foreleserne Pål Halvorsen

Detaljer

Programmeringsspråket C Del 2

Programmeringsspråket C Del 2 Programmeringsspråket C Del 2 Kjell Åge Bringsrud E-mail: kjellb@ifi.uio.no 30.08.2005 inf1060 H05 1 Et eksempel Dette er lite eksempel som ber om et tall, leser det og så teller fra det ned til 0. 30.08.2005

Detaljer

Repetisjon fra sist - 1: Plan for dagen. Repetisjon fra sist 2: Hva jeg glemte sist: Nyttige Kommandoer

Repetisjon fra sist - 1: Plan for dagen. Repetisjon fra sist 2: Hva jeg glemte sist: Nyttige Kommandoer -lxxx -c -S -E -o -g -O -I -L gcc Make man l cpp ar ranlib nm valgrind Plan for dagen Repetisjon fra sist - 1: Nyttige Kommandoer Repetisjon Språkmekanismer for programflyt Datatyper &

Detaljer

Programmeringsspråket C Del 2

Programmeringsspråket C Del 2 Et eksempel Programmeringsspråket C Del 2 Dette er lite eksempel som ber om et tall, leser det og så teller fra det ned til 0. Kjell Åge Bringsrud E-mail: kjellb@ifi.uio.no inf1060 1 inf1060 2 Forklaring:

Detaljer

Vektorer. Dagens tema. Deklarasjon. Bruk

Vektorer. Dagens tema. Deklarasjon. Bruk Dagens tema Dagens tema Deklarasjon Vektorer Vektorer (array-er) Tekster (string-er) Adresser og pekere Dynamisk allokering Alle programmeringsspråk har mulighet til å definere en såkalte vektor (også

Detaljer

IN 147 Program og maskinvare

IN 147 Program og maskinvare Dagens tema Basistyper i C Typekonvertering Formater i printf Pekere i C En kort repetisjon om pekere Hva er egentlig en peker? Pekere til alt og ingenting Pekere som parametre Pekere og vektorer Ark 1

Detaljer

Programmeringsspråket C Del 2

Programmeringsspråket C Del 2 Programmeringsspråket C Del 2 Michael Welzl E-mail: michawe@ifi.uio.no 8/25/10 inf1060 1 Et eksempel Dette er lite eksempel som ber om et tall, leser det og så teller fra det ned til 0. 8/25/10 inf1060

Detaljer

Programmeringsspråket C Del 3. Michael Welzl

Programmeringsspråket C Del 3. Michael Welzl Programmeringsspråket C Del 3 Michael Welzl 1 Vektorer og minneallokering Vektorer blir ikke initialisert å allokere en vektor er bare en statisk måte å allokere minne på. char a, b[4], c; a = 3; b[0]

Detaljer

Dagens tema INF1070. Vektorer (array er) Tekster (string er) Adresser og pekere. Dynamisk allokering

Dagens tema INF1070. Vektorer (array er) Tekster (string er) Adresser og pekere. Dynamisk allokering Dagens tema Vektorer (array er) Tekster (string er) Adresser og pekere Dynamisk allokering Dag Langmyhr,Ifi,UiO: Forelesning 23. januar 2006 Ark 1 av 23 Vektorer Alle programmeringsspråk har mulighet til

Detaljer

Dagens tema. Cs preprosessor Separat kompilering av C-funksjoner C og minnet Oversikt over operatorene

Dagens tema. Cs preprosessor Separat kompilering av C-funksjoner C og minnet Oversikt over operatorene Dagens tema Dagens tema Cs preprosessor Separat kompilering av C-funksjoner C og minnet Oversikt over operatorene Inkludering av filer Cs preprosessor Før selve kompileringen går C-kompilatoren gjennom

Detaljer

IN 147 Program og maskinvare. Dagens tema

IN 147 Program og maskinvare. Dagens tema Dagens tema Kort repetisjon Unioner Cs preprosessor Allokering av variable Separat kompilering Programmet make Datastrukturer Matriser Dynamiske matriser Ringbuffere Oblig2 Obligatorisk oppgave nr. 2 slippes

Detaljer

IN 147 Program og maskinvare

IN 147 Program og maskinvare Dagens program Repetisjon Basistyper i C Typekonvertering Formater i printf Deklarasjon av nye typer Pekere i C En kort repetisjon om pekere Pekere som parametre Pekere og vektorer Regning med pekere Pekere

Detaljer

Dagens tema. C-programmering. Nøkkelen til å forstå C-programmering ligger i å forstå hvordan minnet brukes.

Dagens tema. C-programmering. Nøkkelen til å forstå C-programmering ligger i å forstå hvordan minnet brukes. Dagens tema Dagens tema C-programmering Nøkkelen til å forstå C-programmering ligger i å forstå hvordan minnet brukes. Adresser og pekere Parametre Vektorer (array-er) Tekster (string-er) Hvordan ser minnet

Detaljer

Dagens tema: Datastrukturer

Dagens tema: Datastrukturer Dagens tema: Datastrukturer Matriser Dynamiske matriser Ringbuffere Mengder Lister Enkle listeoperasjoner Programmering av en listepakke Lister med hode og hale Toveislister Onsdag 24.3 Avslutning av IN147A

Detaljer

Programmeringsspråket C

Programmeringsspråket C Programmeringsspråket C Bakgrunn Implementasjon av Unix ved AT&Ts laboratorium i Palo Alto 1960 75. Navnet kommer fra BCPL B C. Opphavsmannnen heter Dennis Ritchie. ANSI standard i 1988; omtrent alle følger

Detaljer

Dagens tema INF1070. Vektorer (array-er) Tekster (string-er) Adresser og pekere. Dynamisk allokering

Dagens tema INF1070. Vektorer (array-er) Tekster (string-er) Adresser og pekere. Dynamisk allokering Dagens tema Vektorer (array-er) Tekster (string-er) Adresser og pekere Dynamisk allokering Dag Langmyhr,Ifi,UiO: Forelesning 17. januar 2005 Ark 1 av 23 Vektorer Alle programmeringsspråk har mulighet til

Detaljer

Kapittel 1 En oversikt over C-språket

Kapittel 1 En oversikt over C-språket Kapittel 1 En oversikt over C-språket RR 2015 1 Skal se på hvordan man En innføring i C Skriver data til skjermen Lese data fra tastaturet Benytter de grunnleggende datatypene Foretar enkle matematiske

Detaljer

Dagens tema INF1070. Info om C. Cs preprosessor. Feilsøking. Dag Langmyhr,Ifi,UiO: Forelesning 31. januar 2005 Ark 1 av 29

Dagens tema INF1070. Info om C. Cs preprosessor. Feilsøking. Dag Langmyhr,Ifi,UiO: Forelesning 31. januar 2005 Ark 1 av 29 Dagens tema Info om C Cs preprosessor Feilsøking Dag Langmyhr,Ifi,UiO: Forelesning 31. januar 2005 Ark 1 av 29 Informasjon om C Den viktigste kilden til informasjon om C (utenom en god oppslagsbok) er

Detaljer

Informasjon om C. Dagens tema INF1070 INF1070 INF1070 INF1070. Den viktigste kilden til informasjon om C (utenom en god. C-funksjonene.

Informasjon om C. Dagens tema INF1070 INF1070 INF1070 INF1070. Den viktigste kilden til informasjon om C (utenom en god. C-funksjonene. Dagens tema Info om C Cs preprosessor Feilsøking Dag Langmyhr,Ifi,UiO: Forelesning 31. januar 2005 Ark 1 av 29 Dag Langmyhr,Ifi,UiO: Forelesning 31. januar 2005 Ark 2 av 29 NAME sqrt - square root function

Detaljer

Programmeringsspråket C Del 2. Michael Welzl

Programmeringsspråket C Del 2. Michael Welzl Programmeringsspråket C Del 2 Michael Welzl 1 Et eksempel Dette er lite eksempel som ber om et tall, leser det og så teller fra det nedover til 0 $> gcc countdown.c -o countdown $>./countdown ===== Countdown

Detaljer

INF1060 Introduksjon til operativsystem og datakommunikasjon

INF1060 Introduksjon til operativsystem og datakommunikasjon INF1060 Introduksjon til operativsystem og datakommunikasjon Dette er et oppgavesett for trening September 24, 2012 Simpel Ifi-epost system (lokal) og diverse oppgaver Denne oppgaven går ut på å lage et

Detaljer

Programmeringsspråket C

Programmeringsspråket C Programmeringsspråket C Programmeringsspråket C Implementasjon av Unix ved AT&Ts laboratorium i Palo Alto 1960 75. Navnet kommer fra BCPL B C. Opphavsmannnen heter Dennis Ritchie. ANSI-standard i 1988;

Detaljer

public static <returtype> navn_til_prosedyre(<parameter liste>) { // implementasjon av prosedyren

public static <returtype> navn_til_prosedyre(<parameter liste>) { // implementasjon av prosedyren Prosedyrer Hensikten med en prosedyre Hensikten med en prosedyre er, logisk sett, å representere en jobb eller en funksjonalitet i et eller flere programmer. Bruk av entall er viktig: vi har generelt en

Detaljer

Programmeringsspråket C

Programmeringsspråket C Programmeringsspråket C Programmeringsspråket C Laget til implementasjon av Unix ved AT&Ts Bell labs i Palo Alto 1969 73. Navnet kommer fra BCPL B C. Opphavsmannnen heter Dennis Ritchie. ANSI-standard

Detaljer

Dagens tema. Kort repetisjon om rutiner. Programmering i C Variable og adresser. Vektorer. Tekster. Preprosessoren. Separat kompilering

Dagens tema. Kort repetisjon om rutiner. Programmering i C Variable og adresser. Vektorer. Tekster. Preprosessoren. Separat kompilering Dagens tema Kort repetisjon om rutiner Programmering i C Variable og adresser Vektorer Tekster Preprosessoren Separat kompilering Innlesning og utskrift mot skjerm og fil Ark 1 av 31 Hva er en rutine?

Detaljer

OPPGAVE 1 OBLIGATORISKE OPPGAVER (OBLIG 1) (1) Uten å selv implementere og kjøre koden under, hva skriver koden ut til konsollen?

OPPGAVE 1 OBLIGATORISKE OPPGAVER (OBLIG 1) (1) Uten å selv implementere og kjøre koden under, hva skriver koden ut til konsollen? OPPGAVESETT 4 PROSEDYRER Oppgavesett 4 i Programmering: prosedyrer. I dette oppgavesettet blir du introdusert til programmering av prosedyrer i Java. Prosedyrer er også kjent som funksjoner eller subrutiner.

Detaljer

Dagens tema. C-programmering. Nøkkelen til å forstå C-programmering ligger i å forstå hvordan minnet brukes.

Dagens tema. C-programmering. Nøkkelen til å forstå C-programmering ligger i å forstå hvordan minnet brukes. Dagens tema C-programmering Nøkkelen til å forstå C-programmering ligger i å forstå hvordan minnet brukes. Adresser og pekere Parametre Vektorer (array-er) Tekster (string-er) Hvordan ser minnet ut? Variabler,

Detaljer

Dagens tema INF1070. Signaturer. Typekonvertering. Pekere og vektorer. struct-er. Definisjon av nye typenavn. Lister

Dagens tema INF1070. Signaturer. Typekonvertering. Pekere og vektorer. struct-er. Definisjon av nye typenavn. Lister Dagens tema Signaturer Typekonvertering Pekere og vektorer struct-er Definisjon av nye typenavn Lister Dag Langmyhr,Ifi,UiO: Forelesning 24. januar 2005 Ark 1 av 20 Signaturer I C gjelder alle deklarasjoner

Detaljer

Dagens tema. Adresser som parametre Dynamisk allokering Signaturer Definisjon av nye typenavn Typekonvertering Pekere og vektorer

Dagens tema. Adresser som parametre Dynamisk allokering Signaturer Definisjon av nye typenavn Typekonvertering Pekere og vektorer Dagens tema Dagens tema Adresser som parametre Dynamisk allokering Signaturer Definisjon av nye typenavn Typekonvertering Pekere og vektorer Adresser som parametre Et eksempel La oss lage en funksjon som

Detaljer

Objekter og referanser

Objekter og referanser Objekter og referanser Datasegmentet heap Vi har sett at verdier i Java blir kopiert ved prosedyrekall. I programmering, ønsker man imidlertid ikke å kopiere objekter ved prosedyrekall. Dette er fordi

Detaljer

Overflows. Building Secure Software. Inf 329, Høst Chapter 7. Lars Skjærven

Overflows. Building Secure Software. Inf 329, Høst Chapter 7. Lars Skjærven Buffer Overflows Chapter 7 Building Secure Software Inf 329, Høst 2005 Lars Skjærven slars@ii.uib.no Historie Den største sikkerhetstrusselen i programvare gjennom tidene Den mest berømte, Internet Worm

Detaljer

public static <returtype> navn_til_prosedyre(<parameter liste>) { // implementasjon av prosedyren

public static <returtype> navn_til_prosedyre(<parameter liste>) { // implementasjon av prosedyren Prosedyrer Hensikten med en prosedyre Hensikten med en prosedyre er, logisk sett, å representere en jobb eller en funksjonalitet i et eller flere programmer. Bruk av entall er viktig: vi har generelt en

Detaljer

Velkommen til INF1060. Introduksjon til operativsystemer og datakommunikasjon

Velkommen til INF1060. Introduksjon til operativsystemer og datakommunikasjon Velkommen til INF1060 Introduksjon til operativsystemer og datakommunikasjon 1 Forelesere Pål Halvorsen (paalh@ifi.uio.no) Nettverk og Distribuerte systemer (ND) (ved Simula) Tor Skeie (tskeie@ifi.uio.no)

Detaljer

Signaturer. Dagens tema. En vanlig feil int-funksjon. Dette kan noen ganger gi rare feilmeldinger: INF1070 INF1070 INF1070 INF1070

Signaturer. Dagens tema. En vanlig feil int-funksjon. Dette kan noen ganger gi rare feilmeldinger: INF1070 INF1070 INF1070 INF1070 Dagens tema Signaturer Tyekonvertering Pekere og vektorer struct-er Definisjon av nye tyenavn Lister Dag Langmyhr,Ifi,UiO: Forelesning 24. januar 25 Ark 1 av 2 Dag Langmyhr,Ifi,UiO: Forelesning 24. januar

Detaljer

INF januar 2015 Stein Michael Storleer (michael) Lenkelister

INF januar 2015 Stein Michael Storleer (michael) Lenkelister INF1010 29. januar 2015 Stein Michael Storleer (michael) Lenkelister Lenke + lister = lenkelister Vi starter med lenkeobjektene Lager en kjede av objekter ved hjelp av pekere class { ; Legger Jl data innholdet

Detaljer

Del 3. Pekere RR 2016

Del 3. Pekere RR 2016 Del 3 Pekere 1 RR 2016 Peker/pointer En peker er en variabel som kan holde adressen (peke til) til en annen variabel. Pekere vil gi oss muligheten for å gå direkte til en adresse i minne, og lese/skrive

Detaljer

Del 2 Tabeller, arrays, strenger

Del 2 Tabeller, arrays, strenger Del 2 Tabeller, arrays, strenger 1 RR 2016 Tabeller Variabel som kan holde mange verdier. Styrer bruken med indeks. Det er ingen indekskontroll i C. int tab[5] = {2, 4, 6, 8, 10}; tab[4] = 12; int tab[100]

Detaljer

Oversikt. Introduksjon Kildekode Kompilering Hello world Hello world med argumenter. 1 C programmering. 2 Funksjoner. 3 Datatyper. 4 Pekere og arrays

Oversikt. Introduksjon Kildekode Kompilering Hello world Hello world med argumenter. 1 C programmering. 2 Funksjoner. 3 Datatyper. 4 Pekere og arrays Oversikt C programmering 1 C programmering Introduksjon Kildekode Kompilering Hello world Hello world med argumenter 2 Funksjoner 3 Datatyper 4 Pekere og arrays 5 Kontrollstrukturer Lars Vidar Magnusson

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i INF1060 Introduksjon til operativsystemer og datakommunikasjon Eksamensdag: 8. desember 2004 Tid for eksamen: 14.30 17.30 Oppgavesettet

Detaljer

IN 147 Program og maskinvare

IN 147 Program og maskinvare Dagens tema: Kort repetisjon Mengder Lister Enkle listeoperasjoner Programmering av en listepakke Lister med hode og hale Toveislister Hvaeretoperativsystem? En meget kort oversikt over operativsystemenes

Detaljer

2 Om statiske variable/konstanter og statiske metoder.

2 Om statiske variable/konstanter og statiske metoder. Litt om datastrukturer i Java Av Stein Gjessing, Institutt for informatikk, Universitetet i Oslo 1 Innledning Dette notatet beskriver noe av det som foregår i primærlageret når et Javaprogram utføres.

Detaljer

Dagens tema. Oppsummering om assemblerspråk. Programmering i C. Bakgrunn. Et minimalt eksempel med forklaring. Datatyper i C.

Dagens tema. Oppsummering om assemblerspråk. Programmering i C. Bakgrunn. Et minimalt eksempel med forklaring. Datatyper i C. Dagens tema Oppsummering om assemblerspråk Programmering i C (kapittel 11 og 12 i Patt&Patel-boken) Bakgrunn Et minimalt eksempel med forklaring Datatyper i C Operatorer i C Et eksempel til med forklaring

Detaljer

Dagens tema. Dynamisk allokering Signaturer Definisjon av typer og nye typenavn Typekonvertering Pekere, vektorer og lister Dokumentasjon

Dagens tema. Dynamisk allokering Signaturer Definisjon av typer og nye typenavn Typekonvertering Pekere, vektorer og lister Dokumentasjon Dagens tema Dagens tema Dynamisk allokering Signaturer Definisjon av typer og nye typenavn Typekonvertering Pekere, vektorer og lister Dokumentasjon Verdt å huske på! Husk! Nøkkelen til å forstå C er å

Detaljer

Dagens tema. Rutiner i LC-2 Og her er tilsvarende kode for LC-2: Funksjoner i C Her er det samme programmet i C: Kort repetisjon om rutiner

Dagens tema. Rutiner i LC-2 Og her er tilsvarende kode for LC-2: Funksjoner i C Her er det samme programmet i C: Kort repetisjon om rutiner Dagens tema Kort repetisjon om rutiner Programmering i C Variable og adresser Vektorer Tekster Preprosessoren Separat kompilering Innlesning og utskrift mot skjerm og fil Hva er en rutine? En rutine (også

Detaljer

Pekere og vektorer. Dagens tema. I C gjelder en litt uventet konvensjon:

Pekere og vektorer. Dagens tema. I C gjelder en litt uventet konvensjon: Pekere og vektorer I C gjelder en litt uventet konvensjon: Dagens tema Det siste om C Pekere og vektorer Pekere til pekere Vanlige pekerfeil struct-er og typedef Lister Feilsøking Bruk av et vektornavn

Detaljer

Dagens tema. Det siste om C Pekere og vektorer. Pekere til pekere. Vanlige pekerfeil. struct-er og typedef. Lister. Feilsøking

Dagens tema. Det siste om C Pekere og vektorer. Pekere til pekere. Vanlige pekerfeil. struct-er og typedef. Lister. Feilsøking Dagens tema Det siste om C Pekere og vektorer Pekere til pekere Vanlige pekerfeil struct-er og typedef Lister Feilsøking Ark 1 av 35 Pekere og vektorer I C gjelder en litt uventet konvensjon: Bruk av et

Detaljer

Dagens tema: Enda mer MIPS maskinkode

Dagens tema: Enda mer MIPS maskinkode Dagens tema: Enda mer MIPS maskinkode (P&H: 3.6 3.8 + 6.1 + A.6 + A.10) Pseudoinstruksjoner Flere instruksjoner Mer om funksjonskall Stakken Avhengigheter Direktiver Alt er bit! Kommunikasjon med C Ark

Detaljer

2 Om statiske variable/konstanter og statiske metoder.

2 Om statiske variable/konstanter og statiske metoder. Gaustadbekkdalen, januar 22 Litt om datastrukturer i Java Av Stein Gjessing, Institutt for informatikk, Universitetet i Oslo Innledning Dette notatet beskriver noe av det som foregår i primærlageret når

Detaljer

Dagens tema. Mer om C Enkle datatyper Sammensatte datatyper: Vektorer og matriser Tekster Mengder Strukturer Unioner Ringbuffere

Dagens tema. Mer om C Enkle datatyper Sammensatte datatyper: Vektorer og matriser Tekster Mengder Strukturer Unioner Ringbuffere Dagens tema Mer om C Enkle datatyper Sammensatte datatyper: Vektorer og matriser Tekster Mengder Strukturer Unioner Ringbuffere Formål: Nyttige å bruke under programmeringen Trening i programmering i C

Detaljer

Løsningsforslag til 2. del av Del - EKSAMEN

Løsningsforslag til 2. del av Del - EKSAMEN Løsningsforslag til 2. del av Del - EKSAMEN Emnekode: ITD13012 Emne: Datateknikk Dato: 21. Mai 2013 Eksamenstid: kl 9:00 til kl 12:00 Hjelpemidler: 4 sider (A4) (2 ark) med egne notater. Ikke-kummuniserende

Detaljer

Repetisjon: Statiske språk uten rekursive metoder (C1 og C2) Dagens tema Kjøresystemer (Ghezzi&Jazayeri 2.6, 2.7)

Repetisjon: Statiske språk uten rekursive metoder (C1 og C2) Dagens tema Kjøresystemer (Ghezzi&Jazayeri 2.6, 2.7) Dagens tema Kjøresystemer (Ghezzi&Jazayeri.6,.7) Repetisjon Språk med rekursjon (C3) og blokker (C4) Statisk link Dynamisk allokering (C5) Parameteroverføring 1/5 Repetisjon: Statiske språk uten rekursive

Detaljer

Dagens tema Kjøresystemer (Ghezzi&Jazayeri 2.6, 2.7)

Dagens tema Kjøresystemer (Ghezzi&Jazayeri 2.6, 2.7) Dagens tema Kjøresystemer (Ghezzi&Jazayeri 2.6, 2.7) Repetisjon Språk med rekursjon (C3) og blokker (C4) Statisk link Dynamisk allokering (C5) Parameteroverføring 1/25 Forelesning 11 5.11.2003 Repetisjon:

Detaljer

Oving 2. Oppgave 1. #include <stdio.h> int main(int argc, char **argv) { char *navn = argv[1]; printf ("Navnet ditt er %s\n", navn); } Oppgave 2

Oving 2. Oppgave 1. #include <stdio.h> int main(int argc, char **argv) { char *navn = argv[1]; printf (Navnet ditt er %s\n, navn); } Oppgave 2 Oving 2 Oppgave 1 int main(int argc, char **argv) char *navn = argv[1]; printf ("Navnet ditt er %s\n", navn); Oppgave 2 char navn[25]; printf( "Hei hva heter du?\n" ); scanf("%s", navn); printf ("Hei:

Detaljer

Programmering i C++ Løsningsforslag Eksamen høsten 2005

Programmering i C++ Løsningsforslag Eksamen høsten 2005 Programmering i C++ Eksamen høsten 2005 Simen Hagen Høgskolen i Oslo, Avdeling for Ingeniørutdanning 7. desember 2005 Generelt Denne eksamensoppgaven består av tre oppgaver, pluss en ekstraoppgave. Det

Detaljer

Operativsystemer og grensesnitt

Operativsystemer og grensesnitt Operativsystemer og grensesnitt Ulike måter å bruke OS'et på Application Program Interface (API) Applikasjoner (ofte C-programmer) som f.eks. emacs, som bruker tjenestene i OS ved å kalle på funksjoner

Detaljer

Ark 1 av 18. programmeringsspråkenes. Velkommen til IN 211. verden. IN 211 Programmeringsspråk

Ark 1 av 18. programmeringsspråkenes. Velkommen til IN 211. verden. IN 211 Programmeringsspråk Ark 1 av 18 IN 211 Programmeringsspråk Velkommen til programmeringsspråkenes verden IN 211 Forelesning 20.8.2001 Foreleser Ragnhild Kobro Runde E-post: ragnhilk@ifi.uio.no Kontor: 3345 Treffetid: torsdager

Detaljer

Oversikt. INF1000 Uke 1 time 2. Repetisjon - Introduksjon. Repetisjon - Program

Oversikt. INF1000 Uke 1 time 2. Repetisjon - Introduksjon. Repetisjon - Program Oversikt INF1000 Uke 1 time 2 Variable, enkle datatyper og tilordning Litt repetisjon Datamaskinen Programmeringsspråk Kompilering og kjøring av programmer Variabler, deklarasjoner og typer Tilordning

Detaljer

IN 147 Program og maskinvare

IN 147 Program og maskinvare Dagens tema Deklarasjon av nye typer Typekonvertering mellom pekere Regning med pekere Pekere til funksjoner Pekere til pekere til... Vanlige feil ved bruk av pekere Feilsøking Debuggere lint Kompilatormeldinger

Detaljer

Forkurs INF1010. Dag 1. Andreas Færøvig Olsen Tuva Kristine Thoresen

Forkurs INF1010. Dag 1. Andreas Færøvig Olsen Tuva Kristine Thoresen Forkurs INF1010 Dag 1 Andreas Færøvig Olsen (andrefol@ifi.uio.no) Tuva Kristine Thoresen (tuvakt@ifi.uio.no) Institutt for Informatikk, 6. januar 2014 Forkurs INF1010 - dag 1 Hello, World! Typer Input/output

Detaljer

EKSAMENSOPPGAVE. INF-1100 Innføring i programmering og datamaskiners virkemåte. Ingen. Elektronisk (WiseFlow) Robert Pettersen

EKSAMENSOPPGAVE. INF-1100 Innføring i programmering og datamaskiners virkemåte. Ingen. Elektronisk (WiseFlow) Robert Pettersen Fakultet for naturvitenskap og teknologi EKSAMENSOPPGAVE Eksamen i: Dato: 20.02.2017 Klokkeslett: 09:00 13:00 INF-1100 Innføring i programmering og datamaskiners virkemåte Sted: Teorifagbygget, Hus 3,

Detaljer

IN 147 Program og maskinvare

IN 147 Program og maskinvare Dagens tema Deklarasjon av nye typer Typekonvertering Regning med pekere Pekere til funksjoner Pekere til pekere til... Vanlige feil ved bruk av pekere Feilsøking Debuggere lint Kompilatormeldinger Egne

Detaljer

Semantikk. Dagens tema Kjøresystemer (Ghezzi&Jazayeri 2.6, 2.7) Semantikk. Semantikk. En måte å svare på: gi semantikken til språket!

Semantikk. Dagens tema Kjøresystemer (Ghezzi&Jazayeri 2.6, 2.7) Semantikk. Semantikk. En måte å svare på: gi semantikken til språket! agens tema Kjøresystemer (Ghezzi&Jazayeri.,.) Innledende om semantikk Operasjonell semantikk / SIMPLESEM Bokholderi og minneorganisering Forskjellige språkklasser... en beskrivelse av hva som skjer når

Detaljer

Enkle generiske klasser i Java

Enkle generiske klasser i Java Enkle generiske klasser i Java Oslo, 7/1-13 Av Stein Gjessing, Institutt for informatikk, Universitetet i Oslo Del 1: Enkle pekere Før vi tar fatt på det som er nytt i dette notatet, skal vi repetere litt

Detaljer

INF225 høsten 2003 Prosjekt del 4: kodegenerering

INF225 høsten 2003 Prosjekt del 4: kodegenerering INF225 høsten 2003 Prosjekt del 4: kodegenerering Thomas Ågotnes 19. november 2003 1 Introduksjon I denne delen av prosjektet skal C- -parseren fra del 3 utvides til å generere maskinkode. Maskinkoden

Detaljer

INF Oblig 2 semantikksjekk og kodegenerering

INF Oblig 2 semantikksjekk og kodegenerering INF5110 - Oblig 2 semantikksjekk og kodegenerering Magnus Haugom Christensen Instituttet for Informatikk Universitetet i Oslo 27. Mars - 2012 Oversikt Informasjon Oppgaven Semantikksjekk Kodegenerering

Detaljer

Pensum Hovedtanker Selvmodifiserende Overflyt Veien videre Eksamen. Oppsummering

Pensum Hovedtanker Selvmodifiserende Overflyt Veien videre Eksamen. Oppsummering Oppsummering Pensum Grovt sett er alt fra forelesningene og øvingsoppgavene pensum. Detaljert oversikt finnes på kurssidene. Hovedtanker fra kurset Litt om eksamen Hvorfor har dere lært dette? Ikke mange

Detaljer

Dagens tema: Kjøresystemer II

Dagens tema: Kjøresystemer II Dagens tema Kjøresystemer II En kort repetisjon (Ghezzi&Jazayeri 2.7.3) Språk med blokker (Ghezzi&Jazayeri 2.7.4) Dynamisk allokering (Ghezzi&Jazayeri 2.7.5) Parametre (Ghezzi&Jazayeri 2.7.7) Ark 1 av

Detaljer

HØYSKOLEN I OSLO, AVDELING FOR INGENIØRUTDANNING

HØYSKOLEN I OSLO, AVDELING FOR INGENIØRUTDANNING HØYSKOLEN I OSLO, AVDELING FOR INGENIØRUTDANNING Eksamensoppgave i kurset: Programmering i C++. Fagnr: LV 121 A Eksamensdato: 10 februar, 2003. Faglærer: Cecilie Rolstad Antall oppgaver: 5 Antall sider,

Detaljer

Runtimesystemer Kap 7 - I

Runtimesystemer Kap 7 - I Runtimesystemer Kap 7 - I Generell lagerorganisering (7.1) Språk som bare trenger statisk allokering (7.2) Språk som trenger stakk-orientert allokering (7.3) Språk som trenger mer generell allokering (7.4)

Detaljer

Minneområder Det er vanlig å dele opp minnet til en prosess i disse ulike områdene: Fast minne Store og små indianere «align» ing struct er

Minneområder Det er vanlig å dele opp minnet til en prosess i disse ulike områdene: Fast minne Store og små indianere «align» ing struct er Dagens tema: Minnet Minneområder Det er vanlig å dele opp minnet til en prosess i disse ulike områdene: Fast minne Store og små indianere «align» ing struct er 0xfffffffc Variable Stakk Lister Noen nyttige

Detaljer

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - Kandidatnr: AITeL Eksamensdato: 4.mai 2011 Varighet: 0900-1300 Emnekode: Emnenavn: Klasser: LV195D Objektorientert programmering i C++ Nettstudenter

Detaljer

INF5110. Oblig 2 presentasjon

INF5110. Oblig 2 presentasjon INF5110 Oblig 2 presentasjon Informasjon Oppgaven Semantikksjekk Kodegenerering Bytecode-biblioteket Ant-targets Oppsummering Oversikt Informasjon Oblig 2 tilgjengelig på kurssiden Patch med testfiler

Detaljer

Dagens tema INF2270. Signaturer. Typekonvertering. Pekere og vektorer. struct er. Definisjon av nye typenavn. Lister. Info om C

Dagens tema INF2270. Signaturer. Typekonvertering. Pekere og vektorer. struct er. Definisjon av nye typenavn. Lister. Info om C Dagens tema Signaturer Typekonvertering Pekere og vektorer struct er Definisjon av nye typenavn Lister Info om C Dag Langmyhr,Ifi,UiO: Forelesning 29. januar 2007 Ark 1 av 23 Signaturer I C gjelder alle

Detaljer

Bakgrunnen for INF2100. Velkommen til INF2100. Prosjektet. Hva gjør en kompilator?

Bakgrunnen for INF2100. Velkommen til INF2100. Prosjektet. Hva gjør en kompilator? Kursopplegg Velkommen til INF2100 Bakgrunnen Bakgrunnen for INF2100 Jeg er Dag Langmyhr (dag@ifi.uio.no). Dagens tema: Hva går kurset ut på? Bakgrunn for kurset Hvordan gjennomføres kurset? Hvordan får

Detaljer

Forkurs INF1010. Dag 2. Andreas Færøvig Olsen Gard Inge Rosvold Institutt for Informatikk, 14.

Forkurs INF1010. Dag 2. Andreas Færøvig Olsen Gard Inge Rosvold Institutt for Informatikk, 14. Forkurs INF1010 Dag 2 Andreas Færøvig Olsen (andrefol@ifi.uio.no) Gard Inge Rosvold (gardir@ifi.uio.no) Institutt for Informatikk, 14. januar 2016 Forkurs INF1010 - dag 2 Feilmeldinger 2 Forkurs INF1010

Detaljer

IN 147 Program og maskinvare. Vanlige feil ved bruk av pekere Feilsøking Debuggere

IN 147 Program og maskinvare. Vanlige feil ved bruk av pekere Feilsøking Debuggere Dagens tema Vanlige feil ved bruk av pekere Feilsøking Debuggere lint Kompilatormeldinger Egne testutskrifter Flyt-tall (P&H: 4.8) Representasjon av flyt-tall Standarden IEEE 754 MIPS-operasjoner på flyt-tall

Detaljer

Debugging. Tore Berg Hansen, TISIP

Debugging. Tore Berg Hansen, TISIP Debugging Tore Berg Hansen, TISIP Innhold Innledning... 1 Å kompilere og bygge et program for debugging... 1 Når debugger er i gang... 2 Symbolene i verktøylinjen... 3 Start på nytt... 3 Stopp debugging...

Detaljer

Feilmeldinger, brukerinput og kontrollflyt

Feilmeldinger, brukerinput og kontrollflyt Feilmeldinger, brukerinput og kontrollflyt Skjønne hvordan et program presist utføres og forberede seg på håndtering av feil INF1000, uke2 Ragnhild Kobro Runde Programmeringskrøll Programmet vil ikke kjøre

Detaljer

Stack. En enkel, lineær datastruktur

Stack. En enkel, lineær datastruktur Stack En enkel, lineær datastruktur Hva er en stack? En datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn sist Et nytt element legges alltid på toppen av stakken Skal vi

Detaljer

Løsningsforslag til eksamen i INF103

Løsningsforslag til eksamen i INF103 Løsningsforslag til eksamen i INF03 Kjell Åge Bringsrud (oppgave 4 og 5) Dag Langmyhr (oppgave 2 og 3). desember 2003 Sigbjørn Næss (oppgave og 6) Boolsk algebra Sannhetsverditabellen er vist i tabell

Detaljer

Innhold uke 4. INF 1000 høsten 2011 Uke 4: 13. september. Deklarasjon av peker og opprettelse av arrayobjektet. Representasjon av array i Java

Innhold uke 4. INF 1000 høsten 2011 Uke 4: 13. september. Deklarasjon av peker og opprettelse av arrayobjektet. Representasjon av array i Java INF høsten 2 Uke 4: 3. september Grunnkurs i Objektorientert Programmering Institutt for Informatikk Universitetet i Oslo Siri Moe Jensen og Arne Maus Mål for uke 4: Innhold uke 4 Repetisjon m/ utvidelser:

Detaljer

En oppsummering (og litt som står igjen)

En oppsummering (og litt som står igjen) En oppsummering (og litt som står igjen) Pensumoversikt Hovedtanker i kurset Selvmodifiserende kode Overflyt Eksamen En oppsummering Oppsummering Pensum læreboken til og med kapittel 7 forelesningene de

Detaljer

Hvordan en prosessor arbeider, del 1

Hvordan en prosessor arbeider, del 1 Hvordan en prosessor arbeider, del 1 Læringsmål Kompilator, interpret og maskinkode CPU, registre Enkle instruksjoner: de fire regnearter Mer informasjon om temaet Internett Lokalnett (LAN) Mitt program

Detaljer

Innhold. Forord Det første programmet Variabler, tilordninger og uttrykk Innlesing og utskrift...49

Innhold. Forord Det første programmet Variabler, tilordninger og uttrykk Innlesing og utskrift...49 Innhold Forord...5 1 Det første programmet...15 1.1 Å kommunisere med en datamaskin 16 1.2 Programmeringsspråk 17 1.3 Et program som skriver på skjermen 18 1.4 Kompilering og kjøring 19 1.5 Kommentarer

Detaljer