Programmering för språkteknologer I, VT2012 evelina.andersson@lingfil.uu.se Rum 9-2035 http://stp.lingfil.uu.se/~evelina/uv/uv12/pst1/
Idag - Kursplan - Börja programmera - Lokala variabler - aritmetiska operatorer - input / output 2
Kursplan 3
Kursplan - Förkunskaper Introduktion till datateknik för språkvetare, 5 p/7,5 hp. 4
Kursplan Mål Efter avslutad kurs skall studenten för att förtjäna betyget Godkänd minst kunna redogöra för följande begrepp och skriva fungerande Javaprogram som exemplifierar och drar nytta av dem: 5
Kursplan Mål (1) på ett elementärt plan redogöra för och tillämpa en god programmeringsmetodik 6
Kursplan Mål (2) förklara innebörden av följande begrepp och kunna skriva fungerande Javaprogram som exemplifierar och drar nytta av dem: 1. datatyper, objekt, klasser, variabler (instans- och klass-) och metoder (instans- och klass-); 2. logiska och aritmetiska operatorer, jämförelseoperatorer; 3. villkorssatser (if-satser); och satser för iterativ kontroll (for- och while-satser); 4. standardklasser, särskilt viktiga exempel på sådana t.ex. String; 7
Kursplan Mål (3) skriva program som utför elementära beräkningar utifrån förekomsten av tecken och ord-n-gram i texter; (4) använda dokumentationen av Java med viss Självständighet; (5) förklara, dokumentera och kommentera kod på ett användbart sätt. 8
Kursmål och Planering Fas 1: Grunderna Datum Moment Examination 22/2 Variabler och operatorer Laboration 0 29/2 Villkorssatser Laboration 1 7/3 Arrayer(Fält) och repetitionssatser, del 1 Laboration 2 14/3 Repetitionssatser, del 2 Laboration 3 21/3 Metoder Laboration 4 Datum Moment Examination 28/3 Klasser, ord-tri-gram Laboration 5 Fas 2: Tillämpning Datum Moment Examination 4/4 ord-n-gram Laboration 6 18/4 Språkteknologisk tillämpning Laboration 7 Laboration 8 för VG 9
Kursmål och Planering Två pass per gång (undantag laboration 6) - Genomgång (10-12) Turing - Laboration (13 15) Chomsky Laboration 6: - Laboration (10 12) Chomsky 10
Laborationernas struktur Del 0 Testa momentet - Kompilera färdiga småprogram och gör små ändringar i dem Del 1 Skriva enkla problemet - Skriva egna småprogram där du tillämpar momentet Del 2 Tillämpning - Blanda in det nya momentet med de moment vi hittills gått igenom i kursen 11
Kursplan Betygskriterier Betyget G: Godkänd på laborationerna 0-7. Betyget VG: Utöver kraven för G måste man få VG på laboration 8. 12
Vad ska lämnas in? Varje laborationsinlämning ska innehålla följande: - packat arkiv med dina java-filer: tar -zcvf labx.tar.gz mappmedlabxfiler - skriftlig rapport 13
Hur skriver man en rapport? Introduktion: - Vad är syftet med din laboration? Varje deluppgift ska innehålla följande delar: - Genomförande: -- Hur gick du tillväga för att lösa laborationen - Resultat: -- Vilka resultat fick du? - Slutsats(ibland): -- Vilka slutsatser kan du göra utifrån dina resultat? Analysera (och diskutera) Referenser - Eventuell extra litteratur du använt för att lösa uppgifterna i laborationen 14
Kurslitteratur Huvudbok - Eck, David J. Introduction to Programming Using Java. 6e utgåvan (Gratisbok på internet) Alternativ litteratur - Holm, Per. Objektorienterad programmering och Java. Studentlitteratur. - Skansholm, Jan. Java direkt med Swing. Studentlitteratur. 15
Börja programmera 16
Vad är programmering? Programmering handlar om att ge instruktioner till en dator så att datorn kan lösa ett specifikt problem. Problem som ska lösas. Dator Resultat 17
Vad är programmering? Programmering handlar om att ge instruktioner till en dator så att datorn kan lösa ett specifikt problem. Problem som ska lösas. Människans språk Dator Datorns språk Binärt: 010101010110 Resultat Människans språk Vi vill skriva i ett språk som vi förstår men datorn förstår bara ettor och nollor, dvs binära tal. 18
Vad är programmering? Vi vill skriva i ett språk som vi förstår men datorn förstår bara ettor och nollor, dvs binära tal. Problem: Det är svårt att förstå datorns språk: 010101101010101101010101010101 19
Vad är programmering? Vi vill skriva i ett språk som vi förstår men datorn förstår bara ettor och nollor, dvs binära tal. Problem: Det är svårt att förstå datorns språk: 010101101010101101010101010101 Lösning: Vi vill arbeta med ett språk med följande egenskaper: - Det ska ha en entydig grammatik så att allting som sägs i det kan tolkas på endast ett sätt - Det ska vara lätt att översätta det till datorns språk Detta språk kallas för programmeringsspråk. Vi kommer att arbeta med Java som är ett objektorienterat 20 programmeringsspråk.
Java Fakta - Utvecklats av Sun Microsystems (www.oracle.com) - Släpptes 1995 - plattformsoberoende - dina program kan köras i olika datorsystem utan att du behöver ändra i koden - Objektorienterat - All kod skrivs i klasser som beskriver objekt (mer om detta senare i kursen) 21
Hur programmerar man? - Exempel Skriv ett program som skriver ut Hello World!. 22
Hur programmerar man? - Exempel Skriv ett program som skriver ut Hello World!. Steg 0: Förstå problemet - Vad ska programmet utföra? Program Hello World! 23
Hur programmerar man? - Exempel Skriv ett program som skriver ut Hello World!. Steg 1: Skapa pseudokod - Beskriv hur problemet ska lösas. Kom ihåg: En dator kan endast utföra en instruktion i taget. Program PRINT hello world! Hello World! Pseudokod En text som beskriver hur ditt program fungerar. 24
Hur programmerar man? - Exempel Steg 2: Implementera din lösning - Översätt din pseudokod till programmeringskod 0. Starta Emacs. 1. Skapa en ny fil som heter HelloWorld.java 25
Hur programmerar man? - Exempel Steg 2: Implementera din lösning - Översätt din pseudokod till programmeringskod 2. Skriv följande kod: public class HelloWorld 26
Hur programmerar man? - Exempel Steg 2: Implementera din lösning - Översätt din pseudokod till programmeringskod 2. Skriv följande kod: public class HelloWorld System.out.println("Hello World!"); Pseudokod: PRINT hello world! 27
Hur programmerar man? - Exempel Steg 2: Implementera din lösning - Översätt din pseudokod till programmeringskod 2. Skriv följande kod: public class HelloWorld System.out.println("Hello World!"); 3. Spara filen. 28
Hur programmerar man? - Steg 3 Steg 3: Testkörning - Kompilera din kod och testkör. 4. Öppna terminalen och placera dig i samma katalog som du sparade filen i med hjälp av kommandot cd. 5. Kompilera filen genom att skriva följande terminalen: javac HelloWorld.java Nu har du fått en exekverbar fil av din kod. Kompilering Kompilering innebär att man översätter din kod till det binära språket, dvs det språk som datorn förstår. Det binära språket består av ettor och nollor. 29
Hur programmerar man? - Steg 3 Steg 3: Testkörning - Kompilera din kod och testkör. 6. Exekvera ditt program genom att skriva följande i terminalen: java HelloWorld Resultatet blir det här: Hello World! Exekvering Körning av programmet. 30
Hur programmerar man? - Översikt Steg 0: Förstå problemet - Vad ska programmet utföra? Steg 1: Skapa pseudokod - Beskriv hur problemet ska lösas. Kom ihåg: En dator kan endast utföra en instruktion i taget. Steg 2: Implementera din lösning - Översätt din pseudokod till programmeringskod Steg 3: Testkörning - Kompilera din kod och testkör. Det blev fel Det blev rätt 31
Programskal public class Name... public - synlig för alla 32
Programskal public class Name... public - synlig för alla class - reserverat ord som används när man skapar klassen till ett objekt (mer om objekt senare i kursen). 33
Programskal public class Name... public - synlig för alla class - reserverat ord som används när man skapar klassen till ett objekt (mer om objekt senare i kursen). Name - Namnet på klassen/programmet 34
Programskal public class Name... static betyder att main kan användas innan nånting har skapats. 35
Programskal public class Name... static betyder att main kan användas innan nånting har skapats. void main returnerar ingenting 36
Programskal public class Name... static betyder att main kan användas innan nånting har skapats. void main returnerar ingenting main - Ett program börjar ALLTID i main 37
Programskal public class Name public static void main(string[] args)... String en datatyp som beskriver en sträng 38
Programskal public class Name public static void main(string[] args)... String en datatyp som beskriver en sträng [] - beteckning för array, dvs en samling element av samma typ 39
Programskal public class Name public static void main(string[] args)... String en datatyp som beskriver en sträng [] - beteckning för array, dvs en samling element av samma typ args - namnet på argumentet till main 40
Programskal public class Name public static void main(string[] args)... Här skriver vi koden till programmet. 41
Programskal Vad kan vi skriva i? Svar: Satser Exempel: Deklarera lokala variabler (idag) Skriva arimetiska uttryck (idag) Metodanrop: System.out.println("Hello World!"); 42
Lokala variabler 43
Lokala variabler - Fakta En variabel är en behållare som kan lagra en viss typ av information. Informationen kan spara undan och användas vid ett senare tillfälle i programmet. i 7 variabelnamn innehåll d 7.5 - Ett variabelnamn kan inte börja med en siffra 44
Lokala variabler deklarera utan tilldelning public class LocalVariables0 // deklarera i utan tilldelning int i; 45
Lokala variabler deklarera utan tilldelning public class LocalVariables0 // deklarera i utan tilldelning int i; int är en förkortning för Integer(heltal) 46
Lokala variabler deklarera utan tilldelning public class LocalVariables0 // deklarera i utan tilldelning int i; Namnet på den lokala variabeln int är en förkortning för Integer(heltal) 47
Lokala variabler deklarera utan tilldelning public class LocalVariables0 i // deklarera i utan tilldelning int i; en sats måste alltid avslutas med ; namnet på den lokala variabeln int är en förkortning för Integer(heltal) 48
Lokala variabler deklarera med tilldelning public class LocalVariables0 // deklarera i med tilldelning int i = 5; 49
Lokala variabler deklarera med tilldelning public class LocalVariables1 // deklarera i med tilldelning int i = 5; int är en förkortning för Integer(heltal) 50
Lokala variabler deklarera med tilldelning public class LocalVariables1 // deklarera i med tilldelning int i = 5; namnet på den lokala variabeln int är en förkortning för Integer(heltal) 51
Lokala variabler deklarera med tilldelning public class LocalVariables1 // deklarera i med tilldelning int i = 5; tilldelningsoperator används för att spara ett värde i en variabel namnet på den lokala variabeln int är en förkortning för Integer(heltal) 52
Lokala variabler deklarera med tilldelning public class LocalVariables1 // deklarera i med tilldelning int i = 5; värdet man vill spara i variabeln tilldelningsoperator används för att spara ett värde i en variabel namnet på den lokala variabeln int är en förkortning för Integer(heltal) 53
Lokala variabler deklarera med tilldelning public class LocalVariables1 i 5 // deklarera i med tilldelning int i = 5; Avsluta satsen med ett ; värdet man vill spara i variabeln tilldelningsoperator används för att spara ett värde i en variabel namnet på den lokala variabeln int är en förkortning för Integer(heltal) 54
Lokala variabler Ändra värdet i en variabel public class LocalVariables2 // deklarera i med tilldelning int i = 5; // i tilldelas värde 4 i = 4; 55
Lokala variabler Ändra värdet i en variabel public class LocalVariables2 // deklarera i med tilldelning int i = 5; // i tilldelas värde 4 i = 4; 56
Lokala variabler Ändra värdet i en variabel public class LocalVariables2 i 5 // deklarera i med tilldelning int i = 5; // i tilldelas värde 4 i = 4; 57
Lokala variabler Ändra värdet i en variabel public class LocalVariables2 i 5 // deklarera i med tilldelning int i = 5; // i tilldelas värde 4 i = 4; 58
Lokala variabler Ändra värdet i en variabel public class LocalVariables2 i 5 // deklarera i med tilldelning int i = 5; // i tilldelas värde 4 i = 4; variabeln man vill spara värdet i 59
Lokala variabler Ändra värdet i en variabel public class LocalVariables2 i 5 // deklarera i med tilldelning int i = 5; // i tilldelas värde 4 i = 4; tilldelningsoperator variabeln man vill spara värdet i 60
Lokala variabler Ändra värdet i en variabel public class LocalVariables2 i 5 // deklarera i med tilldelning int i = 5; // i tilldelas värde 4 i = 4; det nya värdet man vill spara i variabeln tilldelningsoperator variabeln man vill spara värdet i 61
Lokala variabler Ändra värdet i en variabel public class LocalVariables2 i 5 // deklarera i med tilldelning int i = 5; // i tilldelas värde 4 i = 4; avsluta med semikolon(;) det nya värdet man vill spara i variabeln tilldelningsoperator variabeln man vill spara värdet i 62
Lokala variabler Ändra värdet i en variabel public class LocalVariables2 i 4 // deklarera i med tilldelning int i = 5; // i tilldelas värde 4 i = 4; avsluta med semikolon(;) det nya värdet man vill spara i variabeln tilldelningsoperator variabeln man vill spara värdet i 63
Lokala variabler Hämta värdet public class LocalVariables3 // deklarera i med tilldelning int i = 5; // deklara j med tilldelning int j = i; 64
Lokala variabler Hämta värdet public class LocalVariables3 // deklarera i med tilldelning int i = 5; // deklara j med tilldelning int j = i; 65
Lokala variabler Hämta värdet public class LocalVariables3 i 5 // deklarera i med tilldelning int i = 5; // deklara j med tilldelning int j = i; 66
Lokala variabler Hämta värdet public class LocalVariables3 i 5 // deklarera i med tilldelning int i = 5; ij // deklara j med tilldelning int j = i; 67
Lokala variabler Hämta värdet public class LocalVariables3 i 5 // deklarera i med tilldelning int i = 5; ij 5 // deklara j med tilldelning int j = i; 68
Lokala variabler Deklarera flera variabler public class LocalVariables4 // deklarera variabler på samma rad int i = 5, j = i; 69
Lokala variabler Deklarera flera variabler public class LocalVariables4 // deklarera variabler på samma rad int i = 5, j = i; 70
Lokala variabler Deklarera flera variabler public class LocalVariables4 i 5 // deklarera variabler på samma rad int i = 5, j = i; 71
Lokala variabler Deklarera flera variabler public class LocalVariables4 i 5 ij // deklarera variabler på samma rad int i = 5, j = i; 72
Lokala variabler Deklarera flera variabler public class LocalVariables4 i 5 ij 5 // deklarera variabler på samma rad int i = 5, j = i; 73
Lokala variabler Deklarera flera variabler public class LocalVariables5 // deklarera variabler på samma rad int i = 5, j = 9; 74
Lokala variabler Deklarera flera variabler public class LocalVariables5 // deklarera variabler på samma rad int i = 5, j = 9; 75
Lokala variabler Deklarera flera variabler public class LocalVariables5 i 5 // deklarera variabler på samma rad int i = 5, j = 9; 76
Lokala variabler Deklarera flera variabler public class LocalVariables5 i 5 ij 9 // deklarera variabler på samma rad int i = 5, j = 9; 77
Lokala variabler Fakta En variabel används för att spara undan värden som vi kan använda senare i programmet. En variabel skapas så här: Sats Exempel Förklaring typ namn; int i; Skapar en variabel av typen typ och med namnet namn typ namn = värde; int i = 5; Skapar en variabel av typen typ och med namnet namn och med värdet värde. 78
Lokala variabler Fakta En variabel används för att spara undan värden som vi kan använda senare i programmet. Flera variabler skapas så här: Sats Exempel Förklaring typ namn0, namn1; int i, j; Skapar två variabler av typen typ och med namnen i och j. typ namn0 = värde0, namn1 = värde; int i = 5, j = 7; Skapar två variabler av typen typ och med namnen i och j, i har värdet 5 och j har värdet 7. 79
Lokala variabler Fakta Så här tilldelar man en variabel ett nytt värde: Sats Exempel Förklaring namn = nyttvärde; i = 7; Värdet 7 sparas i variablen i. Värdet i en variabel hämtas så här: Del av sats Exempel Förklaring namn i Värdet i variablen i hämtas. 80
Vilka typer av variabler kan vi skapa? Primitiva datatyper Enkla datatyper som redan finns i programmeringsspråket. Heltal : int, byte, short, long, Flyttal : float, double Sanningsvärde : boolean Tecken : char 81
Vilka typer av variabler kan vi skapa? Abstrakta datatyper - Klasser Datatyper som innehåller värden och metoder man kan utföra på datatypen. Exempel: Klassen String innehåller en beskrivning av en sträng och saker man kan göra med strängen. // deklarera en sträng med som innehåller hej! String mystring = "Hej!"; // returnerar längden på strängen mystring.length(); 82
Primitiva Datatyper - Heltal Typ Minsta värde Högsta värde byte - 127 128 short - 32 768 32 767 int -2 147 483 648 2 147 483 647 long -9 223 372 036 854 775 808 9 223 372 036 854 775 807 Laboration del 2 Undersök vad som händer när man överskider gränserna: short i = 60000; System.out.println(i); 83
Primitiva datatyper - Flyttal Typ Minsta värde Högsta värde Noggrannhet float 7 siffror double 3,4 10 38 3,4 10 38 1,7 10 308 1,7 10 308 15 siffror Laboration del 2 Undersök vad som händer när du adderar 0.1 flera gånger: double d = 0.1; System.out.println(d); d = d + 0.1; System.out.println(d); osv. 84
Primitiva datatyper - Sanningsvärden Typ Minsta värde Högsta värde boolean falskt sant 85
Primitiva datatyper - Tecken Typ: char Lagrar: tecken Exempel: // spara tecknet A i variabeln c char c = 'A'; 86
Aritmetiska Operatorer 87
Aritmetiska Operatorer - Fakta Aritmetiska operatorer ingår i uttryck och beskriver hur variabler och värden kan kombineras för att man ska få ett numeriskt resultat. Operator Exempel Förklaring + 1 + 5 Addition - 4-2 Substraktion * 2 * 2 Multiplikation / 4 / 2 Heltalsdivision om talen är heltal, annars vanlig division 88
Aritmetiska Operatorer - Exempel public class OperatorsOnInteger // deklarera i och j med tilldelning int i = 1 + 5, j = 5; i = i + 2; // Addition (+) j = 5 i; // Substraktion(-) i = j *(-3); // Multiplikation (*) j = 9 / 2; // Division (/) 89
Aritmetiska Operatorer - Exempel public class OperatorsOnInteger // deklarera i och j med tilldelning int i = 1 + 5, j = 5; i = i + 2; // Addition (+) j = 5 i; // Substraktion(-) i = j *(-3); // Multiplikation (*) j = 9 / 2; // Division (/) 90
Aritmetiska Operatorer - Exempel i 6 ij 5 public class OperatorsOnInteger // deklarera i och j med tilldelning int i = 1 + 5, j = 5; i = i + 2; // Addition (+) j = 5 i; // Substraktion(-) i = j *(-3); // Multiplikation (*) j = 9 / 2; // Division (/) 91
Aritmetiska Operatorer - Exempel i 6 ij 5 public class OperatorsOnInteger // deklarera i och j med tilldelning int i = 1 + 5, j = 5; i = i + 2; // Addition (+) j = 5 i; // Substraktion(-) i = j *(-3); // Multiplikation (*) j = 9 / 2; // Division (/) 92
Aritmetiska Operatorer - Exempel i 6 ij 5 public class OperatorsOnInteger // deklarera i och j med tilldelning int i = 1 + 5, j = 5; i = i + 2; // Addition (+) j = 5 i; // Substraktion(-) i = j *(-3); // Multiplikation (*) j = 9 / 2; // Division (/) 93
Aritmetiska Operatorer - Exempel i 6 ij 5 public class OperatorsOnInteger // deklarera i och j med tilldelning int i = 1 + 5, j = 5; i = i + 2; // Addition (+) j = 5 i; // Substraktion(-) i = j *(-3); // Multiplikation (*) j = 9 / 2; // Division (/) 6 94
Aritmetiska Operatorer - Exempel i 6 ij 5 public class OperatorsOnInteger // deklarera i och j med tilldelning int i = 1 + 5, j = 5; i = i + 2; // Addition (+) j = 5 i; // Substraktion(-) i = j *(-3); // Multiplikation (*) j = 9 / 2; // Division (/) 6 + 95
Aritmetiska Operatorer - Exempel i 6 ij 5 public class OperatorsOnInteger // deklarera i och j med tilldelning int i = 1 + 5, j = 5; i = i + 2; // Addition (+) j = 5 i; // Substraktion(-) i = j *(-3); // Multiplikation (*) j = 9 / 2; // Division (/) 6 + 2 96
i 6 ij 5 public class OperatorsOnInteger // deklarera i och j med tilldelning int i = 1 + 5, j = 5; i = i + 2; // Addition (+) j = 5 i; // Substraktion(-) i = j *(-3); // Multiplikation (*) j = 9 / 2; // Division (/) 6 + 2 = 8 97
Aritmetiska Operatorer - Exempel i 8 ij 5 public class OperatorsOnInteger // deklarera i och j med tilldelning int i = 1 + 5, j = 5; i = i + 2; // Addition (+) j = 5 i; // Substraktion(-) i = j *(-3); // Multiplikation (*) j = 9 / 2; // Division (/) 6 + 2 = 8 98
Aritmetiska Operatorer - Exempel i 8 ij 5 public class OperatorsOnInteger // deklarera i och j med tilldelning int i = 1 + 5, j = 5; i = i + 2; // Addition (+) j = 5 i; // Substraktion(-) i = j *(-3); // Multiplikation (*) j = 9 / 2; // Division (/) 99
Aritmetiska Operatorer - Exempel i 8 ij 5 public class OperatorsOnInteger // deklarera i och j med tilldelning int i = 1 + 5, j = 5; i = i + 2; // Addition (+) j = 5 i; // Substraktion(-) i = j *(-3); // Multiplikation (*) j = 9 / 2; // Division (/) 100
Aritmetiska Operatorer - Exempel i 8 ij 5 public class OperatorsOnInteger // deklarera i och j med tilldelning int i = 1 + 5, j = 5; i = i + 2; // Addition (+) j = 5 i; // Substraktion(-) i = j *(-3); // Multiplikation (*) j = 9 / 2; // Division (/) 5 101
Aritmetiska Operatorer - Exempel i 8 ij 5 public class OperatorsOnInteger // deklarera i och j med tilldelning int i = 1 + 5, j = 5; i = i + 2; // Addition (+) j = 5 i; // Substraktion(-) i = j *(-3); // Multiplikation (*) j = 9 / 2; // Division (/) 5 _ 102
Aritmetiska Operatorer - Exempel i 8 ij 5 public class OperatorsOnInteger // deklarera i och j med tilldelning int i = 1 + 5, j = 5; i = i + 2; // Addition (+) j = 5 i; // Substraktion(-) i = j *(-3); // Multiplikation (*) j = 9 / 2; // Division (/) 5 _ 103
Aritmetiska Operatorer - Exempel i 8 ij 5 public class OperatorsOnInteger // deklarera i och j med tilldelning int i = 1 + 5, j = 5; i = i + 2; // Addition (+) j = 5 i; // Substraktion(-) i = j *(-3); // Multiplikation (*) j = 9 / 2; // Division (/) 5 _ 8 104
Aritmetiska Operatorer - Exempel i 8 ij 5 public class OperatorsOnInteger // deklarera i och j med tilldelning int i = 1 + 5, j = 5; i = i + 2; // Addition (+) j = 5 i; // Substraktion(-) i = j *(-3); // Multiplikation (*) j = 9 / 2; // Division (/) 5 _ 8 = -3 105
Aritmetiska Operatorer - Exempel i 8 ij -3 public class OperatorsOnInteger // deklarera i och j med tilldelning int i = 1 + 5, j = 5; i = i + 2; // Addition (+) j = 5 i; // Substraktion(-) i = j *(-3); // Multiplikation (*) j = 9 / 2; // Division (/) 5 _ 8 = -3 106
Aritmetiska Operatorer - Exempel i 8 ij -3 public class OperatorsOnInteger // deklarera i och j med tilldelning int i = 1 + 5, j = 5; i = i + 2; // Addition (+) j = 5 i; // Substraktion(-) i = j *(-3); // Multiplikation (*) j = 9 / 2; // Division (/) 107
Aritmetiska Operatorer - Exempel i 8 ij -3 public class OperatorsOnInteger // deklarera i och j med tilldelning int i = 1 + 5, j = 5; i = i + 2; // Addition (+) j = 5 i; // Substraktion(-) i = j *(-3); // Multiplikation (*) j = 9 / 2; // Division (/) 108
Aritmetiska Operatorer - Exempel i 8 ij -3 public class OperatorsOnInteger // deklarera i och j med tilldelning int i = 1 + 5, j = 5; i = i + 2; // Addition (+) j = 5 i; // Substraktion(-) i = j *(-3); // Multiplikation (*) j = 9 / 2; // Division (/) 109
Aritmetiska Operatorer - Exempel i 8 ij -3 public class OperatorsOnInteger // deklarera i och j med tilldelning int i = 1 + 5, j = 5; i = i + 2; // Addition (+) j = 5 i; // Substraktion(-) i = j *(-3); // Multiplikation (*) j = 9 / 2; // Division (/) -3 110
Aritmetiska Operatorer - Exempel i 8 ij -3 public class OperatorsOnInteger // deklarera i och j med tilldelning int i = 1 + 5, j = 5; i = i + 2; // Addition (+) j = 5 i; // Substraktion(-) i = j *(-3); // Multiplikation (*) j = 9 / 2; // Division (/) -3 * 111
Aritmetiska Operatorer - Exempel i 8 ij -3 public class OperatorsOnInteger // deklarera i och j med tilldelning int i = 1 + 5, j = 5; i = i + 2; // Addition (+) j = 5 i; // Substraktion(-) i = j *(-3); // Multiplikation (*) j = 9 / 2; // Division (/) -3 * -3 112
Aritmetiska Operatorer - Exempel i 8 ij -3 public class OperatorsOnInteger // deklarera i och j med tilldelning int i = 1 + 5, j = 5; i = i + 2; // Addition (+) j = 5 i; // Substraktion(-) i = j *(-3); // Multiplikation (*) j = 9 / 2; // Division (/) -3 * -3 = 9 113
Aritmetiska Operatorer - Exempel i 9 ij -3 public class OperatorsOnInteger // deklarera i och j med tilldelning int i = 1 + 5, j = 5; i = i + 2; // Addition (+) j = 5 i; // Substraktion(-) i = j *(-3); // Multiplikation (*) j = 9 / 2; // Division (/) -3 * -3 = 9 114
Aritmetiska Operatorer - Exempel i 9 ij -3 public class OperatorsOnInteger // deklarera i och j med tilldelning int i = 1 + 5, j = 5; i = i + 2; // Addition (+) j = 5 i; // Substraktion(-) i = j *(-3); // Multiplikation (*) j = 9 / 2; // Division (/) -3 * -3 = 9 115
Aritmetiska Operatorer - Exempel i 9 ij -3 public class OperatorsOnInteger // deklarera i och j med tilldelning int i = 1 + 5, j = 5; i = i + 2; // Addition (+) j = 5 i; // Substraktion(-) i = j *(-3); // Multiplikation (*) j = 9 / 2; // Division (/) 116
Aritmetiska Operatorer - Exempel i 9 ij -3 public class OperatorsOnInteger // deklarera i och j med tilldelning int i = 1 + 5, j = 5; i = i + 2; // Addition (+) j = 5 i; // Substraktion(-) i = j *(-3); // Multiplikation (*) j = 9 / 2; // Division (/) 117
Aritmetiska Operatorer - Exempel i 9 ij -3 public class OperatorsOnInteger // deklarera i och j med tilldelning int i = 1 + 5, j = 5; i = i + 2; // Addition (+) j = 5 i; // Substraktion(-) i = j *(-3); // Multiplikation (*) j = 9 / 2; // Division (/) 9 118
Aritmetiska Operatorer - Exempel i 9 ij -3 public class OperatorsOnInteger // deklarera i och j med tilldelning int i = 1 + 5, j = 5; i = i + 2; // Addition (+) j = 5 i; // Substraktion(-) i = j *(-3); // Multiplikation (*) j = 9 / 2; // Division (/) 9 / 119
Aritmetiska Operatorer - Exempel i 9 ij -3 public class OperatorsOnInteger // deklarera i och j med tilldelning int i = 1 + 5, j = 5; i = i + 2; // Addition (+) j = 5 i; // Substraktion(-) i = j *(-3); // Multiplikation (*) j = 9 / 2; // Division (/) 9 / 2 120
Aritmetiska Operatorer - Exempel i 9 ij -3 public class OperatorsOnInteger // deklarera i och j med tilldelning int i = 1 + 5, j = 5; i = i + 2; // Addition (+) j = 5 i; // Substraktion(-) i = j *(-3); // Multiplikation (*) j = 9 / 2; // Division (/) 9 / 2 = 4.5 121
Aritmetiska Operatorer - Exempel i 9 ij? public class OperatorsOnInteger // deklarera i och j med tilldelning int i = 1 + 5, j = 5; i = i + 2; // Addition (+) j = 5 i; // Substraktion(-) i = j *(-3); // Multiplikation (*) j = 9 / 2; // Division (/) 9 / 2 = 4.5 122
Aritmetiska Operatorer - Exempel i 9 ij? public class OperatorsOnInteger // deklarera i och j med tilldelning int i = 1 + 5, j = 5; i = i + 2; // Addition (+) j = 5 i; // Substraktion(-) i = j *(-3); // Multiplikation (*) j = 9 / 2; // Division (/) Vi kan endast spara heltal(int) i j. 9 / 2 = 4.5 Vad händer när vi försöker lagra 4.5 i j? 123
Aritmetiska Operatorer - Exempel i 9 ij 4 public class OperatorsOnInteger // deklarera i och j med tilldelning int i = 1 + 5, j = 5; i = i + 2; // Addition (+) j = 5 i; // Substraktion(-) i = j *(-3); // Multiplikation (*) j = 9 / 2; // Division (/) Vi kan endast spara heltal(int) i j. 9 / 2 = 4.5 Vad händer när vi försöker lagra 4.5 i j? Svar: 4 sparas i j och.5 kastas bort. 124
Aritmetiska Operatorer - Exempel i 9 ij 4 public class OperatorsOnInteger // deklarera i och j med tilldelning int i = 1 + 5, j = 5; i = i + 2; // Addition (+) j = 5 i; // Substraktion(-) i = j *(-3); // Multiplikation (*) j = 9 / 2; // Division (/) Hur ska vi gå tillväga för att spara 4.5? 9 / 2 = 4.5 125
Aritmetiska Operatorer - Exempel i 9 ij 4 public class OperatorsOnInteger // deklarera i och j med tilldelning int i = 1 + 5, j = 5; i = i + 2; // Addition (+) j = 5 i; // Substraktion(-) i = j *(-3); // Multiplikation (*) j = 9 / 2; // Division (/) Hur ska vi gå tillväga för att spara 4.5? 9 / 2 = 4.5 Svar: Skapa en variabel som man kan spara flyttal i och spara 4.5 i den. 126
Aritmetiska Operatorer - Exempel i 9 ij 4 d 4 public class OperatorsOnInteger // deklarera i och j med tilldelning int i = 1 + 5, j = 5; i = i + 2; // Addition (+) j = 5 i; // Substraktion(-) i = j *(-3); // Multiplikation (*) double d = 9 / 2; // Division (/) Hur ska vi gå tillväga för att spara 4.5? 9 / 2 = 4.5 Svar: Skapa en variabel som man kan spara flyttal i och spara 4.5 i den. 127
Aritmetiska Operatorer - Exempel i 9 ij 4 d 4.0 public class OperatorsOnInteger // deklarera i och j med tilldelning int i = 1 + 5, j = 5; i = i + 2; // Addition (+) j = 5 i; // Substraktion(-) i = j *(-3); // Multiplikation (*) double d = 9 / 2; // Division (/) 9 / 2 = 4.5 Problem: Datorn kastar fortfarande bort.5 för den beräknar först 9 / 2 = 4 och därefter sparar den resultatet i d. 128
Aritmetiska Operatorer - Exempel i 9 ij 4 d 4.5 public class OperatorsOnInteger // deklarera i och j med tilldelning int i = 1 + 5, j = 5; i = i + 2; // Addition (+) j = 5 i; // Substraktion(-) i = j *(-3); // Multiplikation (*) double d = 9.0 / 2.0; // Division (/) Problem: Datorn kastar fortfarande bort.5 för den beräknar först 9 / 2 = 4 och därefter sparar den resultatet i d. 9 / 2 = 4.5 Lösning a: Skriv 9.0 / 2.0 129
Aritmetiska Operatorer - Exempel i 9 ij 4 d 4.5 public class OperatorsOnInteger // deklarera i och j med tilldelning int i = 1 + 5, j = 5; i = i + 2; // Addition (+) j = 5 i; // Substraktion(-) i = j *(-3); // Multiplikation (*) double d = (double)(9 / 2); // Division (/) Problem: Datorn kastar fortfarande bort.5 för den beräknar först 9 / 2 = 4 och därefter sparar den resultatet i d. 9 / 2 = 4.5 Lösning b: Skriv (double) (9 / 2) 130
Aritmetiska Operatorer Varför räknar datorn så här? Syntaxen för operatorerna ser ut så här: uttryck0 operator uttryck1 Operatorerna är typberoende, dvs resultatet har samma typ som uttryck0 och uttryck1. I vårt fall med exemplet 9/2, dividerade datorn två heltal (int)och den typ som returnerades var int. Detta kallas för heltalsdivision. Minnesregler: int operator int = int int operator double = double 131
Implicit Konvertering Varför sparades 4.0 i en double? Detta hände egentligen: 0. Först beräknades 9/2 = 4 ut. 1. Eftersom 9 och 2 är heltal (int) så trodde datorn att 4 skulle vara ett heltal (int). 2. Då vi ville spara resultatet i en double konverterades 4 automatiskt från int till double. Detta kallas för implicit konvertering. 132
Explicit Konvertering Varför fungerade (double) (9/2)? Detta hände egentligen: 0. Först beräknades 9/2=4.5 1. Eftersom vi hade skrivit (double) före (9/2) talade vi om för datorn att vi ville att resultatet skulle vara i double. Detta kallas för explicit konvertering. 133
Input / Output (I/O) 134
Input / Output (I/O) Input: Inläsning från inströmmen, till exempel inmatning från tangentbordet. Output: Utskrift till utströmmen, till exempel utskrift till skärmen 135
Input / Output (I/O) Skriva ut text Så hur skriver man ut text i Java: - Utskrift som avslutas med ny rad: System.out.println("Hello World!"); - Utskrift som inte avslutas med ny rad: System.out.print("Hello World!"); 136
Input / Output (I/O) Skriva ut variabel - För att skriva ut värdet i en variabel skriver man så här: System.out.println(variabelnsNamn); - Om man vill skriva text framför variablen, skriver man så här: System.out.println("text" + variabelnsnamn); 137
Input / Output (I/O) Exempel public class PrintVariable // deklarera i med tilldelning int i = 5; // Skrivet ut värdet i variabeln i System.out.println(i); System.out.print("Variabelns värde:" + i); 138
Input / Output (I/O) Exempel public class PrintVariable // deklarera i med tilldelning int i = 5; // Skrivet ut värdet i variabeln i System.out.println(i); System.out.print("Variabelns värde:" + i); 139
Input / Output (I/O) Exempel public class PrintVariable i 5 // deklarera i med tilldelning int i = 5; // Skrivet ut värdet i variabeln i System.out.println(i); System.out.print("Variabelns värde:" + i); 140
Input / Output (I/O) Exempel public class PrintVariable i 5 // deklarera i med tilldelning int i = 5; // Skrivet ut värdet i variabeln i System.out.println(i); System.out.print("Variabelns värde:" + i); 5 141
Input / Output (I/O) Exempel public class PrintVariable i 5 // deklarera i med tilldelning int i = 5; // Skrivet ut värdet i variabeln i System.out.println(i); System.out.print("Variabelns värde:" + i); 5 Variablens värde: 5 142
Input / Output (I/O) Det är enkelt att skriva ut saker i java men hur kan vi tillåta att en användare kan skriva något till programmet? Fungerar något av det här tro? System.in.readLine(); System.in.read(); System.in.getInput(); 143
Input / Output (I/O) Det är enkelt att skriva ut saker i java men hur kan vi tillåta att en användare kan skriva något till programmet? Fungerar något av det här tro? System.in.readLine(); System.in.read(); System.in.getInput(); Nej, det fungerar inte. Lösning: Vi behöver använda klassen Scanner. 144
Input / Output (I/O) Exempel // Så här skriver man för att importera // Scanner i programmet: import java.util.scanner; public class ReadInput 145
Input / Output (I/O) Exempel // Så här skriver man för att importera // Scanner i programmet: import java.util.scanner; public class ReadInput // Så här skapar man en scanner: Scanner myscanner = new Scanner(System.in); 146
Input / Output (I/O) Exempel // Så här skriver man för att importera // klassen Scanner import java.util.scanner; public class ReadInput // Så här skapar man en Scanner: Scanner myscanner = new Scanner(System.in); Klassens namn 147
Input / Output (I/O) Exempel // Så här skriver man för att importera // Scanner i programmet: import java.util.scanner; public class ReadInput // Så här skapar man en Scanner: Scanner myscanner = new Scanner(System.in); Variabelns namn Klassens namn 148
Input / Output (I/O) Exempel // Så här skriver man för att importera // Scanner i programmet: import java.util.scanner; public class ReadInput // Så här skapar man en Scanner: Scanner myscanner = new Scanner(System.in); Variabelns namn Klassens namn Tilldelningsoperator 149
Input / Output (I/O) Exempel // Så här skriver man för att importera // Scanner i programmet: import java.util.scanner; public class ReadInput // Så här skapar man en Scanner: Scanner myscanner = new Scanner(System.in); Så här skriver man för att skapa en instans av klassen Scanner som läser från input-strömmen. Variabelns namn Klassens namn Tilldelningsoperator 150
Input / Output (I/O) Exempel import import java.util.scanner; public class ReadInput Scanner myscanner = new Scanner(System.in); // Så här läser man in ett heltal int myinteger = myscanner.nextint(); 151
Input / Output (I/O) Exempel import import java.util.scanner; public class ReadInput Scanner myscanner = new Scanner(System.in); int myinteger = myscanner.nextint(); // Så här läser man in ett decimaltal double mydouble = myscanner.nextdouble(); 152
Input / Output (I/O) Exempel import import java.util.scanner; public class ReadInput Scanner myscanner = new Scanner(System.in); int myinteger = myscanner.nextint(); double mydouble = myscanner.nextdouble(); //Så här läser man in en sträng String mystring = myscanner.next(); 153
Input / Output (I/O) Exempel import import java.util.scanner; public class ReadInput Scanner myscanner = new Scanner(System.in); int myinteger = myscanner.nextint(); double mydouble = myscanner.nextdouble(); String mystring = myscanner.next(); // Så här skriver man ut variablerna System.out.println("Du skrev in följande:"); System.out.println("heltal: " + myinteger); System.out.println("decimaltal: " + mydouble); System.out.println("sträng: " + mystring); 154
Idag: Normalt programflöde sats; sats; sats; 155
Nästa gång: Villkorsflöde sats; sant? falskt sats; sats; sats; sats; sats; 156