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

Save this PDF as:
 WORD  PNG  TXT  JPG

Storlek: px
Starta visningen från sidan:

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

Transkript

1 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 successivt igenom de viktiga avsnitten. Datorns minne och 11.1 Pointer variables, pekarvariabler Datorns minne är indelat i små delar, den minsta delen heter en bit och lagrar en etta eller en nolla. 8 bitar grupperas ihop i bytes och varje byte i datorn har ett ordningsnummer, detta kallas för en adress. En adress är ett då ett heltal som varierar mellan 0 (lägsta adressen) och datorns högsta adress som väldigt ofta är cirka 4 miljarder, då talar vi om en dator med 4 gigabyte i internminne. En adress är alltså ett heltal, men vi kan inte lagra adresser i vanliga heltalsvariabler, för att lagra en adress måste vi använda så kallade pekarvariabler, eller kortare, pekare. En pekarvariabel (eller pekare) kan alltså innehålla alltså ett heltal som är adressen till ett lagringsutrymme i datorn. Vi studerar ett exempelprogram: main() int a, b, c; a = 10; b = 20; c = 30; printf("variabelnamn\t\tvarde\t\tadress\n"); printf("\ta\t\t%d\t\t%u\n", a, &a); printf("\tb\t\t%d\t\t%u\n", b, &b); printf("\tc\t\t%d\t\t%u\n", c, &c); Dess körning visas nedan: Variabelnamn Varde Adress a b c Vi får tag i en variabels adress med hjälp av adressoperatorn &, så &a betyder adressen till a. Vi ser att adresserna till variablerna a, b och c slutar på 844, 840 respektive 836. Vi kan skapa en bild av hur detta är organiserat i minnet med ledning av siffrorna 10, 20 och 30 (de värden som variablerna innehåller) och variablernas adresser som vi benämner 836, 840 och 844. Så här kan vi föreställa oss det: Adress Värde Variabelnamnen lagras inte i datorns minne i den körbara filen, de hör till källkoden, int maskinkoden. Datorn refererar alltid, under normal körning, till variablers adresser och aldrig deras namn. Vi har, i modellen av datorns minne, också sorteras minnescellerna i stigande adressordning. Sidan 1 av 9

2 Vi vill nu vill införa en pekare i ovanstående program, en pekare är en variabel som kan innehålla en adress som värde, vi vill alltså ha följande situation: Adress Värde Här har vi infört en ny variabel, med adress 848, och dess värde är 840 som är adressen till variabeln a. Detta kallas då en pekare eller pekarvariabel. Den deklareras så här: int *p; Adressoperatorn Vi ska snart återvända till pekarvariabeln, men först ska vi studera adressoperatorn. Man får tag i en variabels adress med hjälp av adressoperatorn som skrivs med ett och-tecken, alltså &. Det är precis den här vi använt väldigt ofta tillsammans med scanf() då vi matar in värden i körande program från tangentbordet. Men när vi vill införa en pekarvariabel (eller kortare pekare) måste vi deklarera den på ett speciellt sätt, om vi vill åstadkomma situationen som illustreras ovan kan vi skriva så här: int *p; (Som redan nämnt ovan.) p = &b; När p nu innehåller adressen till b säger vi att p pekar på b. Om vi inte skriver * i deklarationen av p så blir p en vanlig heltalsvariabel och då får vi inte göra tilldelningen p = &b. Vi måste alltså sätta dit * framför p och då kan vi lagra adressen till b i p. Observera att p själv då är en variabel som också har en adress, vi ska inte fundera så mycket över det nu dock Värdeoperatorn Adressoperatorn & tar alltså fram adressen hos en variabel. Men då vi har en pekare (som p ovan) så kan man också ta fram värdet på den minnesplats (variabel) som p pekar på. Vi gör det med hjälp av värdeoperatorn. Om vi skriver *p i situationen ovan kommer vi alltså åt b. Om vi utvidgar vår modell av minnet och även annoterar variabelnamn i marginalen (trots att de inte finns i datorns minne) kan detta se ut så här: Deklarationer och satser i programmet Visualiering av resultatet i datorns minne int *p, a, b, c; a=10; b=20; c=30; p=&b; I figuren har vi valt att symbolisera att p pekar på b genom att rita in en pil. Det ser vi också genom att innehållet i p är 840 som är just adressen till variabeln b. Sidan 2 av 9

