Villkor och tester. Utförande satser bygger upp metoderna, man brukar finindela detta i: sekvenser. Ett program består i princip av: selektioner (val)

Relevanta dokument
Klassdeklaration. Metoddeklaration. Parameteröverföring

4 13 / %.; 8 </" '': " / //&' " " ' * TelefonKostnad +,-%&. #!" $% " &' . > / ' 5 /' * 13/ &' static Math 1+" &'/ % 12 "" static "' * 1 /") %& &

Fält av referenser. Konstruktorerna används för att skapa Bilar och Trafikljus.

Föreläsning 3: Booleans, if, switch

Föreläsning 4. Val, boolska värden, läsbarhet, osv

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program

Felhantering. Andra brott mot språkets regler. Man kan också i programmet bryta mot ett antal olika regler som gäller. Exempelvis:

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 12

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program

Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek

Föreläsning 3-4 Innehåll

Programstruktur och terminologi. Programmet producerar följande utskrift i terminalfönstret: Ett Javaprogram består av en eller flera klasser

Föreläsning 1 & 2 INTRODUKTION

6.5 Spelserien Gissa tal

SMD 134 Objektorienterad programmering

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

Dagens program. Programmeringsteknik och Matlab. Viktiga datum. Ett första exempel. Programmall, vad behöver vi i ett javaprogram?

Mer källkod. Styrstrukturer Val Slingor Operatorer Källkodsexempel med minne. Erik Forslin. Rum 1445, plan 4 på Nada

Objektorienterad Programmering (TDDC77)

TDIU01 - Programmering i C++, grundkurs

I Skapa Hej.java och skriv programmet. I Kompilera med javac Hej.java. I Rätta fel och repetera tills du lyckas kompilera ditt program

Tentamen. Lösningsförslag

System.out.println("Jaså du har "+ antalhusdjur+ " husdjur"); if ( antalhusdjur > 5 ) System.out.println("Oj det var många);

Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C.

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Checklista. Föreläsning 1-2 Innehåll. Programmering.

TDIU01 - Programmering i C++, grundkurs

Föreläsning 2. Täcker material från lektion 1, 2, 3 och 4:

ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet

Föreläsning 3. Iteration while-satsen

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod

Iteration while-satsen

Programmering i C, 7,5 hp

JAVAUTVECKLING LEKTION 4

OOP Objekt-orienterad programmering

2D1311 Programmeringsteknik för Bio1 och Bio2, vt 2003 Fiktivt prov På flervalsfrågorna är endast ett svar rätt om inget annat anges i frågan! Det rik

JAVA Mer om klasser och objektorientering

Variabler som hör till enskilda objekt. Deklareras på översta nivån i klassen och i regel som private.

Föreläsning 1 & 2 INTRODUKTION

TENTAMEN OOP

Programmering A. Johan Eliasson

Tentamen i Programmeringsteknik I,, KandMa/Fy,

Hej Då, Karel! Programmering. Vårt första Javaprogram. hh.se/db2004. Java. Grundtyper, variabler och arrayer

Variabler och konstanter

Föreläsning 3. Iteration. while-satsen for-satsen do-satsen

OOP Objekt-orienterad programmering

Föreläsning 5&6 LOGISKA VARIABLER; IMPLEMENTERA KLASSER; MER ALGORITMER

Objektorienterad programmering i Java

1 Uppgift 1. a) Skapar ett Company-objekt med hjälp av den överlagrade konstruktorn. Du kan själv välja värden på instansvariablerna.

Lösningsförslag: Instuderingsfrågor, del A

Parameteröverföring. Exempel. Exempel. Metodkropp

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Om att lära sig programmera. Föreläsning 1-2 Innehåll.

(Man brukar säga att) Java är... Denna föreläsning. Kompilering av Java. Historik: Java. enkelt. baserat på C/C++ Allmänt om Java

Föreläsning REPETITION & EXTENTA

TENTAMEN OOP

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

Kapitel 6. Hakparenteser fšr att ange index MŒnga všrden av samma typ

Introduktion till Datalogi DD1339. Föreläsning 2 22 sept 2014

Programmeringsteknik och Matlab. Dagens program. Viktiga datum. Repetitionsexempel. Repetition av if/else, for, while och Scanner

