- •Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования «тюменский государственный нефтегазовый университет»
- •Теория алгоритмов
- •Содержание
- •Пояснительная записка
- •Основные правила по технике безопасности Требования по электрической безопасности
- •Особенности электропитания монитора
- •Особенности электропитания системного блока
- •Порядок выполнения лабораторных работ
- •Требования к структуре, содержанию и оформлению отчетов по лабораторным работам
- •Порядок защиты лабораторных работ
- •Система гигиенических требований
- •Общие требования к выполнению и оформлению лабораторных работ Допуск студентов к выполнению лабораторных работ
- •Порядок оценивания лабораторной работы
- •Лабораторная работа №1 "Составление алгоритмов решения задач на алгоритмическом языке (псевдокод)"
- •Теоретический материал:
- •Ход работы:
- •Задания:
- •Контрольные вопросы:
- •Лабораторная работа №2 "Конструирование Машины Тьюринга"
- •Теоретические сведения:
- •Ход работы:
- •Задания к работе:
- •Контрольные вопросы:
- •Лабораторная работа №3 "Вычислимые по Тьюрингу функции"
- •Теоретические сведения:
- •Список литературы
- •Дополнительная литература
- •Шарафутдинова Светлана Анатольевна теория алгоритмов
- •625000, Тюмень, ул. Володарского, 38.
- •6 25039, Тюмень, ул. Киевская, 52
Порядок оценивания лабораторной работы
1. Наибольший рейтинговый балл, который может заработать студент, определяется приложением к рабочей программе «РЕЙТИНГОВАЯ СИСТЕМА ОЦЕНКИ» и который доводится до студента в начале семестра.
2. Рейтинговый балл, за выполнение лабораторной работы, рассчитывается по следующей формуле:
Балл = НРБ*(0,5*КВР+0,35*КЗР+0,10*КОР+0,05*КСВ)*КВ, где
Балл – рейтинговый балл за лабораторную работу;
НРБ – наибольший рейтинговый балл;
КВР=[0,1] – балл качества выполнения лабораторной работы;
КЗР=[0,1] – балл качества защиты лабораторной работы;
КОР=[0,1] – балл качества оформления лабораторной работы;
КСВ=[0,1] – балл самостоятельности выполнения лабораторной работы;
КВ – коэффициент выполнения, принимает значение 0, если КВР или КЗВ или КОР принимает значение 0, в остальных 1.
Лабораторная работа №1 "Составление алгоритмов решения задач на алгоритмическом языке (псевдокод)"
Цель: Закрепить навыки разработки алгоритмов для конкретных задач различными методами.
Вид работы: индивидуальный.
Время выполнения: 4 часа.
Теоретический материал:
К основным способам описания алгоритмов можно отнести следующие:
словесно-формульный (на естественном языке);
структурный или блок-схемный;
с использованием специальных алгоритмических языков;
с помощью граф-схем (граф - совокупность точек и линий, в которой каждая линия соединяет две точки. Точки называются вершинами, линии - рёбрами);
с помощью сетей Петри.
Перед составлением программ чаще всего используются словесно-формульный и блок-схемный способы. Иногда перед составлением программ на низкоуровневых языках программирования типа языка Ассемблера алгоритм программы записывают, пользуясь конструкциями некоторого высокоуровнего языка программирования. Удобно использовать программное описание алгоритмов функционирования сложных программных систем. Так, для описания принципов функционирования ОС использовался Алголо-подобный высокоуровневый язык программирования.
Алгоритмический язык
Алгоритм < название >
Начало< последовательность действий >
Конец
Структура Следование - одна из самых важных структур. Она означает, что два действия должны быть выполнены друг за другом.
Структура Развилка обеспечивает выбор одной из двух альтернатив:
если < условие > то
< действие 1 >
иначе
< действие 2 >
все
Существует сокращенная форма структуры Развилка, которая позволяет выполнить действие или пропустить его:
если < условие > то
< действие >
все
Обобщением структуры Развилка является Множественный выбор:
если Var = Const1 то < действие 1 >
если Var = Const2 то < действие 2 >
. . .
если Var = Constn то < действие n >
все
В зависимости от значения переменной Var выполняется одно из указанных действий, например, если Var = Const3, то выполняется <действие3>.
Третьей базовой структурой является Цикл, который предусматривает повторное выполнение определенных действий, необходимое для большинства программ. Различают следующие типы структур Цикл :
- цикл "от до"
- цикл "пока"
- цикл "до"
Цикл "от до" управляет повторением выполнения действия с помощью переменной цикла:
цикл от I := N1 до N2
< действие >
кц {конец цикла}
Здесь I - переменная цикла, N1, N2 - начальное и конечное значения переменной цикла, вычисляются один раз при входе в цикл. Переменная цикла пробегает все следующие друг за другом в порядке возрастания значения от начального до конечного. Изменение значения переменной цикла происходит автоматически после каждого выполнения действия, указанного внутри цикла. В зависимости от соотношения N1 и N2 цикл может не выполниться ни разу (N1 > N2) или выполниться ( N2 - N1 + 1 ) раз.
В цикле "пока" управление внутри цикла осуществляется с помощью логического условия:
цикл пока < условие >
< действие >
кц {конец цикла}
Выполнение действия повторяется до тех пор, пока истинно условие. Проверка условия осуществляется в начале цикла. Это означает, что действие может не выполниться ни разу. Чтобы такой цикл не был бесконечным, внутри цикла необходимо предусмотреть изменение значения условия с истинного на ложное.
Третий тип структуры цикл "до" имеет вид:
цикл < действие > до < условие >
Пример
Пусть заданы длины сторон треугольника. Необходимо вычислить высоты этого треугольника. Разработку алгоритма полезно начинать с постановки задачи:
Исходные данные: |
A, B, C - длины сторон треугольника |
Результат: |
Ha, Hb, Hc - высоты треугольника. |
Метод решения: |
|
Запишем алгоритм на псевдокоде, используя дополнительно две служебные переменные P и X, уменьшающие время вычислений.
Алгоритм Линейная структура (высоты треугольника)
Начало
ввод (A, B, C)
вывод (Ha, Hb, Hc)
Конец
Пример
Вычислить значение функции:
Здесь
Постановка задачи: |
|
Исходные данные: |
H |
Результат: |
F - значение функции, |
Метод решения : |
проверка условия и вычисление соответствующего значения. |
Алгоритм Структура_с_ветвлением ( вычисление функции )
Начало
Ввод (H)
A := sin(2H)
B := cos(2H)
если(A > B) и (B > 0) то
F := A / B
иначе
если (A < B) и (B <= 0) то
F := A · B
иначе
F := abs(A - B) {абсолютная величина}
все
все
вывод (F)
Конец
