1 java basics: data types, variables, and loops “ if debugging is the process of removing software...

Post on 04-Jan-2016

216 Views

Category:

Documents

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

1

Java Basics:Data Types, Variables, and Loops

“ If debugging is the process of removing software bugs, then programming must be the process of putting them in. ”

- Edsger Dijkstra Plan for the DayVariables - symbols or names that represent valuesData Types - the kind of value does a variable represent

int - integers, such as 1024, -77, 2, 0double - real numbers, or actually (good) approximations of

real numbers. For example, 3.14159, -0.023343char - single characters, which are enclosed in single quotes in

Java: ‘$’, ‘a’, ‘*’, ‘R’boolean - logical values: true or false

Arithmetic operators (and another use of +)+ represents addition in Java, but also the concatenation or

appending of two strings

Based on slides at buildingjavaprograms.com

2

Data typestype: A category or set of data values.

Constrains the operations that can be performed on dataMany languages ask the programmer to specify types

// Variable myNumber stores integer values, and currently // has the value 3 int myNumber = 3;

Internally, computers store everything as 1s and 0s104 01101000"hi" 01101000110101

3

Java's primitive types

primitive types: Java’s built-in data types for numbers, text characters and logic values.

8 primitive types in Java

Non-primitive types are object types

We'll use these four primitive types in this class:

Name Description Examplesint integers (whole numbers) 42, -3, 0, 926394

double real numbers 3.14, -0.25, 9.0char single text characters 'a', 'X', '?', '\n'

boolean logical values true, false

4

Expressionsexpression: A value or operation that computes a

value.Example: 3 + 9 * 2The simplest expression is a literal value.

84-2.11

A complex expression can use operators and parentheses.(-4.5 + 2.11) * 8 // * represents multiplication

5

Arithmetic operatorsOperators we will use often in cs 305j:

+ addition - subtraction (or negation)* multiplication/ division% modulus (a.k.a. remainder)

As a program runs, its expressions are evaluated.1 + 1 evaluates to 2System.out.println(3 * 4); //prints 12How would we print the text 3 * 4 on the screen?

6

Integer division with /When we divide integers, the quotient is also an integer.

14 / 4 is 3, not 3.5 3 4 4 ) 14 10 ) 45 12 40 2 5 More examples:

32 / 5 is 684 / 10 is 8156 / 100 is 1

Dividing by 0 causes an error when your program runs.

7

Integer remainder with %The % operator computes the remainder from integer

division.14 % 4 is 2, since 14 divided by 4 is 3, with remainder 2

33 % 5 is 3, since 218 divided by 5 is 6, with remainder 3

What is the result of the following operations?

45 % 62 % 28 % 2011 % 4

8

Applications of % Operator

How do we…Obtain last (ones) digit of a number.

Ex: From 432115, get 5Obtain last 4 digits of a SSN.

Ex: For SSN 552689321, get 9321Determine whether a number is odd.

Exercise: Suppose some unknown integer (greater than 100) is stored in variable n. How do you obtain the tens digit?

9

Operator Precedenceprecedence: Order in which operators are evaluated.

Operators of same precedence level evaluate left-to-right.1 - 2 - 3 is (1 - 2) - 3 which is -4

*/% have a higher precedence than +-

1 + 3 * 4 is 136 + 8 / 2 * 36 + 4 * 36 + 12 is 18

Parentheses can force a certain order of evaluation:(1 + 3) * 4 is 16

10

Precedence examples

1 * 2 + 3 * 5 % 4 \_/ | 2 + 3 * 5 % 4

\_/ | 2 + 15 % 4

\___/ | 2 + 3

\________/ | 5

1 + 8 % 3 * 2 - 9 \_/ |1 + 2 * 2 - 9

\___/ |1 + 4 - 9

\______/ | 5 - 9

\_________/ | -4

11

Precedence questionsWhat values result from the following expressions?

9 / 5695 % 207 + 6 * 57 * 6 + 5248 % 100 / 56 * 3 - 9 / 4(5 - 7) * 46 + (18 % (17 - 12))

12

Real numbers (type double)Java can manipulate real numbers (numbers with a decimal point): 6.022 , -42.0 , 2.143e17

The operators +-*/%() all still work with double./ produces a more precise answer:

