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

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. johnnyp@kth.se 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. johnnyp@kth.se 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 johnnyp@kth.se 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. johnnyp@kth.se 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. johnnyp@kth.se 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]. johnnyp@kth.se 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). johnnyp@kth.se 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. johnnyp@kth.se 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. johnnyp@kth.se Sidan 9 av 9

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

*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, 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

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

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

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

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

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

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

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

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

Planering Programmering grundkurs HI1024 HT TIDAA

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

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

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

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

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

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

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

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

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

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

Att förstå hur man konstruerar modulära program Att kunna skapa nya funktioner Att förstå hur data skickas mellan funktioner

Att förstå hur man konstruerar modulära program Att kunna skapa nya funktioner Att förstå hur data skickas mellan funktioner Lektion 4, del 1, kapitel 10 Funktioner i JavaScript Inlärningsmål Att förstå hur man konstruerar modulära program Att kunna skapa nya funktioner Att förstå hur data skickas mellan funktioner Introduktion

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

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

Ö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

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

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

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

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

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

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

Läs mer

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

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

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

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

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

HI1024, Programmering, grundkurs, 8hp KTH STH TENTAMEN. HI1024:TEN1 - Teoretisk tentamen Tid: Torsdagen den 20 oktober 2011,

HI1024, Programmering, grundkurs, 8hp KTH STH TENTAMEN. HI1024:TEN1 - Teoretisk tentamen Tid: Torsdagen den 20 oktober 2011, KTH STH TENTAMEN HI1024:TEN1 - Teoretisk tentamen Tid: Torsdagen den 20 oktober 2011, 8.15-12.15 Gamla kurskoder: HI1900, 6E2950, etc. Examinator: Johnny Panrike Rättande lärare: Nicklas Brandefelt, Johnny

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

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

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

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

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

Övningsuppgifter kapitel 8

Övningsuppgifter kapitel 8 Inst. för Systemteknik Introduktion till programmering (SMD 180), 5 p Övningsuppgifter kapitel 8 1. Listor är en viktig datatyp i Python. Hur definierar kursboken lista? Vad kallas de värden som tillsammans

Läs mer

HI1024 Programmering, grundkurs TEN

HI1024 Programmering, grundkurs TEN HI1024 Programmering, grundkurs TEN2 2016-01-09 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

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

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

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

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

Ö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

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

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

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

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

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

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

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

Uttryck och villkor. Föreläsning 2

Uttryck och villkor. Föreläsning 2 Uttryck och villkor Föreläsning 2 Dagens kluring Finn fem fel! #include int main(void) printf("resistans hos R1 (ohm) : ") scanf("%d",r1); printf("resistans hos R2 (ohm) : "); scanf("%d",r2);

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

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

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

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

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

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

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

Alla filer som bearbetar PHP script ska avslutas med ändelsen.php, exempelvis ska en indexsida till en hemsida heta index.php

Alla filer som bearbetar PHP script ska avslutas med ändelsen.php, exempelvis ska en indexsida till en hemsida heta index.php Introlektion PHP är ett av de enklare språken att lära sig just pga. dess dynamiska struktur. Det används för att bygga upp båda stora och mindre system. Några vanliga system som använder sig av PHP är

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

Föreläsning 3-4 Innehåll

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

Läs mer

Labora&on 2 Funk&oner, if och loop övningar/uppgi:er

Labora&on 2 Funk&oner, if och loop övningar/uppgi:er Labora&on 2 Funk&oner, if och loop övningar/uppgi:er 1M322 Webbteknik 2, 7,5hp Medieteknik 2017 Rune Körnefors rune.kornefors@lnu.se 1. Ladda ner arbetsdokument Till övningarna i denna labora&on finns

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

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

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

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

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

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

Frekvenstabell över tärningskast med C#

Frekvenstabell över tärningskast med C# Instruktion Frekvenstabell över tärningskast med C# Introduktionsuppgift Författare: Mats Loock Kurs: Inledande programmering med C# Kurskod:1DV402 Innehåll Du ska följa steg för steg -instruktionen i

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

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

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

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

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

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

KTH STH TENTAMEN. HI1024:TEN2 - Praktisk tentamen Tid: 8-13, den 18 februari 2012

KTH STH TENTAMEN. HI1024:TEN2 - Praktisk tentamen Tid: 8-13, den 18 februari 2012 KTH STH TENTAMEN HI1024:TEN2 - Praktisk tentamen Tid: 8-13, den 18 februari 2012 Gamla kurskoder: HI1900, 6E2950, etc. Examinator: Johnny Panrike Rättande lärare: Nicklas Brandefelt, Johnny Panrike och

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

Programmering, grundkurs, 8.0 hp HI1024, TEN1. Fredagen den 2 mars 2012

Programmering, grundkurs, 8.0 hp HI1024, TEN1. Fredagen den 2 mars 2012 Programmering, grundkurs, 8.0 hp HI1024, TEN1 Fredagen den 2 mars 2012 Tentamen består av två delar, del A och del B. Del A innehåller 4 kryssfrågor på olika teman inom C programmering. Varje fråga är

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

Programmering, grundkurs, 8.0 hp HI1024, extra tentamen, TEN1, för TIDAA1. Fredagen den 11 mars 2011,

Programmering, grundkurs, 8.0 hp HI1024, extra tentamen, TEN1, för TIDAA1. Fredagen den 11 mars 2011, Programmering, grundkurs, 8.0 hp HI1024, extra tentamen, TEN1, för TIDAA1 Fredagen den 11 mars 2011, 13.15 17.15 Tentamen består av två delar, del A och del B. Del A innehåller 10 kryssfrågor på olika

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

Uppgift 1 (grundläggande konstruktioner)

Uppgift 1 (grundläggande konstruktioner) Uppgift 1 (grundläggande konstruktioner) a) Skriv ett program som låter användaren mata in 7 heltal och som gör utskrifter enligt nedanstående körexempel. Mata in 7 heltal: 1 0 0 3 1 1 1 Tal nr 2 var en

Läs mer

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

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

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

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