240 likes | 249 Views
CMSC 202. Lesson 2 C++ Primer. Warmup. Create an array called ‘data’ Define a constant called DATA_SIZE with value 127 Write a loop to fill the array with integers from the user. Announcements. My Office Hours Tuesday/Thursday 11:30-12:30 By appointment TA Office Hours
E N D
CMSC 202 Lesson 2 C++ Primer
Warmup • Create an array called ‘data’ • Define a constant called DATA_SIZE with value 127 • Write a loop to fill the array with integers from the user
Announcements • My Office Hours • Tuesday/Thursday 11:30-12:30 • By appointment • TA Office Hours • Posted on Website by end of this week • No Labs this week • No TA Office Hours this week
Intro to C++ • Minor differences from C • Major additions to C • Today • Differences • Semester • Additions
Output • cout • Output stream • Print to screen • << • Output stream separator • Between every object in stream • endl • Output stream end of line character • Example: cout << "Hello World!" << endl;
Input • cin • Input stream • Standard input (keyboard) • >> • Input stream separator • Between every object in stream • Example int age; cout << "What is your age?" << endl; cin >> age;
In Action! #include <iostream> using namespace std; int main( ) { // greet the user cout << "Hello reader.\n" << "Welcome to C++.\n"; // prompt user and get response int numberOfLanguages; cout << "How many programming languages have you used? "; cin >> numberOfLanguages; // determine appropriate response if (numberOfLanguages < 1 ) cout << "Read the preface. You may prefer" << endl << "a more elementary book by the same author" << endl; else cout << "Enjoy the book." << endl; return 0; }
Formatting Decimals • Magic code • cout.setf( ios::fixed ); • cout.setf( ios::showpoint ); • cout.precision( 2 ); • Fix & show the decimal with 2 digits of precision • Collection of flags, set until you UN-set them! • Example: double temperature = 81.7; cout.setf( ios::fixed ); cout.setf( ios::showpoint ); cout.precision( 2 ); cout << temperature << endl; // 81.70
Casting • Old C-style casting double DegreesCelsius( int degreesFahernheit ) { return (double)5 / 9 * ( degreesFahrenheit - 32 ); } • New C++-style casting double DegreesCelsius( int degreesFahernheit ) { return static_cast<double>( 5 ) / 9 * ( degreesFahrenheit - 32 ); } • Why? • Compiler makes a check – so it’s safer
Constants • Old C-style #defines #define PI 3.14159; • New C++-style constant variables const double PI = 3.14159; • Why? • Type-checking!
Enumerations • enum • Allows you to define new, limited types • Maps to integers (so comparisons are allowed) • Syntax: enum TYPE_NAME { VAL1, VAL2, …, VALN }; • Example: enum DAYS { SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY }; DAYS today = TUESDAY;
Practice! • Work with your neighbor • Rewrite the warmup to use the following C++ constructs: • cout • cin • const • Warmup • Create an array called ‘data’ • Define a constant called DATA_SIZE with value 127 • Write a loop to fill the array with integers from the user
Review: C-style Strings • Declare a new string: char string1[4] = "abc"; char string2[ ] = "abc"; char *stringp = "abc"; // What about this? char string3[ ] = {'a', 'b', 'c'}; What’s the difference?
Review: C-style Strings • Library Functions • strcpy -- copy a C-style string • strcat -- concatenate two C-style strings • strlen -- return the length of a C-style string • strcmp -- compare two C-style strings
C++-style Strings • Library header file #include <string> • Create an empty string string stringName; • Create a string with initial value string carMake( “Nissan” ); string carModel = “Pulsar”; • Create a copy of a string string newCarMake( carMake );
C++-style Strings • Copy value into existing string firstString = secondString; • Access individual character (like arrays!) firstString[7] = ‘x’; • Compare two strings (==, <, >, !=, …) if (firstString == “ham”) • Concatenation string name = firstName + “ “ + lastName;
C++-style Strings • Length of string if (fileName.size() > 8) if (fileName.length() > 8) • Is string empty? if (fileName.empty()) • Treat C++-string as C-string • (HINT: important for file streams!) string s1 = "bob"; char s2[] = "This is a C-style string"; // this code copies s1 onto s2 using strcpy() strcpy (s2, s1.c_str());
C++-style Strings • Substring • Syntax: stringName.substr( index, length); • Example string name = “Your Name”; string your = name.substr(0, 4); cout << your << endl; // “Your”
Input/Output with C++ Strings • Output • Same as with other variables… cout << stringName << endl; • Example string firstName = “Dana”; string lastName = “Wortman”; cout << firstName << “ “ << lastName;
Input/Output with C++ Strings • Input • Same as with other variables • One issue – strings are broken by whitespace cin >> stringName; • Example: string name; cout << “Please enter your name” << endl; // User types in: Dana Wortman cin >> name; cout << name << endl; // “Dana” // “Wortman” is waiting // to be read…
Input/Output with C++ Strings • Input – Whole lines! • Syntax: getline(inputStream, stringName); • Getline reads until an end-of-line character is seen (return!) • Example: string name; cout << “Please enter your name” << endl; // User types in: Dana Wortman getline(cin, name); cout << name << endl; // “Dana Wortman”
Strings In Action! string Reverse (string s) { string result(s); // copy of original string int start = 0; // left-most character int end = s.length(); // right-most character // swap chars until end and start // meet in the middle while (start < end) { --end; char c = result[end]; result[end] = result[start]; result[start] = c; ++start; } return result; } R e v e r s e ! ! e s r e v e R
Practice! • Prompt for 3 words from the user • Read in 3 separate words • Concatenate them together into 1 string in REVERSE ORDER • Print that string
Challenge! • Part 1: • Define a constant representing the minimum “Gateway” GPA (3.0) • Request the user’s GPA for CMSC 201 • Print it using 3 decimal points of precision • Part 2: • Define a constant representing the computer science major code (CMSC) • Request the user’s 4-letter Major code • Print it • Part 3 (use your constants!): • If the user is a CMSC major and their GPA is above the cuttof • Print a congratulatory message • If they are a CMSC major and their GPA is too low • Tell them to retake 201 • If they are any other major • Tell them to change majors to CMSC – because it’s the best!