Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Metodichka_Mova_S.doc
Скачиваний:
19
Добавлен:
23.02.2016
Размер:
1.14 Mб
Скачать

Оператори

"Складений" оператор

"Складений" оператор – два або більше оператори. Його також називають "блоком".

Синтаксис:

{       [<оператори>] }

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

Оператор розгалуження if

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

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

if (<умова>)<оператор1>;

[else <оператор2;>]

Синтаксична діаграма оператора if має вигляд:

Умова хибна, якщо вона дорівнює нулю, в інших випадках вона істинна. Якщо умова істинна – виконується оператор1, інакше – оператор2.

Тут і надалі оператори можуть бути як простими, так і складеними.

Приклад: знайти корені квадратного рівняння.

. . .

d=b*b-4*a*c;

if (d>=0.0)

{

x1=(-b+sqrt(d))/(2*a);

x2=(-b-sqrt(d))/(2*a);

printf(“\n корені: x1=%f, x2=%f”, x1, x2);

}

else

printf(“\n дійсних коренів не існує.”);

Оператор switch

Синтаксис:

switch(<вираз цілого типу>) {       case <значення_1>:             <послідовність_операторів_1>;       [break;]       case <значення_2>:             <послідовність_операторів_2>;       [break;]       ................................................       case <значення_n>:             <послідовність_операторів_n>;       [break;]       [default:             <послідовність_операторів_n+1>;] }

Оператор-перемикач switch призначений для вибору одного з декількох альтернативних шляхів виконання програми. Виконання оператора switch починається з обчислення значення виразу (виразу, що розташований за ключовим словом switch у круглих дужках). Після цього управління передається одному з <операторів>. Оператор, що отримав управління – це той оператор, значення константи варіанту якого співпадає зі значенням виразу перемикача.

Гілка default (може опускатися, про що свідчить наявність квадратних дужок) означає, що якщо жодна з вищенаведених умов не задовольнятиметься (тобто вираз цілого типу не дорівнює жодному із значень, що позначені у саse-фрагментах), керування передається за замовчуванням в це місце програми. Треба також зазначити застосування оператора break у кожному з case-фрагментів (цей оператор застосовують для негайного припинення виконання операторів while, do, for, switch), що негайно передасть керування у точку програми, яка розташована відразу за останнім оператором у switch-блоці.

Приклад:

. . .

char ZNAC;

float x,y,z,u;

. . .

switch (ZNAC)

{

case '+': x = y + z; break;

case '-': x = y - z; break;

case '*': x = y * z; break;

case '/': x = y / z; break;

default : ;

}

. . .

Оператор циклу з передумовою while

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

Синтаксис :

while (<логічний вираз>)       <оператор>;

Цикл закінчується у наступних випадках:

  1. умовний вираз у заголовку приймає нульове значення;

  2. у тілі циклу досягнуто місця, де розташований оператор break;

  3. у тілі циклу виконаний оператор return.

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

Приклад:

знайти суму цифр заданого натурального числа.

#include <stdio.h>

int main()

{ unsigned n,s=0;

printf(“ Введіть натуральне число\n n=”);

scanf(“%u”,&n);

while(n)

{

s+=n%10;

n\=10;

}

printf(“\n Сума цифр s=%u”,s);

return 0;

}

Оператор циклу з постумовою do … while

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

Синтаксис :

do       <оператор>; while (<логічний_вираз>);

Ситуації, що призводять до виходу з циклу, аналогічні наведеним для циклу while із передумовою.

Приклад обчислення наближеного значення експоненціальної функції в точці із заданою точністю.

#include <stdio.h>

#include <math.h>

int main()

{ int i=1;

float x,rez,dodanok,eps;

printf(“\n x=”); scanf(“%f”,&x);

printf(“\n eps=”); scanf(“%f”,&eps);

rez=1;

dodanok=x/1;

do

{

rez=rez+dodanok;

i++;

dodanok=dodanok*x/i;

}

while (fabs(dodanok)>=eps);

printf(“\n Rezult=%f”, rez);

return 0;

}

Оператор розриву break

Синтаксис :

break;

Оператор розриву break перериває виконання операторів do, for, while або switch.

В операторі switch він використовується для завершення блоку case.

В операторах циклу – для негайного завершення циклу, що не зв'язане з перевіркою звичайної умови завершення циклу. Коли оператор break зустрічається всередині оператора циклу, то здійснюється негайний вихід з циклу і перехід до виконання оператору, що розташований за оператором циклу.

Оператор продовження continue

Синтаксис :

continue;

Оператор continue передає управління на наступну ітерацію в операторах циклу do, for, while. Він може розміщуватися тільки в тілі цих операторів. В операторах do і while наступна ітерація починається з обчислення виразу умови. Для оператора for наступна ітерація починається з обчислення виразу зміни значення лічильника.

Приклад:

int main()

{ int a,b;

for (a=1,b=0; a<100; b+=a,a++)

{ if (b%2) continue;

... /* обробка парних сум */

}

return 0;

}

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

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

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

for([ініціалізація];[перевірка_умови];

[нове_значення])<оператор>;

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

Формально роботу циклу можна описати такими кроками:

  1. якщо перший вираз (ініціалізація) присутній, то він обчислюється;

  2. обчислюється вираз умови (якщо він присутній). Якщо умова повертає значення 0, тобто вона не вірна, цикл припиняється, у протилежному випадку він буде продовжений;

  3. виконується тіло циклу;

  4. якщо присутній вираз зміни лічильника, то він обчислюється;

  5. надалі – перехід до пункту під номером 2.

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

Приклад:

int main()

{ int i, b=0;

for (i=1; i<10; i++)

b+=i*i;

. . .

return 0;

}

"Порожній" оператор

Синтаксис:

;

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

Оператор переходу goto

Синтаксис:

goto <мітка>;

/* ... */

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

Оператор безумовного переходу goto передає управління безпосередньо на <оператор>, перед яким розташована <мітка>. Мітка – це ідентифікатор, розміщений зліва від оператора і відокремлений від нього двокрапкою “:”.

Наприклад,

M1: x+=delta;

Щоб можна було поставити мітку в довільному місці програми (або задати порожнє тіло циклу), в мові С введено порожній оператор, який зображається тільки символом “;” Отже, можна записати такий помічений порожній оператор:

M1:;

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

Оператор, перед яким розташована <мітка>, виконується відразу після виконання оператора goto.

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

При написанні програм не рекомендується використовувати оператор переходу .

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