Transcript [02]
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
Intro to C++
Minor differences from C
Major additions to C
Today
Differences
Semester
Additions
Output
cout
<<
Output stream separator
Between every object in stream
endl
Output stream
Print to screen
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’s the
difference?
// What about this?
char string3[ ] = {'a', 'b', 'c'};
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);
string
int start = 0;
int end = s.length();
// copy of original
// left-most character
// right-most character
// swap chars until end and start
// meet in the middle
R e
while (start < end)
{
--end;
char c = result[end];
result[end] = result[start];
result[start] = c;
++start;
}
! e
return result;
}
v e r s 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:
Part 2:
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
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
If they are a CMSC major and their GPA is too low
Print a congratulatory message
Tell them to retake 201
If they are any other major
Tell them to change majors to CMSC – because it’s the best!