3 Värdeoperatorn är också en stjärna, *, som används i koden som ska utföra någonting. Uttrycket *p är ett så kallat lvalue, förkortning för left-hand-side-value som alltså kan stå till vänster om en tilldelningsoperator. Om vi utför en operation, som till exempel tilldelning, på *p så påverkas istället variabeln b. Det vill säga *p = 30 tilldelar variabeln b värdet 30. Vi kan utföra andra operationer också, skriver vi *p = *p + 1 så ökar vi b med 1, om vi skriver *p = a så tilldelar vi b värdet i variabeln a (som är 10.) 11.3 Tilldelningar till pekare När vi utför operationer på *p, där p är en pekare, som ovan, har vi sett att det som påverkas är det som p pekar på, ovan var det variabeln b. Men vi kan också arbeta direkt med värdet på p, alltså den adress som p innehåller. Vi gjorde det ovan då vi skrev p=&b, det var själva den operation som etablerade just det faktum att p pekar på b. Om vi nu har två pekare till heltal som är deklarerade så här: int *p, *q; så har de alltså möjlighet att peka på två olika platser i datorns minne. Om vi även har deklarerat två heltalsvariabler, i och j, och har gjort tilldelningarna p = &i och q = &j så pekar alltså p på i och q pekar på j. Vi studerar ett par olika sorters tilldelningar. Följande tilldelningar: *p = 1 och *q = 2 tilldelar, som vi vet, i värder 1 och j värdet 2. Följande tilldelning: *p = *q tilldelar i det värde som finns i j. Men följande tilldlning: q = p gör inte saker med i och j. Denna tilldelning ställer om vad q pekar på, efter denna tilldelning pekar q inte längre på j utan q pekar på i, precis som p. Det innebär att alla operationer på *q också påverkar i precis på samma sätt som *p påverkar värdet på i. Variabeln j är bortkopplad i och med tilldelningen q = p Pekare som argument Vi återvänder till deklarationen ovan, Deklarationer och satser i programmet Visualiering av resultatet i datorns minne int *p, a, b, c; a=10; b=20; c=30; p=&b; Många gånger har vi anropat funktionen scanf() för att läsa in ett heltal, om vi skulle gjort det med variabeln b ovan så kunde vi skrivit så här: scanf( %d,&b). Nu är det dock så att variabeln p redan pekar på b, det vill säga p innehåller redan &b. Det betyder att vi också kan mata in ett värde i variabeln b genom anropet scanf( %d,p), det ger exakt samma resultat som scanf( %d,&b). Anropet till scanf() med p eller, likvärdigt, &b som parameter är ett Sidan 3 av 9

4 exempel på då vi anropar en funktion med en pekare som parameter. Vi skickar alltså inte in värdet på b i scanf(), vi skickar in adressen till b så att funktionen scanf() vet var värdet på b ska placeras. Det är också så vi tänker när vi skickar en adress till en funktion, vi vill ofta förändra värdet på den variabel som parametern (en pekare) pekar på. Ett klassiskt exempel på en funktion som tar pekare som argument är den som byter plats på två variablers värde, vi kallar den swap() och ett program som visar visas nedan jämsides en provkörning där vi matar in värdena 10 respektive 20 i funktionen. swap(int * a, int * b) int tmp; tmp = *b; *b = *a; *a = tmp; Mata in x: 10 Mata in y: 20 x=20 y=10. main() int x, y, *p=&y; printf("mata in x: "); scanf("%d", &x); printf("mata in y: "); scanf("%d", p); swap(&x,&y); printf("x=%d y=%d.\n", x, y); Vi roar oss här också med att anropa scanf() med en pekarvariabel som pekar på y, men det hade vi kunnat strunta i. Om man inte skickar en pekarvariabel då man måste det så har resultatet ofta totalt katastrofala följder. Den funktion som förväntar sig en parameter kommer definitivt att använda värdeoperatorn på den parameter som den får in, som swap() gör på a och b ovan. Om vi inte har adressoperatorerna på anropet till swap() ovan, och alltså skickar in värdena 10 och 20 som värden på a och b, ja då försöker funktionen utföra sina operationer på de minnespositioner som har adresserna 10 respektive 20. Dessa adresser leder sannolikt till ett utrymme som programmet inte har tillåtelse att arbeta i, operativsystemet fångar upp detta och ser programmet som en brottsling och programmet utsätts för en påtvingad avstängning, en krasch som vi brukar säga. Detta har ni troligen råkat ut för många gånger då ni glömt adressoperatorn vid anrop till scanf() Pekare som returvärden Läs själva, inte så fasligt viktigt. Sidan 4 av 9

5 12 Pekare och arrayer HI1024 Programmering, grundkurs, 8.0 hp, KTH STH, hösten 2012 Vi ska nu se på släktskapet mellan pekare och arrayer. De är starkt kopplade i C och det kan man ofta utnyttja för att skapa mycket kraftfull kod Aritmetik utförd på pekare Vi kan få en pekare p att peka på första elementet i en array, så här, int a[10], *p=&a[0];. Då vi gör tilldelningen *p=5 lägger vi alltså in talet 5 på a[0]. Det intressanta här är att vi kan utföra vissa aritmetiska operationer på p. Om vi ökar p med 1, genom p++ eller p = p + 1 så flyttar sig pekaren p så att den pekar på nästa element i arrayen, här a[1]. Det är normalt inte så man först kanske skulle tänka sig resultatet, om vi ökar en variabels värde med 1 så ska väl värdet öka med 1? Nästa element i arrayen har ju en adress som är 4 heltalssteg över det förra värdet? Ett program illustrerar: main() int a[10], *p=&a[0]; printf("%u.\n", (unsigned int)p); p++; printf("%u.\n", (unsigned int)p); Detta programs körning ser ut så här: Det andra värdet som skrivs ut är fyra större än det första, men vi har genom operationen p++ väl bara adderat 1 till p, eller? Nej, pekararitmetiken föreskriver att när vi gör p++ så flyttar vi fram p så många steg som är storleken på det vi pekar på, i det här fallet int som har storleken 4. Operationen p++ resulterar alltså i att värdet på p ökar med 4, inte 1. I C kan vi göra följande aritmetiska operationer på pekare: 1. Addera heltal till en pekare (som ovan.) 2. Subtrahera ett heltal från en pekare (samma som ovan, fast man går åt andra hållet). 3. Subtrahera en pekare från en annan. Om de pekar in i samma array så blir resultatet det antal steg i arrayen som de respektive elementen (som pekarna pekar på) ligger från varandra. Ni får experimentera er fram till en förståelse av detta, ni behöver inte använda er av pekararitmetik och sannning att säga så har jag aldrig gjort det. Det är fullt tillräckligt att arbeta med index till arrayer och göra aritmetiska operationer på index istället för pekare som pekar in i den array man arbetar med. Men vi ska ändå undersöka detta lite mer. Sidan 5 av 9

