Metoder med parametre, løkker og arrayer

Like dokumenter
Løkker og arrayer. Løse problemer med programmering. INF1000, uke3 Geir Kjetil Sandve

Feilmeldinger, kontrollflyt og void-metoder

Feilmeldinger, kontrollflyt og void-metoder

Løkker og lister. Løse problemer med programmering. INF1001, uke3 Geir Kjetil Sandve

Hvordan løse problemer med programmering?

Løse reelle problemer

Feilmeldinger, brukerinput og kontrollflyt

Løse reelle problemer

Håndtere mange verdier

2 Om statiske variable/konstanter og statiske metoder.

Løse reelle problemer

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

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

UNIVERSITETET I OSLO

LITT OM OPPLEGGET. INF1000 EKSTRATILBUD Stoff fra uke September 2012 Siri Moe Jensen EKSEMPLER

2 Om statiske variable/konstanter og statiske metoder.

UNIVERSITETET I OSLO

Programmering Høst 2017

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

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

Forelesning inf Java 5

Programmeringsspråket C

UNIVERSITETET I OSLO

Forelesning inf Java 5

Hva er verdien til variabelen j etter at følgende kode er utført? int i, j; i = 5; j = 10; while ( i < j ) { i = i + 2; j = j - 1; }

MAT-INF 1100: Obligatorisk oppgave 1

Visuell Programmering: Kom i gang med Processing

Verden - Del 2. Steg 0: Oppsummering fra introduksjonsoppgaven. Intro

Forkurs INF1010. Dag 1. Andreas Færøvig Olsen Tuva Kristine Thoresen

MAT-INF 1100: Obligatorisk oppgave 1

Introduksjon til objektorientert programmering

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

if-tester Funksjoner, løkker og iftester Løkker og Informasjonsteknologi 2 Læreplansmål Gløer Olav Langslet Sandvika VGS

Endret litt som ukeoppgave i INF1010 våren 2004

UNIVERSITETET I OSLO

Av Stein Gjessing, Institutt for informatikk, Universitetet i Oslo

"Hjerneteppe!" er en huskelek hvor du skal huske stadig lengre rekker med bokstaver!

INF1000 (Uke 6) Mer om metoder, tekster

Læringsmål og pensum. if (be): else (not_to_be):

Rep: Metoder. INF1000 (Uke 6) Mer om metoder, tekster. Rep: Metoder. 3 typer variable: Klassevariable. Java-programmene så langt i kurset:

TDT4110 Informasjonsteknologi grunnkurs: Tema: Betingelser og logiske uttrykk Utgave 3: Kap. 3

if (be): else (not_to_be): TDT4110 Informasjonsteknologi grunnkurs: Tema: Betingelser og logiske uttrykk Utgave 3: Kap.

Del 1 En oversikt over C-programmering

UNIVERSITETET I OSLO

INF 1000 høsten 2011 Uke september

Det du skal gjøre i denne oppgava er først å sette opp bakgrunnen til spillet og så rett og slett å få firkanter til å falle over skjermen.

INF1000 undervisningen INF 1000 høsten 2011 Uke september

Tetris. Introduksjon. Skrevet av: Kine Gjerstad Eide. Lag starten på ditt eget tetris spill!

INF1000: Forelesning 7. Konstruktører Static

UNIVERSITETET I OSLO

TDT4110 Informasjonsteknologi grunnkurs: Tema: Betingelser og logiske uttrykk. - 3rd edition: Kapittel 3. Professor Alf Inge Wang

Bakgrunnen for INF2100. Velkommen til INF2100. Prosjektet. Hva gjør en kompilator?

INF Ekstrainnlevering

INF1000 oppgaver til uke 38 (17 sep 23 sep)

Oblig4 - forklaringer. Arne og Ole Christian

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

INF1000: Forelesning 7

MER OM ARRAYER. INF1000: Forelesning 4. Anta at vi ønsker å lagre en liste med navnene på alle INF1000-studentene:

Velkommen til INF2100

INF1000: Forelesning 4. Mer om arrayer Metoder

Øvingsforelesning 3 Python (TDT4110)

INF uke 2. Inputt, beslutninger, kontrollflyt og prosedyrer

Verden. Introduksjon. Skrevet av: Kine Gjerstad Eide og Ruben Gjerstad Eide

Mattespill Nybegynner Python PDF

Med løkke: Læringsmål og pensum. TDT4110 Informasjonsteknologi grunnkurs: Tema: Løkker/Sløyfer Utgave 3: Kap. 4 Utgave 2: Kap. 5. Mål.

Verden - Del 2. Intro. Skrevet av: Kine Gjerstad Eide

Oppsummering fra sist

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

