Лекція Ядро C#. Оператори icon

Лекція Ядро C#. Оператори




Скачати 124.34 Kb.
НазваЛекція Ядро C#. Оператори
Дата25.10.2012
Розмір124.34 Kb.
ТипЛекція


Мова програмування С# і платформа MS.Net Framework

Лекція 3. Ядро C#. Оператори


План

3.1. Умовні оператори

3.2. Оператори циклу

3.3. Оператори переходу

3.4. Базові конструкції структурного програмування


3.1. Умовні оператори

Умовний оператор if використовується для розгалуження процесу обчислень на два напрями. Структурна схема оператора наведена на рис. 3.1.





Рис. 3.1. Структурна схема оператора if


Формат оператора

if (логічна умова) оператор1

[else оператор2]


Спочатку обчислюється логічна умова. Якщо вона має значення true, виконується перший оператор, інакше — другий. Після цього управління передається на оператор, який слідує за умовним оператором if. Гілка else може бути відсутньою.

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


Приклад 3.1.

if (a>b)

Console.WriteLine(“a>b”);

else

Console.WriteLine(“a<=b”);

Приклад 3.2.

if (a==b) Console.WriteLine(“a=b”);


Логічна умова може бути складною, наприклад:


if ( a < b && ( a > d || a == 0 ) ) b++; else { b *= a; a = 0; }


Оператори if можуть бути вкладеними один в одний.

Вкладені оператори if

if(умова_1) {оператор_1}

else if(умова_2) {оператор_2}

...

else if(умова_K){ оператор_K}

else {оператор_N}


Наприклад:

if ( a < b ) if ( a < c ) m = a; else m = c;

else if ( b < c ) m = b; else m = c;


Зауваження:

Для зрозумілості програми не рекомендується використовувати більше 3 вкладень if.


^ Оператор switch

Оператор switch: (перемикач) - альтернатива вкладеним if. Формат оператора:


switch (вираз)

{

case константний_выраз_1:

[оператори_1 оператор_переходу_1]

...

case константний_выраз _K:

[оператори_K оператор_переходу_K]

[default: оператори_N оператор_переходу_N]

}





Рис. 3.2.  Структурна схема оператора switch


Виконання оператора починається з обчислення виразу. Тип виразу найчастіше цілочисельний (включаючи char) або строковий (string). Потім управління передається першому оператору із списку, поміченому константним виразом, значення якого збіглося з обчисленим. Якщо збігу не сталося, виконуються оператори, розташовані після слова default, а при його відсутності управління передається наступному за switch оператору.

Кожна гілка перемикача повинна закінчуватися явним оператором переходу, а саме одним з операторів break, goto або return:

  • оператор break виконує вихід з самого внутрішнього з охоплюючих його операторів switch, for, while і do;

  • оператор goto виконує перехід на вказану після нього мітку, звичайно це мітка case однієї з гілок оператора switch, що пролягають нижче;

  • оператор return виконує вихід з функції, в тілі якої він записаний.

Частіше за все використовується оператор break.


Приклад 3.3. Консольний калькулятор на 4 дії


using System;

namespace ConsoleCalculator

{ class Program

{ static void Main()

{

string buf;

double a, b, res;


Console.WriteLine( "Введіть перший операнд:" );

a = double.Parse( Console.ReadLine() );

Console.WriteLine( "Введіть знак операції" );

char op = (char)Console.Read();

Console.ReadLine();

Console.WriteLine( "Введіть другий операнд:" );

b = double.Parse( Console.ReadLine() );

bool ok = true;

switch (op)

{

case '+' : res = a + b; break;

case '-' : res = a - b; break;

case '*' : res = a * b; break;

case '/' : res = a / b; break;

default : res = double.NaN; ok = false; break;

}

if (ok) Console.WriteLine( "Результат: " + res );

else Console.WriteLine( "Неприпустима операція" );

}

}

}

^

3.2. Оператори циклу


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

В усіх мовах програмування є два типи циклів: з передумовою і з пост-умовою. Також є цикл з параметром (for).

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

Перевірка умови продовження циклу виконується на кожній ітерації або до тіла циклу (тоді говорять про цикл з передумовою), або після тіла циклу (цикл з пост-умовою).

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

Цикл завершується, якщо умова його продовження не виконується. Можливе примусове завершення як поточної ітерації, так і циклу в цілому. Для цього служать оператори break, continue, return і goto. Передавати управління ззовні всередину циклу забороняється.





В С# для організації циклів використовуються чотири типи циклів: for, while, do, foreach. Всі цикли крім foreach успадковані від С++ і мають той самий синтаксис.


^ Цикл з передумовою while

Синтаксис цикла while:

