Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
C_LAB_07_Usloviya_L18_Metodichka_ukr.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
180.22 Кб
Скачать

Ci: Практична робота №7 до лекції №18.

Практична робота № 7

Програмна реалізація алгоритмів розгалуженої структури

Мета роботи - отримання практичних навичок в роботі з умовним оператором і розгалуженими алгоритмами в мові C.

Тими для попереднього опрацювання:

  1. Логічні операції;

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

Варіанти індивідуальних завдань.

Див. додаток 1.

Теоретична частина.

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

Операції порівняння.

Операція порівняння

Приклад 1

Приклад 2

вираз

значення

вираз

значення

<

5>3

1

2>3

0

>

5<9

1

9<5

0

<=

5<=5

1

5<=2

0

>=

5>=2

1

5>=10

0

Операція рівності.

Операція рівності

Приклад 1

Приклад 2

вираз

значення

вираз

значення

==

5= =5

1

5= = 4

0

!=

5 != 4

1

5 != 5

0

Логічні операції об'єднання .

Логічне И (&&)

операнд 1

операнд 2

операнд 1 && операнд 2

1

1

1

1

0

0

0

1

0

0

0

0

Цю операцію ще називають логічним множенням.

Логічне АБО (||)

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

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

операнд 1

операнд 2

операнд1 || операнд1

1

1

1

1

0

1

0

1

1

0

0

0

Цю операцію ще називають логічним складанням.

Приклад. Обчислити значення логічного виразу при наступних значеннях логічних величин : А = Істина, В = Хибність, С = Хибність:

а) А або В; б) А і В; в) В або С.

Текст програми.

void main()

{

// А = Істина, В = Хибність, С = Хибність:

// а) А або В; б) А і В; в) В або С.

int A=1; // Істина

int B=0; // Хибність

int C=0; // Хибність

cout<<A<<"або"<<B<<"="<<(A||B)<<endl; // 1||0 -> 1

cout<<A<<"и"<<B<<"="<<(A&&B)<<endl; // 1&&0 -> 0

cout<<B<<"або"<<C<<"="<<(B||C)<<endl; // 0&&0 -> 0

cout<<endl;

system("pause");

}

Умовний вираз а < b заклечається в дужки, тому що оператор << має більший пріоритет, і компілятор, якщо не поставити дужки, зрозуміє останню інструкцію програми як вивід на екран змінної a (cout << a). Далі начебто треба виконувати операцію cout < b, але з об'єктом cout це неможливо, і компілятор, видавши повідомлення про помилку, припинить роботу.

Результат:

1 или 0 = 1

1 и 0 = 0

0 или 0 = 0

Исключающее ИЛИ ^

операнд 1

операнд 2

операнд1 ^ операнд1

1

1

0

1

0

1

0

1

1

0

0

0

int A=1; // Істина

int B=0; // Хибність

int C=0; // Хибність

cout<<A<<" ^ или "<<B<<" = "<<(A^B)<<endl; // 1^0 -> 0

cout<<B<<" ^ или "<<C<<" = "<<(B^C)<<endl; // 0^0 -> 1

Логічне НЕ (!)

Операнд

!Операнд

Пример

Результат

1

0

!(5==5)

0

0

1

!(3==2)

1

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

Наприклад, вираз b= =0 можна скорочено записати !b

  1. Вираження b= =0 набуватиме значення істино (рівне 1), якщо b=0.

  2. !!b буде істино (1), якщо b=0 тобто !0 - істина.

Приклад. Обчислити значення логічного виразу при наступних значеннях логічних величин : А = Істина, В = Хибність, С = Хибність:

A=1 B=0 C=0

а) не А і В

(!A&&B) !1&&0 0&&0 -> 0

б) А або не В

(A&&!B) 1&&!0 1&&1 -> 1

в) А і В або С

(A&&B||C) 1&&0||0 0||0 -> 0

Пріоритет виконання логічних операцій.

!

Вищий пріоритет

&&

Середній пріоритет

||

найменший пріоритет

Приклад. Записати умову, яка є істинною, коли кожне з чисел А і В більше 100;

#include <iostream>

#include <windows.h>

#include <iomanip>

using namespace std;

void main()

{

SetConsoleCP(1251);

SetConsoleOutputCP(1251);

//Записати умову, яка є істинною, коли кожне з чисел А і В більше 100;

int a, b;

char otv;

do

{

cout<<"a= ";

cin>>a;

cout<<"b= ";

cin>>b;

cout<<"a="<<" b="<<" Результат: "<<(a>100&&b>100)<<endl;

cout<<"\nПродолжить (Y/N)?";

cin>>otv;

}while (otv=='Y');

cout<<endl;

system("pause");

}

Результат:

a= 103

b= 108

a= b= Результат(a>100&&b>100): 1

Продолжить (Y/N)?Y

a= 15

b= 200

a= b= Результат(a>100&&b>100): 0

Продолжить (Y/N)?Y

a= 10

b= 0

a= b= Результат(a>100&&b>100): 0

Продолжить (Y/N)?n

Конструкція логічного вибору if

Блок-схема оператора if.

Неповний умовний оператор.

Синтаксис:

if (умова) оператор(и);

.

Приклад. Визначити, чи лежить число в заданому діапазоні.

Вхідні дані:

Ціле число n.

Початкове і кінцеве значення діапазону : a і b;

Вихідні:

Повідомлення - "Число лежить в заданому діапазоні".

void main()

{

SetConsoleCP(1251);

SetConsoleOutputCP(1251);

int n=10,a=5,b=12;

if(n>a&&n<b) cout<<n<<" лежит внутри интервала "<<a<<" и "<<b;

cout<<endl;

system("pause");

}

Повний умовний оператор.

Синтаксис:

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

else оператор2;

Приклад розв’язання завдання.

Завдання для розв’язання.

Написати програму, яка вводить координати точки (x, y) і визначає, чи потрапляє точка в заштриховану область на малюнку, який відповідає Вашому варіанту. Попадання на межу області вважати попаданням в область.

Вхідні дані:

Координати точки x і у. Тип даних –double.

Розробка алгоритму.

  1. Введення координат точки : x і y. Для більшої зручності при аналізі результатів, виведемо введені значення на екран.

  2. Визначення цільової області.

  • Дослідження зображення дає основу стверджувати, що цільова область утворюється перетином : прямої у=kx+b з коефіцієнтом k = -1 і зміщенням b=1 і кола з центром (0,0) і радіусом 1.

Рівняння прямої :

y=-x+1

Рівняння кола :

x2+y2=1

Для перевірки попадання точки в задану область треба перевірити умови того, що :

  1. Точка лежить вище прямою або на ній, тобто:

y>=-x+1

  1. Точка лежить усередині кола або на ній, тобто:

x2+y2<=1

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

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