software and programming 1

48
SOFTWARE AND PROGRAMMING 1 Lecture 2, 2011 Instructor: Prof. Boris Mirkin DCSIS, room 744, tel. 020 7631 6746 E-mail: [email protected] Labs: from 26/1, 7.30 pm, in Room B12, UCL Cruciform Building Logins will be given to those attending Course Assistant: Lab/WebCT/Tests/Assignments: Mr Martin O’Shea E-mail: [email protected] (3) to formatting all tables.

Upload: chill

Post on 05-Jan-2016

42 views

Category:

Documents


0 download

DESCRIPTION

SOFTWARE AND PROGRAMMING 1. (3) to formatting all tables. Lecture 2, 2011 Instructor: Prof. Boris Mirkin DCSIS, room 744, tel. 020 7631 6746 E-mail: [email protected] Labs: from 26/1, 7.30 pm, in Room B12, UCL Cruciform Building Logins will be given to those attending - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: SOFTWARE AND PROGRAMMING 1

SOFTWARE AND PROGRAMMING 1

Lecture 2, 2011

Instructor: Prof. Boris MirkinDCSIS, room 744, tel. 020 7631 6746E-mail: [email protected]

Labs: from 26/1, 7.30 pm, in Room B12, UCL Cruciform BuildingLogins will be given to those attending Course Assistant:

Lab/WebCT/Tests/Assignments: Mr Martin O’SheaE-mail: [email protected]

(3) to formatting all tables.

Page 2: SOFTWARE AND PROGRAMMING 1

2

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 web-site, functions with relevant materials too:www.dcs.bbk.ac.uk/~mirkin/sp109

Page 3: SOFTWARE AND PROGRAMMING 1

3

Concepts to keep in mind• 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)

Page 4: SOFTWARE AND PROGRAMMING 1

4

Concepts for tonight• Loops for, while (Have been taught 12/1, but are in this

note set)

• Expressions• Choice structure if/elseif/else• Method• Strings• Math and random• Input

•Using TextIO class•Using Scanner

Page 5: SOFTWARE AND PROGRAMMING 1

5

Type in Java

Next few slides cover some material on

unifying data types and expressions that was talked about at the previous lecture

Page 6: SOFTWARE AND PROGRAMMING 1

6

Unifying type

Look atA=6.0+5

What type of A can be? Can A be Integer?

No way. A most senior type!

Unifying type: float or double

Page 7: SOFTWARE AND PROGRAMMING 1

7

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 13Example:

int bankbalance=931786;float weeklybudget = (float) bankbalance /4;

Another way:float weeklybudget = bankbalance /4.0;

Page 8: SOFTWARE AND PROGRAMMING 1

8

Boolean expressions: true or false• |, || or• 5==(1+3+7) | a+b==b+a

• E1 E2 E1|E2• 0 0 0• 1 0 1• 0 1 1• 1 1 1

• &, && and• ! not• == equal to• < less than• > greater than• <= < or ==• >= > or ==Always after arithmetic; If not sure, useparentheses (…): first performed inside

Page 9: SOFTWARE AND PROGRAMMING 1

9

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?

Page 10: SOFTWARE AND PROGRAMMING 1

10

Precedence table

Page 11: SOFTWARE AND PROGRAMMING 1

11

A simple program/* HelloWorld.java Purpose: printing a message to the screen */ class HelloWorld {

// Each program is organised as a class         public static void main(String[] args) {          System.out.println("Hello World!");         } } // end of class HelloWorld /* Always Three Types of Elements ONLY: -comments-class (with modifiers)-methods (with modifiers & parameters/arguments) */

Page 12: SOFTWARE AND PROGRAMMING 1

12

More on Method

Method in Java is a named set of instructions that transforms some input into an output. This is, actually, a machine implementation of the concept of algorithm which itself is a computational analogue to the mathematical concept of function.

Static method: is shared by all instances.

Page 13: SOFTWARE AND PROGRAMMING 1

13

Example of a method (1)Square function y = x2 (an infinite Table)x               y 1                1 2                4 ................5               25................11            121................

The table can be used for invoking a specific value, like, 72 = 49 or 102 = 100.

Page 14: SOFTWARE AND PROGRAMMING 1

14

Example of a method (2) A Java method to calculate the square function: 

public int sq(int x){return xx;} To make it work, variables are needed:

int sevs=sq(7); //puts 49 into sevs

int tens=sq(10);// puts 100 into tens

Page 15: SOFTWARE AND PROGRAMMING 1

15

Structure of a method

modifiers return-type name ( parameter-list ) {

statements;return variable/expression;   //if return type is not void

}Modifiers:

– static -       method/variable that belongs to class as whole and is shared by all instances

– public -    method/variable that is accessible from anywhere

– private -    method/variable that is accessible from only within the class

Output’s type Inputs

Page 16: SOFTWARE AND PROGRAMMING 1

16

HelloWorld with a method// Hello-world program to demonstrate BlueJ

class Hello{ // Method that does the work of printing

public void go() { System.out.println("Hello, world"); } // main method for working outside BlueJ

public static void main(String[] args) { Hello hi = new Hello(); //instance

hi.go(); //method in instance hi

}}

Page 17: SOFTWARE AND PROGRAMMING 1

17

HelloWorld : WHY

Why dots in System.out.println("Hello, world"); hi.go();

?1) To take method from a specific class

