Föreläsning 2 • • • • • • Algoritm Primitiva datatyper Variabler och konstanter Tilldelning Utskrift och inläsning Operatorer Javaprogram • Det finns tre typer av javaprogram: – Textbaserade Skriver och läser från terminalfönstret – Program med grafiskt gränssnitt Använder menyer och knappar för att kommunicera med användaren – Appletprogram Läggs in på en webbsida – kan köras av alla med tillgång till www Hur skriver man program? • Rita upp hur det ska se ut på skärmen. Skilj mellan programmets utskrifter och användarens inmatning. • Beskriv i ord vad som ska göras (algoritm). • Tänk efter vilka variabler som behövs. • Skriv programmet på papper och läs igenom. • När du skriver in på datorn – kopiera gärna ditt första program men glöm inte att byta namn efter class! Algoritm • • • En algoritm är ett antal instruktioner för hur man löser ett problem Det är viktigt att hålla reda på i vilken ordning instruktionerna ska utföras Algoritm för att skriva ett javaprogram: 1. Hitta på en algoritm. 2. Formulera algoritmen i Java. 3. Provkör! 4. Rätta felen. 5. Upprepa punkt 3 och 4 tills programmet fungerar som du tänkt. Variabler • Deklarationerna reserverar minnesutrymme där värden kan lagras char svar; • Skilj på variabelns namn och dess värde: svar ’J’ • En variabels värde kan ändras genom tilldelning eller inläsning • Inläsning ger användaren möjlighet att ge variabeln ett nytt värde Binära tal • I datorns minne lagras allt binärt, dvs i bas 2 • En binär siffra (0 eller 1) kallas en bit Bas 10 0 1 2 3 4 5 6 7 8 Bas 2 0 1 10 11 100 101 110 111 1000 Primitiva datatyper • Varje värde som lagras i minnet är av en viss datatyp • Java har åtta fördefinierade typer som kallas primitiva datatyper: byte float short int long double boolean char Heltal • Det finns fyra olika heltalstyper: Namn Storlek Min-värde Max-värde byte short int long -128 -32,768 -2,147,483,648 < -9 x 1018 127 32,767 2,147,483,647 > 9 x 1018 8 bitar 16 bitar 32 bitar 64 bitar Flyttal • Det finns två flyttalstyper: Min-värde Max-värde float 32 bitar -3.4 x 1038 double 64 bitar -1.7 x 10308 3.4 x 1038 1.7 x 10308 Namn Storlek Tecken • I en variabel av typen char kan ett tecken lagras • Java använder teckenkodningssystemet Unicode som lagrar tecken i 16 bitar • Tecken från många olika språk finns med, däribland å, ä och ö. Se www.unicode.org • Teckenkonstanter omges av apostrofer, t ex ’a’ ’&’ ’\n’ (retur) ’\’’ (apostrof) (på PC skrivs retur med ’\r’) Boolean • En boolesk variabel kan endast anta värdena true och false • Exempel: boolean parkering = false; • Booleska variabler används ofta i villkor Omslagsklasser (Wrapper classes) • För varje primitiv datatyp finns en motsvarande klass: Datatyp int double char boolean Klass Integer Double Character Boolean • Dessa klasser innehåller användbara metoder t ex för att omvandla från strängar till tal Variabler och konstanter • Variabler kan tilldelas ett startvärde i deklarationen: double längd = 0.84; • Variabelns värde kan ändras senare i programmet. • Lägger man till ordet final får man en konstant, vars värde inte kan ändras: final double LÄNGD = 1.78; Tilldelning • En variabel kan ges ett nytt värde genom int tilldelning: x = y + 8; x int y • I tilldelningssatsens vänsterled står en variabel • Högerledet kan vara ett värde, en variabel eller ett uttryck Utskrift Man kan skriva text på skärmen med System.out.println(”Hej!”); Användaren kan få se värdet av en variabel med int ålder = 21; System.out.println(”Ålder: ” + ålder); Inläsning Användaren kan ge en variabel ett nytt värde om programmet läser in från tangentbordet: 1 Se till att eventuella fel skickas vidare public static void main (String[] args) throws IOException { 2 Tala om varifrån inläsningen ska ske BufferedReader stdin = new BufferedReader (new InputStreamReader (System.in)); 3 Läs in raden raden = stdin.readLine(); Inläsning av tal • Metoden readLine() läser in en sträng. Vid behov kan man omvandla strängen till ett tal heltal = Integer.parseInt(rad); • Inläsning och omvandling kan göras i ett steg: heltal = Integer.parseInt(stdin.readLine()); • Och för flyttal: flyttal = Double.parseDouble(stdin.readLine()); Matematiska operatorer + * / / % 2.52 + 19 blir 21.52 4.18 - 0.02 blir 4.16 3.5 * 2 blir 7.0 19 / 4.0 blir 4.75 19 / 4 blir 4 19 % 4 blir 3 % ger resten vid heltalsdivision