
Об’єктно-орієнтовані методи програмування
1. Основні типи даних C++, модифікатори (signed, unsigned, long, short), специфікатори зберігання (extern, static, register, auto).
які не повертають
2. Арифметичні оператори в С++ (-,+,*,/,%,--,++), оператори порівняння (>,>=,<,<=,==,!=), логічні оператори (&&,||,!), бітові оператори (&,|,^,~,>>,<<).
3. Оператори взяття адресу (&) і розіменування (*) в С++.
4. Оператори for, while, do-while в С++. Оператори return, continue, break, exit, {}.
Цикл for
Оператор цикла for имеет следующий синтаксис:
for (int i=0; i<20; i++) {действие}
Оператор цикла while имеет следующий синтаксис:
while(i){действия}
Пока условие истинно цикл будет работать. Этот вид цикла больше всего подвержен входу в беспонечный цикл.
Оператор цикла do while имеет следующий синтаксис:
do{ действие }while(i)
Этот цикл отличен от предыдущих тем, что выполнится хотя бы один раз.
Оператор return використовується для виходу з функції. Віднесення його до категорії операторів переходу обумовлено тим, що він змушує програму перейти в точку виклику функції
Оператор break застосовується в двох випадках. По-перше, в операторі switch з його допомогою переривається виконання послідовності case (див. розділ "Оператор вибору - switch" раніше в цьому розділі). У цьому випадку оператор break НЕ передає управління за межі блоку. По-друге, оператор break використовується для негайного припинення виконання циклу без перевірки його умови, в цьому випадку оператор break передає управління оператору, наступному після оператора циклу.
Функція exit () не є оператором мови, однак розглянемо можливість її застосування. Аналогічно припинення виконання циклу оператором break, можна припинити роботу програми і за допомогою виклику стандартної бібліотечної функції exit (). Ця функція викликає негайне припинення роботи всієї програми і передає управління операційній системі.
Можна сказати, що оператор continue трохи схожий на break. Оператор break викликає переривання циклу, a continue - переривання поточної ітерації циклу і здійснює перехід до наступної ітерації. При цьому всі оператори до кінця тіла циклу пропускаються. У циклі for оператор continue викликає виконання операторів збільшення і перевірки умови циклу. У циклах while і do-while оператор continue передає управління операторам перевірки умов циклу.
5. Одно-, дво- і багатовимірні масиви С++. Вказівник на масив. Передача масиву у функцію. Адресна арифметика. Ініціалізація масиву. Безрозмірні масиви.
Одновимірні масиви
У разі повної ініціалізації вказується повний список значень у фігурних дужках.
int A [4] = {1, 4, 2, 6};
Розміри масивів при повній ініціалізації можна не вказувати. Компілятор сам для себе визначить ці розміри і виділить відповідну пам'ять.
Двовимірні масиви
У разі повної ініціалізації вказується повний список значень у фігурних дужках. Кожен рядок ініціалізується в своїх фігурних дужках.
int A [3] [4] = {{1, 4, 2, 6},
{11, 1 4, 1 2, 1 6},
{1, 4, 2, 6}
};
Перший розмір масиву, тобто кількість рядків, при повній ініціалізації можна не вказувати.
Вказівником називається змінна, оголошена наступним чином
type * імя_указателя;
Визначення. Типом покажчика називається type *.
Передача одновимірних масивів у функцію
При передачі у функцію одновимірного масиву в списку фактичних аргументів указуються ім'я масиву та розмір масиву. В імені масиву немає інформації про розмір масиву. Компілятор на ім'я масиву може визначити тільки тип елементів масиву і адресу початкового елемента масиву.
У списку формальних аргументів вказуються тільки типи. Додавати розмір масиву марно.
Масиви передаються у функцію за адресою. Це означає, що функція працює з оригіналом масиву і може змінювати його елементи. Це твердження використовується для повернення масивів з функції. За допомогою оператора return масив повернути не можна.
Приклади прототипів
1. int max (int * A, int Dim);
Можна також писати
int max (int A [], int Dim);
Передача двовимірних масивів у функцію
У разі двовимірних масивів потрібно точно дотримуватися збіг типів фактичних і формальних параметрів функції.
Приклади.
1. Функція знаходить максимальний елемент у масиві
int max (int A [] [100], int KolStroc, int KolStolb);
Дана функція може викликатися тільки для масивів, у яких другий розмір 100. В іншому випадку, буде помилка компіляції.
Наприклад, можна викликати цю функцію для частково ініціалізованої масиву
int A [] [100] = {{1,3,5}, {15,2,3}};
int res = max (A, 2, 3);
6. Символьні рядки С++. Масиви символьних рядків і їх ініціалізація. Передача символьних рядків у функцію. Безрозмірні масиви.
Символьний рядок у С++ являє собою масив елементів типу char, який закінчується символом ‘\0’ (NULL). Масиви символів оголошуються так:
char назва_рядка[довжина_рядка];
Наприклад: char a[32];
const int len=80; char str[len];
Оскільки рядки є масивами символів, то назва рядка є вказівником на його перший елемент.
Ініціалізація символьного рядка
С++ дозволяє ініціалізувати масиви при оголошенні:
const char text[]=“Ми вивчаємо програмування”;
char slovo[11]=“University”;
char sl[]={‘U’,’n’, ‘i’,’v’,’e’,’r’,’s’,’i’,’t’,’y’,’\0’};
char tit[32]=“Hello, C++”;
Якщо кількість символів, що присвоюється рядку, менша від розміру масиву, більшість компіляторів С++ присвоюють символи NULL елементам рядкового масиву, що залишаються. Пізніше, в програмі, у цей масив можна буде вмістити довший рядок, обов'язково помістивши в кінці символ ‘\0’.
Передавання символьного рядка у функцію подібне до передавання будь-якого масиву як параметру. Наприклад:
void show-ryad(char ryad[])
7. Вказівники С++. Оператори для роботи з вказівниками. Адресна арифметика. Присвоєння, порівняння вказівників. Вказівники і масиви. Масиви вказівників.
Вказівник - це символічне представлення адреси. Він використовується для непрямої адресації змінних і об'єктів.
В мові С++ є операція визначення адреси — &, за допомогою якої визначається адреса комірки пам’яті, що містить задану змінну. Наприклад, якщо vr — ім’я змінної, то &vr — адреса цієї змінної.
В С++ також існують і змінні типу вказівник. Значенням змінної типу вказівник є адреса змінної або об'єкта. Нехай змінна типу вказівник має ім'я ptr, тоді в якості значення їй можна присвоїти адресу за допомогою наступного оператора:
ptr=&vr;
В мові С++ при роботі з вказівниками велике значення має операція непрямої адресації — *. Операція * дозволяє звертатися до змінної не напряму, а через вказівник, який містить адресу цієї змінної. Ця операція є одномісною і має асоціативність зліва направо. Цю операцію не слід плутати з бінарною операцією множення. Нехай ptr — вказівник, тоді *ptr — це значення змінної, на яку вказує ptr.
Опис змінних типу вказівник здійснюється за допомогою операторів наступної форми:
<тип> *<ім'я вказівника на змінну заданого типу>;
8. Загальний вигляд і область видимості функції С++. Аргументи функції. Передача параметрів по значенню і по посиланню.
Кожна функція повинна мати оголошення і визначення. Оголошення функції називається її прототипом.
Загальний вид прототипу виглядає в такий спосіб. тип_значення_що_повертається ім'я_функції(тип_параметра1,
... ,
тип_параметра N);
Фігурні дужки обмежують тіло функції, що складає з операторів, що розв’язують поставлену задачу. Крім того, фігурні дужки є межами області видимості всіх змінних, оголошених усередині тіла функції (такі змінні називаються локальними). Ця область закрита від зовнішнього світу, і доступ до неї з інших функцій неможливий. Вся інформація може надходити ззовні лише по двох каналах: через фактичні параметри, чи аргументи, що представляють собою значення формальних параметрів, і через глобальні змінні, які є видимими в будь-якій точці програми
. Передача аргументів за значенням
У мові С++ є два способи передачі аргументів у функцію: за значенням і за посиланням. За замовчуванням, якщо аргументом є не масив, застосовується перший спосіб. Для цього створюється копія значення аргументу, що привласнюється формальному параметру. Всі операції, виконані усередині функції, стосуються лише копії аргументу і не впливають на оригінал, що існує в модулі, що здійснює виклик.