Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Телекомунікації
Кафедра:
Кафедра Телекомунікації

Інформація про роботу

Рік:
2004
Тип роботи:
Методичні вказівки до лабораторної роботи
Предмет:
Інформатика

Частина тексту файла (без зображень, графіків і формул):

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ Національний Університет “Львівська політехніка” Кафедра “Телекомунікації”  ЛОГІЧНІ І ПОБІТОВІ ОПЕРАЦІЇ ТА ВИРАЗИ МОВИ С. Методичні вказівки до лабораторної роботи з курсу «Інформатика, ч.І» для студентів спеціальності «Телекомунікації» Львів 2004 “Логічні і побітові операції та вирази мови С”. Методичні вказівки до лабораторної роботи з курсу “Інформатика, ч.І” для студентів спеціальності “Телекомунікації”: Львів 2004. 12с. Автори: старший викладач Єрмакова Н.А., доцент Чайковський І.Б. Рецензент: професор, д.т.н. Тимченко О.В. У лабораторній роботі розглянуто властивості операцій порівняння, логічних і побітових операцій мови програмування С. Методичні вказівки розглянуто на засіданні кафедри “Телекомунікації” Національного університету “Львівська політехніка” від______2004р. протокол №____. МЕТА РОБОТИ: дослідити властивості операцій порівняння, логічних і побітових операцій мови програмування С. Попередні відомості. 1. Операції порівняння – бінарні, причому обидва операнди повинні бути чисельними, а результат матиме цілий тип в логічній трактовці (“Так” – ненульове значення 1, “Ні” – 0): вираз < вираз вираз > вираз вираз <= вираз вираз >= вираз Результатом всіх цих операцій є 0, якщо задане відношення хибне, і 1, якщо істинне. Тип результату int. Операції рівності і нерівності відносять до цієї ж групи. Важливо правильно витримувати синтаксис знаку «логічне дорівнює» і розуміти, що ця операція не виконує присвоювання: вираз == вираз вираз != вираз Результатом всіх цих операцій є 0, якщо задане відношення хибне, і 1, якщо істинне. Тип результату int. Ці операції мають нижчий пріоритет, ніж операції попередньої групи, наприклад, у виразі a < b = = c < d спочатку здійснюються порівняння a < b та c < d, результати кожного з них мають значення 0 або 1, після чого операція = = дає результат 0 або 1. Наступну групу складають логічні операції, для яких характерне те, що і операнди, і результат мають цілий тип і трактуються як логічні (“Так” – 1, “Ні” – 0). 3. Операція логічне І виконується згідно таблиці істинності: X Y X&&Y  0 0 0  0 1 0  1 0 0  1 1 1   вираз && вираз Ця операція повертає 1, якщо обидва операнди ненульові, та 0 в противному випадку. Операція гарантує обчислення зліва направо, а якщо лівий операнд є 0, правий не обчислюється. Операнди не повинні бути обов'язково однакового типу, але повинні мати один з основних типів. Результат завжди типу int. 4. Опреація логічне АБО виконується згідно таблиці істинності: X Y X||Y  0 0 0  0 1 1  1 0 1  1 1 1   вираз || вираз Ця операція повертає 1, якщо хоча би один з операндів ненульовий, і 0 в противному випадку. Операція гарантує обчислення зліва направо, а якщо перший операнд не є 0, другий операнд не обчислюється. Тип int. 5. Умовна операція є тернарною (з трьома операндами): вираз ? вираз : вираз Обчислюється значення першого виразу, і, якщо воно не є 0, то результатом буде значення другого виразу, в противному випадку - значення третього виразу. Якщо це можливо, виконуються звичайні арифметичні перетворення для приведення другого та третього виразів до загального типу. Обчислюється тільки один з виразів: другий або третій. Коли виникає необхідність роботи з величинами, що записані побітово, в частинах машинного слова, застосовуються «побітові операції». До таких відносяться: Операції зсуву: вираз << вираз вираз >> вираз Правий операнд перетворюється до типу int. Тип результату співпадає з типом лівого операнду. Результат не визначений, якщо правий операнд від'ємний або більший, або дорівнює довжині об'єкту в бітах. Значенням E1 << E2 є E1 (яке розглядається як бітове представлення), зсунуте вліво на E2 біт; звільнене місце заповнюється нулями. Значенням E1 >> E2 є E1, зсунуте вправо на E2 бітових позицій. Гарантується, що зсув вправо буде логічним (заповнення нулями), якщо E1 має тип unsigned, впротивному випадку він може бути арифметичним (заповнення копією знакового біту). 2. Доповнення (побітове НЕ): ~ операнд Це унарна операція, яка доповнює значення біту кожного розряду операнду до 1. Операнд повинен мати тип int. 3. Побітове І: вираз & вираз Результатом є побітова функція І операндів. Результат обчислюється побітово – для кожного розряду операндів згідно таблиці істинності операції логічне І і записується у відповідний розряд. Операція застосовується тільки до операндів типу int. X Y X^Y  0 0 0  0 1 1  1 0 1  1 1 0  4. Виключене побітове АБО (XOR): вираз ^ вираз Результатом є побітова функція виключене побітове АБО, яка виконується для кожного розряду операндів згідно наведеної таблиці істинності. Застосовується тільки до операндів типу int. Увага! В інших мовах програмування значок ^ застосовують для виконання операції зведення в степінь, але в мові С зведення в другий або третій степінь зручно виконувати простим перемноженням, а в інших випадках для зведення числа х в степінь у слід використовувати вбудовану функцію pow(x,y). 5. Побітове АБО: вираз | вираз Результатом є відповідна побітова функція АБО, яка виконується для кожного розряду операндів згідно наведеної для логічного АБО таблиці істинності. Застосовується тільки до операндів типу int. Пріоритети операцій ОПЕРАТОР АСОЦІАТИВНІСТЬ ( ) [ ] -> . ЗЛІВА НАПРАВО → ! ~ ++ -- - (ТИП) * & SIZEOF ЗЛІВА НАПРАВО → * / % ЗЛІВА НАПРАВО → + - ЗЛІВА НАПРАВО → << >> ЗЛІВА НАПРАВО → < <= > >= ЗЛІВА НАПРАВО → == != ЗЛІВА НАПРАВО → & ЗЛІВА НАПРАВО → ^ ЗЛІВА НАПРАВО → | ЗЛІВА НАПРАВО → && ЗЛІВА НАПРАВО → || ЗЛІВА НАПРАВО → ?: ЗПРАВА НАЛІВО ← = += -= і.т.д. ЗПРАВА НАЛІВО ← , (кома) ЗЛІВА НАПРАВО → ЗАВДАННЯ 1. Здійснити виконання програми порівняння двох чисел: #include <stdio.h> void main(void) { float var1, var2; printf("Введіть перше число (var1): "); scanf("%f", &var1); printf("Введить друге число (var2): "); scanf("%f", &var2); printf("var1 > var2 дає %d\n", var1 > var2); printf("var1 < var2 дає %d\n", var1 < var2); printf("var1 == var2 дає %d\n", var1 == var2); printf("var1 >= var2 дає %d\n", var1 >= var2); printf("var1 <= var2 дає %d\n", var1 <= var2); printf("var1 != var2 дає %d\n", var1 != var2); printf("!var1 дає %d\n", !var1); printf("!var2 дає %d\n", !var2); printf("var1 || var2 дає %d\n", var1 || var2); printf("var1 && var2 дає %d\n", var1 && var2); } 2. Здійснити модифікацію програми згідно взірця, показаного нижче, та запустити її виконання. #include <stdio.h> #define TRUE "ІСТИНА" #define FALSE "ХИБНІСТЬ" void main(void) { float var1, var2; printf("Введіть перше число (var1): "); scanf("%f", &var1); printf("Введіть друге число (var2): "); scanf("%f", &var2); printf("var1 > var2 це %s\n", var1 > var2 ? TRUE : FALSE); printf("var1 < var2 це %s\n", var1 < var2 ? TRUE : FALSE); printf("var1 == var2 це %s\n", var1 == var2 ? TRUE : FALSE); printf("var1 >= var2 це %s\n", var1 >= var2 ? TRUE : FALSE); printf("var1 <= var2 це %s\n", var1 <= var2 ? TRUE : FALSE); printf("var1 != var2 це %s\n", var1 != var2 ? TRUE : FALSE); printf("var1 || var2 це %s\n", var1 || var2 ? TRUE : FALSE); printf("var1 && var2 це %s\n", var1 && var2 ? TRUE : FALSE); printf("!var1 це %s\n", !var1 ? TRUE : FALSE); printf("!var2 це %s\n", !var2 ? TRUE : FALSE); } 3. Створити програму для виконання прикладу: int x,y,z; x=2; y=1; z=0; x=x && y || z; printf ("%d\n",x); printf("%d\n",x || !y && z); #include <stdio.h> #include <conio.h> void main() { int a = 0, b = 3,c; c = b%2 || (a >= 0) && (++b/2*a)==0; printf("a=%d, c=%d\n",a,c); /*a=0,c=1*/ getch(); } #include <stdio.h> #include <conio.h> void main() { int a = 1, b = 0,c; c = b*2 || (a >= 0) && (++b*a)==0; printf("c=%d\n",c); /*c=0*/ getch(); } #include <stdio.h> #include <conio.h> void main() { int x=1, y=2, z; z = (x/2*7 <= 0) && (y < 0) || (y%x == 0); printf("z=%d\n",--z); /*z=0*/ getch(); } #include <stdio.h> #include <conio.h> void main() { int x = 1,z,b = 0,y = 2; z = (x++*y >= 0) || b++ || (x/y*3 == 0); printf("z=%d\n",z); /*z=1*/ getch(); } #include <stdio.h> #include <conio.h> void main() { int x = 1, y = 0, z = 2; int a = 0; z = ((a=x++)*y == 0 || a < 0 && z); printf("z=%d\n",z); /*z=1*/ getch(); } #include <stdio.h> #include <conio.h> void main() { int x = 2,z,y = 0; z = (x == 0) && (y=x) || (y > 0); printf("z=%d\n",z); /*z=0*/ getch(); } #include <stdio.h> #include <conio.h> void main() { int x = 0,y = 3,z; z = (++x > y || y-- && y > 0); printf("z=%d\n",z); /*z=1*/ getch(); } #include <stdio.h> #include <conio.h> void main() { unsigned int x=2,y = 1, z=3,res; char chx = 0xAF; printf("%u\n",x&y|z); /*3*/ x=y=z=2; printf("%u\n",x|y&z); /*2*/ x=3; y=0; z=1; printf("x^y|~z=%u\n",x^y|~z); /*65535*/ printf("3|0^~1=%u\n",x|y^~z); /*65535==11111111*/ x=1;y=2;z=0; printf("1&2|0=%u\n",x&y|z); /*0*/ printf("~1^2&0=%u\n",~x^y&z); /*65534==11111110*/ printf("2|0&1=%u\n",y|z&x); /*2*/ printf("2++&~0|~1=%u\n",y++&~z|~x);/*65534==11111110*/ printf("~3|1&++0=%u\n",~y|x&++z); /*65533==11111101*/ x = 0xAF; printf("%X\n",x>>4); /*A*/ chx<<=7; printf("0x=%X\n",chx); /*(FF)80 ==10000000*/ getch(); } #include <stdio.h> #include <conio.h> void main() { char x=255,y = 0177; printf("%u\n",x&y);/*127*/ x='(tm)'; y = 017; printf("%u\n",x&~y);/*65424*/ y=127; printf("%u\n",x&y);/*->*/ y=128; printf("%u\n",x|y);/*193*/ getch(); } Контрольні запитання. Призначення операторів порівняння та тип результату. Особливість оператора “логчне дорівнює”. Чим відрізняються операнди в логічних операціях від операндів в операціях порівняння? Пріоритети операцій. Таблиця істинності логічного І. Таблиця істинності логічного АБО. Особливості виконання побітових операцій зсуву. Порядок виконання побітових операцій І, АБО. Таблиця істинності побітової операції XOR. Список рекомендованої літератури. Керниган, Ритчи. Программирование на С. М. – 1984, 1990. Березин А.К., Березина В.И. Программирование на С и С++. М. – 1996. Підписано до друку 14.05.2004. Папір офсетний. Друк офсетний. Умов.-друк. арк. 0,38. Формат 60х84 1/16. Наклад 100 прим. Зам. 1050. Віддруковано в НВМ Поліграфічного технікуму УАД 79008, м. Львів, пл. Митна, 1
Антиботан аватар за замовчуванням

01.01.1970 03:01-

Коментарі

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

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!