Outline. For. I istället för att följa det normala ordningen, man ändra den. I i Java får man inte göra hopp hur som helst

Tentamen på kursen DA7351, Programmering , kl Malmö högskola Teknik och samhälle. DA7351, Programmering

Programmering för språkteknologer I, VT2012. Rum

Examination i. PROGRAMMERINGSTEKNIK F1/TM1 TIN212 (Dugga) Dag: Onsdag Datum: Tid: (OBS 3 tim) Rum: V

Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList.

Objektorienterad Programmering (TDDC77)

Föreläsning 2 Programmeringsteknik och C DD1316. Mikael Djurfeldt

F4. programmeringsteknik och Matlab

Exempel på ett litet Ada-program

Programmering för språkteknologer II, HT2011. Rum

LÖSNINGSFÖRSLAG TENTAMEN

JavaScript del 3 If, Operatorer och Confirm

JAVAUTVECKLING LEKTION 3

Föreläsning 3: Typomvandling, villkor och val, samt textsträngar

LyckaTill önskar Anna

C++ - En introduktion

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner

Introduktion till Datalogi DD1339. Föreläsning 3 29 sept 2014

Tentamen DE12, IMIT12, SYST12, ITEK11 (även öppen för övriga)

Algoritmanalys. Genomsnittligen behövs n/2 jämförelser vilket är proportionellt mot n, vi säger att vi har en O(n) algoritm.

Lite logik. Kap 6: Sid 2

Föreläsning 5-6 Innehåll. Exempel på program med objekt. Exempel: kvadratobjekt. Objekt. Skapa och använda objekt Skriva egna klasser

Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition.

Imperativ programmering. Föreläsning 2

Föreläsning 2 sept 05 (Onsdag v 36). DD Chapter 2.

Heltalsrepresentation. Fler byggstenar. Overflow och Underflow. TvŒ-komplement. FlyttalsvŠrden. Fyra heltalstyper. Tecken-bit

Objekt och referenser

2 b) Följande finns definierat: public class Spel String titel = "Spel"; Dice[] tärningar = new Dice[10]; tärningar[0] = new Dice("Röd"); tärningar[1]

Föreläsning 2. Variabler, tilldelning och kodblock{} if-satsen Logiska operatorer Andra operatorer Att programmera

String [] argv. Dagens Agenda. Mer om arrayer. Mer om arrayer forts. String [] argv. argv är variabelnamnet. Arrayer och Strängar fortsättning

F2 Datatyper och variabler. ID1004 Objektorienterad programmering Fredrik Kilander

Föreläsning 5-6 Innehåll

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Strukturdiagram. Styra. Algoritmer. Val

Föreläsning 2 Programmeringsteknik och C DD1316. Programmering. Programspråk

Bankkonto - övning. Övning 2 Skriv en metod, geträntan, som returnerar räntan.

TDDC77 Objektorienterad Programmering

Föreläsning 7. Nyckelord I Java. Uttryck. Uttryck, Operatorer Och Kontrollflöden

Lösningsförslag till tentamen

Tentamen , Introduktion till Java, dtaa98, dtea53

Transkript:

Villkor och tester Ett program består i princip av: Deklarationer som inför variabler, dvs namngivna minnesceller som används för att lagra data. int a; double radie=1.0, yta; double d = 4.5; String s = Nisse ; Utförande satser bygger upp metoderna, man brukar finindela detta i: sekvenser selektioner (val) repetitioner. Alla program byggs upp av dessa element (samt deklarationer förstås) Utförande satser som använder variablerna för att utföra beräkningar och annat arbete. Ex. tilldelning yta = Math.PI * radie * radie; Villkor och tester 29 September 2003 1 Villkor och tester 29 September 2003 2 En sekvens av satser utförs efter varandra tills man når slutet. Exempel på enkla satser som bygger upp sekvenser är: tilldelning, a = 2; utskrift, Std.out.println(a); inläsning, a = Std.in.readInt(); Selektioner (val) består i att datorn väljer ETT alternativ bland ett antal möjligheter. För att kunna skriva sådana måste vi kunna skriva testvillkor. Ett villkor är något som har ett logiskt värde (boolean), dvs sant eller falskt a är större än noll b är en stor bokstav c ligger i intervallet 0-10 månen är gjord av ost klockan är nio och solen skiner d har värdet 1 eller värdet 2 e har inte värdet 1 du är varken tjock eller ful Villkor och tester 29 September 2003 3 Villkor och tester 29 September 2003 4