while (умова)

{список операторів}

Семантика оператора while:

Оператори в тілі циклу виконуються до тип пір, поки умова має значення true.

Приклад 3.4

int a=5678;

while (a>1)

{

a /= 10;

}


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


Приклад 3.5

Напишемо програму, яка виводить для аргументу х, що змінюється в заданих границях із заданим кроком, таблицю значень наступної функції:



Назвемо початкове значення аргументу Xn, кінцеве значення аргументу — Xk, крок зміни аргументу — dX і параметр t. Всі величини дійсні числа (double). Програма повинна виводити таблицю, що складається з двох стовпців: значень аргументу і відповідних ним значень функції.


namespace ConsoleApplication1

{

class Program

{

static void Main(string[] args)

{

double Xn = -2, Xk = 12, dX = 2, t = 2, y;

Console.WriteLine("| x | y |"); // заголовок таблиці


double x = Xn;

while (x <= Xk)

{

y = t;

if (x >= 0 && x < 10) y = t * x;

if (x >= 10) y = 2 * t;

Console.WriteLine("| {0,6} | {1,6} |", x, y);

x += dX;

}

Console.ReadKey();

}

}

}


^ Цикл з пост-умовою do…while

Синтаксис циклу do

do

{ список операторів }

while(умова);


Семантика циклу do…while

Оператори в тілі циклу виконуються до тип пір, поки умова має значення true.

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


Приклад 3.6

int a=5678;

do

{

a /= 10;

} while (a>1);

Цей тип циклу застосовується в тих випадках, коли тіло циклу необхідно обов'язково виконати хоч б один раз.


Приклад 3.7


namespace ConsoleApplication1

{

class Program

{

static void Main(string[] args)

{

char answer;

do

{

Console.WriteLine("Будете вчитися?");

answer = (char)Console.Read();

Console.ReadLine();

} while (answer != 'y');


}

}

}


^ Цикл з перебором (for)

Синтаксис оператора:


for (ініціалізатор; умова; список_виразів)

{ оператори}


Семантика оператора

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

