• Lærebøker
  • Python
  • GeoGebra
  • Hoderegning
  • Test deg selv

Søk i Skolesaga

Søk etter lærebøker, kapitler, trinn og verktøy

Gratis interaktive lærebøker for norsk skole.

Lærebok
PersonvernVilkårTilgjengelighetKontakt

© 2026 Skolesaga · Alle rettigheter forbeholdt

Skolesaga.no eies og drives av Studenthjelp Privatundervisning AS · Org.nr 913 117 387 · studenthjelp@gmail.com

Innholdet er utviklet med støtte fra kunstig intelligens og kvalitetssikres løpende. Les mer

LærebøkerQuiz
BøkerIN1000 Introduksjon til objektorientert programmeringKompetansemål

Læringsmål

Oversikt over læringsmål dekket i IN1000 Introduksjon til objektorientert programmering

Kilde: Læringsmålene er utformet av Skolesaga på grunnlag av emnets eksamensoppgaver, sensorveiledninger og emnebeskrivelse. De er ikke institusjonens offisielle læringsutbyttebeskrivelser.

144 kompetansemål37 av 37 kapitler har kompetansemål

Alle kompetansemål

•kunne gjøre rede for hvordan eksamen i emnet er bygget opp, og hvor poengene ligger
0.1Eksamenskartet — slik testes IN1000
•kunne sette opp et realistisk tidsbudsjett for de fire timene
0.1Eksamenskartet — slik testes IN1000
•kunne prioritere lesingen etter hvilke temaer som faktisk går igjen
0.1Eksamenskartet — slik testes IN1000
•kunne bruke reglene om delvis uttelling til å svare på flest mulig deloppgaver
0.1Eksamenskartet — slik testes IN1000
•kunne si hvilken type en verdi har, og hvorfor tekst og tall oppfører seg ulikt
1.1Variabler, datatyper og uttrykk
•kunne regne ut et sammensatt uttrykk med de sju regneoperatorene i riktig rekkefølge
1.1Variabler, datatyper og uttrykk
•kunne gjøre om mellom tekst og tall, og vite når det må gjøres
1.1Variabler, datatyper og uttrykk
•kunne angi nøyaktig hva et lite program skriver ut, med riktig type og riktige mellomrom
1.1Variabler, datatyper og uttrykk1.PPrøver til del 1: Python-grunnlaget: variabler, betingelser og løkker
•kunne regne ut verdien av en sammenligning og av et sammensatt boolsk uttrykk
1.2Betingelser og boolske uttrykk
•kunne avgjøre hvilken gren i en forgrening som kjøres, og hvorfor de andre ikke gjør det
1.2Betingelser og boolske uttrykk
•kunne skille en kjede med elif fra flere selvstendige if-setninger
1.2Betingelser og boolske uttrykk
•kunne skrive en betingelse som treffer riktig på grenseverdien
1.2Betingelser og boolske uttrykk
•kunne si nøyaktig hvilke verdier en tallrekke gir, og hvor mange runder løkka kjører
1.3Løkker: for, while og range
•kunne bruke teller- og akkumulatormønsteret til å samle opp et resultat
1.3Løkker: for, while og range
•kunne spore en while-løkke som endrer flere variabler per runde
1.3Løkker: for, while og range
•kunne regne ut hva en nøstet løkke skriver ut, også når den indre grensen avhenger av den ytre
1.3Løkker: for, while og range
•kunne avgjøre hvilken gren i en forgrening som kjøres
1.PPrøver til del 1: Python-grunnlaget: variabler, betingelser og løkker
•kunne føre en sporingstavle gjennom en løkke som oppdaterer flere variabler
1.PPrøver til del 1: Python-grunnlaget: variabler, betingelser og løkker
•kunne kjenne igjen de fire fellene som koster flest poeng i Oppgave 1
1.PPrøver til del 1: Python-grunnlaget: variabler, betingelser og løkker
•kunne definere en funksjon med parametere og returnere et resultat fra den
2.1Funksjoner: def, parametere og return
•kunne bruke flagg med tidlig retur til å svare ja eller nei om en hel samling
2.1Funksjoner: def, parametere og return
•kunne forklare hvorfor en funksjon gir None, og rette det
2.1Funksjoner: def, parametere og return
•kunne la to funksjoner samarbeide, og ta imot flere returverdier
2.1Funksjoner: def, parametere og return
•kunne avgjøre om et navn inne i en funksjon er lokalt eller globalt
2.2Funksjonssamarbeid og scope
•kunne forklare hvorfor en tilordning inne i en funksjon ikke endrer utsiden
2.2Funksjonssamarbeid og scope
•kunne skrive om en funksjon som leser globale variabler, til én som tar dem inn som parametere
2.2Funksjonssamarbeid og scope
•kunne kjenne igjen de to feilmeldingene scope-feil gir, og rette dem
2.2Funksjonssamarbeid og scope
•kunne angi nøyaktig hva et program med funksjonskall skriver ut
2.PPrøver til del 2: Funksjoner
•kunne skrive en liten funksjon med flagg og tidlig retur i sensors grunnform
2.PPrøver til del 2: Funksjoner
•kunne avgjøre om en tilordning inne i en funksjon er lokal eller ikke
2.PPrøver til del 2: Funksjoner
•kunne kjenne igjen de feilene som koster flest poeng på Oppgave 3
2.PPrøver til del 2: Funksjoner
•kunne hente ut et bestemt element fra en liste, også talt bakfra
3.1Lister
•kunne velge riktig løkkeform etter om du trenger verdien eller plassen
3.1Lister
•kunne bygge en ny liste med et utvalg eller en omforming av en gammel
3.1Lister
•kunne sikre at en funksjon over en liste også tåler at lista er tom
3.1Lister
•kunne slå opp, sette inn og oppdatere verdier i en ordbok uten å stoppe programmet
3.2Ordbøker
•kunne telle forekomster med en ordbok, skrevet med vanlig løkke og betingelse
3.2Ordbøker
•kunne gruppere elementer slik at hver nøkkel peker på en liste
3.2Ordbøker
•kunne finne nøkkelen med størst verdi, og svare ærlig når samlingen er tom
3.2Ordbøker
•kunne hente ut og telle enkelttegn i en tekst
3.3Strenger
•kunne bygge en ny tekst tegn for tegn, i riktig retning
3.3Strenger
•kunne dele en linje i felt og rense den for usynlige tegn først
3.3Strenger
•kunne se når en verdi er tekst og når den er tall, og veksle bevisst mellom dem
3.3Strenger
•kunne lese en oppgavetekst og peke ut hvilket kodemønster den ber om
3.4DRILL — Skriv en funksjon over liste, ordbok eller streng
•kunne skrive skjelettet med startverdi, løkke og retur før detaljene
3.4DRILL — Skriv en funksjon over liste, ordbok eller streng
•kunne håndtere tom samling og manglende treff bevisst i hver funksjon
3.4DRILL — Skriv en funksjon over liste, ordbok eller streng
•kunne gi et konkret moteksempel når en funksjon svarer galt
3.4DRILL — Skriv en funksjon over liste, ordbok eller streng
•kunne skrive en liten funksjon over en liste i sensors grunnform
3.PPrøver til del 3: Lister, ordbøker og strenger
•kunne bygge en telling og en gruppering med ordbok, uten ferdige hjelpemidler
3.PPrøver til del 3: Lister, ordbøker og strenger
•kunne dele opp en innlest linje og konvertere feltene riktig
3.PPrøver til del 3: Lister, ordbøker og strenger
•kunne løse fire deloppgaver uavhengig av hverandre innenfor eksamensfart
3.PPrøver til del 3: Lister, ordbøker og strenger
•kunne føre en sporingstavle gjennom en løkke som endrer flere variabler
4.1DRILL — Kodesporing: «hva skrives ut?»
•kunne telle nøyaktig hvor mange runder en løkke kjører
4.1DRILL — Kodesporing: «hva skrives ut?»
•kunne skille tekst fra tall og heltall fra desimaltall i en utskrift
4.1DRILL — Kodesporing: «hva skrives ut?»
•kunne skrive utskriften eksakt slik terminalen viser den, uten pynt
4.1DRILL — Kodesporing: «hva skrives ut?»
•kunne skille en feil som stopper programmet fra en som bare gir galt svar
4.2«Finn feilen» og konkret moteksempel
•kunne prøve en funksjon systematisk på de inndataene den ikke tåler
4.2«Finn feilen» og konkret moteksempel
•kunne levere et moteksempel som faktisk avslører feilen
4.2«Finn feilen» og konkret moteksempel4.PPrøver til del 4: Kodesporing og kodeanalyse
•kunne foreslå den minste rettelsen som fjerner feilen
4.2«Finn feilen» og konkret moteksempel
•kunne føre sporingstavle gjennom en løkke som endrer flere variabler
4.PPrøver til del 4: Kodesporing og kodeanalyse
•kunne angi utskriften med riktig type og riktig form, uten pynt
4.PPrøver til del 4: Kodesporing og kodeanalyse
•kunne spore en ordbok som endrer seg selv, runde for runde
4.PPrøver til del 4: Kodesporing og kodeanalyse
•kunne skrive en klasse med konstruktør slik at alle verdier objektet skal huske, overlever kallet
5.1Klasser og objekter: `class`, `__init__` og `self`
•kunne forklare hva den første parameteren i en metode peker på, og hvorfor den aldri skrives i kallet
5.1Klasser og objekter: `class`, `__init__` og `self`
•kunne se om to objekter av samme klasse deler verdier eller ikke
5.1Klasser og objekter: `class`, `__init__` og `self`
•kunne kjenne igjen den vanligste konstruktørfeilen i en gitt kodesnutt, og rette den
5.1Klasser og objekter: `class`, `__init__` og `self`
•kunne skrive lese- og endringsmetoder for verdiene i en klasse, i den formen faget bruker
5.2Innkapsling: underscore, aksessor og mutator
•kunne avgjøre hvilke verdier som bør kunne endres utenfra og hvilke som bør låses
5.2Innkapsling: underscore, aksessor og mutator
•kunne skrive opp grensesnittet til en gitt klasse, og si hva som ikke hører hjemme der
5.2Innkapsling: underscore, aksessor og mutator
•kunne legge en regel inn i en endringsmetode slik at klassen selv passer på den
5.2Innkapsling: underscore, aksessor og mutator
•kunne gi en klasse en metode som gjør objektet lesbart når det skrives ut
5.3`__str__` og pen objektutskrift
•kunne se når et tall må gjøres om til tekst før det skjøtes sammen med annen tekst
5.3`__str__` og pen objektutskrift
•kunne skille en metode som leverer en tekst fra en som bare viser den
5.3`__str__` og pen objektutskrift
•kunne la en klasse som holder mange objekter, be hvert av dem om å vise seg selv
5.3`__str__` og pen objektutskrift5.PPrøver til del 5: Klasser, objekter og referanser
•kunne avgjøre om to navn peker på det samme objektet eller på hvert sitt
5.4Referansesemantikk
•kunne skille en endring av objektet fra en ny tilordning som bare flytter et navn
5.4Referansesemantikk
•kunne telle hvor mange objekter et program faktisk lager
5.4Referansesemantikk
•kunne forklare hvorfor en funksjon kan endre et objekt den får inn, men ikke bytte det ut for den som kalte
5.4Referansesemantikk
•kunne lese en konstruktør og se hvilke verdier som faktisk havner i objektet
5.5DRILL — Objekt-flervalg: referanser, `self`, scope og grensesnitt
•kunne tegne objekter og navn, og oppdatere tegningen linje for linje
5.5DRILL — Objekt-flervalg: referanser, `self`, scope og grensesnitt
•kunne avgjøre om en linje endrer et objekt eller bare flytter et navn
5.5DRILL — Objekt-flervalg: referanser, `self`, scope og grensesnitt
•kunne svare på begrepsspørsmål om grensesnitt og instansvariabler uten å spore koden
5.5DRILL — Objekt-flervalg: referanser, `self`, scope og grensesnitt
•kunne skrive en klasse med konstruktør, lesemetoder og endringsmetoder uten hjelpemidler
5.PPrøver til del 5: Klasser, objekter og referanser
•kunne avgjøre hva som peker på hva etter en serie tilordninger
5.PPrøver til del 5: Klasser, objekter og referanser
•kunne svare på alle fire deloppgavene i en typisk objekt-flervalgsoppgave
5.PPrøver til del 5: Klasser, objekter og referanser
•kunne lese en beskrivelse og avgjøre hvilke klasser den trenger
6.1Fra spesifikasjon til klasser — modelleringsmetoden
•kunne skille en egenskap ved en ting fra en ting med egne egenskaper
6.1Fra spesifikasjon til klasser — modelleringsmetoden
•kunne avgjøre om en forbindelse gjelder ett objekt eller en samling av dem
6.1Fra spesifikasjon til klasser — modelleringsmetoden
•kunne sette opp et skjelett med signaturer før du fyller inn en eneste metodekropp
6.1Fra spesifikasjon til klasser — modelleringsmetoden
•kunne opprette og fylle en samling av objekter inne i en klasse
6.2Flere samarbeidende klasser og «en-til-mange»
•kunne skrive en oppslagsmetode som ikke stopper programmet når den ikke finner noe
6.2Flere samarbeidende klasser og «en-til-mange»
•kunne la en klasse be underobjektene sine om å skrive seg selv, telle eller regne
6.2Flere samarbeidende klasser og «en-til-mange»
•kunne la et objekt peke på et objekt av en annen klasse, og spørre seg videre gjennom modellen
6.2Flere samarbeidende klasser og «en-til-mange»
•kunne skrive en metode som finner det beste elementet i en samling objekter
6.3Algoritme-metoder i klasser
•kunne bygge et regnskap over en samling og lese det i en egen løkke etterpå
6.3Algoritme-metoder i klasser
•kunne svare ja eller nei på en påstand om hele samlingen, med riktig plassert retur
6.3Algoritme-metoder i klasser
•kunne tenke gjennom hva metoden svarer på en tom samling og på to like verdier
6.3Algoritme-metoder i klasser
•kunne be brukeren om en verdi og gjøre den om til riktig type
6.4Terminal-interaksjon i klasser
•kunne gjenta et spørsmål til svaret er gyldig, med riktig plasserte kall
6.4Terminal-interaksjon i klasser
•kunne skrive gyldighetstesten for en samling, et indeksområde og et tallområde
6.4Terminal-interaksjon i klasser
•kunne legge spørsmålet inn i en metode som returnerer objektet brukeren valgte
6.4Terminal-interaksjon i klasser
•kunne gå fra en beskrivelse til en ferdig modell i en fast rekkefølge av steg
6.5DRILL — Full klassemodellering fra spesifikasjon
•kunne sette sammen konstruktør, samling, filinnlesing, algoritmemetode og utskrift i én besvarelse
6.5DRILL — Full klassemodellering fra spesifikasjon
•kunne finne de stumme feilene i en modell ved å lese den, ikke ved å kjøre den
6.5DRILL — Full klassemodellering fra spesifikasjon
•kunne disponere tiden slik at hver deloppgave leveres, også når én av dem ikke blir ferdig
6.5DRILL — Full klassemodellering fra spesifikasjon
•kunne gå fra en beskrivelse til klasser, samlinger og metodesignaturer uten hjelpemidler
6.PPrøver til del 6: Stor klassemodellering
•kunne bygge to eller tre samarbeidende klasser med oppslag og delegering
6.PPrøver til del 6: Stor klassemodellering
•kunne skrive en algoritmemetode og en spørremetode i samme modell
6.PPrøver til del 6: Stor klassemodellering
•kunne levere alle deloppgavene i en full Oppgave 4 på tiden
6.PPrøver til del 6: Stor klassemodellering
•kunne skrive innlesingsløkka som går gjennom en fil til den er slutt
7.1Filinnlesing linje for linje
•kunne dele en linje i felt i riktig rekkefølge, og se hvilket felt et glemt rensesteg rammer
7.1Filinnlesing linje for linje
•kunne avgjøre hvilke felt som må gjøres om til tall, og hvilke som skal forbli tekst
7.1Filinnlesing linje for linje
•kunne lese en fil og bygge opp en liste eller ordbok av objekter fra den
7.1Filinnlesing linje for linje
•kunne lese et dataformat av en eksempellinje og planlegge innlesingen før du koder
7.2DRILL — Filinnlesing i klassemodellering
•kunne skrive innlesingen både som en frittstående funksjon og som en metode i en klasse
7.2DRILL — Filinnlesing i klassemodellering
•kunne velge mellom liste og ordbok ut fra hva oppgaven skal kunne slå opp senere
7.2DRILL — Filinnlesing i klassemodellering
•kunne kjenne igjen og rette de fem feilene som oftest ødelegger fil-deloppgaven
7.2DRILL — Filinnlesing i klassemodellering
•kunne skrive innlesingsløkka riktig uten hjelpemidler
7.PPrøver til del 7: Filbehandling
•kunne bygge en liste eller ordbok av objekter fra en fil, med riktig skilletegn og konvertering
7.PPrøver til del 7: Filbehandling
•kunne la et objekt lese sin egen fil og fylle sin egen samling
7.PPrøver til del 7: Filbehandling
•kunne kombinere filinnlesing med oppslag, delegering og en algoritmemetode
7.PPrøver til del 7: Filbehandling
•kunne lese og skrive verdier på to nivåer uten å blande dem
8.1Nøstede lister og ordbøker
•kunne bygge opp en nøstet ordbok med de sjekkene som trengs
8.1Nøstede lister og ordbøker
•kunne løpe gjennom begge nivåene og plassere akkumulatoren riktig
8.1Nøstede lister og ordbøker
•kunne telle antall runder i en løkke inne i en løkke
8.1Nøstede lister og ordbøker
•kunne avgjøre hvilket av fire mønstre en oppgavetekst ber om
8.2DRILL — Funksjoner over nøstede strukturer
•kunne plassere akkumulatoren på det nivået oppgaven faktisk krever
8.2DRILL — Funksjoner over nøstede strukturer
•kunne bygge en ny nøstet struktur av en gammel, med de sjekkene som trengs
8.2DRILL — Funksjoner over nøstede strukturer
•kunne tenke gjennom hva funksjonen svarer på tomme og ulike store strukturer
8.2DRILL — Funksjoner over nøstede strukturer
•kunne spore en løkke inne i en løkke og telle rundene riktig
8.PPrøver til del 8: Nøstede strukturer
•kunne plassere akkumulatoren på det nivået oppgaven krever
8.PPrøver til del 8: Nøstede strukturer
•kunne bygge og snu en nøstet ordbok med de sjekkene som trengs
8.PPrøver til del 8: Nøstede strukturer
•kunne skrive to samarbeidende funksjoner over en nøstet struktur på tiden
8.PPrøver til del 8: Nøstede strukturer
•kunne gjennomføre et helt sett på fire timer uten hjelpemidler
9.1Avsluttende øvingseksamen 1 — bibliotek-innpakning9.2Avsluttende øvingseksamen 2 — treningssenter-innpakning
•kunne fordele tiden slik at alle fem oppgavene besvares
9.1Avsluttende øvingseksamen 1 — bibliotek-innpakning
•kunne kjenne igjen hvilken sjanger hver oppgave tilhører, og hente fram riktig mal
9.1Avsluttende øvingseksamen 1 — bibliotek-innpakning
•kunne kontrollere egen kode ved å lese den, siden den aldri kjøres før den rettes
9.1Avsluttende øvingseksamen 1 — bibliotek-innpakning
•kunne bygge en modell med to samlinger, filinnlesing og en spørremetode
9.2Avsluttende øvingseksamen 2 — treningssenter-innpakning
•kunne spore referanser gjennom en modell der ett objekt ligger flere steder
9.2Avsluttende øvingseksamen 2 — treningssenter-innpakning
•kunne fordele tiden etter poengene i stedet for etter rekkefølgen
9.2Avsluttende øvingseksamen 2 — treningssenter-innpakning
•kunne gjennomføre et sett på nivå med de nyeste settene i arkivet
9.3Avsluttende øvingseksamen 3 — strømmetjeneste-innpakning (tyngre)
•kunne bygge en modell med to nivåer av samlinger og filinnlesing per objekt
9.3Avsluttende øvingseksamen 3 — strømmetjeneste-innpakning (tyngre)
•kunne gi et konkret moteksempel når en funksjon er logisk feil
9.3Avsluttende øvingseksamen 3 — strømmetjeneste-innpakning (tyngre)
•kunne svare på et grensesnitt-spørsmål uten å spore kode
9.3Avsluttende øvingseksamen 3 — strømmetjeneste-innpakning (tyngre)