6 12.2 Pekare till arrayer HI1024 Programmering, grundkurs, 8.0 hp, KTH STH, hösten 2012 Pekararitmetik fungerar i särskilt väl i loopar, vi kan gå igenom en array med en pekare på följande sätt: int a[10], *p; for(p=&a[0];p<&a[10];p++) gör något med *p Det står bara gör något med *p och det är förstås bara en abstraktion, i en riktig loop så utför vi någonting med *p och påverkar såldes arrayen. En likvärdig formulering utan pekararitmetik (som jag alltid använder), som ni klarar er alldeles utmärkt med, skulle vara int a[10], i; for(i=0;i<10;i++) gör något med a[i] Det är någonting som är konstigt med for(p=&a[0];p<&a[10];p++). Vad kan det vara? OBS: När man kombinerar värdeoperatorn, alltså * på pekare, och inkrementeringsoperatorn, alltså ++ på pekare, så måste man vara noggrann med precendensen, alltså vilken operator som utförs först. Personligen avstår jag från pekararitmetik, man kan klara sig utan det. Men för er som är intresserade av pekararitmetik är det viktigt att ni speciellt läser avsnittet Combining the * and ++ Operators, på sidan 262. Alla behöver läsa detta avsnitt för att kunna förstå denna kod, förstå skillnaden mellan uttrycken *p++, (*p)++, ++p och ++*p. Men i er kod kan ni alltid välja att separera inkrementeringsoperatorn (++) och värdeoperatorn (*) för tydlighetens skull. Man kan också använda parenteser för att skapa extra tydlighet gällande vad som utförs först. Boken föreskriver ibland i övningarna att man ska använda pekararitmetik, men ni kan göra som ni vill där. Vi ser på ett par exempel. Värdet av *p++ är samma sak som *p, efter detta värde använts ökas p med 1. Istället för koden q = *p++; kan man istället skriva q = *p; //Alltså först göra det man vill med *p p++; //och därefter öka p med 1. Det är tydligare att skriva på det sätt som illustreras precis ovan för det betonar att vi ökar p:s värde, inte värdet på *p Ett arraynamn som pekare En mycket viktig och kraftfull egenskap då det gäller släktskapet mellan arrayer och pekare är att själva namnet på en array kan användas som pekare till arrayens första element. Det vill säga om vi har deklarationen int a[10]; så är namnet, alltså a, samma sak som &a[0]. Vi kan alltså skriva *a = 7 så läggs 7 in på a[0], och *(a+1) = 12; så lägger vi in 12 på plats a[1]. Sidan 6 av 9

7 Vi kan förenkla loopar som går igenom arrayer ytterligare, istället för att skriva for(p=&a[0];p<&a[10];p++) gör något med *p så kan vi skriva for(p=a;p<a+10;p++) gör något med *p Men jag föredrar personligen att faktiskt bara arbeta med index (här deklarerat ovan som int i), som sagt jag avstår från pekararitmetik, och bara skriva for(i=0;i<10;i++) gör något med a[i] även om det blir lite mer kod. Att skicka arrayer till funktioner, avsnitt 12.3 (array arguments revisited) och 12.4 Det absolut viktigaste med detta avsnitt, släktskap mellan arrayer och pekar är egenskapen att vi kan skicka en pekare till en array som parameter till en funktion genom att bara använda arraynamnet. Vi ska studera ett av kursens bästa exempel som bokens funktion find_largest() som ser ut så här: int find_largest (int a[], int n) int i, max; max = a[0]; for (i=1;i<n;i++) if(a[i]>max) max = a[i]; return max; main() int tal[] = 5, 3, 7, 6, 9, 1; printf("largest: %d.\n", find_largest(tal, 6)); Vi har även lagt in ett litet testprogram som inte finns i boken för att illustrera hur vi anropar find_largest(). En körning ser ut så här: Largest: 9. Alltså arrayens största element (9) skrivs ut. Vi ser här klart och tydligt hur arraynamnet, tal, används direkt i anropet, i funktionen tar vi emot en array av tal, int a[], men vi skulle lika gärna kunna haft parameterdeklarationen int *a, alltså int find_largest (int *a, int n). Sidan 7 av 9

8 Att skicka tvådimensionella arrayer som parametrar till funktioner Vi behöver inte undersöka släktskapet mellan pekare och flerdimensionella arrayer i fullständig detaljrikedom, men vi behöver veta hur man skickar tvådimensionella arrayer till funktioner. För att kunna diskutera detta behöver vi först förtydliga vad som händer vid ett funktionsanrop och hur parametrarna hanteras. Vi studerar ett par exempel och börjar med ett minimalt exempel: int f(int x) return x+1; main() int a=5, b; b=f(a); Vad händer när detta program kör? Översiktligt, vi skickar a = 5 till funktionen som tar emot värdet 5 i parametern x, och skickar tillbaka x+1 som alltså är 5+1 som alltså kommer tillbaka i variabeln b i huvudprogrammet. Variabeln b har alltså värdet 6 då programmet är klart. Det viktiga att poängtera här är att funktionen f får en kopia av värdet på a. Värdet på a var 5 vid anropet och denna 5:a kopieras in i värdet på parametern x. Anropet innebär alltså att x tilldelas värdet 5. Eftersom lagringsutrymmena för variabeln a och parametern x är skilda åt är värdet i a skyddat. Funktionen påverkar inte det i framtiden. Faktiskt sker exakt samma sak om en parameter är en array, vi tittar tillbaka på exemplet ovan, find_largest. Vi väljer då att betona att parametern a i funktionen lika gärna kan anses vara en pekare, så vi ser alltså den alternativa definitionen nedan: int find_largest (int *a, int n) int i, max; max = a[0]; for (i=1;i<n;i++) if(a[i]>max) max = a[i]; return max; main() int tal[] = 5, 3, 7, 6, 9, 1; printf("largest: %d.\n", find_largest(tal, 6)); Vid anropet så skickas pekaren tal till funktionen find_largest(). Låt oss anta att den har värdet Ett löjligt värde, men ändå, låt oss låtsas detta. Det som händer vid anropet är samma sak som i det minimala exemplet ovan, 1000, alltså adressen till arrayen tal, kopieras in i parametern a. När funktionen kör (efter den är anropad) har alltså parametern a värdet Det betyder att a, sedd som pekare, pekar på tal[0], och i loopen som följer refereras till a[i] där i går igenom 1 till och med 5 (styrt av den andra parametern n, som här har värdet 6.) När funktionen refererar till a[i] kan alltså funktionen undersöka innehållet i arrayen tal via a som är en pekare till arrayen tal. Obserevera att arrayens adress, tal, levereras till funktionen på precis samma sätt som det mycket simpla exemplet med f ovan. Sidan 8 av 9

