Лабораторная работа по теме Программирование алгоритмов разветвляющихся структур
Скачать 0.64 Mb.
|
Лабораторная работа по теме |
№ | Задача |
1) | e= |
2) | z= |
3) | z= |
4) | z= |
5) | g= |
6) | f= |
7) | d= |
8) | z= |
9) | z= |
10) | d= |
11) | |
12) | p= |
13) | r= |
14) | r= |
15) | s= |
16) | t= |
17) | u= |
18) | f= |
19) | |
20) | v= |
21) | h= |
22) | z= |
23) | |
24) | l= |
25) | Z= |
26) | z= |
27) | z= |
28) | |
29) | |
30) | y= |
Содержание отчёта
Тема и название лабораторной работы.
Общее задание и вариант индивидуального задания.
Схемы алгоритмов каждого проекта.
Программный код для каждого проекта. В тексте программного кода обязательно соблюдать структурированность и отделять пробельными строками директивы, прототипы и определения функций.
Результаты выполнения проектов.
Доказательство правильности работы программы для каждой ветки разветвления.
Пример выполнения задания
Тема и название лабораторной работы:
Программирование алгоритмов разветвляющихся структур.
Вычисление условных выражений.
Задание на разработку проекта:
Создать приложение (решение), состоящее из трех проектов с именем
Lab5 в соответствии с общим заданием для вычисления функции с
условием r=f(x, y, z):
4) Результаты выполнения задания:
Создано три проекта в одном решении – создан каталог для решения, а проектам и решению установлены разные имена.
ПЕРВЫЙ ПРОЕКТ
Разработан первый проект, который содержит три файла исходного кода (с расширением .cpp). Т.е. для решения задачи в первом проекте разработаны:
алгоритм функции пользователя, который должен содержать вложенные разветвления с базовыми алгоритмами нахождения наибольшего и наименьшего значений без использования дополнительных пользовательских функций. Схема алгоритма этой функции пользователя представлена на рисунке 1.
|
Рисунок 1 – Схема алгоритма функции с вложенными разветвлениями и без дополнительных функций для первого проекта.
алгоритм главной функции (рисунок 2);
алгоритм функции пользователя для ввода исходных данных;
алгоритм функции пользователя для вывода результатов.
Алгоритмы функций ввода и вывода студенты разрабатывают самостоятельно по примерам предыдущей лабораторной работы.
|
Рисунок 2 - Схема алгоритма главной функции main()для первого проекта
программный код перечисленных четырех функций, в соответствии со схемами алгоритмов.
Тексты программных кодов разработанных функций расположены в разных файлах (функцию GetXYZ ввода исходных данных и функцию PutRN вывода результатов можно поместить в один файл – см. рисунок.3).
Рисунок 3 – Программный код первого проекта
Каждый файл был откомпилирован, выполнен проект и получены результаты для каждой ветви функции:
Рисунок 4 – Результаты работы первого проекта.
ВТОРОЙ ПРОЕКТ
Создан второй проект в уже имеющемся решении. Этот проект содержит три файла исходного кода (с расширением .cpp), причем файл с функциями ввода и вывода абсолютно идентичен соответствующему файлу первого проекта, поэтому его можно просто добавить во второй проект как уже существующий элемент. Второй файл с кодом главной функции отличается от аналогичного файла первого проекта только тем, что в нем описывается и вызывается для решения задачи функция с другим, по сравнению с первым проектом, именем. В третьем файле будут размещаться коды функций, решающих задачу другим способом.
Для решения задачи во втором проекте разработаны алгоритмы трех функций:
алгоритм функции с двумя формальными параметрами, который вычисляет минимальное из них посредством тернарной условной операции и возвращает его через возвращаемое значение
алгоритм функции с двумя формальными параметрами, который вычисляет максимальное из них посредством тернарной условной операции и возвращает его через возвращаемое значение
алгоритм функции, которая для решения задачи использует вызовы этих дополнительных пользовательских функций.
Эти алгоритмыстуденты разрабатывают самостоятельно.
4.2.2) Программный код второго проекта представлен на рисунке 5.
Так как файл с функциями GetXYZ и PutRN идентичен файлу первого проекта, поэтому на рисунке 5 представлены тексты только двух файлов.
Рисунок 5 – Программный код второго проекта
4.2.3) Каждый файл был откомпилирован, выполнен проект и
получены следующие результаты:
ТРЕТИЙ ПРОЕКТ.
Создан третий проект в уже имеющемся решении. В этот проект добавлены три уже существующих файла – файл GetPut.cpp с функциями ввода и вывода, файл Calc1.cpp с функцией решения задачи из первого проекта, и файл Calc2.cpp с функциями для решения задачи из второго проекта.
В этот проект добавлен четвертый файл с программным кодом главной функции main(), который с помощью переключателя switch реализует выбор способа решения задачи.
Схема главной функции main() представлена на рисунке 6.
Рисунок 6 - Схема алгоритма главной функции main()для третьего проекта
Программный код функции main() представлен на рисунке 7.
Рисунок 7 – Программный код главной функции третьего проекта.
5) Результаты выполнения проектов
Результаты выполнения всех трех проектов при заданных значениях исходных данных должны быть одинаковы. На рисунке 8 приведены результаты работы третьего проекта для тестовых данных первой ветви.
Рисунок 8 - Результаты выполнения проекта для тестовых данных первой ветви.
Доказательство правильности результата
Разработаны с тестовые исходные данные для контрольного решения, проверяющие все ветви процедуры функции, и получены результаты:
Исходные данные | Результат | № ветви | ||
x=2 | y=1 | z=1 | r= 0,540302305 | n=1 |
x=1 | y=2 | z=3 | r= 20,08553692 | n=2 |
x=1 | y=3 | z=2 | r= 6 | n=3 |
Проведена проверка результатов для каждой ветви:
x=2 | y=1 | z=1 |
Т.к. y
r = min(x2, sin y, cos z) = min( 22, sin 1, cos 1) = min( 4, 0.841471, 0.540302) = 0.540302 – верно
x=1 | y=2 | z=3 |
Т.к. x<=y<=z (1<=2<=3) , то вычисления идут по второй ветви и вычисляется
r = max( ex+y, ln z2) = max( e3, ln 9) = max ( 20.0855, 2.197224) = 20.0855 - верно
x=1 | y=3 | z=2 |
Т.к. вычисления идут по третьей ветви, то r=x+y+z=1+3+2=6- верно
При тестовых данных результаты ручного расчета и вычисления на компьютере совпадают.