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

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

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

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

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

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ Національний університет «Львівська політехніка» Кафедра «Телекомунікації»  ЛОГІЧНІ І ПОБІТОВІ ОПЕРАЦІЇ ТА ВИРАЗИ МОВИ С Методичні вказівки до лабораторної роботи з дисципліни «Інформатика телекомунікаційних систем та мереж, ч.IІ» для студентів базового напряму 6.0924 «Телекомунікації» Затверджено на засіданні кафедри «Телекомунікації» Національного університету «Львівська політехніка», протокол №___ від______2009 р. Львів 2009 МЕТА РОБОТИ: дослідити властивості операцій порівняння, логічних і побітових мови програмування С. Попередні відомості. Операції порівняння – бінарні, причому обидва операнди повинні бути арифметичного типу, або вказівниками. Результат цілочисельний: 0 (хибність) або 1 (істинність). Тип результату int. вираз < вираз вираз > вираз вираз <= вираз вираз >= вираз Операції рівності і нерівності відносять до цієї ж групи. Важливо правильно витримувати синтаксис знаку «логічне дорівнює» - ця операція не виконує присвоювання: вираз == вираз вираз != вираз Результатом цих операцій є 0, якщо задане відношення хибне, і 1, якщо істинне. Тип результату int. Ці операції мають нижчий пріоритет, ніж операції попередньої групи, наприклад, у виразі a < b = = c < d спочатку здійснюються порівняння a < b та c < d, результати кожного з них мають значення 0 або 1, після чого операція = = дає результат 0 або 1. Для логічних операцій характерне те, що і операнди, і результат мають цілий тип і трактуються як логічні (“Так” – 1, “Ні” – 0). Операція логічне І виконується згідно таблиці істинності: X Y X&&Y  0 0 0  0 1 0  1 0 0  1 1 1   вираз && вираз Ця операція повертає 1, якщо обидва операнди ненульові, та 0 в противному випадку. Операція гарантує обчислення зліва направо, а якщо лівий операнд є 0, правий не обчислюється. Операнди не повинні бути обов'язково однакового типу, але повинні мати один з основних типів. Результат завжди типу int. Опреація логічне АБО виконується згідно таблиці істинності: X Y X||Y  0 0 0  0 1 1  1 0 1  1 1 1   вираз || вираз Ця операція повертає 1, якщо хоча би один з операндів ненульовий, і 0 в противному випадку. Операція гарантує обчислення зліва направо, а якщо перший операнд не є 0, другий операнд не обчислюється. Тип int. Умовна тримісна операція (тернарна). На відміну від унарних і бінарних операцій умовна тернарна операція використовується з трьома операндами. В зображенні умовної операції використовуються два символи ‘?’ i ‘:’ і три вирази: вираз1 ? вираз2 : вираз3. Першим обчислюється виразу1. Якщо воно істинне, тобто не дорівнює нулю, то обчислюється значення виразу2, яке стає результатом. Якщо при обчисленні виразу 1 отримується 0 (нуль), то в якості результату приймається значення виразу3. Приклад: x<0? – x : x; Вираз повертає абсолютну величину змінної х. Коли виникає необхідність роботи з величинами, що записані побітово, в частинах машинного слова, застосовуються «побітові операції». До таких відносяться: Операції зсуву (визначені тільки для цілочисельних операндів): операнд лівий операція зсуву операнд правий << – зсув ліворуч бітового представлення лівого цілочисельного операнда на кількість розрядів, що дорівнює значенню правого цілочисельного операнда. >> – зсув праворуч бітового представлення лівого цілочисельного операнда на кількість розрядів, що дорівнює значенню правого цілочисельного операнда. 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. Бочков С.О. Субботин Д.М. Язык программирования Си для персонального комп’ютера. М.- Диалог-1990. Подбельский В.В. Фомин С.С. Прграммирование на языке Си. М.-Финансы и статистика. – 2002.
Антиботан аватар за замовчуванням

01.01.1970 03:01-

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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