Introduktion till Datalogi DD1339 Föreläsning 3 29 sept 2014
Ett lite intelligentare program?
Klassen Rectangle Rectangle height width color setheight setwidth getcolor getarea Rectangle public class Rectangle{ private double height; private double width; private Color mycolor;... public Rectangle(double h, double w){ height = h; width = w; mycolor = Color.RED; public double getarea(){ return height*width;
Ett exempelprogram (inte så bra) public class RectangleComparer{ public static void main(string args[]){ Rectangle recta = new Rectangle(22.81, 19.45); Rectangle rectb = new Rectangle(21.39, 20.79); System.out.println( Rektangel A: + recta.getarea()); System.out.println( Rektangel B: + rectb.getarea()); System.out.println( Rektangel B är störst! );
Ett exempelprogram (lite bättre) public class RectangleComparer2{ public static void main(string args[]){ Rectangle recta = new Rectangle(22.81, 19.45); Rectangle rectb = new Rectangle(21.39, 20.79); System.out.println( Rektangel A: + recta.getarea()); System.out.println( Rektangel B: + rectb.getarea()); if(recta.getarea() > rectb.getarea()){ System.out.println( Rektangel A är störst! ); else{ System.out.println( Rektangel B är störst! );
Ett exempelprogram (lite bättre) public class RectangleComparer2{ public static void main(string args[]){ Rectangle recta = new Rectangle(22.81, 19.45); Rectangle rectb = new Rectangle(21.39, 20.79); System.out.println( Rektangel A: + recta.getarea()); System.out.println( Rektangel B: + rectb.getarea()); if(recta.getarea() > rectb.getarea()){ System.out.println( Rektangel A är störst! ); else{ System.out.println( Rektangel B är störst! );
Villkorsats (Control flow) if(villkor){ else{ block A block B block C
Villkorsats (Control flow) if(villkor){ Villkoret är ett booleskt uttryck, dvs ett uttryck som har något av värdena true eller false. else{ block A block B block C
Villkorsats (Control flow) if(villkor){ else{ block A Villkoret är ett booleskt uttryck, dvs ett uttryck som har något av värdena true eller false. Om uttrycket är true, så kommer först block A att köras, block B block C
Villkorsats (Control flow) if(villkor){ else{ block A Villkoret är ett booleskt uttryck, dvs ett uttryck som har något av värdena true eller false. Om uttrycket är true, så kommer först block A att köras, (block B hoppas över) block B block C
Villkorsats (Control flow) if(villkor){ else{ block A Villkoret är ett booleskt uttryck, dvs ett uttryck som har något av värdena true eller false. Om uttrycket är true, så kommer först block A att köras, (block B hoppas över) block B och sedan fortsätter man med block C. block C
Villkorsats (Control flow) if(villkor){ else{ block A Villkoret är ett booleskt uttryck, dvs ett uttryck som har något av värdena true eller false. Om uttrycket är false, så kommer först block A att hoppas över, block B I stället kommer block B att köras, och sedan fortsätter man med block C. block C
Villkorsats (utan else) if(villkor){ Villkoret är ett booleskt uttryck, dvs ett uttryck som har något av värdena true eller false. block A block C Om uttrycket är true, så kommer först block A att köras, och sedan fortsätter man med block C.
Villkorsats (utan else) if(villkor){ Villkoret är ett booleskt uttryck, dvs ett uttryck som har något av värdena true eller false. block A block C Om uttrycket är false, så kommer block A att hoppas över, programmet fortsätter I stället direkt med block C.
Booleska uttryck Uttryck som kan utvärderas till typen boolean, dvs kan ta något av värdena true eller false. Booleska variabler: boolean myboolean = true; Direkta jämförelser: myboolean = (A < B); Metoder som returnerar boolean: mystatement.istrue();
Booleska uttryck Vi kan deklarera en variabel till att vara av typen boolean. Variabeln kan då ta något av värdena true eller false boolean myboolean = true; if(myboolean){ dosomething(); Orden true resp false kan betraktas som booleska konstanter, men de är oftast bara meningsfulla att använda i debug-syfte. if(true){ dosomething();
Booleska uttryck Vi kan jämföra två olika variabler. Resultatet av en sådan jämförelse kommer att vara antingen true eller false Exempel: A < B A > B A == B A!= B A <= B A >= B // returnerar true omm A är strikt mindre än B // returnerar true omm A är strikt större än B // returnerar true omm A är exakt lika med B // returnerar true omm A inte är exakt lika med B // returnerar true om A är mindre än B, eller lika stort // returnerar true om A är större än B, eller lika stort
Booleska uttryck Metoder som returnerar boolean: mystatement.istrue();
Booleska uttryck Metoder som returnerar boolean: mystatement.istrue(); Ett typiskt exempel är en jämförelse som kräver lite extra bearbetning: if(mystring.equalsignorecase( hej )){ System.out.println( Hej själv! );
Booleska uttryck - logiska operatorer För att göra mer komplexa villkor kan vi använda logiska operatorer.
Booleska uttryck - logiska operatorer För att göra mer komplexa villkor kan vi använda logiska operatorer. (A && B) // true omm både A och B är true
Booleska uttryck - logiska operatorer För att göra mer komplexa villkor kan vi använda logiska operatorer. (A && B) // true omm både A och B är true // B utvärderas bara om A är true
Booleska uttryck - logiska operatorer För att göra mer komplexa villkor kan vi använda logiska operatorer. (A && B) // true omm både A och B är true // B utvärderas bara om A är true (A B) // true om antingen A eller B är true
Booleska uttryck - logiska operatorer För att göra mer komplexa villkor kan vi använda logiska operatorer. (A && B) // true omm både A och B är true // B utvärderas bara om A är true (A B) // true om antingen A eller B är true // false omm A och B är false // B utvärderas bara om A är false
Booleska uttryck - logiska operatorer För att göra mer komplexa villkor kan vi använda logiska operatorer. (A && B) // true omm både A och B är true // B utvärderas bara om A är true (A B) // true om antingen A eller B är true // false omm A och B är false // B utvärderas bara om A är false!a // true om A är false, false om A är true
Booleska uttryck - logiska operatorer För att göra mer komplexa villkor kan vi använda logiska operatorer. (A && B) // true omm både A och B är true // B utvärderas bara om A är true (A B) // true om antingen A eller B är true // false omm A och B är false // B utvärderas bara om A är false!a // true om A är false, false om A är true Dessa kan sättas ihop tilsammans med andra operatorer. Exempel: if(a >= 10 && A < 20){ System.out.println( A är ett tvåsiffrigt tal som börjar med en etta! );
Booleska uttryck - logiska operatorer För att göra mer komplexa villkor kan vi använda logiska operatorer. (A && B) // true omm både A och B är true // B utvärderas bara om A är true (A B) // true om antingen A eller B är true // false omm A och B är false // B utvärderas bara om A är false!a // true om A är false, false om A är true Dessa kan sättas ihop tilsammans med andra operatorer. Exempel: if(!(a >= 10 && A < 20)){ System.out.println( A är inte ett tvåsiffrigt tal som börjar med en etta! );
Scope, lifetime (räckvidd, livstid) Vi kan deklarera variabler på följande sätt: public class ScopeDemo{ public static int a; public int b; public int getdifference(int c){ return c a; public boolean isbigger(int c){ if( c > a){ boolean mybool = true; return mybool; return false;
Scope, lifetime (räckvidd, livstid) Vi kan deklarera variabler på följande sätt: public class ScopeDemo{ public static int a; public int b; public int getdifference(int c){ return c a; public boolean isbigger(int c){ if( c > a){ boolean mybool = true; return mybool; return false;
Scope, lifetime (räckvidd, livstid) Vi kan deklarera variabler på följande sätt: public class ScopeDemo{ public static int a; public int b; public int getdifference(int c){ return c a; public boolean isbigger(int c){ if( c > a){ boolean mybool = true; return mybool; return false;
Scope, lifetime (räckvidd, livstid) Vi kan deklarera variabler på följande sätt: public class ScopeDemo{ public static int a; public int b; public int getdifference(int c){ return c a; public boolean isbigger(int c){ if( c > a){ boolean mybool = true; return mybool; return false;
Scope, lifetime (räckvidd, livstid) Vi kan deklarera variabler på följande sätt: public class ScopeDemo{ public static int a; public int b; public int getdifference(int c){ return c a; public boolean isbigger(int c){ if( c > a){ boolean mybool = true; return mybool; return false;
Scope, lifetime (räckvidd, livstid) Vi kan deklarera variabler på följande sätt: public class ScopeDemo{ public static int a; public int b; public int getdifference(int c){ return c a; public boolean isbigger(int c){ if( c > a){ boolean mybool = true; return mybool; return false;
Kommentarer Kommentarer är text som kompilatorn inte konverterar till kod. De används främst till att förklara vad koden gör.
Kommentarer Kommentarer är text som kompilatorn inte konverterar till kod. De används främst till att förklara vad koden gör. // denna kommentartyp gäller raden ut
Kommentarer Kommentarer är text som kompilatorn inte konverterar till kod. De används främst till att förklara vad koden gör. // denna kommentartyp gäller raden ut if( a < 10 a > 20){ // om a ligger utanför 10 20 dosomething();
Kommentarer Kommentarer är text som kompilatorn inte konverterar till kod. De används främst till att förklara vad koden gör, men kan också användas till att tilfälligt ta bort en rad. // denna kommentartyp gäller raden ut if( a < 10 a > 20){ // om a ligger utanför 10 20 dosomething(); // System.out.println(a); // avkommentera för utskrift
Kommentarer Kommentarer är text som kompilatorn inte konverterar till kod. De används främst till att förklara vad koden gör, men kan också användas till att tilfälligt ta bort en rad. // denna kommentartyp gäller raden ut if( a < 10 a > 20){ // om a ligger utanför 10 20 dosomething(); // System.out.println(a) // avkommentera för utskrift /* Denna kommentartyp börjar från en startpunkt och fortsätter tills man kommer till slutpunkten */
Kommentarer Kommentarer är text som kompilatorn inte konverterar till kod. De används främst till att förklara vad koden gör, men kan också användas till att tilfälligt ta bort en rad. // denna kommentartyp gäller raden ut if( a < 10 a > 20){ // om a ligger utanför 10 20 dosomething(); // System.out.println(a) // avkommentera för utskrift /* Denna kommentartyp börjar från en startpunkt och fortsätter tills man kommer till slutpunkten */
Kommentarer Kommentarer är text som kompilatorn inte konverterar till kod. De används främst till att förklara vad koden gör, men kan också användas till att tilfälligt ta bort en rad. // denna kommentartyp gäller raden ut if( a < 10 a > 20){ // om a ligger utanför 10 20 dosomething(); // System.out.println(a) // avkommentera för utskrift /* Denna kommentartyp börjar från en startpunkt och fortsätter tills man kommer till slutpunkten */
Kommentarer Om vi följer standarden för kommentarer blir koden inte bara mer lättläst, utan vi kan också använda program för att automatgenerera dokumentation. ex: javadoc /** En kommentar som startar med dessa tecken blir dokumentation */
Kommentarer Om vi följer standarden för kommentarer blir koden inte bara mer lättläst, utan vi kan också använda program för att automatgenerera dokumentation. ex: javadoc /** En kommentar som startar med dessa tecken blir dokumentation */
Kommentarer för dokumentation /** Först kommer den kommentar som förklarar klassen och beskriver den i stora drag. Här kan vi också ha copyright, mm */ public class DemoClass{ /** Här beskriver vi fälten */ public int d = 4; // Här kan vi förklara kort /** Här kommer en text som förklarar just vad den efterföljande metoden gor, och hur den används. Om vi skriver flera rader sa bör den första vara en sammanfattning. */ public void donothing(){ /* Här kommer implementationstekniska förklaringar som rör hur just den här algoritmen fungerar. */ boolean unused = true;
Kommentarer för dokumentation /** Först kommer den kommentar som förklarar klassen och beskriver den i stora drag. Här kan vi också ha copyright, mm */ public class DemoClass{ /** Här beskriver vi fälten */ public int d = 4; // Här kan vi förklara kort /** Här kommer en text som förklarar just vad den efterföljande metoden gor, och hur den används. Om vi skriver flera rader sa bör den första vara en sammanfattning. */ public void donothing(){ /* Här kommer implementationstekniska förklaringar som rör hur just den här algoritmen fungerar. */ boolean unused = true;
Kommentarer för dokumentation /** Först kommer den kommentar som förklarar klassen och beskriver den i stora drag. Här kan vi också ha copyright, mm */ public class DemoClass{ /** Här beskriver vi fälten */ public int d = 4; // Här kan vi förklara kort /** Här kommer en text som förklarar just vad den efterföljande metoden gor, och hur den används. Om vi skriver flera rader sa bör den första vara en sammanfattning. */ public void donothing(){ /* Här kommer implementationstekniska förklaringar som rör hur just den här algoritmen fungerar. */ boolean unused = true;
Kommentarer för dokumentation /** Först kommer den kommentar som förklarar klassen och beskriver den i stora drag. Här kan vi också ha copyright, mm */ public class DemoClass{ /** Här beskriver vi fälten */ public int d = 4; // Här kan vi förklara kort /** Här kommer en text som förklarar just vad den efterföljande metoden gor, och hur den används. Om vi skriver flera rader sa bör den första vara en sammanfattning. */ public void donothing(){ /* Här kommer implementationstekniska förklaringar som rör hur just den här algoritmen fungerar. */ boolean unused = true;
Kommentarer för dokumentation /** Först kommer den kommentar som förklarar klassen och beskriver den i stora drag. Här kan vi också ha copyright, mm */ public class DemoClass{ /** Här beskriver vi fälten */ public int d = 4; // Här kan vi förklara kort /** Här kommer en text som förklarar just vad den efterföljande metoden gor, och hur den används. Om vi skriver flera rader sa bör den första vara en sammanfattning. */ public void donothing(){ /* Här kommer implementationstekniska förklaringar som rör hur just den här algoritmen fungerar. */ boolean unused = true;
Kommentarer för dokumentation /** Först kommer den kommentar som förklarar klassen och beskriver den i stora drag. Här kan vi också ha copyright, mm */ public class DemoClass{ /** Här beskriver vi fälten */ public int d = 4; // Här kan vi förklara kort /** Här kommer en text som förklarar just vad den efterföljande metoden gor, och hur den används. Om vi skriver flera rader sa bör den första vara en sammanfattning. */ public void donothing(){ /* Här kommer implementationstekniska förklaringar som rör hur just den här algoritmen fungerar. */ boolean unused = true;
http://www.csc.kth.se/utbildning/kth/kurser/dd1339