38
CSCI1402: Lecture 1 Week 2 CSCI1402: Lecture 1 Week 2 Dr. David A. Elizondo Centre for Computational Intelligence School of Computing Office: Gateway 6.61 email: [email protected]

CSCI1402: Lecture 1 Week 2 Dr. David A. Elizondo Centre for Computational Intelligence School of Computing Office: Gateway 6.61 email: [email protected]

  • View
    218

  • Download
    2

Embed Size (px)

Citation preview

Page 1: CSCI1402: Lecture 1 Week 2 Dr. David A. Elizondo Centre for Computational Intelligence School of Computing Office: Gateway 6.61 email: elizondo@dmu.ac.uk

CSCI1402: Lecture 1 Week 2CSCI1402: Lecture 1 Week 2

Dr. David A. Elizondo

Centre for Computational Intelligence

School of Computing

Office: Gateway 6.61

email: [email protected]

Page 2: CSCI1402: Lecture 1 Week 2 Dr. David A. Elizondo Centre for Computational Intelligence School of Computing Office: Gateway 6.61 email: elizondo@dmu.ac.uk

Computer StorageComputer Storage

Variables store values (data) Identifiers are names for variables Type is a set of values which can be stored in a variable A computer can represent data by using two states: high

voltage & low voltage. Represented by binary digits : digit 1 digit 0

Combinations of these digits allow representation of numbers and characters in the computer memory.

Characters are mapped onto a numerical code. (Unicode, ASCII)

One bit = a binary digit with value 1 or 0 One byte = a sequence of 8 bits One word = a smallest unit of computer memory (with16,

32, 48, 60 or 64 bits)

Page 3: CSCI1402: Lecture 1 Week 2 Dr. David A. Elizondo Centre for Computational Intelligence School of Computing Office: Gateway 6.61 email: elizondo@dmu.ac.uk

Computer memoryComputer memory

It consists of cells Cell capacity = word size of the computer. The cells are numbered consecutively from zero.

The numbers are called addresses. Each cell has a unique address and can store simple data.

More complicated data structures are stored in consecutive cells.

Page 4: CSCI1402: Lecture 1 Week 2 Dr. David A. Elizondo Centre for Computational Intelligence School of Computing Office: Gateway 6.61 email: elizondo@dmu.ac.uk

Data typesData types

Data type is defined as a range of values + types of operators

Each data type (and its operations) takes up different size in the computer memory.

WHY do we need different data types? allowing for different types of operation, different precision economy of memory storage and speed of

processing

Page 5: CSCI1402: Lecture 1 Week 2 Dr. David A. Elizondo Centre for Computational Intelligence School of Computing Office: Gateway 6.61 email: elizondo@dmu.ac.uk

Data TypesData Types

Java is strongly typed language: Every variable must have a declared type All expressions and values have a certain type All operations are checked by the compiler for

compatibility. Advantage: prevention of errors, better

reliability

Page 6: CSCI1402: Lecture 1 Week 2 Dr. David A. Elizondo Centre for Computational Intelligence School of Computing Office: Gateway 6.61 email: elizondo@dmu.ac.uk

Simple Data Types in JavaSimple Data Types in Java

Java has two forms of data types - simple types and objects

Simple types represent individual values. Object data types are more complex. Java has eight simple (primitive or elemental)

types. Range of sizes : 1 bit to 64 bits of memory.

Page 7: CSCI1402: Lecture 1 Week 2 Dr. David A. Elizondo Centre for Computational Intelligence School of Computing Office: Gateway 6.61 email: elizondo@dmu.ac.uk

Simple Data Types in JavaSimple Data Types in Java

Numerical types : byte, short, int, long, float, double

Boolean type : boolean represents the truth value

Character type : char represents characters from the Unicode character set defined by the ISO (International Standards Organisation).

Java is prescriptive about the sizes and ranges of values of its simple types.

This is important for the portability of the programs.

Page 8: CSCI1402: Lecture 1 Week 2 Dr. David A. Elizondo Centre for Computational Intelligence School of Computing Office: Gateway 6.61 email: elizondo@dmu.ac.uk

The Integer TypesThe Integer Types

Type: byte, short, int, long Values: positive and negative integers (whole

numbers) Integer Ranges

size in bits range of values

