Главная страница

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


Скачать 0.64 Mb.
НазваниеЛабораторная работа по теме Программирование алгоритмов разветвляющихся структур
Дата17.05.2022
Размер0.64 Mb.
Формат файлаdocx
Имя файлаLab_praktrab_3.docx
ТипЛабораторная работа
#534680

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



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


    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. Подготовьте тестыдля контрольного решения задачи.

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

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


    1. Варианты индивидуальных заданий



Таблица 12.3-1



Задача

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=




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




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


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

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

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

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

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


    1. Пример выполнения задания




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


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

Вычисление условных выражений.

  1. Задание на разработку проекта:

Создать приложение (решение), состоящее из трех проектов с именем


Lab5 в соответствии с общим заданием для вычисления функции с

условием r=f(x, y, z):



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

Создано три проекта в одном решении – создан каталог для решения, а проектам и решению установлены разные имена.

    1. ПЕРВЫЙ ПРОЕКТ

      1. Разработан первый проект, который содержит три файла исходного кода (с расширением .cpp). Т.е. для решения задачи в первом проекте разработаны:

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







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



Алгоритмы функций ввода и вывода студенты разрабатывают самостоятельно по примерам предыдущей лабораторной работы.





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


  • программный код перечисленных четырех функций, в соответствии со схемами алгоритмов.

Тексты программных кодов разработанных функций расположены в разных файлах (функцию GetXYZ ввода исходных данных и функцию PutRN вывода результатов можно поместить в один файл – см. рисунок.3).





Рисунок 3 – Программный код первого проекта


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







Рисунок 4 – Результаты работы первого проекта.

    1. ВТОРОЙ ПРОЕКТ

      1. Создан второй проект в уже имеющемся решении. Этот проект содержит три файла исходного кода (с расширением .cpp), причем файл с функциями ввода и вывода абсолютно идентичен соответствующему файлу первого проекта, поэтому его можно просто добавить во второй проект как уже существующий элемент. Второй файл с кодом главной функции отличается от аналогичного файла первого проекта только тем, что в нем описывается и вызывается для решения задачи функция с другим, по сравнению с первым проектом, именем. В третьем файле будут размещаться коды функций, решающих задачу другим способом.

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

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

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

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

Эти алгоритмыстуденты разрабатывают самостоятельно.
4.2.2) Программный код второго проекта представлен на рисунке 5.

Так как файл с функциями GetXYZ и PutRN идентичен файлу первого проекта, поэтому на рисунке 5 представлены тексты только двух файлов.








Рисунок 5 – Программный код второго проекта
4.2.3) Каждый файл был откомпилирован, выполнен проект и

получены следующие результаты:








    1. ТРЕТИЙ ПРОЕКТ.

      1. Создан третий проект в уже имеющемся решении. В этот проект добавлены три уже существующих файла – файл GetPut.cpp с функциями ввода и вывода, файл Calc1.cpp с функцией решения задачи из первого проекта, и файл Calc2.cpp с функциями для решения задачи из второго проекта.

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

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

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


      1. Программный код функции main() представлен на рисунке 7.







Рисунок 7 – Программный код главной функции третьего проекта.

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

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


Рисунок 8 - Результаты выполнения проекта для тестовых данных первой ветви.


  1. Доказательство правильности результата

Разработаны с тестовые исходные данные для контрольного решения, проверяющие все ветви процедуры функции, и получены результаты:

Исходные данные

Результат

№ ветви

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- верно

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


написать администратору сайта