Section 2.3 of Problem Solving With C++
Suppose I want to compute something like (3.55 - 17.017)^3. I can do this with C++, but "^" doesn't mean exponentiation in C++, so instead I need to write:
cout << (3.55 - 17.017)*(3.55 - 17.017)*(3.55 - 17.017) << endl;
This is a bit of a hassle. Normally we would think of first computing (3.55 - 17.017), then taking the resulting value and cubing it. Hopefully we think something like: "let x be (3.55 - 17.017) and compute x^3." We need a variable in which to store the value (3.55 - 17.017)!
So we try creating the following program:
x = 3.55 - 17.017;
std::cout << x*x*x << std::endl;
When we compile this, we get an error message like
error line 4: 'x' is an undeclared identifier
What the compiler is saying is this: "x??? you never told me there was going to be an x!" If you want to use x to store the value (3.55 - 17.017), you need to first tell the compiler that the name x is going to stand for a number - this is called declaring the variable x.
double x; declares
that x is a variable of type double, which means that it's a variable
that can stand for numbers with decimal points. The type of a variable
tells you what kind of objects can be stored in the variable. There are many
different types in C++, and in fact understanding types is one of the
most important skills you'll learn in this course.
= operator assigns a
value to the variable x.
To make the program work, we write:
double x; //declare x as an object
x = 3.55 - 17.017; //assign x the value 3.55 - 17.017
std::cout << x*x*x << std::endl; //print out x^3
been declared as a variable of type double, it can be used in the program just like a normal
number, either to print or to use in arithmetic expressions, like
cout << x*x*x << endl, which
really goes on here is that space in your computer's memory is allocated for
one object of type
and given the name x. When you ask for the value of x (by
involving it in an arithmetic expression or by trying to print it) the computer
fetches a copy of the value from memory. When you use the = operator, the
computer takes the value on the right hand side, and copies it into the space
reserved for x.
Thus, strange sequences like:
x = 3.5;
x = 2.4;
make perfect sense. After the statement
x;, space is reserved for x, though we have no idea what actual
value is in there - at this point x is uninitialized. The statement
x = 3.5; copies the value 3.5 into the
space reserved for x. Finally, the statement
x = 2.4; copies the value 2.4 into the
space reserved for x, thus overwriting the 3.5 that had been there
Legal Variable Names
Can you use any word or letter to represent a variable name? The answer is NO. A variable name must begin with a letter (lowercase or uppercase) or an underbar ( _ ). It may be any length you want (Anything after the first 32 characters will be ignored.) but it can only contain letters, digits, and the underbar. Except in special situations, the use of the underbar to begin a variable name should be avoided. There are a special class of keywords reserved for use by C++ and you may not use one of them to name a variable. Examples of keywords are double, cout, and endl. As we proceed, it will become obvious what keywords cannot be variable names but a complete list can be found in Appendix A of your textbook.
C++ distinguished between uppercase and lowercase. As a result, Answer and answer will be considered different variable names. A very common mistake that beginning programmers make is to be sloppy in writing variable names, sometimes using capitals and sometimes not. It is not good programming practice to use two variables names that are spelled the same except for capitalization because it leads to errors. Your source code will be more easy to understand by mere mortals (interpret this to mean the instructor grading your programs) if you use meaningful variables names.
already seen how to output information from a program using
cout. In C++ (and in many other places)
we refer to an output stream, the idea being that each thing we write
goes out sequentially in the order we write it. In exactly the same way, we
read from an input stream. Not surprisingly (given that our output
cout) our input
stream object is called
[Note: Really it's called
but if we use
using namespace std
we may drop the
It's defined in the
library, just like
double x, y;
cin >> x >> y;
may only read into variables, so
>> 1.5 will cause a compiler error. (And what would it
mean????) When reading into
cin skips any spaces, tab's,
or newlines until it comes across a number. So, for example:
double x, y, z;
cin >> x >> y >> z;
this together, we can construct a very simple program Addition
Calculator, which reads in two numbers from the user and adds them
together. Notice that the variable that contains the sum of the two numbers
input by the user is actually called
This is just to enhance the readability of my code. I could've called the
variable "George" and it would've worked just the same.
few of the mathematical operations we typically use with real numbers are part
of the core C++ language. In fact, the only operations you'd recognize from
math class are +, -, *, and /. Operations like exponentiation, square roots,
logs, and so on are not part of the core language, but they are available to
you in libraries. Libraries extend the functionality of C++. There is
a set of standard libraries that are an official part of the language
(Here is some online documentation on
the standard libraries.), and the
library we've been using is one example. There is a library called
cmath that allows you to perform other
square roots and sines and logarithms.
Here is a list of problems and solutions. With even the very basic construction of input, output, variables, and expressions, we can write some useful programs.
Roots of Quadratic
Polynomials This requires the
function, so it includes a brief description of the
cmath library. "Libraries"
extend the base C++ language.
Last modified by LT M. Johnson 08/15/2007 09:11 AM