Kapitler med kompetansemål

0Eksamenskart

0.1Eksamenskartet — slik testes IN1000
  • kunne gjøre rede for hvordan eksamen i emnet er bygget opp, og hvor poengene ligger
  • kunne sette opp et realistisk tidsbudsjett for de fire timene
  • kunne prioritere lesingen etter hvilke temaer som faktisk går igjen
  • kunne bruke reglene om delvis uttelling til å svare på flest mulig deloppgaver

1Python-grunnlaget: variabler, betingelser og løkker

1.1Variabler, datatyper og uttrykk
  • kunne si hvilken type en verdi har, og hvorfor tekst og tall oppfører seg ulikt
  • kunne regne ut et sammensatt uttrykk med de sju regneoperatorene i riktig rekkefølge
  • kunne gjøre om mellom tekst og tall, og vite når det må gjøres
  • kunne angi nøyaktig hva et lite program skriver ut, med riktig type og riktige mellomrom
1.2Betingelser og boolske uttrykk
  • kunne regne ut verdien av en sammenligning og av et sammensatt boolsk uttrykk
  • kunne avgjøre hvilken gren i en forgrening som kjøres, og hvorfor de andre ikke gjør det
  • kunne skille en kjede med elif fra flere selvstendige if-setninger
  • kunne skrive en betingelse som treffer riktig på grenseverdien
