INF1000 undervisningen INF 1000 høsten 2011 Uke september

Like dokumenter
INF 1000 høsten 2011 Uke september

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

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

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

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

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

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

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

INF1000 Uke 4. Innlesning fra terminal. Uttrykk og presedens. Oversikt

Forelesning inf Java 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

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

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

INF1000 Uke 3. Innlesning fra terminal. Uttrykk og presedens. Oversikt. Litt repetisjon Blokker og forgreininger

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

INF1000 : Forelesning 1 (del 2)

INF 1000 (uke 2) Variabler, tilordninger og uttrykk

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

INF1000 : Forelesning 2

Repetisjon Program. INF1000 Uke 2. Repetisjon Program Prosedyren main Alt inne i klasser. Repetisjon Variable og uttrykk

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

Fullstendige programeksempler. INF1000 : Forelesning 2. Eksempel 1. Eksempel 2. Vi skal nå se på endel programeksempler.

De numeriske datatypene. INF1000 : Forelesning 2. Sannhetsverdier. Desimaltall. int og double er eksempler på numeriske datatyper

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

INF1000 : Forelesning 2

Forelesning inf Java 2

Forelesning inf Java 2

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

Innhold uke 3. INF 1000 høsten 2011 Uke 3 6. september. Uttrykk. Variabel: En plass i hukommelsen

INF 1000 høsten 2011 Uke 3 6. september

INF1000 : Forelesning 4

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

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

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

UNIVERSITETET I OSLO

Forelesning inf Java 2

Oversikt. Uke 2, INF 1000, 30 aug Variable, tilordninger og uttrykk. Repetisjon: Java programmering

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

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

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

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

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

Forelesning inf Java 5

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

Forelesning inf Java 5

Eksempel: Body Mass Index (BMI)

Blokker og metoder INF1000 (Uke 6) Metoder

Velkommen til INF1000 høst 2010

Første forelesning! Mål for INF1000. Kursevaluering. Velkommen til INF1000 høst 2010

Blokker. Uke 4, INF 1000, 13 sept Løkker og arrayer. Eksempel. Deklarasjoner inne i blokker. Institutt for Informatikk Universitet i Oslo

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

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

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

INF1000 : Forelesning 3

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

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

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

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

Jentetreff INF1000 Debugging i Java

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

Øvingsforelesning 1 Python (TDT4110)

UNIVERSITETET I OSLO

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

INF1000 oppgaver til uke 38 (17 sep 23 sep)

Oversikt. INF1000 Forelesning 6. Variable Deklarasjon. Variabel en plass i lageret int radius;