Java bygger upp villkor m. h. a. logiska operatorer a > 2, Är a större än två? && och eller! inte relationsoperatorer == lika med!= skilt från > större än >= större än eller lika med < mindre än <= mindre än eller lika med a <= 1, Är a mindre eller lika med 1? b == 2, Är b lika med 2? c!= 2, Är c skilt från 2? Villkor som i matte skrivs som 0 a 10 Kan INTE skrivas 0 <= a <= 10 Java utför allt från vänster till höger och skulle först undersöka om 0<=a är sant. Sen skulle Java undersöka om svaret i denna jämför (sant eller falskt) är mindre än tio. Det går ju inte! Villkor och tester 29 September 2003 5 Villkor och tester 29 September 2003 6 För att kunna uttrycka mer komplicerade saker krävs logiska operatorer a >= 0 && a <= 10 a är större eller lika med noll OCH mindre eller lika med tio, dvs a ligger i intervallet [0,10]. Kan negeras:! (a >= 0 && a <= 10) a ligger INTE i intervallet [0,10]. Paranteser eftersom INTE har hög prioritet. kan också skrivas a < 0 a > 10 a är mindre än noll ELLER större än tio a >= 10 && a <= 20 a >=30 && a <= 40 a ligger i intervallet [10,20] eller i intervallet [30,40]. OCH görs alltid före ELLER (såvida vi inte sätter paranteser) a >= 10 && (a <= 20 a >=30) && a <= 40 Nu görs ELLER först. Det blir samma resultat just här men det gäller ju inte alltid. a < 0 && a > 10 a är mindre än noll OCH större än 10. Inte sant för några värden alls. a >= 0 a <=10 a är större än eller lika med noll ELLER mindre än eller lika med tio. Sant för alla värden. Villkor och tester 29 September 2003 7 Villkor och tester 29 September 2003 8

För att göra ett val i Java används satsen if eller satsen case. Syntax: if (villkor) sats eller if (villkor) sats annan-sats Den första formen betyder att om villkoret är sant så ska satsen utföras. Om villkoret inte är sant görs inget alls. I båda fallen fortsätter datorn sedan med nästa sats. Den andra formen betyder att om villkoret är sant så utförs den första satsen, om inte så görs den alternativa satsen i stället. I båda fallen fortsätter datorn med efterföljande sats. Villkor och tester 29 September 2003 9 Villkor och tester 29 September 2003 10 Std.out.println( Hur gammal är du? ); Om jag svarar med talet 5 så säger datorn Du är ung Om jag svarar med talet 47 så säger datorn inget alls Utbyggt exempel, raduppdelning och indragningar gör vi bara för att det ska bli lättare att läsa: Std.out.println( Hur gammal är du? ); Om jag nu svarar med talet 5 så säger datorn Du är ung Om jag svarar med talet 47 så säger datorn Du är gammal Villkor och tester 29 September 2003 11 Villkor och tester 29 September 2003 12