1.3Løkker: for, while og range
  • kunne si nøyaktig hvilke verdier en tallrekke gir, og hvor mange runder løkka kjører
  • kunne bruke teller- og akkumulatormønsteret til å samle opp et resultat
  • kunne spore en while-løkke som endrer flere variabler per runde
  • kunne regne ut hva en nøstet løkke skriver ut, også når den indre grensen avhenger av den ytre
1.PPrøver til del 1: Python-grunnlaget: variabler, betingelser og løkker
  • kunne angi nøyaktig hva et lite program skriver ut, med riktig type og riktige mellomrom
  • kunne avgjøre hvilken gren i en forgrening som kjøres
  • kunne føre en sporingstavle gjennom en løkke som oppdaterer flere variabler
  • kunne kjenne igjen de fire fellene som koster flest poeng i Oppgave 1

2Funksjoner

2.1Funksjoner: def, parametere og return
  • kunne definere en funksjon med parametere og returnere et resultat fra den
  • kunne bruke flagg med tidlig retur til å svare ja eller nei om en hel samling
  • kunne forklare hvorfor en funksjon gir None, og rette det
  • kunne la to funksjoner samarbeide, og ta imot flere returverdier
2.2Funksjonssamarbeid og scope
  • kunne avgjøre om et navn inne i en funksjon er lokalt eller globalt
  • kunne forklare hvorfor en tilordning inne i en funksjon ikke endrer utsiden
  • kunne skrive om en funksjon som leser globale variabler, til én som tar dem inn som parametere
  • kunne kjenne igjen de to feilmeldingene scope-feil gir, og rette dem
