Главная » Просмотр файлов » 1611678431-0e68e83522cb9d960ac896aa5d90854d

1611678431-0e68e83522cb9d960ac896aa5d90854d (826635), страница 17

Файл №826635 1611678431-0e68e83522cb9d960ac896aa5d90854d (Билеты - Ответы) 17 страница1611678431-0e68e83522cb9d960ac896aa5d90854d (826635) страница 172021-01-26СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

else...) и оператор выбора (case).Во-вторых, оператор выбора не допускает умолчаний, что помогает при разработке сложных программ,так как каждая альтернатива представлена подробно, и возможность что-либо упустить уменьшается.В-третьих, благодаря отсутствию умолчаний, запись оператора выбора представлена в симметричномвиде.Оператор цикла имеет вид: do B → S do.Обозначим это соотношение через DO и представим его в следующем виде:DO : do B1  S1  B2  S2    Bn  Sn od ,где n  0 , Bi  Si - охраняемые команды.Пока возможно выбирается охрана Bi со значением истина, и выполняется соответствующий операторSi . Как только все охраны будут иметь значение ложь, выполнение DO завершится.Выбор охраны со значением истина и выполнение соответствующего оператора называетсявыполнением шага цикла. Если истинными являются несколько охран, то выбирается любая из них.Следовательно, оператор DO эквивалентен операторуdo BB  if B1  S1  B2  S2  Bn  Sn fi od или do BB  IF od,где BB - дизъюнкция охран, IF - оператор выбора.Пример.

Алгоритм Евклида.Вариант 1.задать  N , M  ;if N  0 AND M  0  n, m : N , M ;do n  m  if n  m  n : n – m  m  n  m : m – n fi od;выдать  n fiВариант 2.задать  N , M  ;if N  0 AND M  0  n, m : N , M ;do n  m  n : n – m  m  n  m : m – n od;выдать  n fiПусть предикат H 0  R  определяет множество состояний, в которых выполнение DO завершается за0 шагов (в этом случае все охраны с самого начала ложны, после завершения R имеет значение истина):H 0  R   NOT BB AND R .Чтобы оператор цикла DO завершил работу, не производя выборки охраняемой команды,необходимо, чтобы NOT BB  T .

При этом истинность R до выполнения DO является необходимым условиемдля истинности R после выполнения DO .Определим предикат H k  R  как множество состояний, в которых выполнение DO заканчивается за kшагов при значении R истина ( H k  R  будет определяться через H k 1  R  ):H k  R   H 0  R  OR wp IF, H k 1  R  , k  0  wp  DO, R   k : k  0 : H k  R  .Это значит, что должно существовать такое значение k , что потребуется не более чем k шагов, дляобеспечения завершения работы в конечном состоянии, удовлетворяющем постусловию R .Теорема инвариантности для оператора цикла.

Пусть оператор выбора IF и предикат P таковы, чтодля всех состояний справедливо P AND BB   wp  IF, R  .Тогда для оператора цикла справедливо: P AND wp  DO, T    wp  DO, P AND NOT BB  .Предикат P , истинный перед выполнением и после выполнения каждого шага цикла, называетсяинвариантным отношением или просто инвариантом цикла.Это условие означает, что если предикат P первоначально истинен и одна из охраняемых командвыбирается для выполнения, то после ее выполнения P сохранит значение истинности. После завершенияоператора, когда ни одна из охран не является истиной, будем иметь:P AND NOT BB .Работа завершится правильно, если условие wp  DO, T  справедливо и до выполнения DO .

Так каклюбое состояние удовлетворяет T, то wp  DO, T  является слабейшим предусловием для начального состояниятакого, что запуск оператора цикла DO приведет к правильно завершаемой работе.При определении семантики полного языка программирования с использованием аксиоматическогометода для каждого вида операторов языка должны быть сформулированы аксиома или правило логическоговывода. Но определение аксиом и правил логического вывода для некоторых операторов языковпрограммирования - очень сложная задача. Трудно построить «множество основных аксиом, достаточноограниченное для того, чтобы избежать противоречий, но достаточно богатое для того, чтобы служитьотправной точкой для доказательства утверждений о программах» (Э. Дейкстра).Решением такой проблемы является разработка языка, использующего аксиоматического метода,т.

е. содержащей только те операторы, для которых могут быть написаны аксиомы или правила логическоговывода. К сожалению, подобный язык оказался бы слишком маленьким и простым что отражает нынешнеесостояние аксиоматической семантики как науки.Аксиоматическая семантика является мощным инструментом для исследований в областидоказательств правильности программ, она также создает великолепную основу для анализа программ, как вовремя их создания, так и позднее. Однако ее полезность при описании содержания языков программированиявесьма ограничена как для пользователей языка, так и для разработчиков компиляторов.2.4 Денотационная семантикаДенотационная семантика — самый строгий широко известный метод описания значения программ.Она опирается на теорию рекурсивных функций.Основной концепцией денотационной семантики является определение для каждой сущности языканекоего математического объекта и некоей функции, отображающей экземпляры этой сущности в экземплярыэтого математического объекта.

Поскольку объекты определены строго, то они представляют собой точныйсмысл соответствующих сущностей. Сама идея основана на факте существования строгих методовоперирования математическими объектами, а не конструкциями языков программирования. Сложностьиспользования этого метода заключается в создании объектов и функций отображения.

