Survey
* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project
SOFTWARE AND PROGRAMMING 1 Lecture 2, 2010 Labs start 20.01.2010: DCSIS room 131 SH room B29 LAB Lecture 6.00 - 7.30 7.30 - 9.00 EACH student must have obtained access to Birkbeck computing by 20.01.10 – otherwise no use in the lab Instructor: Prof. Boris Mirkin SCSIS, room 111, tel. 020 7631 6746 E-mail: [email protected] Course Assistant: Webpages Course web page at BlackBoard: http://www.ble. ac.uk Please check it regularly. It will be used for announcements and assignments. Another page, at an open-to-all website, functions with relevant materials too: www.dcs.bbk.ac.uk/~mirkin/sp109 2 Concepts from lecture 1 • Compiler (javac.exe) and Interpreter (java.exe), should be on system’s path • JDK and BlueJ for running Java • Class (template) and Object (its instantiation); every Java program must be a class • Variable and its type; primitive types • Method (input-to-output operation) and its Parameters (inputs - with their types at method’s declaration) 3 Concepts for tonight • • • • • • Casting of primitive data types Boolean expression Loops for, while Choice structure if/elseif/else Strings Input • Using TextIO class • Using Scanner 4 Unifying type Look at A=6.0+5 What type of A can be? Can A be Integer? No way. Unifying type: float or double 5 Type casting The unifying type can be overridden by explicitly stating a type cast: • Place the desired type result in parentheses followed by the variable or constant to be cast (int) 6.0+7 13 Example: int bankbalance=931786; float weeklybudget = (float) bankbalance /4; Another way: float weeklybudget = bankbalance /4.0; 6 Boolean expressions: true or false • • |, || or 5==(1+3+7) | a+b==b+a • • • • • E1 0 1 0 1 E2 0 0 1 1 E1|E2 0 1 1 1 • &, && and • ! not • == equal to • < less than • > greater than • <= < or == • >= > or == Always after arithmetic; If not sure, use parentheses (…): first performed inside 7 Condition int x=2; x+4*2 > 5 true at what x is this false? int x=3; int y=1; x-4 == 1.5*(y+2) can this be true? 8 Precedence table 9 Loop for for(int var=1;var<=st;var=var+1) {do operations depending on var} var=var+1 is var++ • Two types of parentheses: (loop control) and {body to do operations} • Three items in control ( ): – initialising the counting variable once, – variable update, and – stop-condition • Exit from the loop – only from within control ( … ) 10 Loop for for(int var=1;var<=st;var++) % no ‘;’ here!!! {do operations depending on var} Two types of parentheses: (loop specified) and {body to do} • The expression in loop control “()” consists of three items in this order – initialising the counting variable once – stop-condition – variable update • First, – var is initialised, – stop-condition is tested; • if true, block {} is executed, • if no, the program proceeds further on, after the block { } – control returns to ( ) • After control returns to ( ), – var is updated; – stop-condition is checked; • if true, block {} is executed, then control returns to ( ), • if no, the program proceeds further on, after the block { } 11 Loop while: less rigid for(init; test; update){ statements } All three in the parentheses refer to a counter that is initialised, updated and tested over reaching the pre-specified threshold Structure of while loop contains same elements – init, test and update – but less rigid, not necessarily based on counter but rather on a condition; while’s structure: init; while(test){ statements; update } Similar elements: ( ), { }, initialisation, test condition (not necessarily involving the counter!), and update 12 Example: for (int K = 10; K > 1 ; K--) { //k-- is k=k-1; if (K < 7) { break; } // Stops execution of the loop else System.out.print(“ ” + K); } 1. What this loop does? 2. Can it be rewritten in the while format? 13 Example: answer 1 for (int K = 10; K > 1 ; K--) { if (K < 7) { break; } else { System.out.print(“ ” + K);} } What this loop does? Prints 10 9 8 7 14 Example: answer 2 int K = 10; while(K >1) { if (K< 7) break; else System.out.print(“ ” + K); K--; } 15 BlueJ HelloWorld N times public class HelloN { int number; \\ variable declared public void go() { System.out.println("Hello, world"); } public HelloN(int howmany) {number=howmany; } \\constr-r to initialise an object public void prrt() \\printing number times { for(int i=1;i<=number;i++) \\loop go(); 16 Three branching structures (1) Do under a condition; otherwise do nothing [if… structure] if(BooleanExpr) Statement or if(BooleanExpr) {Statements} (2) Do under a condition; otherwise do differently [if…else… structure] if(BooleanExpr) {Statements1} else {Statements2} 17 Java branching structure (3): (3) Several conditions to do differently [if…else if… … else if… else structure] if(BoolExpr1) Statement1; else if(BoolExpr2)\\and not BoolExpr1 Statement2; else \\ (not BoolExpr1) and (not BoolExpr2) Statement3; • Note NO Bool. Exp at else 18 If/else example • Ticket’s price is £5, 60+ concession £3, children 12 or less go for free • Need a variable for the age, say YourAge, and the price, say Price; • The fragment can be as: if (YourAge<=12) Price=0; else if (YourAge<=60) Price=5; else //note NO CONDITION to be put here Price=3; 19 Statements • • • • • Assignment (followed by ;) Method call (followed by ;) if/ifelse/else (block, no ;) for/while loop (block, no ;) break (followed by ;) 20 Double loop with method class ATM { public static void main (String[] args) { PrTab(2,4); }\\end main static PrTab(int rowsize, int columnsize){ for (int i1=1;i1<rowsize+1; i1++){ System.out.print(i1 + " ! "); for (int i2=1;i2<columnsize+1; i2++){ sum=i1+i2; System.out.print(sum +" ");} System.out.println();} } }\\end class 21 This produces: produces 1! 2 3 4 5 2! 3 4 5 6 3! 4 5 6 7 Q: How to make the print look better? (See printing method in TicketMachine – next time.) Q: How to modify table to other ranges? Q: Make a MULTIPLICATION TABLE? 22 Input/Output TextIO class TextIO.java, added to the directory that contains your class, eases input of data from the keyboard To input an integer: int UsInput = TextIO.getInt(); Computer will wait for the user to type in an integer value to UsInput. 23 Input/Output TextIO class (2) public class PrintSquare { public static void main(String[] args) { int uInput; // the number to be input by the user int Squared; // the userInput, multiplied by itself System.out.print("Please type a number: "); uInput = TextIO.getInt(); Squared = uInputuInput; //why product? System.out.print("The square is "+Squared); } // end of main() } //end of class PrintSquare 24 Input/Output TextIO class (3) Other TextIO methods: b = TextIO.getByte(); // value read is a byte i = TextIO.getShort(); // value read is a short j = TextIO.getInt(); // value read is an int k = TextIO.getLong(); // value read is a long x = TextIO.getFloat(); // value read is a float y = TextIO.getDouble(); // value read is a double a = TextIO.getBoolean(); // value read is a boolean c = TextIO.getChar(); // value read is a char w = TextIO.getWord(); // value read is a String s = TextIO.getln(); // value read is a String 25 Input/Output in Java The TextIO class contains static member methods TextIO.put() and TextIO.putln(), the same as System.out.print() and System.out.println(). TextIO can only be used in a program if TextIO is available to that program. It is not built into Java. From Java 1.5.0 version on, there is a similar class in Systems.in: Scanner 26 Input with Scanner class(1) From Java 1.5.0 version on, there is a similar class in System.in. Scanner(System.in): - import the java.util package in a line preceding the class, - then declare an instance of Scanner and - then use it for prompting the user to enter data (of a specified data type, preferably int, nextInt(), or double, nextDouble()) from keyboard 27 Input with Scanner class (2) import java.util.* class PrintDot{ int num=0; public static void main(String[ ] args){ Scanner scap = new Scanner(System.in); System.out.println(“How many dots to print? “); num=scap.nextInt(); for (int ik=0; ik<num; ik++) System.out.print(‘.’); System.out.println(); } \\end of main } \\end of class [footnote: will not compile!!!] 28 Using method with Scanner import java.util.* class PrintDot{ int number=0; public static void main(String[ ] args){ Scanner scap = new Scanner(System.in); System.out.println(“How many ampersands to print? “); number=scap.nextInt(); ppp(number); } \\end of main void ppp(nnn) { for (ik=0; ik<nnn; ik++) System.out.print(‘&’); System.out.println(); } \\end of ppp } \\end of class 29 Strings(1) Declaring a String Object String variable • An object of the class String – The class String is defined in java.lang.String and is automatically imported into every program Create a String object by using the keyword new and the String constructor method • String aGreeting = new String(“Hello”); or by assigning an actual string String aGreeting = “Hello”; 30 Strings(2) Comparing String Values • Strings are never actually changed; instead new Strings are created and String variables hold the new addresses; A part of the Java system called the garbage collector discards the unused strings • Strings are not numbers; arithmetic and logic Java operations are not applicable. To compare Strings, a number of methods are utilised: – equals() method if s1 and s2 are declared and initialised as String: s1.equals(s2) true if s1 and s2 are exactly the same sequences of characters NEVER s1==s2 !!! This is wrong, == applies to numbers only. 31 Strings(3) Comparing String Values Try "HaHaHa ” "haHaHa" (2 differences) s1.length() number of characters in s1 charAt() method requires an integer argument which indicates the position of the character that the method returns s1.charAt(N) N-th character in s1 starting from N=0) String ss= “Look at you!”; Q. What is ss.charAt(3)? ss.charAt(7)? ss.charAt(17)? A. In respect, ‘k’, ‘ ’ , and error] 32 Strings(4) s1.substring(N,M) part of s1 in positions N, N+1, ..., M-1 (positions are numbered from 0 !!!) String ss= “Look at you!”; What is ss.substring(3,7)? Concatenation Concatenation - Joining strings, can be done with symbol + “45” + “36” = “4536” 33 Class Math (no need to import) Math.pi =3.14…, the ratio of the circumference to its diameter Math.abs(a) a if a >= 0, or -a if a < 0 Math.log(a) the natural logarithm (base e) of number a square root of number a Math.sqrt(a) Math.pow(a,b) ab ; if b is an integer then ab =aa…a (b times) 34 Math.random() pseudorandom number: double within interval [0.0, 1.0) (zero included, unity not) How to use it to generate a random integer between 1 and 6 (inclusive), to imitate casting a dice? 35 Casting a dice double aa=Math.random(); //aa, a real number between 0 and 1 int an= 6*aa; //a real number between 0 and 6 int rand=(int) an; // whole number between 0 and 5 int randw=rand+1; // whole number between 1 and 6 The same in one line: int randw= (int) (6*Math.random()+1); 36 Casting a dice question How to generate a random integer between 10 and 20 inclusive? Answer: int rdt= (int) (11*Math.random()+10); Another possibility: using class Random with import java.util.Random 37 This is what was covered tonight • • • • • • • • Primitive type casting Boolean expression Loop for, while Double loop Choice structure if/elseif/else Input from keyboard classes String Math 38