Создание обработчиков событий
Обработчики событий создаются аналогично тому, как и в преды-дущих лабораторных работах. Текст обработчика события нажатия на кнопку «Пуск» приведен ниже.
private void button1_Click(object sender, EventArgs e)
{
// Получение исходных данных из TextBox double x = Convert.ToDouble(textBox2.Text); double y = Convert.ToDouble(textBox1.Text);
36
double z = Convert.ToDouble(textBox3.Text);
// Ввод исходных данных в окно результатов textBox4.Text = "Результаты работы программы " +
"ст. Петрова И.И. " + Environment.NewLine;
textBox4.Text += "При X = " + textBox2.Text + Environment.NewLine;
textBox4.Text += "При Y = " + textBox1.Text + Environment.NewLine;
textBox4.Text += "При Z = " + textBox3.Text + Environment.NewLine;
// Вычисление выражения
double u;
if ((z ‐ x) == 0)
u = y * Math.Sin(x) * Math.Sin(x) + z; else
if ((z ‐ x) < 0)
u = y * Math.Exp(Math.Sin(x)) ‐ z;
else
u = y * Math.Sin(Math.Sin(x)) + z;
// Вывод результата
textBox4.Text += "U = " + u.ToString() + Environment.NewLine;
}
Запустите программу и убедитесь в том, что все ветви алгоритма выполняются правильно.
Индивидуальные задания
По указанию преподавателя выберите индивидуальное задание из нижеприведенного списка. В качестве f(x) использовать по выбору: sh(x), x 2, e x.Отредактируйте вид формы и текст программы,в соответст-вии с полученным заданием.
Усложненный вариант задания для продвинутых студентов:с помо-щью радиокнопок (RadioButton) дать пользователю возможность во время работы программы выбрать одну из трех приведенных выше функций.
|
|
ì( f (x)+ y)2 | - | f (x) y , xyñ0 | ||||
ï | ||||||
1. a = íï( f (x) + y)2 | + | f(x) y | , xyá0 | |||
ïï( f (x)+ y)2 | + 1, | xy =0. | ||||
î |
ì f ( x )2+ y 2+sin( y ), x - y =0
ï
3. c =ïí( f ( x )- y )2+cos( y ), x - yñ0
ïïî( y - f ( x ))2+tg( y ), x - yá0.
ìln( f (x)) + (f (x)2 | + y)3, x / yñ0 | ||||||
ï | +( f (x)+ y)3, x / yá0 | ||||||
2. | ïln | f (x) / y | |||||
b = í |
| ||||||
ïï( f (x)2+ y)3, | x =0 | ||||||
ï | y =0. | ||||||
î0, |
ìï( f ( x )- y )3+arctg( f ( x )), x ñ y
4. d = ï( y - f ( x ) ) 3 + arctg ( f ( x ) ), y ñ x
í
ïï( y + f ( x ))3+0.5, y = x.
î
37
ìi | f (x), | i - нечетное, xñ0 | |||||||||||||||||||||||||
ï | |||||||||||||||||||||||||||
5. | ï | f (x) | , i - четное, xá0 | ||||||||||||||||||||||||
e = íi / 2 | |||||||||||||||||||||||||||
ï | if (x) | , | иначе.
| ||||||||||||||||||||||||
ï | |||||||||||||||||||||||||||
î | |||||||||||||||||||||||||||
ìe f ( x), | 1á xbá10 | ||||||||||||||||||||||||||
ï | |||||||||||||||||||||||||||
7. | ï | f (x) | + 4 * b | , 12á xbá40 | |||||||||||||||||||||||
s = í | |||||||||||||||||||||||||||
ï | , | иначе. | |||||||||||||||||||||||||
ïbf (x)2 | |||||||||||||||||||||||||||
î | |||||||||||||||||||||||||||
ì2 f (x)3 | + 3p 2 , xñ | p |
|
| |||||||||||||||||||||||
ï |
| ||||||||||||||||||||||||||
9.
| f (x)- p | , | 3áxá | p | |||||||||||||||||||||||
l = í | |||||||||||||||||||||||||||
ï |
| x = p . | |||||||||||||||||||||||||
îï( f (x)- p)2, | |||||||||||||||||||||||||||
11. m =max ((f (x), y,)z)+5.min f (x), y
13. p = min( f (x), y) - max( y, z) . 2
ì f (sin( x ))2+sin( f ( y )), x - y =0
15. c =ïí( f (cos( x )))+cos( f ( y )), x - yñ0ïïî( y - f (tg( x )))2+tg( y ), x - yá0.
ì f (x)3- y3×cos( x ), x + y =0
17. c = ïí( f (x) × y)2 - cos( y), x + yñ0 ïï( y × f (x))2+ p , x + yá0.
î
ìsin( f ( x )) + cos( f ( y )), x - y = 0 19. c = ïítg( f ( x + y ), x - yñ0
ïîsin 2 ( f ( x)) + cos 2 ( f ( y)), x - yá0.
ì | e | f ( x)- | b | , | 0.5áxbá10 | ||||||||||||||||||||||||||||||||
ï | |||||||||||||||||||||||||||||||||||||
6.
| ï | f (x) | + b | , | 0.1áxbá0.5 | ||||||||||||||||||||||||||||||||
g = í | |||||||||||||||||||||||||||||||||||||
ï | , | иначе. | |||||||||||||||||||||||||||||||||||
ï2 f (x)2 | |||||||||||||||||||||||||||||||||||||
î | |||||||||||||||||||||||||||||||||||||
ì | + 3m | f (x) | ), - 1ámáx | ||||||||||||||||||||||||||||||||||
sin(5 f (x) | |||||||||||||||||||||||||||||||||||||
8. | j = íïcos(3 f (x)+5m |
| ), xñm | ||||||||||||||||||||||||||||||||||
f (x) |
| ||||||||||||||||||||||||||||||||||||
ï | 2 | ||||||||||||||||||||||||||||||||||||
ï | |||||||||||||||||||||||||||||||||||||
) , | x = m. | ||||||||||||||||||||||||||||||||||||
î( f (x)+ m | |||||||||||||||||||||||||||||||||||||
ìln( | f (x) | + | q | ), |
| xq | ñ10 | ||||||||||||||||||||||||||||||
ïe f |
|
| |||||||||||||||||||||||||||||||||||
10. | k = | ( x)+q , | xq |
| á10 | ||||||||||||||||||||||||||||||||
í | |||||||||||||||||||||||||||||||||||||
ï | xq | = 10 | |||||||||||||||||||||||||||||||||||
ï f (x)+ q, |
| ||||||||||||||||||||||||||||||||||||
î |
12. n = min ( f (x()+ y, y)- z). max f (x), y
q = max( f (x) + y + z, xyz).
14. min( f (x) + y + z, xyz)
ïì | (ax2 + 2) | f (x), 1<| x |<3, | ||||||||||||||||||||
|
| ) | ||||||||||||||||||||
ï ( | x2 | |||||||||||||||||||||
ï | +1 | |||||||||||||||||||||
16. | a = ía 2+ f (x), | | x | ³ 3 | ||||||||||||||||||||
ï | f(x) | |||||||||||||||||||||
ï | ,| x | £ 1. | |||||||||||||||||||||
ïax ( x + 2) | ||||||||||||||||||||||
ï | ||||||||||||||||||||||
î | ), | |||||||||||||||||||||
ìln( | f (x2) | + | k | x × k | ñ10 | |||||||||||||||||
18. | ï | |||||||||||||||||||||
, | x × k á10 | |||||||||||||||||||||
k = íp | ||||||||||||||||||||||
ï f ( x)+ q | ||||||||||||||||||||||
ï | x × k | = 10 | ||||||||||||||||||||
ï f (x)- k, | ||||||||||||||||||||||
î | ||||||||||||||||||||||
20. | r =max(min( f (x), y ), z ). |
38
ЛАБОРАТОРНАЯ РАБОТА № 4.
ЦИКЛИЧЕСКИЕ АЛГОРИТМЫ
Цель лабораторной работы: изучить простейшие средства отлад-ки программ в среде Visual Studio. Составить и отладить программу циклического алгоритма.
Операторы организации циклов
Под циклом понимается многократное выполнение одних и тех же операторов при различных значениях промежуточных данных. Число повторений может быть задано в явной или неявной форме.
К операторам цикла относятся: цикл с предусловием while, цикл
с постусловием do while, цикл с параметром forи цикл перебора foreach. Рассмотрим некоторые из них.
Цикл с предусловием
Оператор цикла while организует выполнение одного оператора (про-стого или составного) неизвестное заранее число раз. Формат цикла while:
while (B) S;
где B – выражение, истинность которого проверяется (условие заверше-ния цикла); S – тело цикла – оператор (простой или составной).
Перед каждым выполнением тела цикла анализируется значение выражения В: если оно истинно, то выполняется тело цикла, и управле-ние передается на повторную проверку условия В; если значение В лож-но – цикл завершается и управление передается на оператор, следую-щий за оператором S.
Если результат выражения B окажется ложным при первой провер-ке, то тело цикла не выполнится ни разу. Отметим, что если условие B во время работы цикла не будет изменяться , то возможна ситуация за-цикливания, то есть невозможность выхода из цикла. Поэтому внутри тела должны находиться операторы, приводящие к изменению значения выражения B так, чтобы цикл мог корректно завершиться.
В качестве иллюстрации выполнения цикла while рассмотрим про-грамму вывода целых чисел от 1 до n по нажатию кнопки на форме:
private void button1_Click(object sender, EventArgs e)
{
39
int n = 10; // Количество повторений цикла int i = 1; // Начальное значение
while (i <= n) // Пока i меньше или равно n
{
MessageBox.Show(i.ToString()); // Показываем i i++; // Увеличиваем i на 1
}
}
Цикл с постусловием
Оператор цикла do while также организует выполнение одного оператора (простого или составного) неизвестное заранее число раз. Однако в отличие от цикла while условие завершения цикла проверяет-ся после выполнения тела цикла. Формат цикла do while:
do S while (B);
где В – выражение, истинность которого проверяется (условие заверше-ния цикла); S – тело цикла – оператор (простой или блок).
Сначала выполняется оператор S, а затем анализируется значение вы-ражения В: если оно истинно, то управление передается оператору S, если ложно – цикл завершается, и управление передается на оператор, следую-щий за условием B. Так как условие В проверяется после выполнения тела цикла, то в любом случае тело цикла выполнится хотя бы один раз.
В операторе do while, так же как и в операторе while, возможна ситуация зацикливания в случае, если условие В всегда будет оставаться истинным.
Цикл с параметром
Цикл с параметром имеет следующую структуру:
for (<инициализация>; <выражение>; <модификация>)
<оператор>;
Инициализация используется для объявления и/или присвоения на-чальных значений величинам, используемым в цикле в качестве пара-метров (счетчиков). В этой части можно записать несколько операторов, разделенных запятой. Областью действия переменных, объявленных
в части инициализации цикла, является цикл и вложенные блоки. Ини-циализация выполняется один раз в начале исполнения цикла.
Выражение определяет условие выполнения цикла:если его ре-зультат истинен, цикл выполняется. Истинность выражения проверяется перед каждым выполнением тела цикла, таким образом, цикл с пара-
40
метром реализован как цикл с предусловием. В блоке выражение через запятую можно записать несколько логических выражений, тогда запя-тая равносильна операции логическое И (&&).
Модификация выполняется после каждой итерации цикла и служитобычно для изменения параметров цикла. В части модификация можно записать несколько операторов через запятую.
Оператор (простой или составной)представляет собой тело цикла.Любая из частей оператора for (инициализация , выражение, моди-фикация, оператор) может отсутствовать, но точку с запятой, опреде-
ляющую позицию пропускаемой части, надо оставить.
Пример формирования строки, состоящей из чисел от 0 до 9, разде-ленных пробелами:
string s = ""; // Инициализация строки
for (int i = 0; i <= 9; i++) // Перечисление всех чисел s += i.ToString() + " "; // Добавляем число и пробел
MessageBox.Show(s.ToString()); // Показываем результат
Данный пример работает следующим образом. Сначала вычисляет-ся начальное значение переменной i. Затем, пока значение i меньше или равно 9, выполняется тело цикла, и затем повторно вычисляется значение i. Когда значение i становится больше 9, условие – ложно и управление передается за пределы цикла.
Средства отладки программ
Практически в каждой вновь написанной программе после запуска обнаруживаются ошибки.
Ошибки первого уровня (ошибки компиляции) связаны с непра-вильной записью операторов (орфографические, синтаксические). При обнаружении ошибок компилятор формирует список, который отобра-жается по завершению компиляции (рис. 4.1). При этом возможен толь-ко запуск программы, которая была успешно скомпилирована для пре-дыдущей версии программы.
Рис. 4.1. Окно со списком ошибок компиляции
41
При выявлении ошибок компиляции в нижней части экрана появляет-ся текстовое окно (см. рис. 4.1), содержащее сведения обо всех ошибках, найденных в проекте. Каждая строка этого окна содержит имя файла, в ко-тором найдена ошибка, номер строки с ошибкой и характер ошибки. Для быстрого перехода к интересующей ошибке необходимо дважды щелкнуть на строке с ее описанием. Следует обратить внимание на то, что одна ошибка может повлечь за собой другие, которые исчезнут при ее исправле-нии. Поэтому необходимо исправлять их последовательно, сверху вниз и, после исправления каждой – компилировать программу снова.
Ошибки второго уровня (ошибки выполнения) связаны с ошибками выбранного алгоритма решения или с неправильной программной реа-лизацией алгоритма. Эти ошибки проявляются в том, что результат рас-чета оказывается неверным либо происходит переполнение, деление на ноль и др. Поэтому перед использованием отлаженной программы ее надо протестировать, т. е. сделать просчеты при таких комбинациях ис-ходных данных, для которых заранее известен результат. Если тестовые расчеты указывают на ошибку, то для ее поиска следует использовать встроенные средства отладки среды программирования.
В простейшем случае для локализации места ошибки рекомендуется поступать следующим образом. В окне редактирования текста устано-вить точку останова перед подозрительным участком, которая позволит остановить выполнение программы и далее более детально следить за ходом работы операторов и изменением значений переменных. Для этого достаточно в окне редактирования кода щелкнуть слева от нужной стро-ки. В результате чего данная строка будет выделена красным (рис. 4.2).
Рис. 4.2. Фрагмент кода с точкой останова
При выполнении программы и достижения установленной точки программа будет остановлена, и далее можно выполнять код по шагам
с помощью команд Отладка → Шаг с обходом (без захода в методы) или Отладка → Шаг с заходом (с заходом в методы) (рис. 4.3).
42
Рис. 4.3. Отладка программы
Желтым цветом выделяется оператор, который будет выполнен. Значение переменных во время выполнения можно увидеть, наведя на них курсор. Для прекращения отладки и остановки программы нужно выполнить команду меню Отладка → Остановить отладку.
Для поиска алгоритмических ошибок можно контролировать значе-ния промежуточных переменных на каждом шаге выполнения подозри-тельного кода и сравнивать их с результатами, полученными вручную.
Порядок выполнения задания
З а д а н и е : Вычислить и вывести на экран таблицу значений функ-ции y = a·ln(x) при x, изменяющемся от x0 до x k с шагом dx, a – константа.
Панель диалога представлена на рис. 4.4. Текст обработчика нажа-тия кнопки Вычислить приведен ниже.
private void button1_Click(object sender, EventArgs e)
{
// Считывание начальных данных
double x0 = Convert.ToDouble(textBox1.Text); double xk = Convert.ToDouble(textBox2.Text); double dx = Convert.ToDouble(textBox3.Text); double a = Convert.ToDouble(textBox4.Text); textBox5.Text = "Работу выполнил ст. Иванов М.А." +
Environment.NewLine;
// Цикл для табулирования функции double x = x0;
while (x <= (xk + dx / 2))
{
double y = a * Math.Log(x);
textBox5.Text += "x=" + Convert.ToString(x) +
"; y=" + Convert.ToString(y) +
Environment.NewLine;
x = x + dx;
}
}
43
После отладки программы следует проверить правильность работы программы с помощью контрольного примера (см. рис. 4.4). Установите точку останова на оператор перед циклом и запустите программу . После попадания на точку остановки, выполните пошагово программу и про-следите, как меняются все переменные в процессе выполнения.
Рис. 4.4. Окно программы для табулирования функции
Индивидуальные задания
Составьте программу табулирования функции y(x), выведите на экран значения x и y(x) . Нужный вариант задания выберите из нижеприведенного списка по указанию преподавателя. Откоррек-тируйте элементы управления в форме в соответствии со своим ва-риантом задания.
1) y = 10-2 bc / x + cos a 3 x, | 2) y = 1.2(a-b)3e x2 + x, |
x0= -1.5; x k =3.5;dx =0.5; | x0= -0.75; x k = -1.5;dx = -0.05; |
a = -1.25;b = -1.5;c =0.75; | a =1.5;b =1.2; |
44
3) y = 10-1 ax3tg(a - bx),
x 0 = -0.5;x k = 2.5;dx = 0.05;
a = 10.2;b = 1.25;
5) y = x4 + cos(2 + x3 - d),
x 0 = 4.6;x k = 5.8;dx = 0.2;
d = 1.3;
7) y = 9(x +15 x3 + b3 ),
x 0 = -2.4;xk = 1;dx = 0.2;
b = 2.5;
4) y = ax3 + cos2 (x3 - b),
x 0 = 5.3; x k = 10.3;dx = 0.25;
a = 1.35;b = -6.25;
6) y = x 2 + tg(5x + b / x),
x 0 = -1.5; x k = -2.5;dx = -0.5; b = -0.8;
8) y = 9x4 + sin(57.2 + x),
x0= -0.75; x k = -2.05;dx = -0.2;
9) y = 0.0025bx3 + x + e0.82 ,
x0 = -1;xk = 4;dx = 0.5; b = 2.3;
11) y = x + x3 + a - bex ,
x0 = -4;x k = -6.2;dx = -0.2; a = 0.1;
10) y = x × sin( x + b - 0.0084),
x0 = -2.05;xk = -3.05;dx = -0.2; b = 3.4;
12) y = 9(x3 + b3 )tgx,
x 0 = 1;xk = 2.2;dx = 0.2;
b = 3.2;
13) y = x - b 1/ 2 / b3 - x3 3/ 2 + ln x - b , x0 = -0.73;xk = -1.73;dx = -0.1; b = -2;
15) y = 10-3 x 5/ 2 + ln x + b ,
x0 = 1.75;x k = -2.5;dx = -0.25; b = 35.4;
14) y = (x5/2 - b)ln(x2 +12.7), x0 = 0.25;xk = 5.2;dx = 0.3; b = 0.8;
16) y = 15.28 x -3 / 2 + cos(ln x + b), x0 = 1.23; xk = -2.4;dx = -0.3; b = 12.6;
17) | y = 0.00084(ln | x | 5/ 4 + b) /(x2 + 3.82), 18) | y = 0.8×10-5 (x3 + b3 )7 / 6 , | ||||
x0 = -2.35;x k = -2;dx = 0.05; | x0 = -0.05;xk = 0.15;dx = 0.01; | |||||||
b = 74.2; | b = 6.74; | |||||||
19) | y = (ln(sin(x3 + 0.0025)))3/2 + 0.8 ×10-3 , | 20) | y = a + x2/3 cos(x + e x ), | |||||
x0=0.12; x k =0.64;dx =0.2; | x0=5.62; x k =15.62;dx =0.5; | |||||||
a =0.41 |
45
ЛАБОРАТОРНАЯ РАБОТА № 5.
КЛАССЫ И ОБЪЕКТЫ
Цель лабораторной работы: изучить основные понятия,относя-щиеся к классам и объектам, освоить динамическое создание объектов в программном коде.
Классы и объекты
В объектно-ориентированном подходе существуют понятия класс
и объект.
Класс –это программная единица,которая задает общий шаблондля конкретных объектов . Класс содержит все необходимые описа-ния переменных, свойств и методов, которые относятся к объекту. Примером класса в реальной жизни является понятие «автомобиль»: как правило, автомобиль содержит некоторое количество колес, две-рей, имеет какой-то цвет, но эти конкретные детали в классе не опи-сываются.
Объект –это экземпляр класса.Свойства объекта содержат кон-кретные данные, характерные для данного экземпляра. В реальной жиз-ни примером объекта будет конкретный экземпляр автомобиля с 4 коле-сами, 5 дверками и синего цвета.
Дата добавления: 2020-04-08; просмотров: 810; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!