On Tuesday 21 June 2005 11:32, Jason Clinton wrote:
The problem statement is modeled by a fairly simple 5 state machine. Here's
Someone asked what a state machine is. In a nutshell, it's a way of listing all the states that a program might be in during its lifetime and how you move from one state to another.
And for anyone that decides to give their favorite language a crack at this, there are actually 2 states and 5 possibilities that you must consider:
Given that a Boolean variable named "THERE'S_MORE_LINES" exists then
THERE'S_MORE_LINES = false and line doesn't match criteria THERE'S_MORE_LINES = false and line matches and has header terminator THERE'S_MORE_LINES = false and line matches and doesn't have header terminator THERE'S_MORE_LINES = true and line doesn't have header terminator THERE'S_MORE_LINES = true and does have header terminator
The initial state is THERE'S_MORE_LINES = false.
So if you want to draw this out draw two circles which represent the value of THERE'S_MORE_LINES and write True in one and False in the other. Then draw an arrow line for each of the 5 possibilities above. If the possibility doesn't change THERE'S_MORE_LINES, then draw an arrow line that starts at either the True or False node and loops around back in to it.
For instance, if the case is "THERE'S_MORE_LINES = false and line matches and doesn't have header terminator" then you draw a line from false to true.
If it's "THERE'S_MORE_LINES = false and line matches and has header terminator" then you draw a loop from false to false.
CS people tend to draw an arrow line labeled "Start" pointing to the initial state of the machine.
Then, you pick your favorite language and ensure that the code handles all the lines (possibilities) in your drawing.