Главная » Просмотр файлов » 1626435694-d107b4090667f8488e7fa1ea1b3d0faa

1626435694-d107b4090667f8488e7fa1ea1b3d0faa (844295), страница 48

Файл №844295 1626435694-d107b4090667f8488e7fa1ea1b3d0faa (Ершов 1977 - Введение в теоретическое программирование) 48 страница1626435694-d107b4090667f8488e7fa1ea1b3d0faa (844295) страница 482021-07-16СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 48)

ОПРЕДЕЛЕНИЕ СХЕМ ЯНОВА (оператор «есле») к (условие) (безусловный оператор) (условныйоператор)к (оператор«если») ! (оператор«если») иначе (оператор) ) (условие) (оператор цикла )в) ~ (метка): (условный оператор) Если вспомнить,что среди основных операторов есть оператор перехода на М,то станет ясно, что синтаксис алгола 60 охватывает и другие способы указания плюс- и минус-направлений. Ниже следуют несколько фрагментов алгольских программ с логическими операторами, использующими вышеприведенные логические выражения в качестве условий: й) если (х «=' ,т) ос (х ) О) то у: х иначе йч=* (и (х); 2) если (Х у 2 + У (' 2 (~ 1)бс(Х >< У ) )О) то начало если Х~О то начало А: ° егерей(У1Х); на СЧЕТконец конец; ОШИБКА: вывод (Х, У) 8) если ) х,осх»лх» ~ х,вс ~х»бсхз ~/ хзбсх,бс ) х ~/ ~/ хфхтйхз то на ДА иначе на НЕТ ° В нашем изложении, так же как и в первой части, нам будет ;удобно изображать программы графически.

Поскольку передачи управления в графе переходов указываются дугами, ориентация которых указывается стрелками, естественно называть плюс-и минус-направления соответственно плюс- и минус-стрелками. При этом плюс-стрелка будет отличаться от минус-стрелки точкой у своего основания. На рис. 7.2 в графической форме повторены примеры логических операторов. Задача о голосовании. После повторительной главы по математической логике нам естественно сосредоточиться на примере «машины голосования». С одной стороны, в его условии стоит довольно громоздкое выражение, с другой стороны, реализовать его вычисление ничего не стоит: нужно только набраться терпейия и запрограммировать совершенную нормальную форму: гд.

) х,; ~г;. г,йх.,; г;.= г»йхз; г,: ~хз; г,: г,ах»; 1'1 . 'гх б~ х»', гт: гз ~/ гБ з) Для чвтателя будет неплохой задачей додуматься, почему авторы ал тола бс ив првчкслилв <оператор цвкла> к <безусловным операторам>: ведь как будто <оператор цикла> сочетается о <усховксм> так жо, как к <безусловт иый оператор>.

% тл. нлчлльнык нлплюдкния 231 11 1ХЗ Г,: =Г1ЙХ,; г: =г,яхт; Г.,:=Г )/Г1; Г,: =Х,ЙХ1; Г,: = Х, Ое Хт; гт: = 1'1 Ч 1'э: если гт то на ДА иначе на НЕТ. Автор убежден, что в этом ыесте даже самый робкий читатель возмутится тратой буыаги на демонстрацию столь бездарного иег Рис. 7.2. 11рпмеры логических операторов. л) Ал1 териативпме ветви с обл1пм преемником. С) Цепочке условий о уходом иэ ветен. е) Сложное условие.

подхода к программированию этой задачи. Автор просит прощения и сообщает, что пример приведен для контраста, а также для предупреждения, что на практике такие програэппп появляются, и сожалению, не так уж н редко. ГЛ. 7. ОПРЕДЕЛЕНИЕ СХЕМ ЯНОВА Беэ всякой математической логики и общей теории программирования тремя заданными величинами х„х, и х, можно распорядиться очень просто~ Пусть х, $.

Проверим х: если хе = Ф, то мы имеем два голоса и можем сказать ДА; если х, $, то при хе — — $ мы получаем снова ДА, а при х„= т — НЕТ. Пусть х, = т. Проверим х,: если х, = Ф, то опять все зависит от хе.' при хе = 1 имеем ДА, а при х,= т — НЕТ; если х, = т, то мы уже имеем два против: НЕТ, Эта процедура выбора легко изображается графически (рис.

7.3, а). Глядя на нее, мы сразу соображаем, что проверку хе Т ДА Ал м.т 'дя, н~т ле «еТ Рис. 7.3. Машине голосования. е) Непредвзятый прямоц подход. о) Усовершенствоваяиый прямой подход. нет смысла выписывать два раза; достаточно аавести стрелки от двух проверок х на одну вершину графа (рис. 7.3, б). Мы видим, что расчленение сложных логических условий на серию проверок элементарных предикатов может привести к заметному упрощению программы. На этот раз автор вправе рассчитывать на определенный скептицизм читателя, потому что такое прямое рассуждение, скажем, для десяти голосующих будет, возможно, заметно сложнее или чревато ошибками.

Поэтому естественно рассмотреть способы расчленения сложных предикатов на элементарные более систематически. При атом мы ораву выходим на разумное сужение вадачи (методологически — точно так же, как и при введепии понятия логической формулы): мы отвлечемся от способов вычисления элементарных предикатов, считая их невависимыми логическими' переменнымн, чьи аначения задаются другими (счетными) опера-. е тя. НАЧАЛЬНЫЕ НАБЛЮДЕНИЯ 1х г х г 1 г а) г 4 1 л) г) Рис. 7.4.

