introduction to programming structure lesson 4 mcmanuscop10001

50
Introduction to Programming Structure Lesson 4 McManus COP1000 1

Post on 21-Dec-2015

219 views

Category:

Documents


1 download

TRANSCRIPT

COP1000 1

Introduction to Programming Structure

Lesson 4

McManus

COP1000 2

Overview

• Guidelines• Modules & Functions• Cohesion & Coupling• Local & Global Variables• Parameters• Variable Names & Data Dictionaries• Three Logic Structures

McManus

COP1000 3

Guidelines on Program Structure

• Use Modules– Each part should have a particular

function• Use the three logic structures

– Sequential, Decision & Iteration• Don’t reinvent the wheel

– Avoid rewriting identical processes• Use techniques to improve

readabilityMcManus

COP1000 4

Cohesion & Coupling

Making Modules Better!

McManus

COP1000 5

Cohesion & Coupling

• Each module should– Be functionally independent– Perform one problem-related task

• Calculating IRS Withholding is one problem-related task, but may have multiple operations within the module

– When connected, use the smallest interface possible.

McManus

COP1000 6

Cohesion

• The degree of interaction within a module.– Each module should perform one

functionally-related task…not necessarily one assignment statement.

– Concentration is on what goes on within the module.

McManus

Term was coined by Larry Constantine in mid-1960’s

COP1000 7

Scale of Cohesion

• Stevens, Myers, Constantine, and Yourdon developed the Scale of Cohesion as a measure of the “black boxiness” of a module, and as a result, the maintainability of a module.

McManus

Type Measure Black BoxFunctional Best Black BoxInformational ** BestSequential CommunicationalProcedural Gray BoxTemporalLogicalCoincidental Worst Transparent

or White Box**Originally not part of Scale

COP1000 8

Coupling

• The degree of interaction between two modules.– Interaction is the

interface, or lack thereof, between two modules.• The interface is the

parameter list. – Create it, use it, lose it

McManus

Best (Lowest Interaction)

Worst (Highest Interaction)

Normal Data Stamp Control

Common

Content

COP1000 9

Effects?

• Which pieces affect Cohesion and which affect Coupling?

McManus

Private Sub Minimum(min As Long, y As Long, z As Long)

If y < min Then

min = y

End If

If z < min Then

min = z

End If

lblSmallest.Caption = "Smallest value is " & min

End Sub

What does this code do?

COP1000 10

What is the code doing?

• What are the parameters? Variables?

McManus

Private Sub Minimum(Scully As Long, Mulder As Long)

Dim Temp As Long

If Scully < Mulder Then

Temp = Scully

Scully = Mulder

Mulder = Temp

End If

End Sub

Global &Parameters

Local Variable

COP1000 11

Each Goal

• Cohesion’s Goal– To create a procedure that performs one

functionally-related task. • Coupling’s Goal

– To protect global data and local data from being used within a procedure without declaring it on the procedure’s header• Create as close to where you’re going to use

it as possible, use it, then lose it as soon as possibleMcManus

COP1000 12

Goal of Cohesion & Coupling?

• High Cohesion – Functional or Information

• Low Coupling– Data, Stamp, Control

McManus

COP1000 13

Modules, Procedures & Functions

The subparts to a Program

McManus

COP1000 14

Modules

• “A module is a lexically contiguous sequence of program statements, bounded by boundary elements, having an aggregate identifier.” Yourdon & Constantine (1979)– A part of a larger system– Written and tested separately– Combined with other modules to form a

complete system– Used in top-down programming– Procedures & Functions

McManus

COP1000 15

Procedures

• A smaller part of the main program.• 2 Advantages

1. Eliminates the need to program the same thing more than once.

2. Larger programs are easier to read when broken into procedures (and functions).

McManus

COP1000 16

Functions

• Functions– A subprogram that acts like a

mathematical function: • Given a particular set of argument values,

the function returns a unique result.• Big Difference Between Procedures &

Functions:– Use Return values that are associated with the

name of the function

McManus

COP1000 17

Function Examples

• PascalFUNCTION doublenum(b : Integer) : Integer; BEGIN doublenum := 2 * b END;

• Visual BasicPrivate Function Doublenum(b As Integer) As Integer Doublenum = 2 * bEnd Function

• C++Int doublenum ( int b){ return 2 * b;}

McManus

