Computer Science is...

Similar documents
Computer Science is...

COMP-202 Unit 2: Java Basics. CONTENTS: Using Expressions and Variables Types Strings Methods

COMP-202 Unit 2: Programming Basics. CONTENTS: The Java Programming Language Variables and Types Basic Input / Output Expressions Conversions

CONTENTS: Compilation Data and Expressions COMP 202. More on Chapter 2

Chapter 2: Data and Expressions

Full file at

Java Foundations: Introduction to Program Design & Data Structures, 4e John Lewis, Peter DePasquale, Joseph Chase Test Bank: Chapter 2

Chapter 2: Data and Expressions

Faculty of Science COMP-202A - Introduction to Computing I (Fall 2009) - All Sections Midterm Examination

BASIC COMPUTATION. public static void main(string [] args) Fundamentals of Computer Science I

Conditional Programming

Methods CSC 121 Fall 2016 Howard Rosenthal

CS111: PROGRAMMING LANGUAGE II

COMP-202: Foundations of Programming. Lecture 3: Boolean, Mathematical Expressions, and Flow Control Sandeep Manjanna, Summer 2015

Programming with Java

COMP 250: Java Programming I. Carlos G. Oliver, Jérôme Waldispühl January 17-18, 2018 Slides adapted from M. Blanchette

COMP 202 Java in one week

CEN 414 Java Programming

Primitive Data, Variables, and Expressions; Simple Conditional Execution

Primitive Data Types: Intro

Methods CSC 121 Spring 2017 Howard Rosenthal

COMP-202 Unit 2: Java Basics. CONTENTS: Printing to the Screen Getting input from the user Types of variables Using Expressions and Variables

Faculty of Science COMP-202B - Introduction to Computing I (Winter 2010) - All Sections Midterm Examination

JAVA Programming Concepts

COMP-202 Unit 2: Java Basics. CONTENTS: Using Expressions and Variables Types Strings

A variable is a name for a location in memory A variable must be declared

Entry Point of Execution: the main Method. Elementary Programming. Learning Outcomes. Development Process

Chapter 2 ELEMENTARY PROGRAMMING

What did we talk about last time? Examples switch statements

COMP-202 Unit 2: Java Basics. CONTENTS: Printing to the Screen Getting input from the user Types of variables Using Expressions and Variables

Building Java Programs

Data and Variables. Data Types Expressions. String Concatenation Variables Declaration Assignment Shorthand operators. Operators Precedence

COMP 202 Java in one week

Introduction to Computer Programming

COMP 202. Java in one week

Tester vs. Controller. Elementary Programming. Learning Outcomes. Compile Time vs. Run Time

COMP-202 Unit 2: Java Basics. CONTENTS: Printing to the Screen Getting input from the user Types of variables Using Expressions and Variables

Numerical Data. CS 180 Sunil Prabhakar Department of Computer Science Purdue University

Chapter 2: Data and Expressions

Building Java Programs

Basics of Java Programming

Elementary Programming

Chapter 2. Elementary Programming

Chapter 3: Operators, Expressions and Type Conversion

COSC 123 Computer Creativity. Introduction to Java. Dr. Ramon Lawrence University of British Columbia Okanagan

CSCI 2010 Principles of Computer Science. Data and Expressions 08/09/2013 CSCI

Expressions and Data Types CSC 121 Spring 2015 Howard Rosenthal

COMP-202: Foundations of Programming. Lecture 5: More About Methods and Data Types Jackie Cheung, Winter 2016

Object-Oriented Programming

COMP-202: Foundations of Programming. Lecture 2: Variables, and Data Types Sandeep Manjanna, Summer 2015

Two Types of Types. Primitive Types in Java. Using Primitive Variables. Class #07: Java Primitives. Integer types.

