Урок 5. Цикл Do..while

Лабораторные работы си шарп. Цикл 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 значение свойства text
    form Lab7 Сумма ряда
    button btnCalc Вычислить
    textbox 1 txtX 0
    textbox 2 txtPrecision 0
    Label lblResult 0
    Labels
  1. Внимание! Свойства name всех элементов управления должны быть заданы в соответствии с таблицей.
  2. Создайте новый проект, дайте ему имя — Lab7; свойство name формы должно быть Lab7 (окно Свойства window → (Name)).
  3. Расположите элементы управления, как на рисунке.
  4. Запрограммируйте событие Click для кнопки. Для того чтобы это сделать дважды щелкните по кнопке на форме.
  5. Объявите переменные для хранения значений: количество слагаемых, суммы и само слагаемое:
  6. private void btnCalc_Click(object sender, EventArgs e)
      {
        // здесь ваш код
        int counter=0; // количество слагаемых
        double sum=0; // сумма
        double summand=0.0; // слагаемое
        double x;
       //...
    }
  7. Для вычисления суммы ряда будем использовать цикл do..while. Каждое слагаемое — это результат операции деления x на counter. Для того, чтобы избежать появления ошибки в случае неверного значения для x, будем использовать процедуру TryParse():
  8. //...
    do
                {
                    counter++;
                    if (double.TryParse(txtX.Text, out x)){
                        summand = x / counter;
                    }
                    sum += summand;
                } while (Math.Abs(summand) > double.Parse(txtPrecision.Text));
  9. Результат будем размещать в метке lblResults. Для этого после цикла добавьте код:
  10. lblResult.Text = "сумма = " + sum + ", количество = " + counter;
  11. Запустите приложение, используйте запятую в качестве плавающей точки, например: 0,3.
  12. Изменим условие цикла так, чтобы при вводе некорректного значения для приращения, не возникала бы ошибка. Будем использовать логическую переменную. Добавьте код непосредственно перед циклом:
  13. bool f = false;
                if (double.TryParse(txtPrecision.Text, out precision)) {
                    f = true;
                }
    переменная f — индикатор того, правильно ли введено значение для приращения. Если значение верное, то f = true.
  14. Изменяем условие цикла:
  15. //..
    while (f && Math.Abs(summand) > precision);
    Проверяем значение «индикатора» f. Если true, то приращение задано верно, можем продолжить выполнение тела цикла. Ну и кроме того слагаемое должно быть больше приращения (по условию задания).
  16. В том случае, если пользователь вводит некорректное значение, будем информировать его об этом, используя класс Messagebox и оператор if. Измените код вывода результатов:
  17. if (f) { 
                    lblResult.Text = "сумма = " + sum + ", количество = " + counter;
                }
                else
                {
                    MessageBox.Show("введите числовое значение!");
                }
  18. Запустите приложение.