2.PPrøver til del 2: Funksjoner
  • kunne angi nøyaktig hva et program med funksjonskall skriver ut
  • kunne skrive en liten funksjon med flagg og tidlig retur i sensors grunnform
  • kunne avgjøre om en tilordning inne i en funksjon er lokal eller ikke
  • kunne kjenne igjen de feilene som koster flest poeng på Oppgave 3

3Lister, ordbøker og strenger

3.1Lister
  • kunne hente ut et bestemt element fra en liste, også talt bakfra
  • kunne velge riktig løkkeform etter om du trenger verdien eller plassen
  • kunne bygge en ny liste med et utvalg eller en omforming av en gammel
  • kunne sikre at en funksjon over en liste også tåler at lista er tom
3.2Ordbøker
  • kunne slå opp, sette inn og oppdatere verdier i en ordbok uten å stoppe programmet
  • kunne telle forekomster med en ordbok, skrevet med vanlig løkke og betingelse
  • kunne gruppere elementer slik at hver nøkkel peker på en liste
  • kunne finne nøkkelen med størst verdi, og svare ærlig når samlingen er tom
3.3Strenger
  • kunne hente ut og telle enkelttegn i en tekst
  • kunne bygge en ny tekst tegn for tegn, i riktig retning
  • kunne dele en linje i felt og rense den for usynlige tegn først
  • kunne se når en verdi er tekst og når den er tall, og veksle bevisst mellom dem
