Лабораторная работа №12
.docxФедеральное агентство связи
Ордена Трудового Красного Знамени федеральное государственное бюджетное образовательное учреждение высшего образования
«Московский технический университет связи и информатики»
Кафедра «Информатики»
Лабораторная работа №12
по дисциплине: «Информатика»
по теме: «Программирование алгоритмов разветвляющихся структур»
Выполнила
Студентка 1 курса
Группа ЗРС 2001
Баланюк Е.С.
Вариант №3
Проверил :
Старший преподаватель
Юсков И.А.
Москва
2020
12 Лабораторная работа по теме «Программирование алгоритмов разветвляющихся структур»
Цель данной работы состоит в получении навыков разработки проектов, использующих алгоритмы разветвляющихся структур, в изучении операций отношения и логических операций, тернарной операции, стандартных алгоритмов разветвляющихся структур, использовании операторов ветвления (условного оператора и переключателя).
Вопросы, подлежащие изучению
Стандартные алгоритмические разветвляющие структуры.
Стандартные алгоритмы разветвляющихся структур. синтаксис операторов.
Тип данных bool.
Условный оператор if и оператора выбора switch.
Операции отношения, логические операции тернарная операция выбора.
Программирование алгоритмов разветвляющихся структур.
Оптимальные алгоритмы нахождения минимального и максимального значения и др. базовые алгоритмы.
Общее задание на разработку приложения
Изучите вопросы программирования алгоритмов разветвляющихся структур.
Выберите вариант задания из таблицы 12.3-1.
Решите задачу вычисления значения заданной условной функции, используя разработанные функции пользователя в трех вариантах (проектах).
Для этого разработайте схемы алгоритмов и программные коды следующих функций:
две функции вычисления значения условной функции согласно вашему индивидуальному заданию:
первая функция для вычисления значения условной функции с использованием базовых алгоритмов и нахождением наибольшего и наименьшего значений без использования дополнительных функций – файл с этой функцией надо включить в первый проект;
вторая функция для решения задачи с использованием дополнительных пользовательских функций, вычисляющих минимальное и максимальное из двух задаваемых значений с помощью тернарной условной операции – файл с этой функцией надо включить во второй проект;
функции ввода исходных данных;
функции вывода результатов;
главной функции main() для каждого из трех проектов.
Создайте одно консольное приложение (решение), содержащее три проекта.
Каждый проект содержит: файл с функциями ввода и вывода, файл с функцией решения задачи и файл с главной функцией.
(Детали задания для каждого проекта приводятся в примере выполнения лабораторной работы)
Главная функция main() 1-го и 2-го проектов должна содержать только операторы вызова трех пользовательских функций: функции ввода исходных данных, функции решения задачи и функции вывода результатов.
В главной функции main()3-го проекта должен быть реализован выбор способа решения задачи с помощью оператора switch.
Подготовьте тесты для контрольного решения задачи.
Выполните каждый проект и получите результаты.
Докажите правильность полученных результатов на заранее разработанных тестах для всех ветвей программы.
Содержание отчёта
Тема и название лабораторной работы.
Фамилия, имя студента, номер группы, номер варианта.
Общее задание и вариант индивидуального задания.
Схемы алгоритмов каждого проекта.
Программный код для каждого проекта. В тексте программного кода обязательно соблюдать структурированность и отделять пробельными строками директивы, прототипы и определения функций.
Результаты выполнения проектов.
Доказательство правильности работы программы для каждой ветки разветвления.
Индивидуальное задание (см.рис.1)
Рисунок 1 - Индивидуальное задание
Результаты выполнения задания:
Первый проект
Алгоритмы функции пользователя (см.рис.2)
Рисунок 2 - Схема алгоритма функции с вложенными разветвлениями и без дополнительных функций для первого проекта
Рисунок 3 - Схема алгоритма главной функции main() для первого проекта
Программный код (см.рис.4-7)
Рисунок 4 - Первая часть вычислительной функции
Рисунок 5 - Вторая часть вычислительной функции
Рисунок 6 - Функции ввода и вывода
Рисунок 7 - Функции ввода и вывода
Результаты первого проекта (см.рис.8-10)
Рисунок 8 - Результат работы программы с первым разветвлением
Рисунок 9 - Результат работы программы со вторым разветвлением
Рисунок 10 - Результат работы программы с третьим разветвлением
Второй проект
Программный код (см.рис.11-13)
Рисунок 11 - функция ввода и вывода
Рисунок 12 - Вычислительная функция
Рисунок 13 - Функция main()
Результаты второго проекта (см.рис.14-16)
Рисунок 14 - Результат выполнения программы с первым разветвлением
Рисунок 15 - Результат выполнения программы со вторым разветвлением
Рисунок 16 - Результат выполнения программы с третьим разветвлением
Третий проект
Схема алгоритма главной функции main() для третьего проекта (см.рис.17)
Рисунок 17 - Схема алгоритма главной функции main() для третьего проекта
Программный код функции main() (см.рис.18-19)
Рисунок 18 - Первая часть программного кода главной функции третьего проекта
Рисунок 19 - Вторая часть программного кода главной функции третьего проекта
Результаты выполнения проектов (см.рис.20)
Рисунок 20 - Результат выполнения программы
Доказательство правильности результата
Разработаны тестовые исходные данные для контрольного решения, проверяющие все ветви функции, и получены результаты:
Проведена проверка результатов для каждой ветви:
Т.к x > 1 (3 > 1), то вычисления идут по первой ветви и вычисляется z = x * sqrt(b * b + c * c) = 23,4307 – верно
Т.к x < 0 (-7 < 0), то вычисления идут по второй ветви и вычисляется z = min{sqrt(b), x*x, x+c} = -4 – верно
Т.к x > 0 (0.5 > 0) и x < 1 (0.5 < 1), то вычисления идут по третьей ветви и вычисляется z = max{ln(b), x + c} = 3,5 – верно
При тестовых данных результаты речного расчета и вычисления на компьютере совпадают.