15.0 / 2.0 is 7.5% is not typically used on real numbersPrecedence is the same: () before */% before +-

13

Real number example2.0 * 2.4 + 2.25 * 4.0 / 2.0 \___/ | 4.8 + 2.25 * 4.0 / 2.0

\___/ | 4.8 + 9.0 / 2.0

\_____/ | 4.8 + 4.5

\____________/ | 9.3

14

Precision Issues with RealsComputations with real numbers are not always as precise

as we expect (though the answer we get is close):System.out.println ( 11.0 - 10.91);We expect: 0.09What’s printed: 0.08999999999999999

Computers represent some real numbers in an imprecise way internally, so some calculations with them are off by a very slight amount.We can usually tolerate the precision errors, but later we will

learn some ways to produce a better output for examples like above.

15

Mixing typesWhen int and double are mixed, the result is a double.

4.2 * 3 is 12.6

The conversion is per-operator, affecting only its operands. 7 / 3 * 1.2 + 3 / 2 \_/ | 2 * 1.2 + 3 / 2

\___/ | 2.4 + 3 / 2

\_/ | 2.4 + 1

\________/ | 3.4

3 / 2 is 1 above, not 1.5.

2.0 + 10 / 3 * 2.5 - 6 / 4 \___/ |2.0 + 3 * 2.5 - 6 / 4

\_____/ |2.0 + 7.5 - 6 / 4

\_/ |2.0 + 7.5 - 1

\_________/ | 9.5 - 1

\______________/ | 8.5

16

String concatenation string concatenation: Using + between a string and

another value to make a longer string.

"hello" + 42 is "hello42"1 + "abc" + 2 is "1abc2""abc" + 1 + 2 is "abc12"1 + 2 + "abc" is "3abc""abc" + 9 * 3 is "abc27""1" + 1 is "11"4 - 1 + "abc" is "3abc"

Use + to print a string and an expression's value together.

System.out.println("Grade: " + (95.1 + 71.9) / 2);

• Output: Grade: 83.5

17

Receipt exampleWhat's bad about the following code?public class Receipt { public static void main(String[] args) { // Calculate total owed, assuming 8% tax / 15% tip System.out.println("Subtotal:"); System.out.println(38 + 40 + 30);

System.out.println("Tax:"); System.out.println((38 + 40 + 30) * .08); System.out.println("Tip:"); System.out.println((38 + 40 + 30) * .15); System.out.println("Total:"); System.out.println(38 + 40 + 30 + (38 + 40 + 30) * .08 + (38 + 40 + 30) * .15); }}

The subtotal expression (38 + 40 + 30) is repeatedSo many println statements

18

Variablesvariable: A piece of the computer's memory that is given a

name and type, and can store a value.Like preset stations on a car stereo, or cell phone speed dial:

We use variables to store the result of a calculation, so we can use it later

19

Variable Declarationvariable declaration: Sets aside memory for storing a value

of some specified type.Variables must be declared before they can be used.A declaration specifies the variable’s name and type. The

name is an identifier.

Declaration Syntax:

<type> <name>;

-- Example: int x;

-- Example: double myGPA;

Multiple variable declarations on same line:double sideA, sideB, sideC;

x

myGPA

20

AssignmentDeclaring a variable: sets aside a chunk of memory for

storing valuesassignment: Stores a value in a variable.

The value can be an expression; the variable stores its result.Syntax:

<name> = <expression>;int x;x = 3;

double myGPA;myGPA = 1.0 + 2.25;

x 3

myGPA 3.25

21

Using variablesOnce given a value, a variable can be used in expressions:

int x;x = 3;System.out.println("x is " + x); // x is 3

System.out.println(5 * x - 1); // 5 * 3 - 1

You can assign a value more than once:

int x;x = 3;System.out.println(x + " here"); // 3 here

x = 4 + 7;System.out.println("now x is " + x); // now x is 11

x 3x 11

22

Declaration/initializationA variable can be declared/initialized in one statement.

Syntax:<type> <name> = <value>;

double myGPA = 3.95;

int x = (11 % 3) + 12;

x 14

myGPA 3.95

23

Assignment and algebraAssignment uses = , but it is not an algebraic equation.

X = … ; means “store the value of the expression on the right in the memory set aside for x”

x = 3; means “store 3 in the memory allocated for x”

What happens here?

