|
|||||||||||||||||||||||||||||||||||||||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Символи керуючих послідовностейТаблиця 1.1
Як ескейп-послідовності записують також вказані нижче символи абетки, коли вони використовуються як окремі символьні константи або як елементи символьних рядків: \' – позначення апостофа; \" – позначення лапок; \\ – позначення лівого слеша; \? – позначення знаку питання. Слід запам’ятати ці символи, бо відсутність лівого слеша в їх записах призводить до неправильної інтерпретації компілятором символьних рядків, що може викликати серйозні помилки у роботі програми. Зауваження. У системі програмування Borland C лівий слеш для символу ? є необов’язковим. Якщо лівий слеш записати перед будь-яким іншим символом, що не входить у наведений вище перелік керуючих або спеціальних символів, то такий слеш компілятором просто ігнорується, тобто, двосимвольна послідовність \m інтерпретується як символ m, а послідовність \# – як звичайний символ # і т. п. Через вісімкову та шістнадцяткову форму ескейп-послідовностей можна записати довільний символ ASCII-таблиці. Так, ескейп-послідовність \0 позначає символ з кодом, рівним 0, – перший символ ASCII-таблиці. Цей символ використовують у символьних рядках як ознаку кінця рядка. Ескейп-послідовність \XC9 (або еквівалентна вісімкова форма \311) відповідає символу з ASCII-кодом 201, що належить до символів псевдографіки і позначає верхній лівий куток подвійної рамки: ╔, а ескейп-послідовність \XBA (або \272) позначає символ ASCII-таблиці зкодом 186 – подвійну вертикальну лінію: ║. Незважаючи на те, що в записах ескейп-послідовностей використовуються два, три або й чотири символи, всі вони позначають один символ стандартної кодової таблиці й розглядаються компілятором нарівні з іншими символи мови. 1.2. Лексеми Найменшими змістовними елементами програм, що мають самостійне призначення, є лексичні одиниці (лексеми). Мова С виділяє шість груп лексем: ключові слова, ідентифікатори, константи, символьні рядки, знаки операцій і роздільники. Ключові слова. Ключові слова (їх ще називають зарезервованими або службовими словами) – це набір визначених слів, що використовуються для встановлення типів даних, класів пам’яті даних, формування операторів тощо. Кожне ключове слово має своє призначення, застосовувати їх для іншої мети (зокрема, як імена змінних чи функцій) заборонено. Мова С використовує невеликий набір ключових слів – їх усього 32. Перелічимо ці слова, поділивши їх на групи за призначенням: · ключові слова типів даних: char double enum float int long short signed struct union unsigned void · ключові слова кваліфікаторів типів і класів пам’яті: auto const extern register static volatile · ключові слова операторів: break case continue default do else for goto if return switch while · інші ключові слова: sizeof – операція, typedef – декларація типу. Стандарт С -99 ввів у мову ще п’ять ключових слів: _Bool _Complex _Imaginary inline restrict Крім ключових слів, що підтримуються стандартом мови С, ряд компіляторів використовує додаткові ключові слова, призначені для взаємодії з програмами, написаними на інших мовах програмування, а також для врахування апаратних чи операційних особливостей середовища, в якому реалізується програма. Так, у системі програмування Borland C додатково зафіксовані як ключові наступні слова: asm cdecl _cs _ds _es far fortran huge interrupt near pascal _ss Звернемо увагу, що в ключових словах великі та малі літери вважаються різними, тому в програмах ці слова треба записувати так, як вони вказані вище, наприклад, int, а не Int чи INT. Ідентифікатори. Імена змінних, макросів, міток, функцій та інших об’єктів програми називають ідентифікаторами. Ідентифікатори формують із символів першої групи, тобто з малих і великиких латинських літер, цифр, а також знаку підкреслення. Приклади коректних і помилкових ідентифікаторів: · summa x1 mitka_3 PrintList new_array – правильні; · 2root – невірно, починається з цифри; · res'05 – невірно, містить символ апострофа; · Clear Heap – невірно, містить символ пропуску. Як і в ключових словах, в ідентифікаторах розрізняються великі та малі літери. Зокрема, три наступних ідентифікатори: prod, Prod та PrOd будуть розглядатись компілятором як різні імена. Для наочності та зрозумілості програми важливу роль відіграє змістовність імен об’єктів. Так, ідентифікатор змінної file_name відразу вказує, що ця змінна пов’язана з іменем файла, а ім’я функції OpenNewWindow асоціюється з процедурою відкривання нового вікна. Такої наочності не буде, якщо для цих об’єктів використати короткі ідентифікатори, наприклад, fn та win. Останнє зауваження. Прийнято, що імена внутрішніх об’єктів системи програмування, які використовуються в реалізаціях компіляторів і бібліотечних функцій, починаються одним або двома знаками підкреслення: _heaplen чи _ _FILE_ _. Тому не рекомендується починати зі знаку підкреслення імена змінних та інших об’єктів програми, щоб випадково не спричинити конфлікту імен. Константи. Константи (у літературі можна зустріти термін літерали) – це об’єкти програм, значення яких змінювати не можна. У мові С константи належать до арифметичних даних. Стандарт мови поділяє константи на цілочисельні, дійсні, символьні та перелікові. Питання синтаксису констант, встановлення їх типів, практичного використання та інші детально розглядаються в розділі "Типи даних", тут ми наведемо лише коротку загальну характеристику кожної групи констант. Цілочисельні константи використовуються для позначення цілих чисел зі знаком або без знаку. Можуть мати три форми зображення: · десяткові константи: 5246 200 -13 +45 · вісімкові константи: 034 01002 0515 0777 · шістнадцяткові константи: 0x9243 0XDA07 0x1a3 0X045F Вісімкові константи завжди починаються цифрою 0, за якою записуються вісімкові цифри значення константи (цифри від 0 до 7). Шістнадцяткові константи починаються префіксом 0x або 0X (нуль і маленька чи велика літера x), за яким вказуються шістнадцяткові цифри числа (цифри 0.. 9 та літери a.. f або A.. F). Дійсні константи застосовують для позначення чисел, які мають як цілу, так і дробову частину (тобто, дійсних чисел), а також великих цілих чисел. Дійсні константи можна записувати у двох формах: · константи з фіксованою крапкою: 7.123 0.060 -384.65 · константи з плаваючою крапкою: 276.8e-5 10.02e+8 5157E10 Константи з фіксованою крапкою містять цілу і дробову частини числа, відокремлені між собою десятковою крапкою. У константах з плаваючою крапкою додатково вказується десятковий порядок числа, який записується після літери e або E (від слова експонента). Так, константа 276.8e-5 відповідає дійсному числу 276,8 ×10-5 – це число можна записати інакше: 2.768e-3 або через константу з фіксованою крапкою: 0.002768. Символьні константи (їх ще називають літерними) використовуються у програмах для звертання до окремих символів. Символьна константа позначається одним символом, записаним у апострофах, або ескейп-послідовністю, теж записаною в апострофах. У символьних константах можна використовувати всі символи активної кодової таблиці, зокрема, літери кирилиці, якщо вони наявні в цій таблиці. Приклади символьних констант: 'A' 'a' '*' '5' 'Я' 'щ' '|' '\n' '\a' '\'' '\XB2' Символьні рядки. Ще одним видом лексем-констант мови С є символьні рядки (у літературі їх також називають стрінговими або рядковими літералами). Константний символьний рядок – це послідовність довільних символів кодової таблиці (серед них можуть бути ескейп-послідовності), охоплена лапками: "Press any key..." "Національний університет \"Львівська політехніка\"" "\t Розв\’язок: \n" Зверніть увагу на ескейп-послідовності, якими в другому і третьому рядках позначено внутрішні лапки, апостроф та керуючі символи. В оперативній пам’яті всі символи рядка розташовуються підряд, кожен (в т. ч. ескейп-символ) займає один байт, в якому записується код символа (ASCII-код, за умови, що кодування символів у системі здійснюється за ASCII-таблицею). Особливість константних символьних рядків мови С в тому, що компілятор автоматично долучає до них кінцевий нуль-символ – '\0', який використовується у процесах опрацювання рядків як ознака їх кінця. Дві наступні константи: 'С' та "С" є різними не тільки синтаксично, а й семантично – перша позначає символ і займає у пам’яті один байт, в той час як друга константа є символьним рядком, що займає у пам’яті два байти, в яких послідовно записані коди літери С та нуль-символа ('С'+'\0'). Довжина символьного рядка не обмежується. У разі довгих стрінгових констант часто виникає потреба запису їх у декількох рядках програми. Використовують два способи поділу символьних рядків. Перший є таким: у місці розриву рядка записують лівий слеш, за яким ставлять символ нового рядка (натискують клавішу Enter). Записані в наступному рядку символи вважаються продовженням стрінгової константи: "Приклад довгого символьного рядка \ з перенесенням" Записаний вище рядок є еквівалентним до наступного: "Приклад довгого символьного рядка з перенесенням" Недолік цього способу – в результуючий рядок потрапляють всі символи пропуску, записані перед символом слеша та на початку нового рядка. Другий спосіб перенесення стрінгів використовує ту властивість, що компілятор об’єднує (конкатенує) у спільний рядок два записані підряд стрінги – між ними може бути довільна кількість символів-роздільників: пропусків, символів нового рядка, табуляції тощо. Тому довгий символьний рядок можна просто поділити на частини: "Ще один приклад перенесення" " довгого символьного рядка" Результуючий рядок буде таким: "Ще один приклад перенесення довгого символьного рядка" Знаки операцій, роздільники, коментарі. Описані вище лексеми: ключові слова, ідентифікатори та константи є т. зв. лексемами-словами. У разі, якщо в програмі поруч записують дві лексеми, що є словами, то між ними повинен обов’язково стояти знак операції або роздільник – знак пунктуації чи пробільний символ. Знаки операцій можуть позначатись одним символом або дво- чи багатосимвольною комбінацією із символів другої групи алфавіту мови С. Приклади знаків операцій: + * & <. ^ = – односимвольні операції; ++ || >> -> /= <<= – багатосимвольні операції. Детальному розгляду операцій мови С присвячено розділ "Вирази та операції". До роздільників належать символи, які називають знаками пунктуації: () [ ] { },;: = * # Так, фігурними дужками { } охоплюють тіло функції, знаком ; завершують усі описи та оператори, через знак = ініціалізують змінні в оголошеннях, "зірочкою" * відзначають в описах вказівники тощо. Один і той самий символ у мові С може мати різне призначення, залежно від контексту, в якому він використовується. Наприклад, знаком * позначають дві операції: арифметичне множення і звертання до даних за їх адресами, а також застосовують його як знак пунктуації для оголошення даних вказівникового типу. Роль роздільників лексем відіграють також символи, які називають пробільними: пропуск, символи горизонтальної і вертикальної табуляції, нового рядка, нової сторінки, переходу на початок рядка. Ці символи можна записувати в довільній кількості між будь-якими двома лексемами – але розривати лексеми не можна. Компілятор розглядає послідовність довільних пробільних символів як один розділовий символ, що відокремлює лексеми. У цьому ж призначенні роздільником є і коментар – текст, що роз’яснює програму. Кожен коментар починається двосимвольною комбінацією /* і закінчується парою символів */. Приклад коментаря: /* Сортування рядків за абетковим порядком */ Коментарі можна записувати в довільному місці програми між лексемами. Додаткову інформацію про коментарі можна буде прочитати в наступному розділі.
1. Чи є на основній клавіатурі персонального комп’ютера символи, що не входять до алфавіту мови С? 2. Відомо, що ASCII-код символа цифри 0 є рівним 48. Яким є ASCII-код цифри 5? 3. За розширеними ASCII-таблицями знайти і порівняти, як кодуються українські літери Ї та ї у системі кодування, властивій операційній системі MS DOS та у системі кодування, яку підтримує операційна система Windows. 4. Яким є призначення кожної з наведених ескейп-послідовностей: \07, \n, \\, \X0D? 5. Що таке ключові (службові) слова мови? Назвіть декілька ключових слів мови С. Яке їх призначення? 6. Чи всі, записані далі ідентифікатори є правильними: sto, st3, 1prop, grup-2, grup_5, result#4? 7. Поділіть перелічені цілочисельні константи на десяткові, вісімкові та шістнадцяткові: 1101, 01101, 792, 0, 0X1101, 0x7, 07, 7? 8. Чим можуть бути відокремлені лексеми-слова в тексті програми? 9. Які символи можна використовувати в символьних рядках і коментарях? Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.008 сек.) |