2. Теоретические сведения
Операторная схема – это модель алгоритма
(программы). Базовым понятием при построении
этой модели является оператор. Содержательно
оператор
–
это
часть
алгоритма,
всегда
выполняющая одни и те же вычисления над
значениями некоторых из переменных программы –
аргументов оператора. При этом вырабатываются
значения некоторых других (частично, возможно, тех
же) переменных – результатов оператора. В
зависимости от значений аргументов после
выполнения этих вычислений происходит переход от
одного оператора (предшественника) к другому
(преемнику). При этом не принимается во внимание
существо операций, выполняемых оператором.
3. Теоретические сведения
Пример 1. Построить операторную схему алгоритма
отыскания минимума m функции f для целых значений
аргумента от 1 до n.
1. Выполнить начальные присваивания: m = f(1), i = 2.
2. Если i > n, то перейти к шагу 7.
3. Выполнить присваивание u = f(i).
4. Если u ≥ m, то перейти к шагу 6.
5. Выполнить присваивание m = u.
6. Выполнить присваивание i = i + 1 и перейти к шагу 2.
7. Вывести на экран m.
Обозначим каждый из приведенных операторов 1 – 7
идентификаторами S1, S2, S3, S4, S5, S6, S7. Изобразим
каждый оператор в виде прямоугольника. Переменные,
которые использует и вырабатывает оператор, представим
в виде кружков с исходящими и входящими стрелками
соответственно. Переход от оператора к оператору
изобразим стрелкой (дугой) от одного прямоугольника к
другому.
5. Теоретические сведения
Входом операторной схемы называют оператор Sin со
свойствами:
1) Sin не имеет аргументов,
2) Sin не имеет предшественников.
Выход операторной схемы – это оператор Sout со
свойствами:
1) Sin не имеет результатов,
2) Sin не имеет преемников.
Граф переходов также должен удовлетворять условию
связности: любая вершина (оператор) должна быть
достижима из входа, т.е. в алгоритме, представленном
схемой не должно быть заведомо неисполняемых
операторов, а выход должен быть достижим из любой
вершины, т.е. в алгоритме не должно быть явных
тупиков.
6. Теоретические сведения
Пример 2. Построить операторную схему алгоритма слияния
упорядоченных массивов a и b из m и n элементов
соответственно.
Составим алгоритм слияния двух массивов.
1. Ввести m, n, a и b.
2. Присвоить переменным i, j, k значение 1.
3. Если i > m, то перейти к шагу 6.
4. Если j > n, то перейти к шагу 7.
5. Если a[i] > b[j], то перейти к шагу 6, иначе перейти к шагу 7.
6. Выполнить присваивания c[k] = b[j], j = j + 1 и перейти к
шагу 8.
7. Выполнить присваивания c[k] = a[i], i = i + 1.
8. Выполнить присваивание k = k + 1.
9. Если k ≤ m + n, то перейти к шагу 3.
10.Вывод c.
Обозначим строки алгоритма 1 – 10 как операторы S1, S2, S3,
S4, S5, S6, S7, S8, S9, S10.
8. Теоретические сведения
В теории операторных схем рассматриваются следующие
основные проблемы: оценка трудоемкости алгоритма;
методы
исследования
свойств
алгоритма
(завершаемость,
связь
между
аргументами
и
результатами схемы в целом и т.п.); экономия памяти
(преобразования схемы, связанные с переобозначением
переменных); эквивалентность операторных схем при
преобразованиях,
затрагивающих
отношение
T
(меняющих порядок исполнения операторов).
9. Контрольные вопросы
1.
2.
3.
4.
5.
6.
Операторная схема.
Оператор.
Аргументы оператора.
Результаты оператора.
Граф переходов.
Теоретико-множественное описание операторной
схемы.
7. Вход операторной схемы.
8. Выход операторной схемы.
9. Условие связности графа переходов.
10.Основные проблемы, рассматриваемые в теории
операторных схем.
10. Указания по выполнению заданий
1.
2.
3.
4.
Получить задание
Разработать алгоритм решения задачи.
Построить операторную схему.
Подготовить отчет по выполнению задания. Отчет
должен включать задание и описание этапов
выполнения задания.
5. Ответить на вопросы по выполнению задания и
контрольные вопросы
11. Задания
1. Определить длину наибольшей невозрастающей подпоследовательности
последовательности чисел, заканчивающейся 0.
2. Определить длину наименьшей невозрастающей подпоследовательности
последовательности из 25 чисел.
3. Определить длину наибольшей неубывающей подпоследовательности
последовательности из 25 чисел.
4. Отсортировать по убыванию массив из 10 положительных чисел методом
последовательного нахождения максимума.
5. Отсортировать по возрастанию массив из 10 целых чисел, не
превосходящих по абсолютному значению 100, методом
последовательного нахождения минимума.
6. Отсортировать массив из 10 чисел методом пузырька.
7. Определить наибольшую десятичную цифру целого числа.
8. Определить число десятичных цифр целого числа.
9. Переставить элементы массива из 20 чисел в обратном порядке.
10. Найти количество различных чисел среди элементов целочисленного
массива из 25 элементов.
11. Выполнить умножение многочленов, степень, которых не выше 10, а
целочисленные коэффициенты записаны в двух массивах.
12. Выполнить двоичный поиск в массиве из 30 чисел заданного числа.
13. Найти наибольший общий делитель двух натуральных чисел, используя
алгоритм Евклида.