Programmering av inbyggda system. Pekare och Arrayer. Ulf Assarsson. Originalslides av Viktor Kämpe

Storlek: px
Starta visningen från sidan:

Download "Programmering av inbyggda system. Pekare och Arrayer. Ulf Assarsson. Originalslides av Viktor Kämpe"

Transkript

1 Pekare och Arrayer Ulf Assarsson Originalslides av Viktor Kämpe

2 Pekare Pekarens värde är en adress. Pekarens typ berä>ar hur man tolkar bitarna som finns på adressen. char str[] = "apa"; char* p = &str[0]; // = &(str[0]) *p = 'a'; Pekare och Arrayer/VK 2

3 Pekare Pekarens värde är en adress. Pekarens typ berä>ar hur man tolkar bitarna som finns på adressen. 'a' 'p' unsigned char* pek 0x3026 0x 'a' typ värdet är en adress... 0x1001 0x1000 Ökande adresser Pekare och Arrayer/VK 3

4 Dereferera När vi derefererar en pekare så hämtar vi objektet som ligger på adressen. Antalet bytes vi läser beror på typen Tolkningen av bitarna beror på typen signed char 8 bitar unsigned char Pekare och Arrayer/VK 4

5 Pekare och Arrayer/VK 5

6 Operatorer #include <stdio.h> int main() { char a, b, *p; a = 'v'; b = a; p = &a; DeklaraSon av pekare Adressen av... } printf("b = %c, p = 0x%p (%c) \n", b, p, *p); a = 'k'; printf("b = %c, p = 0x%p (%c) \n", b, p, *p); Dereferering UtskiR: b = v, p = 0x0027F7C3 (v) b = v, p = 0x0027F7C3 (k) Pekare och Arrayer/VK 6

7 Asterisken (*) betyder I deklarasoner Pekartyp Som operator Dereferens ( av- referera ) char *p; char* p; void foo(int *pi); char a = *p; *p = 'b'; Pekare och Arrayer/VK 7

8 AritmeSk på pekare char *kurs = "Maskinorienterad Programmering"; *kurs; *(kurs+2); kurs++; kurs +=4; // 'M // 's // kurs pekar på 'a // kurs pekar på 'n' Pekare och Arrayer/VK 8

9 [Sträng- exempel i CodeLite]

10 Array (Fält) #include <stdio.h> char namn1[] = {'E', 'm', 'i', 'l', '\0'}; char namn2[] = "Emilia"; char namn3[10]; int main() { printf("namn1: %s \n", namn1); printf("namn2: %s \n", namn2); printf("sizeof(namn2): %i \n", sizeof(namn2)); } return 0; UtskriR: namn1: Emil namn2: Emilia sizeof(namn2): 7 Pekare och Arrayer/VK 10

11 Array - Likhet med pekare Har en adress och en typ. Indexering har samma resultat. Pekare och Arrayer/VK 11

12 Indexering #include <stdio.h> char* s1 = "Emilia"; char s2[] = "Emilia"; int main() { // tre ekvivalenta sätt att dereferera en pekare printf("'l' i Emilia (version 1): %c \n", *(s1+3) ); printf("'l' i Emilia (version 2): %c \n", s1[3] ); printf("'l' i Emilia (version 3): %c \n", 3[s1] ); } return 0; x[y] översä>s Sll *(x+y) och är alltså e> sä> a> dereferera en pekare. Pekare och Arrayer/VK 12

13 Skillnader mellan array och pekare Arrayer Adress känd i compile- Sme. Storlek känd i compile- Sme. Pekar- aritmesk inte möjlig. a[] = hej ; a++ ej OK (a+1)[0] helt OK. ORast en relasv adress. T ex 103 bytes erer första instruksonen. Pekare och Arrayer/VK 13

14 Array (Fält) #include <stdio.h> char namn1[] = {'E', 'm', 'i', 'l', '\0'}; char namn2[] = "Emilia"; char namn3[10]; int main() { printf("namn1: %s \n", namn1); printf("namn2: %s \n", namn2); printf("sizeof(namn2): %i \n", sizeof(namn2)); Om ingen storlek anges i [ ] så blir arrayen Sllräckligt stor. OBS. Funkar bara med ini8ering vid deklara8on! 10 element stor array. } return 0; UtskriR: namn1: Emil namn2: Emilia sizeof(namn2): 7 Pekare och Arrayer/VK 14

15 Arrayer som funksonsargument blir pekare void foo(int pi[]); void foo(int *pi); Då argument Sll funksoner bara är kända i run- Sme så kan vi inte passa arrayer. [ ] notasonen finns, men betyder pekare! Pekare och Arrayer/VK 15

16 [Array- exempel i CodeLite]

