lecture_materials:week_00
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
lecture_materials:week_00 [2025-08-18 18:27] – Jeffrey Bergamini | lecture_materials:week_00 [2025-08-19 14:31] (current) – Jeffrey Bergamini | ||
---|---|---|---|
Line 5: | Line 5: | ||
</ | </ | ||
- | <WRAP round tip> | + | ===== Monday |
- | ===== Slides | + | |
+ | {{ : | ||
- | </ | + | {{ : |
- | ===== Monday | + | ===== Tuesday |
- | Forthcoming | + | ==== Scope and Lifetime ==== |
- | ===== Tuesday ===== | + | {{ : |
- | ==== scopes.cpp (illustrating locally and globally scoped variables) | + | === scopes.cpp (illustrating locally and globally scoped variables) === |
<file cpp scopes.cpp [enable_line_numbers=true]> | <file cpp scopes.cpp [enable_line_numbers=true]> | ||
Line 61: | Line 61: | ||
<WRAP round info> | <WRAP round info> | ||
- | === Notes === | + | == Notes == |
- | Your job: Be the compiler and the OS and determine the output without using any tools but your mind! | + | Your job: Be the compiler and the shell and determine the output |
Then compile and run this code to see if you were right. | Then compile and run this code to see if you were right. | ||
</ | </ | ||
- | ==== scopes_annotated.cpp (illustrating locally and globally scoped variables) | + | === scopes_annotated.cpp (illustrating locally and globally scoped variables) === |
<file cpp scopes_annotated.cpp [enable_line_numbers=true]> | <file cpp scopes_annotated.cpp [enable_line_numbers=true]> | ||
Line 112: | Line 112: | ||
<WRAP round info> | <WRAP round info> | ||
- | === Notes === | + | == Notes == |
This is the same program, but prints the **memory address** of each variable in question. Note which '' | This is the same program, but prints the **memory address** of each variable in question. Note which '' | ||
</ | </ | ||
- | ==== raii.cpp (illustrating the concept of RAII) ==== | + | === raii.cpp (illustrating the concept of RAII) === |
- | <file cpp scopes_annotated.cpp [enable_line_numbers=true]> | + | <file cpp raii.cpp [enable_line_numbers=true]> |
/** | /** | ||
* @file raii.cpp | * @file raii.cpp | ||
Line 163: | Line 163: | ||
std:: | std:: | ||
std::cout << " | std::cout << " | ||
- | // std::cout is just a plain input stream: | + | // std::cin is just a plain input stream: |
std::cout << " | std::cout << " | ||
// Lifetimes of `hamlet` and `othello` end here. | // Lifetimes of `hamlet` and `othello` end here. | ||
Line 171: | Line 171: | ||
<WRAP round info> | <WRAP round info> | ||
- | === Notes === | + | == Notes == |
[[https:// | [[https:// | ||
+ | </ | ||
+ | |||
+ | === scope_lifetime_practice.cpp (an opportunity to think and practice) === | ||
+ | |||
+ | <file cpp scope_lifetime_practice.cpp [enable_line_numbers=true]> | ||
+ | /** | ||
+ | * @file scope_lifetime_practice.cpp | ||
+ | * @author Jeffrey Bergamini for CS 19 Boot Camp, jeffrey.bergamini@cabrillo.edu | ||
+ | * | ||
+ | * Some lunchtime practice! | ||
+ | */ | ||
+ | |||
+ | #include < | ||
+ | #include < | ||
+ | #include < | ||
+ | |||
+ | /** | ||
+ | * `main()` can have parameters to access *command-line arguments* and *environment variables*. | ||
+ | * | ||
+ | * @param argc argument count: the number of command-line arguments (including the executable name) | ||
+ | * @param argv argument values: an array of C strings containing the command-line arguments | ||
+ | */ | ||
+ | int main(int argc, char **argv) { | ||
+ | // Exit with an error message if command-line arguments weren' | ||
+ | if (argc < 3) { | ||
+ | std::cerr << " | ||
+ | return 1; // nonzero exit status reports unsuccessful termination to the shell | ||
+ | } | ||
+ | // Attempt to open the two files specified as command-line arguments: | ||
+ | std:: | ||
+ | std:: | ||
+ | if (!f1 || !f2) { | ||
+ | std::cerr << " | ||
+ | return 2; | ||
+ | } | ||
+ | // TODO: Find all the unique printable characters present in one file and not the other. | ||
+ | // Print each unique character and its ASCII encoding, one character per line, in ascending order. | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | <WRAP round info> | ||
+ | == Notes == | ||
+ | |||
+ | Having some data to test with is useful. I have many textual datasets available. If you have your program in a form that is executable in a terminal, the following commands should work for testing: | ||
+ | |||
+ | Command: | ||
+ | <code bash> | ||
+ | ./a.out <(echo suitably) <(echo implausible) | ||
+ | </ | ||
+ | |||
+ | Expected Output: | ||
+ | < | ||
+ | e 101 | ||
+ | m 109 | ||
+ | p 112 | ||
+ | t 116 | ||
+ | y 121 | ||
+ | </ | ||
+ | |||
+ | Command: | ||
+ | <code bash> | ||
+ | ./a.out <(curl -s https:// | ||
+ | </ | ||
+ | |||
+ | Expected output: | ||
+ | < | ||
+ | ' | ||
+ | , 44 | ||
+ | - 45 | ||
+ | . 46 | ||
+ | J 74 | ||
+ | M 77 | ||
+ | j 106 | ||
+ | k 107 | ||
+ | v 118 | ||
+ | </ | ||
+ | |||
+ | Command: | ||
+ | <code bash> | ||
+ | ./a.out <(curl -s https:// | ||
+ | </ | ||
+ | |||
+ | Expected Output: | ||
+ | < | ||
+ | " | ||
+ | # 35 | ||
+ | $ 36 | ||
+ | % 37 | ||
+ | * 42 | ||
+ | + 43 | ||
+ | / 47 | ||
+ | 0 48 | ||
+ | 4 52 | ||
+ | 5 53 | ||
+ | 6 54 | ||
+ | 7 55 | ||
+ | 8 56 | ||
+ | 9 57 | ||
+ | < 60 | ||
+ | = 61 | ||
+ | > 62 | ||
+ | @ 64 | ||
+ | J 74 | ||
+ | U 85 | ||
+ | X 88 | ||
+ | Z 90 | ||
+ | _ 95 | ||
+ | j 106 | ||
+ | ~ 126 | ||
+ | </ | ||
</ | </ | ||
lecture_materials/week_00.1755566857.txt.gz · Last modified: by Jeffrey Bergamini