3.4DRILL — Skriv en funksjon over liste, ordbok eller streng
  • kunne lese en oppgavetekst og peke ut hvilket kodemønster den ber om
  • kunne skrive skjelettet med startverdi, løkke og retur før detaljene
  • kunne håndtere tom samling og manglende treff bevisst i hver funksjon
  • kunne gi et konkret moteksempel når en funksjon svarer galt
3.PPrøver til del 3: Lister, ordbøker og strenger
  • kunne skrive en liten funksjon over en liste i sensors grunnform
  • kunne bygge en telling og en gruppering med ordbok, uten ferdige hjelpemidler
  • kunne dele opp en innlest linje og konvertere feltene riktig
  • kunne løse fire deloppgaver uavhengig av hverandre innenfor eksamensfart

4Kodesporing og kodeanalyse

4.1DRILL — Kodesporing: «hva skrives ut?»
  • kunne føre en sporingstavle gjennom en løkke som endrer flere variabler
  • kunne telle nøyaktig hvor mange runder en løkke kjører
  • kunne skille tekst fra tall og heltall fra desimaltall i en utskrift
  • kunne skrive utskriften eksakt slik terminalen viser den, uten pynt
4.2«Finn feilen» og konkret moteksempel
  • kunne skille en feil som stopper programmet fra en som bare gir galt svar
  • kunne prøve en funksjon systematisk på de inndataene den ikke tåler
  • kunne levere et moteksempel som faktisk avslører feilen
  • kunne foreslå den minste rettelsen som fjerner feilen
