A First Look at C++
I'd like to see some actual C++ code!
Okay! We'll begin with a program in a (hopefully) more familiar language, and then move to C++.
Let's begin with a simple “Hello” program that
- Asks someone their name and greets them
- Asks their favorite number and tells them something about that number.
Python Code
Here's the program in Python:
# A function to test if a number is prime, takes an integer and returns a
# boolean.
def isPrime(n):
if n < 2:
return False
# Try dividing by all numbers from 2 to sqrt(n).
for i in range(2, int(math.sqrt(n)) + 1):
if n % i == 0:
return False
# If we get here, we didn't find a factor, so n is prime.
return True
# Main program starts here.
name = input("What is your name? ")
print("Hello, {}!".format(name))
number = int(input("What is your favorite number? "))
print("Your favorite number is {}".format(number), end='')
if isPrime(number):
print(", and that's a prime number!")
else:
print(". It's not a prime number, but that's okay!")
Run This Code
Click the button below to open this code in the website “Online GDB” (in a new tab).
You can click the green “Run” button in the ribbon at the top of the page. The window at the bottom of the page will show the program running, and you can interact with it there.
If you want to make changes to the code, you can click the “Fork this” button in the bar at the top.
I actually remember Java better than Python.
If you prefer, you can also look at a Java version of this program in Online GDB.
C++ Code
Here is the same program in C++:
#include <iostream>
#include <string>
// This is an example of a function definition, this function takes an integer
// as input and returns a boolean.
bool isPrime(int n) {
if (n < 2) {
return false;
}
// Try dividing by all numbers from 2 to sqrt(n).
for (int i = 2; i*i < n; ++i) {
if (n % i == 0) {
return false;
}
}
// If we get here, we didn't find a factor, so n is prime.
return true;
}
int main() {
std::cout << "What is your name? (one word only please) ";
std::string name;
std::cin >> name;
std::cout << "Hello, " << name << "!" << std::endl;
std::cout << "What is your favorite number? ";
int number;
std::cin >> number;
std::cout << "Your favorite number is " << number;
if (isPrime(number)) {
std::cout << ", and that's a prime number!" << std::endl;
} else {
std::cout << ". It's not a prime number, but that's okay!" << std::endl;
}
return 0;
}
I can sort-of see the connection but there are a bunch of weird things here.
The Online GDB version adds extra comments explaining various things.
Run This Code
Run the code, but also read it over. There are various comments explaining some of the unfamiliar things.
One thing I noticed is that if someone had a name like “Jean Marie” it won't accept it, it thinks “Marie” is the number and reads zero.
That's right. The
>>
operator reads the next “word”. But you can comment out the line that saysstd::cin >> name;
and uncomment the line that says:
std::getline(std::cin, name);
Give it a try!
Remember that you need to click the “Fork this” button at the top to make changes.
Make some change to the C++ code (e.g., the one suggested above) and rerun it.
In the next section, we'll look at the differences between variables in Python and C++.
Hmm… I wonder what this code would look like in other languages…
Meh, if it won't be on the test, I'm not clicking.
(When logged in, completion status appears here.)