- •12. Класи пам'яті даних 100
- •13. Робота з файлами 106
- •14. Посилання 111
- •Склад мови
- •Алфавіт мови
- •Лексеми
- •Ключові слова
- •Ідентифікатори
- •Константи
- •Символьні рядки
- •Знаки операцій, роздільники, коментарі
- •Типи даних
- •Класифікація типів даних
- •Цілочислові типи
- •Дійсні типи
- •Оголошення змінних і констант
- •Переліки
- •Структура програми
- •Функція main
- •Область дії змінної
- •Введення і виведення даних
- •Функції стандартної математичної бібліотеки
- •Вирази і операції
- •Поняття виразу, операнда, операції
- •Порядок виконання операцій
- •Арифметичні операції
- •Порозрядні операції
- •Операції порівняння
- •Логічні операції
- •Операції присвоєння
- •Умовна операція
- •Операція визначення розміру sizeof
- •Узгодження типів у виразах
- •Умовні оператори
- •Оператори
- •Умовний оператор if
- •Оператор вибору switch
- •Оператори циклу
- •Цикл з параметром. Оператор for
- •Цикл з передумовою. Оператор while
- •Цикл з постумовою. Оператор do while
- •Оператори переходу
- •Використання псевдовипадкових чисел
- •Одновимірні масиви
- •Багатовимірні масиви
- •Символьні рядки
- •Вказівники
- •Оголошення вказівника, операції, пов’язані з вказівниками
- •Адресна арифметика
- •Void – вказівники, типізація вказівників
- •Звертання до елементів масивів через вказівники
- •Масиви символьних рядків і масиви вказівників
- •Динамічне виділення пам’яті
- •Структури і об’єднання
- •Оголошення і ініціалізація структур
- •Звертання до елементів структур
- •Перейменування типів
- •Об’єднання
- •Поля бітів
- •Директиви препроцесора
- •Призначення директив препроцесора
- •Директива включення #include
- •Директиви макропідстановок #define I #undef
- •Директиви умовної компіляції
- •Директиви #ifdef, #ifndef
- •Функції
- •Структура функції
- •Виклик функцій. Прототипи функцій
- •Взаємодія фактичних і формальних параметрів функцій
- •Inline – функції
- •Масиви і символьні рядки як параметри функцій
- •Використання кваліфікатора const в оголошеннях параметрів
- •Багатовимірні масиви як параметри функцій
- •Опрацювання структур у функціях
- •Вказівники на функції
- •Рекурсивні функції
- •Класи пам'яті даних
- •Клас пам'яті, час існування і видимість об’єкта
- •Область дії глобальних і локальних змінних
- •Специфікатори класів пам'яті
- •Специфікатори глобальних змінних
- •Багатофайлові програми
- •Робота з файлами
- •Звертання до файлів
- •Послідовний запис до файлу і послідовне читання з файлу
- •Файли з довільним доступом
- •Посилання
- •Призначення посилань
- •Передача аргументів функцій як посилань
Структура програми
Функція main
Найкоротша програма, яку можна написати мовою програмування С++, компіляція якої не викличе помилок, і яка, зрозуміло, не буде виконувати корисних дій, має такий вигляд:
int main(){}
При структурному підході до написання програм їх основною складовою частиною є функція. Функція – це синтаксично і логічно завершений самостійний фрагмент програми, що має власне ім’я і реалізує певну задачу. У програмах мовою С++ використовуються два види функцій – бібліотечні, які створені розробниками компілятору і зберігаються в бібліотеці системи програмування, і користувацькі функції, які створює програміст у даній програмі. Окремим типом функції є функція main. Вона обов’язково має бути присутньою у програмі, і саме з цієї функції починається виконання програми, її закінчення викликає завершення роботи всієї програми. Функцію main називають точкою входу в програму.
Всі функції С++ мають однакову структуру:
тип_значення_функції ім’я_функції (список_параметрів) {
тіло_функції
}
Початкова частина функції, яка складається з типу значень функції, імені функції і списку оголошень параметрів функції, записаного в круглих дужках, називається заголовком функції. Тіло функції охоплюється фігурними дужками і формується з описів даних і операторів, що реалізують дії, які повинна виконувати дана функція.
Відповідно до стандарту, функція main має повертати значення типу int. Список параметрів для неї можна залишати порожнім, в фігурних дужках записують описи змінних і оператори програми.
Область дії змінної
Область дії змінної залежить від того, в якому місці програми вона оголошена. Оголошення змінних можна записати:
поза межами всіх функцій – це глобальна змінна, яку можна використовувати у будь якому місці програми, починаючи від точки її оголошення, глобальні змінні автоматично ініціалізуються нульовими значеннями;
всередині функцій або програмних блоків – такі змінні називають локальними, область дії локальної змінної обмежена функцією чи програмним блоком, в якому оголошено дану змінну;
в списку формальних параметрів функцій – локальні змінні, діють в межах функції.
Наприклад, виконуємо програму:
#include <iostream>
using namespace std;
int a; // Глобальна змінні
int main(){
int b; // Локальна змінна
cout << "a=" << a << endl; // Виводить 0
cout << "b=" << b << endl; // Попередження, випадкове
// число
}
Змінна а глобальна, їй автоматично буде присвоєне значення 0. При спробі вивести значення змінної b на екран компілятор видасть попередження – змінна не була ініціалізована. При ігноруванні цього попередження на екрані з’явиться випадкове число.
В наступному прикладі змінна оголошена всередині блоку операторів:
#include <iostream>
using namespace std;
int a;
int main(){ // Початок блоку операторів 1
int b = 123;
{ // Початок блоку операторів 2
int c = 456; // Змінна с створена
cout << "a=" << a << endl;
cout << "b=" << b << endl;
cout << "c=" << c << endl;
} // Кінець блоку операторів 2, змінна с знищена
cout << "a=" << a << endl;
cout << "b=" << b << endl;
cout << "c=" << c << endl; // Помилка, змінної с
// не існує
} // Кінець блоку операторів 1
В цьому прикладі а – глобальна змінна, b і c – локальні змінні. Змінна а доступна в будь якому місці програми, час її життя співпадає з часом виконання програми. Змінні, оголошені всередині блоку операторів, існують з моменту оголошення і до завершення виконання операторів цього блоку. Тобто, змінна доступна у блоці, в якому вона оголошена, і у всіх вкладених в цей блок блоках.
У програмі два блока операторів, блок 2 вкладений в блок 1. У блоці 2 доступні всі змінні програми. Після закінчення виконання цього блоку будуть знищені всі змінні, які в ньому оголошені. В нашому випадку це змінна с. Тому, коли ми будемо намагатися вивести на екран значення змінної с другий раз, виникне помилка – такої змінної на цей час існувати не буде.