All three do the same thing,

just with different syntax

COP1000 18

What Do They Have In Common?

• Each module – is an entity by itself– has a single purpose– should be easily read, modified and

maintained– Length is governed by function and

number of instructions contained within– Controls the order of processing

McManus

COP1000 19

An Example of Control

McManus

COP1000 20

Types of Modules/Procedures

• Control – Demonstrates

overall flow of data• Initialization &

Wrap-Up– Processes

instructions to be performed once (either at beginning or at the end of the program)

– Used typically in batch processing

• Process Data– Calculation– Print– Read and Validation

• Event– Used in OO and

some event driven programming languages

– More about these later

McManus

COP1000 21

Control Modules

• Most often called “Main”• All other modules, procedures and

functions are subordinate to the control module

Sub MainCall ProcedureA(X, Y)Call ProcedureB(A, B)

End Main

McManus

COP1000 22

Init Module

• Used in some languages to initialize variables or processes– Examples

• Opening files• Initializing variables• Printing report headings

Procedure BeginDim X, Y, Z As IntegersOpen Payroll file

End Procedure ‘BeginMcManus

Does this violate

Cohesion or

Coupling?

COP1000 23

Process Data Modules

• Calculation– Performs

• Arithmetic operations

• Accumulations• Sorting or Searching

Private Sub Double (X, Y)Dim Temp as IntegerTemp = X * YPrint Temp

End Sub

Read and Data Validation◦ Reads and validates

input data Usually separate

modules

McManus

Private Sub Verify(X)If X < 0 Or X > 10 Then

lblMessage.Text = “Data Error”End If

End Sub

COP1000 24

Wrap Up Module

• Used to close out processes– Examples

• Closing files• Printing reports• Returning updated data to database

Procedure LastProcedureClose Employee fileClose Payroll file

End Procedure ‘LastProcedure

McManus

Does this violate

Cohesion or

Coupling?

COP1000 25

Global or Local Variables

Scope!

McManus

COP1000 26

Scope

• The area of a program where an identifier (variable) is visible

• When an identifier has multiple declarations in different modules, the most local declaration is used each time that identifier is referenced. (overloading)

• Global or “non-local” variables subject to side effects.

McManus

COP1000 27

Side Effects

• Caused when the value of a global variable is changed within a procedure or function– Any effect of one module on another module

that is not a part of the explicitly defined interface between them

• Also caused when a variable name is used in globally and locally (causes overloading)

• A nasty effect that should be avoided!

McManus

COP1000 28

Global Scope

• Declared within the main program• Can be referenced anywhere in the

program– Is visible and accessible everywhere

McManus

X, Y, Z

A

CB

X, Y & Z are Global to modules

A, B & C

COP1000 29

Local Scope

• Declared within a module– Has no effect outside the procedure or

function in which it is declared• Can be referenced only within a

procedure or a function

McManus

X, Y, Z

A m

C pB n

Within A, Variable m is defined, but can also see X, Y, & Z

Within B, Variable n is defined , but can also see X, Y, & Z

Within C, Variable p is defined , but can also see X, Y, & Z

COP1000 30

Global or Local?

Private Sub Minimum(Scully As Long, Mulder As Long)

Dim Temp As Long

If Scully < Mulder Then

Temp = Scully

Scully = Mulder

Mulder = Temp

End If

End Sub

McManus

Scully & Mulder are what type

of variables?

What type of variable is Temp?

COP1000 31

Another Example

McManus

Scope of X, Y, Z, Procedure1

Scope of M, N, Me, X, You

program ShowScope; var X, Y, Z : Real; procedure Procedure1 (var M, N, Me : Real);

var X, You : Real; begin {Procedure1} ....... end; {Procedure 1}

begin {ShowScope} Procedure1(X, Y, Z)end. {ShowScope}

COP1000 32

Parameters

How we avoid side effects!

McManus

COP1000 33

Parameters

• Are the variables that are passed into and out of modules

• Use global parameters – (to the procedure or function)

• Pass values through the use of variables

• Actual and Formal parameters• Call-by-reference & Call-by-value

McManus

COP1000 34

Parameter Communication

• A measure of the quantity of data passing through a module’s interface.

• Is also a measure of the module’s coupling.

• The goal is to strive for a minimal amount of information being passed.

McManus

COP1000 35

How Parameters are Used

