Методичні вказівки до виконання практичних та лабораторних робіт з курсу «Обчислювальна техніка та програмування», страница 9

1.4 Контрольні питання

1. Як ввести початкові значення змінних.

2.   Яке місце розташування операторів опису типу в програмі.

3.   Які форми подання чисел у С++.

4.   Яка послідовність виконання операцій у виразах.

5.   Що розуміється під терміном « тіло циклу».

6.   Якого типу можуть бути мітки в операторі switch.

7.   Які існують форми запису умовного оператора.

2 РІШЕННЯ ЗАДАЧ З ВИКОРИСТАННЯМ ВЕКТОРІВ

      2.1 Мета роботи

       Засвоєння засобів роботи з векторами на мові С++; отримання навичок роботи з покажчиками.

     2.2 Підготовка до роботи

     При підготовці до роботи слідує вивчити засоби організації користувальчих типів. Необхідно ознайомитися з основними типами даних «Покажчик», «Вектор», а також навчитися використати змінні типу «Заслання» [1, с. 75-90; 2, ç. 89-96; конспект лекцій].

      ПОКАЖЧИКИ. Покажчики - особливий тип даних, що призначений для зберігання адреси в пам'яті. В мові C визначено два вигляди покажчиків: покажчики на об'єкт без певного типу - void*; покажчики на об'єкти певного типу.

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

int*p;

long a, *c;,

де int* - тип покажчик на деяку змінну типу int; p - ідентифікатор покажчика на змінну; c - ідентифікатор покажчика на деяку змінну типу (long*).

     Ініціалізація покажчика виконується за допомогою оператора вилучення адреси - “&”. Так якщо в тілі програми зустрівся оператор оголошення “long L;”, тоді використання оператора - &L  дасть у результаті адресу розміщеного в пам'яті значення змінної L. Ініціалізація покажчиків може бути виконана в розділі оператора оголошення

long L, *a=&L, G, *p;//a вказує на L.

p=&G;//p вказує на G

     Відзначимо, що використання покажчика в тілі програми виробляється без використання символу “”. Оскільки допустимий діапазон значень будь-якого покажчика включає спеціальну адресу 0 і набір додатних цілих чисел, що інтерпретуються як машинні адреси, то допускається ініціалізація покажчиків з використанням символічних констант. Наприклад:

Long L, *a=&L, b, *p, *pt= (Long*) 300;

Де покажчик pt одержує початкове значення 300. Використання символічних констант допустимо і в тілі програми. Наприклад:

long L, *a=&L, b, *p, *pt= (long*) 300;

p= (long*) 400;//покажчик p має значення 400.

     Особливе місце займає покажчик, значення якого дорівнює 0 - null. Цей покажчик використовується в якості спеціального прапора умови. Наприклад: при роботі з динамічними змінними вичерпана вільна пам'ять; кінець динамічної структури даних (списку, стека, дерева). Слідує знати, що оскільки покажчик-змінна теж має адресу, то можлива організація побічної адресації (в покажчикові зберігається адреса іншого покажчика на яку-небудь змінну). Наприклад:

long L, *p, *a=&L;

p= (long*) &a;//p зберігає адресу покажчика a на змінну L.

     При роботі з покажчиками, часто використовується операція взяття адреси-“&“. Тому необхідно знати, якщо навіть вони і очевидні, обмеження накладені на цю операцію. Ці обмеження наступні: не можна визначити адресу символічної константи; не можна визначити адресу арифметичного виразу; не можна визначити адресу змінної, описаної як register.

Операція разіменування - одномісна операція (‘*’) з тим же пріоритетом і асоціативністю праворуч наліво, що і інші одномісні операції. Сенс цієї операції полягає в переході від покажчика до значення на що він вказує. Таким чином, якщо в програмі є оголошення

int a, *p;//p - покажчик на int

a=1;

.........