Fundamental Programming Function Parameters Fundamental Programming 310201 1

















































- Slides: 49
Fundamental Programming Function Parameters Fundamental Programming 310201 1
Memory Management · in last lecture you leant about local variables · unless authorised, other functions cannot change the value of a local variable · authority to change a variable is given when we call a function with an output variable · in this class we explore how input and output variables work - this is an important topic · let’s start with input variables… Fundamental Programming 310201 2
Input Variables · when a function with an input variable is called, the value of the variable in the call is copied into the function’s local variable Fundamental Programming 310201 3
#include <iostream> void Sub. Function(int Local. To. Sub); note: here, name of variable in call does not match name of input variable in declaration void main(void) { int Local. To. Main = 1; Sub. Function(Local. To. Main); cout << "Local. To. Main after call is: "; cout << Local. To. Main; } void Sub. Function(int Local. To. Sub) { Local. To. Sub = 2; } Sub. Function assigns a value to Local. To. Sub – it has no effect on value of Local. To. Main Fundamental Programming 310201 4
Input Variables · value of variable in call is copied to local variable declared in the function header… void main(void) Local. To. Main { : Sub. Function(Local. To. Main); : } void Sub. Function(int Local. To. Sub) { : Local. To. Sub } main’s variable function call function header Sub. Function’s variable Fundamental Programming 310201 5
#include <iostream> void Sub. Function(int Local. To. Sub); void main(void) { int Local. To. Main = 1; Local. To. Main: Sub. Function(Local. To. Main); cout << "Local. To. Main after call is: "; cout << Local. To. Main; } void Sub. Function(int Local. To. Sub) { Local. To. Sub = 2; } Local. To. Sub: Fundamental Programming 310201 6
#include <iostream> void Sub. Function(int Local. To. Sub); main(void) => void { } int Local. To. Main = 1; Local. To. Main: Sub. Function(Local. To. Main); cout << "Local. To. Main after call is: "; cout << Local. To. Main; void Sub. Function(int Local. To. Sub) { Local. To. Sub = 2; } ? Local. To. Sub: ? Fundamental Programming 310201 7
#include <iostream> void Sub. Function(int Local. To. Sub); => void main(void) { int Local. To. Main = 1; Local. To. Main: Sub. Function(Local. To. Main); cout << "Local. To. Main after call is: "; cout << Local. To. Main; } void Sub. Function(int Local. To. Sub) { Local. To. Sub = 2; } ? Local. To. Sub: ? Fundamental Programming 310201 8
#include <iostream> void Sub. Function(int Local. To. Sub); => void main(void) { int Local. To. Main = 1; Local. To. Main: Sub. Function(Local. To. Main); cout << "Local. To. Main after call is: "; cout << Local. To. Main; } void Sub. Function(int Local. To. Sub) { Local. To. Sub = 2; } ? Local. To. Sub: ? Fundamental Programming 310201 9
#include <iostream> void Sub. Function(int Local. To. Sub); => void main(void) { int Local. To. Main = 1; Local. To. Main: Sub. Function(Local. To. Main); cout << "Local. To. Main after call is: "; cout << Local. To. Main; } void Sub. Function(int Local. To. Sub) { Local. To. Sub = 2; } 1 Local. To. Sub: ? Fundamental Programming 310201 10
#include <iostream> void Sub. Function(int Local. To. Sub); => void main(void) { int Local. To. Main = 1; Local. To. Main: Sub. Function(Local. To. Main); cout << "Local. To. Main after call is: "; cout << Local. To. Main; } void Sub. Function(int Local. To. Sub) { Local. To. Sub = 2; } 1 c o p y Local. To. Sub: 1 Fundamental Programming 310201 11
#include <iostream> void Sub. Function(int Local. To. Sub); void main(void) { int Local. To. Main = 1; Local. To. Main: Sub. Function(Local. To. Main); cout << "Local. To. Main after call is: "; cout << Local. To. Main; } => void Sub. Function(int Local. To. Sub) { Local. To. Sub = 2; } 1 Local. To. Sub: 1 Fundamental Programming 310201 12
#include <iostream> void Sub. Function(int Local. To. Sub); void main(void) { int Local. To. Main = 1; Local. To. Main: Sub. Function(Local. To. Main); cout << "Local. To. Main after call is: "; cout << Local. To. Main; } => void Sub. Function(int Local. To. Sub) { Local. To. Sub = 2; } 1 Local. To. Sub: 1 Fundamental Programming 310201 13
#include <iostream> void Sub. Function(int Local. To. Sub); void main(void) { int Local. To. Main = 1; Local. To. Main: Sub. Function(Local. To. Main); cout << "Local. To. Main after call is: "; cout << Local. To. Main; } => void Sub. Function(int Local. To. Sub) { Local. To. Sub = 2; } 1 Local. To. Sub: 1 Fundamental Programming 310201 14
#include <iostream> void Sub. Function(int Local. To. Sub); void main(void) { int Local. To. Main = 1; Local. To. Main: Sub. Function(Local. To. Main); cout << "Local. To. Main after call is: "; cout << Local. To. Main; } void Sub. Function(int Local. To. Sub) { Local. To. Sub = 2; } => 1 Local. To. Sub: 2 Fundamental Programming 310201 15
#include <iostream. h> void Sub. Function(int Local. To. Sub); => void main(void) { int Local. To. Main = 1; Local. To. Main: Sub. Function(Local. To. Main); cout << "Local. To. Main after call is: "; cout << Local. To. Main; } void Sub. Function(int Local. To. Sub) { Local. To. Sub = 2; } 1 Local. To. Sub: 2 Fundamental Programming 310201 16
Example dialog Local. To. Main after call is: Fundamental Programming 310201 17
#include <iostream> void Sub. Function(int Local. To. Sub); => void main(void) { int Local. To. Main = 1; Local. To. Main: Sub. Function(Local. To. Main); cout << "Local. To. Main after call is: "; cout << Local. To. Main; } void Sub. Function(int Local. To. Sub) { Local. To. Sub = 2; } 1 Local. To. Sub: 2 Fundamental Programming 310201 18
Example dialog Local. To. Main after call is: 1 Fundamental Programming 310201 19
#include <iostream> void Sub. Function(int Local. To. Sub); => void main(void) { int Local. To. Main = 1; Local. To. Main: Sub. Function(Local. To. Main); cout << "Local. To. Main after call is: "; cout << Local. To. Main; } void Sub. Function(int Local. To. Sub) { Local. To. Sub = 2; } 1 Local. To. Sub: 2 Fundamental Programming 310201 20
Memory Management · when a function with an input variable is called, the value of the variable in the call is copied into the function’s local variable · two functions can have a local variable with the same name · at the end of the following program, main’s Local. Variable holds 1, and Sub. Function’s Local. Variable holds 2 Fundamental Programming 310201 21
#include <iostream> void Sub. Function(int Local. Variable); void main(void) { int Local. Variable = 1; Local. Variable: Sub. Function(Local. Variable); cout << "Local. Variable after call is: "; cout << Local. Variable; } void Sub. Function(int Local. Variable) { Local. Variable = 2; } Local. Variable: note: these are two quite different variables – they refer to different memory locations Fundamental Programming 310201 22
#include <iostream> void Sub. Function(int Local. Variable); => void main(void) { int Local. Variable = 1; Local. Variable: Sub. Function(Local. Variable); cout << "Local. Variable after call is: "; cout << Local. Variable; } 1 void Sub. Function(int Local. Variable) { Local. Variable = 2; } Local. Variable: 2 note: at the end of the program, these two variables hold different values Fundamental Programming 310201 23
Activity · the design for a program to determine the highest and second highest of two integers is provided in the handout · the required behavior is shown below: Enter an integer ==> 3 Enter another integer ==> 4 Highest integer is: 4 Second highest integer is: 3 Fundamental Programming 310201 24
Activity · as provided, the program will not produce this output? · activities: · what output will the program produce? · what is the final value of the following variables: Int 1 Int 2 Local Fundamental Programming 310201 25
Activity Break Fundamental Programming 310201 26
Activity Feedback · what output will the program produce? Enter an integer ==> 3 Enter another integer ==> 4 Highest integer is: 3 Second highest integer is: 3 · final value of variables is a trick question: Int 1 (in main) : 3 Int 1 (in Swap) : 4 Int 2 : 3 Local : 3 Fundamental Programming 310201 27
Output Variables · the authority to use a variable is given when a function with an output variable is called · when you call a function with an input variable, the value of the variable in the call is copied into a local variable in the function · when you call a function with an output variable, no data is copied… · instead, you grant the function permission to use the variable in the call Fundamental Programming 310201 28
#include <iostream> void Sub. Function(int &Parameter); note: similar to program used before; difference is that Sub. Function’s parameter is for output void main(void) { int Local. To. Main = 1; Sub. Function(Local. To. Main); cout << "Local. To. Main after call is: "; cout << Local. To. Main; } Local. To. Main is 2 after void Sub. Function(int &Parameter) call to Sub. Function { Parameter = 2; } Sub. Function assigns a value to Parameter – effect is to change value of Local. To. Main Fundamental Programming 310201 29
Output Variables · when you call a function with an output variable, no data is copied - a local variable is not created in the function · instead, you grant the function permission to use the variable in the function call… · variables provide us with a convenient way to refer to memory locations · a variable references a memory location · so, the variable in a function call serve as a reference to a memory location of interest Fundamental Programming 310201 30
Output Variables · when you call a function with an output variable, no data is copied - a local variable is not created in the function the output variable in a function header provides a the · instead, you grant the function permission to use variable in the function call… reference to the same · variables provide us with a convenient way to refer memory location to memory locations · a variable references a memory location – the memory location of · so, the variable in a function call serve as a reference a memory location of interest the tovariable in the call Fundamental Programming 310201 31
#include <iostream> void Sub. Function(int &Parameter); Local. To. Main is a name we use to refer to a memory location void main(void) { int Local. To. Main = 1; Sub. Function(Local. To. Main); cout << "Local. To. Main after call is: "; cout << Local. To. Main; } void Sub. Function(int &Parameter ) { Parameter = 2; } Parameter serves as a reference to the same memory location Fundamental Programming 310201 32
#include <iostream> void Sub. Function(int &Parameter); void main(void) { int Local. To. Main = 1; Sub. Function(Local. To. Main); cout << "Local. To. Main after call is: "; cout << Local. To. Main; } void Sub. Function(int &Parameter ) { Parameter = 2; } Fundamental Programming 310201 33
#include <iostream> void Sub. Function(int &Parameter); main(void) => void { } int Local. To. Main = 1; Sub. Function(Local. To. Main); cout << "Local. To. Main after call is: "; cout << Local. To. Main; void Sub. Function(int &Parameter ) { Parameter = 2; } Fundamental Programming 310201 34
#include <iostream> void Sub. Function(int &Parameter); void main(void) { => int Local. To. Main = 1; Sub. Function(Local. To. Main); cout << "Local. To. Main after call is: "; cout << Local. To. Main; } void Sub. Function(int &Parameter ) { Parameter = 2; } Fundamental Programming 310201 35
#include <iostream> void Sub. Function(int &Parameter); void main(void) { int Local. To. Main = 1; => Sub. Function(Local. To. Main); cout << "Local. To. Main after call is: "; cout << Local. To. Main; } void Sub. Function(int &Parameter ) { Parameter = 2; } Fundamental Programming 310201 36
#include <iostream> void Sub. Function(int &Parameter); void main(void) { int Local. To. Main = 1; Sub. Function(Local. To. Main); => cout << "Local. To. Main after call is: "; cout << Local. To. Main; } 1 void Sub. Function(int &Parameter ) { Parameter = 2; } Fundamental Programming 310201 37
#include <iostream> void Sub. Function(int &Parameter); void main(void) { int Local. To. Main = 1; Sub. Function(Local. To. Main); cout << "Local. To. Main after call is: "; cout << Local. To. Main; } 1 void Sub. Function(int &Parameter ) => { Parameter = 2; } Fundamental Programming 310201 38
#include <iostream> void Sub. Function(int &Parameter); void main(void) { int Local. To. Main = 1; Sub. Function(Local. To. Main); cout << "Local. To. Main after call is: "; cout << Local. To. Main; } 1 void Sub. Function(int &Parameter ) { => } Parameter = 2; Fundamental Programming 310201 39
#include <iostream> void Sub. Function(int &Parameter); void main(void) { int Local. To. Main = 1; Sub. Function(Local. To. Main); cout << "Local. To. Main after call is: "; cout << Local. To. Main; } => 1 void Sub. Function(int &Parameter ) { Parameter = 2; } Fundamental Programming 310201 40
#include <iostream> void Sub. Function(int &Parameter); void main(void) { int Local. To. Main = 1; Sub. Function(Local. To. Main); cout << "Local. To. Main after call is: "; cout << Local. To. Main; } 2 void Sub. Function(int &Parameter ) { Parameter = 2; } => Fundamental Programming 310201 41
#include <iostream> void Sub. Function(int &Parameter); void main(void) { int Local. To. Main = 1; Sub. Function(Local. To. Main); => cout << "Local. To. Main after call is: "; cout << Local. To. Main; } 2 void Sub. Function(int &Parameter ) { Parameter = 2; } Fundamental Programming 310201 42
#include <iostream> void Sub. Function(int &Parameter); void main(void) { int Local. To. Main = 1; Sub. Function(Local. To. Main); cout << "Local. To. Main after call is: "; cout << Local. To. Main; => } 2 void Sub. Function(int &Parameter ) { Parameter = 2; } Fundamental Programming 310201 43
Example dialog Local. To. Main after call is: Fundamental Programming 310201 44
#include <iostream> void Sub. Function(int &Parameter); void main(void) { int Local. To. Main = 1; Sub. Function(Local. To. Main); cout << "Local. To. Main after call is: "; cout << Local. To. Main; => } 2 void Sub. Function(int &Parameter ) { Parameter = 2; } Fundamental Programming 310201 45
Example dialog Local. To. Main after call is: 2 Fundamental Programming 310201 46
#include <iostream> void Sub. Function(int &Parameter); => void main(void) { int Local. To. Main = 1; Sub. Function(Local. To. Main); cout << "Local. To. Main after call is: "; cout << Local. To. Main; } 2 void Sub. Function(int &Parameter ) { Parameter = 2; } Fundamental Programming 310201 47
Reference Parameters · parameters marked for input only are called value parameters – a value is copied into a local variable · parameters marked for output are called reference parameters – they provide a reference to the memory location of the variable in the function call : call Sub. Function( Local. Variable ) : ? void Sub. Function( int &Parameter ) {…} Fundamental Programming 310201 48
Summary · in this lecture we’ve examined an important topic – value and reference parameters · it may take a while for you to become comfortable with these ideas · we will work on these ideas in tutes and labs to raise your comfort level · in the next lecture we will deal with the outstanding issue of the void in: void Get. Nearest. Prime(int Number, int &Nearest. Prime); void Get. Yor. NReply(char &Reply); Fundamental Programming 310201 49