4.PPrøver til del 4: Kodesporing og kodeanalyse
  • kunne føre sporingstavle gjennom en løkke som endrer flere variabler
  • kunne angi utskriften med riktig type og riktig form, uten pynt
  • kunne spore en ordbok som endrer seg selv, runde for runde
  • kunne levere et moteksempel som faktisk avslører feilen

5Klasser, objekter og referanser

5.1Klasser og objekter: `class`, `__init__` og `self`
  • kunne skrive en klasse med konstruktør slik at alle verdier objektet skal huske, overlever kallet
  • kunne forklare hva den første parameteren i en metode peker på, og hvorfor den aldri skrives i kallet
  • kunne se om to objekter av samme klasse deler verdier eller ikke
  • kunne kjenne igjen den vanligste konstruktørfeilen i en gitt kodesnutt, og rette den
5.2Innkapsling: underscore, aksessor og mutator
  • kunne skrive lese- og endringsmetoder for verdiene i en klasse, i den formen faget bruker
  • kunne avgjøre hvilke verdier som bør kunne endres utenfra og hvilke som bør låses
  • kunne skrive opp grensesnittet til en gitt klasse, og si hva som ikke hører hjemme der
  • kunne legge en regel inn i en endringsmetode slik at klassen selv passer på den
5.3`__str__` og pen objektutskrift
  • kunne gi en klasse en metode som gjør objektet lesbart når det skrives ut
  • kunne se når et tall må gjøres om til tekst før det skjøtes sammen med annen tekst
  • kunne skille en metode som leverer en tekst fra en som bare viser den
  • kunne la en klasse som holder mange objekter, be hvert av dem om å vise seg selv