Mera utbyggt, jag vill skriva mera vid hög ålder: Std.out.println( Hur gammal är du? ); Std.out.println( Du har nog slutat skolan ); Om jag nu skriver talet 5 så säger datorn? om jag skriver talet 47 så säger datorn? De båda grenarna i if-satsen innehåller endast EN sats. Här utgör varje utskriftsats EN sats. Vi har alltså TVÅ satser i -grenen. Om vi sätter två satser i den första delen blir det språkligt fel, blir hemlös Std.out.println( Du går i skolan ); Men om vi sätter två satser i -grenen så blir det inte syntaxfel, bara logiskt fel. Den andra satsen hör INTE till if-satsen utan räknas som nästa sats. Std.out.println( Du har nog slutat skolan ); Villkor och tester 29 September 2003 13 Villkor och tester 29 September 2003 14 Satser kan grupperas med måsvingar, dvs { och. Om vi omger ett antal satser med dessa satsparanteser så räknas alltihopa som en sats. { Std.out.println( Du har nog slutat skolan ); Om du nu svarar med talet 5 så säger datorn Du är ung Om du svarar med talet 47 så säger datorn Du är gammal Du har nog slutat skolan En if-sats är ett tvåvägsval, du kan bara välja mellan två alternativ. Men en if-sats är en sats i Javas mening. Det betyder att de satser som ingår i villkoren mycket väl kan vara en if-sats. Då kan vi konstruera flervalssatser. import extra.*; public class Age3 { public static void main(string [] arg) { Std.out.println("Hur gammal är du?"); if (ålder < 7) Std.out.println("Går du på dagis?"); if (ålder >=7 && ålder < 18) Std.out.println("Du går nog i skolan"); if (ålder == 18) Std.out.println("Grattis! du får ta körkort!"); { Std.out.println("Du är gammal."); Std.out.println("Du har nog slutat skolan."); //slut på //slut main //slut class age3 Villkor och tester 29 September 2003 15 Villkor och tester 29 September 2003 16

kursa$ javac age3.java Hur gammal är du? 3 Går du på dagis? Hur gammal är du? 9 Du går nog i skolan Hur gammal är du? 18 Grattis! du får ta körkort! Hur gammal är du? 19 Du är gammal. Du har nog slutat skolan. Om vi återvänder till andragradsekvationen så kan vi bygga ut lösaren import extra.*; // // representera en andragradsekvation / / public class Equation { private double a, b, c; // koefficienterna // standardkonstruktor public Equation() { a = 1; // std ekvation b = -1; c = 0; // överlagrad konstruktor public Equation(double ap, double bp, double cp) { a = ap; b = bp; c = cp; // skriv ut din ekvation public void skrivut() { Std.out.println(a + "x^2 + " + b + "x" + " + " + c); // ändra din ekvation public void läsin() { Std.out.print("Ge koefficienterna: "); a = Std.in.readDouble(); b = Std.in.readDouble(); c = Std.in.readDouble(); Villkor och tester 29 September 2003 17 Villkor och tester 29 September 2003 18 // ta fram de två rötterna, skriv ut dem public void lös() { double d; double x1, x2; if (a == 0) Std.out.println( Ej lösbar ); { d = b*b - 4*a*c; if (d < 0) Std.out.println( Imaginära rötter ); { x1 = (-b + Math.sqrt(d))/(2*a); x2 = (-b - Math.sqrt(d))/(2*a); Std.out.println( "Rötterna är: " + x1 + "," + x2); public double hämtaa() { return a; public double hämtab() { return b; public double hämtac() { return c; public void sättkoeff(double ap, double bp, double cp) { a = ap; b = bp; c = cp; En annan flervägstest är switch-satsen switch (växel) { case nn: sats; case nn: sats;... default: sats; Växel är en variabel av diskret typ, dvs heltal, tecken eller boolean. Sedan väljs vilken case (gren) som ska göras beroende på variabelns värde. Det får finnas högst ett case per värde. Om inget case passar så väljs default -grenen. OBS: Grenarna är ingångar, inte utgångar. Det betyder att datorn väljer en ingång och tar sedan alla ingångan nedanför denna. Utgångar måste skrivas av dig! Testar om ekvationen har en andragradterm och om den har reella rötter. Här har vi först ett tvåvägsval. I den andra grenen har vi bland annat ett nytt tvåvägsval. Villkor och tester 29 September 2003 19 Villkor och tester 29 September 2003 20

// Sifferbetyg import extra.*; public class Betyg2 { public static void main(string [] arg) { int betyg; Std.out.println("Vilket betyg har du i matte?"); betyg = Std.in.readInt(); switch (betyg) { case 1: case 2: Std.out.println("...sorry"); case 3: Std.out.println("OK"); case 4: Std.out.println("Bra"); case 5: Std.out.println("Toppen!"); default: Std.out.println("Okänt betyg"); Om ett break glöms bort, tex efter case 3: och man svarar 3 blir svaret : OK Bra exempel på körningar: Vilket betyg har du i matte? 2...sorry Vilket betyg har du i matte? 7 Okänt betyg Villkor och tester 29 September 2003 21 Villkor och tester 29 September 2003 22