#### Unstructured Loops

##### Fortran Unstructured Do Loops

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 19.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.

##### The C break Statement

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 19.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;
}
```

### Note

Be sure to thoroughly review the instructions in Section 2, “Practice Problem Instructions” before doing the practice problems below.
1. 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
```