Arrayfunctionsc Oct 3
Arrayfunctionsc Oct 3
Chapter 7
Arrays
Objectives
– Example 2
cout << "The value of element " << i << "
is " << grade[i];
– Example 3
const int NUMELS = 20;
for (int k = 5; k < NUMELS; k++)
cout << k << " " << amount[k];
grade[0] is 85
grade[1] is 90
grade[2] is 78
grade[3] is 75
grade[4] is 92
Functions
– Modularize a program
– Software reusability
• Call function multiple times
Local variables
– Known only in the function in which they are defined
– All variables declared in function definitions are local
variables
Parameters
– Local variables passed to function when called
– Provide outside information
Function Definitions
Function prototype
– Tells compiler argument type and return type of function
– int square( int );
• Function takes an int and returns an int
Calling/invoking a function
– square(x);
– Parentheses an operator used to call function
• Pass argument x
• Function gets its own copy of arguments
– After finished, passes back result
Function Definitions
Example function
int square( int y )
{
return y * y;
}
return keyword
– Returns data, and control goes to function’s caller
• If no data to return, use return;
– Function ends when reaches right brace
• Control goes to caller
Functions cannot be defined inside other functions
Next: program examples
1
2
3 #include <iostream>
4 Function prototype: specifies
5 using std::cout; data types of arguments and
6 using std::endl; return values. square
7
expects an int, and returns
8 int square( int ); // function prototype
an int.
9
10 int main()
11 { Parentheses () cause function
12 // loop 10 times and calculate and output
to be called. When done, it
13 // square of x each time
14 for ( int x = 1; x <= 10; x++ )
returns the result.
15 cout << square( x ) << " "; // function call
16
17 cout << endl;
18
19 return 0; // indicates successful termination
20
21 } // end main
22
23 // square function definition returns square of an integer
24 int square( int y ) // y is a copy of argument to function
25 {
26 return y * y; // returns square of y as an int
27
28 } // end function square
Definition of square. y is a
copy of the argument passed.
1 4 9 16 25 36 49 64 81 100 Returns y * y, or y squared.
1
2 // Finding the maximum of three floating-point numbers.
3 #include <iostream>
4
5 using std::cout;
6 using std::cin;
7 using std::endl;
8
9 double maximum( double, double, double ); // function prototype
10
11 int main()
12 {
13 double number1;
Function maximum takes 3
14 double number2;
arguments (all double) and
15 double number3;
16
returns a double.
17 cout << "Enter three floating-point numbers: ";
18 cin >> number1 >> number2 >> number3;
19
20 // number1, number2 and number3 are arguments to
21 // the maximum function call
22 cout << "Maximum is: "
23 << maximum( number1, number2, number3 ) << endl;
24
25 return 0; // indicates successful termination
26
27 } // end main
28 Comma separated list for
29 // function maximum definition; multiple parameters.
30 // x, y and z are parameters
31 double maximum( double x, double y, double z )
32 {
33 double max = x; // assume x is largest
34
35 if ( y > max ) // if y is larger,
36 max = y; // assign y to max
37
38 if ( z > max ) // if z is larger,
39 max = z; // assign z to max
40
41 return max; // max is largest value
42
43 } // end function maximum
Function signature
– Part of prototype with name and parameters
• double maximum( double, double, double );
Function signature
Argument Coercion
– Force arguments to be of proper type
• Converting int (4) to double (4.0)
cout << sqrt(4)
– Conversion rules
• Arguments usually converted automatically
• Changing from double to int can truncate data
– 3.4 to 3
break and continue Statements
break statement
– Immediate exit from while, for, do/while, switch
– Program continues with first statement after structure
Common uses
– Escape early from a loop
– Skip the remainder of switch
1
2 // Using the break statement in a for structure.
3 #include <iostream>
4
5 using std::cout;
6 using std::endl;
7
8 // function main begins program execution
9 int main()
10 {
11
12 int x; // x declared here so it can be used after the loop
13
14 // loop 10 times
15 for ( x = 1; x <= 10; x++ ) { Exits for structure when
16 break executed.
17 // if x is 5, terminate loop
18 if ( x == 5 )
19 break; // break loop only if x is 5
20
21 cout << x << " "; // display value of x
22
23 } // end for
24
25 cout << "\nBroke out of loop when x became " << x << endl;
26
27 return 0; // indicate successful termination
28
29 } // end function main
1 2 3 4
Broke out of loop when x became 5
break and continue Statements
continue statement
– Used in while, for, do/while
– Skips remainder of loop body
– Proceeds with next iteration of loop
while and do/while structure
– Loop-continuation test evaluated immediately after the
continue statement
for structure
– Increment expression executed
– Next, loop-continuation test evaluated
1
2 // Using the continue statement in a for structure.
3 #include <iostream>
4
5 using std::cout;
6 using std::endl;
7
8 // function main begins program execution
9 int main()
10 {
11 // loop 10 times
12 for ( int x = 1; x <= 10; x++ ) {
13 Skips to next iteration of the
14 // if x is 5, continue with loop.
next iteration of loop
15 if ( x == 5 )
16 continue; // skip remaining code in loop body
17
18 cout << x << " "; // display value of x
19
20 } // end for structure
21
22 cout << "\nUsed continue to skip printing the value 5"
23 << endl;
24
25 return 0; // indicate successful termination
26
27 } // end function main
1 2 3 4 6 7 8 9 10
Used continue to skip printing the value 5
1
2 // Shifted, scaled integers produced by 1 + rand() % 6.
3 #include <iostream>
4
5 using std::cout;
6 using std::endl;
7
8 #include <iomanip>
9
10 using std::setw;
11
12 #include <cstdlib> // contains function prototype for rand
13
14 int main()
15 {
16 // loop 20 times
Output of rand() scaled and
17 for ( int counter = 1; counter <= 20; counter++ ) {
18
shifted to be a number
19 // pick random number from 1 to 6 and output it between 1 and 6.
20 cout << setw( 10 ) << ( 1 + rand() % 6 );
21
22 // if counter divisible by 5, begin new line of output
23 if ( counter % 5 == 0 )
24 cout << endl;
25
26 } // end for structure
27
28 return 0; // indicates successful termination
29
30 } // end main
6 6 5 5 6
5 1 1 5 3
6 6 2 4 2
6 2 3 4 1
Storage Classes
Scope
– Portion of program where identifier can be used
File scope
– Defined outside a function, known in all functions
– Global variables, function definitions and prototypes
Function scope
– Can only be referenced inside defining function
Scope Rules
Block scope
– Begins at declaration, ends at right brace }
• Can only be referenced in this range
– Local variables, function parameters
– static variables still have block scope
• Storage duration does not affect scope
Function-prototype scope
– Parameter list of prototype
– Names in prototype optional
• Compiler ignores
– In a single prototype, name can be used once
1
2 // A scoping example.
3 #include <iostream>
4
5 using std::cout;
6 using std::endl;
7
8 void useLocal( void ); // function prototype
9
Declared outside of function;
void useStaticLocal( void ); // function prototype
10 void useGlobal( void ); global variable with
// function file
prototype
11 scope.
12 int x = 1; // global variable
13 Local variable with function
14 int main() scope.
15 {
16 int x = 5; // local variable to main
17
18 cout << "local x in main's outer scope
Create is "block,
a new << x giving
<< endl;
x
19
block scope. When the block
20 { // start new scope
ends, this x is destroyed.
21
22 int x = 7;
23
24 cout << "local x in main's inner scope is " << x << endl;
25
26 } // end new scope
27
28 cout << "local x in main's outer scope is " << x << endl;
29
30 useLocal(); // useLocal has local x
31 useStaticLocal(); // useStaticLocal has static local x
32 useGlobal(); // useGlobal uses global x
33 useLocal(); // useLocal reinitializes its local x
34 useStaticLocal(); // static local x retains its prior value
35 useGlobal(); // global x also retains its value
36
37 cout << "\nlocal x in main is " << x << endl;
38
39 return 0; // indicates successful termination
40
41 } // end main
42
43 // useLocal reinitializes local variable x during each call
44 void useLocal( void )
45 {
46 int x = 25; // initialized each time useLocal is called
47
48 cout << endl << "local x is Automatic
" << x variable (local
49 << variable
" on entering useLocal" of function). This
<< endl; is
50 ++x; destroyed when the function
51 cout << "local x is " << x exits, and reinitialized when
52 << the function
" on exiting useLocal" << endl;begins.
53
54 } // end function useLocal
55
56 // useStaticLocal initializes static local variable x only the
57 // first time the function is called; value of x is saved
58 // between calls to this function
59 void useStaticLocal( void )
60 {
61 // initialized only first time useStaticLocal is called
62 static int x = 50;
63
64 cout << endl << "local static x is " << x
65 << " on entering useStaticLocal" << endl;
66 ++x;
67 cout << "local static x is " << xStatic local variable of
68 << function;
" on exiting useStaticLocal" it is initialized
<< endl; only
69 once, and retains its value
70 } // end function useStaticLocal between function calls.
71
72 // useGlobal modifies global variable x during each call
73 void useGlobal( void )
74 {
75 cout << endl << "global x is " << x This function does not declare
76 << " on entering useGlobal" << endl; any variables. It uses the
77 x *= 10; global x declared in the
78 cout << "global x is " << x
beginning of the program.
79 << " on exiting useGlobal" << endl;
80
81 } // end function useGlobal
local x in main is 5
Functions with Empty Parameter Lists
Group Member ID
Tania Akter 0111-61-035
MD. Rayhanul Islam 0111-61-036
Saddam Hossain 0111-61-037
FUNCTION :
A function is a group of statements that together perform
a task.