Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка - Основи Програмування C_.doc
Скачиваний:
46
Добавлен:
18.12.2018
Размер:
1.44 Mб
Скачать

2.2. Цикл while.

Синтаксис цього циклу наступний.

while (<вираз-умова >) <інструкція циклу>;

Порядок виконання циклу наступний:

  1. Обчислюється <вираз-умова>, значення якого має бути типу bool. Якщо значенням є false , то дія циклу закінчується. Інакше виконується <інструкція циклу>.

  2. Після цього повторюється перший крок.

Зрозуміло, що в інструкції циклу (або в блоці інструкцій) слід передбачити якийсь вплив на умову циклу, інакше він, розпочавшись, не зможе завершитись.

У наступній програмі обчислюється та сама суму, що була запрограмована з допомогою циклу for у першому прикладі. Переконайтесь у незмінності результату.

using System;

namespace Construct_WhileSum

{

class Program

{

// Обчислюємо ту саму суму, що й у прикладі з циклом for

static void Main()

{

int i = 1;

double sum = 0;

while (i <= 10)

{

sum += Math.Sin(i) / i;

i++;

}

Console.WriteLine("sum = {0}", sum);

}

}

}

У прикладі, наведеному нижче, знаходимо кількість цифр у цілому числі. В циклі while фіксується кількість кроків, за яку число шляхом цілочисельного ділення на 10 перетворюється на 0.

using System;

namespace Construct_whileDigits

{

class Program

{ // знаходимо кількість цифр у цілому числі

static void Main()

{

Console.WriteLine("Введiть цiле число");

long num = long.Parse(Console.ReadLine());

if (num < 0) num = Math.Abs(num);

byte count = 0;

while (num != 0)

{

num /= 10; // Зменшуємо число на один розряд

count++;

}

Console.WriteLine("Кiлькiсть цифр = {0}", count);

}

}

}

2.3. Цикл do-while.

Цей цикл на відміну від попереднього називають циклом з післяумовою, оскільки умова виходу з циклу аналізується вже після його виконання. Він має наступний синтаксис.

do

{

<інструкції циклу>

} while (<вираз-умова >)

Порядок виконання циклу наступний:

  1. Виконуються всі інструкції в тілі циклу.

  2. Обчислюється <вираз-умова> , значення якого має бути типу bool. Якщо його значенням є false , то дія циклу закінчується. Інакше повторюється перший крок.

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

Розглянемо приклад, який забезпечить повторні запуски для тестування вашої програми. Сигналом для виходу стане натискання клавіші ESC . Цей контроль відбувається в умові циклу do-while.

using System;

namespace Construct_do_while

{

class Program

{ // Забезпечуємо повторний запуск програми

// до натискання клавіши ESC

static void Main()

{

// Змінна для збереження значень натиснутих клавіш

ConsoleKeyInfo conKey;

do

{

Console.WriteLine("Тут будуть iнструкцiї програми");

Console.WriteLine("Для виходу натиснiть ESC");

// Одержуємо значення натиснутої клавіши

conKey = Console.ReadKey(true);

} // Порівнюємо його з ESC

while (conKey.Key != ConsoleKey.Escape);

}

}

}

Нижче – інший варіант реалізаціїї тієї ж ідеї, программа виконується повторно до тих пір, поки не буде натиснутий символ ‘1’.

using System;

namespace Construct_do_while

{

class Program

{ // Запит на повторний запуск програми

// Погодження – натискання символу 1

static void Main()

{

string answer;

do

{

Console.WriteLine("Тут будуть iнструкцiї програми ");

Console.WriteLine("Продовжувати виконання? \n

Для пiдтвердження натиснiть 1");

answer = Console.ReadLine();

} while (answer == "1");

}

}

}

Зауваження.

Будь-який з означених циклів може містити інший цикл – так виникають вкладені цикли. Наприклад, для обчислення подвійної суми виду можна використати вкладений цикл:

for (int i = 1; i <= N; i++)

for (int j = 1; i <= M; j++)

s += a (i, j);

Зазначимо ще, що враховуючи сказане вище, можна запропонувати певні правила вибору типу циклу для різних конкретних випадків, а саме:

  1. якщо за логікою програми можлива ситуація, коли тіло циклу взагалі не виконується, краще використовувати цикл з передумовою (while);

  2. якщо за логікою програми тіло циклу повинно бути виконане принаймні один раз, краще використовувати цикл з післяумовою (do-while);

  3. якщо кількість повторень виконання тіла циклу відома заздалегідь, краще використовувати цикл for.