ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 09.09.2024

Просмотров: 14

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

ЛЕКЦІЯ 7. ОПЕРАЦІЇ ПОРІВНЯННЯ. ЛОГІЧНІ ОПЕРАЦІЇ. УМОВНІ ОПЕРАТОРИ

План

1. Операції порівняння і логічні операції.

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

1. Операції порівняння і логічні операції

В мові С існують наступні операції порівняння (в деякій літературі це операції відношення):

> Більше

>= Більше або рівно

< Менше

<= Менше або рівно

!= Не рівно

== Рівно

Використовуючи операції порівняння, в програмах можна визначати, наприклад, істинність наступних виразів: a<b; с != e+f; a+d > k; і т.д. Пріоритет арифметичних операцій вище за операції відносин. Операції відношення обчислюють значення, рівне 1, якщо відношення істинне, або 0, якщо відношення помилкове. Результат від обчислення виразів, в яких використовуються операції порівняння, можна привласнювати змінним.

Програма 1. Приклад демонструє дії операцій порівняння.

void main()

{ int r; clrscr();

r = 3 > 8;

cout << “Результат операції 3 > 8 = ” << r << “\n\n” ;

r = 3 < 8;

cout << “Результат операції 3 < 8 = ” << r << “\n\n” ;

r = 8 > 8;

cout << “ Результат операції 8 > 8 = ” << r << “\n\n” ;

r = 8 >= 8;

cout << “ Результат операції 8 >= 8 = ” << r << “\n\n” ;

r = 3 == 8;

cout << “Результат операції 3 == 8 = ” << r << “\n\n” ;

r = 3 != 8;

cout << “Результат операції 3 != 8 = ” << r << “\n\n” ;

r = 3 + 6 > 8;

cout << “Результат операції 3 + 6 > 8= ” << r << “\n\n” ;

getch(); }

Після виконання програми на екрані з'явиться наступне:

Результат операції 3 > 8 = 0

Результат операції 3 < 8 = 1

Результат операції 8 > 8 = 0

Результат операції 8 >= 8 = 1

Результат операції 3 == 8 = 0

Результат операції 3 != 8 = 1

Результат операції 3 + 6 > 8 = 1

Логічні операції:

операція && – логічне І;

операція || – логічне АБО;

операція ! – логічне НІ.

За допомогою цих операцій можна скласти вираз, який одночасно перевіряє декілька умов. Наприклад, якщо x1, x2, x3, x4 і x5 – відмітки студента по п'яти предметах, то студент буде відмінником тоді і тільки тоді, коли значення виразу

(x1 == 5) && (x2 == 5) && (x3 == 5) && (x4==5) && (x5 ==5)


буде істинним, тобто рівним 1.

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

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

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

if (А) { .. }; S1

Тут if директива умовного оператора (ключове слово мова З); А деякий вираз; { ...} – блок операторів (деяка послідовність директив); S1 перша директива програми, яка слідує за закриваючою фігурною дужкою.

Порядок виконання умовного оператора:

  • обчислюється вираз А в круглих дужках;

  • якщо значення виразу А не рівно нулю, то виконується блок операторів, наступний за оператором if, тобто послідовно виконуються всі директиви у фігурних дужках;

  • якщо значення виразу А рівно нулю, то блок операторів, який слідує за оператором if, пропускається і починає виконуватися директива S1, яка слідує за блоком операторів.

Програма 2. Обчислити ціну на товар собівартістю t грн.


Void main()

{ float s, r, r1, r2 = 0; // s змінна для ціни на товар.

// r змінна для собівартості товару.

clrscr();

cout << “Введи собівартість товару в тис. грн.”;

cin >> r; // Введення з клавіатури вартості товару.

r1 = r * 0.01;

if (r > 50) // Значення виразу r > 50 буде рівно 1, якщо це

// вираз істинний, і 0, якщо помилково.

r2 = r * 0.007; // Податок обчислюватиметься, якщо значення r > 50

// буде рівно 1.

s = r + r1+ r2;

cout << “Вартість товару з урахуванням податку = “ << s << “ \n”;

getch(); }

Друга форма умовного оператора має наступну структуру:

if (А) { .. }; else {...}; S1;

Тут if . else – директива умовного оператора; А деякий вираз; { ...} – блок операторів; S1 перша директива програми, яка слідує за умовним оператором.

