Цель данной работы состоит в получении навыков разработки проектов, использующих алгоритмы вложенных циклических структур.
Вложенные циклические алгоритмические структуры.
Программирование вложенных циклических структур средствами С++.
Базовые алгоритмы вложенных циклических структур.
Реализация базовых алгоритмов вложенных циклических структур средствами С++.
Изучите вопросы программирования алгоритмов вложенных циклических структур.
Выберите вариант задания из таблицы 4.3-1.
Разработайте проект графического интерфейса пользователя.
Решите задачу построения таблицы значений функции z=f(x,y) двух аргументов, используя разработанные функции пользователя.
Для этого разработайте схемы алгоритмов и программные коды следующих функций:
программный код функции вычисления значения функции z=f(x,y) двух аргументов при заданных значениях аргументов согласно вашему индивидуальному заданию;
программный код функции построения таблицы значений z=f(x,y) на заданных отрезках и с заданными шагами изменения аргументов, причем использовать в качестве параметров циклов переменные целого типа;
программный код функции ввода исходных данных, предусмотрев контроль ввода исходных данных;
программный код функции вывода результатов;
программный код событийной процедуры, которая вызывает описанные выше функции для решения поставленной задачи.
графический интерфейс;
файлы с раздельно откомпилированными программными кодами необходимых для решения задачи функций:
файл, содержащий функции ввода исходных данных и вывода результатов;
файл, содержащий функции, решающие поставленную задачу;
событийную процедуру, которая должна содержать только операторы вызова пользовательских функций;
Подготовьте тесты для контрольного решения задачи.
Выполните проект и получите результаты.
Докажите правильность полученных результатов на заранее разработанных тестах.
Таблица 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
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
z(x,y)= x+y+4 если -3 <x<-2 и - 2< y< - 1 ,
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
z(x,y)=
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) и
найдите сумму и количество значений
функции
a= -2 b= 5 h1=0.7 b= 0 c=3 h2= 0.3
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)= |
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)
= |
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)= |
24) |
Постройте таблицу значений функции z=f(x,y) и найдите наибольшее значение при изменении x на отрезке[a; b] c шагом h1 и y на отрезке [c; d] с шагом h2. a x+y-1 если x€ [1;2] и y€ [2;3]
z(x,y)= x-y если 0<x<1 и 3<y<4
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<x<0.5 и y € [0.4;0.6]
1 в противном случае |
Титульный лист с указанием номера и названия работы, варианта индивидуального задания, группы и Ф.И.О. студента, Ф.И.О. преподавателя.
Общее и индивидуальное задание.
Рисунки, таблицы и программные коды, отражающие этапы разработки приложения:
графический интерфейс пользователя;
таблица используемых объектов и их свойств;
схемы алгоритмов решения поставленной задачи;
программный код разработанных функций, событийных процедур и
заголовочных файлов.
Результаты выполнения проекта.
Доказательство правильности работы.
4.5 Пример выполнения задания
Тема и название лабораторной работы:
Лабораторная работа №4 «Программирование алгоритмов вложенных циклических структур»
Фамилия, имя студента, номер группы, номер варианта:
Иванов И., БИН1905, вариант 13.
Создать проект согласно общему заданию для формирования таблицы значений функции
x2
+y2,
если 0<x<1
и 0<y<1;
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.
отредактирован программный код системного заголовочного
файла stdafx.h.
На рис. 2 приведен программный код созданного заголовочного
файла CalcTab.h и системного заголовочного файла stdafx.h
|
Рис. 2. Программные коды заголовочных файлов
В данном проекте в соответствии с заданием создается два файла с программным кодом функций пользователя:
файл 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 выводится, при остальных – заменяется пробелами.
В данной работе создаются две событийные процедуры, вызываемые при нажатии на кнопках cmdTab2 (Решить задачу) и cmdExit (Завершить).
Напомним, что для создания заготовок этих процедур следует, находясь в окне Form1.h [Конструктор], выполнить двойной щелчок мышью на соответствующих кнопках, а затем заполнить тело процедур соответствующим кодом.
На рис. 5 приведен код этих процедур, вставляемых в файл Form1.h
после директивы #pragma endregion.
|
Рис. 5. Программный код событийных процедур в файле Form1.h
На рис. 6 приведены результаты выполнения приложения при заданных исходных данных
Рис. 8 - Результаты выполнения проекта
Для доказательства правильности результата протабулируйте свой вариант функции с использованием программы Microsoft Excel, сделайте вывод о том, что полученные результаты подтверждают правильность выполнения программы.