' 1. Исходная неструктурированная Basic-программа

Input "Предположение"; Ответ

label: Улов = Ответ

  For Рыбак = 1 To 3

    Улов = Улов — 1

    Улов = Улов - Улов / 3

    If Улов > Int(Улов) Then Ответ = Ответ - 1: Goto label

  Next

Print "Ответ "; Ответ; "рыб"

 

' 2. Первый шаг структурирования - разбег

Input "Предположение"; Ответ

Ответ = Ответ + 1              ' Шаг назад

label: Ответ = Ответ - 1       ' Шаг вперед

  Улов = Ответ

  For Рыбак = 1 To 3

    Улов = Улов — 1

    Улов = Улов - Улов / 3

    If Улов > Int(Улов) Goto label

  Next

Print "Ответ "; Ответ; "рыб"

 

' 3. Второй шаг структурирования — ввод признака

Input "Предположение"; Ответ

Ответ = Ответ + 1

label: Ответ = Ответ — 1

Улов = Ответ

Поделили = "да"                ' Признак дележа улова

  For Рыбак = 1 To 3

    Улов = Улов — 1

    Улов = Улов - Улов / 3

    If Улов > Int(Улов) Then Поделили = "нет"

  Next

If Поделили = "нет" Goto label

Print "Ответ "; Ответ; "рыб"

 

' 4. Третий шаг структурирования — отказ от метки

Input "Предположение"; Ответ

Ответ = Ответ + 1

Do                             ' Начало цикла с постпроверкой

  Ответ = Ответ — 1

  Улов = Ответ

  Поделили = "да"

  For Рыбак = 1 To 3

    Улов = Улов — 1

    Улов = Улов - Улов / 3

    If Улов > Int(Улов) Then Поделили = "нет"

  Next

Loop Until Поделили = "да"     ' Конец цикла

Print "Ответ "; Ответ; "рыб"