j. michael moore modules – the basics csce 110 influenced by material developed by james tam &...
Post on 21-Dec-2015
214 Views
Preview:
TRANSCRIPT
J. Michael Moore
Modules – the Basics
CSCE 110
Influenced by material developed by James Tam & Jennifer Welch
J. Michael Moore
Where To __________ Modules
Header
const
:
Declarations
begin
end.
Statements
Module ________ (___________ & ____________)
J. Michael Moore
Procedures (Basic Case)
Procedure call
Procedure definition
No Information Is Passed In/ No Parameters
J. Michael Moore
Defining Procedures (Basic Case – No __________)
Format:procedure name;
begin { Statements of the procedure go here } end; { End of procedure name }
Example:
procedure displayInstructions;begin writeln ('The statements in this module will'); writeln (' typically give a high level'); writeln (' overview of what the program as a'); writeln ('whole does');end; (* End of procedure displayInstructions *)
J. Michael Moore
Calling A Procedure (Basic Case – No __________)
Format:name;
Example:
displayInstructions;
The name of the procedure is a ____________.
J. Michael Moore
Where To ______ Modules
It can be done ________________________ in the program – but must be done ___________ its ____________.
Header
const
:
Declarations
begin
end.
Main Body
Module definitions
Modules can be ______ from the ______________ of the program or from within any _______ as long as the __________ is already ___________.
J. Michael Moore
Important: A Module Must Be ________ Before It Can Be ___________!
program exampleModule (output);
procedure exampleProcedure;
begin
:
end;
begin
exampleProcedure;
end.
First: _______ the module
Second: _______ the module
Correct
J. Michael Moore
Important: A Module Must Be ________ Before It Can Be ________!
program exampleModule (output);
begin
exampleProcedure;
end.
procedure exampleProcedure;
begin
:
end;
Second: ____________ the module
First: ________ the module
Code?
Incorrect
J. Michael Moore
Procedures
firstExampleProcedure.pas
program firstExampleProcedure (output);
procedure displayInstructions;begin
writeln ('The statements in this module will typically give a’); writeln (‘high level overview of what the program as a’);
writeln (‘whole does');end; (*Procedure displayInstructions *)
begin displayInstructions; writeln('Thank you, come again!');end. (* Program *)
J. Michael Moore
Procedures
firstExampleProcedure.pas
program firstExampleProcedure (output);
procedure displayInstructions;begin
writeln ('The statements in this module will typically give a’); writeln (‘high level overview of what the program as a’);
writeln (‘whole does');end; (*Procedure displayInstructions *)
begin displayInstructions; writeln('Thank you, come again!');end. (* Program *)
Procedure ___________
Procedure ___________
J. Michael Moore
Declaring _______ Variables
Format:procedure name;var
<variable 1 name> : <variable 1 type>; <variable 2 name> : <variable 2 type>; : : begin : end;
Example:procedure proc;var
num1 : integer; num2 : integer;
begin : :
end;
J. Michael Moore
Declaring __________ Variables
program secondExampleProcedure (output);procedure proc;var num1 : integer;begin var num2 : integer; num1 := 1; num2 := 2; writeln(num1, ' ', num2);end;begin var num1 : integer; num1 := 10; writeln(num1); proc; writeln(num1);end.
J. Michael Moore
Declaring ________ Variables
secondExampleProcedure.pas
program secondExampleProcedure (output);procedure proc;var num1 : integer;begin var num2 : integer; num1 := 1; num2 := 2; writeln(num1, ' ', num2);end;begin var num1 : integer; num1 := 10; writeln(num1); proc; writeln(num1);end.
________ variable: main module
______ variable: procedure ‘proc’
J. Michael Moore
______ Variables Have ____________________
procedure getInformation;begin write (‘Enter the principle: ‘); readln (principle);end;
procedure calculateInterest;var amount : integer; principle : integer; interest : integer; time : integer;begin getInformation;end;
These 4 __________ are _________ to procedure ‘calculateInterest’
This ________ is __________ here
J. Michael Moore
___________________ To Modules
• Modules generally aren’t useful unless they can ______________________.
computeChange
amount quarters
dimes
pennies
J. Michael Moore
Procedures With ____________________ Passed In
Procedure call
P1 P2 …Pn
Procedure definition
J. Michael Moore
Defining Modules (Procedures) With ____________
Format: procedure name (Name of parameter 1 : type of parameter 1; Name of parameter 2 : type of parameter 2;
: :Name of parameter n : type of parameter n);
begin (* Statements of the procedure go here *) end;
Example: procedure celciusToFahrenheit (celciusValue : real); var fahrenheitValue : real; begin fahrenheitValue := 9 / 5 * celciusValue + 32; writeln(‘temperature in Celsius: ', celciusValue:0:2); writeln(‘temperature in Fahrenheit: ', fahrenheitValue:0:2); end; (* Procedure celciusToFahrenheit *)
_________Parameters
J. Michael Moore
Calling Modules (Procedures) With Parameters
Format: name (Name of parameter 1, Name of parameter 2…Name of
parameter n);
Example: celciusToFahrenheit (celciusValue);
_________Parameters
J. Michael Moore
________ and _________ Parameters
• __________ parameters: The parameters in the method _______________.
• __________ parameters: The parameters in the method _______________.
• Parameters act like _________________ within a module.
J. Michael Moore
____________ and ______________ Parameters
• Module call and module definition must have:• _____________ of parameters
• ______________ parameters must have the same _______
• e.g. definition:procedure calc(i: integer, f: real, b:boolean);e.g. call: calc(num, avg, flag)where:—_____ must be of type ____________—_____ must be of type ____________—_____ must be of type ____________
J. Michael Moore
Important: The _____ and _____ Parameter Lists Must _____!
• The ______ and _________ of parameters must ________ or there will be a compilation error.
program parameterExample;
procedure proc (num : integer);
begin
num := 10;
end;
begin
var num : integer;
proc (num);
end.
Procedure definition requires an __________ parameter
Procedure call passes in an __________ parameter
parameters match
J. Michael Moore
Important: The _____ and _____ Parameter Lists Must _____!
• The ______ and _________ of parameters must ________ or there will be a compilation error.
program parameterExample;
procedure proc (num : integer);
begin
num := 10;
end;
begin
proc;
end.
Procedure definition requires __________ parameter
Procedure call passes in ________ parameters
Number of parameters
not equal
J. Michael Moore
• The ______ and _________ of parameters must ________ or there will be a compilation error.
• .
program parameterExample;
procedure proc (num : integer);
begin
num := 10;
end;
begin
var ch : char;
proc (ch);
end.
Procedure definition requires an __________ parameter
Procedure call passes in a ______ parameter
Type mismatch
Important: The _____ and _____ Parameter Lists Must _____!
J. Michael Moore
Example Problem
• Write a program that will convert a temperature value from Celsius to Fahrenheit.
• The part of the program that performs that actual conversion should take the form of a separate module.
J. Michael Moore
Procedures: Putting Together The Case Of Procedures With Parameters
temperatureConverter.pas
program temperatureConverter (input, output);
procedure celsiusToFahrenheit (celsiusValue : real);
var
fahrenheitValue : real;
begin
fahrenheitValue := 9 / 5 * celsiusValue + 32;
writeln('Temperature in Celsius: ', celsiusValue:0:2);
writeln('Temperature in Fahrenheit: ', fahrenheitValue:0:2);
end; (* Procedure celsiusToFahrenheit *)
J. Michael Moore
Procedures: Putting Together The Case Of Procedures With Parameters (2)
begin
var celsiusValue : real;
writeln;
writeln('This program will convert a given temperature from a Celsius');
writeln('value to a Fahrenheit value.');
write(‘Enter a temperature in Celsius: ');
readln(celsiusValue);
writeln;
celsiusToFahrenheit(celsiusValue);
writeln('Thank you and come again.');
end. (* Program *)
J. Michael Moore
Pass by ______ vs. Pass by __________
• Each _______ parameter is ____________ to the _______ of the corresponding ____________ parameter.
Called ________________________.
J. Michael Moore
Pass by ______ vs. Pass by __________
• Let actP be actual and formP be formal• Pass by __________
— actP and formP refer to __________ memory locations
—________ of actP’s ______________ to formP’s _______
—changes to formP are __________ to the caller (i.e. actP)• Pass by Reference
— actP and formP refer to __________ memory location
—the _______ for formP is ____________________ for actP—changes to formP are __________ to the caller (i.e. actP)
• By default, Pascal passes variables by ________. However, we’ll see how to make it pass by _________________.
J. Michael Moore
• procedure larger(i:integer; j:integer; k:integer);begin if (i<j) then i := j; k := i;end;
• Suppose that larger is called with:• a := 3; b := 5; larger(a,b,c);• After calling larger and passing by __________, then a = 3, b = 5, c = 5
•
• After calling larger if passing by __________, then a = 5, b = 5, c = 5
Pass by ______ vs. Pass by __________
... ...a,i b,j c,k
... ... ...a b c ji k
J. Michael Moore
Stack Frames
• When a method begins executing, space on the ________, called a _____________, is ____________ for it, to hold• formal parameters
• local variables declared in the method
• return value (for functions)
• When the method finishes __________, the _______ frame is ______________, and the formal parameters and local variables are _______________________.
Module call (local variables get _________ in memory)
The program code in the module executes (the variables are used to _________________________)
Module ends (local variables get ____________ in memory)
top related