CS 112 - Week 1 Lecture 2 - 2022-08-25 ===== TODAY WE WILL ===== * more C++ review/overview including review/overview of design recipe and also intro to separate compilation * going through roll... * say something you either: ...like about C++ ...wonder about C++ ...are not too fond of about C++ ...would like to see an example of in C++ ===== continuing our function from Tuesday! ...we have THOUGHT about the data involved, and we have determined suitable C++ types for handling that data. ==== next design recipe step: develop the function/method SIGNATURE ==== * CS 112 class style: we will write this as a comment ----- C++ comment: ----- * single-line: // single-line comment * everything from the // to the end of the line is IGNORED * multi-line: /* everything from the slash-star until a star-slash is ignored */ * here's CS 112 course style for a C++ function signature comment: // signature: funct_name: type-of-each-arg -> type-returns // signature: letter_match: string string int -> bool CS 112 COURSE STYLE: * function names should be descriptive! and not misleading * start with a lowercase letter * can separate parts with _ or camelCase ==== NEXT design recipe step: IN a comment, DESCRIBE the meaning of each argument expected, DESCRIBE any side-effects of your function, and DESCRIBE what it returns (if anything) ==== * CS 112 course style: ...actually say "expects ... " followed by description of what the function expects, ...actually say "returns ..." followed by description of what the function returns /* signature: letter_match: string string int -> string purpose: expects a word-of-the-day, a word-guess, and a desired 0-based position to check in those words, and returns if the letter in that position in both words match. If the position is not within the bounds of BOTH words, this returns false. */ ===== design recipe next step: write the HEADER of your function (followed by an empty body FOR NOW) ===== C++ function header and empty body: ret_type funct_name(param1_type param1, param2_type param2, ...) { } bool letter_match(string word_of_day, string word_guess, int pos) { } * CS 112 COURSE STYLE: * use descriptive, non-misleading parameter names * if header is long, continue on next line(s) indenting in some tasteful fashion * for a set of curly braces, each is on its own line, lined up with the beginning of the program component before it * and statements within the { } will be indented by at least 3 spaces ===== next design recipe step: write at least 2 tests of the function being written (and an additional test for each category of data involved) WHEN POSSIBLE, write these as bool expressions ===== C++ syntax: C++ has < > <= >= C++ has && as well as and || as well as or ! as well as not FOR EQUALITY COMPARISON, in C++, use == (a single = is ASSIGNMENT) /* signature: letter_match: string string int -> string purpose: expects a word-of-the-day, a word-guess, and a desired 0-based position to check in those words, and returns if the letter in that position in both words match. If the position is not within the bounds of BOTH words, this returns false. tests: letter_match("model", "bagel", 0) == false letter_match("model", "bagel", 4) == true letter_match("apple", "app", 3) == false */ * C++ string class happens to include the following methods: method at: expects position, returns the char at that position in the calling string method length: expects nothing, and returns the number of characters in the calling string C++ method call syntax: object_expr.method_name(arg1, arg2, ...) * a C++ statement is terminated by a SEMICOLON * if a function or method is to return something, you do so with a return statement: return desired_expr; bool letter_match(string word_of_day, string word_guess, int pos) { return (pos < word_of_day.length()) && (pos < word_guess.length()) && (word_of_day.at(pos) == word_guess.at(pos)) ; } * A C++ program is defined as a collection of 1 or more functions where exactly one is named main and that's where execution starts when it is run (and we used the posted main template to create a small main function to run and print to the screen the results of letter_match's tests -- see the posted letter_match_test.cpp)