9 Det är alltså bara adressen till första elementet som skickas då man skickar ett arraynamn som parameter till en funktion. Och det enda som skickas är alltså en startposition. Det innebär en komplikation då man ska skicka tvådimensionella arrayer. Vi ser på ett enkelt exempel där vi vill skicka en tvådimensionell array till en funktion. Antag att vi har följande kod. f(int a[][]) int r, c; a[0][0] = 0; a[1][2] = 0; for(r=0;r<2;r++) for(c=0;c<3;c++) printf("%d ", a[r][c]); printf("\n"); main() int tal[2][3] = 1, 2, 3, 4, 5, 6; f(tal); I huvudprogrammet bildar vi en tvådimensionell array som heter tal och så skickar vi den till funktionen f. I minnet representeras en tvådimensionell array enligt principen row-major, en 2x3-array, alltså med 2 rader och 3 kolumner, läggs då ut i minnet i hela rader, så innehållet i minnet blir någonting i stil med [ ], alltså först första raden (1 2 3) följt av andra raden. (Vi skulle kunna tänka oss column major också och ha representationen [ ], men det har vi inte.) Problemet här är att funktionen f, som inte alls vet något annat än startadressen för den tvådimensionella arrayen, inte vet hur många element som finns i varje rad, alltså antal kolumner, en klump data som har representationen [ ] skulle lika gärna kunna varit en 2x3- array och inte en 3x2-array. Vi måste ange det i parameterdeklarationen för funktionen. Deklarationen ovan är alltså inte korrekt, om vi kompilerar denna kod får vi meddelandet error: array type has incomplete element type kompilatorn säger då att typen på arrayen (array type) är ofullständigt angiven, (incomplete). Vi gör deklarationen fullständig genom att ange hur många kolumner den tvådimensionella arrayen har genom följande nya funktionsdeklaration: f(int a[][3]) Nu fungerar programmet som det är tänkt, alltså programmet skickar in 2x3-arrayen i funktionen som nollställer första och sista elementet och skriver ut resultatet med en nästlad loop. Resultatet ser ut så här: Sammanfattningsvis: Pekare och arrayer är starkt kopplade. Då det gäller parametrar till funktioner är de identiska, en array-parameter ÄR en pekare. Vi behöver inte fundera så mycket kring pekare till enstaka rader som boken gör. Sidan 9 av 9

*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

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

Programmering, grundkurs, 8.0 hp HI1024, HI1900 etc., Tentamen TEN1. Måndagen den 10 januari 2011,

Programmering, grundkurs, 8.0 hp HI1024, HI1900 etc., Tentamen TEN1. Måndagen den 10 januari 2011, Programmering, grundkurs, 8.0 hp HI1024, HI1900 etc., Tentamen TEN1 Måndagen den 10 januari 2011, 8.15 12.15 Tentamen består av två delar, del A och del B. Del A innehåller 10 kryssfrågor på olika teman

Läs mer

Programmering, grundkurs, 8.0 hp, Elektro, KTH, hösten 2010. Programmering: att instruera en maskin att utföra en uppgift, kräver olika språk:

Programmering, grundkurs, 8.0 hp, Elektro, KTH, hösten 2010. Programmering: att instruera en maskin att utföra en uppgift, kräver olika språk: Föreläsning 1 OH: Övergripande information Programmering: att instruera en maskin att utföra en uppgift, kräver olika språk: * maskinspråk = ettor och nollor, kan bara en maskin förstå. * programmeringsspråk

Läs mer

Programmeringsteknik med C och Matlab

Programmeringsteknik med C och Matlab Programmeringsteknik med C och Matlab Kapitel 2: C-programmeringens grunder Henrik Björklund Umeå universitet Björklund (UmU) Programmeringsteknik 1 / 32 Mer organisatoriskt Imorgon: Datorintro i lab Logga

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

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

Programmering, grundkurs, 8.0 hp HI1024, omtentamen, TEN1. Tisdagen den 7 juni 2011,

Programmering, grundkurs, 8.0 hp HI1024, omtentamen, TEN1. Tisdagen den 7 juni 2011, Programmering, grundkurs, 8.0 hp HI1024, omtentamen, TEN1 Tisdagen den 7 juni 2011, 8.15 12.15 Tentamen består av två delar, del A och del B. Del A innehåller 10 kryssfrågor på olika teman inom C programmering.

Läs mer

Planering Programmering grundkurs HI1024 HT 2014