5.4Referansesemantikk
  • kunne avgjøre om to navn peker på det samme objektet eller på hvert sitt
  • kunne skille en endring av objektet fra en ny tilordning som bare flytter et navn
  • kunne telle hvor mange objekter et program faktisk lager
  • kunne forklare hvorfor en funksjon kan endre et objekt den får inn, men ikke bytte det ut for den som kalte
5.5DRILL — Objekt-flervalg: referanser, `self`, scope og grensesnitt
  • kunne lese en konstruktør og se hvilke verdier som faktisk havner i objektet
  • kunne tegne objekter og navn, og oppdatere tegningen linje for linje
  • kunne avgjøre om en linje endrer et objekt eller bare flytter et navn
  • kunne svare på begrepsspørsmål om grensesnitt og instansvariabler uten å spore koden
5.PPrøver til del 5: Klasser, objekter og referanser
  • kunne skrive en klasse med konstruktør, lesemetoder og endringsmetoder uten hjelpemidler
  • kunne la en klasse som holder mange objekter, be hvert av dem om å vise seg selv
  • kunne avgjøre hva som peker på hva etter en serie tilordninger
  • kunne svare på alle fire deloppgavene i en typisk objekt-flervalgsoppgave

6Stor klassemodellering

6.1Fra spesifikasjon til klasser — modelleringsmetoden
  • kunne lese en beskrivelse og avgjøre hvilke klasser den trenger
  • kunne skille en egenskap ved en ting fra en ting med egne egenskaper
  • kunne avgjøre om en forbindelse gjelder ett objekt eller en samling av dem
  • kunne sette opp et skjelett med signaturer før du fyller inn en eneste metodekropp
6.2Flere samarbeidende klasser og «en-til-mange»
  • kunne opprette og fylle en samling av objekter inne i en klasse
  • kunne skrive en oppslagsmetode som ikke stopper programmet når den ikke finner noe
  • kunne la en klasse be underobjektene sine om å skrive seg selv, telle eller regne
  • kunne la et objekt peke på et objekt av en annen klasse, og spørre seg videre gjennom modellen
6.3Algoritme-metoder i klasser
  • kunne skrive en metode som finner det beste elementet i en samling objekter
  • kunne bygge et regnskap over en samling og lese det i en egen løkke etterpå
  • kunne svare ja eller nei på en påstand om hele samlingen, med riktig plassert retur
  • kunne tenke gjennom hva metoden svarer på en tom samling og på to like verdier
6.4Terminal-interaksjon i klasser
  • kunne be brukeren om en verdi og gjøre den om til riktig type
  • kunne gjenta et spørsmål til svaret er gyldig, med riktig plasserte kall
  • kunne skrive gyldighetstesten for en samling, et indeksområde og et tallområde
  • kunne legge spørsmålet inn i en metode som returnerer objektet brukeren valgte