Правила расчлеиеиия условий. а) Отрицавие. о) Дизъюнкцкя. в) Колъюикция. а) Имллинация, 2) Д и з ъ ю н к ц и я. Коли условием является днзъюнкция х ')Г' у, то надо проверить х с выходом на плюс-направление при х =- 4 и с переходом к проверке у при х = г. Выходы от проверки у — те же, что и у х у' у (рис.

7.4, б)). Заметим, что зто правило непосредственно опирается на известные свойства диэъюнкции 3) К о н ъ ю н к ц и я. Коли условием является конъюнкция хну, то надо проверить х с выходом на минус-направление при х = г и с переходом к проверке р при х = а. Выходы от проверки у — те же, что и у х8с р (рис. 7.4, в). Заметим, что это правило опирается на аналогичные свойства конъюнкции гну=а, $йу=р.

торами программы. Сам предикат при этом становится просто логической формулой. Поскольку формула составляется из переменных с помощью логических операций, естественно и вопрос расчленения предиката услрвия выяснять, подвергая анализу главные логические операции. Соответствующие правила обнаруживаются немедленно: () О т р и ц а н и е. Коли условием является отрицание ) х„ то, чтобы проверять х, нужно в операторе поменять местами плюс- и минус-направления (рис. 7.4, а).

гл. ъ Опгеделенке схем яновА 4) И и и ли к а ц и я. Если условием является импликация х:э у, то надо проверить х с выходом на плюс-направление при х $ и с переходом к проверке у при х =- Ф. Выходы от проверки у — те же, что и у х ~ у (рис. ?А, г)). Здесь работают следующие свойства импликации: $~ у=г, $ ~ у = у. СФормулировав зги правила, мы легко обнаруживаем, что они зависимы друг от друга: можно взять за основу правила отрицания УУ ч хау г г (1хч1у) г~~ |хч1у г~ '1 У г ф , ТХ ч и у 'г~~ ч х чу г~~ Рис. ?.5. Получение выводимых правил. е) Правило для коиъюивции.

о) Правило для импликации. (ТЗ вЂ” тождествен ' ная вемена условия, р — применение правила для операции р). и дизъюнкции и вывести из них правила конъюнкции, исполв зуя соотношение х8су= ~( ~х)/ 1у),' и импликации, используя тождество х:~ у = ) х ~/ у. Этот вывод показан на рис. ?.5. $7Л. НАЧАЛЬНЫЕ НАБЛЮДЕНИЯ Очевидно, что применяя эти правила, можно совершенно формально расчленить произвольный логический оператор, используя дерево разбора логической формулы, образующей уоловне. Мы порекомендуем читателю проделать таков расчленение для 'условия в «машине голосования» н сравнить результат о программой, показанной на рис.

7.6, а). Посмотрим внимательно на то, что у нас получилось. Естественно, программа очень далека от элегантной схемы голосования с рис. 7.3, б). Однако именно бросающаяся в глаза несуразность программы (каждое условие проверяется четырежды) подсказывает нам, что здесь что-то можно сделать. Проведем содержательный анализ программы на рис.

7.6, а).' Она состоит из четырех «этажей», на каждом из которых есть«коридор» с выходом в конце и с четырьмя «лестницами» на начало нижнего этажа. Двигаясь по коридору от начала, мы последовательно проверяем значения элементарных предикатов и в зависимости от комбинации их значений либо попадаем на концевой выход, чтобы сказать ДА, либо спускаемся по лестнице наначало коридора в нижнем этая7е. Шансы на улучшение программы состоят в том, что, попав на какой-то этаж Р по лестнице, идущей сверху, мы уже знаем значения некоторых предикатов и могли бы на этаже Р и далее сразу выбрать нужное направление, не спрашивая дорогу. Проверим эту идею более внимательно, начав о нижних зтажей программы.

Перед этим, чтобы не загромождать чертежи, еще более схематизируем изображение программы, заменив переменные на их номера, сократив ДА и НЕТ до Д иНи невырисовывая детально части программы, выходящие в' данный момент за поле зрения (см. рис. 7.6, б)). Если при начале движения по второму этажу х, окажется ложным, то, попав по минус-стрелке от х» на первый этаж, мы обнаруживаем, что условие х» с первого этажа обязательно нас переадресует на Н.

По если так, то мы можем в нашей программе перенести минус-стрелку, идущую от второэтажного хм прямо на Н, устраняя повторную проверку того же условия (рис. 7.6, в)). Если мы попадем на первый этаж от второэтажного условия х», то зто будет возможно только при х««и л« * $. Однако прн движении по первому этажу вта комбинация значений непременно переадресует нас на Н. Выяснив это, мы опять-таки можем перенести минус-стрелку от второэтажного и» прямо на Н (рис. 7.6, г)). Рассуждая аналогично для случая попадания на первый этан» от второэтажного л„мы переносим плюс-стрелку от него прямо на Н и получаем программу, покааанную на рис.

7.6, д). Мы обнаруживаем два интересных момента. На первый этаж теперь яе ведет ни одна лестница. Таким образом, на эту часть 2ЗЕ Гл.т. Онведеленне схем янОВА в) ' г) е) Рис. 7.е. систематическое упРовтеиие амашииы толосоваиии». $7.Ь НАЧАЛЬНЫЕ НАБЛЮДЕНИЯ 237 программы нельзя ниоткуда попасть и, стало быть, ее можно просто устранить из программы. В логическом операторе с условием х, на втором этаже плюс- и минус-направления совпадают и поэтому выполнение проверки не Нужно.

Характеристики

Тип файла
DJVU-файл
Размер
5,24 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6552
Авторов
на СтудИзбе
299
Средний доход
с одного платного файла
Обучение Подробнее