CS208 C++ Programming Part 1 7/11/2016 1 Introduction The C++ language will be used as a tool to learn about programming We will only cover a small part of C++ programming You will learn how to write short, imperative C++ programs Object-oriented aspects of C++ will NOT be covered 2 C++ Programming Concepts To write a C++ program, we need: Text editor C++ compiler Bloodshed Dev-C++ contains an editor and a compiler in one This is known as an IDE (Integrated Development Environment) 3 Running C++ Programs Use an editor to create/edit C++ code in a text file C++ filenames ended with extension .cpp Compile and link the C++ file Execute the executable file created If find bugs or errors, go back to the first step and correct them and try again. 4 A Simple C++ program: #include <iostream> using namespace std; //Displays greeting int main() { cout << "Hello World!"; return 0; } (Each line is explained on the following slides) 5 A Simple C++ program: #include <iostream> using namespace std; //Displays greeting int main() { cout << "Hello World!"; return 0; } Tells compiler to include code from the iostream library for use of input and output routines. 6 A Simple C++ program: #include <iostream> using namespace std; //Displays greeting int main() { cout << "Hello World!"; return 0; } Tells compiler to use a standard environment. (The first 2 lines must appear in ALL your programs) 7 A Simple C++ program: #include <iostream> using namespace std; //Displays greeting int main() { cout << "Hello World!"; return 0; } Comment for the programmer – lines beginning with "//" are ignored by the compiler 8 A Simple C++ program: #include <iostream> using namespace std; Note Your text uses: void main() //Displays greeting int main() { cout << "Hello World!"; return 0; } But our compiler requires: int main() C++ programs are built using functions. A C++ program must contain at least one function, called main. This is the main function “header”. 9 A Simple C++ program: #include <iostream> using namespace std; //Displays greeting int main() { cout << "Hello World!"; return 0; } Left curly brace marks beginning and right curly brace marks end of the main function 10 A Simple C++ program: #include <iostream> using namespace std; //Displays greeting int main() { cout << "Hello World!"; return 0; } cout displays output, in this case, Hello World! to the monitor 11 A Simple C++ program: #include <iostream> using namespace std; //Displays greeting int main() { cout << "Hello World!"; return 0; } return tells the program to exit from the main function. By default, returning 0 implies success. 12 A Simple C++ program: Sample Run When the program is executed, this is the output: 13 Identifiers Identifiers are the words that a programmer uses to name things in a program An identifier can be made up of letters, digits, and the underscore character An identifier cannot begin with a digit C++ is case sensitive, therefore num and Num are different identifiers Keywords CANNOT be identifiers (see next slide) 14 Keywords C++ keywords (do NOT use as Identifiers) : asm catch continue dynamic-cast FALSE if new Short struct try union volatile auto char default else float int operator signed switch TRUE unsigned wchar_t bool class delete enum for long private sizeof template typedef using while break const do explicit friend mutable register static this typeid virtual case const_cast double extern goto namespace return static-cast throw typename void 15 Data You can store each piece of program data as: a Constant or a Variable You will assign an identifier (name) to: each constant each variable 16 Data Types Each piece of data stored in a program must also have a type. Three basic C++ data types are: int - whole numbers // No commas or leading zeros in number double - numbers with fractional parts // Has a decimal point char - a single ASCII character // Enclosed in single quotes 17 Variables Variables are containers used to hold input data intermediate data output data in your program (think of them as named chunks of memory) A variable will occupy a number of bytes in Main Memory The number of bytes allocated to a variable depends on the type of data that will be stored in it (e.g. numbers, characters, etc.) 18 Declaring Variables Declaring a variable will: - define its type - reserve a memory cell for it - give the memory cell a name (an identifier) Format: type variable-list; Examples: char initial; int num, count; double gpa; 19 Variables in Memory data type Memory variable name(s) int numStudents; … double total; … int average, max; The value stored in a variable is initially garbage, and changes as the program runs. numStudents: 9200 9204 9208 9212 average: 9216 max: 9220 9224 9228 total: 9232 20 Constants A constant is similar to a variable, except that its value is set by the programmer and CANNOT change The compiler will issue an error if you try to modify a constant Why use constants? Gives names to otherwise unclear literal values Facilitates easier changes to the code Prevents inadvertent errors 21 Declaring Constants Declaring a constant will: - define its type and reserve a memory cell for it - give the memory cell a name (an identifier) - store a value in the memory cell Since the value is set by the programmer, the value must be known when the program is written Format: const Examples: const const const type constant-name = value; double PI = 3.14; int AGE = 33; char YES = 'Y'; 22 Constants in Memory data type constant name Memory constant value const int DOZEN = 12; … const double PI = 3.14; The value stored in a constant CANNOT change as the program runs. 6200 DOZEN: 6204 6208 6212 6216 6220 6224 6228 PI: 6232 12 3.14 23 Declaring Constants/Variables Declare constants and variables at the top of the main function Use good identifiers to make code "Self-Documenting" Follow the identifier rules: Should begin with a letter, followed by letters, digits and underscores Are case-sensitive. Standard conventions are: Variable identifiers should begin with a lowercase letter Constants identifiers should be ALL uppercase 24 Constants/Variables Example #include <iostream> using namespace std; int main() { const char INITIAL = ‘P’; int num; : Constant INITIAL and variable num are declared at the top of the main function 25 Comments There are two types of C++ comments: Single-line comments use //… // This comment runs to the end of the current line Multi-lines comments use /* … */ /* This comment runs to the ending symbol, even onto new lines */ Comments are ignored by the compiler. 26 Function Statements Function statements are located between the function’s curly braces ''{" and "}" Statements are separated by semicolons (;) Statements can take up more than one line Extra blanks are ignored - used for readability 27 Assignment Statements An assignment statement changes the value of a variable The assignment operator is the = sign int count, num; char ltr; count = 0; num = 55; ltr = ‘A’; Memory count: 0 num: 55 ltr: A The value on the right is stored in the variable on the left Any value that was in the variable is overwritten 28 Assignment Statements You can only assign a value to a variable that is compatible with the variable's declared type You can declare a variable and assign an initial value to it at the same time: int count = 0; int max = 50; Memory max: 50 count: 0 This is called “initializing” a variable 29 Arithmetic Expressions An expression is a combination of operators and operands Arithmetic expressions compute numeric results using arithmetic operators: Addition Subtraction Multiplication Division Remainder + * / % 30 Operator Results Arithmetic operators can be used with any numeric type An operand is a number or variable used by the operator Result of an operator depends on the types of operands If both operands are int, the result is int If one or both operands are double, the result is double 31 Division and Remainder If both operands to the division operator (/) are integers, the result is an integer (the fractional part is discarded) 14 / 3 equals? 4 8 / 12 equals? 0 The modulus operator (%) returns the remainder after dividing the second operand into the first (both operands must be integers) 14 % 3 equals? 2 8 % 12 equals? 8 32 Operator Precedence Operators can be combined into complex expressions: result = total + count / max - offset; Precedence rules (same as default math rules) Parenthesis are done first Division, multiplication and modulus are done second (left to right) Addition and subtraction are done last (left to right) 33 Assignment Revisited You can consider assignment as another operator, with a lower precedence than the arithmetic operators First the expression on the right hand side of the = operator is evaluated, in precedence order answer = 4 sum / 4 + MAX * lowest; 1 3 Then the result is stored in the variable on the left hand side 2 34 Assignment Revisited The right and left hand sides of an assignment statement can contain the same variable count = 8; First, 20 is added to the original value of count count = count + 20; Memory count: 8 28 Then the result is stored back into count (overwriting the original value) 35 Spacing Use spacing to make arithmetic assignment statements more readable! Which is easier to read? ans=num1+num2*num3; or ans = num1 + num2 * num3; 36 Arithmetic Equivalencies Mathmatical Formulas: c = a2 + b2 num = 1 x(x+y) C++ Equivalent Expressions: c = (a * a) + (b * b); num = 1 / ( x * (x + y)); 37 Input/Output (I/O) We use two input/output statements one for output (cout) one for input (cin) In any program that uses these statements, you must have the following lines at the very beginning of the code: #include <iostream> using namespace std; 38 Output Statement cout – writes output to the monitor Format: cout << field1 << field2 << ... << fieldN; A field can be: - a string of characters (text) in double quotes - a variable - endl (end line/new line) 39 Output Example Example Code: cout << "Hello" << endl; sum = 10; cout << "Sum is " << sum << endl; cout << "Enter a number:"; Resulting Output: Hello Sum is 10 Enter a number: 40 Input Statement cin - gets input from the keyboard (typed in by the user) Format: cin >> field; Here the field must be a variable name 41 Input Example Example: cout << "Enter pay amount: "; cin >> pay; Resulting Output: Enter pay amount: 9.50 cin stores the number typed at keyboard (9.50) into the Memory variable pay in memory pay: 9.50 42 Variables during Program Execution (1/8) The next seven slides will walk you through the execution of the program below: #include <iostream> using namespace std; int main() { int num1, num2; double avg; num2 = 5; num1 = 7; avg = (num1 + num2) / 2; cout << "Avg is " << avg; return 0; } 43 Variables during Program Execution (2/8) During Compile Time: #include <iostream> using namespace std; int main() { int num1, num2; double avg; num2 = 5; num1 = 7; avg = (num1 + num2) / 2; cout << "Avg is " << avg; return 0; } num2 Main Memory num1 Executable Program Allocate 2 bytes of main memory for each int variable, and assign names num1 and num2 44 Variables during Program Execution (3/8) During Compile Time: #include <iostream> using namespace std; int main() { int num1, num2; double avg; num2 = 5; num1 = 7; avg = (num1 + num2) / 2; cout << "Avg is " << avg; return 0; } y num2 num1 avg Executable Program Allocate 4 bytes of main memory for the double variable and assign name avg 45 Variables during Program Execution (4/8) During Execution Time: #include <iostream> using namespace std; int main() { int num1, num2; double avg; num2 = 5; num1 = 7; avg = (num1 + num2) / 2; cout << "Avg is " << avg; return 0; } y num2 num1 Main Memory 5 avgk Executable Program Store the integer 5 (0000000000000101) in location allocated to num2 46 Variables during Program Execution (5/8) During Execution Time: #include <iostream> using namespace std; int main() { int num1, num2; double avg; num2 = 5; num1 = 7; avg = (num1 + num2) / 2; cout << "Avg is " << avg; return 0; } Main Memory y num2 num1 7 5 avgk Executable Program Store the integer 7 (0000000000000111) in location allocated to num1 47 Variables during Program Execution (6/8) During Execution Time: #include <iostream> using namespace std; int main() { int num1, num2; double avg; num2 = 5; num1 = 7; avg = (num1 + num2) / 2; cout << "Avg is " << avg; return 0; } Main Memory y num2 num1 avgk 5 7 6.0 Executable Program Read contents of bytes allocated to num1 and num2 from Main Memory. Add the values and divide by 2. End result will be written into the bytes allocated to the variable avg 48 Variables during Program Execution (7/8) During Execution Time: #include <iostream> using namespace std; Main Memory y num2 num1 avgk 5 7 6.0 int main() Screen { Executable Program Avg is 6.0 int num1, num2; double avg; num2 = 5; num1 = 7; Send the text “Avg is” to the avg = (num1 + num2) / 2; screen. cout << "Avg is " << avg; Then read the value of avg return 0; from Main Memory and send } that value to the screen. 49 Variables during Program Execution (8/8) During Execution Time: #include <iostream> using namespace std; Main Memory y num2 num1 avgk int main() Screen { Avg is 6.0 int num1, num2; double avg; num2 = 5; num1 = 7; avg = (num1 + num2) / 2; cout << "Avg is " << avg; return 0; } 5 7 6.0 Executable Program Program exits main function and terminates. 50 Age Program Description Write a program to: compute and display a person’s age given their year of birth as input 51 Age Program Design What are the program inputs? Age needs a variable Are there any known values the programmer will set? needs a variable What are the program outputs? Year of Birth Current year needs a constant How do we calculate the output value? Age = Current Year – Year of Birth formula 52 Algorithm Pseudocode: Prompt for user’s year of birth Read in user’s year of birth Compute user’s age Display user’s age 53 Age Program Code #include <iostream> using namespace std; int main() { const int NOW_YR = 2006; int birthYr, age; cout << "Enter year of birth: "; cin >> birthYr; age = NOW_YR - birthYr; cout << "Age after this year's birthday is "; cout << age; return 0; } (Explanation on following slides) 54 Age Program Explanation const int NOW_YR = 2006; /* defines a constant NOW_YR and stores value 2006 into it */ Memory NOW_YR: 2006 age: birthYr: 1962 int birthYr, age; // defines two integer variables, birthYr and age cout << "Enter year of birth: "; // displays prompt to the screen cin >> birthYr; /* reads the year entered by the user and stores it into variable birthYr */ Screen: Enter year of birth: 1962 55 Age Program Explanation Memory NOW_YR: 2006 age: 44 birthYr: 1962 age = NOW_YR - birthYr; /* calculates age by subtracting birthYr from NOW_YR*/ cout << "Age after this year's birthday is "; // displays text message Screen: Enter year of birth: 1962 Age after this year’s birthday is 44 cout << age; // displays value stored in variable age on same line as message 56 Running Programs on your C++ Compiler If you type the programs shown in this slide presentation into your compiler and execute them, there will be a problem: The DOS input/output screen will disappear before you have a chance to read your results (it will look like nothing happened). The next slides will show you how to make the DOS screen stay open. 57 Keeping the DOS screen open Add the following lines to EVERY C++ program file that you create: At the BOTTOM of the file, just BEFORE the "return 0;" statement, add: cout << endl << endl; system("PAUSE"); 58 Example The original simple program from slide #4 becomes: #include <iostream> using namespace std; //Displays greeting int main() { cout << "Hello World!"; cout << endl << endl; system("PAUSE"); return 0; } 59 Example Output And the program output becomes: 60 Exercise Type the Hello World code from the previous 2 slides into your compiler. Compile and run the code. 61 Template File You can create a template file to use whenever you start a new program, that looks like this: #include <iostream> using namespace std; int main() { //insert program code here cout << endl << endl; system("PAUSE"); return 0; } 62