2. Pekere og referanser.

Størrelse: px
Begynne med side:

Download "2. Pekere og referanser."

Transkript

1 Avdeling for informatikk og e-læring, Høgskolen i Sør-Trøndelag 2. Pekere og referanser. Mildrid Ljosland og Else Lervik Lærestoffet er utviklet for faget IFUD1048 C++ for programmerere med grunnlag i lærestoff fra LV195D Objektorientert programmering i C++ 2. Pekere og referanser. Resymé: Leksjonen gir en innføring i pekere og referanser, samt argumentoverføring. Innhold 1.1. Å LAGE OG BRUKE EN PEKER TABELL SOM PEKER CONST-PEKERE ARITMETIKK PÅ, OG SAMMENLIKNING AV PEKERE Å addere et heltall til en peker Å subtrahere to pekere Sammenlikning PEKERE MÅ BEHANDLES MED FORSIKTIGHET! REFERANSER ARGUMENTOVERFØRING Verdioverføring Referanseoverføring Referanse til læreboka: P. Deitel & H. Deitel: C++11 for Programmers, ch. 8. Annen referanse: Kap i Else Lervik og Mildrid Ljosland: Programmering i C++, Stiftelsen TISIP og Gyldendal, 2003 inneholder omtrent det samme som leksjonen.

2 2. Pekere og referanser. side 2 av Å lage og bruke en peker En peker er en variabel som kan inneholde adressen til en annen variabel. En stjerne * i variabeldefinisjonen markerer at vi snakker om en peker. Eksempel: int tallet; int *pekeren; pekeren = &tallet; *pekeren = 6; Merk Når &-tegnet står på høyre side av = i en variabeldefinisjon eller i en tilordningssetning, betyr det at vi skal finne adressen til det som kommer bak, og la denne adressen være verdien til det som står på venstre side (eksempel: int *pekeren = &tallet;). Variablene tallet og pekeren er vist på figur tallet 6 tallet pekeren 100 pekeren A: Peker tegnet som datacelle med adresse B: Peker tegnet som datacelle med pil Figur 1: To måter å representere en peker int *pekeren forteller at variabelen pekeren er en peker til en int, slik at den kan inneholde adressen til en int-variabel. Ved å skrive pekeren = &tallet gir vi pekeren en verdi som forteller hvor tallet er lagret. Hvis tallet er lagret på adresse 100, vil pekeren få verdien 100. *pekeren = 6 betyr at den adressen som pekeren viser til (adresse 100, dvs. tallet), skal få verdien 6. * kalles dereferanseoperatoren, og leses gjerne det som variabelen peker til. I vårt eksempel: Det som pekeren peker til er en int, og den skal få verdien 6. & er adresseoperatoren og leses "adressen til". I vårt eksempel: pekeren får som verdi adressen til tallet. & og * er motsatte operatorer, de opphever hverandre. Uttrykket *&pekeren betyr det samme som &*pekeren og det samme som pekeren. Ved å bruke en peker, kan vi bruke en variabel uten å angi navnet på den. *pekeren = 6 forandrer verdien på variabelen tallet, men gjør ingenting med pekeren. Dette kalles indirekte adressering, og utnyttes i en del situasjoner.

3 2. Pekere og referanser. side 3 av Tabell som peker I forrige leksjon nevnte vi så vidt at navnet på en tabell er en adresse. int tabell[10]; forteller kompilatoren at den skal sette av plass til ti heltall, og at tabell brukes som betegnelse for tabellen. Merk Når vi skriver bare tabell, tolkes det som adressen til første element i tabellen. Vi kan la en peker peke til et element i tabellen: int *heltallspeker = &tabell[4]; eller vi kan la pekeren peke til (begynnelsen av) tabellen: int *heltallspeker= tabell; som er det samme som int *heltallspeker= &tabell[0]; Når heltallspeker peker til begynnelsen av tabell, kan heltallspeker og tabell brukes om hverandre. Vi kan skrive tabell[2] = 5; heltallspeker[3] = 8; det samme som tabell[3] = 8 *heltallspeker = 0; det samme som heltallspeker [0] = 0 og som tabell[0] = 0 *tabell = tabell[2]; det samme som tabell[0] = tabell[2] Bruk den skrivemåten du syns er mest naturlig ut fra sammenhengen const-pekere Du er vant med å bruke const for å navngi en konstant, eksempel: const int maks = 100; Vi vil trenge å bruke const i forbindelsen med pekere. Det er med på å gjøre programmene våre sikrere. Eksempel: Du er kjent med strlen()-funksjonen for å finne lengden av en streng. Funksjonsprototypen ser slik ut: size_t strlen(const char *tekst); Når vi angir en peker på denne måten, betyr det at det som pekeren peker til, er konstant. Vi sier at det er en konstantpeker. Kompilatoren vil da passe på at vi ikke prøver å forandre det. Skriver vi tekst[0] = 'A' inni funksjonen, vil vi få kompileringsfeil. Merk at pekeren ikke er konstant, det er bare det den peker til, som er det. Dermed er det lov å skrive tekst = &tekst[1]; Vi kan ikke la en ikke-konstantpeker peke til det samme som en konstant-peker, for da kunne vi likevel ha forandret på det som konstantpekeren peker til. Det er altså ikke lov å skrive

4 2. Pekere og referanser. side 4 av 12 char *pekeren = tekst når tekst er definert som en konstantpeker, mens const char *pekeren = tekst går bra. Den motsatte veien går også bra. Det kan aldri skje noe galt om vi sier at en ikke-konstant skal betraktes som en konstant, dvs. vi kan la en konstantpeker peke til en variabel. Derfor kan vi godt la en variabel være aktuelt argument når det formelle er en konstantpeker. char entekst[81]; cin >> entekst; cout << "Lengden på teksten er " << strlen(entekst); For å angi at pekeren er en konstant, skriver vi int *const pekeren = &tall; Leses: Konstanten pekeren er en peker til int. Som andre konstanter, kan en pekerkonstant bare initieres, ikke tilordnes verdi. pekeren = &tall2; er ulovlig. Men det den peker til, kan godt forandres: *pekeren = 5; gjør at tall får verdien 5. Vi kan også lage en peker som både selv er en konstant, og det den peker til er en konstant: const int *const pekeren = &tall; Konstanten pekeren er en peker til en konstant heltalls-variabel Aritmetikk på, og sammenlikning av pekere Å utføre aritmetiske operasjoner på en adresse har bare begrenset interesse. Hva skulle f.eks. resultatet bety hvis vi multipliserer to adresser med hverandre? Følgende aritmetiske operasjoner er definert: Å addere et heltall til, eller subtrahere et heltall fra, en peker. Å subtrahere en peker fra en annen. Dessuten har vi følgende sammenlikningsoperasjoner: Å finne ut om to pekere er like eller ulike Å finne ut hvilken av to pekere som er størst eller minst Å addere et heltall til en peker Når vi adderer 1 til en peker, vil den peke til neste variabel. Eksempel: double tabell[5]; double *pekeren; pekeren = tabell; pekeren peker til tabell[0] *pekeren = 0.0; tabell[0] får verdien 0.0 *(pekeren + 1) = *pekeren; tabell[1] får samme verdi som tabell[0] pekeren++; pekeren peker til tabell[1]

