Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Склад мови




 

2.1.1 Алфавіт і лексеми

У С # використовується кодування символів Unicode. Існує багато різних кодувань символів. Наприклад, в Windows часто використовується кодування ANSI, а конкретно - СР1251. Кожен символ представляється в ній одним байтом (8 біт), тому в цьому кодуванні можна одночасно задати лише 256 символів. У першій половині кодової таблиці знаходяться латинські букви, цифри, знаки арифметичних операцій і інші поширені символи. Другу половину займають символи російського алфавіту. Якщо потрібно представляти символи іншого національного алфавиту (наприклад, албанського), необхідно використовувати іншу кодову таблицю. Кодування Unicode дозволяє представити символи всіх існуючих алфавітів одночасно, що корінним чином поліпшує переносимість текстів. Кожному символу відповідає свій унікальний код. Природно, що при цьому для зберігання кожного символу потрібно більше пам'яті. Перші 128 Unicode-символів відповідають першій частині кодової таблиці ANSI. Алфавіт С # включає:

§ літери (латинські і національних алфавітів) і символ підкреслення (_), який вживається поряд з літерами;

§ цифри;

§ спеціальні символи, наприклад +, *, {, &;

§ пробільні символи (пробіл і символи табуляції);

§ символи переводу рядка.

З символів складаються більші будівельні блоки: лексеми, директиви препроцесора і коментарі.

Лексема це мінімальна самостійна одиниця мови. Існують такі види лексем:

§ імена (ідентифікатори);

§ ключові слова;

§ знаки операцій;

§ роздільники;

§ літерали (константи).

 

Лексеми мови програмування аналогічні словам природної мови. Наприклад, лексемами є число 128 (але не його частина 12), ім'я Vasia, ключове слово goto і знак операції додавання +.

Директиви препроцесора прийшли в С # з мови С ++. Препроцесор - попередня стадія компіляції, на якій формується вид вихідного тексту програми. Наприклад, за допомогою директив (інструкцій, команд) препроцесора можна включити або виключити з процесу компіляції фрагменти коду. Директиви препроцесора не відіграють в С # такої важливої ролі, як в С + +. Ми розглянемо їх детально в розділі "Директиви препроцесора". Коментарі призначені для запису пояснень до програми і формування документації. Правила запису коментарів описані далі в цьому розділі. З лексем складаються вирази і оператори. Вираз задає правило обчислення деякого значення. Наприклад, вираз а + b задає правило обчислення суми двох величин. Оператор задає закінчений опис деякої дії, даних або елемента програми. Наприклад: int а; - оператор опису цілочисельної змінної а.

 

2.1.2. Ідентифікатори і ключові слова

Імена в програмах служать тій же меті, що і імена в світі людей, - щоб звертатися до програмних об'єктів і розрізняти їх, тобто ідентифікувати. Тому імена також називають ідентифікаторами. У ідентифікаторі можуть використовуватися букви, цифри і символ підкреслення. Прописні і рядкові букви розрізняються, наприклад, sysop, Sysop і Sys0p - три різних імені. Першим символом ідентифікатора може бути буква або знак підкреслення, але не цифра. Довжина ідентифікатора не обмежена. Пропуски усередині імен не допускаються. У ідентифікаторах С# дозволяється використовувати окрім латинських букв букви національних алфавітів. Наприклад, Собачка або gg є правильними ідентифікаторами. Більш того, в ідентифікаторах можна застосовувати навіть так звані escape-послідовності Unicode, тобто представляти символ за допомогою його коду в шістнадцятирічному вигляді з префіксом \u, наприклад \u00F2.

Імена даються елементам програми, до яких потрібно звертатися: змінним, типам, константам, методам, міткам і так далі. Ідентифікатор створюється на етапі оголошення змінної (методу, типу і тому подібне), після цього його можна використовувати в подальших операторах програми. При виборі ідентифікатора необхідно мати на увазі наступне:

§ ідентифікатор не повинен збігатися з ключовими словами.

§ не рекомендується починати ідентифікатори з двох символів підкреслення, оскільки такі імена зарезервовані для службового використання.

Для поліпшення читабельності програми слід давати об'єктам осмислені імена, складені відповідно до певних правил. Зрозумілі і узгоджені між собою імена - основа хорошого стилю програмування. Існує декілька видів так званих нотацій - угод про правила створення імен.

У нотації Паскаля кожне слово, що становить ідентифікатор, починається з прописної букви, наприклад, MaxLength, MyFuzzyShoosh. Угорська нотація (її запропонував угорець за національністю, співробітник компанії Microsoft) відрізняється від попередньої наявності префікса, відповідного типу величини, наприклад, iMaxLength, lpFfuzzy. Згідно нотації Camel, з прописної букви починається кожне слово, що становить ідентифікатор, окрім першого, наприклад, maxLength, myFuzzyShoosh. Ще одна традиція - розділяти слова, складові ім'я, знаками підкреслення: max_length, my_fuzzy_shoosh, при цьому всі складові частини починаються з рядкової букви.

У С# для іменування різних видів програмних об'єктів найчастіше використовуються дві нотації: Паскаля і Camel.

Ключові слова - це зарезервовані ідентифікатори, які мають спеціальне значення для компілятора. Їх можна використовувати тільки в тому сенсі, в якому вони визначені. Список ключових слів С# приведений в таблиці. 2.1.

2.1.3. Знаки операцій і роздільники

Знак операції - це один або більш символів, які визначають дію над операндами. Усередині знаку операції пропуски не допускаються. Наприклад, у виразі а += b знак += є знаком операції, а і b - операндами. Операції діляться на унарні, бінарні і тернарні по кількості операндів, що беруть участь в них. Один і той же знак може інтерпретуватися по-різному в залежності від контексту. Всі знаки операцій, за виключенням [ ], () і?:, є окремими лексемами.

Таблиця 2.1.

Ключові слова С#

 

abstract as base bool break
byte case catch char checked
class const continue decimal default
delegate do double else enum
event explicit extern false finally
fixed float for foreach goto
if implicit in Int interface
internal is lock long namespace
new null object operator out
override params private protected public
readonly ref return sbyte sealed
short sizeof stackalloc static string
struct switch this throw true
try typeof uint ulong unchecked
unsafe ushort using virtual void
volatile while      

 

Роздільники використовуються для розділення або, навпаки, групування елементів. Приклади роздільників: дужки, крапка, кома. Нижче перераховані всі знаки операцій і роздільники, що використовуються в С#:

{} [] ().,:: + - * / % & | ^! ~ =

< >? ++ -- && || << >> ==!= <= >= += -= *= /= %= &= |= ^= <<= >>= ->

 

 

2.1.4. Літерали

 

Літералами, або константами називають незмінні величини. У С# є логічні, цілі, дійсніі, символьні і рядкові константи, а також константа null. Компілятор, виділивши константу як лексему, відносить її до одного з типів даних по її зовнішньому вигляду. Програміст може задати тип константи і самостійно. Опис і приклади констант кожного типу приведені в таблиці 2.2.

Як видно з таблиці 2.2, логічних літералів всього два. Вони широко використовуються як ознаки наявності або відсутності чого-небудь. Цілі літерали можуть бути представлені або в десятковій, або в шістнадцятирічній системі числення. Дійсні літерали можуть бути представлені тільки в десятковій системі, але в двох формах: з фіксованою точкою і з порядком. Дійсна константа з порядком представляється у вигляді мантиси і порядку. Мантиса записується зліва від знаку експоненти (Е або е), порядок - праворуч від знаку. Значення константи визначається як множення мантиси і зведеного у вказаний в порядку ступінь числа 10 (наприклад, 1.3е2 = 1,3 • 100 = 130). При записі дійсного числа можуть бути відсутні або ціла частина, або дріб, але не обидві відразу.

Пропуски усередині числа не допускаються. Для відділення цілої частини від дробу використовується не кома, а крапка. Символ Е не є знайомим всім з математики число е, а указує, що далі розташовується ступінь, в який потрібно звести число 10. Якщо потрібно сформувати від’ємну цілу або дійсну константу, то перед нею ставиться знак унарної операції зміни знаку (-), наприклад: -218, -022, -0хЗС, -4.8, -1е4.

Коли компілятор розпізнає константу, він відводить їй місце в пам'яті відповідно до її вигляду і значення. Якщо по яких-небудь причинах потрібно явним чином задати скільки пам'яті слід відвести під константу, використовуються суфікси, описи яких приведені в таблиці. 2.3.

Символьна константа - будь-який символ в кодуванні Unicode. Вони записуються в одній з чотирьох форм:

§ “звичайний” символ, що має графічне уявлення (окрім апострофа і символу перекладу рядка), - 'а', 'ю';

§ послідовність, що управляє, - '\0', '\n';

§ символ у вигляді шістнадцятирічного коду - '\xf', '\ х74';

§ символ у вигляді escape-послідовності Unicode - '\u00ff<file://'/ua81b'>.

Управляючою послідовністю (escape-послідовністю) називають певний символ, що передує зворотною косою межею. Управляюча послідовність інтерпретується як одиночний символ і використовується для уявлення:

§ кодів, що не мають графічного зображення (наприклад \n - перехід в початок наступного рядка);

§ символів, що мають спеціальне значення в рядкових і символьних літералах, наприклад, апострофа.

У таблиці 2.4 приведені допустимі значення послідовностей. Якщо безпосередньо за символом “\” слідує символ, не передбачений таблицею, виникає помилка компіляції.

Таблиця 2.2.

Константи в С#

 

Константа Опис Приклади
Логічна   Ціла true (істина) або false (неправда) Десяткова: послідовність десяткових цифр (0, 1, 2, 3, 4, 5, 6, 7, 8, 9), за якою може слідувати суфікс (U, u, L, l, UL, Ul, uL, ul, LU, Lu, lU, lu). Шістнадцятирічна: символи 0х, за якими слідують шістнадцятирічні цифри (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, А, В, C, D, Е, F), а за цифрами, у свою чергу, може слідувати суфікс (U, u, L, l, UL, Ul, uL, ul, LU, Lu, lU, lu). true false   8 0 199226 8u 0Lu 199226L   0хА 0x1B8 0x00FF 0xAU 0xlB8LU 0x00FFl
Дійсна З фіксованою точкою: [цифри] [.] [цифри] [суфікс] Суфікс - один з символів F, f, D, d, М,m   З порядком: [цифри][.][цифри]{ Е|е}[+ |-] [цифри] [суфікс] Суфікс - один з символів F, f, D, d, М, m 5.7.001 35 5.7F.00ld 5F.00lf 35m     0.2E6.lle+3 5E-10 0.2E6D.lle-3 5E10    
Символьна Символ, взятий в апострофи 'A' 'ю' '\0' '\n' '\xF' '\x74' '\uA81B'
Рядкова Послідовність символів, взятих у лапки "Тут був Vasia" "tЗначення грам = \xF5 \n" "Тут був \u0056\u0061" "С: \\temp\\file1.txt" @"С: \temp\file1.txt
Константа null Посилання, яке не указує ні на який об'єкт Null

 

 

Таблиця 2.3.

Суфікси цілих і дійсних констант

Суфікси Значення
L, l Довге ціле (long)
U, u Беззнакове ціле (unsigned)
F, f Дійсна з одинарною точністю (float)
D, d Дійсна з подвійною точністю (double)
М, m Фінансове десяткового типу (decimal)

 

Таблиця 2.4.

Управляючі послідовності у С#

Вигляд Найменування
Звуковий сигнал
\b Повернення на крок
\f Переведення сторінки (формату)
\n Переведення рядка
\r Повернення каретки
\t Горизонтальна табуляція
\v Вертикальна табуляція
\\ Зворотна коса лінія
\’ Апостроф
\" Лапки
\0 Нуль-символ

 

Символ, представлений у вигляді шістнадцятирічного коду, починається з префікса \0х, за яким слідує код символу. Числове значення повинне знаходитися в діапазоні від 0 до FFFF, інакше виникає помилка компіляції.

Escape-послідовності Unicode служать для представлення символу в кодуванні Unicode за допомогою його коду в шістнадцятирічному вигляді з префіксом \u або \U, наприклад \u0041, \UFFFF. Управляючі послідовності можуть використовуватися і в рядкових константах, названих інакше рядковими літералами. Наприклад, якщо потрібно вивести декілька рядків, можна об'єднати їх в один літерал, відокремивши один рядок від іншого символами \n:

“Ніхто не задоволений своєю\n зовнішністю, але кожен задоволений \n своїм розумом”

Цей літерал при виведенні виглядатиме так:

 

Ніхто не задоволений своєю

зовнішністю, але кожен задоволений

своїм розумом

 

Інший приклад: якщо усередині рядка потрібно використовувати лапки, перед ними стоїть символ “\”, по якому компілятор відрізняє його від лапок, що обмежують рядок:

"Видавничий будинок \"Пітер\"

Як бачите, рядкові літерали з символами, що управляють, декілька втрачають в читабельності, тому в С# введений другий вид літералів - дослівні літерали (verbatim strings). Перед цими літералами вказується символ @, який відключає обробку послідовностей, що управляють, і дозволяє отримувати рядки в тому вигляді, в якому вони записані. Наприклад, два приведених вище за літерал в дослівному вигляді виглядають так:

 

@"Ніхто не задоволений своєю

зовнішністю, але кожен задоволений

своїм розумом"

@"Видавничий будинок "Пітер""

 

Найчастіше дослівні літерали застосовуються в регулярних виразах і при завданні повного шляху файлу, оскільки в ньому присутні символи зворотної косої межі, які в звичайному літералі довелося б представляти за допомогою послідовності, що управляє. Порівняєте два варіанти запису одного і того ж шляху:

 

"C: \\app\\bin\\debug\\a. exe"

@"C:\app\bin\debug\a.exe"

 

Рядок може бути порожнім (записується парою суміжних подвійних лапок ""), порожня символьна константа недопустима.

Константа nul1 є значенням, що задається за умовчанням для величин так званих посилальних типів, які ми розглянемо далі в цьому розділі.

2.1.5. Коментарі

 

Коментарі призначені для запису пояснень до програми і формування документації. Компілятор коментарі ігнорує. У середині коментаря можна використовувати будь-які символи. У С# є два види коментарів: однорядкові і багаторядкові.

Однорядковий коментар починається з двох символів прямої косої межі (//) і закінчується символом переходу на новий рядок, багаторядковий полягає між символами-дужками /* і */ і може займати частину рядка, цілий рядок або декілька рядків. Коментарі не вкладаються один в одного: символи // і /* не володіють ніяким спеціальним значенням усередині коментаря.

Крім того, в мові є ще один різновид коментарів, які починаються з трьох підряд символів косої межі, що йдуть (///). Вони призначені для формування документації до програми у форматі XML. Компілятор витягує ці коментарі з програми, перевіряє їх відповідність правилам, записує їх в окремий файл. Правила завдання коментарів цього вигляду розглянемо у розділі 14.

 




Поделиться с друзьями:


Дата добавления: 2014-12-27; Просмотров: 649; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.054 сек.