I've been using the UDK a bit and I'm familiar with the 'Kismet' tool they have which allows you to make small programs to control things like openning a door. The main advantage to such a thing is sequential stuff. Its really easy to setup a system where you press a switch, the door opens, it waits for 5 seconds, then the door closes.
<img src="http://dl.dropbox.com/u/939828/flowchart1.PNG">
Whereas with traditional programming methods you do something like:
OnSwitchPress
--- Tell the door to play open animation
On door open animation finished
--- Initialise a timer
On timer finished
--- Tell the door to close
And the problem with this is other 'features' can clash. For example, lets say you have another switch which perminently opens the door
OnPerminantSwitchPress
--- Tell the door to play open animation
But now you have a problem... 'On door open animation finished' will be triggered! So as a result you make a variable inside door like 'lockedForever' and you end up with this:
//Feature 1
OnSwitchPress
--- Tell the door to play open animation
On door open animation finished
perminent is not true
--- Initialise a timer
On timer finished
--- Tell the door to close
// Feature 2
OnPerminantSwitchPress
--- Tell the door to play open animation
--- Set door to 'perminent'
But as you can see Feature 2 affects Feature 1...so it can all get ugly.
Whereas with a flowcart you create this:
<img src="http://dl.dropbox.com/u/939828/flowchart2.PNG">
Door is the same object, but a different instance in the programming.
So the flowchart method can be quite handy.