1.)Букви, цифри і символи пропуску мови СІ
великі та малі букви латинського алфавіту (А...Z, a...z);
арабські цифри (0...9);
символ пропуску(пробіл або табуляція)
2.)Розділювачі та спеціальні символи алфавіту мови СІ
Розділювачі: . " , [ ] ( ) { } + – / % \ ; : ? < = > | ~ ^ & * # !
Спеціальні символи:
\n – символ нового рядка;
\r – символ повернення каретки;
\t – символ горизонтальної табуляції;
\v – символ вертикальної табуляції;
\b – символ повернення на крок;
\f – символ переведення формату;
\\ – зворотний слеш;
\ – апостроф;
\ – лапки;
\0 – нуль-символ;
\ddd – байтове значення у вісімковому представленні;
\xdd – байтове значення у шістнадцятковому представленні
3.)Цілі константи і константи з плаваючою крапкою
Ціла константа – це десяткове, вісімкове чи шістнадцяткове число, яке представляє ціле значення. Десяткова константа має наступний формат представлення:
<цифри>
Кожна ціла константа має тип, що визначає її представлення у пам’яті (див. 1.2) Десяткові константи можуть мати тип int (цілий знаковий тип) або long (довгий цілий знаковий тип). Якщо значення десяткової константи більше максимального значення, яке може бути представлено типом int, то дана константа представляється типом long.
Можна явно визначити для любої цілої константи тип long, дописавши до неї суфікс l або L. Наприклад, константа із значенням 10 буде мати тип long тільки у тому випадку, якщо її записати як 10L
Константа з плаваючою крапкою – це дійсне десяткове додатне число. Воно містить цілу частину, дробову частину і експоненту. Такі константи мають наступний формат представлення:
[<цифри>] [ . <цифри>] [<e>[ - ]<цифри>]
де <цифри> – одна чи більше десяткових цифр (від 0 до 9);
< е > – ознака експоненти, яка задається як Е або е.
Зауваження: а) або ціла або дробова частина константи може бути відсутня, але не обидві одночасно. б) або десяткова крапка з дробовою частиною або експонента може бути відсутня, але не обидві одночасно.
Константи з плаваючою крапкою завжди специфікують додатні значення. Для формування від’ємного значення застосовується операція “унарний мінус”. Приклади констант з плаваючою крапкою:
15.75
1.575Е1
1575е-2
-0.0025
-.175Е-2
Усі константи з плаваючою крапкою мають тип double
4.)Символьні константи і символьні рядки
Символьна константа – це літера, цифра, знак пунктуації чи спеціальний символ, обрамлений апострофами. Символьна константа має наступну форму представлення:
' <символ> '
<символ> може бути довільним символом (у тому числі довільним спеціальним символом), за виключенням символів апострофа ('), зворотного слеша (\) і нового рядка (\n). Символи апострофа, зворотного слеша і нового рядка представляються відповідними спеціальними символами – ' \' ' , ' \\ ' та ' \n '.
Приклади символьних констант:
' а ' - мала літера а;
' ? ' - знак питання;
' \b ' - символ повернення на крок.
Усі символьні константи мають тип int.
Символьні рядки – це послідовність символів обрамлених подвійними лапками
“abc123”
5.) Ідентифікатори,ключові слова і коментарі.
Ідентифікатор – це послідовність букв, цифр і символів підкреслення, яка починається з букви або символа підкреслення. Ідентифікатори вживаються для іменування різних об’єктів: типів констант, змінних, функцій тощо. Допустиме довільне число символів у ідентифікаторі, однак лише перші 32 символи розглядаються компілятором як такі, що мають значення.
Приклади правильних ідентифікаторів:
a
temp1
top_of_page
Компілятор мови Сі розглядає букви верхнього і нижнього регістрів як різні символи. Тому наступні ідентифікатори є різними:
add
ADD
aDD
Ключові слова – наперед визначенні індетифікатори, які мають спеціальне значення для компілятора мови Сі. Ключові слова не можна використовувати як ідентифікатори.
Класи пам*яті: auto, extern, register,static.
Типи даних :typedef,union,char,unsigned,double,enum,float,int,long,short,signed,struct,void.
Оператори : switch,break,case,continue,default,while,do,else,for,goto,return.
Операція : sizeof
Коментар – це послідовність символів, яка сприймається компілятором мови Сі як окремий символ пропуску та ігнорується.
Синтаксис коментаря має наступний вигляд:
/* < символи > */
Приклад коментаря:
/* це коментар */
Коментарі можуть займати більше одного рядка програмного тексту:
/* Коментар може займати
декілька рядків */
Коментарі не можуть містити вкладених коментарів тому наступний приклад буде помилковим:
/* Неприпустимі /* вкладені */ коментарі */
6.)Загальна структура програми мови СІ.
Cтандартні заголовочні файли включаються у вихідну програму за допомогою директиви препроцесора #include.
У файлі stdio.h (standart input/output header – заголовний файл вводу/ виводу) містяться оголошення функцій (прототипи) вводу/виводу, зокрема для стандартних бібліотечних функцій printf та scanf.
У файлі math.h знаходяться прототипи стандартних бібліотечних математичних функцій
За допомогою функції scanf відбувається зчитування значень із стандартного пристрою вводу (клавіатури) і присвоєння їх змінним вихідної програми.
За допомогою функції printf здійснюється вивід інформації на дисплей. Синтаксис виклику функції printf має наступний вигляд
#include <stdio.h> /* включення файлів stdio.h та math.h */
#include <math.h> /* у вихідну програму*/
void main(void) /* визначення головної функції*/
{
int x = 5; /* визначення змінної х (оголошення з ініціалізацією
значення */
double y, z; /* оголошення змінних у та z*/
scanf( “%lf”, &y ); /* зчитування з клавіатури значення типу double та присвоєння його змінній y */
z=x+pow(y,2);
printf(“x = %d, z = %lf ”, x, z ); /* вивід на дисплей значень змінних x та z */
}
7.)Час життя та область дії об*єкта
Об*єкт створюється ,коли зустрічається його визначення і знищується коли його ім*я виходить із області видимості.
Оголошення використовуються для визначення інтерпретації,що надається кожному ідентифікатору(імені).Це означає що потрібно задати тип ідентифікатора щоб повідомити компілятор,до якого виду об*єктів відноситься ім*я .
Приклад:
Char symbol
Int number = 1
Double sqrt
Глобальні змінні створюються та ініціалізуються(тільки) один раз й живуть “живуть” до завершення програми
8.)Простір імен.
Це перелік об*ктів імена яких в межах спільної області дії повинні бути унікальними.
В перший простір імен входять змінні ,функції,формальні параметри функції, елементи списку переліку і оголошення імен типу
Другий простір імен це теги
Третій простір імен утворюють елементи структури і об*єднання.
Четвертий простір імен утворюють мітки операторів
9.)Базові типи даних мови СІ
Базові типи
Назва
Довжина,
байт
Діапазон значень
Цілі знакові типи
Символьний
Цілий
Короткий цілийДовгий цілий
сhar
int
short або short int
long або long int
1
2 або 4
2
4
–128...127
– 32768...32767
– 231....231 –1
Цілі беззнакові типи
Символьний
Цілий
Короткий Цілий
Довгий цілий
unsigned char
unsigned або unsigned int
unsigned short
unsigned long
1
2 або 4
2
4
0...255
0...65535
– 232….232 –1
Типи з плаваючою комою
Плаваючий
Плаваючий довгий
float
double або long float
4
8
– 231....231 –1
10-38...1038
10.)Описувачі мови СІ
11.) Оголошення простої змінної.
12.)Оголошення змінної перелічуваного типу.
Такий тип задається переліком усіх елементів множини допустимих значень. Кожне значення іменується певним ідентифікатором і зазначається у списку, який береться у круглі дужки. Ідентифікатор перелічуваного типу треба оголосити у програмі в розділі type. Синтаксис оголошення перелічуваного типу такий:
type <ідентифікатор типу> = (<ідентифікатор_1>,<ідентифікатор_2>,...,<ідентифікатор_n>);
Тут <ідентифікатор типу> - це ідентифікатор перелічуваного типу; <ідентифікатор_1>.....<ідентифікатор_n> — допустимі значення перелічуваного типу.
13.)Оголошення структури.
Оголошення структури починається з ключового слова struct і містить список оголошень, укладений у фігурні дужки: struct імя_структури { список оголошень; }; імя_структури іноді називають тегом структури. Перераховані в структурі змінні називаються елементами. Елементами структур можуть бути: - Змінні та масиви базових типів, - Змінні та масиви для користувача типів, крім типу самої структури імя_структури, - Покажчики на будь-які типи, включаючи і тип самої структури імя_структури, - Функції.
14.)Оголошення об*єднання
Оголошення об*єднання подібне до оголошення структури:задається шаблон об*єднання та перелічуються відповідні змінні.Шаблон об*єднання можна оголошувати окремо або одночасно з оголошенням змінних.У разі автономного оголошення шаблону об*єднання застосовують синтаксичну конструкцію,аналогічну до шаблону структури,але починають її ключовим словом union
Union тег_об*єднання {
тип_поля1 ім*я поля1;
тип_поля2 ім*я_поля2;
. . .
тип_поляk ім*я _поляk;
змінні з типом об*єднання можна оголошувати спільно з оголошенням шаблону або пізніше.У декларації typedef можна сумістити оголошення шаблону об*єднання та його найменування..Оголошуючи змінну з типом об*єднання ,можна відразу проініціалізувати цю змінну,тобто записати у її ділянку певне початкове значення.
15.)Оголошення масиву.
Масиви повинні бути оголошені явно,щоб компілятор міг виділити для кожного з них ділянку пам*яті відповідного обсягу.Оголошення масивів виконують через таку синтаксичну конструкцію:
тип_елементів ім*я масиву[кількість_елементів];
тут тип тип_елементів - довільний допустимий для СІ простий чи складений тип;
ім*я масиву – ідентифікатор,що відповідає правилам запису імен;
квадратні дужки [] – обов*язкова ознака масиву;
кількість_елементів – константа чи константний вираз,що визначає розмірність даного масиву;
Приклад оголошення масивів:
double arr[15] масив з 15-ти дійсних чисел
int vector[4*N] масив з 4*N цілих чисел, N – константа
Оголошуючи масиви,можна відразу ініціалізувати їх елементи.Застосовуючи дві форми ініціалізації.
1)із значенням кількості елементів масиву.
2)без зазначення кількості елементів масиву.
16.)Оголошення покажчика(змінної).
Всі вказівники-змінні обов*язково повинні бути оголошені.Для цого застосовують таку синтаксичну конструкцію
базовий_тип *ім*я_вказівника;
базовий_тип - тип об*єктів програми,адреси яких може зберігати даний вказівник.
* - ознака того,що наступна змінна є вказівником.
ім*я_вказівника – звичайний ідентифікатор
Приклади оголошень вказівників:
char * pc; вказівник на дані типу char
usigned *pl, *p2; два вказівника на дані з типом usigned
long * q, h, w; q – вказівник, h і w – звичайні змінні
17.)Оголошення функції.
Синтаксис:
[<специфікація класу пам’яті>] [<специфікація типу>] <оголошувач>
( [<список аргументів>] );
Оголошення функції специфікує ім’я функції, тип значення що повертається і, можливо, типи її аргументів та їх числові значення. Ці атрибути функції необхідні для перевірки компілятором мови Сі коректності звертання до неї до того, як вона визначена.
Якщо <оголошувач> функції представляє собою ідентифікатор (ім’я функції), то оголошується функція, тип значення якої, що повертається, заданий специфікацією типу. Функція не може повертати масив чи функцію, однак може повертати покажчик на ці об’єкти.
Якщо специфікація типу в оголошенні функції пропущена, то передбачається тип int. На зовнішньому рівні може бути також пропущена специфікація класу пам’яті (див. класи пам’яті), а на внутрішньому рівні хоча б одна із специфікацій – класу пам’яті чи типу – повинна бути присутньою.
Деякі приклади оголошень функцій:
add(int, int); /* приклад 1 */
double calc( ); /* приклад 2*/
void draw(void); /* приклад 3 */
void bul(int a[n][n]); /* приклад 4 */
В першому прикладі оголошується функція з іменем add, яка приймає два аргументи типу int і повертає значення типу int.
В другому прикладі оголошується функція з іменем calc, яка повертає значення типу double. Список типів аргументів пустий.
В третьому прикладі оголошується функція draw з типом що повертає значення void (нічого не повертається). Список типів аргументів також містить ключове слово void, що вказує на відсутність аргументів функції.
В четвертому прикладі оголошується функція bul з типом що повертає значення void. Аргумент функції – двомірний масив (n – розмірність масиву) елементів цілого типу.
Крім явного оголошення, функція може бути оголошена неявно, по контексту її виклику. Неявне оголошення має місце в тому випадку, коли функція викликається без попереднього оголошення чи визначення. В цьому випадку компілятор мови Сі вважає, що функція, яка викликається, має тип значення що повертається int і клас пам’яті extern. Визначення функції, якщо воно є далі в тому ж самому файлі, може перевизначити тип значення що повертається і клас пам’яті.
18.)Оголошення типу.
Існують 2 особливих види оголошення в яких оголошується не змінна чи функція,а тип даних
1ий вид оголошення типу дозволяє визначити тег та елементи структури об*єднання чи перелічуваного типу.Після такого оголошення тег можна використати в оголошенні змінних та функцій для посилання на цей тип.
2ий вид оголошення типу використовує ключове слово typedef .Це оголошення дозволяє присвоїти осмислені імена типам,що існують в мові СІ чи створюються користувачем.
19.)Абстрактні імена типів та їх використання.
20.)Ініціалізація базових типів та покажчиків.
21.)Ініціалізація складених типів.
22.)Рядкові ініціалі затори
23.)Первинні вирази та та операції.
Операція
Назва
Операція
Назва
!
Логічне НІ
&&
Логічне І
~
Зворотний код
||
Логічне АБО
+
Додавання; унарний плюс
,
Послідовне виконання
–
Віднімання; унарний мінус
? :
Умовна операція
*
Множення; значення за адресою
+ +
Інкремент
/
Ділення
– –
Декремент
%
Остача від ділення
=
Просте присвоювання
<<
Зсув вліво
+ =
Присвоювання з додаванням
>>
Зсув вправо
– =
Присвоювання з відніманням
<
Менше
* =
Присвоювання з перемноженням
<=
Менше чи рівне
/ =
Присвоювання з діленням
>
Більше
% =
Присвоювання з залишком від ділення
>=
Більше чи рівне
>> =
Присвоювання з зсувом вправо
= =
Рівне
<< =
Присвоювання з зсувом
вліво
! =
Не рівне
& =
Присвоювання з порозрядним І
&
Порозрядне І; адресація
| =
Присвоювання з пороз-рядним АБО
|
Порозрядне АБО
^ =
Присвоювання з пороз-рядним АБО з виключенням (Присвоювання з порозрядним додаванням за модулем 2)
^
Порозрядне АБО з виключенням (порозрядне додавання за модулем 2)
sizeof
Розмір об’єкту
24.)L-вирази.
25.)Операція унарний мінус(плюс),обернений код,логічне заперечення,sizeof