ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ РОССИЙСКОЙ ФЕДЕРАЦИИ Федеральное государственное образовательное учреждение высшего профессионального образования «ЮЖНЫЙ ФЕДЕРАЛЬНЫЙ УНИВЕРСИТЕТ» Факультет математики, механики и компьютерных наук Рассмотрено и рекомендовано на заседании кафедры прикладной математики и программирования РГУ Протокол №1 от 3 сентября 2009 г. Зав. кафедрой ___________ Угольницкий Г.А. УТВЕРЖДАЮ Декан мехмата _____________ Карякин М.И. «_____» ________________ 2009 г. УЧЕБНО-МЕТОДИЧЕСКИЙ КОМПЛЕКС учебной дисциплины «ВЕРИФИКАЦИЯ ПРОГРАММ» федерального компонента цикла СД по специальности 010501 ПРИКЛАДНАЯ МАТЕМАТИКА И ИНФОРМАТИКА федерального компонента цикла СД.ДС по специальности 230201 ИНФОРМАЦИОННЫЕ СИСТЕМЫ И ТЕХНОЛОГИИ для очно-заочного(вечернего) отделения Составитель: ст. преп. Невская Е.С. Ростов-на-Дону 2009 Программа дисциплины “Верификация программ” по специальности Прикладная математика и информатика, Информационные системы и технологии Число часов: Всего: 10-ый семестр 68 Аудиторно: лекции 34 лабораторные занятия 34 Самостоятельная работа 17 Виды отчетности: зачет, экзамен Цели и задачи курса Дисциплина “Верификация программ” включает два основных раздела: спецификация программ и верификация программ. Оба раздела используют математическую логику. Курс преследует цель показать студентам, что программирование – это наука, искусство и ремесло. Программу необходимо строить с одновременным доказательством ее правильности. На основе предусловий и постусловий определяется логическая семантика простого языка программирования (языка программирования Эдсгера Дейкстры). Задачей спецкурса является обучение студентов методам построения правильных программ с использованием правил Э. Дейкстры. Выработать у студентов навыки аналитической проверки программы. Требования к слушателям К моменту изучения дисциплины “Верификация программ” студентам известны такие методы программирования, как программирование сверху вниз, модульное программирование. Кроме того, студенты умеют программировать, используя язык Pascal. При изучении дисциплины “Верификация программ” используется язык Pascal. Выбор языка определяется тем, что алгоритмы, представленные на языке Pascal, являются прозрачными, что важно для дисциплины “Верификация программ”. 2 Дисциплина “Верификация программ” использует элементы математической логики. Студенты слушали этот курс. Исчисление высказываний и предикатов является средством практических рассуждений о программах. Учебно-тематический план Лекционные занятия Часы № Тема лекции С.р . Модуль 1. Спецификация программ 1 2 Абстракция и спецификация. Спецификация процедурной абстракции. Спецификация для абстракции 8 данных. Примеры: спецификация полинома, спецификация стека, спецификация очереди, спецификация дерева. 4 Реализация абстрактных типов данных. 4 2 Модуль 2. Метод верификации К.Хоара 3 4 История методологии программирования. Методы доказательства правильности программ. Использо2 вание утверждений в программах. Правила верификации К. Хоара. 2 1 1 Модуль 3. Метод верификации Дейкстры 5 6 7 Преобразователь предикатов (WP) Э. Дейкстры. Определение основных операторов языка программи2 рования Э. Дейкстры в терминах WP. Основная теорема для оператора выбора. Основная теорема для оператора цикла. Инвариант цикла. Тео4 рема об ограничивающей функции. Принципы построения цикла. Способы построения инварианта (способы 1, 2, 3, 4) 4 3 2 1 2 Модуль 4. Приемы построения программ 8 9 Использование циклов вместо рекурсии (сведение к более простым задачам, разделяй и властвуй). 4 Приемы улучшения программ с точки зрения эффективности (вынесение утверждений из цикла). Задача 4 Хемминга. Разложение величины в сумму квадратов. 2 2 Программа лабораторных занятий в компьютерном классе Часы № Тема 1 Принципы построения цикла ( [1], упр. 15.2. №1 стр. Лаб. занятия 194). 2 2 Построение инварианта. Способ 1 ([1], упр. 16.2 №1 стр. 202). 3 2 Построение инварианта. Способ 2 ([1], упр. 16.3 №4 стр. 208). 2 4 Построение инварианта. Способ 3 ([1], стр. 209-213). 4 5 Построение инварианта. Способ 4 ([1], упр. 16.5 №1, 2 стр. 217). 6 2 Использование циклов вместо рекурсии ([1], упр. 18.1 №2 стр. 228, [3], стр. 5 – 8). 7 2 Разделяй и властвуй ([1], упр. 18.2 №2 стр. 232, [3], стр. 9 – 23). 8 9 2 Разделяй и властвуй (сведение к более простым задачам) ([3], стр. 23 – 33). 4 Обход двоичных деревьев ([1], упр. 18.3 №1 стр.239). 4 4 10 Соображения эффективности ([1], упр. 19.2 №1 стр. 249, способ 2). 2 11 Построение программ ([1], упр. 20.7 стр. 266). 4 12 Построение программ ([1], упр. 20.8 стр. 266). 4 Литература к лабораторным занятиям 1. Грис Д. Наука программирования. -М.: Мир, 1984. – 416 с. 2. Невская Е.С. Приемы построения программ. Часть1. Методические указания по курсу « Информатика». УПЛ РГУ 2009. –39 с. 3. Невская Е.С. Приемы построения программ. Часть 2. Методические указания по курсу « Информатика». УПЛ РГУ 2009. –34 с. РАБОЧАЯ ПРОГРАММА Модуль 1. Спецификация программ Лекция 1. Абстракция и спецификация. Абстракция и декомпозиция. Абстракция ‒ это инструмент познавательной деятельности человека, помогающий лучше отразить суть дела и приводящий к абстрактным понятиям. Абстракция ‒ способ декомпози- ции. Процесс абстракции рассматривается как некоторое обобщение. Виды абстракций. Процедурная абстракция. Определение спецификации. Основные свойства спецификации: точность, понятность и полнота. Понятийные средства спецификации. Примеры. Лекция 2. Спецификация процедурной абстракции. Абстракции через параметризацию и через спецификацию – мощное средство создания программ. Параметризация делает возможным обобщить процедуру. Спецификация определяет "поведение", т.е. "то, что делается". 5 Процедурная абстракция определяется с помощью спецификаций, которые описываются на языке спецификаций. Определение языка спецификаций для процедурной абстракции. Примеры. Лекция 3. Абстракция данных. Абстрактный объект ‒ это то, что является предметом математического рассуждения. Абстрактный тип данных в языках программирования – это определение некоторого понятия в виде класса объектов с некоторыми свойствами и операциями. Средства абстракции в языках программирования. Особенности средства абстракции данных: инкапсуляция, защита инкапсулированной информации. Лекция 4. Спецификация для абстракции данных. Язык спецификации для абстракции данных (синтаксис и семантика). Определение терминальных символов языка. Определение основных средств логики первого порядка. Пример: спецификация стека. Лекция 5. Примеры: спецификация полинома, спецификация очереди, спецификация дерева. Дать неформальное определение каждого абстрактного типа данных. Описать абстрактный тип данных на языке спецификаций, используя формализованные средства Лекция 6. Реализация абстрактных типов данных. Реализация абстрактного типа данных «Стек» с помощью средств языка Pascal. Первый способ – использовать статический массив. Второй способ – использовать динамическую организацию памяти. 6 Задания 1. Процедурная спецификация задачи «Линейный поиск в упорядоченном массиве». 2. Процедурная спецификация задачи «Удаление из массива всех вхождений заданного значения». 3. Процедурная спецификация задачи «Удаление дублированных элементов в последовательности». 4. Спецификация абстрактного типа данных «Очередь». 5. Реализация абстрактного типа данных «Очередь» с помощью средств языка Pascal. Список контрольных вопросов 1. 2. 3. 4. 5. 6. Определение спецификации. Определение процедурной спецификации. Абстракция данных. Определение спецификации для абстракции данных. Определение спецификации стека. Перечислить средства реализация абстрактного типа данных «Стек» с использованием языка Pascal. Литература к модулю 1 1. Невская Е.С., Чекулаева А.А., Чердынцева М.И. Искусство программирования. –М.: -Наука. 2001. – 207 с. (Глава 4, стр. 155 – 173). 2. АгафоновВ.Н. Спецификация программ. -Новосибирск: Наука, 1990. – 221 с. (Глава 1, стр. 9 – 24, глава 2, стр.25 – 33). 3. Лисков Б., Гатэг Дж. Использование абстракций и спецификаций при разработке программ. -М.: Мир, 1989. – 424 с. (Глава 3, 4, стр. 47 – 105). 7 4. Невская Е.С. Приемы построения программ. Часть 2. Методические указания по курсу « Информатика». УПЛ РГУ 2009. –34 с. (Стр. 13 – 14,18 – 19). Модуль 2 Метод верификации К.Хоара Лекция 7. История методологии программирования. Методы доказательства правильности программ: метод Хоара и метод Э. Дейкстры. Выделим три основных аспекта программирования, где используются математические модели программ: разработка логических основ составления и проверки программ; задачи обоснования алгоритмов трансляции; методы параллельного программирования. А.П. Ершов ввел термин "теоретическое программирование" в качестве названия математической дисциплины, изучающей синтаксические и семантические свойства программ, их структуру, процесс их составления, преобразования и выполнения. Доклад Э. Дейкстры "Некоторые соображения о более развитом программировании". Лекция 8. Использование утверждений в программах. Правила верификации К. Хоара. Основой для исчисления выводов программ служат правила К. Хоара (правила верификации) для описания семантики программных конструкций, представленных на языке логики первого порядка. Определение правил (аксиом) К. Хоара. Пример. Определить частное q и остаток r от деления x на y. Пример. Вычислить z = ab. Задания 1. В задаче «Линейный поиск в упорядоченном массиве» сформулировать утверждения для каждой программной конструкции. 8 2. В задаче «Удаление из массива всех вхождений заданного значения» сформулировать утверждения для каждой программной конструкции. Список контрольных вопросов 1. Сформулировать методы доказательства правильности программ. 2. Сформулировать правило верификации К. Хоара для условного оператора. 3. Сформулировать правило верификации К. Хоара для каждого из типов оператора цикла . Литература к модулю 2 1. Невская Е.С., Чекулаева А.А., Чердынцева М.И. Искусство программирования. –М.: -Наука. 2001. – 207 с. (Глава 3, стр. 109 – 125). 2. Грис Д. Наука программирования. -М.: Мир, 1984. – 416 с. 3. Турский В. Методология программирования. -М.: Мир, 1981. Модуль 3. Метод верификации Э. Дейкстры Лекция 9. Преобразователь предикатов (WP) Дейкстры. Свойства преобразователя предикатов. Э. Дейкстра рассматривает слабейшие предусловия wp(S, R), где wp определяется начальными буквами английских слов weakest (слабей- ший) и pre-condition (предусловие). wp(S, R) - предусловия, необходимые и достаточные для гарантии истинности { Q } S { R }, где Q, R − предикаты, S − программа (оператор или последовательность операторов). 9 Для фиксированного оператора S такое правило, которое по заданному предикату R вырабатывает предикат wp(S,R), называется "преобразователем предикатов": {wp(S, R)} S {R} Достаточно более сильного условия Q, т.е. условия, для которого можно доказать, что утверждение Q => wp(S, R) справедливо для всех состояний. Свойства wp. Лекция 10. Определение основных операторов языка программирования Э. Дейкстры в терминах wp. Определим слабейшее предусловие для основных операторов: оператора присваивания (кратного присваивания), составного оператора, оператора выбора и оператора цикла. Основные понятия: охрана, охраняемая команда (охраняемые команды). Примеры. Лекция 11. Основная теорема для оператора выбора. Основная теорема для оператора цикла. Инвариант цикла. Теорема об ограничивающей функции. Теорема. Если оператор выбора IF и предикаты Q и R таковы, что одновременно для всех состояний справедливы Q => BB и ∀ i: 1 <= i <= n : ( Q and Bi ) => wp(Si, R), то также для всех состояний справедливо Q => wp( IF, R). Теорема. Пусть оператор выбора IF и предикат P таковы, что для всех состояний справедливо ( P and BB ) => wp(IF, R). Тогда для оператора цикла справедливо: ( P and wp(DO, T)) => wp(DO, P and not BB). 10 Пример. Определить НОД(m,n). Пример. Линейный поиск в упорядоченном массиве. Лекция 12. Принципы построения цикла. Список условий для проверки правильности построения цикла. Первый важный принцип построения цикла заключается в том, что охрана ищется до поиска команды. При определении охраны B нужно использовать тот факт, что она должна удовлетворять условию: P and not B => R. Второй важный принцип при построении цикла - это завершение цикла. Тело цикла следует строить таким образом, чтобы оно уменьшало ограничивающую функцию при сохранении инварианта P. Пример. Поиск в двумерном массиве b[1:n,1:m](n>0, m>0). Лекция 13. Способы построения инварианта. Способ 1: устранение конъюнктивного члена. Способ 2: замена константы переменной. Пример. Пусть дан упорядоченный по возрастанию элементов массив b[1:n] (n>=1). Требуется определить максимальную длину площадки массива. Лекция 14. Способы построения инварианта. Способ 3. Введение новой переменной (двоичный поиск). Способ 4. Расширение области значений переменной. Пример. Даны три списка фамилий людей в лексикографическом порядке. Известно, что, по крайней мере, одно лицо есть во всех трех списках. Определить первое такое лицо. Задания 1. Пусть x=2, y=3. Определить значения x, y после выполнения кратного присваивания: x, y:=y, x. 11 2. Пусть x=2, y=3. Определить значения x, y после выполнения кратного присваивания: x, y:=y+x, x. 3. Записать на языке Э. Дейкстры алгоритм определения z=abs(x). 4. Записать на языке Э. Дейкстры алгоритм определения Nod(a, b) (с одной охраняемой командой). 5. Записать на языке Э. Дейкстры алгоритм вычисления z=a*b без использования операции умножения. 6. Алгоритм задачи «Суммирование элементов массива b[0:n-1]» имеет вид i,s:=0,0; do i<>n -> i,s:=i+1,s+b[i] od Запишите алгоритм без кратных присваиваний. 7. Напишите программу, которая упорядочивает целые переменные q0, q1, q2, q3, то есть в момент завершения должно быть истинно q0<= q1<= q2<= q3. Список контрольных вопросов 1. Определение преобразователя предикатов (WP) Э. Дейкстры. 2. Определение основных операторов языка программирования в терминах WP. 3. Сформулировать основную теорему для оператора выбора. 4. Сформулировать основную теорему для оператора цикла. 5. Сформулировать два основных принципа построения цикла. 6. Сформулировать способы построения инварианта. Литература к модулю 3 1. Невская Е.С., Чекулаева А.А., Чердынцева М.И. Искусство программирования. –М.: -Наука. 2001. – 207 с. (Глава 3, стр. 125 – 154). 2. Грис Д. Наука программирования. -М.: Мир, 1984. – 416 с. (Главы 7 – 11, стр.112 – 153. Главы 14 – 16, стр. 176 – 218). 12 Модуль 4. Приемы построения программ Лекция 15. Использование циклов вместо рекурсии (сведение к более простым задачам). Пример. Перестановка сегментов массива разной длины. Лекция 16. Использование циклов вместо рекурсии (разделяй и властвуй). Пример. Построение программы QuickSort (быстрая сортировка). Лекция 17. Приемы улучшения программ с точки зрения эффективности (вынесение утверждений из цикла). Пример. Вычисление значения многочлена при заданном значении. Пример. Задача Хемминга. Лекция 18. Приемы улучшения программ с точки зрения эффективности (вынесение утверждений из цикла). Пример. Разложение величины в сумму квадратов. Задания 1. Задача «Удаление дублированных элементов в одномерном массиве». Сформулировать алгоритм, используя метод сведения к более простым задачам. 2. Задача вычисления многочлена. Сформулировать рекурсивный алгоритм. Сформулировать эффективный алгоритм, используя метод вынесения утверждений из цикла. Список контрольных вопросов 1. Метод построения программ: сведение к более простым программам. 2. Метод построения программ: разделяй и властвуй. 3. Вынесение утверждений из цикла (сформулировать утверждение для задачи Хемминга). 13 4. Вынесение утверждений из цикла (сформулировать утверждение для задачи разложение величины в сумму квадратов). Литература к модулю 4 1. Грис Д. Наука программирования. –М.: Мир, 1984. – 416 с. (Главы 18 – 20, стр.224 – 268). 2. Невская Е.С. Приемы построения программ. Часть 1. Методические указания по курсу « Информатика». УПЛ РГУ, 2009. –39 с. 3. Невская Е.С. Приемы построения программ. Часть 2. Методические указания по курсу « Информатика». УПЛ РГУ, 2009. –34 с. Дополнительная литература к дисциплине 1. Замулин А.В. Типы данных в языках программирования и базах данных. – Новосибирск: Наука, 1987. 2 Турский В. Методология программирования. – М.: Мир, 1981. 3. Дейкстра Э. Дисциплина программирования. – М.: Мир, 1978. Список вопросов Определение спецификации. Определение процедурной спецификации. Абстракция данных. Определение спецификации для абстракции данных. Определение спецификации стека. Реализация абстрактного типа данных стек. Сформулировать методы доказательства правильности программ. Использование утверждений в программах. 8. Сформулировать правила верификации К. Хоара 9. Определение преобразователя предикатов (WP) Э. Дейкстры. 10. Определение основных операторов языка программирования в терминах WP. 11. Сформулировать основную теорему для оператора выбора. 12. Сформулировать основную теорему для оператора цикла. 13. Сформулировать два основных принципа построения цикла. 14. Сформулировать способы построения инварианта. 1. 2. 3. 4. 5. 6. 7. 14 15. Метод построения программ: сведение к более простым программам. 16. Метод построения программ: разделяй и властвуй. 17. Вынесение утверждений из цикла (сформулировать утверждение для задачи Хемминга). 18. Вынесение утверждений из цикла (сформулировать утверждение для задачи разложение величины в сумму квадратов). Список задач Линейный поиск в одномерном массиве, Поиск с барьером. Поиск в матрице. Поиск в упорядоченной матрице. Поиск в трехмерном массиве. Линейный поиск в упорядоченном массиве. Бинарный поиск. Сжатие данных: удаление дублированных элементов в одномерном массиве. 9. Сжатие данных: удаление дублированных элементов в файле. 10.Построение отсортированных данных (вставка в одномерный массив). 11. Построение не повторяющихся данных (одномерный массив). 12. Полином - схема Горнера, рекурсивный алгоритм. 13. Слияние упорядоченных массивов. 14. Задача. Даны два упорядоченных в лексикографическом порядке массива. Найти количество элементов, принадлежащих обоим массивам. 15. Поиск площадки максимальной длины в упорядоченном массиве. 16. Перестановка сегментов равной длины в одномерном массиве. 17. Перестановка сегментов разной длины в одномерном массиве. 18. Обход двоичных деревьев. 1. 2. 3. 4. 5. 6. 7. 8. Составитель программы: ст.препод. каф.ПМиП Невская Е.С. Утверждаю Зав. Каф. ПМиП Проф. д.ф.-м.н. Угольницкий Г.А. 15 Федеральное агентство по образованию Российской Федерации Государственное образовательное учреждение высшего профессионального образования «РОСТОВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ» Механико-математический факультет Кафедра Прикладной математики и программирования Экзаменационный билет 5 по спецкурсу “Верификация программ” 1.Спецификация понятия стек. Использование стека. 2. Сжатие данных: удаление дублированных элементов в одномерном массиве. Зав. кафедрой Экзаменатор Дата утверждения Федеральное агентство по образованию Российской Федерации Государственное образовательное учреждение высшего профессионального образования «РОСТОВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ» Механико-математический факультет Кафедра Прикладной математики и программирования Экзаменационный билет 12 по спецкурсу “Верификация программ” 1.Определение оператора цикла в терминах WP. 2. Поиск площадки максимальной длины в упорядоченном массиве. Зав. кафедрой Экзаменатор Дата утверждения 16 Федеральное агентство по образованию Российской Федерации Государственное образовательное учреждение высшего профессионального образования «РОСТОВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ» Механико-математический факультет Кафедра Прикладной математики и программирования Экзаменационный билет 1 по спецкурсу “Верификация программ” 1. Понятие спецификации. Привести примеры. 2. Поиск в матрице. Зав. кафедрой Экзаменатор Дата утверждения Федеральное агентство по образованию Российской Федерации Государственное образовательное учреждение высшего профессионального образования «РОСТОВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ» Механико-математический факультет Кафедра Прикладной математики и программирования Экзаменационный билет 2 по спецкурсу “Верификация программ” 1. Спецификация процедурной абстракции. 2. Алгоритмы поиска: линейный поиск в одномерном массиве, поиск с барьером. Зав. кафедрой Экзаменатор Дата утверждения 17 Федеральное агентство по образованию Российской Федерации Государственное образовательное учреждение высшего профессионального образования «РОСТОВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ» Механико-математический факультет Кафедра Прикладной математики и программирования Экзаменационный билет 3 по спецкурсу “Верификация программ” 1.Спецификация для абстракции данных. 2.Поиск в упорядоченном массиве. Зав. кафедрой Экзаменатор Дата утверждения Федеральное агентство по образованию Российской Федерации Государственное образовательное учреждение высшего профессионального образования «РОСТОВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ» Механико-математический факультет Кафедра Прикладной математики и программирования Экзаменационный билет 4 по спецкурсу “Верификация программ” 1.Спецификация набора целых чисел. 2.Бинарный поиск Зав. кафедрой Экзаменатор Дата утверждения 18 Федеральное агентство по образованию Российской Федерации Государственное образовательное учреждение высшего профессионального образования «РОСТОВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ» Механико-математический факультет Кафедра Прикладной математики и программирования Экзаменационный билет 5 по спецкурсу “Верификация программ” 1.Спецификация понятия стек. Использование стека. 2. Сжатие данных: удаление дублированных элементов в одномерном массиве. Зав. кафедрой Экзаменатор Дата утверждения Федеральное агентство по образованию Российской Федерации Государственное образовательное учреждение высшего профессионального образования «РОСТОВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ» Механико-математический факультет Кафедра Прикладной математики и программирования Экзаменационный билет 6 по спецкурсу “Верификация программ” 1.Спецификация понятия очередь. 2.Построение отсортированных данных. Зав. кафедрой Экзаменатор Дата утверждения 19 Федеральное агентство по образованию Российской Федерации Государственное образовательное учреждение высшего профессионального образования «РОСТОВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ» Механико-математический факультет Кафедра Прикладной математики и программирования Экзаменационный билет 7 по спецкурсу “Верификация программ” 1. Спецификация понятия многочлен. 2. Сжатие данных ( удаление дублированных элементов в файле). Зав. кафедрой Экзаменатор Дата утверждения Федеральное агентство по образованию Российской Федерации Государственное образовательное учреждение высшего профессионального образования «РОСТОВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ» Механико-математический факультет Кафедра Прикладной математики и программирования Экзаменационный билет 8 по спецкурсу “Верификация программ” 1.Изменение представления данных. 2.Построение отсортированных данных Зав. кафедрой Дата утверждения Федеральное агентство по образованию 20 Экзаменатор Российской Федерации Государственное образовательное учреждение высшего профессионального образования «РОСТОВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ» Механико-математический факультет Кафедра Прикладной математики и программирования Экзаменационный билет 9 по спецкурсу “Верификация программ” 1.Обход двоичных деревьев.. 2. Сжатие данных: удаление дублированных элементов в одномерном массиве. Зав. кафедрой Экзаменатор Дата утверждения Федеральное агентство по образованию Российской Федерации Государственное образовательное учреждение высшего профессионального образования «РОСТОВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ» Механико-математический факультет Кафедра Прикладной математики и программирования Экзаменационный билет 9 по спецкурсу “Верификация программ” 1. Обход двоичных деревьев. 2. Понятие полином (спецификация и реализация). Зав. кафедрой Федеральное агентство по образованию Российской Федерации 21 Экзаменатор Государственное образовательное учреждение высшего профессионального образования «РОСТОВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ» Механико-математический факультет Кафедра Прикладной математики и программирования Экзаменационный билет 10 по спецкурсу “Верификация программ” 1.Преобразователь предикатов (WP). 2. Сжатие данных: удаление дублированных элементов в одномерном массиве. Зав. кафедрой Экзаменатор Дата утверждения Федеральное агентство по образованию Российской Федерации Государственное образовательное учреждение высшего профессионального образования «РОСТОВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ» Механико-математический факультет Кафедра Прикладной математики и программирования Экзаменационный билет 11 по спецкурсу “Верификация программ” 1.Определение основных операторов языка программирования в терминах WP . 2. Слияние упорядоченных массивов. Зав. кафедрой Экзаменатор 22 Федеральное агентство по образованию Российской Федерации Государственное образовательное учреждение высшего профессионального образования «РОСТОВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ» Механико-математический факультет Кафедра Прикладной математики и программирования Экзаменационный билет 12 по спецкурсу “Верификация программ” 1.Определение оператора цикла в терминах WP. 2. Поиск площадки максимальной длины в упорядоченном массиве. Зав. кафедрой Экзаменатор Дата утверждения Федеральное агентство по образованию Российской Федерации Государственное образовательное учреждение высшего профессионального образования «РОСТОВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ» Механико-математический факультет Кафедра Прикладной математики и программирования Экзаменационный билет 13 по спецкурсу “Верификация программ” 1. Принципы построения цикла. 2. Определение длины максимальной восходящей подпоследовательности. Зав. кафедрой Экзаменатор Дата утверждения Федеральное агентство по образованию 23 Российской Федерации Государственное образовательное учреждение высшего профессионального образования «РОСТОВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ» Механико-математический факультет Кафедра Прикладной математики и программирования Экзаменационный билет 14 по спецкурсу “Верификация программ” 1.Построение инварианта способом устранения конъюнктивного члена. 2. Задача. Найти количество элементов, принадлежащих двум упорядоченным по неубыванию массивам. Зав. кафедрой Экзаменатор Дата утверждения Федеральное агентство по образованию Российской Федерации Государственное образовательное учреждение высшего профессионального образования «РОСТОВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ» Механико-математический факультет Кафедра Прикладной математики и программирования Экзаменационный билет 15 по спецкурсу “Верификация программ” 1.Построение инварианта способом замены константы переменной. 2. Сжатие данных: удаление дублированных элементов в одномерном массиве. Зав. кафедрой Экзаменатор Федеральное агентство по образованию 24 Российской Федерации Государственное образовательное учреждение высшего профессионального образования «РОСТОВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ» Механико-математический факультет Кафедра Прикладной математики и программирования Экзаменационный билет 16 по спецкурсу “Верификация программ” 1. .Построение инварианта способом введения новой переменной.. 2. Сжатие данных: удаление дублированных элементов в одномерном массиве. Зав. кафедрой Экзаменатор Дата утверждения Федеральное агентство по образованию Российской Федерации Государственное образовательное учреждение высшего профессионального образования «РОСТОВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ» Механико-математический факультет Кафедра Прикладной математики и программирования Экзаменационный билет 17 по спецкурсу “Верификация программ” 1.Способ построения инварианта – расширение области значений переменной. 2. Сжатие данных: удаление дублированных элементов в файле. Зав. кафедрой Экзаменатор Дата утверждения 25