410 likes | 556 Views
COMP 110: Introduction to Programming. Tyler Johnson Feb 2, 2009 MWF 11:00AM-12:15PM Sitterson 014. Announcements. Program 1 due Wed by midnight Couple things. Questions?. Today in COMP 110. The type boolean switch statements Enumerations. Review. If-Statements
E N D
COMP 110:Introduction to Programming Tyler Johnson Feb 2, 2009 MWF 11:00AM-12:15PM Sitterson 014
Announcements • Program 1 due Wed by midnight • Couple things
Today in COMP 110 • The type boolean • switch statements • Enumerations
Review • If-Statements • Used to make decisions or check conditions in a program • E.g. check the value of a variable • Syntax if(Boolean_Expression) Statement_1 else Statement_2 • If Boolean_Expression is true, Statement_1 is executed; otherwise Statement_2 is executed
If Statement Exercise • What is the output? if(x > 5) { System.out.print(‘A’); if(x < 10) System.out.print(‘B’); } else System.out.print(‘C’);
Boolean Expressions • An expression that evaluates to either true or false • Consider ((x > 10) || (x < 100)) • Why is this probably not what the programmer intended? • It’s true for any x • Consider ((2 < 5) && (x < 100)) • Why is this probably not what the programmer intended? • It’s the same as (x < 100)
The Type boolean • boolean is a primitive type in Java • Stores the value true or false • We can declare variables of type boolean just like we declare an int, double, etc. boolean ready; boolean error;
Booleans • Using booleans can make your programs easier to understand //a bit difficult to read if(temp <= 100 && thrust >= 12000 && cabinPressure > 30) System.out.println(“Launch”); else System.out.println(“Abort”);
Booleans • Booleans can be used inside boolean expressions boolean systemsGo = temp <= 100 && thrust >= 12000 && cabinPressure > 30; //much easier to read if(systemsGo) System.out.println(“Launch”); else System.out.println(“Abort”);
True and False • The words true and false are also reserved words in java • We can use them to initialize boolean variables boolean ready = false; boolean initialized = true;
Booleans • There’s no need to write if(systemsGo == true) System.out.println(“Launch”); • The more concise and equivalent way is if(systemsGo) System.out.println(“Launch”);
Naming Booleans • Choose names for boolean variables that sound true when the value of the variable is true • boolean ready; //are we ready? • boolean readingInput; //are we reading input? • booleanerrorEncountered; //have we encountered //an error?
Precedence • Java uses precedence rules when evaluating boolean expressions • Example • score >= 80 && score < 90 • The expressions to the left and right of && are evaluated first
Operator Precedence Highest Precedence First: the unary operators +, -, ++, --, ! Second: the binary operators *, /, % Third: the binary operators +, - Fourth: the boolean operators <, >, >=, <= Fifth: the boolean operators ==, != Sixth: the boolean operator && Seventh: the boolean operator || Lowest Precedence
Boolean Precedence Example • 4 < 3 / 2 – 10 || 4 * -2 > 9 • 4 < 1 – 10 || 4 * -2 > 9 • 4 < 1 – 10 || -8 > 9 • 4 < -9 || -8 > 9 • false || -8 > 9 • false || false • false
Style • It’s usually best to indicate precedence in boolean expressions explicitly with parentheses • (score < ((min / 2) – 10)) || (score > 90)
Short-Circuit Evaluation • In some cases, the result of a boolean expression can be determined before all subparts of the expression are evaluated • Example true || (x >= 60) • This expression is true regardless of the value of x
Short-Circuit Evaluation • Java uses what’s called short-circuit evaluation when evaluating boolean expressions • If at any point in the evaluation of a boolean expression the outcome is determined, any remaining subparts are not evaluated
Short-Circuit Evaluation • Example • We’re computing an average homework score • Print “Good work!” if the average is above 60 if(numAssignments > 0 && ((total / numAssignments) > 60) System.out.println(“Good work!”); • Without short-circuit evaluation, we would divide by zero if numAssignments == 0
Reading in Booleans • We can read in booleans from the keyboard just like any other variable boolean bVar; Scanner keyboard = new Scanner(System.in); bVar = keyboard.nextBoolean();
Switch Statements • If-statements with many branches can be difficult to read • The switch statement can be used as an alternative to a multi-branch if-statement in certain cases
Switch Statement • A switch statement begins like this switch(Controlling_Expression) { … } • Controlling_Expression must have type int or char
Switch Statements • Inside the body of a switch statement, a number of case labels will appear • The different cases are separated with a break statement caseCase_Label_1: Statements_1 break; … caseCase_Label_n: Statements_n break;
Switch Statement Example int year; … switch(year) { case 1: System.out.println(“You are a freshman”); break; case 2: System.out.println(“You are a sophomore”); break; case 3: System.out.println(“You are a junior”); break; case 4: System.out.println(“You are a senior”); break; default: System.out.println(“This is a default case”); break; }
Switch Statement Example int year = 1; … switch(year) { case 1: System.out.println(“You are a freshman”); break; case 2: System.out.println(“You are a sophomore”); break; case 3: System.out.println(“You are a junior”); break; case 4: System.out.println(“You are a senior”); break; default: System.out.println(“This is a default case”); break; }
Switch Statement Example int year = 3; … switch(year) { case 1: System.out.println(“You are a freshman”); break; case 2: System.out.println(“You are a sophomore”); break; case 3: System.out.println(“You are a junior”); break; case 4: System.out.println(“You are a senior”); break; default: System.out.println(“This is a default case”); break; }
Switch Statement Syntax switch(Controlling_Expression) { caseCase_Label: Statements break; caseCase_Label : Statements break; … default: Statements break; }
Switch Statements • If no break statement is specified, for a case, execution will continue down to the next case int n; … switch(n) { case 1: System.out.println(“one”); case 2: System.out.println(“two”); break; } • If n == 1, this code prints onetwo
Switch Statement Example char input; … switch(input) { case'y': case'Y': System.out.println(“You entered yes”); break; case'n': case'N': System.out.println(“You entered no”); break; default: System.out.println(“Invalid input”); break; }
Default Case • When using a switch statement you should always provide a default case • This catches any conditions you may not have checked for, such as errors default: System.out.println(“This is a default case”); break;
Conversion to If • The previous example can also be written equivalently with an if-statement if(input == 'y' || input == 'Y') System.out.println(“You entered yes”); else if(input == 'n' || input == 'N') System.out.println(“You entered no”); else System.out.println(“Invalid input”);
If/Switch • How to know whether to use a switch or an if-statement? • Switch statement • Can only be used with type char or int • When you want to choose between many, specific values such as 5,6, 'y' etc. • If statement • Can only be used with boolean expressions • When the number of choices is relatively small • When you want to check a range of possibilities, e.g. x > 5, y <= 1000
Enumerations • Suppose you wanted to write a computer program that stores different flavors of ice cream • Vanilla, Chocolate, Strawberry, etc. • How would we store them in a computer program?
Enumerations • We can give the flavors an underlying numeric representation • Vanilla = 0, Chocolate = 1, Strawberry = 2 • We could declare a variable integer to store our flavor, but this is error-prone int flavor = 0; //vanilla flavor = 1; //chocolate
Enumerations • An enumeration allows us to give unique numeric values to a list of items enum Flavor {Vanilla, Chocolate, Strawberry} • This statement assigns a unique numeric value to each of {Vanilla, Chocolate, Strawberry}
Switch/Enum Example enum Flavor {Vanilla, Chocolate, Strawberry} Flavor flavor; //declare a variable of type Flavor … switch(flavor) { case Vanilla: System.out.println(“That’s Vanilla!”); break; case Chocolate: System.out.println(“That’s Chocolate!”); break; case Strawberry: System.out.println(“That’s Strawberry!”); break; default: System.out.println(“I don’t recognize that flavor”); break; }
Programming Demo • Write a program that takes two numbers as input from the user • The user should then be able to choose from among the following options • Add the two numbers • Subtract the two numbers • Multiply the two numbers • Divide the two numbers
Programming Demo • Pseudocode • Ask user to input two numbers • Provide the user with a list of the options • Perform the operation selected by the user • Output the result
Programming Demo • Programming
Wednesday • Loops • Keep up with the reading • We’ll start Ch 4 on Wed