int x = 3;x = x + 2; // ??? x 3x 5

24

Assignment and types A variable can only store a value of its own type.

int x = 2.5; // ERROR: incompatible types

An int value can be stored in a double variable. The value is converted into the equivalent real number.

double myGPA = 4;

double avg = 11 / 2;

Why does avg store 5.0and not 5.5 ?

myGPA 4.0

avg 5.0

25

Compiler errorsA variable can't be used until it is assigned a value.

int x;

System.out.println(x); // ERROR: x has no value

You may not declare the same variable twice.

int x;int x; // ERROR: x already exists

int x = 3;int x = 5; // ERROR: x already exists

How can this code be fixed?

26

Printing a variable's valueUse + to print a string and a variable's value on one line.

double grade = (95.1 + 71.9 + 82.6) / 3.0;System.out.println("Your grade was " + grade);

int students = 11 + 17 + 4 + 19 + 14;System.out.println("There are " + students + " students in the course.");

• Output:

Your grade was 83.2There are 65 students in the course.

27

Receipt questionImprove the receipt program using variables.

public class Receipt { public static void main(String[] args) { // Calculate total owed, assuming 8% tax / 15% tip System.out.println("Subtotal:"); System.out.println(38 + 40 + 30);

System.out.println("Tax:"); System.out.println((38 + 40 + 30) * .08);

System.out.println("Tip:"); System.out.println((38 + 40 + 30) * .15);

System.out.println("Total:"); System.out.println(38 + 40 + 30 + (38 + 40 + 30) * .15 + (38 + 40 + 30) * .08); }}

28

Receipt answerpublic class Receipt { public static void main(String[] args) { // Calculate total owed, assuming 8% tax / 15% tip int subtotal = 38 + 40 + 30; double tax = subtotal * .08; double tip = subtotal * .15; double total = subtotal + tax + tip;

System.out.println("Subtotal: " + subtotal); System.out.println("Tax: " + tax); System.out.println("Tip: " + tip); System.out.println("Total: " + total); }}

29

ExercisesWhat is the result?1. int x = 4; x = x + 3;

2. 5 = 1 + 4;

3. Double y = 6; y = 2 * y;

30

What is the Output?1. int average = (9 + 8)/2;System.out.println(average);

average = (average * 2 + 10 + 4)/4;System.out.println(average);

2. System.out.println(3 + 2 + “friends are coming over”);

3. System.out.println(“Call “ + 9 + 1 + 1);

31

Real or Integer? Categorize each of the following quantities by whether an int or double

variable would best to store it:

1. Temperature in degrees 5. Number of rainy days this month2. Population of lemmings 6. Number of miles traveled today3. Your grade point average 7. A person’s weight in pounds4. The average of a collection of exam scores

credit: Kate Deibel, http://www.cs.washington.edu/homes/deibel/CATs/

Integer (int) Real Number (double)

32

ExerciseWrite a program that assigns the length and width of a

rectangle to two variables, and then prints the area of the rectangle.

Sample Output:Length = 4Width = 3The triangle’s area is 12.

33

Exercise using VariablesFor student Jane Doe:

Exam 1 score: 95Exam 2 score: 89Exam 3 score: 93

Write a program that displays Jane Doe’s exam average.

Output:On exam 2, Jane Doe made 89.

Her exam average is 92.333333.

34

Increment and Decrement Operators

The increment operator ++ adds 1 to a numberresult ++; // The value stored in result is increased

by 1

The decrement operator -- subtracts 1 from a number result --; // value stored in result is decreased by 1

These operators can come before or after the variable/value: ++count; --count;

35

Example - Increment/Decrement

Output?int count = 1;int n = 2 + count++;System.out.println(“count = “ + count);System.out.println(“n = “ + n);

What about now:int count = 1;int n = 2 + ++count;

36

Assignment OperatorsCombine assignment with an operationUse whenever you want to apply some operation to the

value of a variable, and store the result in that variableExample:

count += 5;is equivalent to

count = count + 5;

Example:int result = 2;result *= 4; // result = ?

37

Assignment OperatorsExample:

int count1 = 3;int count2 = 6;int product *= count1 + count2; // what is product?

equivalent toint product = product * (count1 + count2);

Example:String s = “hello”;S += “ world”; // what is s?

equivalent toS = s + “ world”;

top related