Leksjon 3. Kontrollstrukturer



Like dokumenter
Leksjon 3. Kontrollstrukturer

Leksjon 3. Kontrollstrukturer

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

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

Leksjon 2. Setninger og uttrykk

Ukeoppgaver fra kapittel 3 & 4

Introduksjon til beslutningsstrukturer

Leksjon 2. Setninger og uttrykk

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

Leksjon 2. Setninger og uttrykk

[Kurssidene] [ ABI - fagsider bibin ] Michael Preminger (michaelp@hio.no) 07/ Vi holder orden på verdier med hjelp av variabler

Emnekode: LV121A Dato: Alle skrevne og trykte hjelpemidler

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

Programmering Høst 2017

Leksjon 7. Filer og unntak

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

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

Ta kontakt i pausen. Viktig at vi kommer i gang med dette arbeidet!

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

INF1000 undervisningen INF 1000 høsten 2011 Uke september

Leksjon 6. Objekt. Evt. importsetninger. public class Klasse { Konstruktør. Objektmetoder. Innkapsling (private): set-og get-metoder

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

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

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

Leksjon 4. Metoder. Program, klasse og metode

6108 Programmering i Java. Leksjon 4. Metoder. Roy M. Istad 2015

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.

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

MAT1030 Diskret matematikk

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

TDT4102 Prosedyre og Objektorientert programmering Vår 2014

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

Kapittel 1. Potensregning

OPPGAVE 5b og 8b Java Kode

Del 1 En oversikt over C-programmering

Læringsmål og pensum. Oversikt

TDT4102 Prosedyre og Objektorientert programmering Vår 2015

EKSAMENSFORSIDE Skriftlig eksamen med tilsyn

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

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

Eksempel: Body Mass Index (BMI)

Betinget eksekvering og logiske tester i shell

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

TDT4105 Informasjonsteknologi, grunnkurs. Introduksjon til programmering i Matlab. Rune Sætre / Anders Christensen {satre, anders}@idi.ntnu.

Dagens tema: 12 gode råd for en kompilatorskriver. Sjekking av navn. Lagring av navn. Hvordan finne et navn?

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

Kapittel 4: Logikk (predikatlogikk)

TDT4102 Prosedyre og Objektorientert programmering Vår 2014

Løsningsforslag Øving 7

Lynkurs i shellprogrammering under Linux

MAT1030 Forelesning 30

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

Shellscripting I. Innhold

HØGSKOLEN I SØR-TRØNDELAG

while-økker while-løkker gjentar instruksjonene så lenge en betingelse er oppfylt Eksempel 1: en enkel while-løkke

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

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

Oppgave 1 (Programtolkning) INF1000 Eksamen V06. Oppgave 1 (Programtolkning) Oppgave 1 (Programtolkning)

Forelesning 9 mandag den 15. september

Digitale systemer II

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.

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

Hefte med problemløsingsoppgaver. Ukas nøtt 2008/2009. Tallev Omtveit Nordre Modum ungdomsskole

Fasit - Oppgaveseminar 1

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

PRIMTALL FRA A TIL Å

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

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

MAT1030 Diskret matematikk

TDT4102 Prosedyreog objektorientert programmering Vår 2016

Algoritmer og Datastrukturer

TEMA: Kommunikasjon med Bruker INF1000 Plenumsgruppe 1, formatert utskrift

Forelesning inf Java 3

KAPITTEL 3 Litt logikk og noen andre småting

Under noen av oppgavene har jeg lagt inn et hint til hvordan dere kan går frem for å løse dem! Send meg en mail om dere finner noen feil!

TDT4102 Prosedyre og Objektorientert programmering Vår 2014

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

6108 Programmering i Java. Leksjon 5. Tabeller. Roy M. Istad 2015

VEILEDNING BRUK AV NY LØSNING FOR PERIODISERING AV BUDSJETTER I MACONOMY

MAT1030 Forelesning 7

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

Forelesning inf Java 3

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

Algoritmer og datastrukturer Kapittel 9 - Delkapittel 9.1

Transkript:

6108 Programmering i Java Leksjon 3 Kontrollstrukturer Del 1: Valg Roy M. Istad 2015 Utfør av et program Programflyt så langt: start setning setning setning setning slutt Sekvensielt: Alle setninger utføres, den ene etter den andre, og ingen blir hoppet over. Programflyt fra nå av: start setning(er) Valg setning(er) setning(er) Gjentak (løkke) setning(er) setning(er) slutt 1

Valgsetninger if setning: Valg mellom to alternativ Enten så er det en mann, eller så er det en kvinne Enten blir det gitt rabatt, eller så er det fullpris Enten er man for ung, eller så er alderen høy nok switch setning: Valg mellom flere alternativ Til gitt poengsum Velg prestasjonsomtale Til gitt dagnummer Velg ukedag (dagnavn) Til gitt tegn Velg kategori (vokal, konsonant, siffer, skilletegn, ) 6108 Programmering i Java Leksjon 3 Del 1 side 3 if setning med grein 9 a) tall b) 0 tall programflyt Eksempel på kode: int tall = // innlest fra brukeren if ( tall > 0 ) showmessagedialog(null, tall +" er positivt!"); // NB! Da er altså tall <= 0 showmessagedialog(null, tall +" er ikke positivt!"); grein Utskrift i dialogvindu: a) 9 er positivt! b) 0 er ikke positivt! 6108 Programmering i Java Leksjon 3 Del 1 side 4 2

