Kursus 02199: Programmering. Kontrol af programudførelsen. afsnit 3.1-3.5. if (indkomst > 267000) topskat = (indkomst-267000) * 0.



Relaterede dokumenter
Integer.parseInt(args[0]) konverterer tegnstreng (f.eks. "10") til heltal (10). if (udtryk) else

Udsagnslogik. Anker Mørk Thomsen. 6. december 2013

Noter til C# Programmering Selektion

Programmering for begyndere Lektion 2. Opsamling mm

Forelæsning Uge 2 Mandag

Programmering i C. Lektion december 2008

BOSK F2011, 1. del: Udsagnslogik

Kapitel 3 Betinget logik i C#

Noter til C# Programmering Iteration

Baggrundsnote om logiske operatorer

Boolsk algebra For IT studerende

Boolsk algebra For IT studerende

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 2

5. Kontrolstrukturer - Motivation og Oversigt

Python programmering. Per Tøfting. MacFest

Skriftlig eksamen i Datalogi

LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam) { int wmid, wmevent; programmering med

Programmering. Det rent og skært nødvendige, det elementært nødvendige! Morten Dam Jørgensen

BOSK F2012, 1. del: Prædikatslogik

Kursus i OOP og Java. Kursus i Objektorienteret programmering i Java

AAU, Programmering i Java Intern skriftlig prøve 18. maj 2007

Kursusarbejde 3 Grundlæggende Programmering

Ugeseddel 4 1. marts - 8. marts

Elementær Matematik. Mængder og udsagn

Bits, bit operationer, integers og floating point

Kursus 02199: Programmering. Lidt om forelæseren. Velkommen til. Praktisk information: kursusaktiviteter. Praktisk information: forelæsninger

Opgaven fortsat. Opfølgning på Opgave 2 og Use Cases. Opgaven. Trin 1: Væsentlige begreber. Resultatliste: 100 bryst, herrer

#AlleKanKode. Lektion 2 - Konstanter og Variabler

//Udskriver System.out.println("Hej " + ditfornavn + " " + ditefternavn + "."); System.out.println("Du er " + dinalder + " aar gammel!

Start på Arduino og programmering

Klasse 1.4 Michael Jokil

Java Programmering. En bog for begyndere. Skrevet af Henrik Kressner

Fundamentale sprogbegreber

Listen over reserverede ord er meget lang, men de væsentligste vil jeg beskrive her i denne artikel:

Programmering. Udvidet Programmering. Kurserne. Kurset: programmering i sproget Java. Lærerne: Morten Larsen og Peter Sestoft

DANMARKS TEKNISKE UNIVERSITET

JavaScript. nedarvning.

Kapitel 4 Løkker i C#

Klasser. Grundlæggende Programmering med Projekt. Peter Sestoft Tirsdag 2. september (Tak til Jakob Bardram for nogle slides) Dagens begreber

Virkefeltsregler i Java

Mircobit Kursus Lektion 4 (Du skal her vælge Lets Code Og herefter Block Editor.)

Spil Master Mind. Indledning.

Kursusarbejde 2 Grundlæggende Programmering

Programmering i C. Kurt Nørmark 2005 Institut for Datalogi, Aalborg Universitet. Sammendrag

Tree klassen fra sidste forelæsning

Sproget Six. Til brug i rapportopgaven på kurset Oversættere. Vinter Abstract

Tabelbegrebet. Klassediagrammer (III) Oversigt. Anvendelse af Tabeller. Tabeller og qualified associations

Induktive og rekursive definitioner

Hashing og hashtabeller

Lær Python dag 1 - modul 1

Undervisningsbeskrivelse

Løsningsforslag Skriftlig eksamen 3. januar 2013

Søgning og Sortering. Søgning og Sortering. Søgning. Linæer søgning

Databaseadgang fra Java

Transkript:

Kursus 02199: Programmering afsnit 3.1-3.5 Anne Haxthausen IMM, DTU 1. Kontrol af programudførn (afsnit 3.1) 2. Valg-sætninger (if og switch) (afsnit 3.2 og 3.3) 3. Bloksætninger (afsnit 3.2) 4. Logiske udtryk (afsnit 3.2, 3.4) 5. Flere operatorer (læs selv afsnit 3.5) IMM/DTU 02199 Programmering, efterår 2001 Side 3-1 Kontrol af programudførn Med mindre andet angives, udføres et program lineært: Java udfører sætningerne i main metoden en efter en Udførn kan styres v.h.a. to specielle sætningstyper: betingede sætninger (valg mellem en eller flere sætninger): if- og switch. løkker (gentag af sætninger): while, do og for. styringen foregår v.h.a. logiske (Boolske) udtryk: ved betingr angiver udtrykket hvilken gren, der skal udføres. ved løkker angives slutbetingn. IMM/DTU 02199 Programmering, efterår 2001 Side 3-2 if-sætninger if-sætninger er god i situationer, hvor man kan sige: hvis... så... double topskat = 0.0; if (indkomst > 267000) topskat = (indkomst-267000) * 0.15; IMM/DTU 02199 Programmering, efterår 2001 Side 3-3 if--sætninger if--sætninger er god i situationer, hvor man kan sige: hvis... så... ellers... double topskat; if (indkomst > 267000) topskat = (indkomst-267000) * 0.15; topskat = 0.0; IMM/DTU 02199 Programmering, efterår 2001 Side 3-4

if--sætninger Generelt format: if (udtryk) sætning1 sætning2 Virkning: (1) beregn værdien af udtryk (2) hvis true så udfør sætning1, ellers udfør sætning2 IMM/DTU 02199 Programmering, efterår 2001 Side 3-5 Blokke En række sætninger kan grupperes til én sætning, en såkaldt blok, med... : En blok kan forekomme hvor som helst en sætning kan forekomme. Blokke er nyttige, når flere ting skal udføres på baggrund af et valg. if (indkomst > 267000) topskat = (indkomst - 267000) * 0.15; topskat = 0.0; System.out.println("Bedre held ved " + "næste lønforhandling"); IMM/DTU 02199 Programmering, efterår 2001 Side 3-6 Blokke og if- Problem: binder til sidste uafsluttede if. if (x==3) if (y < 10) System.out.println("gren A"); System.out.println("gren B"); Løsning: if (x==3) if (y < 10) System.out.println("gren A"); System.out.println("gren B"); Ved brug af if / if- inden i en anden if- bør man bruge tuborg-klammer til at fremhæve sammenhængen. Hellere for mange tuborg-klammer end logiske fejl! IMM/DTU 02199 Programmering, efterår 2001 Side 3-7 International karaktergivning Internationalt er man blevet enig om følgende karakterskala: Score i % Karakter 95 100 A 90 94 A- 87 89 B+ 83 86 B 80 82 B- 67 69 D+...... 0 59 F Opgave: Lav et program der omregner en procentscore til en karakter. IMM/DTU 02199 Programmering, efterår 2001 Side 3-8

Karaktergivning med nestet if- int score; // 0-100 String grade; // A, A-,..., D-, F if (score >= 95) grade = "A"; if (score >= 90) grade = "A-"; if (score >= 87) grade = "B+"; // o.s.v.... IMM/DTU 02199 Programmering, efterår 2001 Side 3-9 switch-sætningen switch er god, når der ønskes mere end to grene. IMM/DTU 02199 Programmering, efterår 2001 Side 3-10 Karaktergivning med switch int score; // 0-100 String grade; // A, A-,..., D-, F switch (score) case 100: case 99: case 98: case 97: case 96: case 95: grade = "A"; break; case 94: case 93: case 92: case 91: case 90: grade = "A-"; break; // o.s.v. default: // 0-59 grade = "F"; IMM/DTU 02199 Programmering, efterår 2001 Side 3-11 Logiske udtryk Vi har tidligere set eksempler på udtryk der angiver numeriske værdier (af type int, double,...) tegnstrenge (af typen String) Logiske udtryk angiver sandhedsværdier (af typen boolean). Logiske udtryk kan bl.a. være: true og false sammenligningsoperatorer påtrykt udtryk af samme type (f.eks. indkomst > 267000) logiske operatorer påtrykt logiske udtryk (f.eks.!fundet && (x < 10) ) IMM/DTU 02199 Programmering, efterår 2001 Side 3-12

Sammenligningsoperatorer og deres præcedens Operator Betydning Eksempel < Mindre end x < 60 <= Mindre end eller lig med x <= 60 > Større end x > 60 >= Større end eller lig med x >= 60 == Lig med x == 60!= Forskellig fra x!= 60 Resultattypen er boolean, dvs. resultatet er true eller false. De aritmetiske operatorer *, /, %, +, - binder alle stærkere end <, <=, >, >=. Sammenligningsoperatorerne <, <=, >, >= binder alle stærkere end == og!=. IMM/DTU 02199 Programmering, efterår 2001 Side 3-13 Hvad er resultatet af følgende logiske udtryk? Lad x = 2 og y = 4. Logisk udtryk Resultatværdi false true true == false x!= y x < 3 + y y < x + 3 (x + y > 3) == false false!= x < 3 x == y == false IMM/DTU 02199 Programmering, efterår 2001 Side 3-14 Sammenligning af tegn To tegn kan som tal sammenlignes: char ch1= æ, ch2 = ø ; if (ch1 < ch2) System.out.println(ch1 + " er mindre end " + ch2); System.out.println(ch1 + " er større end " + ch2); med følgende resultat ved kørsel: æ er mindre end ø IMM/DTU 02199 Programmering, efterår 2001 Side 3-15 Sammenligning af strenge Strenge skal sammelignes v.h.a. metoderne equals og compareto: String str1="første", str2="anden"; System.out.println("Er str1 og str2 ens? " + str1.equals(str2)); if (str2.compareto(str1) < 0) System.out.println("str1 kommer efter str2"); if (str2.compareto(str1) > 0) System.out.println("str2 kommer efter str1"); giver Er str1 og str2 ens? false str1 kommer efter str2 IMM/DTU 02199 Programmering, efterår 2001 Side 3-16

Sammenligning af kommatal To kommatal i en datamat er kun ens, hvis alle bits i deres interne repræsentation er ens. Ofte er man i situationer, hvor tallene bare skal være tilstrækkeligt tæt på hinanden: double x=3.00002, y=3.00001; double v=3.02, w=3.01; final double TOLERANCE = 1E-3; if (Math.abs(x-y) < TOLERANCE) System.out.println("x og y er næsten ens"); if (Math.abs(v-w) > TOLERANCE) System.out.println("men det er v og w ikke!"); giver x og y er næsten ens men det er v og w ikke! IMM/DTU 02199 Programmering, efterår 2001 Side 3-17 Logiske operatorer og deres præcedens Operator Betydning Eksempel! Ikke (Negation)!(x == 60) && Og (Konjunktion) 0 <= x && x < 60 Eller (Disjunktion) x < 0 x >= 60 Argumenttyperne er boolean og resultattypen er boolean. Operatoren! binder stærkere end && som binder stærkere end.! binder også stærkere end sammenligningsoperatorerne og de aritmetiske operatorer. && og binder svagere end sammenligningsoperatorerne og de aritmetiske operatorer. IMM/DTU 02199 Programmering, efterår 2001 Side 3-18 Sandhedstabeller for de logiske operatorer: a! a false true true false a b a && b a b false false false false false true false true true false false true true true true true Udtrykket udregnes fra venstre mod højre. Operatorerne && og udregner ikke mere end højst nødvendigt: Hvis udtryk1 er falsk i udtryk1 && udtryk2 så udregnes udtryk2 ikke. Hvis udtryk1 er sand i udtryk1 udtryk2 så udregnes udtryk2 ikke. IMM/DTU 02199 Programmering, efterår 2001 Side 3-19 Hvad er resultatet af følgende logiske udtryk? Lad x = 2 og y = 4. Logisk udtryk Resultatværdi! false! true! true == false! (true == false) true && false false true x + y > 3 && x < y x + y == 3 x < 4 x < y && (3*4 == 2*6-1*2+2) ==!(3<x) IMM/DTU 02199 Programmering, efterår 2001 Side 3-20

Flere operatorer Givet int count = 0; count ++; svarer til count = count + 1; Læs selv mere om dette i afsnit 3.5. Råd: øg læsbarheden skriv det fulde udtryk! IMM/DTU 02199 Programmering, efterår 2001 Side 3-21 Husk til næste tirsdag (25/9) Læs afsnit 3.6-3.9. Forbered opgaverne. Afhent cd, hvis du har bestilt en. IMM/DTU 02199 Programmering, efterår 2001 Side 3-22