- •Створення, виконання та відлагодження програм в інтегрованих середовищах програмування
- •Завдання
- •Дослідження цілих та дійсних типів та операцій над значеннями даних типів
- •Опис програмних об’єктів
- •Ініціалізація змінних при створенні
- •Оператор привласнення
- •Операції над значеннями цілих та дійсних типів
- •Загальна спрощена структура програми
- •Методичні вказівки Правила складання ідентифікаторів
- •Правила опису об’єктів у програмі
- •Завдання 1
- •Завдання 2
- •Завдання 3
- •Дослідження бітових операцій над цілими значеннями
- •Бітові операції
- •Завдання
- •Дослідження логічних типів, логічних операцій та операцій відношення
- •Завдання
- •Лабораторна робота 1.5 дослідження вказівних типів та операцій над значеннями даних типів
- •Завдання
- •Лабораторна робота 1.6 дослідження символьних типів
- •Завдання
- •Лабораторна робота 1.7 дослідження виразів
- •Теоретичні відомості
- •Методичні вказівки Правила написання операторів привласнення та виразів
- •Завдання
- •Контрольні запитання
- •Завдання
- •Контрольні запитання
- •Мета лабораторної роботи - вивчити блочну організацію програм та стратегії розподілу пам'яті.
- •Динамічний розподіл пам’яті у блоці
- •Методичні вказівки Правила написання програм
- •Своєчасно звільняйте пам'ять, “захоплену” в “купі” (оператори dispose/ delete) Завдання
- •Контрольні запитання
- •Лабораторна робота 1.10
- •Дослідження структурних операторів
- •Мета лабораторної роботи - вивчити устрій структурних операторів та дослідити можливості та особливості застосування різноманітних форм структурних операторів.
- •Теоретичні відомості
- •Правила написання програм
- •Завдання
- •Методичні вказівки
- •Контрольні запитання
- •Завдання
- •Контрольні питання
- •Література
Лабораторна робота 1.5 дослідження вказівних типів та операцій над значеннями даних типів
Мета лабораторної роботи - дослідити та вивчити вказівні типи, устрій їх значень та операції над значеннями цих типів.
Теоретичні відомості
Програмні об’єкти розташовуються у пам’яті комп’ютера. Пам’ять комп’ютеру складається з діапазону комірок, які мають унікальні адреси, що складають адресний простір. Будь-яка комірка пам’яті, що адресується, може, як правило, зберігати один байт (8 біт) інформації. Програмні об’єкти можуть займати одну або більше комірок. Адреса першої комірки об’єкта є його адресою.
Існує спеціальний тип для зберігання адрес – вказівний. Змінна-покажчик може бути типізованою або нетипізованою. Типізований покажчик може містити тільки адресу об’єкта відповідного типу. Нетипізований покажчик можу адресувати об’єкт будь-якого типу.
Значення змінної покажчика може бути присвоєно іншому покажчикові, якщо їх типи є ідентичними. Зміст нетипізованого покажчика може бути присвоєно будь-якому покажчику. Покажчикові може бути присвоєно «пусте» значення (null), яке вказує на абстрактний неіснуючий об’єкт.
Наприклад:
int *ipA;
float *fpB;
void *pC;
Існують дві основні операції роботи з покажчиками: взяття адреси та розіменування. Адреса програмного об’єкта може бути отримана за допомогою спеціальної операції – взяття адреси. Адресу об’єкта певного типу може бути присвоєно тільки покажчику того ж типу або нетипизованому покажчику. Розіменування дозволяє отримати доступ до значення об’єкту, на якій вказує покажчик. Розіменування підтримується тільки для типізованих покажчиків.
Розмір значення змінної залежить від її типу. Для визначення розміру певного значення змінної чи розміру будь-якого значення певного типу в мовах програмування існує спеціальна базова операція sizeof.
Наприклад:
ipA = & iCount;
fpB = &fR;
pC = null;
iK = * ipA;
* ipA = iK;
iSize = sizeof (int);
iSize = sizeof (iK);
Таблиця 2.9
Використання нетипізованих вказівних змінних
Можливі дії |
Неможливі дії |
v = &U |
розіменувати |
v = U |
U = v |
v = v |
U = &v |
v = new size |
|
Примітка. U – типізована вказівна змінна; p, v - нетипізовані вказівні змінні.
Завдання
Написати програми, які складаються з наступних дій:
Опису змінних напередвизначених типів, які наведені у варіанті (табл.2.10).
Опису вказівних змінних відповідних типів (табл.2.10).
Опису нетипізованої вказівної змінної.
Ініціювання вказівних змінних адресами змінних, що описанні в п.1 даного завдання.
Ініціювання змінних, що описанні в п.1 даного завдання, значеннями з варіанта, використовуючи операцію розіменування вказівних змінних.
Визначення розміру всіх змінних вашої програми.
Ініціювання нетипізованої вказівної змінної адресами типізованих вказівних змінних.
Опису посилання.
Таблиця 2.10
№ варіанта |
unsigned short |
int |
float |
double |
1 |
120 |
-4986 |
234.9877775 |
3.4e-55 |
2 |
52 |
886 |
-414.5435 |
12.4e35 |
3 |
177 |
-189 |
84.353535 |
-2.6e13 |
4 |
87 |
11239 |
-532.98987 |
3.9e-41 |
5 |
1400 |
-386 |
4.4525 |
-7.3e23 |
6 |
6692 |
1226 |
-896.333333 |
6.9e-86 |
7 |
10 |
-528 |
654.9962 |
-4.5e25 |
8 |
380 |
265 |
-21.5437711 |
99.9e-220 |
9 |
612 |
-805 |
14.4328 |
-30.22e100 |
10 |
45671 |
167 |
-3.9412 |
-6.8e-6 |
11 |
27 |
-4852 |
135.7907 |
7.4e66 |
12 |
503 |
98 |
-247.11113 |
5.8e-336 |
13 |
9040 |
-267 |
0.007642 |
-1.11e99 |
14 |
43 |
5124 |
-8976.04 |
3.5e-4 |
15 |
524 |
-61 |
25.7295 |
-0.53e-707 |