Control flow graphs - Tree decomposition
There are many different kinds of control-flow constructs that only map to "structured programming" (tree decomposition) constructs when you add extra data variables and extra tests.  continue is usually okay (as long as its not nested any deeper), but break is one of the hard ones.  Another relatively painful case is short-circuit conditional evaluation.

A preprocessing step of converting while x stmt to if x repeat stmt until not(x) will make everything a little easier (and you want to do this anyway, because it lets you safely optimize loop invariants).  Example:

while i&lt;=n:
  something
  if condition break
  something_else
  i = i+1


becomes

if i&lt;=n:
  repeat:
    something
    if condition break
    something_else
    i = i+1
  until not(i&lt;=n)


A second preprocessing step of saving the (possibly complicated) calculation of the loop condition as a boolean temporary variable will also help.  So:

if i&lt;=n:
  repeat:
    something
    if condition break
    something_else
    i = i+1
    t0 = not(i&lt;=n)
  until t0


Now we can convert our break into a if-else:

if i&lt;=n:
  repeat:
    something
    if condition:
      t0 = false
    else:
      something_else
      i = i+1
      t0 = not(i&lt;=n)
  until t0


So we've converted, but the result is kind of ugly: we now have to keep track of t0 and we have two tests where we only had one before.  "Structured programming" is not the panacea it is often made out to be.