Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
FEI 2 LabRob 2.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
138.24 Кб
Скачать

If (I) //помилка

Таким чином, необхідно використовувати вирази, що повертають значення типу boolean, або перетворювати до цього типу явно.

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

Нехай у нас є два вирази – X і Y, які повертають значення типу boolean. Нижче наведено таблицю, яка показує, що відбуватиметься, якщо ми почнемо комбінувати ці вирази за допомогою логічних операцій.

X

Y

X && Y

X || Y

true

true

true

true

true

false

false

true

false

true

false

true

false

false

false

false

Оператор switch є альтернативним способом опису умови if з перевіркою якогось виразу на різні значення. Синтаксис цього оператора:

switch (вираз)

{

case значення1:

. . . .

break;

case значення2:

case значення3:

break;

default:

. . . .

break;

}

Під виразом розуміємо будь-який вираз, який має цілий тип або тип даних char, або enum, або string.

Цей оператор обчислює значення виразу і починає проходити по всіх мітках case, порівнюючи значення на співпадіння із значенням виразу. Якщо програма виявила таку мітку, то виконуються всі оператори, які знаходяться після цієї мітки до оператора break, після якого здійснюється перехід в кінець оператора switch. У випадку, якщо відповідну мітку не знайдено, то перехід здійснюється на мітку default:.

Мітка default: може бути відсутня, тоді перехід здійснюється відразу в кінець оператора switch.

char aLabel; // опис змінної-виразу

. . . .

switch (aLabel)

{

case 'A':

Console.WriteLine("aLabel is equals A");

break;

case 'В':

Console.WriteLine ("aLabel is equals B");

break;

default:

Console.WriteLine("aLabel unknown");

break;

}

Якщо необхідно виконати один і той же блок коду для декількох значень, то записують послідовність case-виразів. В цьому випадку працює механізм відсутності оператора break.

У прикладі, який подано нижче, якщо вираз набуває значення 'а', то перехід здійснюється на мітку case 'а':, але операторів після цієї мітки немає і немає оператора break, тому виконуються всі оператори підряд, тобто ті, що йдуть після мітки case 'A':.

char aLabel;

. . . .

switch (aLabel)

{

case 'a':

case 'A':

Console.WriteLine ("aLabel is equals а or A");

break;

case 'b':

case 'В':

Console.WriteLine ("aLabel is equals b or B.");

break;

default:

Console.WriteLine("aLabel unknown");

break;

}

Відзначимо, що мітки, вказані в case, повинні бути унікальні. На відміну від інших мов програмування, у С# можна використовувати оператор goto для переходу на інші мітки в операторі switch.

switch (aLabel)

{

case 'a':

. . . .

goto case 'с';

case 'b':

. . . .

break;

case 'с':

. . . .

goto default;

. . . .

default:

. . . .

break;

Цикли

У мові програмування С# існує чотири оператори, які дозволяють організовувати цикли, це:

while,

do,

for,

foreach.

Цикл while. Найпростішим типом циклу є while. Синтаксис цього оператора:

while (лог. вираз)

{ <тіло циклу> }

лог. вираз може набувати значення або true, або false. Оператор працюватиме до тих пір, поки вираз приймає значення true. На початку роботи йде перевірка умови. Якщо умова є істина, то виконується код тіла циклу, після чого здійснюється перехід на оператора while і знову перевіряється умова. Якщо умова помилкова, то оператора припиняє своє виконання і управління передається команді, наступній за закриваючою фігурною дужкою. Якщо умова не виконується ще на першому кроці, то код в дужках може ніколи і не виконатися.

Фігурні дужки можна опускати, якщо оператор повинен виконувати один рядок коду. Нижче наведено приклад програми з оператором while. Цей приклад видасть послідовність чисел від 0 до 4.

using System;

class whileTest

{

public static void Main()

{

int i=0;

while (i!=5)

{

Console.WriteLine(i);

i++;

}

}

}

Цей же приклад можна записати іншим чином:

using System;

class whileTest2

{

public static void Main()

{

int i=0;

while (i!=5)

Console.WriteLine(i++);

}

}

Цикли while можуть бути вкладеними. Програма, яку наведено нижче, видає на екран таблицю множення в стовпчик.

using System;

class whileTest3

{

public static void Main()

{

int i=2;

while (i!=10)

{

int j=1;

while (j!=10)

Console.WriteLine("{0}*{1}={2}",i,j,i * j++);

i++;

}

}

}

Цикл do while аналогічний операторові while. Його відмінність полягає тільки в тому, що він перевіряє умову після виконання коду усередині оператора. Синтаксис оператора:

do

{

<тіло циклу>

}

while (вираз);

Виходячи з синтаксису оператора, видно, що він виконуватиметься на один раз більше, ніж while за аналогічних умов. Причому код <тіла циклу> буде виконано хоч би один раз.

Розглянемо аналогічний приклад, як і для оператора while.

using System;

class doTest

{

public static void Main()

{

int i = 0;

do

{

Console.WriteLine (i);

i++;

}

while (i!=5);

}

}

Буде виведено на екран послідовність чисел від нуля до 4.

Цикл for. Цей оператор присутній у всіх мовах програмування. Його синтаксис:

for (ініціалізація; вираз; модифікація)

{ <тіло циклу> }

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

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

using System;

class forTest

{

public static void Main()

{

for (int i=0;i<5;)

{

Console.WriteLine(i);

i++;

}

} }

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

Остання частина виконується відразу після виконання всіх операторів в блоці for і призначена для зміни значень змінних, що беруть участь в умові. З урахуванням цього попередній приклад матиме вигляд:

using System;

class forTest2

{

public static void Main()

{

for (int i=0;i<5;i++)

{

Console.WriteLine (i);

} } }

Оператора for дуже просто можна представити за допомогою оператора while.

ініціалізація

while (вираз)

{ оновлення змінних }

Проте оператор for вважається зручним, оскільки дозволяє зібрати розрізнені частини оператора while разом (частина у фігурних дужках). Крім того, кожен з трьох виразів (або всі разом) в дужках може бути відсутнім.

using System;

class forTest3

{

public static void Main()

{

int i=0;

for (;i<10;)

Console.WriteLine (i);

i++;

} } }

Цей приклад повністю аналогічний наступному.

using System;

class forTest4

{

public static void Main()

{

for (int i=0; i<10; i++ )

{

Console.WriteLine(i);

} } }

Або ж з використанням оператора while програму можна записати і так:

using System;

class whileTest4

public static void Main()

{

int i=0;

while(i<10)

{

Console.WriteLine (i);

i++;

} } }

Основна відмінність оператора for полягає в можливості оголошувати змінні в блоці ініціалізації. Причому змінних одного типу ми можемо оголосити декілька, перерахувавши їх через кому. Змінна, оголошена в операторові for, вважається локальною для блоку for, тому використовувати її поза цим блоком не вдасться і код нижче видасть помилку:

using System;

class forTest4

{

public static void Main()

{

for {int i=0;i<10;i++)

{ Console.WriteLine(i); }

Console.WriteLine(i); /помилка компілювання

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]