- •Інструкція
- •2. Теоретичні відомості
- •2.1. Вступ
- •2.1.1. Алфавіт мови c
- •2.1.2. Типи і розміри даних
- •2.1.3. Константи
- •2.1.4. Декларації
- •2.2. Структура програми
- •2.2.1. Операції
- •Операції аналогічні операціям в мові Паскаль і Фортран.
- •Операції відсутні в мовах Паскаль і Фортран. Інкрементні та декрементні операції.
- •Для ілюстрації цих операцій виконайте таку програму
- •Побітові операції
- •Операція “?”
- •Операція присвоєння.
- •2.2.2. Пріорітет і порядок виконання операцій.
- •2.3. Перетворення типів
- •2.4. Оператори
- •2.4.1. Оператор if
- •2.4.2. Оператор switch
- •2.1. Директиви препроцесора
- •2.1.1. Макровизначення
- •#Define ідентифікатор (список ідентиф) стрічка заміни.
- •2.1.2. Умовна компіляція.
- •2.2. Оператори циклу у мові с.
- •1) З оператором while:
- •2) З оператором do-while
- •3) З оператором for
- •2.3. Управляючі оператори break, continue I goto.
- •2.4. Специфіка використання операторів break і contіnue.
- •2.5. Форматований ввід-вивід
- •Вивід символів
- •Вивід чисел
- •Вивід адрес
- •Специфікатор %n
- •Модифікатори формату
- •Модифікатор мінімальної ширини поля
- •Модифікатор точності
- •Ввід чисел
- •Ввід цілих чисел без знака
- •Ввід окремих символів
- •Ввід рядків
- •2.6. Функції і перемикання вводу-виводу.
- •3. Контрольні запитання
- •4. Лабораторне завдання
- •Мета роботи.
- •6. Список літератури
- •Завдання до лабораторної роботи
2.2.1. Операції
Умовно операції в мові C можна розбити на такі групи:
Операції аналогічні операціям в мові Паскаль і Фортран.
1)Арифметичні операції: унарні: +;-; бінарні +;-;*;/; (додавання, віднімання, множення, ділення)
До операції ділення в сові C потрібно відноситись дуже уважно. Якщо обидва операнди цілого типу, то і результат буде цілого типу, тому S=2/5; в результаті виконання цього оператора S присвоїться 0, щоб одержати правильний результат необхідно щоб хоча б один операнд був дійсного типу, тобто S = 2.0 /5.0;
У мові C є ще одна бінарна операція % - знаходження залишку від ділення цілих чисел.
K=7% 2; - присвоїти змінній цілого типу К значення 1, оскільки 7:2=3 і 1 залишок. До змінних дійсного типу ця операція не застосовується.
2) Операції порівняння: >; >=; <; <=;
3) Операційні рівності: = = - рівне; != - не рівне
4) Логічні операції: ! - логічне “ні”; || - логічне “або”;
&& - логічне “і”.
Операції відсутні в мовах Паскаль і Фортран. Інкрементні та декрементні операції.
Інкрементна операція ++ додає 1 до свого операнда.
Оператор n++; можна записати n=n+1;
Декриментна операція - - віднімає 1 від свого операнда. Розрізняють два види цих операцій:
1)префіксні ++n - змінна n збільшується на 1 до того, як використовується у виразі;
2)постфіксні n++ - змінна n збільшується на 1 після того, як її значення буде використано у виразі.
Для ілюстрації цих операцій виконайте таку програму
# include<stdio.h>
main()
{
int a=1, b=1;
int aplus, plusb;
aplus=a++;
plusb=++b
рrintf (“a aplus b plusb”);
printf(“%3d%5d%5d%5d\n”, a, aplus, b, plusb);
}
В результаті виконання цієї програми одержимо: а aplus b plusb
2 1 2 2
Значення а збільшилось на 1 після того як виконалась операція присвоєння. Значення b спочатку збільшилось на 1, а тоді виконалась операція присвоєння.
Побітові операції
В мові C існує 6 операцій для роботи з бітами.
& - побітове “і”;
| - побітове “або”;
^ - побітове “виключаюче “або”;
~ - побітове “ні”;
>> - зсув вправо;
<< - зсув вліво.
& - побітове “і” - бінарна операція, що по розрядах порівнює два двійкові числа. Результат дорівнює 1, якщо обидва операнди рівні 1 у цьому розряді, тобто
10010011
00111101
_______
00010001
| - побітове “або”. Результат 1, якщо хоча б у одного операнда у цьому розряді 1, тобто
10010011
00111101
_______
10111111
^ - побітове “виключаюче “або” Для кожного розряда результат допівнює 1, якщо один з двох відповідних розрядів дорівнює 1, але не обидва одночасно.
10010011
00111101
_______
10101110
~ - побітове “ні” - унарна операція, яка заміняє кожну 1 на 0, а 0 на 1.
~(10010011)= =01101100
>> - зсув вправо - зсуває розряди лівого, операнда вправо на кількість позицій вказаних у правому операнді (10010011)<<2= =(00100100)
<< - зсув вліво - зсуває розряди лівого операнда вліво на кількість розрядів, що вказані в правому операнді: (10010011)>>2= =(01001100) позиції, які звільняються заповнюються нулями.
Операція “?”
Умовний оператор if у мові C можна замінити операцією виду “?”:”
z=(a<b)? a:b;
Цей оператор відповідає оператору умовного переходу такого виду:
if(a<b)
z=a;
else
z=b;
Операція присвоєння.
У мовах Паскаль і Фортран такої операції не було. Було поняття “оператор присвоєння”. У мові C немає одностойкості у застосуванні термінів “оператор” і операція. Так у [1, 2] термін “оператор” застосовується і як поняття інструкція і як поняття “операція”, в [3, 4] ці поняття розділені аналогічно мовам Паскаль і Фортран.
Операція присвоювання може мати такий вигляд:
<змінна>=<вираз>;
<змінна><знак операції>=<вираз>;
наприклад:
1)S=S+4
2)S+=4
У першому випадку операція присвоювання аналогічна оператору присвоювання у Паскалі і Фортрані, у другому - знак арифметичної операції виноситься за знак “=”;
В операції присвоювання можуть використовуватись такі операції:
+,-,*,/,%,<<,>>,&,|