Verden. Steg 1: Vinduet. Introduksjon

løsningsforslag-uke5.txt

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

Seminaroppgaver IN1010, uke 2

INF1000 Metoder. Marit Nybakken 16. februar 2004

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

Kodetime for Nordstrand barneskole

Kapittel 1 En oversikt over C-språket

Blokker og metoder INF1000 (Uke 6) Metoder

UNIVERSITETET I OSLO

Python: Valg og betingelser. TDT4110 IT Grunnkurs Professor Guttorm Sindre

Uke 8 Eksamenseksempler + Ilan Villanger om studiestrategier. 11. okt Siri Moe Jensen Inst. for informatikk, UiO

Praktisk informasjon. I dag. Repetisjon: While-løkker. INF1000 (Uke 5) Mer om løkker, arrayer og metoder

Dagens tema: 12 gode råd for en kompilatorskriver

UNIVERSITETET I OSLO

Utførelse av programmer, metoder og synlighet av variabler i JSP

Hvordan angripe en større oppgave? (og hva skal jeg gjøre i oblig 7!?)

Oppgave 1. INF1000 Uke 13. Oppgave 2. Oppgave 3. Er dette lovlige deklarasjoner (når de foretas inni en metode)? JA NEI

INF1000. Marit Nybakken 10. februar 2004

ToPlayer. Introduksjon: Skrevet av: Ruben Gjerstad Eide og Kine Gjerstad Eide

INF Noen oppgaver til kap. 8

INF1000 : Forelesning 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

Kort repetisjon av doble (nestede) løkker Mer om 1D-arrayer Introduksjon til 2D-arrayer Metoder

Konstruktører. Bruk av konstruktører når vi opererer med "enkle" klasser er ganske ukomplisert. Når vi skriver. skjer følgende:

Finne ut om en løsning er helt riktig og korrigere ved behov

INF1000 (Uke 15) Eksamen V 04

INF1000 (Uke 15) Eksamen V 04

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

I denne oppgaven skal vi repetere litt Python-syntaks, det er en god blanding av alle tingene du har lært i Python til nå.

Oppgave 1. Oppgave 2. Oppgave 3. Prøveeksamen i INF1000. Ole Christian og Arne. 23. november 2004

Transkript:

Metoder med parametre, løkker og arrayer Løse problemer med programmering INF1000, uke3 Ragnhild Kobro Runde

METODER MED PARAMETRE

Statiske void-metoder med parametre Den typen metoder vi så på forrige uke gjorde alltid eksakt det samme når den ble kalt Det er sjelden av nytte! For å være nyttig må en slik metode kunne tilpasses Det gjør vi ved å sende inn parametre

Din første metode med parametre println er en metode hvor utfallet tilpasses! System.out.println(String text): skriver verdien i text til skjermen Variabelen text er en parameter Verdien vi gir inn ("hallo verden") når vi kaller println er et argument Parameter og argument er to sider av det samme Parameter: variabel i metode som tar i mot verdi Argument: verdi sendt inn når metode kalles

Metoder håndterer også redundans Man har ofte behov for (omtrent) samme funksjonalitet ulike steder i en kode Man ønsker da ikke å duplisere koden Minsker oversiktlighet av kode Endringer og rettinger må utføres mange steder Man samler i stedet funksjonaliteten i en metode og kaller metoden der den trengs Dersom det er noe variasjon i hva man trenger, representerer man det som varierer med en parameter

Metoder med parametre {U3VoidMetodeParameter1.java- U3VoidMetodeParameter3.java}

Test-caser Ved forgreninger: minst en test for hvert alternativ. Barn, voksen, eldre. Test spesielt grensetilfeller. 18, 66, Test eventuelt for typiske feilsituasjoner. Hva hvis alder er negativ?

Ulike praktikaliteter (av begrenset betydning)

Praktikaliteter Det er greit å kjenne til noen snarveier (forkortelser) når man skal kode. Dette er egentlig uviktige teknikaliteter, men uansett greit å lære (for å kunne jobbe raskere i praksis). Formålet er igjen å bruke mindre energi på selve kodingen, og ha mer fokus tilgjengelig for problemløsning

Forkortinger rundt variabler Flere variabler kan deklareres på samme linje: int tall1, tall2, alder; Man kan deklarere og gi verdi på samme linje: int alder = 6; Forenklet skrivemåte for å oppdatere verdi: alder += 5 (samme som: alder = alder+5) alder++ (samme som: alder = alder+1)

Vær oppmerksom på Multiplikasjon må alltid angis eksplisitt med * Feil: int prod = 10 a; Riktig: int prod = 10 * a; = er noe helt annet enn == = brukes for å sette verdien til en variabel == brukes for å sammenligne to verdier

