A-level Computing/AQA/Problem Solving, Programming, Data Representation and Practical Exercise/Problem Solving/Structure charts

A Structure Chart in software engineering is a chart which shows the breakdown of a system to its lowest manageable parts. They are used in structured programming to arrange program modules into a tree. Each module is represented by a box, which contains the module's name. The tree structure visualizes the relationships between modules, showing data transfer between modules using arrows. Structured Charts are an example of a top-down design where a problem (the program) is broken into its components. The tree shows the relationship between modules, showing data transfer between the models.
Let's take a look at a simple example of how this might be executed when representing the following code:
dim num1, num2 as integer
sub calculateAverage()
dim avg as integer
inputNums()
avg = average(num1, num2)
outputAvg(avg)
end sub
function average(a,b)
return (a + b) / 2
end function
sub inputNums()
num1 = console.readline()
num2 = console.readline()
end sub
sub outputAvg(x)
console.writeline("average = " & x)
end sub

Exercise: Structure Charts |
Selection

A selection in a Structure Chart is determined by the diamond symbol. This means a condition will be checked and depending on the result, different modules will be executed.
sub main()
dim num1 as integer
num1 = console.readline()
if num1 = 7 then
luckyNumber()
else
otherNumber()
endif
end sub
Iteration

Using the semi circular arrow we can represent iteration in Structure Charts. The arrow encompasses a link to a module, implying that module is executed multiple times. Let's take a look at a coded example:
sub main()
dim num1 as integer
num1 = console.readline()
while num1 > 0 do
num1 = countdown(num1)
end while
end sub
Function countdown(a)
return a - 1
End Function
Exercise: Structure Charts, Iteration and Selection Create structure charts for the following code: sub howManyThrees()
dim num1, count, total as integer
num1 = startMsg()
count = 0
total = 0
while num1 > 0 do
checkNumber(count, total, num1)
num1 = num1 - 1
end while
endMsg(count)
end sub
sub checkNumber(byRef c, byRef t, byVal n)
If n MOD 3 = 0 Then
c = divBy3(c)
Else
t = add(n, t)
EndIf
end sub
function divBy3(x)
return x + 1
end function
function add(n, t)
return n + t
end function
function startMsg()
console.writeline("program started, enter your number")
return console.readline()
end function
sub endMsg(n)
console.writeline("number of threes : " & n)
end sub
|