Лабораторные работы си шарп. Цикл 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("введите числовое значение!"); } | 
