
МІНІСТЕРСТВО ОСВІТИ І НАУКИ, МОЛОДІ ТА СПОРТУ УКРАЇНИ
НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ УНІВЕРСИТЕТ УКРАЇНИ
«КИЇВСЬКИЙ ПОЛІТЕХНІЧНИЙ ІНСТИТУТ»
КОНСПЕКТ ЛЕКЦІЙ
з дисципліни:
«ІНФОРМАТИКА.ПРОГРАМУВАННЯ ТА АЛГОРИТМІЧНІ МОВИ»
для студентів всіх форм навчання
Київ – 2013
КОНСПЕКТ ЛЕКЦІЙ
з дисципліни:
«ІНФОРМАТИКА.ПРОГРАМУВАННЯ ТА АЛГОРИТМІЧНІ МОВИ»
для студентів всіх форм навчання
Укладач: Недашківська Лариса Михайлівна, ст.викл.
Відповідальний
за випуск Л.Д.Писаренко, докт.техн.наук
Рецензент: І.В.Мельник, докт.техн.наук.
Конспект лекцій з дисципліни «Інформатика. Програмування та алгоритмічні мови», Л.М.Недашківська, К.-НТУУ «КПІ», 2013, 126с.
КОНСПЕКТ ЛЕКЦІЙ
з дисципліни:
«ІНФОРМАТИКА.ПРОГРАМУВАННЯ ТА АЛГОРИТМІЧНІ МОВИ»
для студентів всіх форм навчання
Укладач: Недашківська Лариса Михайлівна, ст.викл.
Відповідальний
за випуск Л.Д.Писаренко, докт.техн.наук
Рецензент: І.В.Мельник, докт.техн.наук.
ЗМІСТ
ЗАГАЛЬНІ ВІДОМОСТІ ПРО ДИСЦИПЛІНУ 5
Лекція 1. Середовище Windows та система програмування Visual C++ 6.0 6
РОЗДІЛ 1. ЛЕКСИЧНІ ОСНОВИ МОВИ С++ 17
Лекція 2. Алфавіт мови С++ та ідентифікатори 17
Лекція 3.Оператори керування роботою програми. 26
РОЗДІЛ 2. ТИПИ ДАНИХ У МОВІ С++ 42
Лекція 4. Прості типи 42
Лекція 5. Вказівний тип та посилання 55
РОЗДІЛ 3. ПОХІДНІ ТИПИ ДАНИХ У МОВІ С++ 65
Лекція 6. Масиви 65
Лекція 7. Функції. 78
Лекція 8. Перевантаження функцій. Шаблони функцій. 87
Лекція 9.Структури та об’єднання 94
РОЗДІЛ 4.ВВЕДЕННЯ ТА ВИВЕДЕННЯ ІНФОРМАЦІЇ У МОВІ С++ 105
Лекція 10.Засоби введення та виведення у мовах С та С++ 105
ДОДАТОК. Ключові слова мови С++ 136
СПИСОК ЛІТЕРАТУРИ 137
Загальні відомості про дисципліну
Програмні засоби у наш час присутні практично у всіх областях народного господарства. Всі електронні пристрої містять різноманітне програмне забезпечення, без якого у сучасному світі неможливо уявити індустріальне виробництво, школи та університети, систему охорони здоров’я, фінансові та провладні заклади.
Дисципліна «Програмування та алгоритмічні мови», яка вивчається студентами першого курсу навчання, покликана автоматизувати процеси моделювання об’єктів електроніки з використанням інженерних обчислень та відтворенням результатів у графічному вигляді. У даному курсі студенти використовують теорію та методи програмування для успішного вирішення проблем, що виникають.
Існує велика кількість мов програмування, які пропонують користувачам та розробникам програмних засобів сервісні можливості для створення нових програмних комплексів та професійного користування існуючими системами програмування.
Конспект лекцій має за мету підвищення ефективності вивчення мови програмування Visual C++, оскільки ця мова містить можливості нового технологічного підходу до розробки програмного забезпечення, який отримав назву об’єктно-орієнтованого програмування. У багатьох випадках програми, написані мовою С++, за швидкодією виконання порівнюються з програмами, написаними мовою асемблера.
Конспект лекцій містить необхідний матеріал для досконального вивчення основних положень мови, які дають можливість написання швидкодіючих та компактних програм. Доповненням до конспекту лекцій є «Методичні вказівки до виконання лабораторних робіт з дисципліни «Інформатика. Програмування та алгоритмічні мови» та «Методичні вказівки до написання реферату за розділом «Графічні можливості середовища Visual C++», які у комплексі з модульними контрольними роботами спонукатимуть до професійного застосування набутих знань у автоматизації інженерних досліджень.
Вищеназвана дисципліна є базовою для курсу «Програмування та алгоритмічні мови. Об’єктно-орієнтоване програмування”.
ВСТУП. КОНЦЕПЦІЇ ТА ЗАСОБИ ПРОГРАМУВАННЯ У СЕРЕДОВИЩІ WINDOWS
Лекція 1. Середовище Windows та система програмування Visual C++ 6.0
План лекції(2 години)
Середовище Windows
Графічний інтерфейс користувача
Бібліотеки динамічного компонування
Черги повідомлень.
Забезпечення багатозадачності
Апаратна незалежність програм
Засоби керування пам’яттю
Формат виконавчих файлів
Загальна характеристика системи Visual C++ 6.0
Середовище Windows
Windows - це багатозадачна операційна система з графічним інтерфейсом. Всі програми, розроблені для цього середовища, повинні відповідати визначеним стандартам та вимогам. Це стосується насамперед зовнішнього вигляду вікна програми та принципів взаємодії з користувачем. Завдяки стандартам, загальним для всіх додатків Windows, користувач легко орієнтуватиметься у принципах роботи довільного додатку.
Операційна система Windows надає можливість розробляти програмні комплекси з уніфікованим графічним інтерфейсом. Для цього у середовищі Windows застосовується мова програмування С++.
Для написання додатків для Windows розроблена велика кількість системних функцій, які надають можливість легко додавати у програми, що розробляються, контекстні меню, смуги прокрутки, діалогові вікна, значки та багато інших елементів інтерфейсу користувача. А існуюча різноманітність шрифтів та простота їх інсталяції значно полегшують роботу з форматування текстових даних, що виводяться.
Windows надає можливість роботи з різними периферійними пристроями, такими як монітор, клавіатура, миша, принтер та інші, незалежно від типу названих пристроїв. Це дає змогу завантажувати додатки в комп’ютери з різною апаратною конфігурацією.
Основною перевагою Windows є стандартизований графічний інтерфейс користувача, багатозадачність, досконалі засоби керування пам’яттю, апаратна незалежність та можливість широкого застосування бібліотек динамічного компонування (DLL). Розглянемо докладніше сказане вище.
Графічний інтерфейс користувача
Додатки Windows повинні мати стандартизований графічний інтерфейс, тобто схожий зовнішній вигляд вікон та схожі набори команд меню. Стандартний інтерфейс полегшує роботу не лише користувачам, але й програмістам. Для додавання у додаток меню чи діалогового вікна досить скористатися однією зі стандартних функцій Windows.
Функціональні можливості Windows значною мірою забезпечуються за рахунок використання бібліотек динамічного компонування. Саме завдяки вказаним бібліотекам до ядра операційної системи додається графічний інтерфейс користувача. Файли бібліотек динамічного компонування містять функції, які приєднуються до програми при її виконанні (динамічно), а не при компіляції (статично).
Бібліотеки динамічного компонування
Бібліотека динамічного компонування (DLL – dynamic link libraries) означає, що функції з таких бібліотек не копіюються у виконавчі файли, а викликаються при виконанні програми, що дає змогу заощадити ресурси пам’яті. Немає значення, скільки додатків одночасно завантажено, - в оперативній пам’яті зберігається лише одна копія бібліотеки, яка використовується всіма додатками. Windows містить вбудований механізм компонування таких бібліотек з програмами на етапі виконання. Для роботи Windows потрібен досить великий набір DLL-файлів.
Черги повідомлень.
Система Windows працює з вікном програми через системні повідомлення. При виникненні деякої події Windows надсилає додатку відповідний сигнал. Вікно, після отримання повідомлення, може обробити його та повернути результат у систему. Про надіслане вікну програми повідомлення програма дізнається, перевіряючи чергу повідомлень. Введені дані розподіляються між завантаженими програмами за допомогою копіювання повідомлень з системної черги у черги відповідних додатків. При готовності додатку прийняти дані, він читає повідомлення з власної черги та розподіляє їх між відчиненими вікнами.
У кожному повідомленні вказується системний час, стан клавіатури, код натисненої клавіші, позиція вказівника миші та стан кнопок миші, а також ідентифікатор пристрою, який надіслав повідомлення. Всі повідомлення від клавіатури, миші та системного таймера мають однаковий формат та обробляються однаково. При повідомленні від клавіатури передається віртуальний код натисненої клавіші, який ідентифікує клавішу незалежно від використаної клавіатури, та генерується Windows, а також апаратно-залежний скен-код, що генерується власне клавіатурою. Передається також інформація про стан деяких інших клавіш, таких як [NumLock], [Alt], [Shift] та [Ctrl].
Оскільки клавіатура та миша – ресурси сумісного використання, тому вони надсилають повідомлення всім додаткам, відкритим у середовищі Windows. Система переадресовує всі повідомлення клавіатури поточному активному вікну. Повідомлення миші направляються тому додатку, над вікном якого у дану мить знаходиться вказівник миші. Про таке вікно кажуть, що воно отримує фокус.
Повідомлення системного таймера мають такий же формат, як і повідомлення клавіатури та миші. Додатки ініціюють таймер таким чином, щоб одне з вікон додатків регулярно отримувало повідомлення від таймера. Повідомлення надходять у чергу додатку.
Повідомлення можуть генеруватися автоматично операційною системою Windows, наприклад, у випадку завершення роботи системи, коли кожному відкритому додатку надсилається застереження про потребу перевірити зберігання даних та закрити власні вікна.
Існує спеціальна функція для обробки повідомлень за замовчуванням, тому програміст обробляє тільки ті повідомлення, обробка за замовчуванням яких його не влаштовує. Користувач може ініціювати подію клацанням чи пересуванням вказівника миші, зміною розміру вікна чи вибором команди з меню. Інші події можуть ініціюватися додатком.
Забезпечення багатозадачності
Підсистема повідомлень забезпечує багатозадачність у Windows, надаючи можливість розподілу часу роботи процесора між відкритими додатками. Коли Windows надсилає повідомлення додатку, вона на деякий час відкриває йому доступ до процесора. Єдина можливість для додатку отримати доступ до процесора – отримання повідомлення від Windows. Окрім того, повідомлення надають можливість додатку відреагувати визначеним чином на подію, що відбулась у системі. Подію може створювати додаток, інші додатки, які виконуються у той же час у Windows, користувач чи операційна система. При виникненні деякої події Windows опитує про неї всі зацікавлені додатки, які відкриті у дану мить.
При відсутності багатозадачності додатки отримують повний контроль над наданими ресурсами комп’ютера, серед яких і пристрої введення та виведення інформації, пам’ять, монітор та центральний процесор. У середовищі Windows всі ці ресурси динамічно розподіляються між завантаженими додатками.
Засоби керування пам’яттю
Багатозадачність у Windows полягає у тому, що одночасно можна завантажити кілька додатків чи відкрити одразу кілька сеансів роботи з одним додатком. У довільну мить користувач може пересунути одне з вікон у інше місце екрану, перейти від одного вікна до іншого, змінити розмір вікон чи виконати обмін даними між додатками.
Вважається, що додатки виконуються одночасно, проте у поточну мить тільки один додаток може використовувати ресурси процесора. Багатозадачність реалізується завдяки тому, що процесор перемикається між завданнями, які виконуються за малі проміжки часу. Приорітети виконання одночасно завантажених на виконання програм також однакові. У поточну мить активним, тобто таким, що отримує дані від користувача, може бути лише один додаток, не зважаючи на те, що інструкції для процесора можуть надходити одразу з усіх відкритих додатків, незалежно від їхнього стану. Задачу визначення приорітетів додатків та розподілу часу роботи процесора бере на себе Windows.
Апаратна незалежність.
У Windows програмісту не потрібно передбачати, які саме монітор, принтер чи пристрої введення приєднуватимуться до комп’ютера, тому немає потреби оснащувати програми драйверами всіх пристроїв, які використовуватимуться програмою. Драйвери для визначеного пристрою інсталюються один раз при інсталяції системи, постачаються разом з програмними засобами чи додаються при користуванні.
Апаратна незалежність додатків Windows реалізується завдяки тому, що додатки не обмінюються даними безпосередньо з пристроями, а використовують як посередника систему Windows. Додатку не потрібно знати, який саме принтер приєднаний до даного комп’ютера, оскільки програма дає команду Windows надрукувати прямокутну область з зафарбуванням, потім операційна система вирішує, як реалізувати цю задачу на наявному обладнанні. Апаратна незалежність полегшує життя і програмістам, і користувачам, оскільки усуває потребу дослідження, з якими типами пристроїв працюватиме той чи інший додаток.
Апаратна незалежність досягається також завдяки визначенню мінімального набору базових операцій, які виконуватимуться довільними пристроями. Цей мінімальний набір містить елементарні операції, потрібні для правильного вирішення довільних задач, які можуть поставати перед даним пристроєм. Таким чином, задачу довільної складності можна привести до послідовності операцій, які складають набір мінімальних вимог до пристрою.
Для усунення конфліктів при введенні даних у Windows також визначений мінімальний набір кодів клавіш, які розпізнаватимуться довільним пристроєм. Стандартний набір кодів в цілому відповідає розкладці ПК-сумісної апаратури. Коли ж деяка фірма розробить клавіатуру з додатковими клавішами, що не входять до стандартного набору, тоді вона повинна піклуватися про спеціальне програмне забезпечення, яке перетворюватиме коди таких клавіш на послідовність стандартних кодів, які розпізнаються Windows. Мінімальному набору кодів повинні відповідати команди, що надходять не лише від клавіатури, але й від інших пристроїв введення, серед яких і миша. Таким чином, якщо деяка фірма розробить чотирикнопкову мишу, тоді це не повинно турбувати користувача, оскільки виробник піклуватиметься про те, щоб команди від додаткових кнопок відповідали стандартним кодам Windows.
Формат виконавчих файлів.
З метою спрощення роботи з динамічними бібліотеками Windows застосовує формат виконавчих файлів, який надає інформацію системі для керування блоками коду і даних та динамічного компонування.
Формат виконавчих файлів у Windows містить інформацію про імпортовані функції бібліотек динамічного компонування. Найчастіше застосовуються функції модулів KERNEL, USER та GDI, які містять підпрограми, поєднані з різними рутинними операціями, серед яких і обробка повідомлень. Функції, вміщені у DLL-модулях, називаються експортованими, вони визначаються за іменем модуля та порядковим номером функції у ньому. Всі DLL-файли містять таблицю точок входу з переліченими адресами експортованих функцій.
З точки зору додатків, ці ж функції називаються імпортованими. Імпорт функцій виконується за допомогою механізму відкладеного поєднання та різноманітних таблиць компонування. Найчастіше додатки містять у собі щонайменше одну експортовану функцію, що називається віконною процедурою та відповідає за приймання повідомлень.
Завдяки формату виконавчих файлів, з кожним сегментом коду та даних довільного додатку та бібліотеки поєднується додаткова інформація. Найчастіше сегменти коду відмічаються спеціальними прапорцями як такі, що можуть пересуватися та вивантажуватися з пам’яті, а сегменти даних – як такі, що пересуваються. Відповідно до встановлених прапорців, Windows може автоматично пересувати завантажені сегменти в пам’яті і навіть тимчасово вивантажувати їх на диск, коли для виконання інших програм у багатозадачному середовищі потрібна додаткова пам’ять. Пізніше, при потребі, вивантажені сегменти Windows автоматично завантажить в пам’ять.
Цікавою особливістю є також завантаження за викликом, коли сегмент коду завантажується в пам’ять лише за умови наявності у програмі виклику функції, що знаходиться у цьому сегменті. Завдяки таким засобам у Windows можна працювати з кількома додатками одночасно, навіть коли вільної пам’яті стає лише на один додаток.
Якщо у програмі викликається стандартна функція Windows, тоді компілятор повинен згенерувати за місцем виклику машинний код, який міститиме звернення за адресою, що знаходиться у іншому сегменті пам’яті. Таке положення є деякою проблемою, оскільки доти, доки програма не завантажиться, неможливо вгадати, якою буде адреса бібліотечної функції. Вирішення цієї проблеми у Windows називається відкладеним поєднанням, або динамічним компонуванням. Завершальне компонування відбувається лише після завантаження програми в пам’ять.
Загальна характеристика системи програмування Visual C++ 6.0
Версія компілятора Microsoft Visual C++ 6.0 містить велику кількість засобів візуального програмування та утиліти, якими можна користуватися у Visual C++ 6.0:
інтегрований відладчик – надає можливість покроково виконувати програму, переглядати та змінювати значення змінних;
вбудовані редактори ресурсів – забезпечують розробку та модифікацію ресурсів Windows (растрових зображень, вказівників миші, значків, меню, діалогових вікон);
редактор діалогових вікон – засіб для розробки складних діалогових вікон (додавання елементів керування; написів, кнопок, прапорців, списків);
редактор зображень – забезпечує розробку та редагування власних растрових зображень, значків та вказівників миші, зміни зберігаються у файлі з розширенням .rc;
редактор двійкових кодів – дозволяє внесення змін безпосередньо у двійковий код ресурсу, застосовується тільки для перегляду ресурсів та внесення незначних змін;
редактор рядків – ресурс, що містить список ідентифікаторів та значень всіх рядкових написів, які використовуються у додатку. Наприклад, тут можуть зберігатися повідомлення, які відображаються у рядку стану. Кожен додаток містить єдину таблицю рядків. Наявність єдиної таблиці дає змогу просто змінювати мову інтерфейсу програми – для цього досить перевести на іншу мову рядки таблиці, не втручаючись у код програми.
Додатки Windows у середовищі Visual C++ 6.0 можна створювати як традиційними методами процедурного програмування мовами С та С++, так і за допомогою засобів об’єктно-орієнтованого програмування, що надаються мовою С++. Для цього передбачені спеціальні режими створення нових проектів.
Деякі команди середовища Visual C++ 6.0:
New – дає змогу створити новий файл, проект чи робочий простір. Цією командою починається робота з новим додатком.
Open – відкриває діалогове вікно для вибору існуючого файлу чи проекту.
ClassWizard – майстер, який полегшує створення нових класів та обробників повідомлень, перевизначення віртуальних функцій MFC та читання даних від елементів керування діалогових вікон. Він працює лише з додатками, які використовують бібліотеку MFC.
Full Screen – розгорнення вікна на повний екран, при цьому на екрані вмішується панель інструментів для вміщення елементів керування на діалогове вікно.
Workspace – вміщення у ліву частину екрану панелі робочої області проекту
Setting – відкривається складне діалогове вікно, яке дає змогу встановлювати параметри конфігурації проекту, опції компілятора та компонувальника.
Rebuild All – команда компіляції, яка не враховує дату та час створення файлів і компонує всі файли проекту. При наявності синтаксичних помилок попередження та повідомлення про помилки відтворюються у вікні Output.
Execute – коли компіляція пройшла успішно, тоді ця команда завантажує додаток на виконання.
Детальний опис можливостей системи програмування Visual C++ 6.0 надається у “Л.М.Недашківська.Методичні вказівки до виконання лабораторних робіт з дисципліни «Інформатика. Програмування та алгоритмічні мови» (електронний варіант), 2013р..
РОЗДІЛ 1. ЛЕКСИЧНІ ОСНОВИ МОВИ С++
Лекція 2. Алфавіт мови С++ та ідентифікатори
План лекці ї(2 години)
Походження мови С++.
Стилі програмування
Алфавіт мови С++
Ідентифікатори
Ключові слова
Препроцесорна обробка тексту програми
Коментар у тексті програми
Лексеми
Походження мови С++.
Мова програмування С походить від операційної системи UNIX, яка розроблена у 1969 та написана мовою С, а також більшість програм для цієї системи. Родовід мови С має такий вигляд:
Algol 60 |
Розроблена міжнародним комітетом у 1960 році |
CPL |
Combined Programming Language – комбінована мова програмування. Розроблена у 1963 році групою програмістів з Кембріджського та Лондонського університетів |
BCPL |
Basic Combined Programming Language- базова комбінована мова програмування. Розроблена у Кембриджі Мартіном Річардсом у 1967 році |
B |
Розроблена у 1970 році Кеном Томпсоном, компанія BellLabs |
C |
Розроблена у 1972 році Деннісом Рітчі, компанія BellLabs |
У 1983 році розроблений стандарт ANSI C.
Мова C++ побудована на основі мови С, зберегла всі можливості цієї мови та доповнила їх засобами об’єктно-орієнтованого програмування (ООП). У мові С++ узгоджені стандартні процедурні підходи та об’єктно-орієнтовані методики. В одному додатку, написаному мовою С++, можна застосовувати одночасно як процедурні, так і об’єктно-орієнтовані принципи.
Мова С++ розроблена на початку 80-х років Б’ярном Страуструпом. Найважливішим здобутком мови С++ є ООП.
Стилі програмування.
1. Процедурне програмування – це алгоритмічна обробка даних з описом потрібних обчислень, підтримується механізмами передавання параметрів та одержання результатів роботи функції. Модульне програмування означає створення програми з окремих, самостійно відладжуваних частин, сукупність яких створює єдиний додаток.
2. Модульне програмування – це організація структур та даних. Модуль – це сукупність поєднаних процедур та даних, якими вони керують, таким чином підтримується принцип «схову» даних.
3. Об’єктно-орієнтоване програмування набуває великого значення та широкого застосування в інтерактивній графіці і менше – в тих областях, де застосовуються традиційні арифметичні типи та обчислення над ними. У С++ класи підтримують концепцію модульності, завдяки тому, що користувач може визначати власні типи, які сприймаються у мові подібно до базових. Такі типи даних називаються абстрактними.
Алфавіт мови С++
Алфавіт мови С++ складається з наступних символів:
великих та малих латинських букв A..Z, a..z та символа підкреслення”_”.
Цифр від 0 до 9.
Спеціальних символів + - * / = > < . ; : , [ ] { } ~ ! % ^ & | \ ‘ “ ? $.
Символи пробіл, табуляція, перехід на новий рядок, повернення каретки називаються загальними пробільними.
# ## - символи, відведені для препроцесора.
Рис.1.1. Обробка вхідного коду у
середовищі Borland
C++
Ідентифікатори
Ідентифікаторами називаються імена, які надаються змінним, константам, типам даних та функціям, які використовуються у програмі. Після оголошення ідентифікаторів можна посилатися на об’єкти, які вони позначують у довільному місці програми. Ідентифікатори – це послідовність символів довільної довжини, яка містить букви, цифри та символи підкреслення але починаються обов’язково буквою чи символом підкреслення..
Мови С та С++ чутливі до регістру букв, тобто компілятор розпізнає малі та великі букви як різні символи. Наприклад, змінні NAME_LENGTH та name_length розглядатимуться як два різних ідентифікатори, які означають різні комірки пам’яті. Таким чином. можна створювати ідентифікатори, які однаково читаються, але відрізняються написанням однієї чи кількох букв.
Використання малих та великих букв в ідентифікаторах дає змогу зробити програмний код зрозумілим при читанні. Не дивлячись на те, що дозволяється використання символу підкреслення на початку імені ідентифікатора, проте недоцільно так робити, оскільки даний спосіб запису використовується в іменах вбудованих системних підпрограм та змінних. Співпадання імені ідентифікатора з зарезервованим іменем викличе конфлікт у роботі програми. Два символи підкреслення на початку імені ідентифікатора застосовуються у стандартних бібліотеках мови С++.
Серед програмістів прийнято неофіційне узгодження починати довільне ім’я з префіксу типу даних цього ідентифікатора. Наприклад, всі цілочислові ідентифікатори повинні починатися буквою і (integer), ідентифікатори з плаваючою комою–буквою f (float) або d(double), рядки, що завершуються нульовим символом - буквами sz (string zero), вказівники-буквою p (pointer),тощо. Це значно спрощує сприйняття програмних текстів. Приклади ідентифікаторів:
i, itotal, frangel, szfirst, Ifrequency, imax, iMax, iMAX, NULL, EOF
Бажано, щоб всі імена переносили суть їх значення. Ім’я ідентифікатора не повинне співпадати (з урахуванням регістру) з іменем ключового слова.
Ключові слова.
Ключові слова є вбудованими ідентифікаторами, кожному з яких відповідає визначена дія. Змінити призначення ключового слова не можна. За допомогою директиви препроцесора #define можна створити «псевдонім» ключового слова, який буде дублювати його дію, можливо, з деякою відмінністю. Ці слова, зарезервовані для спеціального призначення і їх не можна використовувати як імена ідентифікаторів. Прикладами ключових слів мови С++ є такі лексеми: int – цілий тип; char – символьний тип; for – цикл; if – умовний оператор.
Таблиця 2.1. (додаток 2) містить список ключових слів мови C++.
Препроцесорна обробка тексту програми
До інтегрованого середовища підготовки програм на С++ чи до компілятора мови як обов’язковий компонент входить препроцесор. Призначення препроцесора – обробка початкового тексту програми перед її компіляцією.
Препроцесорна обробка відповідно до вимог стандарту мови С++ складає кілька стадій, які виконуються послідовно. Для керування препроцессором, тобто для виконання потрібних дій, застосовуються команди(директиви) препроцессора, кожна з яких вміщується в окремому рядку та починається символом #. Визначені наступні препроцесорні директиви:
#define – має кілька модифікацій, які передбачають визначення макросів чи препроцесорних ідентифікаторів, кожному з яких відповідає деяка символьна послідовність. Пізніше у тексті програми препроцесорні ідентифікатори замінюються раніше запланованими послідовностями символів;
#include – приєднує до тексту програми текст з вибраного файлу;
#undef – відміняє дію команди #define, яка визначила перед тим ім’я препроцесорного ідентифікатора;
#if та її модифікації #ifdef, #ifndef сумісно з директивами #else, #endif, #elif забезпечують організацію умовної обробки тексту програми. Умовність полягає у тому, що компілюється не весь текст, а лише ті його фрагменти, які деяким чином виділені названими директивами;
#line – керує нумерацією рядків у файлі програми. Ім’я файлу та початковий номер рядка вказуються безпосередньо у директиві #line;
#error – надає можливість визначити текст діагностичного повідомлення, яке виводитиметься при наявності помилок;
#pragma – викликає дії, що залежать від реалізації;
# - порожня директива, що не викликає ніяких дій і завжди ігнорується.
Директиви найчастіше записують на початку вхідного коду, проте можна розташовувати їх у довільному місці програми.
На рис. 2.1. наведені директиви препроцесора та стисла характеристики призначення.
Запис #include <ім’я-файла> передбачає пошук стандартного приєднуваного файла у папці include, а при його відсутності у include повідомляється про помилку.
Рис.2.1. Директиви препроцесора
Коментар у тексті програми
У мові С++ використовуються два способи визначення коментарів у тексті програми. Традиційний спосіб визначає коментар як послідовність символів, обмежену зліва парою символів /*, а з правого боку – парою символів */. Між вказаними обмежувальними парами можна вміщувати довільний текст, у якому дозволяється вміщувати не лише символи мови С++, але й інші символи( наприклад, кирилицю). ANSI стандартом заборонено вкладати коментарі один в другий, проте це визначається компілятором.
/* коментар, який може містити кілька рядків, або лише один символ*/
Другий спосіб (введений у С++) визначає коментар як послідовність символів, початком якої служать символи //, а кінцем – код переходу на новий рядок.
//коментар, який може міститися лише у одному рядку. Кінець коментара – кінець рядка
Лексеми.
Текст програми компілятор сприймає як набір лексем. Лексемами для препроцесора є всі лексеми мови програмування та послідовності літер, що вказують імена файлів, як у директиві #include <ім’я_файлу>. Ця директива замінюється вмістом файлу з іменем ім’я_файлу. Серед літер імені файлу не можна вказувати > та літери новий_рядок ( \n). Результат невизначений, коли ім’я_файлу містить довільну з літер “ ‘ \ чи пару літер /*.
Виконуючи препроцесорні директиви, компілятор змінює початковий текст програми. По-перше, компілятор відокремлює лексичні елементи з тексту програми, що компілюється, а потім застосовуючи граматику мови, розпізнає суттєві конструкції мови (вирази, визначення, оголошення, оператори, тощо), побудовані з цих лексем. Таким чином, лексеми – це елементи мови, які складають такі словосполучення чи окремі символи, які компілятор може точно перетворити на машинний код.
Н
а
рис. 2.2. наведені лексичні елементи мови,
розподілені на групи