Лабораторная работа
«Программирование алгоритмов вложенных циклических структур» Цель данной работы состоит в получении навыков разработки проектов, использующих алгоритмы вложенных циклических структур.
4.1 Вопросы, подлежащие изучению
Вложенные циклические алгоритмические структуры. Программирование вложенных циклических структур средствами С++. Базовые алгоритмы вложенных циклических структур. Реализация базовых алгоритмов вложенных циклических структур средствами С++.
Изучите вопросы программирования алгоритмов вложенных циклических структур. Выберите вариант задания из таблицы 4.3-1. Разработайте проект графического интерфейса пользователя. Решите задачу построения таблицы значений функции z=f(x,y) двух аргументов, используя разработанные функции пользователя.
Для этого разработайте схемы алгоритмов и программные коды следующих функций:
программный код функции вычисления значения функции z=f(x,y) двух аргументов при заданных значениях аргументов согласно вашему индивидуальному заданию; программный код функции построения таблицы значений z=f(x,y) на заданных отрезках и с заданными шагами изменения аргументов, причем использовать в качестве параметров циклов переменные целого типа; программный код функции ввода исходных данных, предусмотревконтроль ввода исходных данных; программный код функции вывода результатов; программный код событийной процедуры, которая вызывает описанные выше функциидля решения поставленной задачи.
Создайте проект приложения Windows Form, содержащий:
графический интерфейс; файлы с раздельно откомпилированными программными кодами необходимых для решения задачи функций:
файл, содержащий функции ввода исходных данных и вывода результатов; файл, содержащий функции, решающие поставленную задачу;
событийную процедуру, которая должна содержать только операторы вызова пользовательских функций;
Подготовьте тестыдля контрольного решения задачи. Выполнитепроект иполучитерезультаты. Докажите правильность полученных результатовна заранее разработанных тестах.
4.3 Варианты индивидуальных заданий Таблица 4.3-1
№
| Задача | 1)
| Постройте таблицу значений функции z=f(x,y) и найдите наибольшее значение функции при изменении x на отрезке [a;b] с шагом h1 и y на отрезке [c; d] с шагом h2.
a= - π b= π c= - π d= π h1=π/8 h2=π/4 z(x,y)= 3 cos2(2*x+y+1)
| 2)
| Постройте таблицу значений функции z=f(x,y) и найдите сумму и количество положительных значений функции при изменении x на отрезке [a;b] с шагом h1 и y на отрезке [c; d] с шагом h2.
a= - π b= 0 c= - π d= π h1=π/8 h2=π/4 z(x,y)= 1/(x+2*π-y) – sin(x)
| 3)
| Постройте таблицу значений функции z(x,y) и найдите произведение ее отрицательных значений при изменении x на отрезке [a;b] с шагом h1 и y на отрезке [c; d] с шагом h2.
а= - 1 b= 2 h1= 0.3 c = - 1 d=2 h2=0.2
x^2 + y^2 если 0≤ x ≤ 1 и 0 ≤ y ≤ 1 ,
z(x,y)= x - y если -1≤ x ≤0 и -1≤ y ≤0 ,
1 – x - y в противном случае
| 4)
| Постройте таблицу значений функции z=f(x,y) и найдите произведение и количество положительных значений функции при изменении x на отрезке [a;b] с шагом h1 и y на отрезке [c; d] с шагом h2.
a= 0 b= 5 c= - 2 d= 2 h1= 0.5 h2=0.4 z(x ,y )=x^4 +y- 10*x^2 – 30*x -25
| 5)
| Постройте таблицу значений функции z=f(x,y) и найдите наименьшее значение функции при изменении x на отрезке [a; b] с шагом h1 и y на отрезке [c; d] с шагом h2.
a= 0.1 b= 1.1 c= 1 d=2 h1=0.1 h2=0.1 z(x,y) = x + 1/x + (1 - y)/2
| 6)
| Постройте таблицу значений функции z=f(x,y) и найти сумму и количество отрицательных значений функции при изменении x на отрезке [a; b] с шагом h1 и y на отрезке [c; d] с шагом h2.
a= 0 b= 2π c=0 d=2π h1=π/4 h2=π/2 z(x,y)= y – 0.1*sin(x)/2
| 7)
| Постройте таблицу значений функции z(x,y) и найдите количество ее положительных значений при изменении x на отрезке [a; b] с шагом h1 и y на отрезке [c; d] с шагом h2.
a= -3 b= 4 c = -2 d=2 h1= 0.7 h2=0.4
ex + y если x € [-2;2] и y € [-1;1], z(x,y)= x+y+4 если -3 0 в противном случае
| 8)
| Постройте таблицу значений функции z=f(x,y) и найдите произведение и сумму отрицательных значений функции при изменении x на отрезке [a; b] с шагом h1 и y на отрезке [c; d] с шагом h2.
a= -1.5 b= 1.5 c= -2 d= 2 h1= 0.3 h2= 0.4 z(x,y)= x^8-y- 0.4*x^3 – 1.2
| 9)
| Постройте таблицу значений функции z=f(x,y) и найдите сумму и произведение значений функции при изменении x на отрезке [a; b] с шагом h1 и y на отрезке [c; d] с шагом h2.
a= 0.1 b=1.5 h1=0.1 c=2 d=3 h2=0.1 z(x,y) =
| 10)
| Постройте таблицу значений функции z(x,y) и найдите наименьшее значение функции при изменении x на отрезке [a; b] с шагом h1 и y на отрезке [c; d] с шагом h2.
a= -π b= π h1=π/4 c= - π d= π h2=π/4 z(x,y)= sin(4x+y) – 2*x
| 11)
| Постройте таблицу значений функции z(x,y) и найдите сумму и количество положительных значений функции при изменении x на отрезке [a; b] с шагом h1 и y на отрезке [c; d] с шагом h2.
a= 1 b=5 h1= 0.4 c=0 d=6 h2=0.3
x +y если x € [2;4] и y € [1;5],
z(x,y)= если 1< x <2 и 0<y<1, x - y в противном случае
| 12)
| Постройте таблицу значений функции z=f(x,y) и найдите произведение и количество отрицательных значений функции при изменении x на отрезке [a; b] с шагом h1 и y на отрезке [c; d] с шагом h2.
a=1.9 b=2.1 h1=0.01 c=2 d=3 h2=0.1
z(x,y)=
| 13)
| Постройте таблицу значений функции z=f(x,y) и найдите наименьшее значение функции при изменении x на отрезке [a; b] с шагом h1 и y на отрезке [c; d] с шагом h2.
a= 2.1 b=3 h1=0.1 c=2 d=3 h2=0.2 z(x,y) =
|
14)
|
Постройте таблицу значений функции z=f(x,y) и найдите наибольшее значение функции при изменении x на отрезке [a; b] с шагом h1 и y на отрезке [c; d] с шагом h2.
a=0 b= π h1= π/4 c=0 d=3 h2=0.3 z(x,y)=
| 15)
| Постройте таблицу значений функции z(x,y) и найдите сумму и количество значений функции >0.1 при изменении x на отрезке [a; b] с шагом h1 и y на отрезке [c; d] с шагом h2.
a= -2 b= 5 h1=0.7 b= 0 c=3 h2= 0.3
если x€[-1;4] и y€ [1;2] z(x,y)= x – 3 + y если -2 < x < -1 и 0< y <1
в противном случае
| 16)
| Постройте таблицу значений функции z=f(x,y) и найдите наибольшее значение при изменении x на отрезке [a; b] с шагом h1 и y на отрезке [c; d] с шагом h2.
a= -π b= π h1=π/4 c= -π d= π h2=π/8
z(x,y)=sin(4xy) + y - 2
| 17
| Постройте таблицу значений функции z=f(x,y) и найдите произведение и количество значений функции z(x,y) < 1 функции при изменении x на отрезке [a; b] с шагом h1 и y на отрезке [с; d] с шагом h2.
a=-1.9 b= 2.9 h1=0.48 c= 1 d=2 h2=0.1 z(x,y)= Y+ .
| 18)
| Постройте таблицу значений функции z=f(x,y) и вычислите наименьшее значение функции при изменении x на отрезке [a; b] с шагом h1 и y на отрезке [c; d] с шагом h2.
a= -3 b=3 h1=0.6 c= 1 d=2 h2= 0.1
z(x,y)= + y
| 19)
| Постройте таблицу значений функции z=f(x,y) и найдите сумму и количество значений функции при z>0 при изменении x на отрезке [a; b] с шагом h1 и y на отрезке [c; d] с шагом h2.
a= -1 b= 3 h1=0.4 c=2 d=3 h2=0.1 z(x,y) = - y
| 20)
| Постройте таблицу значений функции z=f(x,y) и вычислите наименьшее значение функции при изменении x на отрезке [a; b]c шагом h1 и y на отрезке [c; d] с шагом h2.
a= -4 b=4 h1=0.8 c=2 d=3 h2=0.1
z(x,y)=
| 21)
| Постройте таблицу значений функции z=f(x,y) и найдите сумму и количество значений функции при z<1.5 при изменении x на отрезке [a; b] c шагом h1 и y на отрезке [c; d] с шагом h2.
a= -π b=π h1=π/4 c= -π d=π h2=π/2 z(x,y)=sin(4x+y) - 2
| 22)
| Постройте таблицу значений функции z=f(x,y) и найдите наибольшее значение функции при изменении x на отрезке [a; b]c шагом h1 и y на отрезке [c; d] с шагом h2.
a= 6 b=8 h1= 0.2 c=2 d=3 h2=0.1
z(x,y)=
| 23)
| Постройте таблицу значений функции z=f(x,y) и найдите произведение и количество значений функции при z<3 при изменении x на отрезке [a; b] с шагом h и y на отрезке [c; d] с шагом h2.
a= -0.9 b=1.9 h1=0.1 c=2 d=3 h2=0.1 z(x,y)= . + y
| 24)
| Постройте таблицу значений функции z=f(x,y) и найдите наибольшее значение при изменении x на отрезке[a; b] c шагом h1 и y на отрезке [c; d] с шагом h2.
a =0 b=3 h1=0.3 c=1 d=4 h2=0.3
x+y-1 если x€ [1;2] и y€ [2;3]
z(x,y)= x-y если 0
2 в противном случае | 25)
| Постройте таблицу значений функции z=f(x,y) и найдите сумму и количество значений функции z(x,y)> 0 при изменении x на отрезке [a; b] с шагом h1 и y на отрезке [c; d] с шагом h2.
a= -π b=π h1=π/4 c=2 d=3 h2=0.1 z(x,y)= 5*sin(2*x+1)3 + y
| 26)
| Постройте таблицу значений функции z=f(x,y) и найдите наименьшее значение функции при изменении x на отрезке [a; b] с шагом h1 и y на отрезке [c; d] с шагом h2.
a= -2 b=3 h1= 0.5 c=0.1 d=0.2 h2=0.01 z(x , y)= x - y - x/y
| 27)
| Постройте таблицу значений функции z=f(x,y) и найдите произведение и количество значений функции z(x,y) < 0 при изменении x на отрезке [a; b] с шагом h1 и y на отрезке [c; d] с шагом h2.
a= 20 d=30 h1= 5 c= 10 d=50 h2=5 z(x,y)=17.5 + x – y
| 28)
| Постройте таблицу значений функции z=f(x,y) и найдите наибольшее значение функции при изменении x на отрезке [a; b] с шагом h1 и y на отрезке [c; d] с шагом h2. z(x,y) =
a= - 5 b=5 h1= 0.5 c= 0.1 d=0.3 h2=0.02
| 29)
| Постройте таблицу функции z=f(x,y) и найдите сумму и количество значений функции при z>0 при изменении x на отрезке [a; b] с шагом h1 и y на отрезке [c; d] с шагом h2.
a= -2 b=2 h1=0.5 c=2 d=3 h2=0.1 z(x,y)= x/y + (x+y)/2 -
| 30)
| Постройте таблицу значений функции z=f(x,y) и найдите произведение и сумму значений функции при изменении x на отрезке[a; b] c шагом h1 и y на отрезке [c; d] с шагом h2.
a= 0.1 b=0.8 h1=0.1 c= 0.2 d= 0.6 h2=0.05
Sin(x+y) если x€[0.5; 0.7] и y € [0.3;0.4] z(x,y)= x-y если 0.1
1 в противном случае
|
4.4 Содержание отчёта
Титульный лист с указанием названия работы. Общее и индивидуальное задание. Рисунки, таблицы и программные коды, отражающие этапы разработки приложения:
графический интерфейс пользователя; таблица используемых объектов и их свойств; схемы алгоритмов решения поставленной задачи; программный код разработанных функций, событийных процедур и
заголовочных файлов.
Результаты выполнения проекта. Доказательство правильности работы.
4.5 Пример выполнения задания
Тема и название лабораторной работы: Лабораторная работа №4 «Программирование алгоритмов вложенных циклических структур»
Фамилия, имя студента, номер группы, номер варианта:
Иванов И., БИН1905, вариант 13.
Задание на разработку проекта:
Создать проект согласно общему заданию для формирования таблицы значений функции x2 +y2, если 0 z(x,y)=
x+y, в противном случае а также для подсчета суммы и количества положительных значений z(x,y), при изменении x на отрезке [a; b] с шагом h1 и y на отрезке [c;d] с шагом h2.
Разработаны схемы алгоритмов двух процедур: схема алгоритма функции f() вычисления значения заданной функции в одной точке; схема алгоритма функции RegCikl2() решения задачи и формирования таблицы значений функции z(x,y);
Схемы алгоритмов студенты разрабатывают самостоятельно.
Разработан графический интерфейс Графический интерфейс проекта изображен на рисунке 1.
Рисунок 1 - Графический интерфейс проекта
Форма содержит текстовые поля TextBox для ввода исходных данных и вывода результатов выполнения, список ListBox для вывода таблицы значений функции, а также кнопки Button для запуска приложения на выполнение и для выхода из приложения. Начальные значения исходных данных заданы в свойствах соответствующих текстовых полей, но, разумеется, могут быть переопределены пользователем при выполнении приложения. Таблицу, в которой приведены основные объекты формы с указанием тех их свойств, которые были переопределены разработчиком приложения, студенты составляют самостоятельно по примеру лабораторной работы 2.
5.1) Созданы программные коды заголовочного файла TABLE.h и
отредактирован программный код системного заголовочного
файла stdafx.h.
На рис. 2 приведен программный код созданного заголовочного
файла CalcTab.h и системного заголовочного файла stdafx.h
Рис. 2. Программные коды заголовочных файлов 5.2) Созданы файлы c функциями решения поставленной задачи.
В данном проекте в соответствии с заданием создается два файла с программным кодом функций пользователя:
файл GetPut.cpp, содержащий функцию GetFloat для ввода из текстового поля формы и преобразования в вещественное число типа float, и функцию Put для вывода вещественного числа типа float в текстовое поле формы;
файл CalcTab.cpp, содержащий все остальные функции, необходимые для решения поставленной задачи.
На рис. 3 приведен программный код файла GetPut.cpp. Функции GetFloat и Put полностью аналогичны одноименным функциям, использованных в предыдущей лабораторной работе.
Рис. 3 – Программный код файла GetPut.cpp
На рис. 4 приведен программный код файла CalcTab.cpp, содержащий необходимые функции для решения задачи.
Рис. 4 - Программный код файла CalcTab.cpp Программный код функции f тривиален и пояснений не требует. В функцию RegCikl2 в качестве входных параметров передаются по значению границы и шаг изменения аргументов, а также ссылка на список формы для вывода таблицы. Выходным параметром, возвращаемым по ссылке, является подсчитанное количество положительных значений функции Npos. Подсчитанная функцией сумма положительных значений S возвращается оператором return.
Для перебора всех сочетаний аргументов x и y организуются вложенные циклы с параметрами i и j. Для “красивого” вывода в список формы (без повторения во внутреннем цикле неизменных значений x) во внутреннем цикле организовано разветвление: при первом повторении цикла значение x выводится, при остальных – заменяется пробелами. 5.3) Создание событийных процедур. В данной работе создаются две событийные процедуры, вызываемые при нажатии на кнопках cmdTab2 (Решить задачу) и cmdExit (Завершить).
Напомним, что для создания заготовок этих процедур следует, находясь в окне Form1.h [Конструктор], выполнить двойной щелчок мышью на соответствующих кнопках, а затем заполнить тело процедур соответствующим кодом.
На рис. 5 приведен код этих процедур, вставляемых в файл Form1.h
после директивы #pragma endregion.
Рис. 5. Программный код событийных процедур в файле Form1.h
Результаты выполнения приложения
На рис. 6 приведены результаты выполнения приложения при заданных исходных данных
Рис. 8 - Результаты выполнения проекта
Доказательство правильности результата
Для доказательства правильности результата протабулируйте свой вариант функции с использованием программы Microsoft Excel, сделайте вывод о том, что полученные результаты подтверждают правильность выполнения программы.1>1>2> |