C#. Оператор циклу while. Загальна форма. Приклади рішення задач

Оператор циклу while. Загальна форма. Приклади рішення задач


Зміст


Пошук на інших ресурсах:

 
1. Призначення оператора циклу while. Загальна форма. Особливості використання

Оператор циклу while призначений для організації циклічного процесу, в якому кожна наступна ітерація визначається на основі істинності наперед заданої умови. Оператор циклу while ще називають оператором циклу з передумовою.

Загальна форма оператора циклу while має такий вигляд:

while (умова) оператор;

тут

  • умова – деяка умова згідно синтаксису мови C#. Інструкція оператор виконується до тих пір, поки значення умова = true. Як тільки значення умова стає рівним false, то циклічний процес припиняється і виконуються наступні після while оператори;
  • оператор – один або декілька операторів. Якщо у циклі while потрібно виконати декілька операторів одночасно, то ці оператори беруться у фігурні дужки { }.

Тіло циклу (оператор) виконується, поки значення умова є істинним (true). Оператор циклу повинен бути організований таким чином, щоб в кінцевому випадку значення умови стало рівним false. Інакше, програма “зависне”, тому що вийде вічний цикл.

Загальна форма оператора циклу while, в якому виконуються декілька (два і більше) операторів має наступний вигляд

while (умова)
{
    оператор1;
    оператор2;
    ...
    операторN;
}

 

2. Поняття вкладених циклів while

Цикл while може бути вкладеним в інші конструкції. Цими конструкціями можуть бути:

  • цикли for, while, do…while;
  • оператор умовного переходу if;
  • оператор вибору switch.

Кількість рівнів вкладення, в яких може використовуватись цикл while, є необмеженою.

 

3. Схема оператора циклу while

На рисунку 1 зображена схема оператора while. Як видно зі схеми, спочатку відбувається перевірка умови. Якщо значення умови рівне True, то виконується тіло циклу. Вихід з циклічного процесу відбувається у випадку, якщо значення умови стає рівне False.

C#. Схема оператора циклу while

Рисунок 1. Схема оператора циклу while

 

4. Приклади розв’язку задач з оператором циклу while
4.1. Виведення результатів обчислення в циклі

Умова задачі. Одержати таблицю температур за Цельсієм tc від -50 до +50 градусів та їх еквівалентів за шкалою Фаренгейта tf, використовуючи співвідношення

Формула перетворення градусів Цельсія в градуси Фаренгейту

Розв’язок. Текст програми розв’язку даної задачі для додатку типу Console Application, з використанням циклу while наступний

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication3
{
    class Program
    {
        static void Main(string[] args)
        {
            // шкала температур Цельсій => Фаренгейт
            int tc; // поточне значення температури за Цельсієм
            double tf; // значення температури за Фаренгейтом

            tc = -50;

            Console.WriteLine("Шкала температур: Цельсій - Фаренгейт");
            while (tc <= 50)
            {
                tf = 9.0 / 5.0 * tc + 32;
                tc++;
                Console.WriteLine("{0} C   => {1} F", tc, tf);
            }
        }
    }
}

 

4.2. Рекурентні алгоритми. Обчислення n-го члена послідовності

Умова задачі. Визначити n-й член числової послідовності (n>2):

xn=xn1 + xn2; x0 = x1 = 1

Розв’язок.

Текст програми рішення даної задачі наступний:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication3
{
    class Program
    {

        static void Main(string[] args)
        {
            // обчислення n-го члена послідовності
            int n; // n>2
            int x0, x1, x2;
            int i;

            // ввести значення n
            Console.Write("n = ");
            n = Convert.ToInt32(Console.ReadLine());

            // початкові присвоєння
            x0 = x1 = 1;
            x2 = x0 + x1;
            i = 1;

            while (i <= n - 3) // обчислення
            {
                x0 = x1;
                x1 = x2;
                x2 = x0 + x1;
                i++;
            }
            Console.WriteLine("{0} ", x2);
        }
    }
}

У результаті виконання вищенаведеного коду буде отримано наступний результат

n = 7
13

 

4.3. Обчислити значення числа π з заданою точністю

Умова задачі. Обчислити значення числа π, використовуючи формулу:

Формула числа Пі

Визначити, яку кількість доданків потрібно для визначення числа π з точністю 7 знаків після коми.

Розв’язок. Для розв’язку подібних задач цикл while підходить якнайкраще. Програмний код розв’язку задачі для додатку типу Console Application наведено нижче

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication3
{
    class Program
    {
        static void Main(string[] args)
        {
            // обчислити значення числа Пі
            double pi; // результат
            int denom; // знаменник
            int sign; // змінна, що змінює знак числа + на -, і навпаки
            double t; // додаткова змінна - поточна точність
            const double eps = 0.0000001; // точність 7 знаків після коми
            int k; // кількість доданків для отримання заданої точності

            // початкові приготування
            k = 0;
            pi = 0;          
            denom = 1;
            sign = 1;
            t = 1.0 / denom * sign;

            // цикл while - обчислення
            while (t > eps)
            {
                pi = pi + 4 * t * sign;
                sign = -sign; // змінити знак
                denom += 2; // змінити знаменник
                t = 1.0 / denom;
                k++; // збільшити на 1 кількість доданків
            }

            // вивід результату
            Console.WriteLine("Pi = {0}", pi);
            Console.WriteLine("k = {0}", k);
        }
    }
}

У результаті виконання вищенаведеного коду буде отримано наступний результат

Pi = 3.14159245358978
k = 5000000

 

5. Приклади розв’язку задач, в яких оператор while є вкладеним
5.1. Цикл while є вкладеним в оператор вибору switch

У прикладі цикл while є вкладеним в оператор вибору switch. В залежності від значення змінної a, вибирається відповідний варіант знаходження суми:

  • якщо a=1, то обчислюється s = 5+10+…+100;
  • якщо a=2, то обчислюється s = 5+10+…+20;
  • якщо a=3, то обчислюється s = 5+10;
  • інакше обчислюється s=100.


Програмний код додатку типу Console Application, який розв’язує дану задачу наведено нижче.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication3
{
    class Program
    {
        static void Main(string[] args)
        {
            int a;
            int s = 0;
            int i;          

            a = 7;

            // вибір алгоритму рішення задачі в залежності від значення a
            switch (a)
            {
                case 1:
                    i = 0;
                    while (i < 100)
                    {
                        i = i + 5;
                        s = s + i;
                    }
                    break;
               case 2:
                    i = 0;
                    while (i < 20)
                    {
                        i = i + 5;
                        s = s + i;
                    }
                    break;
               case 3:
                    i = 0;
                    while (i < 10)
                    {
                        i = i + 5;
                        s = s + i;
                    }
                    break;
                default:
                    s = 100;
                    break;
            }
            Console.WriteLine("s = {0}", s);
        }
    }
}

У результаті виконання вищенаведеного коду, на екран буде виведено наступний результат:

s = 100

 

5.2. Цикл while є вкладеним в операторі циклу for

Умова задачі. Знайти кількість дільників кожного з цілих чисел від 120 до 140.

Розв’язок. Нижче наведено програмний код, який розв’язує дану задачу для додатку типу Console Application:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication3
{
    class Program
    {
        static void Main(string[] args)
        {
            // кількість дільників кожного з цілих чисел від 120 до 140
            int i;
            int up;
            int t;
            int k;

            for (i = 120; i <= 140; i++)
            {
                // визначити максимально-допустиме значення дільника
                up = i / 2;
                k = 0; // кількість дільників
                t = 1;
                while (t <= up) // вкладений цикл while
                {
                    if (i % t == 0) // визначення, чи дільник, чи не дільник
                        k++;
                    t++;
                }

                // Вивести на екран дільник
                Console.WriteLine("{0}: k = {1}", i, k);
            }
        }
    }
}

У результаті виконання вищенаведеного коду, буде виведено наступний результат

120: k = 15
121: k = 2
122: k = 3
123: k = 3
124: k = 5
125: k = 3
126: k = 11
127: k = 1
128: k = 7
129: k = 3
130: k = 7
131: k = 1
132: k = 11
133: k = 3
134: k = 3
135: k = 7
136: k = 7
137: k = 1
138: k = 7
139: k = 1
140: k = 11

 


Зв’язані теми