INF1000 Variable. Marit Nybakken 27. januar 2004



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

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

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

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

Tre måter å lese fra terminal. Java 4. Eksempel. Formatert utskrift til skjerm

INF1000. Marit Nybakken 10. februar 2004

INF1000 Metoder. Marit Nybakken 16. februar 2004

I dag. Rep: Oppsummering - variabler. Rep: Datatyper. INF1000 (Uke 3) Mer om uttrykk, terminal I/O, forgreninger

Løsningsforslag ukeoppg. 2: 31. aug - 6. sep (INF Høst 2011)

INF1000 : Forelesning 1 (del 2)

INF 1000 høsten 2011 Uke september

Java. INF1000 : Forelesning 2. Ulike varianter for ulike behov. Java Standard Edition (Java SE) Java:

INF1000 undervisningen INF 1000 høsten 2011 Uke september

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

Universitetet i Bergen Det matematisk-naturvitenskapelige fakultet Institutt for informatikk

som jobbet nærmest døgnet rundt i 18 måneder i Menlo Park i California for å forberede den neste bølgen innen computing.

Litt Java-historikk. Litt Java-historikk. Ulike varianter for ulike behov. Litt Java-historikk. The Green Team

Lese fra fil. INF1000 : Forelesning 5. Eksempel. De vanligste lesemetodene. Metoder:

Innlesning fra tastatur med easyio. INF1000 høst Vi må først skrive i toppen av programmet: import easyio.*;

UNIVERSITETET I OSLO

Forelesningsquiz. Forelesning inf Java 5. Sett dere to (eller tre) sammen og besvar de fire spørsmålene på utdelt ark. Tid: 15 min.

Ta inn og ut av 2D-array. Java 6. Liste over ulike verdier i 2D-array. Det ferdige programmet. Vi skal lage et program som illustrerer hvordan man

er et er et heltall. For eksempel er 2, 3, 5, 7 og 11 primtall, mens 4 = 2 2, 6 = 2 3 og 15 = 3 5 er det ikke.

Forelesning inf Java 5

Forelesning inf Java 5

Programmeringsspråket C

MAT-INF 1100: Obligatorisk oppgave 1

Jentetreff INF1000 Debugging i Java

3 emner i dag! INF1000 Uke 5. Objekter og pekere. null. Litt om objekter, pekere og null Filer og easyio Litt mer om tekster

Oblig 4 (av 4) INF1000, høsten 2012 Værdata, leveres innen 9. nov. kl

MAT-INF 1100: Obligatorisk oppgave 1

INF 1000 (uke 2) Variabler, tilordninger og uttrykk

INF Uke 10. Ukesoppgaver oktober 2012

Mesteparten av kodingen av Donkey Kong skal du gjøre selv. Underveis vil du lære hvordan du lager et enkelt plattform-spill i Scratch.

Oversikt. INF1000 Uke 3. Repetisjon Program. Repetisjon Program. Litt repetisjon Program Variabler og Uttrykk Presedens Matematiske funksjoner

INF1010 Arv. Marit Nybakken 2. februar 2004

Spørsmål fra forrige forelesning. INF1000 Forelesning 7. Oppførselen til inword()/inint()/etc. Operator-presedens i Java

løsningsforslag-uke5.txt

I dag skal vi se på. INF 1000 (uke 2) Variabler, tilordninger og uttrykk. Gruppene starter denne uken! Klart for første oblig

Repetisjon: høydepunkter fra første del av MA1301-tallteori.

Ukeoppgaver 1: 30. aug 3. sep (INF Høst 2010)

Forkurs INF1010. Dag 2. Andreas Færøvig Olsen Gard Inge Rosvold Institutt for Informatikk, 14.

Leksjon 3. Kontrollstrukturer

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

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

Forelesning 9 mandag den 15. september

Kodestil i C++ Introduksjon. Navnekonvensjoner. Globale variabler. Simen Hagen

Forelesning inf Java 4

INF1000 Behandling av tekster

Løsningsforslag ukeoppg. 9: okt (INF Høst 2011)

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

Labyrint Introduksjon Scratch Lærerveiledning. Steg 1: Hvordan styre figurer med piltastene

