Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабораторная работа №12

.docx
Скачиваний:
0
Добавлен:
19.10.2022
Размер:
1.11 Mб
Скачать

Федеральное агентство связи

Ордена Трудового Красного Знамени федеральное государственное бюджетное образовательное учреждение высшего образования

«Московский технический университет связи и информатики»

Кафедра «Информатики»

Лабораторная работа №12

по дисциплине: «Информатика»

по теме: «Программирование алгоритмов разветвляющихся структур»

Выполнила

Студентка 1 курса

Группа ЗРС 2001

Баланюк Е.С.

Вариант №3

Проверил :

Старший преподаватель

Юсков И.А.

Москва

2020

12 Лабораторная работа по теме     «Программирование алгоритмов разветвляющихся структур»

Цель данной работы состоит в получении навыков разработки проектов, использующих алгоритмы разветвляющихся структур, в изучении операций отношения и логических операций, тернарной операции, стандартных алгоритмов разветвляющихся структур, использовании операторов ветвления (условного оператора и переключателя).

    1. Вопросы, подлежащие изучению

  1. Стандартные алгоритмические разветвляющие структуры.

  2. Стандартные алгоритмы разветвляющихся структур. синтаксис операторов.

  3. Тип данных bool.

  4. Условный оператор if и оператора выбора switch.

  5. Операции отношения, логические операции тернарная операция выбора.

  6. Программирование алгоритмов разветвляющихся структур.

  7. Оптимальные алгоритмы нахождения минимального и максимального значения и др. базовые алгоритмы.

    1. Общее задание на разработку приложения

  1. Изучите вопросы программирования алгоритмов разветвляющихся структур. 

  2. Выберите вариант задания из таблицы 12.3-1.

  3. Решите задачу вычисления значения заданной условной функции, используя разработанные функции пользователя в трех вариантах (проектах). 

Для этого разработайте схемы алгоритмов и программные коды следующих функций:

  • две функции вычисления значения условной функции согласно вашему индивидуальному заданию: 

  • первая функция для вычисления значения условной функции с использованием базовых алгоритмов и нахождением наибольшего и наименьшего значений без использования дополнительных функций – файл с этой функцией надо включить в первый проект;

  • вторая функция для решения задачи с использованием дополнительных пользовательских функций, вычисляющих минимальное и максимальное из двух задаваемых значений с помощью тернарной условной операции –  файл с этой функцией надо включить во второй проект;

  • функции ввода исходных данных;

  • функции вывода результатов;

  • главной функции main() для каждого из трех проектов. 

Создайте одно консольное приложение (решение), содержащее три проекта.

Каждый проект содержит: файл с функциями ввода и вывода, файл с функцией решения задачи и файл с главной функцией. 

(Детали задания для каждого проекта приводятся в примере выполнения лабораторной работы)  

Главная функция main() 1-го и 2-го проектов должна содержать только операторы вызова трех пользовательских функций: функции ввода исходных данных, функции решения задачи и функции вывода результатов.  

В главной функции main()3-го проекта должен быть реализован выбор способа решения задачи  с помощью оператора switch. 

  1. Подготовьте тесты для контрольного решения задачи.

  1. Выполните каждый проект и получите результаты.

  1. Докажите правильность полученных результатов на заранее разработанных тестах для всех ветвей программы.

    1. Содержание отчёта

  1. Тема и название лабораторной работы.

  2. Фамилия, имя студента, номер группы, номер варианта.

  3. Общее задание и вариант индивидуального задания.

  4. Схемы алгоритмов каждого проекта.

  5. Программный код для каждого проекта. В тексте программного кода обязательно соблюдать структурированность и отделять пробельными строками директивы, прототипы и определения функций.

  6. Результаты выполнения проектов.

  7. Доказательство правильности работы программы для каждой ветки разветвления.

Индивидуальное задание (см.рис.1)

Рисунок 1 - Индивидуальное задание

Результаты выполнения задания:

  1. Первый проект

Алгоритмы функции пользователя (см.рис.2)

Рисунок 2 - Схема алгоритма функции с вложенными разветвлениями и без дополнительных функций для первого проекта

Рисунок 3 - Схема алгоритма главной функции main() для первого проекта

Программный код (см.рис.4-7)

Рисунок 4 - Первая часть вычислительной функции

Рисунок 5 - Вторая часть вычислительной функции

Рисунок 6 - Функции ввода и вывода

Рисунок 7 - Функции ввода и вывода

Результаты первого проекта (см.рис.8-10)

Рисунок 8 - Результат работы программы с первым разветвлением

Рисунок 9 - Результат работы программы со вторым разветвлением

Рисунок 10 - Результат работы программы с третьим разветвлением

  1. Второй проект

Программный код (см.рис.11-13)

Рисунок 11 - функция ввода и вывода

Рисунок 12 - Вычислительная функция

Рисунок 13 - Функция main()

Результаты второго проекта (см.рис.14-16)

Рисунок 14 - Результат выполнения программы с первым разветвлением

Рисунок 15 - Результат выполнения программы со вторым разветвлением

Рисунок 16 - Результат выполнения программы с третьим разветвлением

  1. Третий проект

Схема алгоритма главной функции 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 – верно

При тестовых данных результаты речного расчета и вычисления на компьютере совпадают.