CS 112 - Week 4 Lecture 1 - 2022-09-13
TODAY WE WILL
* announcements
* aside: the ifstream/ofstream fail method
* example: reading everything from a file
* examples: functions include an array parameter
* prep for next class
* SCHEDULE for the next TWO weeks:
* TODAY: some more file i/o tidbits and array
parameters
* THURSDAY, Sept 15 - REVIEW for Exam 1, Sept 23,
and if time, START discussion of writing your
own classes
* Friday, Sept 16 - typical lab
* by 11:59 pm, get at least 1st attempts
at Problems 1-4, and at least an attempt
at some of Problems 5-7, submitted
* BUT Homework 4 will not come out until
AFTER Exam 1
* Tuesday, Sept 20 - writing your own classes
* SUBMIT any final improvements/versions
of Homeworks 1-3 programming problems
by 11:59 pm on Tuesday, Sept 20
* 12:01 am, Sept 21: example solutions for
Homeworks 1-3 programming problems
will be reachable on Canvas
* Thursday, Sept 22 - more on writing your own
classes
* Friday, Sept 23, DURING Lab: EXAM 1,
taken IN BSS 317
* (and Homework 4 will be available sometime
during the weekend after Exam 1)
* READING:
* for either Thursday after the Exam 1 Reviewq
OR next Tuesday:
Savitch, Chapter 10, starting at 10.2 (but mostly 10.3)
====
aside: ifstream/ofstream fail method
====
* you can call this method with no arguments
on a file stream you have attempted to open,
and it returns true if that open failed,
and false otherwise
my_stream.open(...);
if (my_stream.fail())
{
cout << "Sorry, could not open that!" << endl;
exit_or_return_statement_dep_on_context;
}
=====
reading everything from a file
=====
* ...when you don't know in advance how much is in there!
* newer C++ compilers (like those available in
both CS50 IDEs...) have getline and
extraction operator >> versions that happen to
return true if the latest read succeeded,
and they return false otherwise
* SO -- these can reasonably be used as the
bool expression in a while loop!
while (getline(in_stream, my_var))
{
...only reach here if latest read succeeded...
}
while (in_stream >> my_var)
{
...only reach here if latest read succeeded...
}
=====
* can you have an array parameter in C++?
YES -- but note that
C++ views the array (under the hood)
as where it STARTS
* an array parameter does NOT have a size indicated!!!
(because it represents future array arguments,
and each of those WILL have a size when they are
declared...)
...and the array argument is passed as the address
of where the array starts in memory...!
ret_type arr_funct(..., arr_type arr_param[],
int arr_size,
...)
* note that to indicate an expected
array in a function signature,
we'll use the notation:
; signature: arr_funct: .... arr_type[] int ...
-> ret_type
* IF the function is NOT to change its array
parameter, it is considered good style
to put the keyword const before its type:
ret_type arr_funct(..., const arr_type arr_param[],
int arr_size,
...)
* see example function print_nums (whose argument array is NOT changed)
and example function get_nums (whose argument array IS changed)
^ started in class, completed after class