IN1010. Fra Python til Java. En introduksjon til programmeringsspråkenes verden Dag Langmyhr

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

Prosent. Det går likare no! Svein H. Torkildsen, NSMO

Fra Python til Java. En introduksjon til programmeringsspråkenes verden. Dag Langmyhr

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. Repetisjon. Mer om forgrening While-løkker

SKOLEEKSAMEN I. SOS4010 Kvalitativ metode. 19. oktober timer

UNIVERSITETET I OSLO

Fasit og løsningsforslag til Julekalenderen for mellomtrinnet

UNIVERSITETET I OSLO

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

Eksempel: Body Mass Index (BMI) Forelesning inf Java 3. Ferdig program (første del) Ferdig program (siste del)

Hvis en person har inntekt < , så betaler han 10% skatt på alt, og ellers betaler han 10% skatt på de første og 30% på resten.

Hvis en person har inntekt < , så betaler han 10% skatt på alt, og ellers betaler han 10% skatt på de første og 30% på resten.

Løse reelle problemer

INF109 - Uke 1b

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Introduksjon til objektorientert. programmering. Hva skjedde ~1967? Lokale (og globale) helter. Grunnkurs i objektorientert.

Oversikt. INF1000 Uke 6. Objekter, pekere og null. Lese og skrive fra/til fil. Litt om objekter, pekere og null Filer og easyio. Litt mer om tekster

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

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

STATISTIKK FRA A TIL Å

Digitale systemer II

INF1000 : Forelesning 3

Mer om uttrykk, terminal I/O, forgreninger. Grunnkurs i programmering Institutt for Informatikk Universitet i Oslo

IN1010. Fra Python til Java. En introduksjon til programmeringsspråkenes verden Dag Langmyhr

Fortsettelses kurs i Word

Programmeringsspråk for nybegynnere. Krav til språket. Krav til språket. Krav til språket

UNIVERSITETET I OSLO

I dag skal vi se på. INF 1000 (uke 2) Variabler, tilordninger og uttrykk. Gruppene starter i dag! Klart for første oblig

INF 1000 (uke 2) Variabler, tilordninger og uttrykk

Sigbjørn Hals. Nedenfor har vi tegnet noen grafer til likningen y = C, der C varierer fra -2 til 3, med en økning på 1.

Oblig4 - forklaringer

Body Mass Index (BMI) INF1000 : Forelesning 3. Ferdig program (forts.) Ferdig program

Emnekode: LV121A Dato: Alle skrevne og trykte hjelpemidler

Java 4. Mer om easyio Mer om forgreninger Løkker. 7. september 2004

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

INF1000: Forelesning 4. Mer om arrayer Metoder

Vekst av planteplankton - Skeletonema Costatum

Prøveeksamen i INF1000. Ole Christian og Arne. 23. november 2004

Generelt om oblig 3. Oppgaveteksten kort sammendrag. Deloppgaver/menyvalg 15/03/2010. INF1000 Forelesning 9

Eksamensrelevant repetisjonsstoff. Deklarasjoner og variabeltyper. Konstanter

Kapittel 4: Logikk (predikatlogikk)

Blokker og metoder INF1000 (Uke 6) Metoder

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

Transkript:

INF1000 Variable Marit Nybakken marnybak@ifi.uio.no 27. januar 2004 Hva er en variabel Datamaskinens minne (eller hurtiglager) består av en masse celler som kan inneholde verdier. Hver av cellene har en adresse. En variabel i et program refererer til en eller flere slike celler. I programmet kan vi legge inn verdier eller hente ut verdier av disse cellene. Siden det er svært upraktisk å måtte gå rundt å huske på minneadresser, gir vi i stedet variablene navn. Når vi lager variablene, må vi samtidig si hva de skal inneholde, f.eks. heltall, flyttall eller bokstaver. Typen sier hva slags verdier vi har lov til å legge inn i variabelen, og bestemmer samtidig hvor stor variabelen skal være. Et flyttall tar for eksempel større plass i minnet enn et heltall. Ok, men hva skal vi med dem? Tor skal spare taxiregning og går hjem fra byen. Han ønsker å finne ut hva ganghastigheten hans er i beruset tilstand. Han finner ut at det er 4.23 km fra sentrum og hjem, og han bruker i alt 48 minutter. Han tok seg imidlertidig en tur innom 7-11 for å kjøpe løkpølse med ekstra løk, og brukte 4 minutter på dette. 1

