Structured Programming
description
Transcript of Structured Programming
![Page 1: Structured Programming](https://reader030.fdocuments.us/reader030/viewer/2022033022/56816057550346895dcf8073/html5/thumbnails/1.jpg)
Structured Programming
Mr. Dave ClausenLa Cañada High School
http://www.lcusd.net/lchs/dclausen/
![Page 2: Structured Programming](https://reader030.fdocuments.us/reader030/viewer/2022033022/56816057550346895dcf8073/html5/thumbnails/2.jpg)
04/22/23 http://www.lcusd.net/lchs/dclausen
2
I. What is programming?
A computer can only carry out a small number of instructions or simple calculations. A computer can only solve the problem if it is broken down into smaller steps.
![Page 3: Structured Programming](https://reader030.fdocuments.us/reader030/viewer/2022033022/56816057550346895dcf8073/html5/thumbnails/3.jpg)
04/22/23 http://www.lcusd.net/lchs/dclausen
3
II. What is Structured programming?
An attempt to formalize the logic and structure of programs. (i.e.)
Procedure Bubble_Sort (Var Original, Duplicate,Sorted : ListType); {Pre: The array is filled with ramdom numbers. Post: The numbers will be sorted.} Var Element, Index : Integer; Begin WriteLn ('Sorting...'); For Element := 1 to MaxEntries do For Index := MaxEntries downto (Element+1) do If Original[Index] < Original[Index-1] Then Swap (Original[Index], Original[Index-1]); Create_Sorted(Original, Sorted); Recreate_Original(Original, Duplicate); PauseEnd; {Bubble}
![Page 4: Structured Programming](https://reader030.fdocuments.us/reader030/viewer/2022033022/56816057550346895dcf8073/html5/thumbnails/4.jpg)
04/22/23 http://www.lcusd.net/lchs/dclausen
4
III. What is the Purpose of Structured Programming?
To make computer programs– Easier to read– Easier to debug– Easier to understand– Easier to maintain
To allow programmers to work as a team
![Page 5: Structured Programming](https://reader030.fdocuments.us/reader030/viewer/2022033022/56816057550346895dcf8073/html5/thumbnails/5.jpg)
04/22/23 http://www.lcusd.net/lchs/dclausen
5
Purpose 2
To reduce testing time
To increase programming productivity To increase clarity by reducing the
programs complexity To decrease maintenance and effort
![Page 6: Structured Programming](https://reader030.fdocuments.us/reader030/viewer/2022033022/56816057550346895dcf8073/html5/thumbnails/6.jpg)
04/22/23 http://www.lcusd.net/lchs/dclausen
6
IV. Why is this special programming necessary?
5 REM SPAGHETTI CODE10 GOTO 4020 PRINT “THIS IS AN EXAMPLE”30 GOTO 7040 GOTO 2050 PRINT “OF SPAGHETTI CODE”60 GOTO 8070 GOTO 5080 END
Programming in the 60's: "fiddling" with the program until it worked.
"Spaghetti Code"Spaghetti Code
Spaghetti Code.txt
![Page 7: Structured Programming](https://reader030.fdocuments.us/reader030/viewer/2022033022/56816057550346895dcf8073/html5/thumbnails/7.jpg)
04/22/23 http://www.lcusd.net/lchs/dclausen
7
Avoid using GOTO statements
Edger W. Dijkstra 1968“The GOTO statement should be abolished from
all higher level programming languages…”“…The GOTO statement is just too primitive; it
is too much of an invitation to make a mess of one’s program.”
Mr. Clausen “If you use a GOTO statement in your program, you will get a “0” zero.”
![Page 8: Structured Programming](https://reader030.fdocuments.us/reader030/viewer/2022033022/56816057550346895dcf8073/html5/thumbnails/8.jpg)
04/22/23 http://www.lcusd.net/lchs/dclausen
8
Approaches to Programming
Top Down Design– like the main points of an outline– divide the program into modules
Bottom Up Approach– experimenting with the program– “let’s try this and see if it works (test programs)
![Page 9: Structured Programming](https://reader030.fdocuments.us/reader030/viewer/2022033022/56816057550346895dcf8073/html5/thumbnails/9.jpg)
04/22/23 http://www.lcusd.net/lchs/dclausen
9
V. Define The Process of Structured Programming
A. Analysis– Determine if the computer is the proper tool for
the problem
![Page 10: Structured Programming](https://reader030.fdocuments.us/reader030/viewer/2022033022/56816057550346895dcf8073/html5/thumbnails/10.jpg)
04/22/23 http://www.lcusd.net/lchs/dclausen
10
Process 2 B. Specification
– Define the problem in a clear and unambiguous manner considering:
1. Input 2. Output 3. Processing
– a) Sort– b) Calculate– c) Search– d) Store
![Page 11: Structured Programming](https://reader030.fdocuments.us/reader030/viewer/2022033022/56816057550346895dcf8073/html5/thumbnails/11.jpg)
04/22/23 http://www.lcusd.net/lchs/dclausen
11
Process 3
C. Algorithm Design – Plan the solution as a series of separate steps
using: 1. Pseudo-code (English) 2. Flowcharts 3. Stepwise Refinement:
– Level 0, Level 1, etc. Use function or procedure Stubs
– BASIC BASIC.txt Pascal– C+ + C++.txt Pascal.txt
![Page 12: Structured Programming](https://reader030.fdocuments.us/reader030/viewer/2022033022/56816057550346895dcf8073/html5/thumbnails/12.jpg)
04/22/23 http://www.lcusd.net/lchs/dclausen
12
Process 4
4. Top Down Design (modules/procedures/functions)
– each module performs 1 task– each module has 1 entry & 1 exit– Conditional statements should not exit the module– You could have a module "call" another module– Variables are local to each module– Declare & Initialize all variables– Variable names should be descriptive– Use Value and/or Variable Parameters
![Page 13: Structured Programming](https://reader030.fdocuments.us/reader030/viewer/2022033022/56816057550346895dcf8073/html5/thumbnails/13.jpg)
04/22/23 http://www.lcusd.net/lchs/dclausen
13
Process 5
D. Code the program– Convert your Pseudo Code and/or Algorithms
into Level 0 Commands– Use Stepwise Refinement to add detail to Level
1 Commands– Keep Refining until all Procedures and
Functions are complete– Use proper syntax
![Page 14: Structured Programming](https://reader030.fdocuments.us/reader030/viewer/2022033022/56816057550346895dcf8073/html5/thumbnails/14.jpg)
04/22/23 http://www.lcusd.net/lchs/dclausen
14
Process 6 E. Test the program
– 1. Desk check
– 2. Run the program, using sample data
i.e. Celsius To Fahrenheit
Celsius To Fahrenheit.txt
![Page 15: Structured Programming](https://reader030.fdocuments.us/reader030/viewer/2022033022/56816057550346895dcf8073/html5/thumbnails/15.jpg)
04/22/23 http://www.lcusd.net/lchs/dclausen
15
Process 7 (Testing the Program)
– 3. Test Border, Edge or "Extreme" cases Test Border, Edge or “Extreme” cases.txt
– 4. Debug the program (all paths)
Syntax errors Logical errors Run Time errors Compiler errors
![Page 16: Structured Programming](https://reader030.fdocuments.us/reader030/viewer/2022033022/56816057550346895dcf8073/html5/thumbnails/16.jpg)
04/22/23 http://www.lcusd.net/lchs/dclausen
16
Debugging Research“If the source of the problem is not immediately obvious, leave the computer and go somewhere where you can quietly look over a printed copy of the program. Studies show that people who do all of their debugging away from the computer actually get their programs to work in less time and in the end produce better programs than those who continue to work on the machine-more proof that there is still no mechanical substitute for human thought.”*
Dale, Weams, Headington “Programming and Problem Solving with C++”, Jones and Bartlett Publishers, 1997, pp80-81
Basili, V.R., Selby, R.W., “Comparing the Effectiveness of Software Testing Strategies”,IEEE Trans. On Software Engineering, Vol. SE-13, No.12, pp 1278-1296, Dec. 1987
![Page 17: Structured Programming](https://reader030.fdocuments.us/reader030/viewer/2022033022/56816057550346895dcf8073/html5/thumbnails/17.jpg)
04/22/23 http://www.lcusd.net/lchs/dclausen
17
Process 8
F. Interpretation– Does it produce the results that "solves" the
problem?
G. Documentation– Comments within the program
![Page 18: Structured Programming](https://reader030.fdocuments.us/reader030/viewer/2022033022/56816057550346895dcf8073/html5/thumbnails/18.jpg)
04/22/23 http://www.lcusd.net/lchs/dclausen
18
IV. Control Structures
Corrado Bohm & Guiseppe Jacopini– 1964 Structure Theorem
proved that any program logic, regardless of the complexity, can be expressed using the control structures of sequencing, selection, and iteration.
![Page 19: Structured Programming](https://reader030.fdocuments.us/reader030/viewer/2022033022/56816057550346895dcf8073/html5/thumbnails/19.jpg)
04/22/23 http://www.lcusd.net/lchs/dclausen
19
Control Structures 2
A. Sequence– Instructions executed in order 1st, 2nd, 3rd, etc.
B. Selection – (Branching, Conditionals) – If, If else, If then, If then else – Switch or Case statements
![Page 20: Structured Programming](https://reader030.fdocuments.us/reader030/viewer/2022033022/56816057550346895dcf8073/html5/thumbnails/20.jpg)
04/22/23 http://www.lcusd.net/lchs/dclausen
20
Control Structures 3 C. Iteration (Repetition)
– Indefinite Loops while, while do
– (condition checked at beginning) do...while, Repeat Until
– (condition checked at the end of the loop)
– Definite Loops for, for do (FOR NEXT LOOP)
– (Recursion)
![Page 21: Structured Programming](https://reader030.fdocuments.us/reader030/viewer/2022033022/56816057550346895dcf8073/html5/thumbnails/21.jpg)
04/22/23 http://www.lcusd.net/lchs/dclausen
21
BASIC Line Numbers
An outline of line numbers can help add structure to our program. The following list is a suggested format for a Structured Program using Top Down Design.
Structured Program Line Numbers
![Page 22: Structured Programming](https://reader030.fdocuments.us/reader030/viewer/2022033022/56816057550346895dcf8073/html5/thumbnails/22.jpg)
04/22/23 http://www.lcusd.net/lchs/dclausen
22
Program Design(APCS College Board)
Program Design – The goal in designing a program is to solve the
problem correctly, but also to design a program that is understandable, can adapt to changing circumstances, and has the potential to be reused in whole or in part. The design process needs to be based on a thorough understanding of the problem to be solved.
![Page 23: Structured Programming](https://reader030.fdocuments.us/reader030/viewer/2022033022/56816057550346895dcf8073/html5/thumbnails/23.jpg)
04/22/23 http://www.lcusd.net/lchs/dclausen
23
Program Design Process
Problem Definition– Specification of the purpose and goals– Identification of subtasks to be performed– Identification of the ADT’s (Abstract Data
Types) and operations needed to solve the problem
![Page 24: Structured Programming](https://reader030.fdocuments.us/reader030/viewer/2022033022/56816057550346895dcf8073/html5/thumbnails/24.jpg)
04/22/23 http://www.lcusd.net/lchs/dclausen
24
Program Design Process 2
Program Design– Identification of reusable components from
existing code.– Subprogram decomposition– Choice of data structures and algorithms– Design of the user interface
![Page 25: Structured Programming](https://reader030.fdocuments.us/reader030/viewer/2022033022/56816057550346895dcf8073/html5/thumbnails/25.jpg)
04/22/23 http://www.lcusd.net/lchs/dclausen
25
Program Implementation
The goals of program implementation parallel those of program design. Modules of the program that fill common needs should be built so that they can be reused easily in other programs. Control and data abstraction are important parts of program implementation.
![Page 26: Structured Programming](https://reader030.fdocuments.us/reader030/viewer/2022033022/56816057550346895dcf8073/html5/thumbnails/26.jpg)
04/22/23 http://www.lcusd.net/lchs/dclausen
26
Program Implementation 2
Implementation Techniques– Methodology
Top Down Design (using stub procedures) Bottom Up Development
– Use of Abstraction Control Abstraction Data Abstraction
– abstract data types– encapsulation and information hiding
![Page 27: Structured Programming](https://reader030.fdocuments.us/reader030/viewer/2022033022/56816057550346895dcf8073/html5/thumbnails/27.jpg)
04/22/23 http://www.lcusd.net/lchs/dclausen
27
Program Implementation 3
Programming Constructs– Input and output
Interactive Files
– Control Sequential Conditional
– Iteration– Recursion
![Page 28: Structured Programming](https://reader030.fdocuments.us/reader030/viewer/2022033022/56816057550346895dcf8073/html5/thumbnails/28.jpg)
04/22/23 http://www.lcusd.net/lchs/dclausen
28
Program Analysis
Program Analysis– Analyze and test programs to determine
whether they correctly meet their specifications.
– Analyze programs to understand their time and space requirements when applied to different data sets.
![Page 29: Structured Programming](https://reader030.fdocuments.us/reader030/viewer/2022033022/56816057550346895dcf8073/html5/thumbnails/29.jpg)
04/22/23 http://www.lcusd.net/lchs/dclausen
29
Program Analysis 2
Testing– Testing modules in isolation– Identify boundary cases and generate
appropriate test data– Integration testing
![Page 30: Structured Programming](https://reader030.fdocuments.us/reader030/viewer/2022033022/56816057550346895dcf8073/html5/thumbnails/30.jpg)
04/22/23 http://www.lcusd.net/lchs/dclausen
30
Program Analysis 3
Debugging– Categorizing errors
syntax run-time logic
– Identifying and Correcting Errors– Techniques using a debugger, adding extra
output statements, desk checking
![Page 31: Structured Programming](https://reader030.fdocuments.us/reader030/viewer/2022033022/56816057550346895dcf8073/html5/thumbnails/31.jpg)
04/22/23 http://www.lcusd.net/lchs/dclausen
31
Program Analysis 4
Understanding and Modifying Existing Code
Handling Errors– Robust Behavior
Reasoning About Programs– Pre & Post Conditions– Assertions
![Page 32: Structured Programming](https://reader030.fdocuments.us/reader030/viewer/2022033022/56816057550346895dcf8073/html5/thumbnails/32.jpg)
04/22/23 http://www.lcusd.net/lchs/dclausen
32
Program Analysis 5
Analysis of Algorithms– Informal Comparisons of running times– Exact Calculation of statement execution
counts (Big - O notation) Numerical Limits
– Limitations of finite representations (ie integer bounds, imprecision of floating point representations, & round off error)
![Page 33: Structured Programming](https://reader030.fdocuments.us/reader030/viewer/2022033022/56816057550346895dcf8073/html5/thumbnails/33.jpg)
04/22/23 http://www.lcusd.net/lchs/dclausen
33
Standard Data Structures
Standard Data Structures– Data structures are the means by which the
information used by a program is represented within the program. An important theme of the development and application of data structures is abstraction.
– Simple Data Types (int , double, char, bool)
– Records (Structs)– Arrays (Vectors or Matrices)
![Page 34: Structured Programming](https://reader030.fdocuments.us/reader030/viewer/2022033022/56816057550346895dcf8073/html5/thumbnails/34.jpg)
04/22/23 http://www.lcusd.net/lchs/dclausen
34
Standard Algorithms
Standard algorithms can serve as examples of good solutions to standard problems. Programs implementing them can serve as models of good program design. They provide examples for analysis of program efficiency. Many are intertwined with standard data structures.
![Page 35: Structured Programming](https://reader030.fdocuments.us/reader030/viewer/2022033022/56816057550346895dcf8073/html5/thumbnails/35.jpg)
04/22/23 http://www.lcusd.net/lchs/dclausen
35
Standard Algorithms 2 Searching
– Sequential (Linear)– Binary
Sorting– Selection– Bubble– Insertion– Merge sort– Quick sort
![Page 36: Structured Programming](https://reader030.fdocuments.us/reader030/viewer/2022033022/56816057550346895dcf8073/html5/thumbnails/36.jpg)
04/22/23 http://www.lcusd.net/lchs/dclausen
36
Standard Algorithms 3
Operations– Insertion– Deletion– Traversals