5 2. Pekere og referanser. side 5 av 12 Merk Når vi adderer et heltall til en peker flytter vi oss så mange variabler som tallet forteller. Addisjonen regnes i samme enhet som den datatypen pekeren peker til, uavhengig av hvor mange byte denne datatypen bruker. Uttrykket *(pekeren + N) betyr nøyaktig det samme som uttrykket pekeren[n] pekeren tabell[0] tabell[1] tabell[2] tabell[3] tabell[4] pekeren + 4 Figur 2: Pekeraddisjon Figur 2 viser at når pekeren peker til tabell[0], vil pekeren + 4 peke til variabelen fire plasser videre i minnet, dvs. tabell[4]. Følgende lille program viser hvordan pekeraddisjon virker: // // pekeraddisjon.cpp // #include <iostream > using namespace std; int main() { const int m = 5; int heltall[m]; double flyttall[m]; cout << "heltallsadresser:\n"; // Adressene skrives ut på heksadesimal form. for (int i = 0; i < m; i++) cout << (heltall + i) << endl; cout << "\nflyttallsadresser:\n"; for (i = 0; i < m; i++) cout << (flyttall + i) << endl; return 0; Kjøring av programmet: heltallsadresser: Vi ser at adressene endrer seg med 4 for hver gang i øker med 1. En variabel av typen int legger beslag på 4 byte