Название метода«денотационная семантика» происходит от английского слова denote (обозначать), поскольку математическийобъект обозначает смысл соответствующей синтаксической сущности.Для введения в денотационный метод мы используем очень простую языковую конструкцию —двоичные числа. Синтаксис этих чисел можно описать следующими грамматическими правилами:двоичное_число  01двоичное_число 0двоичное_число 1Для описания двоичных чисел с использованием денотационной семантики и грамматических правил,указанных выше, их фактическое значение связывается с каждым правилом, имеющим в своей правой частиодин терминальный символ.

Объектами в данном случае являются десятичные числа.В примере значащие объекты должны связываться с первыми двумя правилами. Остальные дваправила являются правилами вычислений, поскольку они объединяют терминальный символ, с которым можетассоциироваться объект, с нетерминальным, который может представлять собой некоторую конструкцию.Пусть область определения семантических значений объектов представляет собой множествонеотрицательных десятичных целых чисел Nat . Это именно те объекты, которые мы хотим связать с двоичнымичислами. Семантическая функция M b отображает синтаксические объекты в объекты множества N согласноуказанным выше правилам. Сама функция M b определяется следующим образом:M b  '0 '  0, M b  '1'   1M b  двоичное_число '0 '   2  M b  двоичное_число M b  двоичное_число '1'   2  M b  двоичное_число   1Пример.

Описание значения десятичных синтаксических литеральных констант.десятичное_число  0 1 2 3 4 5 6 7 8 | 9десятичное_число 0 1 2 3 4 5 6 7 8 | 9Денотационные отображения для этих синтаксических правил имеют следующий вид:M d  '0 '  0, M d  '1'   1,  , M d  '9 '   9M d  десятичное_число '0 '   10  M d  десятичное_числоM d  десятичное_число '1'   10  M b  десятичное_число   1M d  десятичное_число '1'   10  M b  десятичное_число   9Денотационную семантику программы можно определить в терминах изменений состояний идеальногокомпьютера. Состояния определяются в терминах значений всех переменных, объявленных в программе. Вденотационной семантике они определяются строгими математическими функциями.

Пусть состояние sпрограммы определяется следующим набором упорядоченных пар:  i1 , v1 , i2 , v2 ,  , in , vn  .Каждый параметр i является именем переменной, а соответствующие параметры v являютсятекущими значениями данных переменных. Любой из параметров v может иметь специальное значение undef,указывающее, что связанная с ним величина в данный момент не определена.Пусть VARMAP - функция двух параметров, имени переменной и состояния программы. Значениефункции VARMAP  ik , s  равно vk (значение, соответствующее параметру ik в состоянии s ).Большинство семантических функций отображения для программ и программных конструкцийотображают состояния в состояния. Эти изменения состояний используются для определения смысла программи программных конструкций.Выражения являются основой большинства языков программирования.

Пусть имеем дело только сочень простыми выражениями. Единственными операторами являются операторы + и  ; выражения могутсодержать не более одного оператора; единственными операндами являются скалярные переменные ицелочисленные литеральные константы; круглые скобки не используются; значение выражения является целымчислом. Ниже следует описание этих выражений в форме БНФ:выражение  деятичное_числопеременнаядвоичное_выражениедвоичное_выражение  выражение_слева операторвыражение_справаоператор   Единственной рассматриваемой ошибкой в выражениях является неопределенное значениепеременной. Разумеется, могут появляться и другие ошибки, но большинство из них зависят от машины.

ПустьZ - набор целых чисел, a error - ошибочное значение. Тогда множество Z  error является множествомзначений, для которых выражение может быть вычислено.Функция отображения для данного выражения E и состояния s приведена ниже. Символ обозначает равенство по определению функции.M E  выражение , s  case выражение ofдесятичное_число  M в  десятичное_число , s переменная  if VARMAP  переменная , s   undefthen errorelse VARMAP  переменная , s двоичное_выражение if ( M E  двоичное_выражение . выражение_слева , s   undef ORM E  двоичное_выражение . выражение_справа , s   undef )then errorelse if ( M E  двоичное_выражение .

оператор , s   ' ' thenM E  двоичное_выражение . выражение_слева , s  M E  двоичное_выражение . выражение_справа , s else M E  двоичное_выражение . выражение_слева , s  M E  двоичное_выражение . выражение_справа , s Оператор присваивания - это вычисление выражения плюс присваивание его значения переменной,находящейся в левой части. Его можно описать следующей функцией:M A  x  E   if M E  E , s   errorthen erroresle  i1, v1 , i2 , v2 ,, in , vn  wherefor j  1, 2,  , n, v j  VARMAP i j , s if i j  xM E  E , s  if i j  x Сравнения, выполняющиеся в строках  i j  x и i j  x  относятся к именам, а не значениям.После определения полной системы для заданного языка ее можно использовать для определениясмысла полных программ этого языка.Денотационная семантика может использоваться для разработки языка.

Операторы, описать которые спомощью денотационной семантики трудно, могут оказаться сложными и для понимания пользователямиязыка, и тогда разработчику следует подумать об альтернативной конструкции.С одной стороны, денотационные описания очень сложны, с другой - они дают великолепный методкраткого описания языка.34, 35. Линейные списки и способы их реализации, операции вставки и удаления. (35)Основные операции со списками. Однонаправленные, двунаправленные и циклические спискиЛекции: фото 30, 31, 32Связные списки представляют собой (как уже было сказано) динамические (фактически,линейные!) структуры данных (динамические цепочки звеньев), в которых однотипные элементы(звенья) каким-либо образом связаны между собой, обычно на физическом уровне.

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

Тип файла
PDF-файл
Размер
19,07 Mb
Высшее учебное заведение

Список файлов ответов (шпаргалок)

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