Figur 1: En int-, en double- og en char-variabel class TorPaaTur { public static void main(string [ ] args) { double avstand; // veien hjem int totaltid; // tid brukt i alt int tidpå711; // tid brukt på 7-11 avstand = 4.23; totaltid = 48; 10 tidpå711 = 4; int tid = totaltid tidpå711; double snitthastighet = avstand / ((double)tid / 60); System.out.println("Tor har en hastighet på " + snitthastighet + " km/t"); Her får vi det samme svaret hver gang vi kjører programmet. Kunne vi ikke bare gjort det slik? class TorPaaTur { public static void main(string [ ] args) { double snitthastighet = 4.23 / ((double) 44 / 60); 2

System.out.println("Tor har en hastighet på " + snitthastighet + " km/t"); Programmet fungerer jo helt likt, og vi slipper å tøyse med en masse variable. Det er flere grunner til at den første løsningen er bedre. For det første så forteller det mer om selve problemet, fordi variabelnavnene sier litt om hva vi prøver å regne ut. Et annet, og viktigere poeng, er at vi snart skal lære hvordan vi kan variere verdiene for avstand, total tid og tid brukt på 7-11 for hver gang programmet kjører, ved å lese inn disse verdiene fra tastatur. Deklarasjon, initialisering og bruk Deklarere variable Før vi kan bruke en variabel i programmet må vi lage den, eller deklarere den. Å deklarere en variabel er å si hvilket navn variabelen skal ha og hva slags type verdier den skal kunne inneholde. Generelt sett foregår dette slik: type variabelnavn; For eksempel boolean fortsett; double a, b; int antkjeksiskuffen; Det blir da satt av plass til variabelen i minnet og navnet brukes for å aksessere denne plassen. Variablene kan egentlig deklareres hvor som helst i programmet, men deklarasjonen må komme før vi tar den i bruk. Hvis ikke, får vi en slik feil når vi prøver å kompilere programmet: class Feil { 3

public static void main(string [ ] args) { variabelsomikkeerdeklarert = 10; D:\komp\variable>javac Feil.java Feil.java:3: cannot resolve symbol symbol : variable variabelsomikkeerdeklarert 10 location: class Feil variabelsomikkeerdeklarert = 10; ^ 1 error Vi har mange forskjellige typer variable, her følger noen av de vanligste: int heltall short heltall, ikke så store long heltall, veldig store float flyttall double flyttall, større presisjon char enkeltbokstaver boolean true eller false Variablnavn skal alltid ha liten forbokstav. Består navnet av flere ord (IKKE stavelser), kan forbokstaven i hvert påfølgende ord være stor. Orddelingsfeil på denne måten slås hardt ned på. Det heter f.eks. ikke sirkelareal, men sirkelareal. I min verden. Initialisere variable Hvis vi skal bruke en variabel i et regnestykke, skrive den ut på skjerm eller gjøre noe som helst annet med den må den ha fått en verdi først. Det å gi en variabel en startverdi kalles å initialisere variabelen. 4

Se hva som skjer når vi prøver å kompilere dette programmet, der en variabel skrives ut på skjerm uten å ha fått en verdi først: class Feil2 { public static void main(string [ ] args) { int variabelsomikkeharenverdi; System.out.println(variabelSomIkkeHarEnVerdi); D:\komp\variable>javac Feil2.java Feil2.java:4: variable variabelsomikkeharenverdi might not have been initialized 1 error System.out.println(variabelSomIkkeHarEnVerdi); ^ 10 Vi kan deklarere og initialisere på samme linje: double a = 0, b = 2, c; int p = 55; String s = Tjoho ; Bruk av variable Vi tilordner en variabel en verdi når vi setter variabelnavnet lik en verdi eller et uttrykk. Da legger vi verdier inn i variabelen. variabelnavn = uttrykk; antallelefanter = 1 + (3-1); teksten = antallelefanter + elefanter kom marsjerende ; marsjhastighet = 3.1 * 10.2; veienvarsjarmerende = true; Når variabelen står på andre siden av likhetstegnet eller blir skrevet ut på skjermen, hentes verdien fra variabelen ut og settes inn i stedet for variabelen. System.out.println( Antall elefanter er nå + antallelefanter); 5

antallelefanter = antallelefanter + 1; System.out.println(antallElefanter + kom marsjerende ); Hver gang variabelen nevnes, hentes verdien ut av minnet og settes inn i uttrykket. Kommentarer Kommentarer kan settes inn på to måter /* Jeg er en kommentar * som går over flere linjer * < denne er ikke nødvendig, men det ser fint ut */ // Jeg kan bare bruke en linje Vi kommenterer for å gjøre programmene lettere å lese, og for å forklare kompliserte deler der det kanskje ikke er helt åpenbart hva som skjer. Slik gjør man det ikke: int a; // Deklarerer en variabel a (NEI, det kan vi godt se) // Skriver ut variabelen resultat på skjerm (NEI, helt åpenbart) System.out.println("Resultat: " + resultat); /* Deler her variabelen totalnedbør på antalldager fordi gjennomsnittlig * nedbør hver dag gis av denne formelen. I variabelen totalnedbør har jeg * tidligere summert totalt regn for mai og totalt regn for juni, slik at 10 * totalnedbør kan inneholde summen av alt regnet i både mai og juni. * antalldager er summen av alle dagene som det regnet på forsommeren, altså * i mai og juni. Lissom. * NEI! Dette gjør det ikke akkurat lettere å lese programmet */ double gjsnitt = totalnedbør / antalldager; 6

Man kommenterer heller for noen som kan lese programmer noenlunde greit fra før av, og som ønsker å kjapt se hvor de forskjellige delene av programmet starter og hva de gjør. Mer om dette senere (når vi lager store nok programmer til at det faktisk gir mening å kommentere) Typekonvertering I blant har vi bruk for å konvertere en type til en annen type. Konverter flyttall til heltall double flyttall = 1.23456; int strykdesimaler = (int) flyttall; int rundav = (int) (Math.round(flyttall)); Konvertere tekst til tall String s = 114323 ; int tall = Integer.parseInt(s); double tall = Double.parseDouble(s); Konvertere tall til tekst int nokettall = 904582; String teksttall = + nokettall; Konvertere tekst til store eller små bokstaver String tekst = Gud og Fedrelandet ; String stortekst = tekst.touppercase(); String litentekst = tekst.tolowercase(); Konvertere enkeltbokstaver til store og små bokstaver 7

char c = P ; char liten = Character.toLowerCase(c); char stor = Character.toUpperCase(liten); Boolske verdier Variabeltypen boolean er litt spesiell, den kan bare inneholde verdiene true eller false og brukes når vi har situasjonen sant eller usant, eller enten-eller. Vi har foreløpig ikke veldig mye bruk for denne variabeltypen, men den blir svært nyttig når vi etterhvert skal få programmene til å gjøre en ting i det ene tilfellet og en annen ting i et annet tilfelle. Vi kan sette en boolsk variabel til true eller false direkte, eller vi kan gi den verdi ved å sette den lik et boolsk uttrykk. Et boolsk uttrykk er som oftest en sammenligning mellom to verdier som evaluerer til enten true eller false. Verdiene kan være variable eller tall som vi setter direkte inn. Her er en liste over sammenligningsoperatorer med eksempler. == x == y lik!= x!= y ulik < x < y mindre enn > x > y større enn <= x <= y mindre enn eller lik >= x >= y større enn eller lik && (x < y) && (y < 1) OG (begge ledd må være sanne) (x < y) (x < z) ELLER (en av leddene må være sanne)!!(x < y) IKKE (snur sannhetsverdi til uttrykket) 10 Vi kan sette en boolsk variabel lik hvert av uttrykkene i den midterste kolonnen. Avhengig av hva x, y og z er, får den boolske variabelen verdien true eller false. boolean erxstørreenny = x > y; boolean erantallkatterfærreennti = antallkatter < 10; boolean harjegtikronerilomma = antallpengerilomma == 10; boolean harjegnokpengertilbanen = (antallpengerilomma >= 10) && (minalder < 16); 8