Так, ви можете [повторно] писати програми без заяв про перерви (або повернення з середини циклів, які роблять те саме). Але, можливо, вам доведеться ввести додаткові змінні та / або дублювання коду, які, як правило, ускладнюють розуміння програми. Паскаль (мова програмування) був дуже поганим, особливо для початківців програмістів саме з цієї причини. Ваш начальник, по суті, хоче, щоб ви запрограмували в контрольних структурах Паскаля. Якби у Ваших черевиках був Лінус Торвальдс, він, мабуть, показав вашому начальнику середній палець!
Є результат інформатики, який називається ієрархією управлінських структур Косараджу, яка починається з 1973 року, і про яку згадується у відомому документі Кнута про готи з 1974 року. .) Що довів С. Рао Косараджу в 1973 році, це те, що неможливо переписати всі програми, які мають багаторівневі перерви глибини n, в програми з глибиною розриву менше n без введення зайвих змінних. Але скажімо, що це лише суто теоретичний результат. (Просто додайте кілька додаткових змінних ?! Безумовно, ви можете це зробити, щоб догодити своєму начальнику ...)
Що набагато важливіше з точки зору інженерії програмного забезпечення - це нещодавніший документ Еріка С. Робертса з 1995 р. Під назвою Вихід з циклу та структуроване програмування: Повторне відкриття дискусії ( http://cs.stanford.edu/people/eroberts/papers/SIGCSE- 1995 / LoopExits.pdf ). Робертс підсумовує кілька емпіричних досліджень, проведених іншими перед ним. Наприклад, коли групі студентів типу CS101 було запропоновано написати код функції, що реалізує послідовний пошук у масиві, автор дослідження сказав наступне про тих студентів, які використовували перерву / повернення / goto для виходу з послідовний цикл пошуку, коли елемент був знайдений:
Я ще не знайшов жодної людини, яка спробувала програму, використовуючи [цей стиль], який створив неправильне рішення.
Робертс також говорить, що:
Студенти, які намагалися вирішити проблему, не використовуючи явного повернення з циклу for for, пройшли набагато менше: лише семеро з 42 студентів, які намагалися використовувати цю стратегію, змогли створити правильні рішення. Цей показник представляє рівень успішності менше 20%.
Так, ви можете бути більш досвідченими, ніж учні CS101, але без використання заяви перерви (або еквівалентного повернення / переходу з середини циклів), врешті ви напишете код, який, хоча номінально добре структурований, є досить волохатим з точки зору додаткової логіки змінні та дублювання коду, що хтось, ймовірно, сам, вкладе в нього логічні помилки, намагаючись дотримуватися стилю кодування вашого начальника.
Тут я також скажу, що документ Робертса набагато доступніший середньому програмісту, тому краще в першу чергу прочитати, ніж Книт. Він також коротший і охоплює більш вузьку тему. Ви, напевно, можете навіть рекомендувати його своєму начальнику, навіть якщо він керує, а не типом CS.