=====
CS 111 - Week 4 Lecture 1 - 2024-09-17
=====
=====
TODAY WE WILL:
=====
* announcements
* concept of REFACTORING
* intro to BRANCHING - cond expression
* big-bang's stop-when clause
* [if time] modulo function
* prep for next class
;=====
* should be starting Homework 3;
deadline/at least first attempts due by this Friday, Sept. 20
* submit early, submit often!
=====
aside: what it means to REFACTOR code
=====
* have an error in your code?
you fix it -- that's DEBUGGING
* sometimes you want to extend or add to code,
make it work on a new device or environment, etc. --
arguably, that might be called maintenance
* refactoring is a LITTLE different from these --
sometimes you want to improve working code (without
really changing what it is doing) --
* to be more READABLE
* to be more EFFICIENT
* to be easier to REUSE in various ways later
* probably etc.
* NOTE: any time you change your code, there is a chance you
might accidentally introduce an error --
do you see how check-expect (and other check- expressions)
may help make refactoring less dangerous, since these are
re-run every time you click Run?
so if all your tests still pass after you refactor, that
increases your confidence that you have not introduced
an error while refactoring; (not a guarateee, but helps!)
=====
cond (conditional) expression
=====
* multi-way branching expression!
...make ONE choice from 2 or more options
* syntax:
(cond
[boolean-expr1 expr1]
[boolean-expr2 expr2]
[boolean-expr3 expr3]
...
[else expr-else]
)
* semantics (meaning):
when a cond expression is reached,
the boolean-expr1 is is evaluated -- if it is #true,
expr1 is the value of this cond, and its DONE
else, boolean-expr2 is evaluated -- if IT is #true,
expr2 is the value of this cond, and its DONE
else...
if an else clause is reached, it is always considered
#true, and its expr-else becomes the value of this cond.
* NOTE:
AT MOST one branch will be "taken" --
as soon as one of the clauses' boolean expression is #true,
that clause's expr becomes the value of this cond.
so the order of the cond clauses matters;