===== CS 111 - Week 12 Lecture 1 - 2024-11-12 ===== ===== TODAY WE WILL: ===== * announcements * continue with local variables & interactve input * prep for next class * important upcoming schedule notes! * TODAY - TUESDAY, November 12 * graded Exam 1s were returned during class (so you can look over them before taking Exam 2!) * continue discussing LOCAL VARIABLES and related topics * ALSO: have your final versions of Homeworks 7-9 submitted by 11:59 pm on TUESDAY, November 12, * WEDNESDAY, November 13 * ...so example solutions can be posted for Exam 2 study purposes by 12:01 am on WEDNESDAY, November 13 * Raul, CS 111's Learning Assistant, will give an EXAM 2 REVIEW SESSION on WEDNESDAY, November 13, in BSS 302 from 3:00 - 5:00 pm * THURSDAY, November 14 - * Exam 2 study guide *bonus* is due by 9:00 am on Canvas * Exam 2 given in class (in GH 218) from 9:00 - 10:20 am * Friday, November 15 - there WILL be a lab exercise! * and Homework 10 will come out after this ==== STYLE POINT: ==== * now that we are trying out changing the values in local variables... * it is considered POOR STYLE to change the value of a function's parameter within the function body (except for SPECIAL cases we will discuss, and will NOTE in the purpose statements of such functions) ===== * quick reminder: * the C++ iostream library creates both the objects cout and cin * cout is an output stream object! connected by default to standard output! (typically a console, or in the CS50 IDE a Terminal) * cin is an input stream object! connected by default to standard input! (typically keyboard input) * stream? thinking of input or output as a STREAM, as a sequence, of characters; * we can have the side-effect of writing to standard output by using cout and the << operator, and the expression whose value we wish to print: cout << desired_expr; * the value of desired_expr will be written to standard output, using cout's default formatting for a value of that data type * we can have the side-effect of reading from standard input by using cin and the >> operator, and the local variable or thing-you-can-assign-to you wish to be filled with the result: string sound; cout << "enter an animal sound: "; cin >> sound; * BUT: when using cin with >>, HOW MUCH it reads (from the standard input stream, from the keyboard) can be effected by the TYPE of the local variable being read into! * cin with >> and a string variable STOPS at a blank, tab, or newline character; if for the above you typed la la la ...sound would contain JUST "la"! * what if you WANT to read a blank? (really, what if you want to read everything typed until typing enter/return? until typing essentially a newline?) * iostream provides a function named getline that expects an input stream object and a string variable and has the side effect of reading everything from that input stream up until the next newline character, and converts it to a string object and assigns it to the given string variable string longer_sound; cout << "enter an animal sound: "; getline(cin, longer_sound); // NOW if the user enters la la la // ... longer_sound WILL contain "la la la"! ===== BLOBBING into combinations of waffle toppings, and here's the combos we ended up with: ===== * NO toppings! * chocolate chips * maple syrup * fruit and honey * fruit * chocolate chips, butter, maple syrup, and whipped cream * peanut butter and bananas WHAT IF ... we wanted a function that would ASK a user about desired toppings, and return a string containing their resulting waffle order? With ZERO or ALL or SOME of the above toppings? * see function get_waffle_order in 111lect12-1.cpp to see our FIRST version of this, * using a SEQUENCE of if statements (because 0 or more of these choices may be made) * using local variables (to "build" a waffle order and to hold the user's answers) * and using interactive input to get the user's answers; (also our first example of how testing gets... even *more* INTERESTING when side-effects are involved!)