Download presentation
Presentation is loading. Please wait.
1
Chapter 7 Introduction to High-Level Language Programming
2
Where Do We Stand? Machine language Assembly language LOAD X ADD ONE STORE X. ONE:.DATA 1 Equivalent to INCREMENT X Fine-tuning
3
Disadvantages of Assembly Language Manually manage the movement of data items between and among memory locations. Must take a microscopic view of a task Machine-specific Statements are not English-like
4
High-level Programming Language Data management is much easier. Take a macroscopic view of tasks. High-level languages are more portable. Closer to standard English, use standard mathematical notation. High-level programming languages are often called third-generation language.
5
Program Translation Need a translator to convert high-level language instructions into machine languages. Such a system software is called a compiler. Code library Linker
6
Translations of High-Level Language Refer to Figure 7.1. Source program translation(compiler) intermediate program (assembly language code) translation (assembler) object program(object code in machine language) Linker (links with library object code) complete object code(executable) loader complete object code loaded into memory hardware (execution) results
7
The C++ Language Developed in the 1980s by Bjarne Stroustrup at AT&T Bell labs. Extension of C Object-oriented (more on this topic later)
8
1// Fig. 1.2: fig01_02.cpp 2// A first program in C++ 3#include 4 5int main() 6{6{ 7 std::cout << "Welcome to C++!\n"; 8 9 return 0; // indicate that program ended successfully 10} Welcome to C++! preprocessor directive Message to the C++ preprocessor. Lines beginning with # are preprocessor directives. #include tells the preprocessor to include the contents of the file, which includes input/output operations (such as printing to the screen). Comments Written between /* and */ or following a //. Improve program readability and do not cause the computer to perform any action. C++ programs contain one or more functions, one of which must be main Parenthesis are used to indicate a function int means that main "returns" an integer value. More in Chapter 3. A left brace { begins the body of every function and a right brace } ends it. Prints the string of characters contained between the quotation marks. The entire line, including std::cout, the << operator, the string "Welcome to C++!\n" and the semicolon ( ; ), is called a statement. All statements must end with a semicolon. return is a way to exit a function from a function. return 0, in this case, means that the program terminated normally.
9
Overall Form of a C++ Program Prologue comment[optional] Include derivatives[optional] Functions[optional] Main function { declarations[optional] main function body }
10
Virtual Data Storage Can associate data with a more meaningful name called identifier. In C++, an identifier can be any combination of letters,digits and the underscore symbol (_), as long as it does not begin with a digit. Cannot use keywords for identifiers, either. C++ is a case-sensitive language. Constants vs. variables
11
C++ Keywords Cannot be used as identifiers or variable names.
12
Declaration Tells whether the data item is a constant or a variable. Tells the identifier that will be used throughout the program to name the item. Tells the data type for that item. e.g. double Radius;
13
C++ Syntax Syntax: the correct form for each component of the language. C++ is a free-format language, it does not matter where things are placed on a line. const double PI = 3.1416; int grades[50]; int image[256][256];
14
2-D Array [0][0]=14.3, [0][1]=15.2, [0][2]=16.4 [1][0]=13.9, [1][1]=14.2, [1][2]=12.7 Data structure Site 1Site 2Site 3 Final reading 14.315.216.4 Initial reading 13.914.212.7
15
Statement Types Input/output statements Assignment statements Control statements
16
Input/output Statements Get the value for radius: cin >> Radius; extraction operator >> iostream library #include Print the value of circumference cout << Circumference; insertion operation <<
17
Output format Fixed-point format: 84.8232 Scientific notation (floating-point format): 8.482320e+001 #include cout.setf(ios::fixed); cout.setf(ios::scientific); cout.precision(2); setw(8);
18
The Assignment Statement Set the value of “ variable ” to “ arithmetic expression ” variable=expression; B=2; C=5; A=B+C; A=A+1; +,-,*,/,% (mod) Changing data type: type casting
19
Control Statements Sequential (default, no action required) Conditional Looping
20
C++ Comparison and Boolean Operators Comparison operators: ==,, >=, != Boolean operators && (AND), || (OR), ! (NOT)
21
Conditional Statements if-else if Nested-if
22
1// Fig. 1.14: fig01_14.cpp 2// Using if statements, relational 3// operators, and equality operators 4#include 5 6using std::cout; // program uses cout 7using std::cin; // program uses cin 8using std::endl; // program uses endl 9 10int main() 11{ 12 int num1, num2; 13 14 cout << "Enter two integers, and I will tell you\n" 15 << "the relationships they satisfy: "; 16 cin >> num1 >> num2; // read two integers 17 18 if ( num1 == num2 ) 19 cout << num1 << " is equal to " << num2 << endl; 20 21 if ( num1 != num2 ) 22 cout << num1 << " is not equal to " << num2 << endl; 23 24 if ( num1 < num2 ) 25 cout << num1 << " is less than " << num2 << endl; 26 27 if ( num1 > num2 ) 28 cout << num1 << " is greater than " << num2 << endl; 29 30 if ( num1 <= num2 ) 31 cout << num1 << " is less than or equal to " 32 << num2 << endl; 33 The if statements test the truth of the condition. If it is true, body of if statement is executed. If not, body is skipped. To include multiple statements in a body, delineate them with braces {}. Enter two integers, and I will tell you the relationships they satisfy: 3 7 3 is not equal to 7 3 is less than 7 3 is less than or equal to 7 Notice the using statements.
23
34 if ( num1 >= num2 ) 35 cout << num1 << " is greater than or equal to " 36 << num2 << endl; 37 38 return 0; // indicate that program ended successfully 39} Enter two integers, and I will tell you the relationships they satisfy: 3 7 3 is not equal to 7 3 is less than 7 3 is less than or equal to 7 Enter two integers, and I will tell you the relationships they satisfy: 22 12 22 is not equal to 12 22 is greater than 12 22 is greater than or equal to 12 Enter two integers, and I will tell you the relationships they satisfy: 7 7 7 is equal to 7 7 is less than or equal to 7 7 is greater than or equal to 7
24
Nested if/else Structures Test for multiple cases by placing if/else selection structures inside if/else selection structures. if student ’ s grade is greater than or equal to 90 Print “ A ” else if student ’ s grade is greater than or equal to 80 Print “ B ” else if student ’ s grade is greater than or equal to 70 Print “ C ” else if student ’ s grade is greater than or equal to 60 Print “ D ” else Print “ F ” Once a condition is met, the rest of the statements are skipped
25
Looping while (Boolean condition) S1; Initialization of variables. Sentinel value: to signal that there are no more data. Infinite loop
26
1// Fig. 2.7: fig02_07.cpp 2// Class average program with counter-controlled repetition 3#include 4 5using std::cout; 6using std::cin; 7using std::endl; 8 9int main() 10{ 11 int total, // sum of grades 12 gradeCounter, // number of grades entered 13 grade, // one grade 14 average; // average of grades 15 16 // initialization phase 17 total = 0; // clear total 18 gradeCounter = 1; // prepare to loop 19 20 // processing phase 21 while ( gradeCounter <= 10 ) { // loop 10 times 22 cout << "Enter grade: "; // prompt for input 23 cin >> grade; // input grade 24 total = total + grade; // add grade to total 25 gradeCounter = gradeCounter + 1; // increment counter 26 } 27 28 // termination phase 29 average = total / 10; // integer division 30 cout << "Class average is " << average << endl; 31 32 return 0; // indicate program ended successfully 33} The counter gets incremented each time the loop executes. Eventually, the counter causes the loop to end.
27
Enter grade: 98 Enter grade: 76 Enter grade: 71 Enter grade: 87 Enter grade: 83 Enter grade: 90 Enter grade: 57 Enter grade: 79 Enter grade: 82 Enter grade: 94 Class average is 81
28
1// Fig. 2.9: fig02_09.cpp 2// Class average program with sentinel-controlled repetition. 3#include 4 5using std::cout; 6using std::cin; 7using std::endl; 8using std::ios; 9 10#include 11 12using std::setprecision; 13using std::setiosflags; 14 15int main() 16{ 17 int total, // sum of grades 18 gradeCounter, // number of grades entered 19 grade; // one grade 20 double average; // number with decimal point for average 21 22 // initialization phase 23 total = 0; 24 gradeCounter = 0; 25 26 // processing phase 27 cout << "Enter grade, -1 to end: "; 28 cin >> grade; 29 30 while ( grade != -1 ) { Data type double used to represent decimal numbers.
29
31 total = total + grade; 32 gradeCounter = gradeCounter + 1; 33 cout << "Enter grade, -1 to end: "; 34 cin >> grade; 35 } 36 37 // termination phase 38 if ( gradeCounter != 0 ) { 39 average = static_cast ( total ) / gradeCounter; 40 cout << "Class average is " << setprecision( 2 ) 41 << setiosflags( ios::fixed | ios::showpoint ) 42 << average << endl; 43 } 44 else 45 cout << "No grades were entered" << endl; 46 47 return 0; // indicate program ended successfully 48} Enter grade, -1 to end: 75 Enter grade, -1 to end: 94 Enter grade, -1 to end: 97 Enter grade, -1 to end: 88 Enter grade, -1 to end: 70 Enter grade, -1 to end: 64 Enter grade, -1 to end: 83 Enter grade, -1 to end: 89 Enter grade, -1 to end: -1 Class average is 82.50 setiosflags(ios::fixed | ios::showpoint) - stream manipulator ios::fixed - output numbers with a fixed number of decimal points. ios::showpoint - forces decimal point and trailing zeros, even if unnecessary: 66 printed as 66.00 | - separates multiple option. setprecision(2) - prints only two digits past decimal point. Programs that use this must include static_cast () - treats total as a double temporarily. Required because dividing two integers truncates the remainder. gradeCounter is an int, but it gets promoted to double.
30
Meeting Expectations Data management issue Macroscopic view Portability: ANSI standard Closer to human-language
31
Keeping the Pieces Apart Divide and conquer Using functions Function name (identifier) Argument list: what to pass, what gets returned(return indicator) Local vs. global variables Pass by value vs. pass by reference
32
1// Fig. 3.12: fig03_12.cpp 2// A scoping example 3#include 4 5using std::cout; 6using std::endl; 7 8void a( void ); // function prototype 9void b( void ); // function prototype 10void c( void ); // function prototype 11 12int x = 1; // global variable 13 14int main() 15{ 16 int x = 5; // local variable to main 17 18 cout << "local x in outer scope of main is " << x << endl; 19 20 { // start new scope 21 int x = 7; 22 23 cout << "local x in inner scope of main is " << x << endl; 24 } // end new scope 25 26 cout << "local x in outer scope of main is " << x << endl; 27 28 a(); // a has automatic local x 29 b(); // b has static local x 30 c(); // c uses global x 31 a(); // a reinitializes automatic local x 32 b(); // static local x retains its previous value 33 c(); // global x also retains its value 34 x is different inside and outside the block. local x in outer scope of main is 5 local x in inner scope of main is 7 local x in outer scope of main is 5
33
3.1 Define Functions 35 cout << "local x in main is " << x << endl; 36 37 return 0; 38} 39 40void a( void ) 41{ 42 int x = 25; // initialized each time a is called 43 44 cout << endl << "local x in a is " << x 45 << " after entering a" << endl; 46 ++x; 47 cout << "local x in a is " << x 48 << " before exiting a" << endl; 49} 50 51void b( void ) 52{ 53 static int x = 50; // Static initialization only 54 // first time b is called. 55 cout << endl << "local static x is " << x 56 << " on entering b" << endl; 57 ++x; 58 cout << "local static x is " << x 59 << " on exiting b" << endl; 60} 61 62void c( void ) 63{ 64 cout << endl << "global x is " << x 65 << " on entering c" << endl; 66 x *= 10; 67 cout << "global x is " << x << " on exiting c" << endl; 68} Local automatic variables are created and destroyed each time a is called. Local static variables are not destroyed when the function ends. Global variables are always accessible. Function c references the global x. local x in a is 25 after entering a local x in a is 26 before exiting a local static x is 50 on entering b local static x is 51 on exiting b global x is 1 on entering c global x is 10 on exiting c
34
local x in outer scope of main is 5 local x in inner scope of main is 7 local x in outer scope of main is 5 local x in a is 25 after entering a local x in a is 26 before exiting a local static x is 50 on entering b local static x is 51 on exiting b global x is 1 on entering c global x is 10 on exiting c local x in a is 25 after entering a local x in a is 26 before exiting a local static x is 51 on entering b local static x is 52 on exiting b global x is 10 on entering c global x is 100 on exiting c local x in main is 5
35
1// Fig. 3.20: fig03_20.cpp 2// Comparing call-by-value and call-by-reference 3// with references. 4#include 5 6using std::cout; 7using std::endl; 8 9int squareByValue( int ); 10void squareByReference( int & ); 11 12int main() 13{ 14 int x = 2, z = 4; 15 16 cout << "x = " << x << " before squareByValue\n" 17 << "Value returned by squareByValue: " 18 << squareByValue( x ) << endl 19 << "x = " << x << " after squareByValue\n" << endl; 20 21 cout << "z = " << z << " before squareByReference" << endl; 22 squareByReference( z ); 23 cout << "z = " << z << " after squareByReference" << endl; 24 25 return 0; 26} 27 28int squareByValue( int a ) 29{ 30 return a *= a; // caller's argument not modified 31} Notice the use of the & operator
36
x = 2 before squareByValue Value returned by squareByValue: 4 x = 2 after squareByValue z = 4 before squareByReference z = 16 after squareByReference 32 33void squareByReference( int &cRef ) 34{ 35 cRef *= cRef; // caller's argument modified 36}
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.