• Input Parameter – Information passed into a procedure, but not

returned or passed out of the procedure.• Output Parameter

– Information returned to the calling program from a procedure.

• Input/Output Parameter – Information passed into a procedure, perhaps

modified, and a new value returned.

McManus

Programmers now determine how their parameters are used.

COP1000 36

Parameters

• Provide the communication links between the main program and its modules.

• Make procedures and functions more versatile.– Different data can be manipulated each time

the module is called.• Come in two types:

– Actual– Formal

McManus

COP1000 37

Actual Parameters

– Are substituted for the formal parameter at the time the procedure is called.• Parameters used in the call statement

– Statements that transfer control to a procedure.• Data types must be assignment compatible

with its corresponding formal parameter– If they don’t, your program will blow up!

• Can be a variable, constant or an expression• Can be call-by-value or call-by-reference

McManus

COP1000 38

Formal Parameters

– Is a list of “place marker” names used in the procedure’s declaration.

– Parameters declared in the procedure header

– Can include the data type of the valued parameters.

– Must be a variable– Can be call-by-value or call-by-reference

McManus

COP1000 39

Parameter Correspondence Rules

• Determined by position in respective parameter lists

• Lists must be the same size, although the names may differ

• Data Types of corresponding actual and formal parameters must be identical

McManus

COP1000 40

Data Areas After a Call

McManus

8.0

10.0

8.0

10.0

? ?

Formal Parameters

Local Variables

Sum Average

Num1

Num2

Actual Parameters Var1

Var2

Main program data area Procedure data area

COP1000 41

Valued & Variable Parameters

• By Reference (Call-by-Reference)– Passing a variable to a procedure is called

passing an argument by reference, because a variable can be modified by a procedure and returned to the calling module.

– You can use it AND you CAN change it!• By Value (Call-by-Value)

– Passing a literal value (such as a string in quotation marks) to a procedure is called passing an argument by value, because a value cannot be modified by a procedure.

– You can use it BUT you CAN’T change it!

McManus

COP1000 42

Call-by-Reference

• The default for parameter passing• Gives access to the contents of the

storage area where values are stored• Giving the called procedure the

ability to directly access the caller’s data

• Allowing changes in the data

McManus

COP1000 43

Call-by-Value

• Protects the data being passed• Accomplished by creating a copy of

the value– without affecting the original value of

the variable• Thus…

– Called procedure is unable to change the values stored in the variable’s storage area

• Helps avoid Side Effects!McManus

COP1000 44

Parameter Relationships

Call Statements

Actual Parameters• Valued• Variable

McManus

Procedure Header Parameters

Formal ParametersValuedVariable

Parameter Interface using Global Variables

COP1000 45

Another Look at Variables

Names & the Data Dictionary

McManus

COP1000 46

Variable Names-Reminder

• Use mnemonic terms– Use a variable name that relates the name of

the variable to its usage• Contributes to self-documenting code

– Which reduces the amount of commenting required

– Z = X * Y What is it doing (besides multiplication?)

– SalesTax = SalesTaxRate * Cost (this you know)

• Examples– SalesTax, SalesRate, Sales_Rate, PayRate,

Temp

McManus

COP1000 47

The Data Dictionary

• Defines all of the variables used within a program

• Lists:– Item Name– Variable Names – Domain (range of possible values)– Data type– Location defined & accessed– Test Data (or error checking)

McManus

Required!

COP1000 48

DD Example

Item Name

(required)

Variable Name

(required)

Data Type

(required)

Modules Domain(Range)(required)

Scope

Hours worked

Hours Numeric-real

GetHoursCalcGrossPay 0 <= n <=168

GlobalGlobal

Gross Pay

GrossPay Numeric-real

CalcGrossPayCalcDeductionsCalcNetPayPrintPayChecks

0 <= n <=1 million

GlobalGlobalGlobalGlobal

Net Pay NetPay Numeric-real

CalcNetPayPrintPayChecks 0 <= n <=1 million

LocalGlobal

McManus

COP1000 49

The Three Logic Structures

• Sequential– One statement follows another

• Selection (Decision)– Allows choices based on the data– IfThenElse, Nested If’s, Case, Switch

• Iteration (Looping or Repetition)– Allows statements to be repeated a specified

number of times– While, Do, For, Do Until, Repeat

McManus

COP1000 50McManus

Next?