instance2) To take a class from a set of classes: Java is

organised as a hierarchically structured set of classes in individual files

Page 18: SOFTWARE AND PROGRAMMING 1

18

Loop forfor(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 ( … )

Page 19: SOFTWARE AND PROGRAMMING 1

19

Loop forfor(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 { }

Page 20: SOFTWARE AND PROGRAMMING 1

20

HelloWorld N times BlueJpublic class HelloN { int number; \\ variable declared

public void go() { System.out.println("Hello,

world"); } public HelloN(int howmany) {number=howmany; } \\constr to initialise

object

public void prrt() \\printing number times

{ for(int i=1;i<=number;i++) \\loop

go(); System.out.println("ok"); } }

Page 21: SOFTWARE AND PROGRAMMING 1

21

No { } in for-loop in HelloN

Why?Let us add { }: where?

Is there any difference

between before and after “ok”?

Page 22: SOFTWARE AND PROGRAMMING 1

22

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

Page 23: SOFTWARE AND PROGRAMMING 1

23

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?

Page 24: SOFTWARE AND PROGRAMMING 1

24

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

Page 25: SOFTWARE AND PROGRAMMING 1

25

Example: answer 2 int K = 10;

while(K >1) {

if (K< 7)

break;

else

System.out.print(“ ” + K);

K--;

}

Page 26: SOFTWARE AND PROGRAMMING 1

26

BlueJ HelloWorld N timespublic 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"); } }

Page 27: SOFTWARE AND PROGRAMMING 1

27

Three branching structures

(1) Do under a condition; otherwise do nothing [if… structure]

if(BooleanExpr) Statement orif(BooleanExpr) {Statements}

(2) Do under a condition; otherwise do differently [if…else… structure]

if(BooleanExpr)

{Statements1}

else

{Statements2}

Page 28: SOFTWARE AND PROGRAMMING 1

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

Page 29: SOFTWARE AND PROGRAMMING 1

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 to be put here

Price=3;

Page 30: SOFTWARE AND PROGRAMMING 1

30

Statements

• Assignment (followed by ;)• Method call (followed by ;)• if/ifelse/else (block, no ;)• for/while loop (block, no ;)• break (followed by ;)

Page 31: SOFTWARE AND PROGRAMMING 1

31

Double loop with methodclass 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

Page 32: SOFTWARE AND PROGRAMMING 1

32

This produces:produces1! 2 3 4 52! 3 4 5 63! 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?

Page 33: SOFTWARE AND PROGRAMMING 1

33

Input/Output TextIO classTextIO.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.

Page 34: SOFTWARE AND PROGRAMMING 1

34

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

Page 35: SOFTWARE AND PROGRAMMING 1

35

Input/Output TextIO class (3)

Other TextIO methods:b = TextIO.getByte(); // value read is a bytei = TextIO.getShort(); // value read is a shortj = TextIO.getInt(); // value read is an intk = TextIO.getLong(); // value read is a longx = TextIO.getFloat(); // value read is a floaty = TextIO.getDouble(); // value read is a doublea = TextIO.getBoolean(); // value read is a booleanc = TextIO.getChar(); // value read is a charw = TextIO.getWord(); // value read is a Strings = TextIO.getln(); // value read is a String

Page 36: SOFTWARE AND PROGRAMMING 1

36

Input/Output in JavaThe 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

Page 37: SOFTWARE AND PROGRAMMING 1

37

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

Page 38: SOFTWARE AND PROGRAMMING 1

38

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!!!]

Page 39: SOFTWARE AND PROGRAMMING 1

39

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

Page 40: SOFTWARE AND PROGRAMMING 1

40

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”;

Page 41: SOFTWARE AND PROGRAMMING 1

41

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.

Page 42: SOFTWARE AND PROGRAMMING 1

42

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]

Page 43: SOFTWARE AND PROGRAMMING 1

43

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”  

Page 44: SOFTWARE AND PROGRAMMING 1

44

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) ab ; if b is an integer

then ab =aa…a (b times)

Page 45: SOFTWARE AND PROGRAMMING 1

45

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?

 

Page 46: SOFTWARE AND PROGRAMMING 1

46

Casting a dicedouble aa=Math.random();

//aa, a real number between 0 and 1int an= 6*aa; //a real number between 0

and 6int rand=(int) an;

// whole number between 0 and 5int randw=rand+1;

// whole number between 1 and 6 The same in one line:int randw= (int) (6*Math.random()+1); 

Page 47: SOFTWARE AND PROGRAMMING 1

47

Casting a dice questionHow to generate a random integer

between 10 and 20 inclusive? Answer:int rdt= (int) (11*Math.random()+10);

 Another possibility: using class

Randomwithimport java.util.Random

Page 48: SOFTWARE AND PROGRAMMING 1

48

This is what was covered tonight

• Primitive type casting• Boolean expression, statements• Concept of method – a touch• Loop for, while in a method• Double loop• Choice structure if/elseif/else• Input from keyboard classes• String• Math