# Nested Control Structures

DO loops, FOR loops, IF statements, GOTO statements are the different control structures which may all be mixed together into one program. Please, see the example below as a demonstration of this mix:

```00010 ! calculates average score , allows user to add more scores after the initial calculation
00020 print newpage
00030 let sum_of_scores = 0 ! provided for clarity, not required
00040 let average = 0 ! provided for clarity, not required
00050 let number_of_scores = 0 ! provided for clarity, not required
00060 let new_score = 0 ! provided for clarity, not required
00070 start: !
00080 let more_scores\$ = "Y"
00090 do while trim\$(uprc\$(more_scores\$)) = "Y"
00100    print "Do you want to add more scores?"
00110    input more_scores\$
00120    if trim\$(uprc\$(more_scores\$))="N" then
00130       exit do
00140    else if trim\$(uprc\$(more_scores\$))<>"Y" then
00150       print "Invalid entry"
00160       let more_scores\$ = "Y"
00170    else
00180       print "How many scores do you want to add?"
00200       for count = 1 to scores_to_add
00210          print "Enter new score"
00220          input new_score
00230          if new_score < 0 or new_score > 100 then
00240             print "Invalid score. you will be asked to re-enter the score"
00250             let count -= 1
00260          else
00270             let sum_of_scores += new_score
00280             let number_of_scores += 1
00290          end if
00300       next count
00310    end if
00320 loop
00330 if number_of_scores <> 0 then
00340    let average = sum_of_scores / number_of_scores
00350    print "The average of "&str\$(number_of_scores)&" scores is "&str\$(average)
00360    print "Do you want to add more scores?"
00370    input more_scores\$
00380    if trim\$(uprc\$(more_scores\$)) = "Y" then
00390       goto start
00400    end if
00410 end if
00420 print "Good bye"
00430 stop
```