modules – the basics

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

Upload: eyal

Post on 21-Jan-2016

25 views

Category:

Documents


0 download

DESCRIPTION

Modules – the Basics. CSCE 110 Influenced by material developed by James Tam & Jennifer Welch. Header. Declarations. const :. Statements. begin end. Where To __________ Modules. Module ________ ( ___________ & ____________ ). Procedure definition. Procedures (Basic Case). - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Modules – the Basics

J. Michael Moore

Modules – the Basics

CSCE 110

Influenced by material developed by James Tam & Jennifer Welch

Page 2: Modules – the Basics

J. Michael Moore

Where To __________ Modules

Header

const

:

Declarations

begin

end.

Statements

Module ________ (___________ & ____________)

Page 3: Modules – the Basics

J. Michael Moore

Procedures (Basic Case)

Procedure call

Procedure definition

No Information Is Passed In/ No Parameters

Page 4: Modules – the Basics

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 *)

Page 5: Modules – the Basics

J. Michael Moore

Calling A Procedure (Basic Case – No __________)

Format:name;

Example:

displayInstructions;

The name of the procedure is a ____________.

Page 6: Modules – the Basics

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 ___________.

Page 7: Modules – the Basics

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

Page 8: Modules – the Basics

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

Page 9: Modules – the Basics

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 *)

Page 10: Modules – the Basics

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 ___________

Page 11: Modules – the Basics

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;

Page 12: Modules – the Basics

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.

Page 13: Modules – the Basics

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’

Page 14: Modules – the Basics

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

Page 15: Modules – the Basics

J. Michael Moore

___________________ To Modules

• Modules generally aren’t useful unless they can ______________________.

computeChange

amount quarters

dimes

pennies

Page 16: Modules – the Basics

J. Michael Moore

Procedures With ____________________ Passed In

Procedure call

P1 P2 …Pn

Procedure definition

Page 17: Modules – the Basics

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

Page 18: Modules – the Basics

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

Page 19: Modules – the Basics

J. Michael Moore

________ and _________ Parameters

• __________ parameters: The parameters in the method _______________.

• __________ parameters: The parameters in the method _______________.

• Parameters act like _________________ within a module.

Page 20: Modules – the Basics

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 ____________

Page 21: Modules – the Basics

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

Page 22: Modules – the Basics

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

Page 23: Modules – the Basics

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 _____!

Page 24: Modules – the Basics

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.

Page 25: Modules – the Basics

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 *)

Page 26: Modules – the Basics

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 *)

Page 27: Modules – the Basics

J. Michael Moore

Pass by ______ vs. Pass by __________

• Each _______ parameter is ____________ to the _______ of the corresponding ____________ parameter.

Called ________________________.

Page 28: Modules – the Basics

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 _________________.

Page 29: Modules – the Basics

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

Page 30: Modules – the Basics

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)

Page 31: Modules – the Basics

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