Условные обозначения блоков схем алгоритмов
Наименование | 0бозначенне | Функции |
Процесс | Выполнение операции или группы операции, в результате которых изменяется значение, форма представления или расположение данных. | |
Ввод-вывод | Преобразование данных в форму, пригодную для обработки (ввод) или отображения результатов обработки (вывод). | |
Решение | Выбор направления выполнения алгоритма в зависимости от некоторых переменных условии. | |
Предопределенный процесс | Использование ранее созданных и отдельно написанных программ (подпрограмм). | |
Документ | Вывод данных на бумажный носитель. | |
Магнитный диск | Ввод-вывод данных, носителем которых служит магнитный диск. | |
Пуск-останов | Начало, конец, прерывание процесса обработки данных. | |
Соединитель | Указание связи между прерванными линиями, соединяющими блоки. | |
Межстраничный соединитель | Указание связи между прерванными линиями, соединяющими блоки, расположенные на разных листах. | |
Комментарий | Связь между элементом схемы и пояснением. |
Ход работы и задания:
Составить алгоритм решения следующих задач двумя способами: словесно-формульным и с помощью блок-схемы:
1. Дана длина ребра куба. Составить алгоритм нахождения площади грани, площади полной поверхности и объема этого куба.
2. Составьте алгоритм для нахождения расстояния между пешеходами, идущими навстречу друг другу, начавшими путь одновременно.
L0 - начальное расстояние,
V1 - скорость первого пешехода,
V2 - скорость второго пешехода,
T - время движения,
L1 - текущее расстояние.
3. Составьте алгоритм нахождения максимального числа из двух заданных.
4. Написать алгоритм, имитирующий работу микрокалькулятора (выполнение 4-х арифметических действий).
5. Составьте алгоритм нахождения площади треугольников, заданных сторонами a, b, (c+k), где k=1,2,...,15.
6. Составьте алгоритм вычисления S=m(m+1)(m+2)...(m+n), где m, n- заданные натуральные числа.
Контрольные вопросы и задания:
1) Перечислите способы составления алгоритмов.
2) Алгоритмы какой структуры вы знаете?
3) Какую структуру имеет алгоритм, составленный с помощью словесного способа?
4) Какую структуру имеет линейный алгоритм, составленный с помощью блок-схемы?
5) Какую структуру имеет алгоритм ветвления, составленный с помощью блок-схемы?
Рекомендуемая литература: 1.3, 1.4, 1.5.
Практическое занятие №2 "Арифметизация машин Тьюринга и частичная рекурсивность функций, вычислимых по Тьюрингу. Нормальные алгоритмы. Нумерация алгоритмов различными методами"
Цель: Закрепить знания применения арифметизации машин Тьюринга и частичной рекурсивности функций, вычисляемых по Тьюрингу.
Вид работы: фронтальный.
Время выполнения: 6 часов.
Теоретический материал:
Машина Тьюринга состоит из следующих частей:
1. Информационной ленты, представляющей бесконечную память машины. Это бесконечная лента, разделенная на ячейки. В каждой ячейке можно поместить лишь один символ из возможного их множества S={S1,S2,….,Sm},которое составляет внешний алфавит МТ. В этом алфавите один из символов (пусть это будет S1) соответствует пустому символу.
2. Считывающей головки – чувствительного специального элемента, способного обозревать содержимое ячеек. Лента может перемещаться вдоль головки так, что в каждый момент времени головка обозревает одну ячейку.
3. Управляющего устройства (УУ), которое в каждый момент времени находится в некотором состоянии. Число состояний конечно. Обозначим множество состояний как {q1,q2,…,qn}. Среди состояний одно соответствует заключительному, при котором МТ останавливается. УУ связано со считывающей головкой.
Кроме того, УУ вырабатывает три команды на перемещение ленты: П, Л, Н, где
П – переместиться на соседнюю справа ячейку;
Л – переместиться соседнюю слева ячейку;
Н – продолжать обозревать ту же ячейку.
Совокупность символов {q1,q2,…,qn} и {П,Л,Н} образуют внутренний алфавит МТ.
Работа машины происходит в дискретном времени. В начальный момент времени в ограниченный участок ленты записано слово в алфавите S, представляющее исходное условие задачи. В остальных ячейках предполагается записанным пустой символ. Управляющее устройство находится в начальном состоянии q1. На каждом шаге работы МТ обозревает на ленте символ Sk и в зависимости от него и от состояния qi, переходит в состояние qj, заменяет Sk на символ Sl и передвигает ленту (либо нет) на одну ячейку.
Каждая элементарная операция имеет вид
qiSk ® qjSl П(Л,Н).
Множество элементарных операций упорядочено и образует абстрактную программу, которая представляет алгоритм.
Считывающая головка и управляющее устройство образуют логический блок, который представляет собой (2,3)-полюсник.
Структура МТ имеет следующий вид:
S1 | S2 | … | Sk | … | Sm |
Q - ячейка хранит символ состояния, а Р - ячейка – символ сдвига. В них происходит задержка данных символов до начала следующего такта.
В качестве начальной информации на ленту можно записать любую конечную последовательность символов (входное слово) U внешнего алфавита. В начале работы алгоритма устройство управления находится в начальном состоянии, головка обозревает первый слева непустой символ входного слова U. Если после конечного числа тактов МТ останавливается, переходя в заключительное состояние, а на ленте оказывается информация B, то говорят, что машина применима к последовательности U и перерабатывает ее в последовательность B.
Если остановка и сигнал об остановке никогда не поступают, то говорят, что МТ не применима к последовательности U.
Рассмотрим функционирование МТ на примере сложения двух чисел, которые будем изображать в виде набора единиц.
Внешний алфавит будет состоять из символов: {1, +, Ù}, где Ù – пустой символ.
Внутренний алфавит будет состоять из четырех символов {q1, q2, q3, !}, где символ q1 означает начальное состояние, а ! – заключительное состояние.
Пусть на ленте записана начальная информация:
+ |
МТ должна ее переработать в результирующую информацию:
Абстрактная программа, реализующий операцию сложения, будет иметь вид:
1q1 →Ùq3П 1q3→1q3П +q3→+q3П | Ùq3→1q2H +q2 →+q2Л 1q2→1q2Л Ùq2 →Ùq1П +q1 →Ù!Н |
Начальное состояние УУ=q1, состояние ленты имеет вид:
+ |
После первого шага состояние YY=q3, состояние ленты как на рис.
+ |
+ |
После пятого шага YY перейдёт в состояние q2. Состояние ленты показано на рис.
После десятого шага YY в состоянии q1 (рис. )
1 | + |
Последовательность команд, реализующих операцию сложения, удобно задать таблицей, которую называют функциональной схемой алгоритма.
q1 | q2 | q3 | |
Ùq3П | 1q2Л | 1q3П | |
Ù | Ùq1П | Ùq1П | 1q2H |
+ | Ù!Н | +q2Л | +q3П |
Задания:
- Составить машину Тьюринга, перерабатывающую слово A в слово B. При этом считается, что начальное положение каретки – крайнее левое, а конечное – крайнее правое. Рядом с командами изобразите конфигурации, получающиеся после их выполнения.
A | B |
0110011101 | 1010101010 |
- Машина Тьюринга с внешним алфавитом A = {a0, 1} и алфавитом внешних состояний Q = {q0, q1, ... , q13} определяется следующей функциональной схемой:
Q | A | |
a0 | 1 | |
q1 | q2a0L | q01 |
q2 | q5a0 | q3 a0 |
q3 | q4a0L | q01 |
q4 | q51 | q41L |
q5 | q0a0 | q61L |
q6 | q0a0 | q7a0 |
q7 | q8a0R | q01 |
q8 | q91 | q81R |
q9 | q0a0 | q101L |
q10 | q0a0 | q11a0 |
q11 | q12a0L | q01 |
q12 | q131 | q121L |
q13 | q0a0 | q01 |
Изображая на каждом такте работы машины получающуюся конфигурацию, определите, в какое слово перерабатывает машина следующие слова (в начальный момент времени машина находится в состоянии q1 и обозревает крайнюю правую ячейку, в которой записан пустой символ a0 , в следующей слева ячейке уже записан символ a01 a0111 a0.
Примеры решения Машины Тьюринга:
- Составить машину Тьюринга, перерабатывающую слово A в слово B. При этом считается, что начальное положение каретки – крайнее левое, а конечное – крайнее правое. Рядом с командами изобразите конфигурации, получающиеся после их выполнения.
A | B |
1011101111 | 1100111001 |
Решение:
Программа машины Тьюринга:
- 1q1 ®1q1П
- 0q1 ®1q2П
- 1q2 ®0q2П
- 1q3 ®0q4П
- 1q4 ®0q4П
- 0q4 ®1q5П
- 1q5 ®1q6П
- 1q6 ®0q7П
- 1q7 ®0q8П
- 1q8 ®1q0Н
Проверка работы машины:
q11011101111®1q1011101111®11q211101111®110q31101111®1100q4101111
®11001q401111®110011q51111®1100111q6111®11001110q711®
110011100q81®1100111001q0
2. Машина Тьюринга с внешним алфавитом A = {a0, 1} и алфавитом внешних состояний Q = {q0, q1, ... , q13} определяется следующей функциональной схемой:
Q | A | |
a0 | 1 | |
q1 | q2a0L | q01 |
q2 | q5a0 | q3 a0 |
q3 | q4a0L | q01 |
q4 | q51 | q41L |
q5 | q0a0 | q61L |
q6 | q0a0 | q7a0 |
q7 | q8a0R | q01 |
q8 | q91 | q81R |
q9 | q0a0 | q101L |
q10 | q0a0 | q11a0 |
q11 | q12a0L | q01 |
q12 | q131 | q121L |
q13 | q0a0 | q01 |
Изображая на каждом такте работы машины получающуюся конфигурацию, определите, в какое слово перерабатывает машина следующие слова (в начальный момент времени машина находится в состоянии q1 и обозревает крайнюю правую ячейку, в которой записан пустой символ a0 , в следующей слева ячейке уже записан символ a011 a01111 a0.
Решение:
a011 a01111 a0
a011 a01111 a0 q1® a011 a01111 q2 a0 ® a011 a0111 a0 q3 a0 ® a011 a0111 q4 a0a0 ® a011 a011 q4 1a0a0 ® a011 a01 q4 11a0a0 ® a011 a0 q4 111a0a0 ®
a011 1 q5 111a0a0 ® a011 q6 1111a0a0 ® a01 a0 q7 1111a0a0 ® a01 a0 1 q8111a0a0 ® a01 a0 11q811a0a0 ® a01 a0 111q81a0a0 ® a01 a0 1111q8a0a0 ®
a01 a0 1111a0q8a0 ® a01 a0 11111q9a0 ® a01 a0 1111q101a0 ® a01 a0 111 a0q111a0 ® a01 a0 111 q12 a01a0 ® a01 a0 11 q12 1a01a0 ® a01 a0 1 q12 11a01a0 ®
a01 a0 q12 111a01a0 ® a01 1 q13 111a01a0 ® a01 1 q0 111a01a0
Получаем слово: a01 1 q0 111a01a0
Контрольные вопросы и задания:
1) Из каких частей состоит Машина Тьюринга?
2) Что представляет собой информационная лента?
3) Как работает управляющее устройство?
4) Как выглядит элементарная операция Машины Тьюринга?
Рекомендуемая литература: 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.8, 2.3, 2.4, 2.5.
Практическое занятие №3 "Построение алгоритмов различными методами"
Цель:Закрепить навыки разработки алгоритмов для конкретных задач различными методами.
Вид работы: фронтальный.
Время выполнения: 4 часа.
Теоретический материал:
К основным способам описания алгоритмов можно отнести следующие:
- словесно-формульный (на естественном языке);
- структурный или блок-схемный;
- с использованием специальных алгоритмических языков;
- с помощью граф-схем (граф - совокупность точек и линий, в которой каждая линия соединяет две точки. Точки называются вершинами, линии - рёбрами);
- с помощью сетей Петри.
Перед составлением программ чаще всего используются словесно-формульный и блок-схемный способы. Иногда перед составлением программ на низкоуровневых языках программирования типа языка Ассемблера алгоритм программы записывают, пользуясь конструкциями некоторого высокоуровнего языка программирования. Удобно использовать программное описание алгоритмов функционирования сложных программных систем. Так, для описания принципов функционирования ОС использовался Алголо-подобный высокоуровневый язык программирования.
Словесно-формульный способ.
При словесно-формульном способе алгоритм записывается в виде текста с формулами по пунктам, определяющим последовательность действий.
Пусть, например, необходимо найти значение следующего выражения:
у=2а-(х+6).
Словесно-формульным способом алгоритм решения этой задачи может быть записан в следующем виде:
1.Ввести значения а и х.
2.Сложить х и 6.
3.Умножить а на 2.
4.Вычесть из 2а сумму (х+6).
5.Вывести у как результат вычисления выражения.
Блок-схемы.
При блок-схемном описании алгоритм изображается геометрическими фигурами (блоками), связанными по управлению линиями (направлениями потока) со стрелками. В блоках записывается последовательность действий.
Данный способ по сравнению с другими способами записи алгоритма имеет ряд преимуществ. Он наиболее нагляден: каждая операция вычислительного процесса изображается отдельной геометрической фигурой. Кроме того, графическое изображение алгоритма наглядно показывает разветвления путей решения задачи в зависимости от различных условий, повторение отдельных этапов вычислительного процесса и другие детали.
Оформление программ должно соответствовать определенным требованиям. В настоящее время действует единая система программной документации (ЕСПД), которая устанавливает правила разработки, оформления программ и программной документации. В ЕСПД определены и правила оформления блок-схем алгоритмов (ГОСТ 10.002-80 ЕСПД, ГОСТ 10.003-80 ЕСПД).
Операции обработки данных и носители информации изображаются на схеме соответствующимиблоками. Большая часть блоков по построению условно вписана в прямоугольник со сторонами а и b. Минимальное значение а равно 10 мм, увеличение а производится на число, кратное 5 мм. Размер b=1,5 мм. Для отдельных блоков допускается соотношение между а и b, равное 1:2. В пределах одной схемы рекомендуется изображать блоки одинаковых размеров. Все блоки нумеруются. Виды и назначение основных блоков приведены в таблице.
Линии, соединяющие блоки и указывающие последовательность связей между ними, должны проводится параллельно линиям рамки. Стрелка в конце линии может не ставиться, если линия направлена слева направо или сверху вниз. В блок может входить несколько линий, то есть блок может являться преемником любого числа блоков. Из блока (кроме логического) может выходить только одна линия. Логический блок может иметь в качестве продолжения одни из двух блоков, и из него выходят две линии. Если на схеме имеет место слияние линий, то место пересечения выделяется точкой. В случае, когда одна линия подходит к другой и слияние их явно выражено, точку можно не ставить.
Схему алгоритма следует выполнять как единое целое, однако в случае необходимости допускается обрывать линии, соединяющие блоки.
Если при обрыве линии продолжение схемы находится на этом же листе, то на одном и другом конце линии изображается специальный символ соединитель — окружность диаметром 0,5 мм. Внутри парных окружностей указывается один и тот же идентификатор. В качестве идентификатора, как правило, используется порядковый номер блока, к которому направлена соединительная линия. Если схема занимает более одного листа, то в случае разрыва линии вместо окружности используется межстраничный соединитель. Внутри каждого соединителя указывается адрес — откуда и куда направлена соединительная линия. Адрес записывается в две строки: в первой указывается номер листа, во второй — порядковый номер блока.
Блок-схема должна содержать все разветвления, циклы и обращения к подпрограммам, содержащиеся в программе.