1 INTRODUCTION TO PROGRAMMING STRUCTURE Chapter 4 Overview 2 Pointers Modules & Functions Cohesion & Coupling Local & Global Variables Parameters Variable Names & Data Dictionaries Three Logic Structures Pointers for Structuring a program 3 Use Modules Each part should have a particular function Use the four logic structures Sequential , Decision , loop & case Eliminate the rewriting of identical processes by using modules . Use techniques to improve readability. Pointers for Structuring a program 4 - The computer should be a tool to help people find solutions to their problems and to increase their productivity. - You can develop efficient computer solutions to problems if you heed the following pointers: 1- Use modules. Break the whole into parts, each part having a particular function. Pointers for Structuring a program 5 2- Use the four logic structures to ensure that solution flows smoothly from one instruction to the next, rather than jumping from one point in the solution to another. a- The sequential structure executes instructions one after another in a sequence. b- The decision structure branches to execute one of two possible sets of instructions. c- The loop structure executes a set of instructions many times. d- The case structure executes one set of instructions out of several sets. Sequential Logic Structure 6 Decision Logic Structure 7 Loop Logic Structure 8 Case Logic Structure 9 10 rules for designing modules Each module is an entity by itself . There is one entrance and one exit , the processing does not jump out of the middle of a module to another module. has a single function ( printing , calculating , entering data) should be easily read, modified ( short enough). Length is governed by function and number of instructions contained within Controls the order of processing. 11 Types of modules 12 Control modules . Initialization module Process module ( process only once or loop): calculation modules . print modules . read and data validation modules. Wrapup modules Control Modules Most often called “Main” shows the overall flow of the data through the program All other modules are subordinate to the control module. 13 Initialization Module that are executed only once during the program and only at the beginning. Examples Opening files Initializing variables ( beginning values ) 14 Process Modules May be processed only once , or the may be part of a loop , there are several kind : Calculation modules: arithmetic operations Accumulations Counting Manipulate string data. Read and Data Validation modules: Reads Print and validates input data Usually separate modules modules : print output line( the result of the processing) 15 Wrap Up Module process all instructions that are executed once during the program and only at the end Examples Closing files Printing totals . 16 Modules 17 Modules are often combined in one solution . A module can be broken into several smaller modules to make the parts of a program more manageable. One module performing a specific function can be used by one or more other modules . 18 COHESION & COUPLING chapter 4 Cohesion & Coupling 19 Each module should Be functionally independent. Perform single task . Modules will need to connected ,primarily through the data needed to complete the specified task within the modules ( cohesion and coupling ) . cohesion 20 The ability for a module to work independently from all other modules ( single entry and single exit). Each module should have a function . Each module should have single entry and single exit. coupling 21 modules need to share data from other modules in order to complete the modular tasks. is accomplished by some type of interface between modules that enables data to be passed from one module to another with the minimum interruption of the modular independence . Allows for the communication between modules. There are three ways to couple modules : global variable , parameters , and return value . LOCAL AND GLOBAL VARIABLES Programmer use the concept of local and global variables to allow cohesion and coupling to occur. Global variable( define outside individual module) Local variables ( define within module) The difference between the two is in the scope of the variables . Local variables 24 May be used only by the module itself. Other modules have no knowledge of these variables. Allow cohesion to take place . The programmer does not have to worry about variable name duplication in modules created by other programmers. The modules can be coupled through the use of parameters or return values. global variables 25 thy can be seen by all modules. Allow data coupling through the entire program . The programmer must be careful not to use the same variable name for local variable and a global variable . The use of parameter and return value is not necessary since global variable couple the data from module to module . global variables Can be referenced anywhere in the program Is visible and accessible everywhere A X, Y, Z C B X, Y & Z are Global to modules A, B & C Interactivity chart 27 Scope of Local and Global Variables 28 Parameters 29 Local variables that are passed from one module to another . Another way of coupling that allow the communication of data between modules. Thy are placed after module name between parentheses. Read ( A , B , C) Parameters 30 Make modules more versatile. Different data can be manipulated each time the module is called. The calling module (module that process another module) The called module ( the module being processed). Parameter Terminology 31 Parameters 32 Parameters Comes in two types: Actual (is the list of parameter that follows the module name being processed in the calling module ) Formal (is the list of parameter that follows the module name at the beginning of the module ). The variable name in the actual may or may not be the same as those in the formal parameter . The value are sent and received according to the position in the listings . Actual & Formal Parameters 33 Actual Parameters Parameters used in the call statement Data types must be assignment compatible with its corresponding formal parameter Can be a variable, constant or an expression Can be call-by-value or call-by-reference Formal Parameters Must be a variable Can be call-by-value or call-by-reference Calling data through the modules There are two ways to send data from one module to another: Send the value of the variable ( call-by-value) Send the address of the variable (call-by-reference) Specified by the use of an asterisk (*) in front of the variable name ( actual and formal parameter) Call-by-Reference 35 the memory location is sent ( the address) Is specified by the use of an asterisk( * ) in front of the variable name in both the actual and formal . Gives access to the contents of the storage area where values are stored. When the called module change the value of the parameter , the calling module will see the change. They are using the same memory location. Call-by-Value 36 the value of the variable is sent to the called module by the calling module. Accomplished by creating a copy of the value The called module will make a new memory location for this variable . When the called module makes a change in the variable ,the change will not be made in the calling module. Parameter have different memory location Parameters – Call-by-value and Call-byReference Parameters – Call-by-value and Call-byReference Parameters – Call-by-value and Call-byReference Parameter Example Coupling diagram A coupling diagram indicates how data couples modules together Has a rectangle for each module . Line connecting the modules for each datum sent from one module to another . The double-headed arrows indicate that these parameters are call - by - reference . The single- headed arrows indicate that these parameters are call-by-value . Coupling diagram Coupling diagram parameters Parameter in the formal parameter listing are neither local nor global variables . Should not be declared as local or global variables. In the event of variable name duplication , the local variable has precedence over the parameter variable . The parameter variable has precedence over the global variables . Return value 45 Another way to couple modules . The return value is the result of the function . This is accomplished through the name of the function. The result is placed temporarily in the name. The function must be used as parts of another instruction. SquareRoot = 5 + SQRT ( 16 ) The value of SQRT is no longer available to be used Variable Names and the data dictionary 46 Use a variable name that relates the name of the variable to its usage. Variable name must be unique to the module in thy are defined. Global variable must be unique to the total program . The computer references values by their names . Data dictionary is a great help to keep track of the variable usage in your program .And Defines all of the variables used within a program. Example of a Data Dictionary The four Logic Structures 48 control the logic of the data flow through the module. The four basic logic structures : Sequential logic structure Decision logic structure . Loop logic structure . Case logic structure .