if setning uten grein int tall = parseint( showinputdialog("tall:") ); String melding = "ikke positivt!"; if ( tall > 0 ) melding = "positivt!"; Alternativ String melding = "positivt!"; if ( tall <= 0 ) melding = "ikke " + melding; showmessagedialog(null, "Tallet " + tall + " er " + melding); Det må altså ikke være noen alternativ handling, f.eks.: : // kun overtidstimer gir overtidsbetaling double overbetaling = 0; if ( overtid > 0 ) { // beregn overtidsbetaling : // fortsetter uten noen -grein programflyt Om ikke betingn er sann så går bare programmet videre 6108 Programmering i Java Leksjon 3 Del 1 side 5 if setning: Viktige begrep Beting: Uttrykk, ofte sammenlikning, som beregnes til sant (true) eller usant (false). Grein: Tilslagsmulighet i en valgsetning. Består enten av enkelt setning, eller en blokk. Blokk: Setningsliste, en eller flere setninger, avgrenset mellom krøllparenteser { Obs! Det er valgfritt med { dersom det er kun én setning i en blokk. Grein if ( beting ) { setning a; setning b; setning c; { setning d; Blokk 6108 Programmering i Java Leksjon 3 Del 1 side 6 3

Sammenlikninger: tall < 0 alder >= 18 antall == 10... Sammenlikningsoperatorer: Betingr, logiske uttrykk < <= >= > ==!= Mindre enn Mindre enn eller lik Større enn eller lik Større enn Er lik Ulik, forskjellig fra Logiske variabler (ny datatype: boolean) kan stå i en beting: boolean myndig = false, student = true; 1) if ( myndig ) evt. 2) if ( student ) Sammensatte uttrykk (jfr. vanlig/matematisk oppsett: 18 alder 67): 18 <= alder && alder <= 67 Logiske operatorer: &&! og eller ikke true/false? 6108 Programmering i Java Leksjon 3 Del 1 side 7 Erstatt følgende (type) if setning: Logisk tilordning boolean myndig; if ( alder >= 18 ) myndig = true; myndig = false; 21 alder Med følgende (type) tilordning: boolean myndig = (alder >= 18); Obs! Parentesene på høyresiden er overflødige, men bidrar til å gjøre hele tilordningen lettere å lese: boolean jubileum = (ansattår == == 25; 25); 6108 Programmering i Java Leksjon 3 Del 1 side 8 4

Sammensatte logiske uttrykk La P og Q være to logiske uttrykk (begge kan altså være true/false). Verdien til sammensetningen av logiske uttrykk kan vises i en «sannhetsverditabell» 6108 Programmering i Java Leksjon 3 Del 1 side 9 Gitt beting: if ( x<10 && y==4 ) Beregning av sannhetsverdi: Beregning av sammensatte uttrykk x<10 y==4 Her ser vi at x har verdien 7 og y har verdien 5 6108 Programmering i Java Leksjon 3 Del 1 side 10 5

