Program element - Introduktion : Ð data typer Ð variabler Ð operatorer och uttryck Ð val och loopar Ð input och output 1 2 import java.io.*; class Addition //=========================================================== // Reads two integers and prints their sum. //=========================================================== Kšrning public static void main (String[] args) throws IOException BufferedReader stdin; stdin = new BufferedReader(new InputStreamReader(System.in)); String string1, string2; int num1, num2, sum; System.out.println ("Enter a number:"); string1 = stdin.readline(); num1 = Integer.parseInt (string1); System.out.println ("Enter another number:"); string2 = stdin.readline(); num2 = Integer.parseInt (string2); sum = num1 + num2; System.out.println ("The sum is " + sum); } // method main } // class Addition Exempel 3 4 Kšrning Exempel import java.io.*; class Addition //=========================================================== // Reads two integers and prints their sum. //=========================================================== public static void main (String[] args) throws IOException... String string1, string2; int num1, num2, sum; System.out.print ("Enter a number:"); System.out.flush(); string1 = stdin.readline(); num1 = Integer.parseInt (string1);... sum = num1 + num2; } // method main 5 } // class Addition 6 1
Kšrning 7 8 Primitiva Data Typer Heltal data typ definieras av všrden, relationer och operatorer Fšrdefinierade typer : Ð byte, short, int, long, float, double, boolean, char 4 enkla heltalstyper Typ Minne byte short int long 8 bits 16 bits 32 bits 64 bits Min všrde -128-32,768-2,147,483,648 < -9 x 10 18 Max všrde 127 32,767 2,147,483,647 > 9 x 10 18 9 10 Flyttal Tecken TvŒ typer: Typ Minne Approx. Min všrde Approx. Max všrde Enstaka tecken ur Unicode character set float double 32 bitar 64 bitar -3.4 x 10 38-1.7 x 10 308 3.4 x 10 38 1.7 x 10 308 VŠrdena ordnade 16 bitar fšr lagring ger 65.536 unika tecken float 7 signifikanta siffror double 15 signifikanta siffror 11 12 2
import java.io.*; class Temperature2 Villkor final static int BRYTPUNKTEN = 65; public static void main (String[] args) throws IOException BufferedReader stdin = new BufferedReader (new InputStreamReader(System.in)); System.out.println (ÓAnge temperaturen:"); int temperatur = Integer.parseInt (stdin.readline()); System.out.println (ÓAktuell temperatur: " + temperatur); if (temperatur < BRYTPUNKTEN) System.out.print (ÓBrrrrrr. Kallt! "); System.out.println (ÓMen det ar ok!."); } System.out.println (ÓNu avslutas applikationen."); } // method main } // class Temperature2 Kšrningar 13 14 Boolean Variabler Identifierare, minnesplats fšr všrde av angiven typ Variabler mœste deklareras Reserverade ord true och false Syntax : data-typ variabel-namn; Exempel: int total; 15 16 Variabler Primitiva typerna har wrapper class. Wrappers Flera pœ samma rad: int total, count, sum; Kan initialiseras i deklarationen : int total = 0, count = 20; float unit_price = 57.25; Primitiv Typ int double char boolean Wrapper Class Integer Double Character Boolean Objekt istf. primitiv typ Ger metoder (appendix O) int heltal = Integer.parseInt(Ó123Ó); Se Piano_Keys.java 17 18 3
Tilldelningssatsen Konstanter variabel-namn = uttryck; uttrycket evalueras och lagras Se United_States.java (s.80) Primitivt všrde eller komplext uttryck Namngivet všrde Markeras med reserverade ordet final Exempel: final double PI = 3.14159; final int STUDENTER = 64; Enklare att uppdatera LŠttare att lšsa 19 20 Java I/O baseras pœ stršmmar (streams) Input / Output Input / Output Java API mšjliggšr mœnga slag av I/O Tecken stršngar : System.in Šndras till annan stršm Fšrdefinierade standardstršmmar: stršm syfte System.in System.out System.err lšsa input skriva output skriva fel enhet tangentbord bildskšrm bildskšrm BufferedReader stdin = new BufferedReader(new InputStreamReader (System.in)); Ny stršm stdin print och println metoder som skriver pœ standardoutput 21 22 Escape Sekvenser Buffertar Se Echo.java (s.84) Escape-sekvenser fšregœs av backslash (\) FrŒn tangetntbordet till input buffert Vagnretur/enter avslutar inmatningen Ger speciella všrden: Escape Sekvens \t \n \" \' \\ Ger tab Ny rad Dubbel snutt Enkel snutt backslash Utskrifter lagras i output buffert Ð Kan tšmmas pœ skšrmen med flush metoden Se Python.java 23 24 4
SiffervŠrden Uttryck StrŠng - heltal Integer wrapper class: int heltal = Integer.parseInt (str); LŠsa och konvertera i samma sats: Kombination av operander och operatorer Aritmetiska : + - * / Operanderna enkla všrden eller komplexa uttryck heltal = Integer.parseInt (stdin.readline()); Se Addition.java och Addition2.java 25 26 Division Division BŒda operanderna heltal ger heltalsresultat (ev. trunkerat) En av oparanderna flyttal -> resultatet flyttal Modulus (%) ger resten vid heltalsdivision Ð Operanderna mœste vara heltal Se Division.java Resten fœr samma tecken som tšljaren uttryck 17 / 5 17.0 / 5 17 / 5.0 9 / 12 9.0 / 12.0 6 % 2 14 % 5-14 % 5 resultat 3 3.4 3.4 0 0.75 0 4-4 27 28 Prioritetsordning Prioritetsordning Evalueringsregler Vid samma prioritet avgšr associativiteten hos operatorerna (všnster-hšger/hšger-všnster) Parenteser Appendix D Multiplikation, division och modulus hšgre prioritet Šn addition och subtraktion BŒda associerar všnster - hšger uttryck: 5 + 12 / 5-10 % 3 Evalueringsordning: Resultat: 6 3 1 4 2 29 30 5
Exempel If - satsen uttryck 2 + 3 * 4 / 2 3 * 13 + 2 (3 * 13) + 2 3 * (13 + 2) Result 8 41 41 45 Syntax : if (villkor) sats; true villkor false 4 * (11-6) * (-8 + 10) (5 * (4-1)) / 2 40 7 sats 31 32 Booleska uttryck Block Villkoret mœste evaluera till true/false Operatorer Operator : Betydelse == Identisk lika!= Inte identiskt lika < Mindre Šn <= Mindre Šn eller lika med > Stšrre Šn <= Stšrre Šn eller lika med AvgrŠnsas med ÓkrullparenteserÓ sats; sats; É } Kan anvšndas šverallt dšr sats kan fšrekomma Se Temperature2.java Se Temperature.java 33 34 if (villkor) sats1; else sats2; Se Temperature3.java och Right_Triangle.java villkor true sats1 if-else satsen false sats2 class Football_Choice NŠstade if-satser //main.. System.out.println(ÓEnter 1 foréó); int coin = Integer.parseInt(stdin.readLine()); System.out.println(ÓEnter 1 toéó); int choice = Integer.parseInt(stdin.readLine()); if (coin == HEADS) if (choice == RECCEIVE) System.out.println(ÓYou won the toss ÉÓ); else System.out.println(Ó É and will kickoffó); else System.out.println(Ó You lost the tossó); }// main }// Football_Choice ÓDangling elseó 35 36 6
Syntax: While-satsen while satsen while (villkor) sats; villkor false Utfšrs noll eller flera gœnger Se Counter.java (s.103) och Powers_of_Two.java (s.105) true Factors.java Villkoret evalueras - satsen utfšrs/utfšrs inte Villkoret testas inte kontinuerligt sats while(count =< (number/2)) if (number % count == 0) System.out.println(count); } 37 38 OŠndliga loopar Program utveckling Villkoret mœste nœgon gœng bli falskt Vanligt logiskt fel Se Forever.java (s.106) Fyra delmoment: Ð FaststŠlla fšrutsšttningarna/kraven Ð Skapa en design Ð Implementera koden Ð Testa implementationen 39 40 Krav/fšrutsŠttningar Design Vad ska gšras? Hur beršrs anvšndarytan? Vilka begršnsningar finns? Algoritm fšr problemlšsningen Vilka algoritmer och data kršvs? I en objektorienterad design bestšms klasser, objekts och metoder som behšvs Algoritmer kan uttryckas i pseudokod 41 42 7
Implementation Testning versšttning av design till kšllkod Tester mœste konstrueras fšr extremer, svagheter och gršnsfall Alla viktiga beslut tas vid analys och design Dokumenteras Implementationen fokuserar pœ kod-detaljer 43 44 8