An unstructured do loop does not have a built-in condition check,
but uses `if`

and `exit`

to exit
the loop when some condition is met. The `do`

loop itself is equivalent to `do while ( .true. )`

.

**Example 20.3. Unstructured Fortran Loop**

module constants double precision, parameter :: PI = 3.1415926535897932d0 end module constants program angles use constants ! Constants defined above ! Disable implicit declarations (i-n rule) implicit none ! Variable definitions integer :: angle ! Statements angle = 0 do ! Body print *, 'sine(',angle,') = ', sin(angle * PI / 180.0d0) ! Housekeeping and condition angle = angle + 1 if ( angle > 360.0d0 ) exit enddo end program

The advantage of an unstructured do loop is that the condition can be checked anywhere within the body of the loop. Structured loops always check the condition at the beginning or end of the loop. The down side to unstructured do loops is that they are unstructured. They require less planning (design) before implementation, which often leads to messier code that can be harder to follow.

Like Fortran's `exit`

statement, the C
`break`

statement immediately terminates the current
loop so the program continues from the first statement after the
loop.
Unlike Fortran, C does not have a unstructured loop construct,
so use of `break`

is never necessary. Well-structured
code will generally use the loop condition to terminate the loop,
and an `if`

statement to trigger a `break`

would be redundant. However, we can create an unconditional
loop like Fortran's unstructured `do`

loop using
`while ( true )`

:

**Example 20.4. Unstructured C Loop**

#include <stdio.h> #include <math.h> #include <stdbool.h> // Define "true" constant int main() { int angle; angle = 0; while ( true ) { printf("sine(%d) = %f\n", angle, sin(angle * M_PI / 180.0)); if ( ++angle > 359.0 ) break; } return 0; }

Write a C or Fortran program using that prints the square root of every number entered by the user until they enter a sentinel value of -1. Use a C

`break`

or a Fortran`exit`

to terminate the loop.Please enter an integer, or -1 to quit. 4 sqrt(4) = 2.000000 Please enter an integer, or -1 to quit. 9 sqrt(9) = 3.000000 Please enter an integer, or -1 to quit. 10 sqrt(10) = 3.162278 Please enter an integer, or -1 to quit. -1