17 Antal bytes med sizeof() #include <stdio.h> char* s1 = "Emilia"; char s2[] = "Emilia"; int main() { printf("sizeof(char): %i \n", sizeof(char) ); printf("sizeof(char*): %i \n", sizeof(char*) ); printf("sizeof(s1): %i \n", sizeof(s1) ); printf("sizeof(s2): %i \n", sizeof(s2) ); } return 0; sizeof(char): sizeof(char*): sizeof(s1): sizeof(s2): Sizeof utvärderas i compile- Sme. En (av få) undantag där arrayer och pekare är olika. Pekare och Arrayer/VK 17

18 Dynamisk minnesallokering malloc() free() Allokera minne Frigör minne FunkSonsprototyp via: #include <stdlib.h> Pekare och Arrayer/VK 18

19 Dynamisk minnesallokering #include <stdlib.h> char s1[] = "This is a long string. It is even more than one sentence."; int main() { char* p; // allokera minne dynamiskt p = (char*)malloc(sizeof(s1)); // gör något med minnet som vi reserverat Antal bytes vi allokerar } // frigör minnet free(p); return 0; Pekare och Arrayer/VK 19

20 E> Programs Adressrymd Alla program som körs, har något associerat minne, vilket typiskt är indelat i: Code Segment Data Segment (Holds Global Data) Stack (where the local variables and other temporary informason is stored) Heap The Stack grows downwards Stack The Heap grows upwards Heap Data Segment Code Segment

21 [Minnesallokering- exempel]

22 Minnesläckor En minnesläcka uppkommer om vi inte frigör det minne som vi allokerat med malloc(). Minnesläckor kan orsaka systemhaveri om minnet tar slut. Minnesläckan försvinner när programmet terminerar. Pekare och Arrayer/VK 22