Operatorprioritet Dvs. Rekkefølge for beregning. Høyere oppe, høyere prioritet Når to operatorer har samme styrke, blir de utført fra venstre mot høyre. 6 F.eks: svar = 7+5*4/3-2; // svar = 11 Operatorprioritet er Javas egen måte å sette parenteser på. F.eks. gir disse to uttrykkene samme resultat: x+3 < y*2 z > 4 && x == z ((x+3)<(y*2)) ((z>4) && (x==z)) Vi bruker parenteser for å overstyre operatorprioritet i en beregning eller for å øke lesbarheten av koden. 6108 Programmering i Java Leksjon 3 Del 1 side 11 Eksempel: Antall dager i en måned. : // innlesing av år og måned (mnd) fra brukeren int antdager = 31; // Flest måneder har 31 dager Nøstet if setning Dvs. if setning inne i if setning if ( mnd == 4 mnd == 6 mnd == 9 mnd == 11 ) antdager = 30; { // Hva med februar? if (mnd == 2) { if (( år%4 == 0 && år%100!= 0) (år%400 == 0)) antdager = 29; // skuddår antdager = 28; // ikke skuddår 2016:4 = 504 2016 0 2016:100 = 20 2000 16!= 0 Utskrift Måned 2 i år 2016 har 29 dager. String uttekst = "Måned "+ mnd +" i år "+ år +" har "+ antdager +" dager."; : 6108 Programmering i Java Leksjon 3 Del 1 side 12 6

Eksempel: Karakterbeskriv. Tallkarakter Bokstavkarakter og tekstlig beskriv Nøstet if setning String kartxt = showinputdialog("tallkarakter :"); int tallkarakter = parseint(kartxt); String karakter; // Tekst som skal få verdi... if ( tallkarakter == 5 ) karakter = "A - Fremragende"; // ikke 5 altså... if ( tallkarakter == 4 ) karakter = "B - Meget god"; if ( tallkarakter == 3 ) karakter = "C - God"; // fortsetter slik via 2, 1 og 0... Standard oppsett Koden krever stor plass og kan være vanskelig å lese/oppfatte 6108 Programmering i Java Leksjon 3 Del 1 side 13 Eksempel: Karakterbeskriv. Flervalg: "if stige" String kartxt = showinputdialog("tallkarakter :"); int tallkarakter = parseint(kartxt); String karakter = tallkarakter + " tilsvarer: "; if ( tallkarakter == 5 ) karakter += "A - Fremragende"; if ( tallkarakter == 4 ) karakter += "B - Meget god"; if ( tallkarakter == 3 ) karakter += "C - God"; if ( tallkarakter == 2 ) karakter += "D - Nokså god"; if ( tallkarakter == 1 ) karakter += "E - Tilstrekkelig"; if ( tallkarakter == 0 ) karakter += "F - Ikke bestått" karakter += "Ugyldig tallkarakter!"; showmessagedialog(null, karakter); 6108 Programmering i Java Leksjon 3 Del 1 side 14 7

Flervalg: switch setning String kartxt = showinputdialog("tallkarakter :"); int tallkarakter = parseint(kartxt); String karakter = tallkarakter + " tilsvarer: "; switch ( tallkarakter ) { case 5: karakter += "A - Fremragende"; case 4: karakter += "B - Meget god"; case 3: karakter += "C - God"; case 2: karakter += "D - Nokså god"; case 1: karakter += "E - Tilstrekkelig"; case 0: karakter += "F - Ikke bestått"; default: karakter += "Ugyldig tallkarakter"; showmessagedialog(null, karakter); 6108 Programmering i Java Leksjon 3 Del 1 side 15 Eksempel: Resultatbeskriv : // tall har fått verdi switch ( tall ) { : case 5: case 4: case 3: case 2: case 1: case 0: Oppsett av switch setning tall -> scoretxt Variabel i datatypen int, char eller boolean, eller et utrykk med verdi i en av disse datatypene. // Blir flyttet til neste verdi scoretxt = "Veldig bra!"; scoretxt = "Middels..."; // Blir flyttet til neste verdi scoretxt = "Dårlig resultat"; scoretxt = "Ikke bestått"; default: scoretxt = "Ugyldig score!"; Tilslagsmarkører i den aktuelle datatypen. Obs! Verdiene 5 og 4 gir samme resultat. Det gjør også 2 og 1. Fanger opp alle andre verdier enn dem som er listet som tilslagsmarkører. 6108 Programmering i Java Leksjon 3 Del 1 side 16 8

6108 Programmering i Java Slutt på leksjon 3 Del 1 9