Planering Programmering grundkurs HI1024 HT 2014 Planering Programmering grundkurs HI1024 HT 2014 Föreläsning V36 Föreläsning 1 Vad är programmering? Boken! Kurs-PM Vad är ett program? Kompilerande- Interpreterande Programmeringsmiljö Hello World! Att

Läs mer

Övningsuppgifter till föreläsning 2 Variabler och uttryck

Övningsuppgifter till föreläsning 2 Variabler och uttryck Sid 1 (5) Övningsuppgifter till föreläsning 2 Variabler och uttryck Syfte Syftet med övningsuppgifterna är att träna på: Aritmetik, variabler, tilldelning, scanf och printf Generellt Diskutera gärna uppgifterna

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

HI1024, Programmering, grundkurs, 8hp KTH STH TENTAMEN. HI1024:TEN2 - Praktisk tentamen Tid: Fredagen den 21 oktober 2011,

HI1024, Programmering, grundkurs, 8hp KTH STH TENTAMEN. HI1024:TEN2 - Praktisk tentamen Tid: Fredagen den 21 oktober 2011, KTH STH TENTAMEN HI1024:TEN2 - Praktisk tentamen Tid: Fredagen den 21 oktober 2011, 8.15-13.15 Gamla kurskoder: HI1900, 6E2950, etc. Examinator: Johnny Panrike Rättande lärare: Nicklas Brandefelt, Johnny

Läs mer

1 Funktioner och procedurell abstraktion

1 Funktioner och procedurell abstraktion 1 Funktioner och procedurell abstraktion Det som gör programkonstruktion hanterlig och övergripbar och överhuvudtaget genomförbar är möjligheten att dela upp program i olika avsnitt, i underprogram. Vår

Läs mer

Planering Programmering grundkurs HI1024 HT 2015 - data

Planering Programmering grundkurs HI1024 HT 2015 - data Planering Programmering grundkurs HI1024 HT 2015 - data Föreläsning V36 Föreläsning 1 Programmering Kurs-PM Programmeringsmiljö Hello World! Variabler printf scanf Föreläsning 2 Operatorer Tilldelning

Läs mer

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp Dataingenjörsprogrammet, elektroingenjörsprogrammet och medicinsk teknik KTH Skolan för Teknik och Hälsa Redovisning: Se Kurs-PM om hur redovisningen

Läs mer

2.1 Variabler. 2.2 Regler för namngivning i C. Programmering, grundkurs, 8.0 hp, Elektro, KTH, hösten Föreläsning 2

2.1 Variabler. 2.2 Regler för namngivning i C. Programmering, grundkurs, 8.0 hp, Elektro, KTH, hösten Föreläsning 2 Föreläsning 2 2.1 Variabler Vi studerar exempel 1 från boken: int main(void) int a,b,c=7; float antal,pris=3.70,laengd; a=34; b=32767; antal=-123.978; pris=89.00; laengd=56; c=-38; laengd=laengd+1; Sex

Läs mer

Dagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten?

Dagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten? Programmeringsteknik och Matlab Övning 4 Dagens program Övningsgrupp 2 (Sal Q22/E32) Johannes Hjorth hjorth@nada.kth.se Rum 4538 på plan 5 i D-huset 08-790 69 02 Kurshemsida: http://www.nada.kth.se/kurser/kth/2d1312

Läs mer

Beräkningsvetenskap föreläsning 2

Beräkningsvetenskap föreläsning 2 Beräkningsvetenskap föreläsning 2 19/01 2010 - Per Wahlund if-satser if x > 0 y = 2 + log(x); else y = -1 If-satsen skall alltid ha ett villkor, samt en då det som skall hända är skrivet. Mellan dessa

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

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

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

HI1024 Programmering, grundkurs TEN

HI1024 Programmering, grundkurs TEN HI1024 Programmering, grundkurs TEN2 2015-01-08 KTH STH Haninge 13.15-18.00 Tillåtna hjälpmedel: En A4 handskriven på ena sidan med egna anteckningar Kursboken C PROGRAMMING A Modern Approach K. N. King

Läs mer

Föreläsning 2. Variabler, tilldelning och kodblock{} if-satsen Logiska operatorer Andra operatorer Att programmera

Föreläsning 2. Variabler, tilldelning och kodblock{} if-satsen Logiska operatorer Andra operatorer Att programmera Föreläsning 2 Variabler, tilldelning och kodblock if-satsen Logiska operatorer Andra operatorer Att programmera Variabler Det är i variabler som all data (information) lagras. Genom att ändra värde på

Läs mer

HI1024 Programmering, grundkurs TEN

HI1024 Programmering, grundkurs TEN HI1024 Programmering, grundkurs TEN2 2014-10-27 KTH STH Haninge 13.15-18.00 Tillåtna hjälpmedel: En A4 handskriven på ena sidan med egna anteckningar Kursboken C PROGRAMMING A Modern Approach K. N. King

Läs mer

6.1 Kompilering och lite grundläggande information

6.1 Kompilering och lite grundläggande information 6 Förhoppningsvis ska de C-konstruktioner som gås igenom här tillsammans med de exempelprogram som ges här och i andra delar av lab-pm vara tillräckliga för att ni ska kunna klara av laborationerna. Syftet

Läs mer

Programmering, grundkurs, 8.0 hp, Elektro, KTH, hösten 2010

