Download presentation
Presentation is loading. Please wait.
Published byElisabeth Dorsey Modified over 8 years ago
1
SOFTWARE AND PROGRAMMING 1 Lecture 2, 2010 Labs start 20.01.2010: DCSIS room 131 LAB6.00 - 7.30 SH room B29 Lecture7.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: mirkin@dcs.bbk.ac.uk Course Assistant: Lab/WebCT/Tests/Assignments: Mr Martin O’Shea E-mail: martin@dcs.bbk.ac.uk
2
2 Webpages Course web page at BlackBoard: http://www.ble. ac.uk http://www.ble. ac.uk Please check it regularly. It will be used for announcements and assignments. Another page, at an open-to-all web- site, functions with relevant materials too: www.dcs.bbk.ac.ukwww.dcs.bbk.ac.uk/~mirkin/sp109
3
3 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)
4
4 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
5
5 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
6
6 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;
7
7 Boolean expressions: true or false |, || or 5==(1+3+7) | a+b==b+a E1 E2 E1|E2 000 101 011 111 &, && and !not ==equal to <less than >greater than <=< or == >=> or == Always after arithmetic; If not sure, use parentheses (…): first performed inside
8
8 Condition int x=2; x+4*2 > 5true at what x is this false? int x=3; int y=1; x-4 == 1.5*(y+2) can this be true?
9
9 Precedence table
10
10 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 ( … )
11
11 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 { }
12
12 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
13
13 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?
14
14 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
15
15 Example: answer 2 int K = 10; while(K >1) { if (K< 7) break; else System.out.print(“ ” + K); K--; }
16
16 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(); System.out.println("ok"); } }
17
17 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}
18
18 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
19
19 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;
20
20 Statements Assignment (followed by ;) Method call (followed by ;) if/ifelse/else (block, no ;) for/while loop (block, no ;) break (followed by ;)
21
21 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
22
22 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?
23
23 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.
24
24 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 = uInput uInput; //why product? System.out.print("The square is "+Squared); } // end of main() } //end of class PrintSquare
25
25 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
26
26 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
27
27 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
28
28 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 } \\end of class [ footnote: will not compile!!!]\\end
29
29 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
30
30 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”;
31
31 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 i f 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.
32
32 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]
33
33 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”
34
34 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 Math.sqrt(a) square root of number a Math.pow(a,b)a b ; if b is an integer then a b =a a … a (b times)
35
35 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?
36
36 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);
37
37 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
38
38 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
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.