J. Michael Moore Modules – the Basics CSCE 110 Influenced by material developed by James Tam &...

31
J. Michael Moore Modules – the Basics CSCE 110 Influenced by material developed by James Tam & Jennifer Welch
  • date post

    21-Dec-2015
  • Category

    Documents

  • view

    214
  • download

    0

Transcript of J. Michael Moore Modules – the Basics CSCE 110 Influenced by material developed by James Tam &...

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)

J. Michael Moore

Stack Frames Example

mainp

main

main calls p

pmain

q

p calls q

pmain

q returns

pmain

r

p calls r

pmain

r

r calls s

s

pmain

r

s returns

pmain

r returns

main

p returns