=====
CS 111 - Week 11 Lecture 2 - 2024-11-07
=====

=====
TODAY WE WILL:
=====
*   Announcements
*   Exam 2 Review
*   if time: more on local variables
*   prep for next class

*   should be working on Homework 9,
    at-least-1st-attempts due by 11:59 pm on Friday, November 8

*   important upcoming schedule notes!
    =====
    *** UPDATED these on Wednesday, November 6, after considering
        cs50 IDE issues plus other factors ***
    =====
    *   TODAY, Thursday, November 7 - review for Exam 2
        *   there will again be a handout of review suggestions
	*   you will again be able to make a handwritten notes
	    page that you can submit a photo of for bonus credit
	    and use during the exam

    *   TOMORROW, Friday, November 8 - WILL be a lab exercise (on switch
        statements)
	*   at-least-first-attempts at Homework 9 due by
	    11:59 pm on Friday

    *   TUESDAY, November 12
        *   graded Exam 1s will be returned during class
	    (so you can look over them before taking Exam 2!)

        *   will 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

=====
more on the assignment statement
=====

*   syntax:

    desired_local_var = desired_compat_expr;
      ^                      ^
     left-hand-side       right-hand-side
     LHS                  RHS

    *   the LHS *must* contain something that can be assigned to,
        that can be given a value, such as a local variable
	*   sometimes lvalue is used as a general term to
	    describe something-that-can-be-assigned-to

    *   the RHS *must* contain an expression with a value whose
        data type is compatible with the data type of the LHS

*   semantics:

    1. evaluate the RHS expression
    
    2. assign the result to the LHS,
       making that the NEW value of the LHS
       *   replacing whatever value it contained before!

*   NOTE: when you use a local variable,
    you get its value AT THAT POINT in the program

    int quant;      // quant is considered undefined
    quant = 100;    // quant now contains 100
    quant = 5 + 10; // quant now contains 15

*   so: based on the above, which of these is OK syntactically?

    100 = quant;   // bAAAAAAAAD!!!!! you can't change the value of 100 !!!

    1 + 1 = quant; // NOOOOOOOOO! you can't change the value of 1 + 1 !!!

    quant = 1 + 1; // yes, that's fine!

    quant = quant + 1; // ALSO fine --
                       // first compute the value of the RHS:
		       // *   at this point, quant contains 2, so 2 + 1 is 3
		       // then assign the RHS's value to the LHS
		       // *   so 3 becomes the NEW value of quant