Outlne CIS 110: Intro to Computer Programmng The Scanner Object Introducng Condtonal Statements Cumulatve Algorthms Lecture 10 Interacton and Condtonals ( 3.3, 4.1-4.2) 10/15/2011 CIS 110 (11fa) - Unversty of Pennsylvana 1 10/15/2011 CIS 110 (11fa) - Unversty of Pennsylvana 2 The Scanner Object What Do Our Programs Look Lke? 10/15/2011 CIS 110 (11fa) - Unversty of Pennsylvana 3 10/15/2011 CIS 110 (11fa) - Unversty of Pennsylvana 4 Ths program replcates a drawng of the snkng Ttanc and two survvors n the water. **** ***** ****** ******* ******** ********* ********** *********** *********** \o_ \o/ ~^~^~^~^~^~^~^~^~^~^~^~^~^~^ ~^~^~^~^~^~^~^~^~^~^~^~^~^~^ ~^~^~^~^~^~^~^~^~^~^~^~^~^~^ ~^~^~^~^~^~^~^~^~^~^~^~^~^~^ 10/15/2011 CIS 110 (11fa) - Unversty of Pennsylvana 5 10/15/2011 CIS 110 (11fa) - Unversty of Pennsylvana 6 CIS 110 (11fa) - Unversty of Pennsylvana 1
10/15/2011 CIS 110 (11fa) - Unversty of Pennsylvana 7 10/15/2011 CIS 110 (11fa) - Unversty of Pennsylvana 8 10/15/2011 CIS 110 (11fa) - Unversty of Pennsylvana 9 10/15/2011 CIS 110 (11fa) - Unversty of Pennsylvana 10 / \ / \ \./ \./ ------------- \/ (o) (o) \/ \/ <> \/ ^ ^ ^ ************ ^ ^ * /\ /\ * ^ ^ * /\ /\ /\ * ^ ^ * /\ /\ /\ * ^ ^ * * ^ ^ * * ^ ^ * * ^ ------------- 10/15/2011 CIS 110 (11fa) - Unversty of Pennsylvana 11 10/15/2011 CIS 110 (11fa) - Unversty of Pennsylvana 12 CIS 110 (11fa) - Unversty of Pennsylvana 2
10/15/2011 CIS 110 (11fa) - Unversty of Pennsylvana 13 10/15/2011 CIS 110 (11fa) - Unversty of Pennsylvana 14 10/15/2011 CIS 110 (11fa) - Unversty of Pennsylvana 15 10/15/2011 CIS 110 (11fa) - Unversty of Pennsylvana 16 10/15/2011 CIS 110 (11fa) - Unversty of Pennsylvana 17 10/15/2011 CIS 110 (11fa) - Unversty of Pennsylvana 18 CIS 110 (11fa) - Unversty of Pennsylvana 3
Real World Programs Out There Real programs are INTERACTIVE! 10/15/2011 CIS 110 (11fa) - Unversty of Pennsylvana 19 10/15/2011 CIS 110 (11fa) - Unversty of Pennsylvana 20 Introducng the Scanner Class Object that lets you read nput from the user. Scanner s n the "java.utl" package. mport java.utl.*; Creates a new Scanner that reads from some source. Scanner n = new Scanner(System.n); System.out.prntln( "Echo: " + n.nextlne()); "The keyboard" Grabs the next lne of nput from the Scanner. 10/15/2011 CIS 110 (11fa) - Unversty of Pennsylvana 21 Readng Input From The User // Reads n a double double d = n.nextdouble(); // Reads n an nteger nt n = n.nextint(); // Reads n an entre lne Strng lne = n.nextlne(); // Reads a token Strng token = n.next(); 10/15/2011 CIS 110 (11fa) - Unversty of Pennsylvana 22 Tokens Tokens are "chunks" of an nput separated by a delmter (here, whtespace). Ths s a strng "some tokens" n wth t! Tokens: ths, s, a, strng, wth, "some, tokens", n, t! Includes punctuaton (e.g., quotes and bangs). Asde: Packages and mport Classes are bundled nto sets called packages. The mport declaraton says that you wsh to use classes found n a partcular package. // Make avalable all classes n java.utl mport java.utl.*; // Make avalable just the Scanner class mport java.utl.scanner; 10/15/2011 CIS 110 (11fa) - Unversty of Pennsylvana 23 10/15/2011 CIS 110 (11fa) - Unversty of Pennsylvana 24 CIS 110 (11fa) - Unversty of Pennsylvana 4
Problem: Makng Decsons Based on User Input Condtonal Statements Scanner n = new Scanner(System.n); double savngs = n.nextdouble(); // If amount s greater than 100, // prnt a congratulatons msg! 10/15/2011 CIS 110 (11fa) - Unversty of Pennsylvana 25 10/15/2011 CIS 110 (11fa) - Unversty of Pennsylvana 26 Introducng Condtonal Statements Syntax of Condtonal Statements "Execute ths block only f savngs s greater than 100." Scanner n = new Scanner(System.n); double savngs = n.nextdouble(); f (savngs > 100) { System.out.prntln("Congratulatons!"); The test or guard f (<test>) { <statement> <statement> <statement> The statements to execute, the body or block 10/15/2011 CIS 110 (11fa) - Unversty of Pennsylvana 27 10/15/2011 CIS 110 (11fa) - Unversty of Pennsylvana 28 Semantcs of Condtonals Else Branches Is the guard true? TRUE Execute the Block Execute statements after condtonal double savngs = n.nextdouble(); f (savngs > 100) { System.out.prntln("Congratuatons!"); else { System.out.prntln("You need more money!"); FALSE "Execute ths block f we don't go nto the frst block" (.e., when savngs s less than or equal to 0). 10/15/2011 CIS 110 (11fa) - Unversty of Pennsylvana 29 10/15/2011 CIS 110 (11fa) - Unversty of Pennsylvana 30 CIS 110 (11fa) - Unversty of Pennsylvana 5
Else-f Branches Relatonal Operators double savngs = n.nextdouble(); f (savngs > 100) { System.out.prntln("Congratuatons!"); else f (savngs > 50) { System.out.prntln("That's decent."); else { System.out.prntln("Need more!"); "Else" = f the prevous guard fals, try ths one! 10/15/2011 CIS 110 (11fa) - Unversty of Pennsylvana 31 > /* greater than */ < /* less than */ >= /* greater than or equals */ <= /* less than or equals */ == /* equals */!= /* not-equals*/ // Syntax: <expr> <op> <expr>, e.g., 1!= 2 Only works on prmtve data. We'll dscuss what to do for objects, e.g., Strngs, later. 10/15/2011 CIS 110 (11fa) - Unversty of Pennsylvana 32 Operator Precedence ++, --, +, - // Unary operators *, /, % // Multplcaton operators +, - // Addton operators <, >, <=, >= // Relatonal operators ==,!= // Equalty operators =, +=, -=, *=, /=, %= // Assgnment operators V Lower Precedence 10/15/2011 CIS 110 (11fa) - Unversty of Pennsylvana 33 Mutually exclusve branches f (savngs < 100) { f (savngs < 100) { f (savngs >= 50) { f (savngs == 75) { else f (savngs >= 50) { else f (savngs == 75) { double savngs = 75; else f gves you true mutually exclusve branches. 10/15/2011 CIS 110 (11fa) - Unversty of Pennsylvana 34 Object Equalty Scanner n = new Scanner(System.n); Strng s = n.nextlne(); // Wll never be true. == only works for prmtve types. f (s == "yes") { System.out.prntln("s1 s yes!"); // Need to use the equals method to check equalty for objects. f (s.equals("yes")) { System.out.prntln("s1 s really yes!"); Multple Condtons Scanner n = new Scanner(System.n); Strng name = n.nextlne(); double amount = n.nextdouble(); // Logcal AND: true f both condtons are true f (name.equals("mcscrooge") && amount > 1000) { System.out.prntln("Y U SO RICH!?"); // Logcal OR: true f one of the condtons s true f (name.equals("peter") amount < 10) { System.out.prntln("Y U SO POOR!?"); 10/15/2011 CIS 110 (11fa) - Unversty of Pennsylvana 35 10/15/2011 CIS 110 (11fa) - Unversty of Pennsylvana 36 CIS 110 (11fa) - Unversty of Pennsylvana 6
Problem: Interactve Sum Cumulatve Algorthms Can you wrte a program that computes the sum of numbers from 1 to the user's nput? Scanner n = new Scanner(System.n); System.out.prnt("n? "); nt n = n.nextint(); System.out.prntln(); nt sum = 0; for (nt = 0; < n; ++) { sum += ; System.out.prntln( "Sum of 1 to " + 10/15/2011 CIS 110 (11fa) - Unversty of Pennsylvana 37 10/15/2011 CIS 110 (11fa) - Unversty of Pennsylvana 38 Interactve Sum Trace (1) Interactve Sum Trace (2) n 10/15/2011 CIS 110 (11fa) - Unversty of Pennsylvana 39 10/15/2011 CIS 110 (11fa) - Unversty of Pennsylvana 40 Interactve Sum Trace (3) Interactve Sum Trace (4) n n n 5 10/15/2011 CIS 110 (11fa) - Unversty of Pennsylvana 41 10/15/2011 CIS 110 (11fa) - Unversty of Pennsylvana 42 CIS 110 (11fa) - Unversty of Pennsylvana 7
Interactve Sum Trace (5) Interactve Sum Trace (6) n n 5 n n 5 sum 0 10/15/2011 CIS 110 (11fa) - Unversty of Pennsylvana 43 10/15/2011 CIS 110 (11fa) - Unversty of Pennsylvana 44 Interactve Sum Trace (7) Interactve Sum Trace (8) 0 0 n n 5 sum 0 n n 5 sum 0 10/15/2011 CIS 110 (11fa) - Unversty of Pennsylvana 45 10/15/2011 CIS 110 (11fa) - Unversty of Pennsylvana 46 Interactve Sum Trace (9) Interactve Sum Trace (10) 1 1 n n 5 sum 0 n n 5 sum 0 10/15/2011 CIS 110 (11fa) - Unversty of Pennsylvana 47 10/15/2011 CIS 110 (11fa) - Unversty of Pennsylvana 48 CIS 110 (11fa) - Unversty of Pennsylvana 8
Interactve Sum Trace (11) Interactve Sum Trace (12) 1 2 n n 5 sum 1 n n 5 sum 1 10/15/2011 CIS 110 (11fa) - Unversty of Pennsylvana 49 10/15/2011 CIS 110 (11fa) - Unversty of Pennsylvana 50 Interactve Sum Trace (13) Interactve Sum Trace (13) 2 3 n n 5 sum 3 n n 5 sum 3 10/15/2011 CIS 110 (11fa) - Unversty of Pennsylvana 51 10/15/2011 CIS 110 (11fa) - Unversty of Pennsylvana 52 Interactve Sum Trace (14) Interactve Sum Trace (15) 3 4 n n 5 sum 6 n n 5 sum 6 10/15/2011 CIS 110 (11fa) - Unversty of Pennsylvana 53 10/15/2011 CIS 110 (11fa) - Unversty of Pennsylvana 54 CIS 110 (11fa) - Unversty of Pennsylvana 9
Interactve Sum Trace (16) Interactve Sum Trace (17) 4 5 n n 5 sum 10 n n 5 sum 10 10/15/2011 CIS 110 (11fa) - Unversty of Pennsylvana 55 10/15/2011 CIS 110 (11fa) - Unversty of Pennsylvana 56 Interactve Sum Trace (18) n n 5 sum 10 10/15/2011 CIS 110 (11fa) - Unversty of Pennsylvana 57 CIS 110 (11fa) - Unversty of Pennsylvana 10