for ( int i = 0, j = 20; ...

int k, m;

for (k = 1, m = 0; ...


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

Вираз типу bool визначає умову виконання циклу: якщо його результат рівний true, цикл виконується.

Модифікації виконуються після кожної ітерації циклу і служать для зміни параметрів циклу. У частині модифікацій можна записати декілька операторів через кому, наприклад:

for ( int i = 0, j = 20; i < 5 && j > 10; i++, j-- ) ...

Простий або складений оператор є тілом циклу. Будь-яка з частин оператора for може бути опущена (але крапки з комою треба залишити на своїх місцях!).


Приклад 3.8. Обчислення суми чисел від 1 до 100:

int s = 0;

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

s += i;


Приклад 3.9. Обчислення ступеню n числа, xn (для n>0)


static public double Power(double x, int n)

{

double z=1;

for (int i=1;n>=i;i++)

{

z = z*x;

}

return z;

}


^ Цикл перебору FOREACH

Новим видом циклу, не успадкованим від С++, є цикл foreach, зручний при роботі з масивами, колекціями та іншими подібними контейнерами даних.


^ Синтаксис циклу foreach :

foreach(тип ідентифікатор in контейнер)

{оператори}


Семантика циклу foreach

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


Приклад 3.10

int[] a ={ 10, 20, 30, 40 };

foreach (int i in a) { System.Console.WriteLine(i); };

^

3.3. Оператори переходу


У С# є п'ять операторів, що змінюють природний порядок виконання обчислень:

  • оператор безумовного переходу goto;

  • оператор виходу з циклу break;

  • оператор переходу до наступної ітерації циклу continue;

  • оператор повернення з функції return;

  • оператор генерації виключення throw.

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

Оператор goto


Оператор безумовного переходу goto використовується в одній з трьох форм:

goto мітка;

goto case константний_вираз;

goto default;

У тілі функції має бути присутня тільки одна конструкція вигляду:

мітка: оператор;


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

Друга і третя форми оператора goto використовуються в тілі оператора вибору switch. Оператор goto case константний_вираз передає управління на відповідну константному виразу гілку, а оператор goto default — на гілку default.
^

Оператор break


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

Оператор continue


Оператор переходу до наступної ітерації поточного циклу continue пропускає всі оператори тіла циклу, що залишилися до кінця, і передає управління на початок наступної ітерації.
^

Оператор return


Оператор повернення з функції return завершує виконання функції і передає управління в точку її виклику. Синтаксис оператора:

return [ вираз ];

Тип виразу повинен мати неявне перетворення до типу функції. Якщо тип значення, який повертає функція описаний як void, вираз має бути відсутнім.


^

3.4. Базові конструкції структурного програмування


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

У C# ідеї структурного програмування використовуються на найнижчому рівні — при написанні методів об'єктів. Доведено, що будь-який алгоритм можна реалізувати лише з трьох структур, які називаються базовими конструкціями структурного програмування: це послідовність, розгалуження і цикл.

Послідовністю називається конструкція, що реалізовує послідовне виконання двох або більше операторів (простих або складних).

Розгалуження задає виконання того чи іншого оператора залежно від виконання якої-небудь умови. Реалізується за допомогою операторів if та switch.

Цикл реалізує багатократне виконання операторів. Реалізується за допомогою операторів циклу. В C# є 4 типи операторів циклу: while, do, for, foreach.





^ Базові конструкції структурного програмування

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

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

Висновки

Для організації розгалужень в програмі використовуються оператори if і switch, синтаксис яких повністю співпадає з C++. Для організації циклу використовуються оператори циклу for, while, do, foreach. Всі цикли крім foreach успадковані від С++ і мають той самий синтаксис. У C# з'явився новий вид циклу foreach, зручний для роботи з масивами та іншими колекціями (про колекції мова йтиметься далі).

Для зміни порядку виконання програми в C# є оператори переходу: goto, break, continue, return і throw. Ці оператори можуть передати управління в межах блоку, в якому вони використані, і за його межі.

Хоча, як вже було сказано, С# є об'єктно-орієнтованою мовою програмування, при написанні методів використовуються конструкції структурного програмування за допомогою яких можна реалізувати будь-який алгоритм.

^

Питання і завдання для самостійної роботи студента


  1. У яких випадках краще використовувати оператор switch, а не оператор if?

  2. Чому не доцільно використовувати багато вкладених оператор if?

  3. Який тип циклу краще використовувати при роботі з масивами?

  4. Чим відрізняються цикли while і do? Що таке пост-умова і передумова?

  5. Поясніть сенс використання базових конструкцій структурного програмування.

  6. Вивчіть по довідковій системі склад простору імен System.

  7. Вивчіть властивості і методи стандартного класу Console по довідковій системі.

  8. Лабораторна робота № 3.

Схожі:

Лекція Ядро C#. Оператори iconТип модуля: обов’язковий Семестр: ІІ обсяг модуля
Блок-схеми. Розгалужені алгоритми. Мови І транслятори. Фортран: вирази І оператори, введення І виведення інформації, оператори переходу...
Лекція Ядро C#. Оператори iconЗаняття n 51. "Vіі, ІX, X та XІ пари черепних нервів"
Назвіть парасимпатичне ядро VІІ пари черепних нервів та місце його розташування: верхнє слиновидільне ядро в покриві мосту
Лекція Ядро C#. Оператори iconЛекція 10. Динамічний розподіл пам'яті План 10 Поняття динамічної пам'яті та її розподіл >10 Послідовний пошук підходящого блоку
Прикладом бібліотечної та мовної підтримки засобів динамічного розподілу пам'яті є функції mallос(), free() бібліотеки мови С, оператори...
Лекція Ядро C#. Оператори iconСхема аналізу лекції
Тип лекції (вступна; інформаційна (тематична); заключна (підсумкова); оглядова; нетрадиційна (наприклад, лекція-брифінг, лекція-конференція,...
Лекція Ядро C#. Оператори iconСимволи мови Сі Змінні і константи в Сі Масиви в Сі. Операції, вирази, оператори в Сі

Лекція Ядро C#. Оператори icon1. Ядро на латинi: Енуклiацiя це
Якi структурнi компоненти цитоплазми морфологiчно зв`язанi з зовнiшньою мембраною карiотеки?
Лекція Ядро C#. Оператори iconУдк 334. 72 Іваненко О. А
...
Лекція Ядро C#. Оператори iconМ. П. Драгоманова удк 372. 878 Падалка Галина Микитівна Лекція
Лекція з авторського курсу «Теорія І методика викладання мистецьких дисциплін» на тему: «Принципи навчання мистецтва»
Лекція Ядро C#. Оператори iconНапрям: 0907 Радіотехніка Спеціальність
...
Лекція Ядро C#. Оператори icon1 В микропрепарате спинного мозга необходимо проанализировать состояние ядра, нейроны которого образуют моторные окончания в скелетной мускулатуре. Укажите данное ядро. A
На розтині померлого після абдомінальної операції в венах малого тазу були знайдені
Додайте кнопку на своєму сайті:
Документи


База даних захищена авторським правом ©zavantag.com 2000-2013
При копіюванні матеріалу обов'язкове зазначення активного посилання відкритою для індексації.
звернутися до адміністрації
Документи