Порядок виконання умовного оператора:

  • обчислюється вираз А в круглих дужках;

  • якщо значення виразу А не дорівнює нулю, то виконується блок операторів, який слідує за оператором if. Після цього здійснюється перехід до виконання директиви S1. Блок операторів, який слідує за службовим словом else, не виконується;

  • якщо значення виразу А дорівнює нулю, то блок операторів, який слідує за оператором if, пропускається і починає виконуватися блок операторів, який слідує за службовим словом else. Далі виконується директива S1.

Програма 3. Дано два числа а, b. Знайти максимальне значення з двох чисел.

Алгоритм рішення даної задачі простий. Якщо значення виразу а > b істинне, то максимальним числом є число а. Якщо ж значення виразу а > b помилкове, то максимальним числом є число b.

Void main()

{ int а, b;

clrscr();

cout << “Введи два цілі числа ”;

cin >>a >>b; // Введення з клавіатури двох чисел.

if (а > b)

cout << “max з чисел “ << а << “ ” << b << “= “ << а << “\n”;

else

cout << “max з чисел “ << а << “ ” << b << “= “ << b << “\n”;

getch(); }

В програмі можливі наступні конструкції при використовуванні умовних операторів:


if {

if {… }

else {... }

}

else {

if {…}

else {…}

}

Програма 4. Дано три числа а, b, с. Знайти максимальне значення з трьох чисел.

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

Void main()

{ int а, b, с;

clrscr();

cout << “Введи три цілі числа (набери три числа через пропуски і”

<< “ натискуй Enter)\n”;

cin >> а >> b >> с; // Введення з клавіатури трьох чисел.

if (а > b)

{ if (а > с)

cout << “max= “ << а << “\n”;

else

cout << “max= “ << с << “\n”; }

else

{ if (b>c)

cout « “max= “ «b« “\n”;

else

cout « “max= “ « с« “\n”; }

getch(); }

Програма 5. Знайти максимальне значення з 6 чисел.

Якщо для даної задачі обчислювати максимум по аналогії з приведеними вище прикладами, то код програми вийде складним і заплутаним. Тому запропонуємо інший, більш простий метод обчислення максимуму, який представлений наступним алгоритмом:

Крок 1. Встановлюємо змінні а, b, c, d, е i f

Крок 2. Визначаємо значення змінної max по формулі max = а.

Крок 3. Якщо max < b, значення max обчислюємо по формулі max = b.

Повторюємо крок 3 для змінних c, d, е і f.


Void main()

{int а, b, з, d, е, f;

int max;

clrscr();

cout « “введи 6 цілих чисел ”;

сin >> а >> b >> с; // Введення з клавіатури.

сin >> d >> е >> f;

max = а;

if (max < b)max = b; // Якщо max < b істинно, то в max засилається b.

if (max < c)max = c; // Якщо max < с істинно, то в max з засилається с.

if (max < d)max = d; // Якщо max < d істинно, то в max засилається d.

if (max < e)max = e; // Якщо max < e істинно, то в max засилається e.

if (max < f)max = f; // Якщо max < f істинно, то в max засилається f.

cout << “max= “ << max << “\n”;

getch(); }

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

Програма 6. Знайти корені рівняння а*х2+b*х + с = 0.

Залежно від параметрів це рівняння може бути:

квадратним, якщо а 0; тотожністю, якщо а = b= с = 0;

лінійним, якщо а = 0, b 0; не мати сенсу, якщо а = b = 0, а с ≠ 0.

Алгоритм вирішення задачі можна сформулювати таким чином:

Крок 1. Встановлюємо значення змінних а,b та с.

Крок 2. Якщо а ≠ 0, вирішуємо квадратне рівняння.

Крок 3. Якщо а = 0, b ≠ 0, вирішуємо лінійне рівняння.

Крок 4. Якщо а = b = с = 0, вирішуємо як тотожність.

Крок 5. Якщо а = b = 0, а с ≠ 0, то констатуємо, що рішень немає.

Void main()

{ float а, b, с, d; // а, b, с – змінні для коефіцієнтів рівняння.

float x1, x2; // x1, x2 – змінні для коренів рівняння.

clrscr();

cout << “Введи коефіцієнти рівняння ”;

cin >> а >> b >> с;

if (а != 0) // Якщо вираз а != 0, то рівняння квадратне.

{ d = b * b - (4 * а * с); // Обчислюємо дискримінант.

if (d >= 0) // Якщо вираз d >= 0 істинний, то