
ПРОГРАМУВАННЯ МОВОЮ C++
Теоретичні відомості до практичних робіт
1. Стандарт мови. Мову програмування C++ на початку 80-х років створив Бьяртні Страуструп на базі популярної серед професіоналів-програмістів мови C, яку розробив Деніс Рітчі. Мова одержала назву від C та операції інкременту (++), визначеної лише у ній. Така операція збільшує на одиницю значення змінної, до якої її застосовують.
C++ є розширенням мови C. Окрім стандартних команд, сюди увійшли засоби для об'єктно-орієнтованого й узагальненого програмування. C++ - це перша у світі мова об'єктно-орієнтованого програмування, суть якого полягає в об'єднанні даних та алгоритмів їх опрацювання у єдине ціле.
Оскільки C++ є розширенням мови C, то всі програми, складені мовою C, коректно транслюються компіляторами C++, тому що бібліотеки, які належать до складу мови C, є також і в C++.
Для комп'ютерів різних класів, а також для різних операційних систем створено багато компіляторів мови C++. Наприклад, Turbo C++, Borland C+4- 3.1 (для MS DOS), Borland C++ Builder (візуальне програмування у Windows).
Для узгодження всіх реалізацій мови у 1990 році Американський інститут національних стандартів (ANSI) створив комітет для прийняття стандарту мови C++. Пізніше відповідна комісія була створена й у Міжнародній організації стандартів (ISO). Ці дві організації, які називаються ISO/ANSI, у 1998 році виробили остаточний міжнародний стандарт для C++.
2. Алфавіт і ключові слова. Мови програмування, як і розмовні, мають власний алфавіт - набір допустимих символів. Алфавіт мови C++ складається з:
- великих і малих літер латинського алфавіту;
- цифр 0, 1, ..., 9;
- з спеціальних символів: " ' ( ) [ ] { } < > . , ; : ? ! - * + -= / \ | # % $ & - ^ @ та символу підкреслення _.
Програми складаються із синтаксичних конструкцій, які називаються командами (інші назви - оператори, вказівки, речення).
Ідентифікатор - це назва (ім'я), яку користувач надає об'єктам, наприклад, змінним, сталим, функціям. Усі слова можуть складатися а рядкових чи прописних літер англійського алфавіту, цифр, а також містити символ підкреслення. Ідентифікатор завжди починається з букви або із символу підкреслення.
Зауваження 1. Однакові за змістом малі та великі літери у мові C++ вважаються різними символами. Наприклад, імена MyName та myname позначають різні об'єкти.
Зарезервовані ідентифікатори називаються ключовими словами. Вони використовуються для написання команд. Змінити призначення ключового слова у програмі не можна. Основні ключові слова мови C++:
3. Директиви препроцесора. Препроцесор - це програма, яка опрацьовує директиви. Директиви препроцесора - це команди компілятора відповідної мови програмування, які виконуються на початку компіляції програми. Директиви мови C++ починаються із символу #. Розглянемо декілька типів директив.
Директива #include означає, що до програми необхідно приєднати програмний код із зазначеного після неї файлу.
Файли, які приєднують директивою #include, називаються файлами заголовків (header-файлами, бібліотеками, модулями). У таких файлах зазвичай оголошують сталі й змінні, заголовки (сигнатури) функцій тощо.
Усі стандартні команди та функції мови C++ визначенні у файлах заголовків. Щоб приєднати модуль до програми користувача, директиву препроцесора необхідно зазначити на початку програми так:
#include <назва файлу.розширення>
або так:
#include "шлях до файлу\назва файлу.розширення"
Зазвичай усі стандартні бібліотеки розміщені у папці INCLUDE середовища C++. У такому випадку назва файлу є параметром директиви, її зазначають у кутових дужках <наз-ва>, наприклад
#include <math.h>.
Якщо ж потрібний файл розміщений не у папці INCLUDE, то назву файлу із зазначенням шляху пишуть у лапках. Наприклад, якщо деякий файл MyBib.h є у папці stud на диску d:, то треба писати так: #include "d:\stud\MyBib.h".
Зауваження 2. Згідно зі стандартом ISO/ANSI файли заголовків у директиві #include прийнято записувати без розширення, наприклад #include <math>.
Директива #define має подвійне значення. По-перше, вона може задати стале значення (оголошує сталу). Наприклад, якщо у програмі задано #define N 25, то N під час виконання програми матиме значення 25. По-друге, вона дає змогу описати макроси - короткі команди (переозначити команди) чи записати функції, наприклад, так:
#define D(a, b, c) ((b) * (b) - 4 * (а) * (c)).
Тепер скрізь для обчислення дискримінанта замість команди
d=b*b-4*a*c можна записувати
d = D(a, b ,c).
Директива #undef скасовує дію директиви #define. Наприклад,
#define D(a,b,c) ((b) * (b) - 4 * (а) * (c))
#undef D
#define D(a,b,c) ((a) * (b) * (c))
4. Структура програми на С++. Суттєвою особливістю мови C++ порівняно з іншими мовами є те, що програми складаються з функцій, які відіграють роль підпрограм в інших мовах. Головна функція, яка має бути у кожній програмі, - це функція вигляду
main(void)
{
тіло функції з командою return 0;
де main() - заголовок функції. Ключове слово void означає, що функція не залежить від параметрів, його записувати не обов'язково. Функцію з параметрами розглядатимемо нижче. У тілі функції містяться команди та виклики інших функцій. Команди одну від одної відокремлюють символом ";" (крапка з комою). Текст функції закінчується командою повернення refurn. Тіло функції (усі команди після заголовка) записується
у фігурних дужках { }.
Розглянемо програму, у результаті виконання якої на екран буде виведено повідомлення: Привіт, студенте! Я C++!
// Моя перша програма мовою C++ #include <iostream.h> int main()
{
cout« " Привіт, студенте! Я C++!";
return 0;
}
Розглянемо елементи програми. У першому рядку є коментар. Коментар - це фрагмент тексту програми, який слугує для пояснення призначення програми чи окремих команд і не впливає на виконання команд. Його записують так: //текст коментарю або так: /* текст коментарю */. У першому випадку коментар має бути або у кінці рядка, або єдиним у рядку. Другий спосіб більш універсальний: коментар можна записувати будь-де, не розриваючи лексем.
Директива #include <iostream.h> під'єднує бібліотечний файл iostream.h. Саме у цьому файлі описані функції, які дають змогу виконувати операції введення-виведення даних.
Далі у програмі записана обов'язкова функція main(). Ключове слово int означає, що функція main() повертатиме у точку виклику результат цілого типу.
Конструкція cout « забезпечує виведення на екран монітора повідомлення „Привіт, студенте! Я C++!".
Команда return слугує для виходу з функції main(). Числовий параметр після return є результатом (значенням) функції (у цій програмі - 0).
Зауваження 3. Функцію main() можна застосувати так:
void main()
{
тіло функції;
Така функція називається функцією main() типу void. Вона не повертає у програму жодних значень, тому команду return писати не треба.
Отже, найпростіша програма мовою C++ має такий загальний вигляд:
// коментарі
#include <назва бібліотечного файла>
void main()
{
<тіло функції>;
Зазвичай складніші програми містять значну кількість функцій та додаткових елементів. Тому у загальному випадку програма мовою C++ має такий вигляд:
// коментарі
#include <назва бібліотечного файлу 1^
#include <назва бібліотечного файлу N> <інші директиви препроцесора>
<оголошення глобальних змінних>; <оголошення глобальних сталих>; <оголошення та створення функцій користувача>;
<тип результату функції> main(orwc формальних параметрів)
{
<оголошення локальних змінних>;
<оголошення локальних сталих>;
<команди>;
Розрізняють глобальні та локальні дані. Дані, визначені для всіх функцій, тут називатимемо глобальними, а дані, які використовуються лише в окремих функціях чи блоках, - локальними.
6. Сталі та змінні. Змінна чи стала — це пойменована ділянка оперативної пам'яті комп'ютера, де зберігається значення деякої величини.
Змінні і сталі (їх прийнято називати даними) мають такі властивості: назву (ім'я), значення, тип. Назву дає програміст.
Для роботи з даними слід зарезервувати певний обсяг оперативної пам'яті комп'ютера, де зберігатимуться їхні значення. Тому всі дані, які використовуються у програмі, потрібно заздалегідь описати (оголосити), оскільки компілятор розподіляє пам'ять згідно з описами.
Якщо значення деякої величини (даного) не змінюватиметься протягом виконання усієї програми, то таке дане варто задати як сталу (константу, const). Це можна зробити так:
const <назва сталої 1> = оначення сталої 1>;
або так:
const <тип> <назва сталої 2> = оначення сталої 2>;
Сталу 2 називають типованою сталою. За замовчуванням числова стала належить до цілого типу. Під час виконання програми значення сталих змінювати не можна.
Приклад 1. Оголосимо три сталі
const vik = 20, rist = 176; const float g = 2.78;
Для сталої g задано тип - floati значення 2,78.
Зауваження 5. У C++ є такі стандартні сталі: число n є сталою M_PI, 7i / 2 - M_PI_2, n | 4 - M_PI_4, \|n - M_l_PI, \|4n -M_l_SQRTPI тощо. Ці сталі можна безпосередньо використовувати у програмі, заздалегідь підключивши модуль math.h.
Дані, які під час виконання програми можуть набувати різних значень, називаються змінними. їх оголошують так:
<тип змінних 1> <список зміннихі>; <тип змінних N> <список змінних N>;
Елементи списків записують через кому. Наприклад, змінні оголошують так:
int a, c; float b, d, z; char w;.
Змінним можна задавати початкові значення відразу під час оголошення. Це називається ініціалізацією даних. Наприклад, float b, d = 2.5, а = 4; char w = 't';.
Отже, у загальному випадку змінні одного типу оголошують так:
<тип змінних> <назва змінної 1> = <Означення 1>,
<назва змінної N> = <Означення N>, <список інших змінних>;