ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 16.09.2024
Просмотров: 19
Скачиваний: 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 істинний, то