static int min(int a, int b) Returns the smaller of two int values. static double pow(double a,

WEEK 4 OPERATORS, EXPRESSIONS AND STATEMENTS

CMSC131. Introduction to your Introduction to Java. Why Java?

Basic Computation. Chapter 2

Building Java Programs

Building Java Programs. Chapter 2: Primitive Data and Definite Loops

COMP-202 Unit 2: Java Basics. CONTENTS: Printing to the Screen Getting input from the user Types of variables Using Expressions and Variables

CONTENTS: What Is Programming? How a Computer Works Programming Languages Java Basics. COMP-202 Unit 1: Introduction

Module 2 - Part 2 DATA TYPES AND EXPRESSIONS 1/15/19 CSE 1321 MODULE 2 1

CS313D: ADVANCED PROGRAMMING LANGUAGE

Expressions and Data Types CSC 121 Fall 2015 Howard Rosenthal

MODULE 02: BASIC COMPUTATION IN JAVA

AYBUKE BUYUKCAYLI KORAY OZUYAR MUSTAFA SOYLU. Week 21/02/ /02/2007 Lecture Notes: ASCII

Building Java Programs Chapter 2

Zheng-Liang Lu Java Programming 45 / 79

Program Fundamentals

Lecture Set 4: More About Methods and More About Operators

CONTENTS: While loops Class (static) variables and constants Top Down Programming For loops Nested Loops

CMPT 125: Lecture 3 Data and Expressions

COMP-202 Unit 4: Programming With Iterations. CONTENTS: The while and for statements

CS112 Lecture: Variables, Expressions, Computation, Constants, Numeric Input-Output

Warm-Up: COMP Programming with Iterations 1

More Programming Constructs -- Introduction

Outline. Parts 1 to 3 introduce and sketch out the ideas of OOP. Part 5 deals with these ideas in closer detail.

The Math Class (Outsource: Math Class Supplement) Random Numbers. Lab 06 Math Class

Chapter 2 Using Data. Instructor s Manual Table of Contents. At a Glance. Overview. Objectives. Teaching Tips. Quick Quizzes. Class Discussion Topics

Selections. EECS1021: Object Oriented Programming: from Sensors to Actuators Winter 2019 CHEN-WEI WANG

CS110: PROGRAMMING LANGUAGE I

Data and Expressions. Outline. Data and Expressions 12/18/2010. Let's explore some other fundamental programming concepts. Chapter 2 focuses on:

CS112 Lecture: Primitive Types, Operators, Strings

Selec%on and Decision Structures in Java: If Statements and Switch Statements CSC 121 Fall 2016 Howard Rosenthal

Mr. Monroe s Guide to Mastering Java Syntax

Motivating Examples (1.1) Selections. Motivating Examples (1.2) Learning Outcomes. EECS1022: Programming for Mobile Computing Winter 2018

St. Edmund Preparatory High School Brooklyn, NY

Building Java Programs Chapter 2. bug. Primitive Data and Definite Loops. Copyright (c) Pearson All rights reserved. Software Flaw.

Building Java Programs Chapter 2

ECE 122 Engineering Problem Solving with Java

Variables and data types

Interpreted vs Compiled. Java Compile. Classes, Objects, and Methods. Hello World 10/6/2016. Python Interpreted. Java Compiled

COMP-202 Unit 4: Programming with Iterations

AP CS Unit 3: Control Structures Notes

Topic 4 Expressions and variables

COMP 110 Introduction to Programming. What did we discuss?

CSC 1214: Object-Oriented Programming

Chapter 4: Conditionals and Recursion

Condensed Java. 12-Oct-15

COMP 202. Built in Libraries and objects. CONTENTS: Introduction to objects Introduction to some basic Java libraries string

Full file at

Wentworth Institute of Technology. Engineering & Technology WIT COMP1000. Java Basics

Transcription:

Computer Science is... Bioinformatics Computer scientists develop algorithms and statistical techniques to interpret huge amounts of biological data. Example: mapping the human genome. Right: 3D model of a protein structure

Announcements As of next week (Jan 24), Maja's office hours will be on Tuesdays. 2

Exercise: What does this display if the user inputs 13 and then 2? import java.util.scanner; public class DivisionInt { public static void main(string[] args) { Scanner keyboard = new Scanner(System.in); int numerator, denominator, quotient, remainder; // Read the values System.out.print("Enter the numerator: "); numerator = keyboard.nextint(); System.out.print("Enter the denominator: "); denominator = keyboard.nextint(); } } quotient = numerator / denominator; remainder = numerator % denominator; System.out.println("The result is: " + quotient); System.out.println("The remainder is: " + remainder); 3

Types 4

Review: Primitive Types There are exactly 8 primitive types in Java Positive and negative whole numbers: byte, short, int, long Positive and negative numbers with decimal parts ( floating points numbers ): float, double Characters (like a & * 6 /) char And one of them represents boolean values (true or false): boolean 5

Literals A literal is the source code representation of a fixed value; literals are represented directly in your code without requiring computation. e.g. int x = 5; // 5 is a literal here e.g. double y = 9.2; // 9.2 is a literal here 6

Literal values have types too Type Example Literal int 1 double 1.0 float 1.0f long 5L char 'a', '9', '\n' Note: literals are how you represent values directly in your Java code. They have nothing to do with what values look like on the screen when they are displayed with the print() or println() methods. 7

Variables & Expressions 8

Variable Declarations Basic Syntax: [type] [variable]; Examples: double weight; int year; 9

Variable Assignment Note: = means contains not equals Basic Syntax: [variable] = [value]; Examples: firstname = Maja ; x = 2; y = firstname; 10

You can combine declaration with assignment: Basic Syntax: [type] [variable]=[value]; Example: double weight = 200; 11

You can declare many variables of the same type in one statement Basic Syntax: [type] [var1] = [value1],...,[varx] = [valuex]; Examples: int x, y, z; double j = 1, k = 2; 12

Operator Precedence The assignment operator has a lower precedence than the arithmetic operators answer = sum / 4 + MAX * lowest; 1 3 2 Then the result is stored in the variable on the left-hand side 4 First, the expression on the right side of the = operator is evaluated 13

What is the value of the following expression? 2 * (5 + 3 / 4) + (5) % 2 * (1 + (2 + 3))/4

Review: Data Conversion 15

You can use many different types in a single expression. double bucketweight = 60.0; int totalbuckets = 5; double totalweight = totalbuckets * bucketweight; 16

Review: Precision Different numeric types have different storage capacity byte can only store the numbers between -128 to 127 int can store many more whole numbers than byte double can store more decimal numbers than float The precision of a type is the range of all possible values you can express with a variable of that type 17

Kinds of Conversion Widening conversion: less precise to more precise (e.g. byte to double) usually safe, usually no information is lost e.g. long to double may result in a loss of information Narrowing conversion: more precise to less precise (e.g. double to byte) Information is lost when conversions of this type occur 18

Ways to convert data in Java In Java, data conversions can occur in three ways: 1) Assignment conversion double x = 3; // 3.0 is stored in x 2) Arithmetic promotion int x = 2; // x is promoted from int to double because it is // multiplied by a double System.out.println(3.0*x); 3) Casting x = (int) 5.25; //represents the value 5 19

Arithmetic Promotion: Example Operand in expression are of mixed type, and get automatically widened. double kmperlitre; int km = 1000; float litres = 85.0f; kmperlitre = km / litres; (2) Division (1) Arithmetic promotion to float (3) Assignment conversion to double (4) Assign result to kmperlitre 20

Exercise: What is the output? int j = 12; double weight = j + 2; System.out.println(weight); System.out.println(j);

Exercise: What is the output? double d = 7.0; int j = 2; j = d + 2.0; System.out.println(j);

Exercise: What is the output? float i = 10; int j = 4, k = 4; double average = (i + j + k) / 3; System.out.println(average);

Casting Example When casting from floating point to integer, the fractional part of the floating point is discarded double money = 25.80; int dollars; dollars = (int)money; // dollars contains the value 25 // money still contains the value 25.80 24

Syntax for casting (desired type) [expression] Examples: (double) myvariable; (int) (5.0 * totalbuckets); 25

Casting has higher precedence than the arithmetic operators double a; int b, c, d; a = 3.5; b = 3; c = (int)a * b; Only the value of a is cast; the value of b is not cast Thus, c now contains the value 9 d = (int)(a * b); The product of a and b is cast Thus, d now contains the value 10 26

Exercise: What is the output? float i = 10.3f; int j = 4; double x = (int)i * j; System.out.println(x);

Exercise: What is the output? float i = 10.3f; int j = 4; double y = (int)(i * j); System.out.println(y);

String Basics System.out.println( A String is + a sequence of characters + inside quotation marks. ); 29

Why so many plus-signs? System.out.println( A String is + a sequence of characters + inside quotation marks. );

String Concatenation (+) In Java, + can be used to concatenate strings hello + world results in "helloworld" hello + world results in hello world Notice the space before world number + (5 + 2) results in number 7 31

A String literal cannot be broken across two lines of source code The following code fragment causes an error: "This is a very long literal that spans two lines" The following code fragment is legal: "These are 4 short concatenated " + "literals " + "that are on separate source-code " + "lines" 32

String Variables and Values Variables of type String are declared just like variables of other types String message; Actual String literals are delimited by double quotation marks (") String greeting = Hello! ; 33

String Variable Assignment String message; message = "Hello world!"; 34

What is the output? public class Facts { public static void main(string[] args) { String firstname = "Cuthbert"; String lastname = "Calculus"; String fullname; fullname = firstname + " " + lastname; } } System.out.println("His name is: " + fullname);

What is the output? String text; String message = Hello! ; text = message ; System.out.println(text); text = message; System.out.println(text);

Example: mixed-type concatenation String s = The number is + 5; // s represents the String // The number is 5. // (The 5 gets automatically // converted to a String 5 before // it gets concatenated

Mixed-Type Concatenation (1) Remember: the plus operator (+) is used for both arithmetic addition and for string concatenation The function that the + operator performs depends on the type of the values on which it operates If at least one operand is of type String, the + operator performs string concatenation (after "promoting" the numeric operand, if any, to type String by generating its textual representation) 38

What is the output? public class Addition { public static void main(string[] args) { int x = 5; int y = 2; int sum = 0; String message = "The sum is "; sum = x + y; message = message + sum; } } System.out.println(message);

Trick Question (1) What will be the output of the following code fragment? System.out.println("The sum of 5 and 3 is " + 5 + 3); The answer is: The sum of 5 and 3 is 53 (?!?) Explanation: The + operator is evaluated from left to right Thus, it is first applied to "The sum of 5 and 3 is " and the int literal 5 to form the String "The sum of 5 and 3 is 5" Then, we apply the + operator to the result from the previous concatenation operation and the int literal 3 to get "The sum of 5 and 3 is 53" 40

Survey One a piece of scrap paper, describe what you're most confused or unsure about in COMP-202 so far. Being vague is ok, but the more specific the better. Leave your answer at the desk, up front. Maja will use this information to plan Thursday's lecture. 41

42

Announcements Model solutions to Assignment 0 posted on the course website (under Assignments ). 43

Exercise from last class float i = 10; int j = 4, k = 4; double average = (i + j + k) / 3; System.out.println(average);

To test, save this in a file called TestingTheExercise.java public class TestingTheExercise{ public static void main(string[] args){ } //I paste the code from the exercise here: float i = 10; int j = 4, k = 4; double average = (i + j + k) / 3; System.out.println(average); }

Example: what happens when you run a program? 46

Example: Writing a program from scratch 47

Example: Computing Volume of a Cylinder A program that asks the user to type in the radius and length of a cylinder, then prints out the volume of that cylinder. Your program should have a method for computing the area of a circle Your program should have a method for computing the volume of a cylinder (formula: area of base times length) See Volume.java 48

Method Control Flow (in Volume.java) main() computeareacircle() computeareacircle(); COMP-202 - Methods 49

Method Control Flow (in general) Calling method m2() from method m1() means we jump into m2() to execute everything in m2(), and then we jump back to where we were in m1(). m1() m2() m2(); COMP-202 - Methods 50

Exercise (at home) On a piece of paper, write a class with three methods. The fahrenheittocelcius method takes a Fahrenheit value and converts it to Celcius using the formula (fahrenheit 32) / (9 / 5) The celciustofahrenheit method takes a Celcius value and converts it to Fahrenheit using the formula (9 / 5) * celcius + 32; The main method tests the two methods above by using them to print the following message about 21.5 degrees Celcius and 19 degrees Fahrenheit. It does not read anything from the keyboard. Celcius to Fahrenheit: Celcius: 21.5 Fahrenheit: 70.7 Solution in: TemperatureConversion.java Fahrenheit to Celcius: Fahrenheit: 19.0 Celcius: -7.222222222222222 COMP-202 - Methods 51

How methods work (variable scope, returning values, parameter passing, stack diagrams) 52

General Method Header Syntax modifiers returntype methodname (parameterlist) Example: public static String translate (int x, String name) (Red = mandatory, Blue = optional) 53

Examples of Parameter Lists public static int mymethod() Valid public static int mymethod(int I) Valid public static int mymethod(int i1,int i2,double d) Valid public static int mymethod(int i1, i2, double d) Invalid; no type specified for i2 public static int mymethod(int i1, double d,) Invalid; comma after last parameter declaration COMP-202 - Methods 54

Method Output Many methods produce output The output of a method is called its return value When the called method terminates its execution, the return value is passed back to the caller The return value is of a certain type A method can only return one thing COMP-202 - Methods 55

Case 1: no input, some output // the output of this method is // always the integer 5. public static int getfive(){ return 5; }

Case 2: some input, some output // this method always outputs the // the number that is given to it // as input. // (Hence the name echo ) public static int echo(int a){ return a; }

The return Statement The return statement specifies the value that will be returned as return value It also specified an endpoint of a method: it causes control flow to jump back to where the method was called. It can occur anywhere in a method, and when it is executed, control goes back to the calling method COMP-202 - Methods 58

The return statement is an endpoint public class Test{ public static void main (String[] args){ int n = 0; mymethod(3); } public static int mymethod(int n){ return n; // The line below is never executed because the return // statement (above) causes control flow to jump back // to where the method is called: to the line mymethod(3) System.out.println( blah ); } }

The return statement must respect return type In non-void methods, all return statements must include an expression The value of the expression is returned to the method's caller The type of the value the expression in the return statement evaluates to MUST be either: of the same type as the method's return type a type which can be converted to the return type using an assignment conversion COMP-202 - Methods 60

Correct the compile-time errors in this code public class TestOne{ public static void main (String[] args){ int n = 0; mymethod(3); } public static void mymethod(int n){ return n * m; } }

Correct the compile-time errors in this code public class TestTwo{ public static void main (String[] args){ double j = mymethod(3); } public static int mymethod(int n){ return n * 5.0; } }

Correct the compile-time errors in this code public class TestThree{ public static void main (String[] args){ int n = 0; mymethod(3.4); } public static mymethod(int n, m){ return n * m; } }

void The return type of methods which do not return anything is void The fact that a method does not return a value and has return type void does not mean that the method does nothing 64

Case 3: some input, no output, but a side-effect public static void printnumber(int x){ } System.out.println( The number is + x);

Parameter Passing 66

Parameter Passing public class TestAdd { public static void main(string[] args) { int number = 3; int thesum = add(number, 1); } } public static int add(int n1, int n2) { int sum; } sum = n1 + n2; return sum; The value in number gets copied into n1, and 1 gets copied into n2. COMP-202 - Methods 67

Each method has its own private space in memory After the last statement in the main method (on previous slide) is executed, memory looks like this: main's memory space number contains 3 thesum contains 4 the 4 came from the add method add's memory space n1 contains 3 copied from number in main n2 contains 1 copied from main sum contains 4 returned to main COMP-202 - Methods 68

PrimitiveAssignmentDemo.java public class PrimitiveAssignmentDemo { public static void main(string[] args) { int i, j; } } i = 42; System.out.println("Value of i before assignment: " + i); j = i; System.out.println("Value assigned to j: " + j); j = 0; System.out.println("New value of j: " + j); System.out.println("Value of i: " + i); COMP-202 - Methods 69

PrimitivePassingDemo.java public class PrimitivePassingDemo { public static void main(string[] args) { int i; } i = 42; System.out.println("i before calling m() == " + i); System.out.println("--"); m(i); System.out.println("--"); System.out.println("i after calling m() == " + i); } public static void m(int j) { System.out.println("Received j == " + j); j = 0; System.out.println("New j == " + j); } COMP-202 - Methods 70

What does this display? public class BookTest{ public static void main (String[] args){ int n = 0; mult(1,2,n); System.out.println(n); } public static void mult(int v1, int v2, int n){ n = v1 * v2; } }

Variable Scope 72

Scope The scope of a variable is the area in a program in which that variable can be used, or where it is visible 73

Scope and Blocks {} The scope of a variable is generally defined by the block in which it is declared public class Test{ public static void main(string[] args){ int myvar; // can use myvar everywhere inside the blue // braces, but nowhere else. System.out.println( myvar contains + myvar); } } // can't use myvar here 74

local variables and formal parameters Local variables are declared inside the body of a method A formal parameter is a variable that is declared in a method header, and is used to pass values to methods 75

formal parameters and local variables public class MyClass { Formal parameter public static void mymethod(double mydouble) { } boolean myboolean; /* rest method body here */ Local variable } 76

Same idea for the scope of formal parameters and local variables public class MyClass { Formal parameter public static void mymethod(double mydouble) { } boolean myboolean; /* Method code */ Local variable } The scope of mydouble and myboolean is show by the blue rectangle. 77

Scoping Rules If two variables share a scope, they MUST have different names. On the other hand, many variables in one program can have the same name (if they are declared in different scopes). Take home message: just because two variables have the same name, doesn't mean they refer to the same location in memory. It all depends on their scope. 78

Find and correct the compile-time error in this program. public class Test{ public static void main(string[] args){ nprintln( Yay!, 5); } } public static void nprintln(string message, int n){ int n = 1; System.out.println(message + n);

Solution public class Test{ public static void main(string[] args){ nprintln( Yay!, 5); } } public static void nprintln(string message, int n){ // redeclaring n, which is already // declared as a formal parameter. // Remove the stuff in red. int n = 1; System.out.println(message + n);

Stack diagrams 81

Boolean Expressions 82

Boolean Expressions: True or False Expression Value 2010 is an odd number false Elvis Presley died in 1977. true Elvis Presley was born in the United States and had red hair. false 83

Boolean Expressions Instead of evaluating to a numeric value, boolean expressions evaluate to either true or false mynumber > 0 // can be either true or false You can assign the result of a boolean expression to a variable of type boolean: boolean positive; positive = (mynumber > 0); 84

Boolean Expressions in Java A boolean expression evaluates to a boolean value Examples: 1 > 0 && 3 == 2 evaluates to false. (5/x) == 0 evaluates to true if x contains a value greater than 5. false iseven evaluates to true if iseven contains the value true 85

Boolean expressions can be assigned to variables of type boolean boolean a = 1 > 0 && 3 == 2; boolean result = (5/x) == 0; boolean d = false iseven; (Just like arithmetic expressions can be assigned to variables of type int or double or byte or short or long or float.) 86

Boolean Expressions with Comparison Operators Expression Meaning Value 5 == 2 5 is equal to 2 false 10 >= 5 10 is greater than or equal to 5 true -2 < 4-2 strictly less than 4 true 87

Boolean Expressions with Logical Operators Expression Meaning Value x!= 5 && y > 2 x is not equal to 5 and y is greater than 2. Depends on value of x and y! (10 == 5) The negation of 10 is equal to 5 true 1 < 0 1 > 0 1 is less than 0 or 1 is greater than 0 true 88

More Boolean Expressions true false Expression Meaning Value Something that is always true. Something that is always false. true false! false The negation of something that is always false. true 89

Comparison Operators (1) The result of a comparison is always true or false Used to compare numeric or character values == : equal to!= : not equal to < : less than > : greater than <= : less than or equal to >= : greater than or equal to 90

Comparison Operator Precedence Comparison operators have lower precedence than arithmetic operators higher precedence than the assignment operator boolean b = a > c * d + e; 4 3 1 2 1. The product of c and d is evaluated first 2. Then, the value of c * d is added to e 3. Then, the value of c * d + e is compared to the value of a 4. Finally, the result of the comparison is stored in variable b 91

Operators and Types [number or char] * [number or char] [number or char] [number or char] [number or char or String] + [number or char or String] [number] > [number] [boolean] && [boolean] [anything] == [anything] [anything]!= [anything]

Character Comparisons (1) In Java, each character (like '?' or 'm') is associated with a number according to its location in a table of characters (a character set) The following expression evaluates to true boolean lessthan = '+' < 'J'; Do not hesitate to use this property of characters in your programs. 93

Floating Point Comparisons (1) You should rarely use the equality operator (==) when comparing two floating point values (float or double) In many situations, you might consider two floating point numbers to be "close enough" even if they aren't exactly equal Better approach: check if their difference is less than a certain threshold 94

Floating Point Comparisons: Example // Assuming f1 >= f2 difference = f1 - f2; boolean essentiallyequal = difference < 0.00001; 95

Logical Operators Boolean expressions can also use the following logical operators:! Logical NOT Logical OR && Logical AND All three operators take operands of type boolean and produce results of type boolean 96

Truth Tables The possible values of boolean expressions can be shown using truth tables A truth table contains all possible combinations of values for the terms in the expression The value of the expression for each combination is also shown Below is the truth table for boolean expression!a a true false!a false true 97

Truth Tables a b a && b true true true false true false true false false false false false 98

Truth Tables a b a b true true true false true true true false true false false false 99

Logical Operator Precedence (1) Like arithmetic operators, logical operators have precedence rules among themselves 1)! 2) && 3) a b &&!c 3 2 1 1. First, the negation of c is evaluated 2. Then, b is "AND-ed" with the value of!c 3. Finally, a is "OR-ed" with the value of b &&!c 100

Logical Operator Precedence (2) Logical operators have lower precedence than comparison operators higher precedence than the assignment operator boolean b = a && c < d; 3 2 1 101

Summary: operator precedence See http://www.uni-bonn.de/~manfear/javaoperators.php From highest precendence to lowest: unary minus (-) negation (!) casting (e.g. (int) ) (*, /,%) (+, -) (<, <=, etc) (==,!=, etc) && assignment (=) Operators of the same precedence get evaluated from left to right. e.g. in 3 * 4 / 5, first we do 3 * 4 then we do 4 / 5 102

Using methods you didn't write 103

Example System.out.print( println and print are ); System.out.println( methods written by someone else ); // The print and println methods are accessed through // a Java class called System. // Some programmer wrote the System class and shared // it with the whole world. 104

Java Standard Class Library A class library is a collection of classes that we can use when developing programs The Java standard class library that is part of every Java development environment (JDK) A major component of the assignments is looking up information in the standard class library documentation: http://download.oracle.com/javase/6/docs/api/ 105

To use class libraries you have to import them We have already seen this in some examples: import java.util.scanner; java.util.scanner means the Scanner class belongs the util package, which belongs to the java package. Exception: you don't have to import classes that belong to java.lang. Example: System (used for printing) Example: Math (which we will introduce now) 106

The Math Class (1) The Math class contains many methods which providing various mathematical functions, such as absolute value, trigonometric functions, square root, power, logarithms, and others The Math class is perhaps the best example of a Java class whose role is to be a collection of related methods Some of the methods declared in the Math class: public static double cos(double a): Returns the trigonometric cosine of angle a, where a is expressed in radians public static double pow(double a, double b): Returns the value of a raised to the power of b public static double sqrt(double a): Returns the positive square root of a 107

Math class example int i = 7, j = -9; double x = 72.3, y = 0.34; System.out.println(" " + i + " is " + Math.abs(i)); System.out.println(" " + j + " is " + Math.abs(j)); System.out.println(" " + x + " is " + Math.abs(x)); System.out.println(" " + y + " is " + Math.abs(y)); // This will print absolute values as follows: // 7 is 7 // -9 is 9 // 72.3 is 72.3 // 0.34 is 0.34

The Math Class (2) public static double toradians(double angrad): Converts angle angrad measured in radians to an approximately equivalent angle measured in degrees public static double todegrees(double angdeg): Converts angle angdeg measured in degrees to an approximately equivalent angle measured in radians public static double exp(double a): Returns Euler's number e raised to the power of a public static double log(double a): Returns the natural logarithm (base e) of a public static double log10(double a): Returns the base 10 logarithm of a public static double random(): Returns a double value with a positive sign, greater than or equal to 0.0 and less than 1.0. 109

Math Class: Exercise (to do at home) Use the Math class to complete the getthirdside() method of the LawOfCosines class (next slide) by adding code that does the following: Returns the length of the third side of a triangle from the other two sides and the angle between them; the formula for this calculation is c 2 = a 2 + b 2-2ab cos θ, where c is the side whose length is unknown, a and b are the two sides whose lengths are known, and θ is the angle between sides a and b Note that the input parameter passed to the cos() method of the Math class is an angle expressed in radians, while the program asks for an angle expressed in degrees; you will therefore need to convert the angle from degrees to radians 110

LawOfCosines.java public class LawOfCosines { public static void main(string[] args) { } System.out.println("Third side is " + getthirdside(5,8)); System.out.println("Third side is " + getthirdside(10.0,2)); System.out.println("Third side is " + getthirdside(1.0,2.0)); public static double getthirdside(double a, double b) } } // Add your code here