byte 8 (a single byte) -128 to`+127

short 16 - 32 768 to +32 767

int 32 -2 147 483 648 to +2 147 483 647

long 64 -9 223 372 036 854 775 808 to +9 223 372 036 854 775 807

Page 9: CSCI1402: Lecture 1 Week 2 Dr. David A. Elizondo Centre for Computational Intelligence School of Computing Office: Gateway 6.61 email: elizondo@dmu.ac.uk

The Integer TypesThe Integer Types

Possible representation byte - ordinary small whole numbers - the traffic lights,

the colours of the rainbow, the numbers of letters in the alphabet, tracks on a CD, etc.

Byte is mostly used to represent the raw binary data being processed by a program from an external source (such as an encrypted message passed across a network, or the compressed version of a data file).

short - adequate for relatively small values - the numbers of cards in a player's hand, channels on a TV set, people in an organization, ships in a harbour etc. This type is stored in a special format, applicable to 16-bit computers.

Page 10: CSCI1402: Lecture 1 Week 2 Dr. David A. Elizondo Centre for Computational Intelligence School of Computing Office: Gateway 6.61 email: elizondo@dmu.ac.uk

The Integer TypesThe Integer Types

int is most frequently used type, numbers are in tens of thousands and small billions - populations of European countries, number of aphids in a field of barley, number of positions analysed per second by a PC-based chess program….

long type should be used for larger whole-number quantities, - elapsed time in milliseconds, total world population etc. the int type is most used For wider range use type long

Page 11: CSCI1402: Lecture 1 Week 2 Dr. David A. Elizondo Centre for Computational Intelligence School of Computing Office: Gateway 6.61 email: elizondo@dmu.ac.uk

The Integer TypesThe Integer Types

Example:

/* Length of the Equator is 40,075 km, compute its length in cm */

int lengthInKm= 40075;

int lengthInCm= 40075 * 100000; //error !

System.out.println(lengthInCm);

When the expression is evaluated, the final value of the lengthInCm is too big. We need to change the variable to type long.

Page 12: CSCI1402: Lecture 1 Week 2 Dr. David A. Elizondo Centre for Computational Intelligence School of Computing Office: Gateway 6.61 email: elizondo@dmu.ac.uk

The Floating Point TypesThe Floating Point Types

The floating point types are used to represent values from the set of real numbers, numbers with an integer and a fractional part - for example 3.4 , 0.0, -7.33, -11.019 .

Java uses the IEEE 754-1985[Ins85] standard for representing floating point numbers and performing calculations using these types.

The E format suffix permits using exponent notation, using an upper or lower case e character.

The exponent e denotes the power of 10. For example

3.92e +5 denotes 3.92 * 105 or 392,000

3.92e -5 denotes 3.92 * 10-5 or 0.0000392

Page 13: CSCI1402: Lecture 1 Week 2 Dr. David A. Elizondo Centre for Computational Intelligence School of Computing Office: Gateway 6.61 email: elizondo@dmu.ac.uk

Floating Point RangesFloating Point Ranges

The size and approximate ranges of these types are as follows:

float occupies 32 bits and can store positive and negative values in range 1.4e-045 to

3. 4e+038 (accuracy to 7 significant digits) double occupies 64 bits and can store positive and

negative values in range 4.9e-324 to 1.8e+308 (accuracy to 15 significant digits)

Either type should be used where a fractional part may be needed to represent a value that is not a whole number.

For instance, the 100 metre athletics world record time in seconds, the number of light years to the nearest galaxy ,the mean mark obtained by all students taking an assignment (the individual marks might be whole numbers but the mean is probably a real number).

Page 14: CSCI1402: Lecture 1 Week 2 Dr. David A. Elizondo Centre for Computational Intelligence School of Computing Office: Gateway 6.61 email: elizondo@dmu.ac.uk

Floating Point RangesFloating Point Ranges

Type double can store values which are both bigger and more precisely represented than the float type. Applications should probably always use double in preference to float, where better precision is more important than conserving memory space.

The double type is also the default real type used by other parts of the Java language.

It is worth noting that some numbers cannot be exactly represented in either the double or the float types - numbers such as pi, l/3, and the square root of 2. Their values can only be approximated using the primitive real data types, either because they have an infinite number of decimal places or simply because the primitive data types have only a limited precision.

Page 15: CSCI1402: Lecture 1 Week 2 Dr. David A. Elizondo Centre for Computational Intelligence School of Computing Office: Gateway 6.61 email: elizondo@dmu.ac.uk

Floating Point RangesFloating Point Ranges

Example

/* calculate the cost of a product after a sales tax has been added */

double price, tax, cost ; //declaring three variables

price = 500; //set price

tax = 17.5; //set tax rate

cost = price * (1 + tax/100); //calculate cost

Question: Can we reduce the number of variables in the above code?

Page 16: CSCI1402: Lecture 1 Week 2 Dr. David A. Elizondo Centre for Computational Intelligence School of Computing Office: Gateway 6.61 email: elizondo@dmu.ac.uk

The Type charThe Type char

The type char occupies 16 bits. Each char holds a representation of one character from the ISO Unicode character set, such as A, x, %, 5, ? etc.

Unicode is a character code set where each character is mapped to a number. Unicode represents characters from all human languages, variety of symbols (punctuation, operators etc.) and non-printable control characters (carriage return, bell etc.)

Page 17: CSCI1402: Lecture 1 Week 2 Dr. David A. Elizondo Centre for Computational Intelligence School of Computing Office: Gateway 6.61 email: elizondo@dmu.ac.uk

The Type charThe Type char

ASCII - American Standard Code for Information Interchange - is a subset of the Unicode character set normally used on an English language keyboard.

Letters A - Z are mapped to numbers 65 - 90, a -z are mapped to numbers 97 - 122.

Questions : How many letters are there in the alphabet?

26 What is the code for letters X and x?

88, 120 Digits 0 -9 are mapped from 48 - to ?

57

Page 18: CSCI1402: Lecture 1 Week 2 Dr. David A. Elizondo Centre for Computational Intelligence School of Computing Office: Gateway 6.61 email: elizondo@dmu.ac.uk

The Type charThe Type char

Example://char variables: assigning and displaying values,//using arithmetic operatorspublic class UsingChars { public static void main (String args[]) { char ch, ch1; ch = 'A'; //ASCII value 65 System.out.println("value is " + ch); ch++; System.out.println("value is " + ch); ch1 = 90; //WHAT IS THE VALUE ?? System.out.println("value is " + ch1); int num = ch1 - ch; //'Z'-'B' System.out.println("result is " + num); num = 'Z'-'A'; System.out.println("result is " + num); }}

Page 19: CSCI1402: Lecture 1 Week 2 Dr. David A. Elizondo Centre for Computational Intelligence School of Computing Office: Gateway 6.61 email: elizondo@dmu.ac.uk

The Type charThe Type char

Program Output: value is Avalue is Bvalue is Zresult is 24result is 25

Page 20: CSCI1402: Lecture 1 Week 2 Dr. David A. Elizondo Centre for Computational Intelligence School of Computing Office: Gateway 6.61 email: elizondo@dmu.ac.uk

The boolean TypeThe boolean Type

The boolean type is used to represent a state that can only be either true or false. This requires only a single binary digit of memory. Java uses reserved words true and false to represent a boolean value.

Expressions that yield a Boolean value are commonly used to control the flow of execution through a sequence of statements. They are used as conditions for if-statements and in loops (to be discussed in later lectures).

boolean b, boo; b = true; boo = 1 > 10; System.out.println(b); //output is: . . . . . System.out.println(boo); //output is: . . . . .

Page 21: CSCI1402: Lecture 1 Week 2 Dr. David A. Elizondo Centre for Computational Intelligence School of Computing Office: Gateway 6.61 email: elizondo@dmu.ac.uk

Variable ScopeVariable Scope

Variable can be declared within any block A block is begun with an opening curly brace

and ended by a closing curly brace{

}

Each time you start a new block, you are creating a new scope.

A scope determines what objects are visible to other parts of your program and the lifetime of those objects.

Page 22: CSCI1402: Lecture 1 Week 2 Dr. David A. Elizondo Centre for Computational Intelligence School of Computing Office: Gateway 6.61 email: elizondo@dmu.ac.uk

Variable ScopeVariable Scope

Variables declared inside a scope are not visible (accessible) to code that is defined outside that scope.

Example:class ScopeDemo {

public static void main(String args [] ) {int x; // known to all code within mainint y; // known to all code within mainx = 10;y = 5;if (x == 10) { //start a new scope

//int y; // Error y is already declaredint z;z = 30;y = 20;System.out.println("Value of Y inside if -> " + y);

}System.out.println("Value of Y outside if -> " + y);//System.out.println("Value of Z outside if -> " + z); // Error z not known here

}}

Page 23: CSCI1402: Lecture 1 Week 2 Dr. David A. Elizondo Centre for Computational Intelligence School of Computing Office: Gateway 6.61 email: elizondo@dmu.ac.uk

Variable ScopeVariable Scope

The variables x and y are declared at the start of main()’s scope and accessible to all subsequent code within main().

Within the if block, z is declared. Thus, z is not visible outside the if block.

Value of Y inside if -> 20 Value of Y outside if -> 20

Page 24: CSCI1402: Lecture 1 Week 2 Dr. David A. Elizondo Centre for Computational Intelligence School of Computing Office: Gateway 6.61 email: elizondo@dmu.ac.uk

Life time of a variableLife time of a variable

public class VarInitDemo {

public static void main(String args []) {

int x;

for (x=0;x<3;x++) {

int y = -1; // y is init each time block is entered

System.out.println(“y is: ” + y);

y = 100;

System.out.println(“y is now: “ + y);

}

}

}

Page 25: CSCI1402: Lecture 1 Week 2 Dr. David A. Elizondo Centre for Computational Intelligence School of Computing Office: Gateway 6.61 email: elizondo@dmu.ac.uk

Life time of a variableLife time of a variable

Output generated:

y is: -1y is now: 100y is: -1y is now: 100y is: -1y is now: 100y is always reinitialized to -1 each time the inner for

loop is entered. The value of 100 is lost everytime.

Page 26: CSCI1402: Lecture 1 Week 2 Dr. David A. Elizondo Centre for Computational Intelligence School of Computing Office: Gateway 6.61 email: elizondo@dmu.ac.uk

The assignment operatorThe assignment operator

The assignment operator is the single equal sign, =.

var = expression

The type of var must be compatible with the type of expression.

Chain assignments are allowed:int x, y, z;x = y = z = 100; // set x, y, and z to 100

The value of z = 100 is 100, which is then assigned to y, which in turn is assigned to x.

Page 27: CSCI1402: Lecture 1 Week 2 Dr. David A. Elizondo Centre for Computational Intelligence School of Computing Office: Gateway 6.61 email: elizondo@dmu.ac.uk

Short hand assignmentsShort hand assignments

Short hand assignments simplify the coding of certain assignment statements.

x = x + 10; can be written as x += 10; x = x – 10; can be written as x -= 10; x = x * 10; can be written as x *= 10; x = x / 10; can be written as x /= 10;

Page 28: CSCI1402: Lecture 1 Week 2 Dr. David A. Elizondo Centre for Computational Intelligence School of Computing Office: Gateway 6.61 email: elizondo@dmu.ac.uk

Type conversion assignmentsType conversion assignments

It is common to assign one type of variable to another. An integer value can be assign to a float variable.

int i;

float f;

i = 10;

f = i; //assign an int to a float

The value of i is converted into a float, and then assigned to f.

Generally we can assign a value of any type in the list below to variables of any type which appears further down in the list:

byte short int long float double

Page 29: CSCI1402: Lecture 1 Week 2 Dr. David A. Elizondo Centre for Computational Intelligence School of Computing Office: Gateway 6.61 email: elizondo@dmu.ac.uk

Type conversion assignmentsType conversion assignments

Can be done if: The two types are compatible The destination type is larger than the source

type.

int x;double y;

y = 10.12;x = y // Error precision problem.

Page 30: CSCI1402: Lecture 1 Week 2 Dr. David A. Elizondo Centre for Computational Intelligence School of Computing Office: Gateway 6.61 email: elizondo@dmu.ac.uk

Type CastingType Casting

Is used for converting types in an assignment Involves changing the type of a value to another

compatible type The casting is done by placing brackets around

the name of target data type The cast operator is a unary operator (takes

one operand) Cast operators are available for any data type Syntax: (target-type) expression

Page 31: CSCI1402: Lecture 1 Week 2 Dr. David A. Elizondo Centre for Computational Intelligence School of Computing Office: Gateway 6.61 email: elizondo@dmu.ac.uk

Type CastingType Casting

Example - storing a double value in an integer variabledouble guess; //var of type doubleguess = 7.8; //assignment of correct typeint answer; //var of type int//answer = guess ; //illegal expressionanswer = (int)guess; //cast double to int//value of guess is 7.8 - not changed//value of answer is 7 - truncated

Page 32: CSCI1402: Lecture 1 Week 2 Dr. David A. Elizondo Centre for Computational Intelligence School of Computing Office: Gateway 6.61 email: elizondo@dmu.ac.uk

Type CastingType Casting

Change the code to : guess = 8; will this compile ? If so, will you still need to use casting?

Type Casting of characters and integers char symbol = '7'; //display the numerical value of var symbol System.out.println((int)symbol); //The output

is: . . .

Page 33: CSCI1402: Lecture 1 Week 2 Dr. David A. Elizondo Centre for Computational Intelligence School of Computing Office: Gateway 6.61 email: elizondo@dmu.ac.uk

Type Conversion in expressionsType Conversion in expressions

Compatible data types can be mixed in expressions Java uses Type promotion rule inside the expression: char, byte, short are promoted to int if one operand is long - all types are promoted to long if one operand is float - all types are promoted to float if one operand is double - all types are promoted to

double Ouside the expression the variables will keep values of

their original type

Page 34: CSCI1402: Lecture 1 Week 2 Dr. David A. Elizondo Centre for Computational Intelligence School of Computing Office: Gateway 6.61 email: elizondo@dmu.ac.uk

Java Keywords Java Keywords

Java contains 49 keywords which have a specific meaning in the language.

For a table with explanations see Schildt p.32 or your handout.

Other reserved words represent values: true, false, and null.

These words cannot be used for naming variables, methods or other items in the code.

Page 35: CSCI1402: Lecture 1 Week 2 Dr. David A. Elizondo Centre for Computational Intelligence School of Computing Office: Gateway 6.61 email: elizondo@dmu.ac.uk

Java IdentifiersJava Identifiers

An identifier is a name given to a variable , method or any other recognised element of the code (method, class, object etc.) by the programmer

A variable identifier in Java should start with a letter (underscore, or $ are special

cases, so avoid them) followed by letters or digits 0-9 (underscore and $ are

allowed, but avoid ) may have any number of characters is case sensitive Valid identifiers: x, Y, x1, Num1, num_1, sum, box, aBox, Total, $start, _end first_floor, firstFloor, FirstFloor are three valid and

different identifiers

Page 36: CSCI1402: Lecture 1 Week 2 Dr. David A. Elizondo Centre for Computational Intelligence School of Computing Office: Gateway 6.61 email: elizondo@dmu.ac.uk

Java IdentifiersJava Identifiers

By convention variable names should start with a lower case letter be short if possible convey the purpose of the variable. Each new word in the

identifier should start in capital letter avoid using names of standard methods or classes

(main, String, System etc.) Take care with these characters 1 (one), l (lower case

el), 0 (zero), O (oh) Other conventions apply for names of Java classes and

methods. Q: Why are the following variable identifiers invalid? 1_floor, 1stFloor, 2003, go-to, do.this, my name, Mike’s,

double

Page 37: CSCI1402: Lecture 1 Week 2 Dr. David A. Elizondo Centre for Computational Intelligence School of Computing Office: Gateway 6.61 email: elizondo@dmu.ac.uk

Example programExample program

Program Example2.java/* This program demonstrates use of variables. Call this file Example2.java. */ public class Example2 { public static void main(String args[]) { int var1; // this declares a variable int var2; // this declares another variable var1 = 1024; // this assigns 1024 to var1 System.out.println("var1 contains " + var1); var2 = var1 / 2; System.out.print("var2 contains var1 / 2: "); System.out.println(var2); } }

Page 38: CSCI1402: Lecture 1 Week 2 Dr. David A. Elizondo Centre for Computational Intelligence School of Computing Office: Gateway 6.61 email: elizondo@dmu.ac.uk

Example programExample program

Program Output:var1 contains 1024var2 contains var1 / 2: 512