Tegnsett En datamaskin representerer hver bokstav med en bestemt tallkode Det finnes ulike standarder for hvilke tall som representerer hvilke bokstaver En klassisk standard er ASCII som støtter 128 tegn En moderne standard er Unicode (UTF-8) som støtter over 100 000 tegn, og brukes på IFIs maskiner Tegnsett er mer intrikat enn man kunne tro, og kan være kilde til mye krøll

Tegnsett Bruk av æ,ø,å i Java kan føre til krøll: Bruk av æ,ø,å i variabelnavn o.l. i Java fører fort til krøll Bruk av æ,ø,å i kommentarer eller tekststrenger burde gå bra, men kan også føre til problemer

Tegnsett Vi skal lære programmering, ikke skrive stil, og taper ingenting på å være uten æ,ø,å: Skriv "forste aaret laerte jeg mye" i kodefilen, og fokuser på det viktige i faget!

God programmeringsskikk Sørg for at programmet er oversiktlig å lese Legg inn blanke linjer der det øker lesbarheten Legg inn kommentarer der noe bør forklares (//)

God programmeringsskikk (forts.) Velg beskrivende navn fremfor korte navn: antallstudenter er oftest bedre enn as og i hvertfall ikke minvariabel for samme formål

God programmeringsskikk (forts.) Bruk store bokstaver for å skille de ulike delene av variabelnavnet (camelcase) ikke: antallstudenter men: antallstudenter

LØKKER

Et eksempel på repetert kjøring {U3RiktigPlussing1.java-U3RiktigPlussing2.java}

Repetert kjøring (løkke): while Syntaks: while (condition) {do1; do2;...} Eksempel: int tall = 0; while (tall<100) { System.out.println(tall); tall = tall + 5; } En slags if med tilbakekobling kjører innholdet mange ganger, helt til condition ikke lenger er sann (true)

Merk den presise rekkefølgen ting blir gjort! while (condition) {do1; do2;...} Man sjekker, kjører hele blokka, og går så tilbake til sjekken igjen Sjekk condition, do1, do2, sjekk condition igjen, do1, do2...

Merk den presise rekkefølgen ting blir gjort! while (condition) {do1; do2;...} Det blir altså ikke sjekket noe mellom do1 og do2 Det som sjekkes er oppfylt når man starter å kjøre kodeblokka.. men det kan slutte å være oppfylt underveis i blokka

En liten oppgave Skriv kode (det essensielle) som regner ut summen av tallene fra 1 til 100 (1+2+3...+100) Prøv alene med blyant og papir i 3 minutt Diskutér med nabo i 3 minutt {U3SumTallrekkeVhaWhile.java}

Eksempel {u3lokkermedmetodekall.java}: repetert spørring frem til brukeren oppgir negativ alder

ARRAYER

U3HoydeGittAlder1.java Eksempel

Vi kan slå opp verdien vi trenger direkte! Det vi ønsket: hoydeaaralder Syntaks i java: hoydeaar[alder]; Og før dette må vi definere hoydeaar som en array: int[] hoydeaar = {50, 76, 87, 96};

Array Definere array: int[] hoydeaar = {50, 76, 87, 96}; int[] hoydeaar = new int[4]; Sette en enkeltverdi: hoydeaar[0] = 5; hoydeaar[2] = 8; Bruke enkeltverdi System.out.println(hoydeAar[0]);

Array - merk Størrelsen på en array kan bestemmes av en annen variabel int hvormangehoyder = Integer.parseInt(in.nextLine()); int[] hoydeaar = new int[hvormangehoyder]; Alle verdier må være samme type, men man kan bestemme hvilken String[] hoydeaar = {"uhyre liten", "bitteliten", "liten"} En tom array fylles med default-verdier int[] hoydeaar = new int[4]; er samme som: int[] hoydeaar = {0,0,0,0}

LØKKER OG ARRAYER

Løkker og arrayer Løkker og arrayer og arbeider ofte godt sammen! Løkker gjør at kodelinjer kan kjøres flere ganger Arrayer gjør det mulig å jobbe med mange verdier {U3HuskFemOrd1.java-U3HuskFemOrd2.java}

Oppsummering Metoder med parametre gjør at koden kan skreddersys lignende situasjoner Løkker gjør at kodelinjer kan kjøres flere ganger F.eks. gjøre lignende type utregning på ulike verdier Arrayer gjør det mulig å jobbe med mange verdier Kan slå opp direkte på verdien i en bestemt posisjon Løkker og arrayer jobber godt sammen Kan generere og oppsummere store mengder verdier Dere har nå verktøykassen for å løse skikkelige problemstillinger!