SOFTWARE AND PROGRAMMING 1 Lecture: Gor B4 7:40-9:00 (from ) Lab: SH131, BBK536 6:00-7:30 (from ) [each student must have obtained access to Birkbeck computing] Lab SH131: students whose family names (surnames) begin A-L Instructor: Ms Marie-Helene Ng SCSIS, room NG26, tel Lab BBK536 : students whose family names (surnames) begin M-Y Instructor: Prof. Boris Mirkin SCSIS, room 111, tel
2 Webpages Course web page at webCT: 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:
3 Formerly Recommended Texts 1.David J. Barnes & Michael Kölling Objects First with Java: A Practical Introduction using BlueJ, Second edition, Pearson Education, 2005, ISBN The publisher supplies a helpline (team’s telephone included) in installing the related software 2. J. Farrell Java Programming, Second edition, Course Technology, Thompson, 2003, ISBN I. Pohl, C. McDowell Java by dissection, Addison-Wesley, 2000, ISBN Free: ON-LINE text by D. Eck (on my web site) and other useful URLs
4 Currently Recommended Text Q. Charatan, A. Kans Java in Two Semesters, Second edition, The McGrow-Hill Education, 2006, ISBN In fact, either will do. One more: Edward Currie (2006), Fundamentals of Programming Using Java, Thomson Learning, ISBN-10: This book contains well explained examples but covers not all the material: an excellent text for slow learners.
5 Available on BBK’s network –Java JDK (which allows you to compile and execute your program) –BlueJ (Preferred editor) Installing BlueJ (for home use) –First download the Java JDK from –Download BlueJ from –Run “ bluejsetup-202.exe” and follow the given instructions Software is free
6 Conventional JDK: Editing A source code can be edited in any text editor: Notepad, emacs, PFE,... MS Word caveat: by default, Word does not save in ASCII text format Make sure to save the code before compiling! The file name: the same as that of the class, with extension: say, class NicTe{…} must be saved as file NicTe.java, case sensitive
7 Compiling with JDK Name of the JDK compiler: javac To invoke: javac compiles and all classes it depends on into an executable on JVM file.class Example: javac NicTe.java produces file NicTe.class
8 Execution “java” starts the Java virtual machine: java NicTe The named class is loaded and execution is started. Other classes are loaded as needed. Only possible if class has been compiled into a file, say, NicTe.class
9 Getting JDK on a system’s path Click “Properties” on right-buttoned “My computer” Click “Advanced” Click “Environmental variables” Enter new path (to the directory in which javac.exe and java.exe reside)
10 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-output operation) and its Parameters (inputs - with their types at method’s declaration)
11 Concepts to be learnt Arithmetic expression and precedence Casting Boolean expression Statement Loops for, while Choice structure if/elseif/else
12 Five arithmetic operations in Java * multiplication 5 3=15 /division 36/9=4, 39/9=4, 39/50=0 (integers) 36.0/9=4.0, 39.0/9= , 39.0/50=0.78 (reals) %remainder 36%9=0, 39%9=3, 39%50=39 +summation5 + 3 = 8 -subtraction5 – 3 = 2 Other operators such as Abs or exp or log are in class Math of Java (to be explained later)
13 Arithmetic expressions Precedence : */% first, then +- If not sure, use (…): first performed inside 2 * 6 / – 2 * 3 = – 6 = 2 (integers) 2 * 6.0 / (4 + 5) – 2 * 3 = 12.0/9 – 6 = – 4.67 (reals are here) 2 * 6 / 4 + (5 – 2) * 3 = 12
14 Unifying Type Unifying Type: The type of result when calculations use different types Order for Implicitly Establishing Unifying Type: double float long int short byte
15 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;
16 Boolean expressions: true or false |, || or &, && and !not ==equal to <less than >greater than <=< or == >=> or == Always after arithmetic; If not sure, use parentheses (…): first performed inside
17 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?
18 Precedence table
19 Loop for for(int var=1;var<=st;var++) % no ‘;’ here!!! { do operation depending on var } var++ is var=var+1, not var=var+2; Two types of parentheses: (loop specified) and {body to do} The expression in () consists of three items in this order: –initialising the counting variable once, –variable update, and –stop-condition First, –var is intialised, –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 { }
20 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, less rigid – init, test and update are not necessarily based on counter: init; while(test){ statements; update } Similar elements: ( ), { }, initialisation, test condition (not necessarily involving the counter!), and update
21 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?
22 Example: answer 1 for (int K = 10; K > 1 ; K--) { if (K < 7) { break; } else { System.out.print(“ ” + K);} } What this loop does? Prints
23 Example: answer 2 int K = 10; while(K >1) { if (K< 7) break; else System.out.print(“ ” + K); K--; }
24 Simplest program /* HelloWorld.java Purpose: printing a message to the screen */ class HW { // Each program is organised as a class public static void main(String[] args) { System.out.println("Hello, World!"); } } // end of class HW /* Always Three Types of Elements ONLY: comments class (with modifiers) methods (with modifiers and parameters)*/
25 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"); } }
26 No { } in for-loop in HelloN Why? A: Because loop covers one next statement y default Let us add { }: where? Is there any difference between before and after “ok”? A: Yes, there is. If after, HW and ok alternate in the out-print.
27 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}
28 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
29 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 here Price=3;
30 Statements Assignment (followed by ;) Method call (followed by ;) if/ifelse/else (block, no ;) for/while loop (block, no ;) break (followed by ;)
31 This is what was covered tonight Arithmetic expression and precedence Casting Boolean expression Statement Loop for Loop while Choice structure if/elseif/else