Programmering, grundkurs, 8.0 hp, Elektro, KTH, hösten 2010 Föreläsning 6 Kapitel 5 5.1 switch-satsen Vi ser på ett par exempel ur boken: int a; srand(time(0)); a=rand()%6+1; if(a==1) printf("hej Du glade\n"); else if(a==2) printf("god dag\n"); else if(a==3) printf("är

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

Funktioner och programstruktur. Föreläsning 5

Funktioner och programstruktur. Föreläsning 5 Funktioner och programstruktur Föreläsning 5 Dagens kluring int v[10]=1,2,3,4,5,6,7,8,9,10; int i; for(i=0;i

Läs mer

C++ Funktioner 1. int summa( int a, int b) //funktionshuvud { return a+b; //funktionskropp } Värmdö Gymnasium Programmering B ++ Datainstitutionen

C++ Funktioner 1. int summa( int a, int b) //funktionshuvud { return a+b; //funktionskropp } Värmdö Gymnasium Programmering B ++ Datainstitutionen C++ Funktioner 1 Teori När programmen blir större och mer komplicerade är det bra att kunna dela upp programmet i olika delar som gör specifika saker, vilket kan göra programmet mer lättläst. Ett sätt

Läs mer

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

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

Läs mer

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp Dataingenjörsprogrammet, elektroingenjörsprogrammet och medicinsk teknik KTH Skolan för Teknik och Hälsa Redovisning: Se Kurs-PM om hur redovisningen

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

struct egendefinierad typ struct LECTURE_TYPE { char teacher[99]; float lengthinminutes; char type; /* L = lecture, E = exercise */ };

struct egendefinierad typ struct LECTURE_TYPE { char teacher[99]; float lengthinminutes; char type; /* L = lecture, E = exercise */ }; struct egendefinierad typ struct LECTURE_TYPE { char teacher[99]; float lengthinminutes; char type; /* L = lecture, E = exercise */ Vad är problemet? Att kunna lagra data som avser flera olika egenskaper

Läs mer

Boken?!?! Vad är ett program? Kompilerande-Interpreterande Programmeringsmiljö Hello World! Att programmera och ett enkelt program Variabler printf

Boken?!?! Vad är ett program? Kompilerande-Interpreterande Programmeringsmiljö Hello World! Att programmera och ett enkelt program Variabler printf Föreläsning1 Boken?!?! Vad är ett program? Kompilerande-Interpreterande Programmeringsmiljö Hello World! Att programmera och ett enkelt program Variabler printf scanf Ni behöver läsa boken både för att

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

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

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

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

HI1024 Programmering, grundkurs TEN2 2015-10-30

HI1024 Programmering, grundkurs TEN2 2015-10-30 HI1024 Programmering, grundkurs TEN2 2015-10-30 KTH STH Haninge 8.15-13.00 Tillåtna hjälpmedel: En A4 handskriven på ena sidan med egna anteckningar Kursboken C PROGRAMMING A Modern Approach K. N. King

Läs mer

Övningsuppgift. En array baklänges. Steg 1. Författare: Mats Loock Kurs: Inledande programmering med C# Kurskod:1DV402

Övningsuppgift. En array baklänges. Steg 1. Författare: Mats Loock Kurs: Inledande programmering med C# Kurskod:1DV402 Övningsuppgift En array baklänges Steg 1 Författare: Mats Loock Kurs: Inledande programmering med C# Kurskod:1DV402 Upphovsrätt för detta verk Detta verk är framtaget i anslutning till kursen Inledande

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

Parameteröverföring. Exempel. Exempel. Metodkropp

Parameteröverföring. Exempel. Exempel. Metodkropp Exempel atriangle.changesize (100, 50); // OK atriangle.changesize (100); // fel antal atriangle.changesize ( 1, 50); // fel datatyp char c = atriangle.getarea (); // fel datatyp Parameteröverföring I

Läs mer

Operatorer Tilldelning Kodblock { } if satsen Logiska uttryck Att programmera

Operatorer Tilldelning Kodblock { } if satsen Logiska uttryck Att programmera Föreläsning 2 Operatorer Tilldelning Kodblock if satsen Logiska uttryck Att programmera En operator tar ett eller två data och producerar ett svar. Typexemplet är +. Den tar t.ex två heltal och producerar

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

Programmering C: Tentamen of 5 Prioritet och associativitet hos operatorerna i C De viktigaste operatorerna: Prioritet Kategori Operator

Programmering C: Tentamen of 5 Prioritet och associativitet hos operatorerna i C De viktigaste operatorerna: Prioritet Kategori Operator Programmering C: Tentamen 2008-05-31 1 of 5 Örebro universitet Institutionen för teknik Thomas Padron-McCarthy (Thomas.Padron-McCarthy@tech.oru.se) Tentamen i Programmering grundkurs och Programmering

Läs mer

Föreläsning 8: Structar

Föreläsning 8: Structar Föreläsning 8: Structar Structar är ett sätt att få en variabel att innehålla mer än ett värde, precis som arrayer, men skillnaden, mellan structar och arrayer är att i en array så har alla element samma

Läs mer

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

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

Läs mer

Klassdeklaration. Metoddeklaration. Parameteröverföring

Klassdeklaration. Metoddeklaration. Parameteröverföring Syntax: Class Declaration Modifier Class Body Basic Class Member Klassdeklaration class Class Member Field Declaration Constructor Declaration Method Declaration Identifier Class Associations Motsvarar

Läs mer

4 Sammansatta datatyper

4 Sammansatta datatyper 4 Sammansatta datatyper De enkla datatyper som vi hittills använt är otillräckliga när man ska hantera stora datamängder. Vill man exempelvis läsa in 100 reella mätvärden, som man tillfälligt vill spara

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

Tentamen i. för D1 m fl, även distanskursen. lördag 26 februari 2011

Tentamen i. för D1 m fl, även distanskursen. lördag 26 februari 2011 1 of 7 Örebro universitet Akademin 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

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp Dataingenjörsprogrammet, elektroingenjörsprogrammet och medicinsk teknik KTH Skolan för Teknik och Hälsa Redovisning: Se Kurs-PM om hur redovisningen

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

Programmeringsteknik och Matlab. Dagens program. Viktiga datum. Repetitionsexempel. Repetition av if/else, for, while och Scanner

Programmeringsteknik och Matlab. Dagens program. Viktiga datum. Repetitionsexempel. Repetition av if/else, for, while och Scanner Programmeringsteknik och Matlab Övning 3 Dagens program Övningsgrupp 2 (Sal Q22/E32) Johannes Hjorth hjorth@nada.kth.se Rum 4538 på plan 5 i D-huset 08-790 69 02 Kurshemsida: http://www.nada.kth.se/kurser/kth/2d1312

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

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

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

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

Läs mer

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

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

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

Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p

Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p Skriven av Michael Andersson Introduktion Programmering I högnivåspråk fokuserar på själv problemet (algoritmen) istället

Läs mer

Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition.

Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition. Institutionen för Datavetenskap Göteborgs universitet HT2009 DIT011 Vem är vem på kursen Objektorienterad programvaruutveckling GU (DIT011) Kursansvarig : Katarina Blom, tel 772 10 60 Rum: 6126 (E-huset)

Läs mer

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Exempelduggan. Luffarschack. Koda spel

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Exempelduggan. Luffarschack. Koda spel 732G11 Linköpings universitet 2011-02-15 1 2 3 4 Extrapass Extrapass håller på att bokas. Blir 3-4 st. och öppet för alla. Mer info på kursmailen när bokningen är klar. i Java En funktion i Java... public

Läs mer

TUTORIAL: SAMLING & KONSOLL

TUTORIAL: SAMLING & KONSOLL TUTORIAL: SAMLING & KONSOLL Denna tutorial är en fortsättning på den tutorial där vi skapade klassen Car och sedan objekt av denna klass. Vi skall nu lära oss att lagra dessa objekt i en samling och även

Läs mer

Tentamen i. Programmering i språket C

Tentamen i. Programmering i språket C 1 of 6 Örebro universitet Akademin 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 lördag 25 februari

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

Introduktion till programmering och Python Grundkurs i programmering med Python

Introduktion till programmering och Python Grundkurs i programmering med Python Introduktion till programmering och Python Hösten 2009 Dagens lektion Vad är programmering? Vad är en dator? Filer Att tala med datorer En första titt på Python 2 Vad är programmering? 3 VAD ÄR PROGRAMMERING?

Läs mer

Laboration 1 - Grunderna för OOP i Java

Laboration 1 - Grunderna för OOP i Java Uppdaterad: 2006-08-31 Laboration 1 - Grunderna för OOP i Java Inledning Laborationen går ut på att lära sig grunderna för objektorienterad programmering, samt motsvarande språkkonstruktioner i Java. Labben

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

Bankkonto - övning. Övning 2 Skriv en metod, geträntan, som returnerar räntan.

Bankkonto - övning. Övning 2 Skriv en metod, geträntan, som returnerar räntan. Bankkonto - övning Övningar att göra efter lärardemostration. Filen bankkonto.zip innehåller ett projekt med klassen Bankkonto. Zippa upp denna fil och öppna projektet i BlueJ och skriv vidare på klassen

Läs mer

Datorteknik 2 (AVR 2)

Datorteknik 2 (AVR 2) Namn: Laborationen godkänd: Digitala system 15 hp Datorteknik 2 (AVR 2) LTH Ingenjörshögskolan vid Campus Helsingborg Enkel in- och utmatning. Drivrutiner. Bithantering. I denna laboration ska vi förbättra

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

HI1024 Programmering, grundkurs TEN2 2014-03-13

HI1024 Programmering, grundkurs TEN2 2014-03-13 HI1024 Programmering, grundkurs TEN2 2014-03-13 KTH STH Haninge 13.15-18.00 Tillåtna hjälpmedel: En A4 handskriven på ena sidan med egna anteckningar Kursboken C PROGRAMMING A Modern Approach K. N. King

Läs mer

C++ Slumptalsfunktioner + switch-satsen

C++ Slumptalsfunktioner + switch-satsen C++ Slumptalsfunktioner + switch-satsen Veckans avsnitt består av ett antal lite udda funktioner man kan ha nytta av när man skriver program. Det är en slumptalsgenerator och lite annat smått och gott.

Läs mer

Värmedistribution i plåt

Värmedistribution i plåt Sid 1 (6) Värmedistribution i plåt Introduktion Om vi med konstant temperatur värmer kanterna på en jämntjock plåt så kommer värmen att sprida sig och temperaturen i plåten så småningom stabilisera sig.

Läs mer

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Muddy. Funktioner / metoder. Punktnotation. Evalueringsordning

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Muddy. Funktioner / metoder. Punktnotation. Evalueringsordning Varför? 732G11 Linköpings universitet 2011-02-08 Varför? 1 2 3 Varför? 4 5 Medelvärde av 5000 tal Varför? while-loopen int nrofints = 5000; int [] integers = new int [ nrofints ]; int pos = 0; while (

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

Språket Python - Del 2 Grundkurs i programmering med Python

Språket Python - Del 2 Grundkurs i programmering med Python Hösten 2009 Dagens lektion Funktioner Filhantering Felhantering 2 Funktioner 3 FUNKTIONER Att dela upp program Att dela upp program i mindre delar, funktioner är ett viktigt koncept i programmering. Viktigt

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

Metoder. Inledande programmering med C# (1DV402)

Metoder. Inledande programmering med C# (1DV402) Metoder 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 i detta verk av

Läs mer

Hjälpmedel för kompilatorkonstruktion, DVB004

Hjälpmedel för kompilatorkonstruktion, DVB004 Hjälpmedel för kompilatorkonstruktion, DVB004 Version 4.2 021104 Göran Fries 031104 GF Kompilatorn kan lämpligen konstrueras i tre ganska fristående pass (p1,p2,p3). Första passet gör en lexikalisk analys,

Läs mer

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

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

Läs mer

Programmering i C, 7,5 hp

Programmering i C, 7,5 hp Programmering i C, 7,5 hp Föreläsning 4 VÄLKOMNA! 31 switch-satsen Antag att vi har en heltalsvariabel a som skall styra programflödet Antag vidare att a kan anta tex 5 olika värden 1,2,3,4,5 printf( Mata

Läs mer

Frekvenstabell över tärningskast med C#

Frekvenstabell över tärningskast med C# Guide Frekvenstabell över tärningskast med C# Introduktionsuppgift Författare: Mats Loock Kurs: Inledande programmering med C# Kurskod:1DV402 Upphovsrätt för detta verk Detta verk är framtaget i anslutning

Läs mer

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2 AID-nummer: Datum: 2014-12-18 Kurskod: 725G61 Provkod: LAB1 Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2 Skrivningstid: 2014-12-18 klockan 8.00-10.00. Hjälpmedel: Inga. För varje fråga

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

Tentamen i Programmering grundkurs och Programmering C

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

Läs mer

GPT föreläsning 8. Förra veckan: Man kan ta tiden på en sorterad teckensträng Förra gången: Problemlösning på lägre nivå kan sortera funktioner

GPT föreläsning 8. Förra veckan: Man kan ta tiden på en sorterad teckensträng Förra gången: Problemlösning på lägre nivå kan sortera funktioner GPT föreläsning 8 Förra veckan: Man kan ta tiden på en sorterad teckensträng Förra gången: Problemlösning på lägre nivå kan sortera funktioner Denna gång Reflektioner kring OU1 Funktioner Reflektioner

Läs mer

OBS! All teori i detta och följande dokument kompletteras med genomgångar på lektionerna. Så det är viktigt att närvara och göra egna anteckningar.

OBS! All teori i detta och följande dokument kompletteras med genomgångar på lektionerna. Så det är viktigt att närvara och göra egna anteckningar. Värmdö Gymnasium Programmering A 110123 Lektion C1 Grunder Att programmera handlar mycket om att lära sig att analysera det problem eller den funktion man vill att programmet ska ha, och översätta det

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

Tentamen i Programmering grundkurs och Programmering C

Tentamen i Programmering grundkurs och Programmering C 1 of 6 Örebro universitet Akademin 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

Metodanrop - primitiva typer. Föreläsning 4. Metodanrop - referenstyper. Metodanrop - primitiva typer

Metodanrop - primitiva typer. Föreläsning 4. Metodanrop - referenstyper. Metodanrop - primitiva typer Föreläsning 4 Metodanrop switch-slingor Rekursiva metoder Repetition av de första föreläsningarna Inför seminariet Nästa föreläsning Metodanrop - primitiva typer Vid metodanrop kopieras värdet av en variabel

Läs mer

Användarhandledning Version 1.2

Användarhandledning Version 1.2 Användarhandledning Version 1.2 Innehåll Bakgrund... 2 Börja programmera i Xtat... 3 Allmänna tips... 3 Grunderna... 3 Kommentarer i språket... 4 Variabler... 4 Matematik... 5 Arrayer... 5 på skärmen...

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

HI1025 Operativsystem, KTH Haninge, VT2012

HI1025 Operativsystem, KTH Haninge, VT2012 Del 2 av kursen: Systemprogrammering. Tillfälle 5 (F): Introduktion till programmering med parallella processer: fork(), wait(), exit(), getpid(), getppid(), execl(), execvp(). 1. Parallella processer

Läs mer

Metoder - en funktion: medel

Metoder - en funktion: medel itop Läsanvisning: kap 2+13 F5 Metoder - en funktion: medel metodhuvud, funktionshuvud, signatur modifierare formella resultatvärdets typ parametrar metodens namn! Metoder, parameteröverföring! Fält Nästa

Läs mer

Alla datorprogram har en sak gemensam; alla processerar indata för att producera något slags resultat, utdata.

Alla datorprogram har en sak gemensam; alla processerar indata för att producera något slags resultat, utdata. Att förstå variabler Alla datorprogram har en sak gemensam; alla processerar indata för att producera något slags resultat, utdata. Vad är en variabel? En variabel är en plats att lagra information. Precis

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

GPT- föreläsning 10. För en vecka sedan Problemlösning på lägre nivå kan sortera funktioner Förra gången

GPT- föreläsning 10. För en vecka sedan Problemlösning på lägre nivå kan sortera funktioner Förra gången GPT- föreläsning 10 För en vecka sedan Problemlösning på lägre nivå kan sortera funktioner Förra gången poparoramometoterorövoverorfoförorinongog Denna gång Olika typer av fel Felsökning och felsökningsverktyg

Läs mer

Föreläsning 2, vecka 8: Repetition

Föreläsning 2, vecka 8: Repetition TDA 548: Grundläggande Programvaruutveckling Föreläsning 2, vecka 8: Repetition Magnus Myréen Chalmers, läsperiod 1, 2016-2017 Idag Metoder och terminologi Referensvärden och arrays Interface och ritning

Läs mer