6.5DRILL — Full klassemodellering fra spesifikasjon
  • kunne gå fra en beskrivelse til en ferdig modell i en fast rekkefølge av steg
  • kunne sette sammen konstruktør, samling, filinnlesing, algoritmemetode og utskrift i én besvarelse
  • kunne finne de stumme feilene i en modell ved å lese den, ikke ved å kjøre den
  • kunne disponere tiden slik at hver deloppgave leveres, også når én av dem ikke blir ferdig
6.PPrøver til del 6: Stor klassemodellering
  • kunne gå fra en beskrivelse til klasser, samlinger og metodesignaturer uten hjelpemidler
  • kunne bygge to eller tre samarbeidende klasser med oppslag og delegering
  • kunne skrive en algoritmemetode og en spørremetode i samme modell
  • kunne levere alle deloppgavene i en full Oppgave 4 på tiden

7Filbehandling

7.1Filinnlesing linje for linje
  • kunne skrive innlesingsløkka som går gjennom en fil til den er slutt
  • kunne dele en linje i felt i riktig rekkefølge, og se hvilket felt et glemt rensesteg rammer
  • kunne avgjøre hvilke felt som må gjøres om til tall, og hvilke som skal forbli tekst
  • kunne lese en fil og bygge opp en liste eller ordbok av objekter fra den
7.2DRILL — Filinnlesing i klassemodellering
  • kunne lese et dataformat av en eksempellinje og planlegge innlesingen før du koder
  • kunne skrive innlesingen både som en frittstående funksjon og som en metode i en klasse
  • kunne velge mellom liste og ordbok ut fra hva oppgaven skal kunne slå opp senere
  • kunne kjenne igjen og rette de fem feilene som oftest ødelegger fil-deloppgaven
7.PPrøver til del 7: Filbehandling
  • kunne skrive innlesingsløkka riktig uten hjelpemidler
  • kunne bygge en liste eller ordbok av objekter fra en fil, med riktig skilletegn og konvertering
  • kunne la et objekt lese sin egen fil og fylle sin egen samling
  • kunne kombinere filinnlesing med oppslag, delegering og en algoritmemetode

8Nøstede strukturer

8.1Nøstede lister og ordbøker
  • kunne lese og skrive verdier på to nivåer uten å blande dem
  • kunne bygge opp en nøstet ordbok med de sjekkene som trengs
  • kunne løpe gjennom begge nivåene og plassere akkumulatoren riktig
  • kunne telle antall runder i en løkke inne i en løkke
8.2DRILL — Funksjoner over nøstede strukturer
  • kunne avgjøre hvilket av fire mønstre en oppgavetekst ber om
  • kunne plassere akkumulatoren på det nivået oppgaven faktisk krever
  • kunne bygge en ny nøstet struktur av en gammel, med de sjekkene som trengs
  • kunne tenke gjennom hva funksjonen svarer på tomme og ulike store strukturer
8.PPrøver til del 8: Nøstede strukturer
  • kunne spore en løkke inne i en løkke og telle rundene riktig
  • kunne plassere akkumulatoren på det nivået oppgaven krever
  • kunne bygge og snu en nøstet ordbok med de sjekkene som trengs
  • kunne skrive to samarbeidende funksjoner over en nøstet struktur på tiden

9Eksamenstrening

9.1Avsluttende øvingseksamen 1 — bibliotek-innpakning
  • kunne gjennomføre et helt sett på fire timer uten hjelpemidler
  • kunne fordele tiden slik at alle fem oppgavene besvares
  • kunne kjenne igjen hvilken sjanger hver oppgave tilhører, og hente fram riktig mal
  • kunne kontrollere egen kode ved å lese den, siden den aldri kjøres før den rettes
9.2Avsluttende øvingseksamen 2 — treningssenter-innpakning
  • kunne gjennomføre et helt sett på fire timer uten hjelpemidler
  • kunne bygge en modell med to samlinger, filinnlesing og en spørremetode
  • kunne spore referanser gjennom en modell der ett objekt ligger flere steder
  • kunne fordele tiden etter poengene i stedet for etter rekkefølgen
9.3Avsluttende øvingseksamen 3 — strømmetjeneste-innpakning (tyngre)
  • kunne gjennomføre et sett på nivå med de nyeste settene i arkivet
  • kunne bygge en modell med to nivåer av samlinger og filinnlesing per objekt
  • kunne gi et konkret moteksempel når en funksjon er logisk feil
  • kunne svare på et grensesnitt-spørsmål uten å spore kode
Tilbake til IN1000 Introduksjon til objektorientert programmering