Частина тексту файла (без зображень, графіків і формул):
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСТИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»
Кафедра інформаційних
систем та мереж
Лабораторна робота №4
на тему:
«Операції та вирази мови Cі»
Львів - 2009
Мета роботи: Навчитись записувати та інтерпретувати вирази на основі форматів машинного зображення даних, визначеної множини операцій мови С/C++ та їх пріоритетів.
Методичні вказівки:
Кожне завдання складається із двох варіантів, розміщених у частинах 1 та 2.
У завданнях першої частини необхідно:
розставити пріоритети операцій (див. табл. 3) та обчислити значення заданого виразу, використовуючи формати машинного зображення даних та правила виконання операцій; послідовність обчислень навести у звіті про виконання лабораторної роботи;
написати програму для обчислення заданого виразу;
результат обчислення вивести на екран;
порівняти обчислене значення виразу з отриманим результатом програми;
при неспівпаданні значень переглянути послідовність та результати виконання операцій.
У завданнях другої частини необхідно:
утворити вираз, використовуючи оголошення типів змінних, операції та бібліотечні функції мови Сі;
написати програму на мові Сі, задати або ввести вхідні дані та вивести на екран результат обчислення виразу;
оформити звіт за результатами виконання обох завдань лабораторної роботи.
Пріоритети операцій мови Сі
Операція
Найменування операції
Порядок виконання
НАЙВИЩИЙ ПРІОРИТЕТ
()
Виклик функції
Зліва направо
[]
Виділення елементу масиву
.
Виділення елемента структури
або об’єднання
->
Виділення елемента структури
за допомогою вказівника
!
Логічне заперечення
Зправа наліво
~
Порозрядне доповнення
-
Мінус (зміна знаку)
++
Збільшення на одиницю (інкремент)
--
Зменшення на одиницю (декремент)
&
Отримання адреси
*
Звертання по визначеній адресі (розіменування вказівника)
(тип)
Явне перетворення типу
sizeof
Визначення розміру в байтах
*
Множення
Зліва направо
/
Ділення
%
Ділення за модулем (залишок)
+
Додавання
Зліва направо
-
Віднімання
<<
Арифметичний зсув вліво
Зліва направо
>>
Арифметичний зсув вправо
<
Менше
Зліва направо
<=
Менше або дорівнює
>
Більше
>=
Більше або дорівнює
==
Дорівнює
Зліва направо
!=
Не дорівнює
&
Порозрядне логічне множення (I)
Зліва направо
^
Порозрядна сума за модулем два
Зліва направо
|
Порозрядне логічне додавання (АБО)
Зліва направо
&&
Логічне множення (I)
Зліва направо
||
Логічне додавання (АБО)
Зліва направо
?:
Умовна операція
Зправа наліво
=
Присвоєння
Зправа наліво
*= /= %= += -= <<= >>= &= |= ^=
Комбіноване присвоєння
,
Кома
Зліва направо
Н А Й Н И Ж Ч И Й П Р І О Р И Т Е Т
Примітка: операції, охоплені контуром жирних ліній, мають однаковий рівень пріоритетів.
Варіанти індивідуальних завдань
Частина 1. Вивчення пріоритетів операцій мови Сі
char a=77; char b=177; short
c=161; int d=12; int e=-2;
!a--%++b>!c++>>++d>>-e
#include<stdio.h>
#include<conio.h>
void main()
{char a=77;
char b=177;
short c=161;
int d=12;
int e=-2;
int z;
z=!a--%++b>!c++>>++d>>-e;
int f=!a--;
int g=f%++b;
int h=!c++;
int j=++d;
int k=h>>j>>-e;
int l=g>k;
clrscr();
printf("My result = %d\n\n", l);
printf("Real result = %d", z);
getch();}
Частина 2. Побудова виразів мови Сі
Ввести два цілих числа. Написати вираз, який приймає істинне значення, якщо остання цифра більшого числа не дорівнює 5.
#include<stdio.h>
#include<conio.h>
void main()
{int x,y,c;
clrscr();
printf("Vveditj zminni x y:\n");
scanf("%d %d",&x,&y);
c=((((x>y)?x:y)%10)!=5);
if(c)
printf("Yes");
else
printf("No");
getch();}
Висновок: На цій лабораторній роботі я навчився записувати та інтерпретувати вирази на основі форматів машинного зображення даних, визначеної множини операцій мови С/C++ та їх пріоритетів.