bacs 287 programming logic 1. bacs 287 programming basics there are 3 general approaches to writing...
TRANSCRIPT
BACS 287
BACS 287
Programming Logic 1
BACS 287
Programming Basics
There are 3 general approaches to writing programs– Unstructured– Structured– Object-oriented
Unstructured is unacceptable. Structured programming is a good place to start
learning. Object-oriented is the most modern and is used in
more advanced courses.
BACS 287
Structured Programs
Structured programs traditionally break the problem up into modules
A module:– Performs a single, well-defined task– Is relatively small– Has a single entry and exit point– Does not interact with other modules
Structured programs tend to not use the ‘GOTO’ statement
BACS 287
Structured Programs and VB
Relatively easy to implement structured programs in Visual Basic.– Event-driven nature makes modules natural– All major structured programming constructs are
supported Since the user interface is easy to define, we
can concentrate on structuring the procedures.
BACS 287
Program Design
Good programming design dictates that modules be written using the 3 basic programming constructs.
Any procedural logic can be represented using strictly these 3 structures.
Your Visual Basic code modules should be written using this style.
BACS 287
Structured Coding Basics
Any program can be written using 3 basic constructs.– Sequence– Selection– Iteration
Visual Basic has many ways to implement these constructs.
BACS 287
Basic Programming Constructs
Sequence - Perform instructions one after the other
Selection - Make a choice and follow a logic path
– IF-THEN-ELSE– CASE
Iteration - Repeat a code segment several times
– DO WHILE– DO UNTIL
BACS 287
Procedural Logic Design Tools
Many tools exist to plan procedural logic. Two common ones will be used in this class
Pseudocode– English-like– Free form– Easy to convert to VB code
Flowchart– Graphic representation – Better for high-level overview than pseudocode
BACS 287
Pseudocode
The “Rules”– One statement per line– Indent nested structures– End all structures with appropriate terminator
‘IF’ statements with ‘ENDIF’ ‘DO’ statements with ‘ENDDO’ ‘CASE’ statements end with ENDCASE
– Use structured programming constructs
BACS 287
Pseudocode Example
Start
Get temperature
If temperature < 40 thenWear a coat
ElseDon’t wear a coat
Endif
Stop
BACS 287
Flowchart Symbols
DECISION
PRINTED OUTPUTGENERIC
INPUT / OUTPUT
PROCESS
START / STOP
TAPESTORAGE
DISKSTORAGE
FLOW LINES
BACS 287
Flowcharts
The “Rules”– Use the basic flowchart symbols (boxes)– All boxes are connected by flow lines– Flow lines do not cross other flow lines– Flow lines are vertical and horizontal, not curved or
diagonal– General flow is from top to bottom, left to right– Start with a single ‘Start’ box and end with a single ‘Stop’
box– Draw the entire chart at a consistent logical level
BACS 287
Flowchart Example
BACS 287
Sequence Construct - Example
The Problem: Initialize a variable called ‘X’ to a value of 1.
Add 1 to this value. Display the result on the screen.
BACS 287
Sequence Construct
Start
X = 1
X = X + 1
Write X to screen
Stop
START
X = 1
STOP
Display X
X = X + 1
BACS 287
Selection Construct – Example 1
The Problem: Read the value of a variable ‘X’. When the
value of ‘X’ is greater than 4, display “error”. Otherwise, display “ok”.
BACS 287
Selection (If-Then-Else)
Start
Read X
IF X > 4.0 thenPrint “Error”
ElsePrint “OK”
EndIF
Stop
START
STOP
Print "OK"
Read X
X > 4.0 Print "Error"Yes
No
BACS 287
Selection Construct – Example 2
The Problem: Read the value of a variable ‘X’. When the
value of ‘X’ is “red”, print “value is red”. When the value of ‘X’ is “blue”, print “value is blue”. When it is neither, print “error”.
BACS 287
Selection (Case)
StartRead XSelect Case X
Case “red”Print “Value is red”
Case “blue”Print “Value is blue”
Case ElsePrint “Error”
EndCaseStop
START
STOP
Print "Value is
red”
Read X
CASE X
X = “red”
Print "Value is
blue"
Print "Error"
OtherwiseX + “blue”
BACS 287
Iteration Construct – Example
The Problem: Calculate the sum of the first 10 digits (that
is, 1 through 10). When you finish, print this value.
Perform these calculations by performing an IF-THEN test at the top of the loop. Next, repeat where the IF-THEN is at the bottom of the loop.
BACS 287
Iteration (Do While)
StartX = 1Sum = 0Do While X < 11
Sum = Sum + XX = X + 1
EndDoPrint SumStop
START
STOP
X = 1Sum = 0
X < 11
Sum = Sum + X Print Sum
X = X + 1
Yes
NO
BACS 287
Iteration (Do Until)
StartX = 1Sum = 0Do Until X > 10
Sum = Sum + XX = X + 1
EndDoPrint SumStop
START
STOP
X = 1Sum = 0
X > 10
Sum = Sum + X
Print Sum
X = X + 1
YES
NO
BACS 287
Putting it All Together
Note that the 3 programming constructs are combined to solve problems.
Also note that they can be “nested” within one another.
The key is to think logically and plan out a strategy for solution that takes into account all possibilities.
BACS 287
You Try It – Example 1
The Problem: Read a students GPA. If the value is equal
to 4.0, print a “President’s letter.” If the GPA is between 3.5 and 3.99, print a “Dean’s letter.” If it is between 3.25 and 3.499, print a “Director’s letter.” If it is between 3.0 and 3.249, print a “Honor role letter.” If it is below 3.0, don’t print anything.
BACS 287
You Try It – Example 1 Solution
StartRead GPAIf GPA >= 4.0 then
Print President’s letterElseIf GPA >= 3.5 then
Print Dean’s letterElseIf GPA >= 3.25 then
Print Director’s letterElseIf GPA >= 3.0 then
Print Honor Roll letterEndIfStop
START
STOP
GPA >= 4.0Print President
Letter
Read GPA
NO
GPA >= 3.5Print President
Letter
Yes
Yes
GPA >= 3.25Print Director
LetterYes
GPA >= 3.0Print Honor Roll
LetterYes
NO
NO
NO
BACS 287
You Try It – Example 2
The Problem: Read a number. Write code to print “This is a
loop” the number of times indicated by the number. The test should be at the top of the loop. Next, do the same by putting the test at the bottom of the loop.
BACS 287
You Try It – Example 2 Solution
StartGet Loop CountX = 1Do While X <= Loop Count
Print “This is a loop”X = X + 1
EndDoStop
START
STOP
Get Loop Cnt
X <= Loop Cnt?
Print “This is a loop”
YES
NO
Initialize X to 1
Add 1 to X