6 2. Pekere og referanser. side 6 av 12 flyttallsadresser: En variabel av typen double legger beslag på 8 byte. Dermed øker adressen med 8 hver gang i øker med Pekeraddisjon kan utnyttes til å gå gjennom en hel tabell: const int lengde = 10; int tabell[lengde]; int *pekeren = tabell; for (int teller = 0; teller < lengde; teller++) { *pekeren = 0; pekeren++; Her starter vi med å la pekeren peke til element 0. Inni løkka får den variabelen som pekeren peker til, verdien 0, deretter blir pekeren sin verdi økt slik at den peker til neste element. Uttrykket *pekeren + 1 tolkes som (*pekeren) + 1 fordi + har lavere prioritet enn *. Ønsker vi verdien av det som pekeren + 1 peker til, må vi skrive *(pekeren + 1). En oversikt over prioritetene til operatorene finner du i vedlegg A i Deitel & Deitel (side ) Å subtrahere to pekere Vi kan finne antall elementer mellom to variabler, ved å ta differansen mellom adressene til dem. const char *tekst = "Et eksempel"; const char *start = tekst; while (*tekst!= '\0') tekst++; int lengde = tekst - start; cout << "Tekstlengden er lik " << lengde << endl; Eksemplet finner lengden til teksten Et eksempel. tekst og start er begge pekere. Differansen mellom dem forteller hvor langt det er mellom adressene de peker til. Som ved addisjon, regnes differansen i samme enhet som det pekerne peker til. Hvis tekst - start har verdien 2, er det to tegn mellom det som start peker til og det som tekst peker til. Utskriften fra eksemplet blir: Tekstlengden er lik Sammenlikning To pekere av samme type kan sammenliknes med hensyn på likhet og ulikhet: if (peker1 == peker2)... tester om peker1 og peker2 inneholder samme adresse, dvs. peker til den samme variabelen. if (*peker1 == *peker2) tester om det de peker til, er likt. Alle pekere kan sammenliknes med 0. Vi kan også teste om en peker er større eller mindre enn en annen peker. Da vil vi finne ut hvordan det de peker til er plassert i forhold til hverandre i minnet. Vanligvis vil dette bare være aktuelt når vi ønsker å teste om et tabellelement er foran eller bak et annet.

7 2. Pekere og referanser. side 7 av 12 I eksemplet nedenfor definerer vi en tabell og to pekere. Den ene peker til begynnelsen av tabellen, og den andre til slutten. Deretter går vi i løkke og øker den første med 1 inntil den er lik den andre. // // sammenlikning.cpp // #include <iostream> #include <array> using namespace std; int main() { const int lengde = 5; int tabell[lengde] = {1, 2, 3, 4, 5; int *pekeren = tabell; // begynnelsen av tabellen int *slutt = &tabell[lengde]; // adressen rett etter tabellslutt while (pekeren < slutt) { // sammenlikning av pekere cout << "Verdien til slutt er " << slutt << ", til pekeren er " << pekeren << endl; cout << "Avstanden mellom pekeren og slutt er " << (slutt - pekeren) << endl; pekeren++; return 0; /* Utskrift: Verdien til slutt er 0x7fff54afea44, til pekeren er 0x7fff54afea30 Avstanden mellom pekeren og slutt er 5 Verdien til slutt er 0x7fff54afea44, til pekeren er 0x7fff54afea34 Avstanden mellom pekeren og slutt er 4 Verdien til slutt er 0x7fff54afea44, til pekeren er 0x7fff54afea38 Avstanden mellom pekeren og slutt er 3 Verdien til slutt er 0x7fff54afea44, til pekeren er 0x7fff54afea3c Avstanden mellom pekeren og slutt er 2 Verdien til slutt er 0x7fff54afea44, til pekeren er 0x7fff54afea40 Avstanden mellom pekeren og slutt er 1 */ 1.5. Pekere må behandles med forsiktighet! Når du tar i bruk pekere, vil du fort oppdage at det kan skje mye rart hvis du ikke passer nøye på. Advarsel Sørg alltid for at en peker peker til noe fornuftig før du bruker den! Som for enhver annen variabel, vil det alltid stå en eller annen verdi i pekeren når den opprettes. Siden denne verdien tolkes som en adresse, kan den lede hvor som helst i minnet. Det kan ha store konsekvenser å forandre på verdien i denne adressen. Du kan ha havnet i det området av minnet som styrer programutføringen. Da kan programmet gjøre merkelige ting "av seg selv", eller maskinen kan gå helt i stå. I heldigste fall kan du få en feilmelding. Det vil avhenge av hvilken kompilator du bruker.

8 2. Pekere og referanser. side 8 av 12 Eller du kan ha havnet i dataområdet for programmet ditt, slik at du forandrer verdi på en variabel uten å være klar over det. I en del tilfeller kan du være "heldig", slik at det ikke skjer noen synlig skade. Men da kan problemet dukke opp på et seinere stadium, f.eks. når du skal forandre litt på programmet, eller når du skal installere det hos oppdragsgiver... For å unngå å ødelegge noe på denne måten, er det en god regel å la alle pekere initieres til 0 (i C++ 11 kan vi bruke nullptr, som svarer til null i Java en peker som ikke peker til noe) hvis de ikke straks får en annen verdi. Adresse 0 brukes ikke til noe fornuftig, slik at du ikke kan ødelegge noe om du legger en verdi her. Men gjør du det, vil du kanskje få en feilmelding som lyder "Null pointer assignment" ved slutten av programutføringen. Og da er det helt sikkert en feil i programmet. 0 kan ikke betraktes som et vanlig tall i denne forbindelsen, andre tall enn 0 gir kompileringsfeil. Advarsel Ikke tro at du kan få en tabell ved å definere en peker! En tabell krever mange lagerplasser. Kompilatoren må ha beskjed om hvor mange lagerplasser som skal brukes. Hvis du derimot bare definerer en peker, setter kompilatoren bare av plass til pekeren. Eksempel: Skriver du char *linje; strcpy(linje, "Dette er farlig!!"); // strcpy() kopierer fra 2. til 1.argument, // se side i boka vil det settes av plass til pekeren linje. Teksten vil bli lagret på den plassen linje peker til, som kan være hvor som helst siden linje ikke har fått noen verdi. Derfor kan den ødelegge andre ting, og selv bli ødelagt seinere i programmet. Skriver du derimot char *linje = "Dette går ganske bra!"; eller helst const char *linje = "Dette går helt bra!"; vet kompilatoren hvor mye plass den skal reservere, slik at tekststrengen blir lagret på et trygt sted, og linje satt til å peke til den. Men det blir reservert bare akkurat nok plass, så du kan få problemer hvis du forlenger teksten seinere i programmet, derfor er det lurt å la den være const Referanser En referanse er et ekstra navn på en allerede eksisterende variabel. int tallet; int &ref = tallet; ref = 6; tallet++;

9 2. Pekere og referanser. side 9 av 12 &ref betyr at ref er en referanse. int &ref kan leses "ref er en referanse til en int". Ved å skrive int &ref = tallet angir vi at ref skal være et annet navn på tallet. Da kan vi etterpå bruke både ref og tallet som betegnelse på den samme lagerplassen, slik at begge ender med å ha verdien 7 i eksemplet. tallet 7 ref Figur 3: En referanse Når &-tegnet står på venstre side av = i en erklæring, får vi en referanse (eksempel: int &ref = tallet;). En referanse kan ikke erklæres uten at vi samtidig forteller hvilken variabel den refererer til Argumentoverføring Vi har to typer argumentoverføring i C++: - Verdioverføring: Funksjonen jobber med en kopi av det aktuelle argumentet. Denne metoden brukes ved overføring av enkle variabler, dersom disse variablene er innargumenter. Metoden brukes også ved overføring av tabeller uansett om disse er inn-, inn- /ut- eller ut-argumenter. Da kalles det ofte adresseoverføring. (Dette svarer til argumentoverføring, slik du kjenner det i Java.) - Referanseoverføring: Funksjonen får en referanse til den aktuelle variabelen. Det vil si at funksjonen jobber med den samme variabelen som den kallende funksjonen, eventuelt under et annet navn. Denne metoden brukes for enkle variabler som er kombinerte inn-/utargumenter eller bare ut-argumenter. For objekter/strukturer er det vanlig å benytte denne metoden også for inn-argumenter, dette for å spare både plass og tid. Slike argumenter må da kvalifiseres med const, eksempel const string &navn, slik at en er sikret at funksjonen ikke endrer på verdien. Du vil se eksempler på dette i leksjon 3. (Referanseoverføring eksisterer ikke i C. Der bruker man adresseoverføring også for enkle variabler dersom de skal være ut-argumenter.) Vi skal se nærmere på argumentoverføring i lys av det nylig gjennomgåtte stoffet om pekere og referanser Verdioverføring Eksempel 1 const int makslengde = 10; int main() { int entabell[makslengde]; nullstill(makslengde, entabell);... void nullstill( int antall, // Inn int *tabell) { // Ut

10 2. Pekere og referanser. side 10 av 12 for (int teller = 0; teller < antall ; teller++) { tabell[teller] = 0; Inni funksjonen nullstill() er tabell erklært som en peker, men brukes som en tabell. I main() er entabell en adresse, og den brukes som aktuelt argument der funksjonen krever en peker. Bak kulissene skjer følgende ved kallet: int antall = makslengde; int *tabell = entabell; Det vil si at formelt argument settes lik aktuelt argument. I begge tilfellene har vi verdioverføring, det er verdiene til de aktuelle argumentene som sendes over. Vi ser at adresseoverføring er et spesialtilfelle av verdioverføring. De formelle argumentene vil fungere som lokale variabler inni funksjonen. Og her er tabell en peker. På grunn av at *(tabell + teller) er det samme som tabell[teller] kan vi inni funksjonen bruke []-notasjonen. Se figur 4. Siden tabell er erklært som en peker, vil det bare settes av plass til denne pekeren inni funksjonen. Tar vi sizeof(tabell) inni funksjonen, får vi beskjed om hvor mye plass en peker til int tar, i vår kompilator 4 byte. Hvis vi derimot tar sizeof(entabell) i main(), får vi vite hvor mye plass hele tabellen tar, i vårt eksempel 10 * 4 byte. Prøv det gjerne selv! Det at en tabell og en peker kan brukes om hverandre, kan vi utnytte til å "lure" funksjonen til å tro at tabellen starter et annet sted enn den i virkeligheten gjør. int *pekeren = &entabell[3]; nullstill(5, pekeren); gjør at entabell[3], entabell[4],...,entabell[7] blir nullstilt, mens de andre elementene blir stående urørt. Siden funksjonen får overført adressen til entabell[3], vil den tolke det som om tabellen starter der. tabell[0] vil derfor være entabell[3] og tabell[1] vil være entabell[4], osv. Vi trenger ikke å gå veien om pekeren. Vi kan også skrive nullstill(5, &entabell[3]); I hovedprogrammet: makslengde 10 entabell?????????? I nullstill(): antall 10 tabell int antall nullstill() = makslengde main() ; int *tabell nullstill() = entabell main() ; Figur 4: Verdioverføring

11 2. Pekere og referanser. side 11 av 12 Eksempel 2 Her er et eksempel på hvordan vi kan kopiere en tekststreng: void kopier(const char *fra, char *til) { while (*fra!= '\0') { *til = *fra; fra++; til++; *til = '\0'; Vi utnytter at adresseoverføring er verdioverføring. Adressene fra og til er verdioverført. Inni funksjonen kan de godt endres uten at det har noen innvirkning på de aktuelle argumentene. Bare når vi endrer det som pekerne peker til, får det varig virkning. Her ser vi også at vi bruker const foran argumentet fra. Det betyr at funksjonen ikke kan forandre på det denne pekeren peker til. Det er i samsvar med at dette argumentet er et innargument. Den som bruker funksjonen kan føle seg trygg på at tekststrengen fra ikke blir forandret Referanseoverføring Vi bruker referanser ved ut-argumenter i funksjoner: // // byttverdi.cpp // #include <iostream> using namespace std; void byttverdi(int &talla, int &tallb) { int hjelp= talla; talla = tallb; tallb = hjelp; int main() { int tallen; int tallto; cout << "Skriv to tall: "; cin >> tallen >> tallto; if (tallen > tallto) { byttverdi(tallen, tallto); cout << "I rekkefølge: " << tallen << " " << tallto; cout << endl; return 0; Det som skjer idet funksjonen kalles, er at de formelle argumentene initieres til de aktuelle argumentene. Det fungerer som om vi hadde skrevet setningene int &talla = tallen; int &tallb = tallto;

12 2. Pekere og referanser. side 12 av 12 talla og tallb blir referanser, og det de refererer til, er tallen og tallto. Så når talla får verdien tallb inne i funksjonen, så vil også tallen få denne verdien, siden det er den samme variabelen. (I motsetning til ved verdioverføring, da ville vi fått setningen int talla = tallen, slik at det ble to forskjellige variabler.)

Pekere og referanser.

Pekere og referanser. lesson.md Pekere og referanser. Leksjonen gir en innføring i pekere og referanser, samt argumentoverføring. Skrevet av Mildrid Ljosland, Else Lervik og Ole Christian Eidheim. Eksemplene for denne leksjonen

Detaljer

1. Introduksjon. Pekere og referanser.

1. Introduksjon. Pekere og referanser. Avdeling for informatikk og e-læring, Høgskolen i Sør-Trøndelag 1. Introduksjon. Pekere og referanser. Mildrid Ljosland og Else Lervik 25.01.2011 Lærestoffet er utviklet for faget LV195D Objektorientert

Detaljer

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL Kandidatnr: Eksamensdato: 25. mai 2005 Varighet: 4 timer (9:00 13:00) Fagnummer: LO182D Fagnavn: Programmering i C++ Klasse(r): FU

Detaljer

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL Kandidatnr: Eksamensdato: Varighet: Fagnummer: Fagnavn: Klasse(r): Studiepoeng: Faglærer(e): Hjelpemidler: Oppgavesettet består av:

Detaljer

1. Grunnleggende C++ 1.1. Introduksjon til kurset og til C++ Innhold

1. Grunnleggende C++ 1.1. Introduksjon til kurset og til C++ Innhold Avdeling for informatikk og e-læring, Høgskolen i Sør-Trøndelag 1. Grunnleggende C++ Else Lervik 12.08.2013 Lærestoffet er utviklet for faget IFUD1048 C++ for programmerere med grunnlag i lærestoff fra

Detaljer

Del 1 En oversikt over C-programmering

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

Detaljer

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

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

Detaljer

Kapittel 1 En oversikt over C-språket

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

Detaljer

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

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

Detaljer

i=0 Repetisjon: arrayer Forelesning inf Java 4 Repetisjon: nesting av løkker Repetisjon: nesting av løkker 0*0 0*2 0*3 0*1 0*4

i=0 Repetisjon: arrayer Forelesning inf Java 4 Repetisjon: nesting av løkker Repetisjon: nesting av løkker 0*0 0*2 0*3 0*1 0*4 Forelesning inf - Java 4 Repetisjon: arrayer Tema: Løkker Arrayer Metoder Ole Christian Lingjærde,. september Deklarere og opprette array - eksempler: int[] a = new int[]; String[] a = new String[]; I

Detaljer

Forelesning inf Java 4

Forelesning inf Java 4 Forelesning inf1000 - Java 4 Tema: Løkker Arrayer Metoder Ole Christian Lingjærde, 12. september 2012 Ole Chr. Lingjærde Institutt for informatikk, 29. august 2012 1 Repetisjon: arrayer Deklarere og opprette

Detaljer

Kort om meg. INF1000 Uke 2. Oversikt. Repetisjon - Introduksjon

Kort om meg. INF1000 Uke 2. Oversikt. Repetisjon - Introduksjon Kort om meg INF1000 Uke 2 Variable, enkle datatyper og tilordning Fredrik Sørensen Kontor: Rom 4311-NR, Informatikkbygget Brukernavn/e-post: fredrso@ifi.uio.no Utdanning: Dataingeniør, 2000 Cand.Scient,

Detaljer

INF 1000 høsten 2011 Uke september

INF 1000 høsten 2011 Uke september INF 1000 høsten 2011 Uke 2 30. september Grunnkurs i Objektorientert Programmering Institutt for Informatikk Universitetet i Oslo Siri Moe Jensen og Arne Maus 1 INF1000 undervisningen Forelesningene: Første

Detaljer

INF1000 undervisningen INF 1000 høsten 2011 Uke september

INF1000 undervisningen INF 1000 høsten 2011 Uke september INF1000 undervisningen INF 1000 høsten 2011 Uke 2 30. september Grunnkurs i Objektorientert Programmering Institutt for Informatikk Universitetet i Oslo Siri Moe Jensen og Arne Maus Forelesningene: Første

Detaljer

Programmeringsspråket C

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

Detaljer

HØGSKOLEN I SØR-TRØNDELAG

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

Detaljer

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring Kandidatnr: Eksamensdato: 26.mai 2005 Varighet: 0900-300 Fagnummer: Fagnavn: Klasse(r): LV95D Objektorientert programmering i C++ nettstudenter

Detaljer

Inn og ut i C/C++ 1. Inn og ut i C/C++

Inn og ut i C/C++ 1. Inn og ut i C/C++ Tore Berg Hansen 3.9.2004 Opphavsrett: Forfatter og Stiftelsen TISIP Lærestoffet er utviklet for faget LV194D C++ for javaprogrammerere 1. Resymé: Vi skal her se litt nærmere på hvordan vi får data inn

Detaljer

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

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

Detaljer

Del 3. Pekere RR 2016

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

Detaljer

Litt om Javas håndtering av tall MAT-INF 1100 høsten 2004

Litt om Javas håndtering av tall MAT-INF 1100 høsten 2004 Litt om Javas håndtering av tall MAT-INF 1100 høsten 2004 13. september 2004 En viktig del av den første obligatoriske oppgaven er å få erfaring med hvordan Java håndterer tall. Til å begynne med kan dette

Detaljer

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

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

Detaljer

Del 2 Tabeller, arrays, strenger

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

Detaljer

Repetisjon: operatorene ++ og -- Java 5. Nøtt. Oppgave 1 (fra forrige gang) 0 udefinert udefinert. Alternativ 1 Prefiks-operator

Repetisjon: operatorene ++ og -- Java 5. Nøtt. Oppgave 1 (fra forrige gang) 0 udefinert udefinert. Alternativ 1 Prefiks-operator Litt mer om løkker Arrayer le Christian Lingjærde Gruppen for bioinformatikk Institutt for informatikk Universitetet i slo Java Repetisjon: operatorene ++ og -- Instruksjon i = i + i = i - Alternativ Prefiks-operator

Detaljer

INF1000 : Forelesning 4

INF1000 : Forelesning 4 INF1000 : Forelesning 4 Kort repetisjon av doble (nestede) løkker Mer om 1D-arrayer Introduksjon til 2D-arrayer Metoder Ole Christian Lingjærde Biomedisinsk forskningsgruppe Institutt for informatikk Universitetet

Detaljer

i=0 i=1 Repetisjon: nesting av løkker INF1000 : Forelesning 4 Repetisjon: nesting av løkker Repetisjon: nesting av løkker j=0 j=1 j=2 j=3 j=4

i=0 i=1 Repetisjon: nesting av løkker INF1000 : Forelesning 4 Repetisjon: nesting av løkker Repetisjon: nesting av løkker j=0 j=1 j=2 j=3 j=4 Repetisjon: nesting av løkker Kort repetisjon av doble (nestede) løkker Mer om D-arrayer Introduksjon til D-arrayer Metoder Ole Christian Lingjærde Biomedisinsk forskningsgruppe Institutt for informatikk

Detaljer

Del 4 Noen spesielle C-elementer

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

Detaljer

8. Operator overloading

8. Operator overloading Avdeling for informatikk og e-læring, Høgskolen i Sør-Trøndelag 8.Operator overloading Mildrid Ljosland og Else Lervik 17.10.2006 Lærestoffet er utviklet for faget LV195D Objektorientert programmering

Detaljer

HØYSKOLEN I OSLO, AVDELING FOR INGENIØRUTDANNING

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

Detaljer

K O N T I N U A S J O N S E K S A M E N

K O N T I N U A S J O N S E K S A M E N Høgskolen i Gjøvik K O N T I N U A S J O N S E K S A M E N FAGNAVN: FAGNUMMER: Grunnleggende programmering og datastrukturer L 169 A EKSAMENSDATO: 8. januar 1998 KLASSE: 96HINDA / 96HINDE TID: 09.00-14.00

Detaljer

E K S A M E N. Grunnleggende datakunnskap og programmering 02HIND*, 02HINE*, 02HDMU*, 02HING*, 02HGEOMAA, 02HSIV5

E K S A M E N. Grunnleggende datakunnskap og programmering 02HIND*, 02HINE*, 02HDMU*, 02HING*, 02HGEOMAA, 02HSIV5 Høgskolen i Gjøvik Avdeling for teknologi E K S A M E N FAGNAVN: FAGKODE: Grunnleggende datakunnskap og programmering L 182 A EKSAMENSDATO: 19. desember 2002 KLASSE(R): 02HIND*, 02HINE*, 02HDMU*, 02HING*,

Detaljer

2 Om statiske variable/konstanter og statiske metoder.

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

Detaljer

Kontinuasjonseksamensoppgave i IMT1082 Objekt-orientert programmering

Kontinuasjonseksamensoppgave i IMT1082 Objekt-orientert programmering Institutt for datateknologi og informatikk Kontinuasjonseksamensoppgave i IMT1082 Objekt-orientert programmering Faglig kontakt under eksamen: Frode Haug Tlf: 950 55 636 Eksamensdato: 14.august 2018 Eksamenstid

Detaljer

1 ØVING I WINDOWS FRA CHRISTIAN ANDOLO

1 ØVING I WINDOWS FRA CHRISTIAN ANDOLO 1 ØVING I WINDOWS FRA CHRISTIAN ANDOLO Program fra sekunder Lag et program som leser inn en tid i sekunder (et stort tall). Deretter skal programmet skrive ut hvor mange timer, minutter og sekunder dette

Detaljer

Kontinuasjonseksamensoppgave i IMT1082 Objekt-orientert programmering

Kontinuasjonseksamensoppgave i IMT1082 Objekt-orientert programmering Institutt for datateknologi og informatikk Kontinuasjonseksamensoppgave i IMT1082 Objekt-orientert programmering Faglig kontakt under eksamen: Frode Haug Tlf: 950 55 636 Eksamensdato: 14.august 2017 Eksamenstid

Detaljer

Oppsummering Assemblerkode Hopp Multiplikasjon Kode og data Array Oppsummering

Oppsummering Assemblerkode Hopp Multiplikasjon Kode og data Array Oppsummering Uke 34 Uke 35 Uke 36 Uke 37 Uke 38 Uke 39 Uke 40 Uke 41 Uke 42 Uke 43 Uke 44 Uke 45 Uke 46 Uke 47 sikkerhet datanett programvare digitale kretser Prosessoren II Kort oppsummering Løkker og tester Mer om

Detaljer

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

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

Detaljer

TDT4102 Prosedyre og Objektorientert programmering Vår 2015

TDT4102 Prosedyre og Objektorientert programmering Vår 2015 Norges teknisk naturvitenskapelige universitet Institutt for datateknikk og informasjonsvitenskap TDT4102 Prosedyre og Objektorientert programmering Vår 2015 Øving 3 Frist: 2014-02-07 Mål for denne øvinga:

Detaljer

Høgskolen i Gjøvik. Avdeling for elektro- og allmennfag E K S A M E N. EKSAMENSDATO: 12. desember 1995 TID:

Høgskolen i Gjøvik. Avdeling for elektro- og allmennfag E K S A M E N. EKSAMENSDATO: 12. desember 1995 TID: Høgskolen i Gjøvik vdeling for elektro- og allmennfag E K S M E N FGNVN: FGNUMMER: lgoritmiske metoder LO 64 EKSMENSDTO:. desember 995 TID: 09.00-4.00 FGLÆRER: Frode Haug KLSSE: / E NTLL SIDER UTLEVERT:

Detaljer

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

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

Detaljer

Programmeringsspråket C Del 2

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

Detaljer

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

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

Detaljer

Kontinuasjonseksamen

Kontinuasjonseksamen Høgskolen i Gjøvik Avdeling for teknologi Kontinuasjonseksamen FAGNAVN: FAGKODE: Objekt-orientert programmering L 183 A EKSAMENSDATO: 8. januar 2003 KLASSE(R): 01HIND* / 01HINE* / 01HDMU* TID: 09.00-13.00

Detaljer

Python: Løkker. TDT4110 IT Grunnkurs Professor Guttorm Sindre

Python: Løkker. TDT4110 IT Grunnkurs Professor Guttorm Sindre Python: Løkker TDT4110 IT Grunnkurs Professor Guttorm Sindre Denne uka Vi trenger å Støttes av Hente data fra bruker Vise data til bruker Lagre data i minnet for bruk videre i programmet Fra tastatur:

Detaljer

Grunnleggende C++ Introduksjon til kurset og til C++

Grunnleggende C++ Introduksjon til kurset og til C++ lesson.md Grunnleggende C++ Leksjonen introduserer studentene til kurset og til C++. Etter å ha gått gjennom leksjonen skal de være i stand til å skrive enkle C++ programmer. De skal kunne bruke kontrollstrukturer,

Detaljer

Beskrivelse av programmeringsspråket Compila15 INF Kompilatorteknikk Våren 2015

Beskrivelse av programmeringsspråket Compila15 INF Kompilatorteknikk Våren 2015 Beskrivelse av programmeringsspråket Compila15 INF5110 - Kompilatorteknikk Våren 2015 Her beskrives syntaksen og den statiske semantikken (hva som skal sjekkes av kompilatoren) til språket Compila15. Den

Detaljer

Programmeringsspråket C Del 2

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

Detaljer

Programmeringsspråket C Del 2

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

Detaljer

Eksamensoppgave i IMT1082 Objekt-orientert programmering

Eksamensoppgave i IMT1082 Objekt-orientert programmering Institutt for datateknologi og informatikk Eksamensoppgave i IMT1082 Objekt-orientert programmering Faglig kontakt under eksamen: Frode Haug Tlf: 950 55 636 Eksamensdato: 22.mai 2017 Eksamenstid (fra-til):

Detaljer

Vektorer. Dagens tema. Deklarasjon. Bruk

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

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO BOKMÅL Det matematisk-naturvitenskapelige fakultet Eksamen i : Eksamensdag : Torsdag 2. desember 2004 Tid for eksamen : 09.00 12.00 Oppgavesettet er på : Vedlegg : Tillatte hjelpemidler

Detaljer

LC191D Videregående programmering Høgskolen i Sør-Trøndelag, Avdeling for informatikk og e-læring. Else Lervik, januar 2012.

LC191D Videregående programmering Høgskolen i Sør-Trøndelag, Avdeling for informatikk og e-læring. Else Lervik, januar 2012. Repetisjon innkapsling static tabell av primitiv datatype LC191D Videregående programmering Høgskolen i Sør-Trøndelag, Avdeling for informatikk og e-læring. Else Lervik, januar 2012. Objektorientert modellering

Detaljer

Introduksjon til objektorientert programmering

Introduksjon til objektorientert programmering Introduksjon til objektorientert programmering Samt litt mer om strenger og variable INF1000, uke6 Ragnhild Kobro Runde Grunnkurs i objektorientert programmering Strategi: Splitt og hersk Metoder kan brukes

Detaljer

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

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

Detaljer

INF1000 EKSTRATILBUD. Stoff fra uke 1-5 (6) 3. oktober 2012 Siri Moe Jensen

INF1000 EKSTRATILBUD. Stoff fra uke 1-5 (6) 3. oktober 2012 Siri Moe Jensen INF1000 EKSTRATILBUD Stoff fra uke 1-5 (6) 3. oktober 2012 Siri Moe Jensen PLAN FOR DAGEN gjennomgå stoff fra uke 1-5(6), men med en litt annen tilnærming kun gjennomgått stoff, men vekt på konsepter og

Detaljer

Mer om C programmering og cuncurrency

Mer om C programmering og cuncurrency Mer om C programmering og cuncurrency Lars Vidar Magnusson September 23, 2011 Lars Vidar Magnusson () Forelesning i Operativsystemer 20.09.2011 September 23, 2011 1 / 19 Oversikt Mer om C programmering

Detaljer

INF1000 (Uke 5) Mer om løkker, arrayer og metoder

INF1000 (Uke 5) Mer om løkker, arrayer og metoder INF1000 (Uke 5) Mer om løkker, arrayer og metoder Grunnkurs i programmering Institutt for Informatikk Universitetet i Oslo Anja Bråthen Kristoffersen og Are Magnus Bruaset Praktisk informasjon Når disse

Detaljer

Høgskolen i Gjøvik Institutt for informatikk og medieteknikk E K S A M E N. Grunnleggende programmering

Høgskolen i Gjøvik Institutt for informatikk og medieteknikk E K S A M E N. Grunnleggende programmering Høgskolen i Gjøvik Institutt for informatikk og medieteknikk E K S A M E N FAGNAVN: Grunnleggende programmering FAGNUMMER: IMT 1031 EKSAMENSDATO: 19.desember 2005 KLASSE(R): 05HBIND*, 05HBINFA, 05HBISA,

Detaljer

I dag INF1000 (Uke 4) Mer om forgreninger, While-løkker. Tre måter å lese fra terminal. Tre måter å lese fra terminal.

I dag INF1000 (Uke 4) Mer om forgreninger, While-løkker. Tre måter å lese fra terminal. Tre måter å lese fra terminal. I dag INF1000 (Uke 4) Mer om forgreninger, While-løkker Grunnkurs i programmering Institutt for Informatikk Universitet i Oslo Repetisjon easyio Enkle if-setninger Mer om forgrening While-løkker Are Magnus

Detaljer

Løsningsforslag ukeoppg. 6: 28. sep - 4. okt (INF1000 - Høst 2011)

Løsningsforslag ukeoppg. 6: 28. sep - 4. okt (INF1000 - Høst 2011) Løsningsforslag ukeoppg. 6: 28. sep - 4. okt (INF1000 - Høst 2011) Løsningsforslag til oppgave 7, 8, og 9 mangler Klasser og objekter (kap. 8.1-8.14 i "Rett på Java" 3. utg.) NB! Legg merke til at disse

Detaljer

TDT4102 Prosedyreog objektorientert programmering Vår 2016

TDT4102 Prosedyreog objektorientert programmering Vår 2016 Norges teknisk naturvitenskapelige universitet Institutt for datateknikk og informasjonsvitenskap TDT4102 Prosedyreog objektorientert programmering Vår 2016 Øving 4 Frist: 2016-02-12 Mål for denne øvingen:

Detaljer

HØGSKOLEN I SØR-TRØNDELAG

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

Detaljer

13.09.2012 LITT OM OPPLEGGET. INF1000 EKSTRATILBUD Stoff fra uke 1-3 12. September 2012 Siri Moe Jensen EKSEMPLER

13.09.2012 LITT OM OPPLEGGET. INF1000 EKSTRATILBUD Stoff fra uke 1-3 12. September 2012 Siri Moe Jensen EKSEMPLER .9.22 LITT OM OPPLEGGET INF EKSTRATILBUD Stoff fra uke - 2. September 22 Siri Moe Jensen Målgruppe: De som mangler forståelse for konseptene gjennomgått så langt. Trening får du ved å jobbe med oppgaver,

Detaljer

INF1000 (Uke 4) Mer om forgreninger, While-løkker

INF1000 (Uke 4) Mer om forgreninger, While-løkker INF1000 (Uke 4) Mer om forgreninger, While-løkker Grunnkurs i programmering Institutt for Informatikk Universitet i Oslo Are Magnus Bruaset og Anja B. Kristoffersen I dag Repetisjon easyio Enkle if-setninger

Detaljer

Argumenter fra kommandolinjen

Argumenter fra kommandolinjen Argumenter fra kommandolinjen Denne veiledningen er laget for å vise hvordan man kan overføre argumenter fra kommandolinjen til et program. Hvordan transportere data fra en kommandolinje slik at dataene

Detaljer

Programmeringsspråket C Del 3

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

Detaljer

I dag INF1000 (Uke 4) Mer om forgreninger, While-løkker. Tre måter å lese fra terminal. Repetisjon. Mer om forgrening While-løkker

I dag INF1000 (Uke 4) Mer om forgreninger, While-løkker. Tre måter å lese fra terminal. Repetisjon. Mer om forgrening While-løkker I dag INF1000 (Uke 4) Mer om forgreninger, While-løkker Grunnkurs i programmering Institutt for Informatikk Universitet i Oslo Repetisjon easyio Enkle if-setninger Mer om forgrening While-løkker Are Magnus

Detaljer

En oppsummering (og litt som står igjen)

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

Detaljer

Høgskolen i Gjøvik Avdeling for informatikk og medieteknikk. Eksamen. Objekt-orientert programmering

Høgskolen i Gjøvik Avdeling for informatikk og medieteknikk. Eksamen. Objekt-orientert programmering Høgskolen i Gjøvik Avdeling for informatikk og medieteknikk Eksamen EMNENAVN: EMNENUMMER: Objekt-orientert programmering IMT1082 EKSAMENSDATO: 4. juni 2010 KLASSE(R): 09HBIND*, 09HBPUA, 09HBDRA, 09HBISA,

Detaljer

Programmeringsspråket C

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

Detaljer

Debugging. Tore Berg Hansen, TISIP

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

Detaljer

Programmeringsspråket C Del 3

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

Detaljer

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

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

Detaljer

Kontinuasjonseksamen

Kontinuasjonseksamen Kontinuasjonseksamen EMNENAVN: EMNENUMMER: Objekt-orientert programmering IMT1082 EKSAMENSDATO: 12. august 2016 TID: 09:00 13:00 EMNEANSVARLIG: Frode Haug ANTALL SIDER UTLEVERT: TILLATTE HJELPEMIDLER:

Detaljer

Litt mer om uttrykk: ++ og -- INF1000 : Forelesning 4. Oppgave. Blokker. 0 udefinert udefinert. Alternativ 2 Postfiks-operator

Litt mer om uttrykk: ++ og -- INF1000 : Forelesning 4. Oppgave. Blokker. 0 udefinert udefinert. Alternativ 2 Postfiks-operator Litt mer om uttrykk: ++ og -- INF : Forelesning Løkker og arrayer Mye og viktig stoff. Du MÅ løse oppgaver selv for å lære!. september 6 Ole Christian Lingjærde Gruppen for bioinformatikk Institutt for

Detaljer

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring Kandidatnr: Eksamensdato: 21.desember 2007 Varighet: 0900-1300 Fagnummer: Fagnavn: Klasse(r): LV195D Objektorientert programmering i C++ nettstudenter

Detaljer

KONTINUASJONSEKSAMEN

KONTINUASJONSEKSAMEN Høgskolen i Gjøvik Avdeling for Teknologi KONTINUASJONSEKSAMEN FAGNAVN: FAGNUMMER: Grunnleggende datakunnskap og programmering L 182 A EKSAMENSDATO: 17. august 2001 KLASSE: 00HINDA / 00HINDB / 00HINEA

Detaljer

Dagens tema C, adresser og pekere

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

Detaljer

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

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

Detaljer

Eksamen. Grunnleggende programmering. EKSAMENSDATO: 6.desember 2016 TID: 16:00 20:00. (kalkulator er ikke tillatt)

Eksamen. Grunnleggende programmering. EKSAMENSDATO: 6.desember 2016 TID: 16:00 20:00. (kalkulator er ikke tillatt) Eksamen EMNENAVN: EMNENUMMER: Grunnleggende programmering IMT1031 (F) EKSAMENSDATO: 6.desember 2016 TID: 16:00 20:00 EMNEANSVARLIG: Frode Haug ANTALL SIDER UTLEVERT: TILLATTE HJELPEMIDLER: 7 (inkludert

Detaljer

Eksamen. Objekt-orientert programmering KLASSE(R): 02HIND* 02HDMU* 02HINE* 02HING* 01HINGA 02HSIV5 02HGEOMAA

Eksamen. Objekt-orientert programmering KLASSE(R): 02HIND* 02HDMU* 02HINE* 02HING* 01HINGA 02HSIV5 02HGEOMAA Høgskolen i Gjøvik Avdeling for teknologi Eksamen FAGNAVN: FAGNUMMER: Objekt-orientert programmering L 183 A EKSAMENSDATO: 27. mai 2003 KLASSE(R): 02HIND* 02HDMU* 02HINE* 02HING* 01HINGA 02HSIV5 02HGEOMAA

Detaljer

Programmeringsspråket C

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

Detaljer

lage og bruke funksjoner som tar argumenter lage og bruke funksjoner med returverdier forklare forskjellen mellom globale og lokale variabler

lage og bruke funksjoner som tar argumenter lage og bruke funksjoner med returverdier forklare forskjellen mellom globale og lokale variabler 42 Funksjoner Kapittel 4 Funksjoner Etter dette kapitlet skal du kunne lage og bruke enkle funksjoner lage og bruke funksjoner som tar argumenter lage og bruke funksjoner med returverdier forklare forskjellen

Detaljer

Grunnleggende datakunnskap og programmering. EKSAMENSDATO: 16. desember 1997

Grunnleggende datakunnskap og programmering. EKSAMENSDATO: 16. desember 1997 Høgskolen i Gjøvik EKSAMEN FAGNAVN: FAGNUMMER: Grunnleggende datakunnskap og programmering L 153 E EKSAMENSDATO: 16. desember 1997 KLASSE: 97HINEA (1 EA) TID: 09.00-12.00 FAGLÆRER: Frode Haug ANTALL SIDER

Detaljer

Kontinuasjonseksamen

Kontinuasjonseksamen Høgskolen i Gjøvik Avdeling for teknologi Kontinuasjonseksamen FAGNAVN: FAGNUMMER: Objekt-orientert programmering L 183 A EKSAMENSDATO: 5. januar 2004 KLASSE(R): 02HIND* 02HDMU* 02HINE* 02HING* 01HINGA

Detaljer

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring Kandidatnr: Eksamensdato: 30.november 2005 Varighet: 0900-1300 Fagnummer: Fagnavn: Klasse(r): LV195D Objektorientert programmering i C++ Nettstudenter

Detaljer

løsningsforslag-uke5.txt

løsningsforslag-uke5.txt INF 1000 LØSNINGSFORSLAG TIL UKEOPPGAVER FOR UKE 5 1) Setningen er kompakt skrivemåte for int[] a; a = new int[50]; hvor den første setningen deklarerer arrayen a, og den andre setningen oppretter et array-objekt

Detaljer

2 Om statiske variable/konstanter og statiske metoder.

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

Detaljer

KONTINUASJONSEKSAMEN

KONTINUASJONSEKSAMEN Høgskolen i Gjøvik Avdeling for teknologi KONTINUASJONSEKSAMEN FAGNAVN: FAGKODE: Grunnleggende datakunnskap og programmering L 182 A EKSAMENSDATO: 9. august 2002 KLASSE(R): 01HIND*, 01HINE*, 01HDMU*, 01HING*

Detaljer

OBJEKTER SOM EN PROGRAMMERINGS-TEKNIKK

OBJEKTER SOM EN PROGRAMMERINGS-TEKNIKK INF1000: Forelesning 6 Klasser og objekter del 1 OBJEKTER SOM EN PROGRAMMERINGS-TEKNIKK Motivasjon Anta at vi ønsker å lage et studentregister hvor vi for hver student lagrer, bruker og telefonnummer Med

Detaljer

Programmeringsspråket C Del 3

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

Detaljer

INF1000 oppgaver til uke 38 (17 sep 23 sep)

INF1000 oppgaver til uke 38 (17 sep 23 sep) INF1000 oppgaver til uke 38 (17 sep 23 sep) Formål: Øve på programmering med forgreninger, løkker og arrayer. Teoritimer (plenumsøvinger): 1. Oppgave 4 og 6 i kapittel 4 i læreboka. 2. En blokk er en samling

Detaljer

INF1000. Marit Nybakken 10. februar 2004

INF1000. Marit Nybakken 10. februar 2004 INF1000 Løkker Marit Nybakken marnybak@ifi.uio.no 10. februar 2004 Motivasjon En ting datamaskinen er veldig flink til er å gjøre den samme tingen mange mange ganger på rad. Oppgaver som skal utføres innebærer

Detaljer

Obligatorisk oppgave 1 INF1020 h2005

Obligatorisk oppgave 1 INF1020 h2005 Obligatorisk oppgave 1 INF1020 h2005 Frist: fredag 7. oktober Oppgaven skal løses individuelt, og må være godkjent for å kunne gå opp til eksamen. Før innlevering må retningslinjene Krav til innleverte

Detaljer

Programmeringsspråket C Del 3

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

Detaljer

Beskrivelse av programmeringsspråket Simpila INF5110 - Kompilatorteknikk Våren 2012

Beskrivelse av programmeringsspråket Simpila INF5110 - Kompilatorteknikk Våren 2012 Beskrivelse av programmeringsspråket Simpila INF5110 - Kompilatorteknikk Våren 2012 Her beskrives syntaksen og den statiske semantikken (hva som skal sjekkes av kompilatoren) til språket Simpila. Den dynamiske

Detaljer

EKSAMEN. Dato: 9. mai 2016 Eksamenstid: 09:00 13:00

EKSAMEN. Dato: 9. mai 2016 Eksamenstid: 09:00 13:00 EKSAMEN Emnekode: ITF20006 Emne: Algoritmer og datastrukturer Dato: 9. mai 2016 Eksamenstid: 09:00 13:00 Hjelpemidler: Alle trykte og skrevne Faglærer: Jan Høiberg Om eksamensoppgavene: Oppgavesettet består

Detaljer

Array&ArrayList Lagring Liste Klasseparametre Arrayliste Testing Lenkelister

Array&ArrayList Lagring Liste Klasseparametre Arrayliste Testing Lenkelister Dagens tema Lister og generiske klasser, del I Array-er og ArrayList (Big Java 6.1 & 6.8) Ulike lagringsformer (Collection) i Java (Big Java 15.1) Klasser med typeparametre («generiske klasser») (Big Java

Detaljer