Лабораторные работы си шарп. Цикл Do..while loop»
Приложения для Windows forms
Лабораторная работа 7. Цикл Do..while
Выполнить: Создайте приложение Windows Forms Application , которое вычисляет сумму ряда x + x/2 + x/3 + x/4 + …
для (|x
| < 1) и количество слагаемых в этой сумме. Расчет производится пока приращение не будет меньше заданной точности.
[Solution and Project name: Lab7
, form name Lab7.cs
]
Пример выполнения:
✍ Алгоритм:
-
Инструментарий:
- Внимание! Свойства name всех элементов управления должны быть заданы в соответствии с таблицей.
- Создайте новый проект, дайте ему имя — Lab7; свойство name формы должно быть Lab7 (окно Свойства window → (Name)).
- Расположите элементы управления, как на рисунке.
- Запрограммируйте событие Click для кнопки. Для того чтобы это сделать дважды щелкните по кнопке на форме.
- Объявите переменные для хранения значений: количество слагаемых, суммы и само слагаемое:
- Для вычисления суммы ряда будем использовать цикл
do..while
. Каждое слагаемое — это результат операции деленияx
наcounter
. Для того, чтобы избежать появления ошибки в случае неверного значения дляx
, будем использовать процедуруTryParse()
: - Результат будем размещать в метке
lblResults
. Для этого после цикла добавьте код: - Запустите приложение, используйте запятую в качестве плавающей точки, например:
0,3
. - Изменим условие цикла так, чтобы при вводе некорректного значения для приращения, не возникала бы ошибка. Будем использовать логическую переменную. Добавьте код непосредственно перед циклом:
- Изменяем условие цикла:
- В том случае, если пользователь вводит некорректное значение, будем информировать его об этом, используя класс Messagebox и оператор
if
. Измените код вывода результатов: - Запустите приложение.
элемент управления | значение свойства name |
значение свойства text |
---|---|---|
form | Lab7 | Сумма ряда |
button | btnCalc | Вычислить |
textbox 1 | txtX | 0 |
textbox 2 | txtPrecision | 0 |
Label | lblResult | 0 |
Labels |
private void btnCalc_Click(object sender, EventArgs e) { // здесь ваш код int counter=0; // количество слагаемых double sum=0; // сумма double summand=0.0; // слагаемое double x; //... } |
//... do { counter++; if (double.TryParse(txtX.Text, out x)){ summand = x / counter; } sum += summand; } while (Math.Abs(summand) > double.Parse(txtPrecision.Text)); |
lblResult.Text = "сумма = " + sum + ", количество = " + counter; |
bool f = false; if (double.TryParse(txtPrecision.Text, out precision)) { f = true; } |
переменная
f
— индикатор того, правильно ли введено значение для приращения. Если значение верное, то f
= true
.//.. while (f && Math.Abs(summand) > precision); |
Проверяем значение «индикатора»
f
. Если true, то приращение
задано верно, можем продолжить выполнение тела цикла. Ну и кроме того слагаемое должно быть больше приращения (по условию задания).if (f) { lblResult.Text = "сумма = " + sum + ", количество = " + counter; } else { MessageBox.Show("введите числовое значение!"); } |