Метод Ньютона III: имитация цикла с выходом из середины
BASIC-конструкция Do ... Loop (см. рис. 6.16) на рис. 6.18 превратилась в конструкцию while 1 ..., которую на латинский язык можно перевести как «ad calendas greaces» – «до греческих календ». Здесь, как и в программе на рис. 6.17, пришлось идти если не на обман, то на натяжку: «выполняй, пока рак на горе не свистнет».
Оператор continue отличается от оператора break тем, что передает управление не в хвост, а в гриву (начало) цикла[35]. Но в документации и в файлах помощи Mathcad нет примеров, обосновывающих использование оператора continue. Не смог придумать их и автор.
История с вводом в Mathcad операторов break и continue и return подтверждает старую истину о том, что «нет ничего практичнее хорошей теории». И вот почему.
Вышеприведенный анализ циклов на языке Mathcad имеет не только сугубо практический, но и чисто теоретический аспект. Как известно, набор управляющих конструкций любого структурного языка ведет свою родословную от основной структурной теоремы Дейкстры, объявившей войну меткам: «Алгоритм любой сложности можно реализовать, используя только цикл while и альтернативу». Автор потратил уйму времени и сил на поиск доказательства этой теоремы в статьях или книгах, но так ничего и не нашел. А вот показать, что данная теорема не верна, можно в два счета – см. рис. 6.19 и рис. 6.20. Эти программы решают уже известную нам задачу о корне алгебраического уравнения, но другим методом – методом половинного деления. Его алгоритм – простейшая иллюстрация теоремы Дейкстры: цикл (while) приближения к корню, в которой вложена альтернатива (if ... ). Если корень правее центра интервала a-b, то к нему (к центру) подтягивается левый край (a ¬ x), если нет – правый (b ¬ х).