23 Hi>a minnesläckor Vi kommer använda en minnes analysator DrMemory (h>p:// DrMemory ersä>er standard biblioteket, och analyserar anrop Sll malloc() och free(). Pekare och Arrayer/VK 23

24 [DrMemory- exempel]

Programmering av inbyggda system. Pekare och Arrayer. Viktor Kämpe

Programmering av inbyggda system. Pekare och Arrayer. Viktor Kämpe Pekare och Arrayer Viktor Kämpe Pekare Pekarens värde är en adress. Pekarens typ berättar hur man tolkar bitarna som finns på adressen. unsigned char* pek 0x3026 0x3026 0110 0001 typ värdet är en adress...

Läs mer

Ulf Assarsson. Grundläggande C-programmering del 2 Pekare och Arrayer. Läromoment:

Ulf Assarsson. Grundläggande C-programmering del 2 Pekare och Arrayer. Läromoment: Grundläggande C-programmering del 2 Pekare och Arrayer Ulf Assarsson Läromoment: Pekare Absolutadressering (portar): typedef, volafle, #define Arrayer av pekare, arrayer av arrayer Hemuppgi9er: v2. Föregående

Läs mer

Grundläggande C-programmering del 2 Pekare och Arrayer. Ulf Assarsson

Grundläggande C-programmering del 2 Pekare och Arrayer. Ulf Assarsson Grundläggande C-programmering del 2 Pekare och Arrayer Ulf Assarsson Läromoment: Pekare Absolutadressering (portar): typedef, volatile, #define Arrayer av pekare, arrayer av arrayer Hemuppgifter: v2. Föregående

Läs mer

Grundläggande C-programmering del 2 Pekare och Arrayer. Ulf Assarsson

Grundläggande C-programmering del 2 Pekare och Arrayer. Ulf Assarsson Grundläggande C-programmering del 2 Pekare och Arrayer Ulf Assarsson Läromoment: Pekare Absolutadressering (portar): typedef, volatile, #define Arrayer av pekare, arrayer av arrayer Hemuppgifter: v2. Föregående

Läs mer

Pekare och Arrayer. Ulf Assarsson. Originalslides av Viktor Kämpe

Pekare och Arrayer. Ulf Assarsson. Originalslides av Viktor Kämpe Pekare och Arrayer Ulf Assarsson Originalslides av Viktor Kämpe Pekare och Arrayer/VK 2 Här jag jag lagt upp eb något större projekt som är programmerat i C, så ab ni kan se eb mer realisgskt exempel på

Läs mer

Fortsä'ning Pekare. Ulf Assarsson. Originalslides av Viktor Kämpe

Fortsä'ning Pekare. Ulf Assarsson. Originalslides av Viktor Kämpe Fortsä'ning Pekare Ulf Assarsson Originalslides av Viktor Kämpe Pekare och Arrayer/VK 2 Pekare och Arrayer/VK 3 Förra föreläsningen Pekare Bll data Arrayer fix storlek och adress Dynamisk minnesallokering

Läs mer

Fortsä'ning Pekare. Ulf Assarsson. Originalslides av Viktor Kämpe

Fortsä'ning Pekare. Ulf Assarsson. Originalslides av Viktor Kämpe Fortsä'ning Pekare Ulf Assarsson Originalslides av Viktor Kämpe Pekare och Arrayer/VK 2 Pekare och Arrayer/VK 3 Förra föreläsningen Pekare Bll data Arrayer fix storlek och adress Dynamisk minnesallokering

Läs mer

Ulf Assarsson. Grundläggande C-programmering del 3. Läromoment: Grundläggande C-programmering del 3

Ulf Assarsson. Grundläggande C-programmering del 3. Läromoment: Grundläggande C-programmering del 3 Grundläggande C-programmering del 3 Ulf Assarsson Läromoment: Grundläggande C-programmering del 3 enum, union, byte-adressering med unions, include-guards Pekare och arrayer, 2D-arrayer dubbelpekare Kopplat.ll:

Läs mer

Repetition C-programmering

Repetition C-programmering Repetition C-programmering Viktor Kämpe C Historik Utvecklades först 1969 1973 av Dennis Ritchcie vid AT&T Bell Labs. Högnivå språk med kontakt mot maskinvara. Ett utav de mest använda språken. Repetition

Läs mer

Det finns många flaggor till g++,

Det finns många flaggor till g++, C++, Övning 1 Jonas Sjöbergh, jsh@nada.kth.se Inge Frick, inge@nada.kth.se Alexander Baltsatsis hur man kompilerar och kör make preprocessor minnesallokering, pekare grundläggande C++, funktioner m.m.

Läs mer

Övning från förra gången: readword

Övning från förra gången: readword (9 september 2010 T4.1 ) Övning från förra gången: readword /** readword.c * * int readword(char w[], int n) { * * Läser tecken tills en bokstav påträffas. * Läser och lagrar sedan högst n-1 bokstäver

Läs mer

Introduktion C-programmering

Introduktion C-programmering Introduktion C-programmering Viktor Kämpe C Historik Utvecklades först 1969 1973 av Dennis Ritchcie vid AT&T Bell Labs. Högnivå språk med kontakt mot maskinvara. Ett utav de mest använda språken. 2 C Standarder

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

Programmering i C++ EDA623 Typer. EDA623 (Föreläsning 4) HT / 33

Programmering i C++ EDA623 Typer. EDA623 (Föreläsning 4) HT / 33 Programmering i C++ EDA623 Typer EDA623 (Föreläsning 4) HT 2013 1 / 33 Typer Innehåll Heltalstyper Flyttalstyper Pekare Minnesallokering Funktionspekare Typdeklarationer med typedef Typomvandlingar (casting)

Läs mer

Att använda pekare i. C-kod

Att använda pekare i. C-kod Att använda pekare i C-kod (Bör användas av de som känner sig lite hemma med C-programmering!) Rev 1, 2005-11-23 av Ted Wolfram www.wolfram.se Syfte: Man kan tycka att det är komplicerat att använda pekare

Läs mer

Dynamiskt minne. Vad är dynamiskt minne Motivering Hur gör man i C Övningar

Dynamiskt minne. Vad är dynamiskt minne Motivering Hur gör man i C Övningar Dynamiskt minne Agenda Vad är dynamiskt minne Motivering Hur gör man i C Övningar Minne Datorns primärminne används till olika ändamål De flesta system partitionerar minnet efter användningen: Programkoden

Läs mer

Programmering av inbyggda system. Kodningskonventioner. Viktor Kämpe

Programmering av inbyggda system. Kodningskonventioner. Viktor Kämpe Kodningskonventioner Viktor Kämpe Varför kodningskonventioner? Förståelse för Skillnaden mellan lokala/globala variabler. Funktionsargument. Returvärde. Möjliggör Mix av assembler och C. Kodningskonventioner/VK

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

Pekare och arrayer. Indexering och avreferering

Pekare och arrayer. Indexering och avreferering Pekare och arrayer En array är ett sammanhängande minnesområde rymmande ett antal element av en viss typ. Arraynamnet kan ses som adressen till arrayens början, dvs. dess första element. En pekare är en

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

TDDC76 - Programmering och Datastrukturer

TDDC76 - Programmering och Datastrukturer TDDC76 - Programmering och Datastrukturer Pekare och Listor Eric Elfving Institutionen för datavetenskap 1 / 21 Översikt Internminne Pekare Dynamiska datastrukturer (Enkellänkade) listor 2 / 21 Internminne

Läs mer

TDDC76 - Programmering och Datastrukturer

TDDC76 - Programmering och Datastrukturer TDDC76 - Programmering och Datastrukturer Pekare och Listor Eric Elfving Institutionen för datavetenskap 1 / 20 Översikt Internminne Pekare Dynamiska datastrukturer (Enkellänkade) listor 2 / 20 Internminne

Läs mer

Innehåll. Resurshantering. Resource handles. Minnesallokering. Minnesallokering Exempel: allokering på stacken. 6. Resurshantering

Innehåll. Resurshantering. Resource handles. Minnesallokering. Minnesallokering Exempel: allokering på stacken. 6. Resurshantering Innehåll EDAF30 Programmering i C++ 6. Resurshantering Sven Gestegård Robertz Datavetenskap, LTH 2017 1 Resurshantering Stack-allokering Heap-allokering: new och delete 2 Smarta pekare 3 Klasser, resurshantering

Läs mer

grundläggande C++, funktioner m.m.

grundläggande C++, funktioner m.m. C++, Övning 1 Jonas Sjöbergh, jsh@nada.kth.se hur man kompilerar och kör make preprocessor minnesallokering, pekare grundläggande C++, funktioner m.m. ett exempel Ett enkelt program i C++, hello.cpp #include

Läs mer

Operativsystem (IS1350) :00-12:00

Operativsystem (IS1350) :00-12:00 Operativsystem (IS1350) 2017-03-15 08:00-12:00 Namn: Instruktioner Betyg Du får endast ha med dig skrivmateriel. Mobiler etc skall lämnas till tentamensvakterna. Svaren skall lämnas på dessa sidor, använd

Läs mer

Grundläggande C-programmering del 4 Mer programstruktur samt Dynamisk minnesallokering Ulf Assarsson

Grundläggande C-programmering del 4 Mer programstruktur samt Dynamisk minnesallokering Ulf Assarsson Grundläggande C-programmering del 4 Mer programstruktur samt Dynamisk minnesallokering Ulf Assarsson Läromoment: Synlighet static, #extern, (inline), #if/#ifdef, #include guards, enum, union, little/big

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

TDIU20 - Objektorienterad programmering i c++ - föreläsning 4

TDIU20 - Objektorienterad programmering i c++ - föreläsning 4 TDIU20 - Objektorienterad programmering i c++ - föreläsning 4 Pontus Haglund Department of Computer and information science 1 Vad gjorde vi förra gången? Felhantering Operatorer Typkonvertering 2 Grundläggande

Läs mer

Ulf Assarsson. Grafisk display + seriekommunika3on (USART) Läromoment: USART Grundläggande C-programmering del 2

Ulf Assarsson. Grafisk display + seriekommunika3on (USART) Läromoment: USART Grundläggande C-programmering del 2 Grafisk display + seriekommunika3on (USART) Ulf Assarsson Läromoment: USART Grundläggande C-programmering del 2 Pekare portadressering med structs structs med funk.onspekare Kopplat.ll: Arbetsbok avsni5:

Läs mer

Ett enkelt program i C++, hello.cpp. #include <iostream> int main() { std::cout << "Hello World\n"; return 0; } C++, Övning 1

Ett enkelt program i C++, hello.cpp. #include <iostream> int main() { std::cout << Hello World\n; return 0; } C++, Övning 1 Ett enkelt program i C++, hello.cpp C++, Övning 1 Jonas Sjöbergh, jsh@nada.kth.se hur man kompilerar och kör make preprocessor minnesallokering, pekare grundläggande C++, funktioner m.m. ett exempel int

Läs mer

Programmeringsteknik för Ingenjörer VT06. Föreläsning 10

Programmeringsteknik för Ingenjörer VT06. Föreläsning 10 Programmeringsteknik för Ingenjörer VT06 Föreläsning 10 Dagens föreläsning Repetition Strukturer Programmeringsteknik för ingenjörer, VT06 2 Deklaration: char name1[10]; char *name2; Repetition - Strängar

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

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

Assemblerprogrammering för ARM del 3

Assemblerprogrammering för ARM del 3 Assemblerprogrammering för ARM del 3 Ur innehållet Fält och sammansatta typer (poster) Pekarvariabler och pekarkonstanter Pekararitmetik, operationer på fält Läsanvisningar: Arbetsbok kap 2 Quick-guide,

Läs mer

TDP004. Minne och pekare. Eric Elfving Institutionen för datavetenskap

TDP004. Minne och pekare. Eric Elfving Institutionen för datavetenskap TDP004 Minne och pekare Eric Elfving Institutionen för datavetenskap 1 / 23 Översikt Internminne Pekare Dynamiska datastrukturer (Enkellänkade) listor 2 / 23 Internminne - RAM Datorns internminne (RAM,

Läs mer

IS1200 Datorteknik. Övning CE_O4 Maskinnära programmering med C Förberedelser till hemlaboration 1

IS1200 Datorteknik. Övning CE_O4 Maskinnära programmering med C Förberedelser till hemlaboration 1 IS1200 Datorteknik Övning CE_O4 Maskinnära programmering med C Förberedelser till hemlaboration 1 1 4.1 Little och big endian 2 Nios II? Nios II är Little-endian (men eftersom det är en soft-processor

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

Innehåll. Introduktion till objektorientering. OOP (objektorienterad programmering) Objekt, instanser, klasser

Innehåll. Introduktion till objektorientering. OOP (objektorienterad programmering) Objekt, instanser, klasser Föreläsning 1 Innehåll Introduktion till objektorientering OOP (objektorienterad programmering) Objekt, instanser, klasser C++ OO i C++ Standardbibliotek Utökningar från C (syntaktiskt socker) Introduktion

Läs mer

TDDD78 Objektorientering: Lagring och livstid

TDDD78 Objektorientering: Lagring och livstid jonas.kvarnstrom@liu.se 2017 TDDD78 Objektorientering: Lagring och livstid Tre sorters variabel (1): Lokal 3 Deklareras i en metod Lokal variabel Varje anrop får sin egen "kopia": Två anrop till foo()

Läs mer

Innehåll. Pekare Exempel

Innehåll. Pekare Exempel Innehåll EDAF30 Programmering i C++ Avslutning. Sammanfattning och frågor 1 Syntax, förklaringar Sven Gestegård Robertz Datavetenskap, LTH 2017 2 Stack-allokering Heap-allokering: new och delete 3 Avslutning.

Läs mer

Poster ( structar ) Postdeklarationer

Poster ( structar ) Postdeklarationer Poster ( structar ) Exempel på en postdeklaration: struct person { int id; char namn[20]; int vikt, skonr; p1, p2; Detta definierar två variabler p1 och p2 som poster med termerna id, namn, vikt och skonr.

Läs mer

Abstrakta datastrukturer

Abstrakta datastrukturer Föreläsning 2 Datastrukturer Abstrakta datastrukturer Stack Stack implementerad med array Länkad lista Stack implementerad med länkad lista Inlämningsuppgifter Datastrukturer En datastruktur är en struktur

Läs mer

Indexerade variabler

Indexerade variabler Indexerade variabler Vad har vi lärt oss så här långt Den första sammansatta (compound) datatypen: matris. Att arbeta med 1-dimensionella matriser. Att arbeta med flerdimensionella matriser. Matriser med

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

Arrays (indicerade variabler) Föreläsning 6

Arrays (indicerade variabler) Föreläsning 6 Arrays (indicerade variabler) Föreläsning 6 Dagens kluring int i; scanf("%d", &i); switch(i) case 1: printf("1"); case 2: printf("2"); case 3: printf("3"); break; case 4: printf("4"); break; case 5: printf("5");

Läs mer

Grundläggande C-programmering del 1 - För maskinorienterad programmering

Grundläggande C-programmering del 1 - För maskinorienterad programmering Grundläggande C-programmering del 1 - För maskinorienterad programmering Ulf Assarsson Läromoment: Datatyper, arrayer, synlighet Preprocessing, kompilering, länkning IDE,.c- /.h-filer, Läromoment för hemuppgifterna

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

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

Grundläggande C-programmering del 1 - För maskinorienterad programmering

Grundläggande C-programmering del 1 - För maskinorienterad programmering Grundläggande C-programmering del 1 - För maskinorienterad programmering Ulf Assarsson Läromoment: Datatyper, arrayer, synlighet Preprocessing, kompilering, länkning IDE,.c- /.h-filer, Läromoment för hemuppgifterna

Läs mer

Om pekare och minneshantering i C, relaterat till operativsystem och särskilt konstruktionen fork() execvp().

Om pekare och minneshantering i C, relaterat till operativsystem och särskilt konstruktionen fork() execvp(). Om pekare och minneshantering i C, relaterat till operativsystem och särskilt konstruktionen fork() execvp(). Detta extra material är tänkt att dels fördjupa och förtydliga pekarbegreppet från C och ge

Läs mer

Arrays (indicerade variabler) Föreläsning 4

Arrays (indicerade variabler) Föreläsning 4 Arrays (indicerade variabler) Föreläsning 4 Dagens kluring Hitta felet (ska skriva ut 10,9,8,7,6,5,4,3,2,1): int n; for(n=10;n0;n--) for(m=0;m

Läs mer

#include <stdio.h> #include <string.h>

#include <stdio.h> #include <string.h> #include #include void fun(char s[]) int i=-1; while(s[++i]!=0) if('a'

Läs mer

Funktionspekare, inledning: funktionsanropsmekanismen. Anrop via pekare

Funktionspekare, inledning: funktionsanropsmekanismen. Anrop via pekare Funktionspekare, inledning: funktionsanropsmekanismen Vid funktionsanrop läggs aktuella argumentvärden och återhoppsadressen på stacken, därefter sker ett hopp till adressen för funktionens första instruktion.

Läs mer

Översikt Introduktion DST 1. Nicholas Wickström. IDE, Högskolan i Halmstad. N. Wickström

Översikt Introduktion DST 1. Nicholas Wickström. IDE, Högskolan i Halmstad. N. Wickström DST 1 Nicholas Wickström IDE, Högskolan i Halmstad 2009 1 Outline 1 Vad är Hårdvara? (Datorsystemmodell; processor m. periferi, IO, Minne) Typiskt för hårdvarunära programmering (datablad, register, datastrukturer,...)

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

TDIU01 - Programmering i C++, grundkurs

TDIU01 - Programmering i C++, grundkurs TDIU01 - Programmering i C++, grundkurs Sammanfattning period 1 Eric Elfving Institutionen för datavetenskap 1 oktober 2013 Översikt Ett C++-programs uppbyggnad Variabler Datatyper Satser Uttryck Funktioner

Läs mer

Skriv i mån av plats dina lösningar direkt i tentamen. Skriv ditt kodnummer längst upp på varje blad.

Skriv i mån av plats dina lösningar direkt i tentamen. Skriv ditt kodnummer längst upp på varje blad. 5(16) Tentamen på kurserna Programmeringsteknik med C och Matlab Programmering i C Tid: 2/11-11, kl. 9-13 Lärare: Jonny Pettersson Totalt: 60 poäng Betyg 3: 30 poäng Betyg 4: 39 poäng Betyg 5: 48 poäng

Läs mer

Grundläggande C-programmering

Grundläggande C-programmering Grundläggande C-programmering - För maskinorienterad programmering Ulf Assarsson Läromoment: Datatyper, typedef, #define, struct, arrayer, synlighet Preprocessing, kompilering, länkning IDE,.c- /.h-filer,

Läs mer

En kort text om programmering i C.

En kort text om programmering i C. En kort text om programmering i C C skapades 1972 av Brian Ritchie och Dennis Kerighan på Bell Labs i USA Det blev det språk som är mest använt genom tiderna Det finns många olika språk Pascal, FORTH,

Läs mer

Johan Karlsson Datavetenskap för teknisk kemi, 10p, moment 1 Datavetenskap Umeå Universitet. Tentamen

Johan Karlsson Datavetenskap för teknisk kemi, 10p, moment 1 Datavetenskap Umeå Universitet. Tentamen Tentamen för teknisk kemi, 10p, moment 1 29 november 1999 Skrivtid 9-15 Hjälpmedel: av följande böcker. - U. Bilting och J. Skansholm: Vägen till C - A. Kelley & I. Pohl: A Book on C Maxpoäng: Gräns för

Läs mer

Innehåll. Pekare Exempel

Innehåll. Pekare Exempel Innehåll EDAF30 Programmering i C++ Avslutning. Sammanfattning och frågor 1 Syntax, förklaringar Sven Gestegård Robertz Datavetenskap, LTH 2016 2 Stack-allokering Heap-allokering: new och delete 3 Avslutning.

Läs mer

Innehåll. Pekare Syntax

Innehåll. Pekare Syntax Innehåll EDAF30 Programmering i C++ Typer, pekare Sven Gestegård Robertz Datavetenskap, LTH 2015 1 Typer och arrayer Operatorn -> Typer, pekare 2/1 Påminner om referenser i Java, men en pekare är minnesadressen

Läs mer

Tentamen i Programmering grundkurs och Programmering C

Tentamen i Programmering grundkurs och Programmering C 1 of 8 Örebro universitet Institutionen för naturvetenskap och teknik Thomas Padron-McCarthy (thomas.padron-mccarthy@oru.se) Tentamen i Programmering grundkurs och Programmering C för D1 m fl, även distanskursen

Läs mer

Objektorientering: Lagring och livstid

Objektorientering: Lagring och livstid TDDD78, TDDE30, 729A85 jonas.kvarnstrom@liu.se 2018 Objektorientering: Lagring och livstid Tre sorters variabler Tre sorters variabel (1): Lokal 2 Lokal variabel Deklareras inuti en metod Vid varje anrop

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

C++-programmets beståndsdelar

C++-programmets beståndsdelar C++-programmets beståndsdelar Ett C++-program är uppdelat i headerfiler (fil.h) och implementationsfiler (fil.cpp) Programmet måste innehålla åtminstone funktionen int main() main() startar programmet

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

Byggstenar. C++-programmets beståndsdelar. C++-programmets beståndsdelar. Grundläggande datatyper

Byggstenar. C++-programmets beståndsdelar. C++-programmets beståndsdelar. Grundläggande datatyper C++-programmets beståndsdelar Ett C++-program är uppdelat i headerfiler (fil.h) och implementationsfiler (fil.cpp) Programmet måste innehålla åtminstone funktionen int main() main() startar programmet

Läs mer

PROGRAMMERING-Java Omtentamina

PROGRAMMERING-Java Omtentamina PROGRAMMERING-Java Omtentamina Nicolina Månsson 2007-08 13 Tentamensinstruktioner Poängsättning Hela tentamen omfattar 41 poäng. Poäng för varje uppgift står angivet inom parentes före varje uppgift. -

Läs mer

TENTAMEN CD5250. Objektorienterad programutveckling med C++, 5p. Datum: , Tid: 14:00-19:00

TENTAMEN CD5250. Objektorienterad programutveckling med C++, 5p. Datum: , Tid: 14:00-19:00 TENTAMEN CD5250 Objektorienterad programutveckling med C++, 5p Max poäng: 40 Betygsgränser: 3: 20 4: 28 5: 36 Datum: 1999-06-01, Tid: 14:00-19:00 Ansvarig: Ivica Crnkovic Upp till 5 poäng kan komma från

Läs mer

Operativsystem ID2200/06 omtentamen :00-18:00

Operativsystem ID2200/06 omtentamen :00-18:00 Operativsystem ID2200/06 omtentamen 2017-04-10 14:00-18:00 Instruktioner Du får, förutom skrivmateriel, endast ha med dig en egenhändigt handskriven A4 med anteckningar. Mobiler etc skall lämnas till tentamensvakterna.

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

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

Agenda. Arrayer deklaration, åtkomst Makron Flerdimensionella arrayer Initiering Strängar Funktioner och arrayer. Övningar nu och då Agenda Arrayer deklaration, åtkomst Makron Flerdimensionella arrayer Initiering Strängar Funktioner och arrayer Övningar nu och då 1 Motivering I de flesta problem ingår att hantera multipla data I de

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

Programmering i C++ EDA623 Mer om klasser. EDA623 (Föreläsning 6) HT 2013 1 / 26

Programmering i C++ EDA623 Mer om klasser. EDA623 (Föreläsning 6) HT 2013 1 / 26 Programmering i C++ EDA623 Mer om klasser EDA623 (Föreläsning 6) HT 2013 1 / 26 Mer om klasser Innehåll Konstanta objekt Statiska medlemmar Pekaren this Vänner (friends) Överlagring av operatorer EDA623

Läs mer

4. Maskinnära programmering i C. Förberedelser till hemlaboration 1.

4. Maskinnära programmering i C. Förberedelser till hemlaboration 1. IS1200 ösningar till exempel, övning 4, 2015 4. Maskinnära programmering i C. Förberedelser till hemlaboration 1. 4.1. Big-endian och little-endian När heltal, flyttal och adresser ska lagras i datorns

Läs mer

Classes och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016

Classes och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016 Classes och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016 Abstract class En abstract class är en class som inte kan skapa några objekt. Syfte:

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

DD2387 Programsystemkonstruktion med C++ Tentamen 1 Torsdag 7 januari 2016, 14:00-18:00

DD2387 Programsystemkonstruktion med C++ Tentamen 1 Torsdag 7 januari 2016, 14:00-18:00 DD2387 Programsystemkonstruktion med C++ Tentamen 1 Torsdag 7 januari 2016, 14:00-18:00 Introduktion Skriv dina svar på separata papper, dessa scannas in efter inlämning. Du kan skriva på både fram- och

Läs mer

Classes och Interfaces, Objects och References, Initialization

Classes och Interfaces, Objects och References, Initialization Classes och Interfaces, Objects och References, Initialization Objekt-orienterad programmering och design (DIT953) Niklas Broberg/Johannes Åman Pohjola, 2018 Abstract class En abstract class är en class

Läs mer

Indicerade variabler

Indicerade variabler Indicerade variabler ARRAYER kan vara VEKTORARRAYER eller MATRISARRAYER Deklaration och användning av array (=vektorarray) Array och for-loop Slumptal Arrayer i två dimensioner (= matrisarray, matris)

Läs mer

HI1024 Programmering, grundkurs TEN

HI1024 Programmering, grundkurs TEN HI1024 Programmering, grundkurs TEN2 2016-12-22 KTH STH Flemingsberg 8.15-13.00 Tillåtna hjälpmedel: Kursboken C PROGRAMMING A Modern Approach K. N. King helt utan anteckningar Alternativt C från början

Läs mer

Tentamen i. Programmering i språket C

Tentamen i. Programmering i språket C 1 of 8 Örebro universitet Institutionen för naturvetenskap och teknik Thomas Padron-McCarthy (thomas.padron-mccarthy@oru.se) Tentamen i Programmering i språket C för D1 m fl, även distanskursen torsdag

Läs mer

Assemblerprogrammering, ARM-Cortex M4 del 3

Assemblerprogrammering, ARM-Cortex M4 del 3 Assemblerprogrammering, ARM-Cortex M4 del 3 Ur innehållet: Fler pekartyper Användning av stacken Lagringsklasser, synlighet - lokala variabler Funktioner - returvärden och parametrar Läsanvisningar: Arbetsbok

Läs mer

Objektorienterad Programmering (TDDC77)

Objektorienterad Programmering (TDDC77) Objektorienterad Programmering (TDDC77) Föreläsning II: utmatning, variabler, typer Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2017 Outline Java Språket Utmatning av Sträng litteraler Variabler

Läs mer

Hantering av textsträngar och talsträngar. William Sandqvist

Hantering av textsträngar och talsträngar. William Sandqvist Hantering av textsträngar och talsträngar Strängen Hello world! PIC-processorerna lagrar strängkonstanter med bokstäverna inbakade i en följd av instruktioner (en tabell). Man hämtar en bokstav genom att

Läs mer

Vad händer när man kör ett program? Program och processer. Funktionsanrop. Avsluta programmet

Vad händer när man kör ett program? Program och processer. Funktionsanrop. Avsluta programmet Vad händer när man kör ett program? Program och processer När man kompilerar ett program och sedan länkar ihop det så stoppar länkaren in lite extra kod i programmet. Det är denna kod som i sin tur anropar

Läs mer

TDIU01 - Programmering i C++, grundkurs

TDIU01 - Programmering i C++, grundkurs TDIU01 - Programmering i C++, grundkurs Underprogram - Funktioner Eric Elfving Institutionen för datavetenskap 18 september 2014 Översikt 2/22 Återblick till satsblocken Funktioner - Namngivna satsblock

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

I Skapa Hej.java och skriv programmet. I Kompilera med javac Hej.java. I Rätta fel och repetera tills du lyckas kompilera ditt program

I Skapa Hej.java och skriv programmet. I Kompilera med javac Hej.java. I Rätta fel och repetera tills du lyckas kompilera ditt program Kompilera och köra programmet Objektorienterad Programmering (TDDC77) Föreläsning II: utmatning, variabler, typer Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 under terminal 2: I Skapa Hej.java

Läs mer

Innehåll. Resource handles. Resurshantering. Minnesallokering. Minnesallokering Exempel: allokering på stacken. 7. Resurshantering, Felhantering

Innehåll. Resource handles. Resurshantering. Minnesallokering. Minnesallokering Exempel: allokering på stacken. 7. Resurshantering, Felhantering Innehåll EDAF30 Programmering i C++ 7. Resurshantering, Felhantering Sven Gestegård Robertz Datavetenskap, LTH 2016 1 Resurshantering Stack-allokering Heap-allokering: new och delete 2 Felhantering Exceptions

Läs mer

Objektorienterad Programmering (TDDC77)

Objektorienterad Programmering (TDDC77) Objektorienterad Programmering (TDDC77) Föreläsning II: utmatning, variabler, typer Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 Kompilera och köra programmet under terminal 2: I Skapa Hej.java

Läs mer

Tentamen i Programmering grundkurs och Programmering C

Tentamen i Programmering grundkurs och Programmering C 1 of 6 Örebro universitet Institutionen för naturvetenskap och teknik Thomas Padron-McCarthy (thomas.padron-mccarthy@oru.se) Tentamen i Programmering grundkurs och Programmering C för D1 m fl, även distanskursen

Läs mer

C++ Lektion Tecken och teckenfält

C++ Lektion Tecken och teckenfält C++ Lektion Tecken och teckenfält Teori Hittills har alla variabler du jobbat med varit olika typer av tal, men du kan också deklarera variabler som håller bokstavstecken. Denna variabeltyp kallas för

Läs mer

Innehåll. 1 Typdeklarationer och typomvandling 2 Resurshantering. 3 Objektorientering, kort repetition. 4 Klasser

Innehåll. 1 Typdeklarationer och typomvandling 2 Resurshantering. 3 Objektorientering, kort repetition. 4 Klasser Innehåll EDAF30 Programmering i C++ Resurshantering. Objektorientering. Klasser. Sven Gestegård Robertz Datavetenskap, LTH 2015 1 Typdeklarationer och typomvandling 2 Resurshantering Stack-allokering Heap-allokering:

Läs mer

Tillämpad programmering

Tillämpad programmering Tillämpad programmering C++ objekt Johan Montelius 1 struct struct Person { string name; int age; ; Person p; p.name = Joe ; p.age = 42; cout

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

Tecken. char. char ch = A ; sizeof(char) = 1 byte (ej 16-bitars tecken som i Java) char namn[]= "Nils"; // längd = 5 bytes

Tecken. char. char ch = A ; sizeof(char) = 1 byte (ej 16-bitars tecken som i Java) char namn[]= Nils; // längd = 5 bytes Tecken EDAF30 Programmering i C++ 2. Tecken och texter char char ch = A ; Sven Gestegård Robertz Datavetenskap, LTH 2015 sizeof(char) = 1 byte (ej 16-bitars tecken som i Java) char c1, c2; c1 = A ; c2

Läs mer

tentaplugg.nu av studenter för studenter

tentaplugg.nu av studenter för studenter tentaplugg.nu av studenter för studenter Kurskod Kursnamn D0017E Inledande programmering för ingenjörer Datum 2014-10-31 Material Tentamen Kursexaminator Betygsgränser Tentamenspoäng 3 14; 4??; 5?? 25/25

Läs mer