Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
програмування.docx
Скачиваний:
42
Добавлен:
05.03.2016
Размер:
1.55 Mб
Скачать

Відповіді:

1.Операція присвоєння

У Сі присвоюються значення виразів. Крім простого привласнення допомогою операції =, Сі

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

1. Звичайне змінна=вираз

2. Послідовне зиінна1=....зміннаN=вираз

3. Присвоїння з одночасним виконанням операцій змінна+=вираз, змінна/=змінна+=+вираз

Приклади:

х+=1

а/=5

b&=c

y+=a*b-c*d

4. Послідовне з використанням +.-.*./

a+=b*=c/=a+b

2.Умовний вираз (операція ? ) на мові Сі

    Умовна операція ?: - єдина тернарна операція в мові Сі. Її синтаксис :

умова ? вираз_1 : вираз_2

    Принцип її роботи такий. Спочатку обчислюється вираз умови. Якщо цей вираз має ненульове значення, то обчислюється вираз_1. Результатом операції ?: в даному випадку буде значення виразу_1. Якщо вираз умови рівний нулю, то обчислюється вираз_2 і його значення буде результатом операції. В будь-якому випадку обчислюється тільки один із виразів (вираз_1 або вираз_2).

    Наприклад, дану операцію зручно використати для знаходження найбільшого з двох чисел x і y:

max=(x>y)?x:y;

    Приклад 1 :

#include<stdio.h>

void main()

{

  int points;

  printf("Введiть оцiнку [2..5]:");

  scanf("%d",&points);

  printf("%s",points>3?"Ви добре знаєте матерiал!":"Погано...");

}

    Приклад 2 :

j = (i<0) ? (-i) : (i); /* змінній j присвоюється модуль i*/

3.Вираз послідовного обчислення (операція , )

    Операція "кома" (,) називається операцією послідовного обчислення, яка "зв'язує" два довільних вирази. Список виразів, розділених між собою комами, обчислюються зліва направо. Наприклад, фрагмент тексту

a=4;

b=a+5;

    можна записати так :

a=4, b=b+5;

    Операція послідовного обчислення використовується в основному в операторах циклу for()

    Для порівняння наводимо приклад з використанням операції слідування (приклад 1) та без неї (приклад 2):

    Приклад 1.

int a[10],sum,i;

/* ... */

sum=a[0];

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

sum+=a[i];

    Приклад 2.

int a[10],sum,i;

/* ... */

for (i=1,sum=a[0];i<10;sum+=a[i],i++) ;

4.Оператор if

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

if (вираз) {оператор}: ;

Виконання оператора if починається з обчислення виразу.

Далі виконання здійснюється за наступною схемою:

- Якщо вираз істинний (тобто відмінно від 0), то виконується оператор.

- Якщо вираз помилково, то виконується наступний за if оператор.

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

Приклад: if (i <j) i + +:

Оператор if-else

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

if (вираз){оператор-1}; else {оператор-2};

Виконання оператора if починається з обчислення виразу.

Далі виконання здійснюється за наступною схемою:

- Якщо вираз істинний (тобто відмінно від 0), то виконується оператор-1.

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

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

Приклад:

if (i <j) i + +:

else {j = i-3; i + +;}

Цей приклад ілюструє також і той факт, що на місці оператор-1, так само як і на місці оператор-2 можуть знаходитися складні конструкції.

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

Приклади:

int main ()

{

int t = 2, b = 7, r = 3;

if (t> b)

{

if (b <r) r = b;

}

else r = t;

return (0);

}

В результаті виконання цієї програми r стане рівним 2.

Якщо ж у програмі опустити фігурні дужки, що стоять після оператора if, то програма буде мати наступний вигляд:

int main ()

{

int t = 2, b = 7, r = 3;

if (a> b)

if (b <c) t = b;

else

r = t;

return (0);

}

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