Leksjon 3. Kontrollstrukturer

Like dokumenter
Leksjon 3. Kontrollstrukturer

Leksjon 3. Kontrollstrukturer

Leksjon 3. Kontrollstrukturer

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

Leksjon 2. Setninger og uttrykk

Leksjon 2. Setninger og uttrykk

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

Leksjon 2. Setninger og uttrykk

Programmering Høst 2017

Leksjon 2. Setninger og uttrykk

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

INF 1000 høsten 2011 Uke september

INF1000 undervisningen INF 1000 høsten 2011 Uke september

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.

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

Del 1 En oversikt over C-programmering

I dag INF1000 (Uke 4) Mer om forgreninger, While-løkker. Tre måter å lese fra terminal. Tre måter å lese fra terminal.

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

Leksjon 7. Filer og unntak

Eksempel: Body Mass Index (BMI)

Leksjon 4. Metoder. Program, klasse og metode

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

Læringsmål og pensum. Oversikt

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

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

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

INF1000 : Forelesning 3

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

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

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

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

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

EKSAMENSFORSIDE Skriftlig eksamen med tilsyn

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

Forelesning inf Java 3

TDT4110 Informasjonsteknologi grunnkurs: Uke 43: Datastrukturer (kap. 8)

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 3

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

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

Kapittel 1 En oversikt over C-språket

TDT4105 Informasjonsteknologi grunnkurs: Uke 43: Datastrukturer (kap. 8)

Rekker (eng: series, summations)

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

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

TEMA: Kommunikasjon med Bruker INF1000 Plenumsgruppe 1, formatert utskrift

Feilmeldinger, brukerinput og kontrollflyt

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

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

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

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

Innhold Forst a program

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

C# (.Net) Tema: Loops (Løkker) Leksjon 7 Kap 18

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

Hva er tabeller? Tabell (array): Sammensetning av verdier av samme datatype, under ett navn i hurtigminnet.

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

Rekker (eng: series, summations)

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

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

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

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

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

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.

Betinget eksekvering og logiske tester i shell

TDT4110 IT Grunnkurs Høst 2015

Del 4 Noen spesielle C-elementer

1. Kontrollstrukturer og løkker

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

Oppsummering fra sist

Innhold Forstå program iii

JAVA CHRISTOFFER MARTINSEN

Når en bruker skriver sitt navn ("Ole") i et form-element med name="fornavn" som attributt. klikker på submit-knappen

EKSAMEN 6108/6108N PROGRAMMERING I JAVA Alt trykt og skriftlig materiale.

Blokker og metoder INF1000 (Uke 6) Metoder

Ekvivalente utsagn. Eksempler: Tautologi : p V p Selvmotsigelse: p Λ p

Introduksjon til beslutningsstrukturer

Utvikling av dynamiske nettsteder med PHP og databaser, høsten 2006

Et utsagn (eng: proposition) er en erklærende setning som enten er sann eller usann. Vi kaller det gjerne en påstand.

Notat 2, ST Sammensatte uttrykk. 27. januar 2006

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

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Et utsagn (eng: proposition) er en erklærende setning som enten er sann eller usann. Vi kaller det gjerne en påstand.

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

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

Norsk informatikkolympiade runde

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

INF 1000 høsten 2011 Uke 3 6. september

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

Øvingsforelesning 1 Python (TDT4110)

Oblig 4 Undervisningshefte i grunnleggende JavaScript programmering

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

INF1000 oppgaver til uke 38 (17 sep 23 sep)

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

switch: - terminal-i/o (bruker-i/o)

INF1000 : Forelesning 1 (del 2)

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

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 programflyt 9 a) tall b) 0 tall 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

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

Sammenlikninger: Betingr, logiske uttrykk tall < 0 alder >= 18 antall == 10... true/false? Sammenlikningsoperatorer: < <= >= > ==!= 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 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

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

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

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

Flervalg: switch setning String kartxt = showinputdialog("tallkarakter :"); int tallkarakter = parseint(kartxt); String karakter = tallkarakter + " tilsvarer: "; switch ( tallkarakter ) { case 5: karakter += "A - Fremragende"; break; case 4: karakter += "B - Meget god"; break; case 3: karakter += "C - God"; break; case 2: karakter += "D - Nokså god"; break; case 1: karakter += "E - Tilstrekkelig"; break; case 0: karakter += "F - Ikke bestått"; break; default: karakter += "Ugyldig tallkarakter"; break; } showmessagedialog(null, karakter); 6108 Programmering i Java Leksjon 3 Del 1 side 15

Oppsett av switch setning Eksempel: Resultatbeskriv tall -> scoretxt Variabel i datatypen int, char eller boolean, : // tall har fått verdi eller et utrykk med verdi i en av disse datatypene. switch ( tall ) { case 5: case 4: case 3: case 2: case 1: case 0: default: scoretxt = "Ugyldig score!"; } : // Blir flyttet til neste verdi scoretxt = "Veldig bra!"; break; scoretxt = "Middels..."; break; // Blir flyttet til neste verdi scoretxt = "Dårlig resultat"; break; scoretxt = "Ikke bestått"; break; 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

6108 Programmering i Java Slutt på leksjon 3 Del 1