520 likes | 762 Views
Variables and C++ Data Types. mathExample2.cpp. // math example #include <iostream> #include <cmath> using namespace std; int main() { cout << "The reciprocal of 10 is " << 1.0/10.0 << endl; cout << "The square root of 10 is " << sqrt(10.0) << endl;
E N D
Variables and C++ Data Types The Ohio State University
mathExample2.cpp // math example #include <iostream> #include <cmath> using namespace std; int main() { cout << "The reciprocal of 10 is " << 1.0/10.0 << endl; cout << "The square root of 10 is " << sqrt(10.0) << endl; cout << "e^(10.0) = " << exp(10.0) << endl; cout << "The reciprocal of 15 is " << 1.0/15.0 << endl; cout << "The square root of 15 is " << sqrt(15.0) << endl; cout << "e^(15.0) = " << exp(15.0) << endl; return 0; // exit program } The Ohio State University
mathExample2.cpp > g++ -o mathExample2.exe mathExample2.cpp > mathExample2.exe The reciprocal of 10 is 0.1 The square root of 10 is 3.16228 e^(10.0) = 22026.5 The reciprocal of 15 is 0.0666667 The square root of 15 is 3.87298 e^(15.0) = 3.26902e+06 > The Ohio State University
Variables (1) • Programs like mathExample2.cpp have little use in practice… • There is no room for change. They simply print the same output onto the screen every time they are executed. • A more interesting program might have different behavior under different circumstances. The Ohio State University
Variables (2) • For instance, a program that asks for a number and outputs its reciprocal and square root is much more useful than mathExample2.cpp. • This program needs placeholders for the incoming values. • These placeholders are called variables The Ohio State University
mathExample3.cpp // math example #include <iostream> #include <cmath> using namespace std; int main() { double x; x = 10.0; cout << "The reciprocal of 10 is " << 1.0/x << endl; cout << "The square root of 10 is " << sqrt(x) << endl; cout << "e^(" << x << ") = " << exp(x) << endl; x = 15.0; cout << "The reciprocal of 15 is " << 1.0/x << endl; cout << "The square root of 15 is " << sqrt(x) << endl; cout << "e^(" << x << ") = " << exp(x) << endl; return 0; // exit program } The Ohio State University
Declaration Statements • Before you can use a variable, you must declare it. This allows the computer to set aside the memory that will be needed for that variable. • Variables consist of a name and its data type. C++ variable declarations are of the form: dataType variableName; • dataType can be: int, float, char, double, unsigned int, ... • variableName must be composed of alphanumeric characters or underscore ‘_’. The Ohio State University
Declaration Example #include <iostream> using namespace std; int main() { int age; float wage; char initial; double height; return 0; // exit program } The Ohio State University
Variable Names • Variable names are composed of the characters: a,b,c,..,z,A,B,C,…,Z,0,1,2,…,9 and _. • Variables names must begin with: a,b,c,..,z,A,B,C,…,Z or _. • Capitalized and lower case letters are different. • Examples: int age; int age1; int Age; int age2; int myAge; int age3B; int Jacks_age; int _age; The Ohio State University
Variable Names Which of these are valid variable names? • me2 • Me2 • 2L8 • R-Wenger • He_who_hesitates_is_lost • HeWhoHesitatesIsLost • Gordon.Gee The Ohio State University
Variable Assignments • Variables can be assigned values during or after declaration, but never before (why?) • Assignment is done with the equals sign height = 67.34; initial = ‘E’; //initial = E; will not work as expected double totalPay = salary + overtime; • Variable assignment is NOT commutative! The variable must always be on the left side of an equals sign. The following is NOT valid: 67 = x; The Ohio State University
mathExample4.cpp // math example #include <iostream> #include <cmath> using namespace std; int main() { double x; cout << "Enter x: "; // Note: no new line cin >> x; // Note: operator ">>“, not operator "<<" cout << "The reciprocal of " << x << " is " << 1.0/x << endl; cout << "The square root of " << x << " is " << sqrt(x) << endl; cout << "e^(" << x << ") = " << exp(x) << endl; return 0; // exit program } The Ohio State University
Input Using cin (1) … double x; cout << "Enter x: "; // Note: no new line cin >> x; // Note: operator ">>“, not operator "<<" … • cin (Console INput) can be used to obtain user input . • Unlike cout, use >> with cin, and not << • When the program is run, cin will wait indefinitely for user input. • cin will input a single value into a variable when it detects a new line from the input: • Remember that before using inputting values into variables, the variables MUST have already been declared! The Ohio State University
… int main() { double x; cout << "Enter x: "; // Note: no new line cin >> x; // Note: operator ">>“, not operator "<<" cout << "The reciprocal of " << x << " is " << 1.0/x << endl; cout << "The square root of " << x << " is " << sqrt(x) << endl; cout << "e^(" << x << ") = " << exp(x) << endl; … > mathExample4.exe Enter x: 10.0 The reciprocal of 10 is 0.1 The square root of 10 is 3.16228 e^(10) = 22026.5 > The Ohio State University
mathExample4.cpp // math example #include <iostream> #include <cmath> using namespace std; int main() { double x; cout << "Enter x: "; // Note: no new line cin >> x; // Note: operator ">>“, not operator "<<“ cout << "The reciprocal of " << x << " is " << 1.0/x << endl; cout << "The square root of " << x << " is " << sqrt(x) << endl; cout << "e^(" << x << ") = " << exp(x) << endl; return 0; // exit program } Try inputs: 20 -20 1000 -1000 0 -0 The Ohio State University
xyz1.cpp // multiple declarations example #include <iostream> using namespace std; int main() { double x; double y; double z; cout << "Enter x, y and z: "; cin >> x; cin >> y; cin >> z; cout << "x = " << x << endl; cout << "y = " << y << endl; cout << "z = " << z << endl; return 0; // exit program } The Ohio State University
… cout << "Enter x, y and z: "; cin >> x; cin >> y; cin >> z; cout << "x = " << x << endl; cout << "y = " << y << endl; cout << "z = " << z << endl; … > xyz1.exe Enter x, y and z: 1 2 3 x = 1 y = 2 z = 3 > The Ohio State University
… cout << "Enter x, y and z: "; cin >> x; cin >> y; cin >> z; cout << "x = " << x << endl; cout << "y = " << y << endl; cout << "z = " << z << endl; … > xyz1.exe Enter x, y and z: 1 2 3 x = 1 y = 2 z = 3 > The Ohio State University
Multiple Declarations • In the previous example we had double x; double y; double z; • This can be done in one statement like this: double x, y, z; • This is very useful when creating several variables of the same type. The Ohio State University
xyz2.cpp // multiple declarations example #include <iostream> using namespace std; int main() { double x, y, z; // multiple declarations cout << "Enter x, y and z: "; cin >> x; cin >> y; cin >> z; cout << "x = " << x << endl; cout << "y = " << y << endl; cout << "z = " << z << endl; return 0; // exit program } The Ohio State University
xyz3.cpp // multiple declarations example #include <iostream> using namespace std; int main() { double x, y, z; cout << "Enter x, y and z: "; cin >> x >> y >> z; // read x, then y, then z cout << "x = " << x << endl; cout << "y = " << y << endl; cout << "z = " << z << endl; return 0; // exit program } The Ohio State University
Multiple Inputs Using cin • cin can be used to obtain multiple inputs. • cin knows when to delimit (i.e. start looking for the next input) upon reaching a “whitespace.” • Whitespaces are: tabs, spaces, new lines The Ohio State University
… cout << "Enter x, y and z: "; cin >> x >> y >> z; cout << "x = " << x << endl; cout << "y = " << y << endl; cout << "z = " << z << endl; … > xyz1.exe Enter x, y and z: 1 2 3 x = 1 y = 2 z = 3 > The Ohio State University
… cout << "Enter x, y and z: "; cin >> x >> y >> z; cout << "x = " << x << endl; cout << "y = " << y << endl; cout << "z = " << z << endl; … > xyz1.exe Enter x, y and z: 1 2 3 x = 1 y = 2 z = 3 > The Ohio State University
Breaking up Multiple Inputs • Sometimes it makes more sense to break up multiple inputs into single inputs, even if they are correlated: int x, y, z; cout << “Enter x: “; cin >> x; cout << “Enter y: “; cin >> y; cout << “Enter z: “; cin >> z; The Ohio State University
cin and cout Which of the following C++ statements have syntax errors and what are the errors? • cout >> “Answer = ” >> x+y >> endl; • cin << x; • cout << “Yes, ” << “ or ” << “ no “ << “ or ” << “ maybe.” << endl; • cin >> yes >> no >> maybe; • cout << “x + y = ” (x + y) << endl; The Ohio State University
Variables (3) • Variables are used to hold data within a program (the data is held in your computer’s main memory). A program can read-from and write-to variables. That is, their values can vary. • Every variable consists of two parts: • The name of a variable is tied to a location in memory • Its data type (discussed next...) The Ohio State University
Data Type: Integers (1) • An integer value is any number that has no decimal point. 123 -45000 +1432431 0 are all valid integers • 1,244 is not a valid integer in C++; no commas are used. Neither is $12 because $ is not a valid part of an integer. The Ohio State University
Data Type: Integers (2) • The largest and smallest integers supported is dependent of the computer on which the program is compiled. Most of today’s computers use 32-bits to represent an integer, so 232 values can be represented. • Integers can be signed or unsigned. • What is the maximum value of an unsigned 32 bit integer? • What is the maximum value of a signed 32 bit integer? The Ohio State University
intExample1.cpp // example using type int #include <iostream> using namespace std; int main() { int x, y; cout << "Enter x and y: "; cin >> x >> y; // Read in x and then y cout << "x = " << x << endl; cout << "y = " << y << endl; cout << "x+y = " << x+y << endl; cout << "x/y = " << x/y << endl; cout << "Done." << endl; return 0; // exit program } Try inputs: 17 3 3 17 0 17 17 0 2000000000 2000000000 The Ohio State University
Integer Division • In C++, (15 / 2) is 7. Why? • Remember that integers have no fractional parts! • There is no rounding in integer division. If your program contained: cout << (15 / 16); The output would be 0. • The fractional part of an integer division is truncated so the result can be an integer. If you need the remainder, use %. If you need a decimal answer, make your operands floating-point numbers: cout << (15.0 / 16.0); The Ohio State University
Data Types: Floating Point Numbers (1) • Floating-point numbers have a decimal point, and they can also be signed or unsigned. • There are three basic types: float double long double • The differences between these are their supported range and precision. The Ohio State University
Data Types: Floating Point Numbers (2) • To represent a floating point number: • float uses 32 bits (4 bytes) • double uses 64 bits (8 bytes) • long double uses 128 bits (16 bytes) • The tradeoff is storage vs. precision and range • What exactly is the precision and range, and how are floating point numbers represented in binary format? IEEE 754 Standard The Ohio State University
Data Types: Floating Point Numbers (3) • Always use “double” to represent floating point numbers. The Ohio State University
Data Types: Floating Point Numbers (4) • Floating-point numbers can be written in exponential notation: 134.56 or 1.3456e2 -0.00345 or -3.45e-3 • Here, e is short for “times ten to the power of”, just like in scientific notation. The Ohio State University
rationalExample1.cpp // example using type double #include <iostream> using namespace std; int main() { double x, y; cout << "Enter x and y: "; cin >> x >> y; cout << "x = " << x << endl; cout << "y = " << y << endl; cout << "x+y = " << x+y << endl; cout << “x*y = " << x*y << endl; cout << “x/y = " << x/y << endl; cout << "Done." << endl; return 0; // exit program } Try inputs: 17 3 3 17 17 0 4000000000 4000000000 1e100 1e100 1e200 1e200 The Ohio State University
Data Type: Characters • Characters include: • All letters of the alphabet (upper and lower case) • The symbolic representation of digits 0 – 9 • All various symbols such as: + * & ^ % $ | , ! • A character value is simply one of these in single quotes, such as 'A' or '8' or ':' or ' ' (blank space). The Ohio State University
Data Type: Characters • A character value is a character in single quotes, such as 'A' or '8' or ':' or ' ' (blank space). • NOTE: '8' and 8 are different. • '8' is the symbolic representation of the character, ‘8’; • 8 is the integer 8. The Ohio State University
Data Type: Characters • Characters usually take up 8 bits (1 byte) • That means there are 28 (or 256) different characters, and every number within the range of [0, 255] is mapped onto some character • So a character really boils down to a numerical representation known as ASCII encoding. The Ohio State University
ASCII Code The Ohio State University
ASCII Table The Ohio State University
charExample1.cpp // example using type char #include <iostream> using namespace std; int main() { char c1, c2, c3; cout << "Enter first initial: "; cin >> c1; cout << "Enter second initial: "; cin >> c2; c3 = 'X'; cout << "Created by: "; cout << c1 << c2 << c3 << endl; return 0; // exit program } The Ohio State University
… char c1, c2, c3; cout << "Enter first initial: "; cin >> c1; cout << "Enter second initial: "; cin >> c2; c3 = 'X'; cout << "Created by: "; cout << c1 << c2 << c3 << endl; … > charExample1.exe Enter first initial: R Enter second initial: W {What is the output?} The Ohio State University
Characters Strings • A character string is an array of characters. • Examples: • "Hello" • "Hello World!" (Note: Blank space is part of the string.) • "He who hesitates is lost.\nHaste makes waste.\n" • "" (The empty string.) The Ohio State University
Character Strings • NOTE: 'A' and "A" are different. • 'A' is the symbolic representation of the character, ‘A’; • "A" is a string containing a single character. • NOTE: '8' and "8" and 8 are different. • '8' is the symbolic representation of the character, ‘8’; • "8" is a string containing a single character; • 8 is the integer 8. The Ohio State University
Data Type: Boolean • The Boolean data type is used for just two values: true and false • Like characters, they only consume 1 byte of storage. • It is worth noting that when dealing with Boolean values in C++, any number other than 0 is always interpreted as true. The Ohio State University
Arithmetic Operations (1) • The basic operations of +, - , *, and / are available, as is % which is used for modulus division (returns the remainder). • A simple arithmetic expression is of the form: operandoperatoroperand 5%3 The Ohio State University
Arithmetic Operations (2) // Examples of arithmetic operations #include <iostream> using namespace std; int main() { cout << "5 % 3 = " << (5 % 3) << endl; cout << "4 - 3 = " << (4 - 3) << endl; cout << "5.0 / 2.0 = " << (5.0 / 2.0) << endl; cout << "5 / 2 = " << (5 / 2) << endl; // Is there any real difference in the last two statements? return 0; } The Ohio State University
… cout << "5 % 3 = " << (5 % 3) << endl; cout << "4 - 3 = " << (4 - 3) << endl; cout << "5.0 / 2.0 = " << (5.0 / 2.0) << endl; cout << "5 / 2 = " << (5 / 2) << endl; … >arithmetic.exe 5 % 3 = 2 4 - 3 = 1 5.0 / 2.0 = 2.5 5 / 2 = 2 > The Ohio State University