for (int i=0; i<3; i++) { for (int j=0; j<5; j++) { System.out.print(i*j); System.out.println();

Programmeringsspråket C

Forelesning inf Java 3

Løsningsforslag ukeoppg. 3: sep (INF Høst 2011)

2 Om statiske variable/konstanter og statiske metoder.

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.

MAT-INF 1100: Obligatorisk oppgave 1

UNIVERSITETET I OSLO

INF1000 høst Forelesning 2: Innlesning fra terminal Boolean-variable if-setninger Løkker Litt mer om heltall: divisjon og modulo Arrayer

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

Forelesning inf Java 3

MAT-INF 1100: Obligatorisk oppgave 1

Oblig2 - obligatorisk oppgave nr. 2 (av 4) i INF1000 h2006

Del 1 En oversikt over C-programmering

Feilmeldinger, brukerinput og kontrollflyt

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

Velkommen til. INF våren 2016

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

Kapittel 1 En oversikt over C-språket

INF1000 (Uke 6) Mer om metoder, tekster

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

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

INF1000 (Uke 15) Eksamen V 04

INF1000 (Uke 15) Eksamen V 04

Oblig2 - obligatorisk oppgave nr. 2 (av 4) i INF1000 v2009

Oversikt. INF1000 Uke 3. Underveisevaluering. Spørsmål

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

INF Uke 10. Ukesoppgaver oktober 2012

Java 3. Litt om Java-teknologien. Fortsette innføringen i språket Java Idag: variable, uttrykk, lese fra terminal, forgreninger. 31.

INF1000 Eksamensforberedelser og -tips. Høst 2014 Siri Moe Jensen

Python: Variable og beregninger, input og utskrift. TDT4110 IT Grunnkurs Professor Guttorm Sindre

Transkript:

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 introduksjon til ukens pensum Prinsipper og hovedtrekk hva trenger du å forstå Gruppeundervisning: Anvendelse (oppgaveløsning), detaljer og eksempler, gjenta/ forklare ved behov Eget arbeid: Lesing og programmering (oppgaver) Ekstra tilbud fra Studielaben INF1000-lab fredag 14:15-18:00 på Modula med gruppelærer NB: Denne uken torsdag 12:15 16:00 på Chill pga undervisningsfri fredag Studieorakler og termvakter ved akutte problemer Helpdesk for egen laptop Ekstra kapasitet? Følg kurs i Sonen, oppsøk student-org 1 2 Innhold Siste program fra forrige uke Et Java-program og kommentarer Variable, datatyper, uttrykk Mer om utskrift til skjerm Programblokker Forgreninger i programmet if if-else Feil i programmer Hvordan løse programmeringsoppgaver Mål for uke 2: * Java: Variable, uttrykk og forgreninger (Kap 2 + 4.1-4.2) * Programmering: Skrive, kompilere, teste og rette programmer 3 class Utskrift2 { public static void main(string[] args) { System.out.println("Arne har aldri komponert en symfoni"); System.out.println("Beethoven komponerte Skjebnesymfonien"); System.out.println(" ------------------******-----------"); Kompilering og kjøring: javac Utskrift2.java java Utskrift2 Arne har aldri komponert en symfoni Beethoven komponerte Skjebnesymfonien ------------------******----------- 4

Kommentarer i programmene Variabel: En plass i hukommelsen Kommentarer gjør programmene lettere å forstå for en menneskelig leser De oversettes ikke: kompilatoren hopper over dem To typer kommentarer: // Her er en kommentar som varer ut linja /* Her er en kommentar som varer helt til hit */ Gode programmer har kommentarer, men ikke på hver linje Dere må kommentere programmene til oblig 2-4! 5 For å kunne huske og forandre på data, trenger programmet variable å lagre dem i. Vi reserverer plass i hukommelsen ved å deklarere en variabel da oppgir vi type og navn lengde int lengde; int maxlengde; maxlengde Typen avgjør hva slags verdi som kan lagres i variabelen: int er en type for å lagre heltall Du bestemmer navnet: start med (helst liten) bokstav, deretter tall og bokstaver?? 6 Variable: Tilordninger Variable - avlesing Når variabelen er deklarert, kan vi plassere en verdi av riktig type der Verdien i en variabel kan leses av og for eksempel benyttes for å gi verdi til en annen variabel ved en tilordning Dette kalles en tilordning lengde = 15; Les: lengde settes lik 15 int lengde; int maxlengde = 15; lengde = maxlengde; Kan også gjøres sammen med deklarasjonen int lengde = 15; lengde 15 maxlengde? 7 Variabelen lengde....settes lik.. lengde 15 maxlengde 15..verdien i variabelen maxlengde 8

Uttrykk Flere datatyper i Java en variabel som er deklarert Den generelle formen for en tilordning er variabel = uttrykk alt som kan regnes ut til en verdi av riktig type for variabelen Datatype Beskrivelse Eksempel int heltall int k = 3; double desimaltall double x = 3.14; boolean boolsk (logisk) verdi boolean b = true; char tegn char c = @ ; String tekst String s = "Hei på deg"; Uttrykket på høyre side leses av og beregnes først deretter plasseres resultatet som verdi i variabelen på venstre side Eksempler: int ant = 0; ant = ant + 1; Det finnes flere (short, long, byte,..) som du gjerne kan lese om i boken, men som ikke er sentrale å kjenne til i dette kurset. 9 10 Numeriske datatyper Numeriske uttrykk int, double, float, short og long er numeriske datatyper i Java Vi vil benytte int og double Mulige verdier i en int-variabel er heltall -2 0 72636 Mulige verdier i en double-variabel er desimaltall (flyttall): 3.14 0.00045-3.72 5.00000 (kan godt skrives som 5 i programmet ditt) Kan stå på høyresiden av tilordning til variabel av samme numeriske type (f. eks. int eller double) Numeriske literaler brukes direkte i programmet 3.14 0 Numeriske konstanter deklareres med fast verdi final int MAX_LENGDE = 10 final double KORT_PI = 3.14 Numeriske variable Operasjoner med numerisk resultat 11 12

Numeriske operasjoner Presedens Numeriske operasjoner med egne operatorer (symboler): De 4 regneartene: + - * / Inkrementering og dekrementering: ++ -- Utført på kun heltall blir resultatet alltid heltall Utført på desimaltall kan resultatet bli desimaltall int i = 10/2; // gir 5 int j = 10/4; // gir 2 (heltallsdivisjon) double d = 10/4.0; // gir 2.5 int k = 10/4.0; // kan ikke lagres i int =kompilatorfeil i 5 j 2 d 2.5 k? 13 Operasjonene i et uttrykk utføres i en nøye bestemt rekkefølge Rekkefølgen bestemmes først av presendensregler, eks først innholdet i parenteser, deretter ++ og -- (eneste operatorer som endret variablene i et uttrykk!) * og / + og - For operasjoner med samme presedens: Fra venstre mot høyre int i = 1 + 2*2; int j = i++; // i leses til j, deretter økes i med 1 int k = ++j; // j økes med 1, detter leses verdien til k Resultat etter de 3 programsetningene: i j k 56 56 6 14 Datatypen boolean Boolske (logiske) uttrykk I programmer har vi ofte bruk for å holde rede på om noe er sant eller usant, f.eks om (x 0) Java har derfor en egen boolsk (logisk) datatype som bare har to lovlige verdier: true false boolean b = true; // Her får b verdien true b true Logiske uttrykk gir boolsk verdi som resultat Logiske operasjoner: (0 == 5) tester om 0 har samme verdi som 5!! Brukes for sammenligning av to uttrykk av samme type Ikke å forveksle med = som brukes for tilordning! Andre logiske operatorer (eksempler senere): < og <= og =!= b && og false boolean b = (0==5); boolean bb = (0 <= 5); // Her får b verdien false // Her får bb verdien true bb true 15 16

Variabeltypen String Utskrift fra variable String-variable peker på en tekststreng String s = "Hei på deg"; To tekster kan konkateneres (spleises) ved hjelp av tegnet + String t = s + ", Siri!"; System.out.println (t); // t peker nå på teksten "Hei på deg, Siri!" // skriver dette ut på skjermen Merk at operatoren + dermed har to ulike betydninger avhengig av om (minst) ett av argumentene er en tekst Vi har brukt variable i tilordning av verdi til andre variable Verdien i en variabel kan også skrives ut på skjerm System.out.println () kan skrive ut både numeriske verdier, tegn og tekst-verdier class Utskrift { String s = "Hei! "; int i = 16; char c = # ; System.out.println (s); System.out.println (i); System.out.println (c); Kjøre-eksempel javac Utskrift.java java Utskrift Hei! 16 # 17 18 Flere verdier på samme linje Ting å passe på To måter å skrive ut flere verdier på samme linje: Bruk System.out.print () for hver verdi untatt den siste Oppgi flere verdier med + mellom i System.out.println () Variable kan ikke få navn med andre tegn enn tall og bokstaver, og må begynne med bokstav (vanligvis liten) class Utskrift { System.out.print ("En forelesningstime varer "); System.out.println (" 45 minutter."); Kjøre-eksempel (likt for begge) javac Utskrift.java java Utskrift En forelesningstime varer 45 minutter. De kan ikke hete det samme som reserverte Java-ord Vi kan ikke deklarere flere variable med samme navn Variable kan ikke leses før de er tilordnet en verdi class Utskrift { int timelen = 45; System.out.println ("En forelesningstime varer " + timelen + " minutter."); 19 Tips for å skjønne hva et program gjør: Tegn variablene, og oppdater verdier deres etter hvert som programsetningene utføres! 20

Blokker i programmer Forgreninger: if En programblokk er en samling programsetninger omsluttet av krøllparenteser Ofte vil vi at maskinen skal utføre ulike instruksjoner avhengig av for eksempel en verdi i en variabel class Utskrift { public static void main(string[] args) { System.out.println("Beethoven komponerte Skjebnesymfonien"); Da kan vi bruke if-konstruksjonen i Java for å bestemme under kjøring om en eller flere setninger skal utføres (logisk uttrykk) Blokker kan ligge inne i blokker (se over) En variabels skop er fra deklarasjonsstedet til blokken avsluttes Variable er ikke definerte (synlige) utenfor sine skop int formue = 20; if (formue 0) { System.out.println ("Du har penger igjen!"); if (formue 100000000) { System.out.println ("Faktisk en stor formue! "); Kjøre-eksempel javac Utskrift.java java Utskrift Du har penger igjen! 22 21 Flere eksempler på tester Forgreninger: if - else Andre eksempler på logiske uttrykk (betingelser) å teste på: if (!false) { System.out.println ("Utføres alltid") Når man ønsker alternative setninger utført hvis betingelsen er usann brukes konstruksjonen if-else int formue = 20; if (true) { System.out.println ("Utføres alltid") if (0!= 0) { System.out.println ("Utføres aldri"); if (formue 100000000) { System.out.println ("Faktisk en stor formue! "); else if (formue 1000000) { System.out.println ("Faktisk ganske romslig!"); else { System.out.println ("Men ikke svært mye!"); int i = 5; if ((i < 10) && (i 10)) { System.out.println ("Utføres aldri"); Slike if-else-setninger kan kobles i kjede med flere mulige utfall 23 24

Program-eksempler med feil (1) Program-eksempler med feil (2) class Eksempel1 { boolean b; b = 2; // Her prøver vi å sette b lik et heltall Feil under kompilering: javac Eksempel1.java Eksempel1.java:4: incompatible types found : int required: boolean b = 2; // Her prøver vi å sette b lik et heltall 1 error ^ 25 class Eksempel2 { int x = 3; int y = 0; int z = x / y; // Heltallsdivisjon med null Feil under kjøring: java Eksempel2 Exception in thread "main java.lang.arithmeticexception: / by zero at Eksempel2.main(Eksempel2.java:5) 26 Program-eksempler med feil (3) Hvordan løse oppgaver class Eksempel3 { int x = 2; int y = 4; x = y; //prøver å bytte verdier mellom x og y y = x; //når vi leser fra y er gammel verdi overskrevet 1. Se oppgaven utenfra: Hva skal være inndata (input) til programmet? Hvordan skal programmet få tak i inndataene? Hva skal være utdata (output) fra programmet? Hvordan skal utdataene presenteres for brukeren? Logisk feil: java Eksempel3 x=4 og y=4 System.out.println ("x=" + x + " og y=" + y); 27 2. Hvordan transformere inndata til utdata? Hvordan skal dataene representeres (lagres)? Spesifiser en sekvens av trinn der: hvert trinn gjør en enkel ting med dataene hvert trinn er enkelt å programmere 3. Skriv programkode (og test løsningen) 28

Eksempel: Regn ut summen av to tall Programskisse Pseudokode Inndata: I dette eksempelet bruker vi konstantene 123456 og 99999, men for større nytte ville vi latt brukeren skrive inn verdien som skal adderes Utdata er summen av tallene vi må altså addere dem Vi ønsker å presentere resultatet sammen med de to adderte tallene på brukerens skjerm: class Addering { public static void main (String[] args) { <deklarasjoner <sett tall1 lik 123456 <sett tall2 lik 99999 <regn ut summen <skriv ut Summen av <tall1 og <tall2 er <sum Tegn gjerne variablene og følg med på verdiene de får når du utfører handlingene en etter en simuler maskinen! 29 30 Ferdig program Oppgave class Addering { public static void main (String[] args) { int tall1, tall2, sum; Lag et program der du deklarerer og gir verdi til en heltallsvariabel og en logisk variabel. Eksperimenter med ulike verdier i disse når programmet er ferdig skrevet. tall1 = 123456; tall2 = 99999; Programmet skal teste verdien i heltallsvariabelen, og skrive ut riktig ukedag hvis tallet er mellom 1 og 7 (1= mandag etc). Hvis tallet er under 1 eller over 7, skrives det ut en beskjed om dette. sum = tall1 + tall2; System.out.println ("Summen av " + tall1 + " og " + tall2 + " er: " + sum); Hvis tallet er 3 skal det i tillegg testes om verdien i den logiske variabelen er true i så fall skrives setningen En ekstra bra onsdag ut i tillegg til bare ukedagen. NB: Test programmet ved å kjøre det! Her får du testet if-else i flere ledd, samt en if-setning inni en annen. 31 32