Дружелюбный Русский Алгоритмический язык, Который Обеспечивает Наглядность/Надёжность
Здесь показаны различия между двумя версиями данной страницы.
strukturnaja_algoritmizacija_i_shampur-metod_-_sochinitel_stanovitsja_mudrecom [2012/04/07 14:41] Владислав Жаринов создано |
strukturnaja_algoritmizacija_i_shampur-metod_-_sochinitel_stanovitsja_mudrecom [2012/05/20 16:50] (текущий) Владислав Жаринов [Структурная алгоритмизация и шампур-метод: сочинитель становится мудрецом] |
||
---|---|---|---|
Строка 9: | Строка 9: | ||
Тогда любой набор значений входящих в это выражение величин, при котором условие истинно, можно называть «паролем» охраны. Понятно, что паролей м.б. и больше одного — это зависит от выражения (вида условий, значений входящих переменных и констант). | Тогда любой набор значений входящих в это выражение величин, при котором условие истинно, можно называть «паролем» охраны. Понятно, что паролей м.б. и больше одного — это зависит от выражения (вида условий, значений входящих переменных и констант). | ||
- | Важно понимать также вот что. Структура охранного логвыра, как она определена для виопа Д4 в [[http://drakon.su/ocenka_texnojazyka_i_shampur-metoda#nachalo_azbuki_drakona-1vrode_kak_v_bs_da_ne_kak_v_bs|этом подразделе]], допускает при проверке охраны также вычисления арвыров. Но результаты этих вычислений используются только в течение проверки. Это значит, что полученные значения недоступны после прохождения виопа. Но не менее существенно, что они недоступны и до этого. Т.е. возможно, что мы проверяем не то, что имели в виду для данной развилки (скажем, в неформальной постановке её вопроса). И это нужно учитывать. Разумный путь — использовать в охранах только имена величин (это и есть простейшая форма арвыра, как можно видеть из определения виопа Д3). | + | Важно понимать также вот что. Структура охранного логвыра, как она определена для виопа Д4 в [[http://drakon.su/vershiny_i_linii_sxem_-_smysl_v_grafike_i_tekste#nachalo_azbuki_drakona-1vrode_kak_v_bs_da_ne_kak_v_bs|этом подразделе]], допускает при проверке охраны также вычисления арвыров. Но результаты этих вычислений используются только в течение проверки. Это значит, что полученные значения недоступны после прохождения виопа. Но не менее существенно, что они недоступны и до этого. Т.е. возможно, что мы проверяем не то, что имели в виду для данной развилки (скажем, в неформальной постановке её вопроса). И это нужно учитывать. Разумный путь — использовать в охранах только имена величин (это и есть простейшая форма арвыра, как можно видеть из определения виопа Д3). |
Если некие данные используются только в развилках и не являются объектами действий алгопроцесса, то их можно получать арифметически (в частности, как результат алгопроцесса-функции). Но тут уже неоднократно используемую величину имеет смысл вычислить как действие и потом только указывать имя результата вычисления. Это сокращает работу исполнителя. | Если некие данные используются только в развилках и не являются объектами действий алгопроцесса, то их можно получать арифметически (в частности, как результат алгопроцесса-функции). Но тут уже неоднократно используемую величину имеет смысл вычислить как действие и потом только указывать имя результата вычисления. Это сокращает работу исполнителя. | ||
Строка 41: | Строка 41: | ||
Перейдём к циклу Дейкстры. Он также изначально был сформулирован в текстовой записи. Современная формулировка дана в новом издании классической работы «Алгоритмы и структуры данных» Н. Вирта ([[http://forum.oberoncore.ru/viewtopic.php?p=50482#p50482|Приложение С]]). Фактически она представляет выбор Дейкстры, вложенный как тело цикла ПОКА. О смысле конструкции сказано следующее: | Перейдём к циклу Дейкстры. Он также изначально был сформулирован в текстовой записи. Современная формулировка дана в новом издании классической работы «Алгоритмы и структуры данных» Н. Вирта ([[http://forum.oberoncore.ru/viewtopic.php?p=50482#p50482|Приложение С]]). Фактически она представляет выбор Дейкстры, вложенный как тело цикла ПОКА. О смысле конструкции сказано следующее: | ||
- | //Грубо говоря, обычно n-веточный цикл Дейкстры соответствует конструкциям из n обычных циклов, каким-то образом вложенных друг в друга. (Алгоритмы и структуры данных, с. 268)// | + | //Грубо говоря, обычно n-веточный цикл Дейкстры соответствует конструкциям из n обычных циклов, каким-то образом вложенных друг в друга.// (Алгоритмы и структуры данных, с. 268) |
Каким же образом? Попробуем разобраться с помощью графит-метода (шампур-метод снова недостаточен — нам нужно привлекать и содержание вершин). | Каким же образом? Попробуем разобраться с помощью графит-метода (шампур-метод снова недостаточен — нам нужно привлекать и содержание вершин). | ||
Строка 59: | Строка 59: | ||
Представляет интерес определение порядка следования по «шапке», вплоть до выхода из цикла. В книге на этот счёт сказано следующее: | Представляет интерес определение порядка следования по «шапке», вплоть до выхода из цикла. В книге на этот счёт сказано следующее: | ||
- | //Хотя в теории Дейкстры последовательность выбора ветвей цикла и вычисления соответствующих охран не определена, в этой книжке принято, что охраны вычисляются в текстуальном порядке. (Алгоритмы и структуры данных, с. 269)// | + | //Хотя в теории Дейкстры последовательность выбора ветвей цикла и вычисления соответствующих охран не определена, в этой книжке принято, что охраны вычисляются в текстуальном порядке.// (Алгоритмы и структуры данных, с. 269) |
Что происходит при этом? Проверяется ПОКА-охрана. Если она истинна — исполнитель идёт на ПОВТОР (выполняет первую ветвь). Если ложна — то исполнитель идёт... нет, не на выход из конструкции (обозначенный как КЦ)... а на текст за телом этой ветви. Это м.б. конец конструкции только в том случае, когда в цикле только одна охрана. Как нетрудно убедиться, это уже не цикл Дейкстры, а обычный цикл. А начало следующей ветви — это ближайшее ИНАЧЕСЛИ — так и попадаем на охрану следующей ветви. Если и она ложна — всё повторяется по шампуру. | Что происходит при этом? Проверяется ПОКА-охрана. Если она истинна — исполнитель идёт на ПОВТОР (выполняет первую ветвь). Если ложна — то исполнитель идёт... нет, не на выход из конструкции (обозначенный как КЦ)... а на текст за телом этой ветви. Это м.б. конец конструкции только в том случае, когда в цикле только одна охрана. Как нетрудно убедиться, это уже не цикл Дейкстры, а обычный цикл. А начало следующей ветви — это ближайшее ИНАЧЕСЛИ — так и попадаем на охрану следующей ветви. Если и она ложна — всё повторяется по шампуру. |