
- •(Мова програмування Сі) Практична робота № 1 "Прості типи даних. Базові конструкції мови с"
- •Короткі теоретичні відомості
- •Практична робота № 2 "Цикли та розгалуження. Функції та їх застосування"
- •Короткі теоретичні відомості оператори розгалуження
- •If (умова) оператор1;
- •For (вираз_1; вираз_2; вираз_3 ) оператор;
- •Практична робота № 3 "Одновимірні та багатовимірні масиви, робота з текстовими рядками"
- •Короткі теоретичні відомості
- •Рядки, як одновимірні масиви символів
- •Практична робота № 4 "Структури та їх використання. Масиви структур. Використання динамічної пам’яті"
- •Короткі теоретичні відомості Структури
- •Практична робота № 5 "Робота з файлами. Обробка текстової інформації"
- •Короткі теоретичні відомості
- •Практична робота № 1 "Вступ у класи та об’єкти. Елементи об'єктного підходу: модульність та обмеження доступу"
- •Короткі теоретичні відомості Анатомія класу
- •Рівні доступу до членів класу
- •Практична робота № 2
- •Короткі теоретичні відомості
- •Return 0;
- •Char st[80];
- •Int main() {int n; double c;
- •Switch (ab[I].Gender) {
- •Switch (ab[I].Gender) {
- •Подбельский в. В., Фомин с. С. Программирование на языке Си: Учеб. Пособие. –м.:Финансы и статистика, 1998. –600с.
Практична робота № 3 "Одновимірні та багатовимірні масиви, робота з текстовими рядками"
Мета роботи: навчитися складати програми обробки лінійних та двовимірних масивів, реалізовувати найпростіші операції з текстовими рядками.
Завдання: оформити кожен пункт завдання вибраного варіанту у вигляді функції. Всі необхідні дані для функцій передаються їм в якості параметрів. Використання глобальних змінних у функціях не допускається.
Короткі теоретичні відомості
СТАТИЧНІ ТА ДИНАМІЧНІ МАСИВИ
Масив – це кінцева послідовність даних одного типу. Кожен елемент масиву має однакове ім’я – ім’я масиву, і відрізняється індексом (ціле число), за яким здійснюється доступ до елемента масиву. Індекси масивів у С/С++ починаються з 0. У програмі одновимірний масив оголошується наступним чином:
<тип> <ім’я масиву> [розмір] <ініціалізація>; ,
де розмір – кількість елементів одновимірного масиву.
Після визначення ім’я масиву стає вказівником-константою, значення якого є незмінним і становить адресу першого (нульового) елемента масиву.
За способом розміщення масиви поділяються на статичні та динамічні. Розмір статичного масиву можна задавати константою або константним виразом. Оскільки ділянка у оперативній пам’яті під масив задається на етапі компіляції і її розмір визначається типом елементів масиву та їх кількістю, розмірність масиву повинна бути визначена у тексті програми, а не підчас її виконання. Для визначення масиву змінного розміру використовується механізм динамічного виділення пам’яті.
Наприклад:
- оголошення одновимірного масиву з п’яти елементів цілого типу:
int a[5];
- динамічне виділення пам’яті під 10 цілочисельних елементів:
int*m=new int [10];
Враховуючи те, що імя масиву є вказівником, зрозумілим стає зміст останньої операції: вказівникові на int m присвоюється початкова адреса ділянки памяті, виділеної у динамічній області під 10 цілочисельних елементів.
Перевагою динамічних масивів є те, що їх розмірність може бути змінною, тобто у програмі можна працювати з масивами довільного розміру, не вносячи змін до тексту програми. Проте, динамічні масиви не можна ініціалізувати при визначенні і вони за замовчуванням не заповнюються нулями.
Натомість ініціалізацію статичних масивів можна здійснювати при їх визначенні. При цьому слід зауважити, що у С/С++ не перевіряється вихід індексу за межі масиву.
Наприклад:
double d[] = {1, 2, 3, 4, 5};
float f[10]={1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, 10.0};
При поєднанні визначення масиву з ініціалізацією його розмірність у квадратних дужках можна не вказувати. Довжину масиву компілятор визначить за кількістю значень, наведених у фігурних дужках.
Для звернення до елементів масивів використовуються два способи, наприклад до 4-го (по порядку) елемента масиву a можна звернутися як a[3] або *(a+3). Останнє звернення базується на факті, що ім’я масиву є одночасно вказівником на його нульовий елемент, а зміщення вказівника у пам’яті відбувається на величину індексу помножену на розмір типу елементів масиву у байтах.
|
|
|
|
|
0 |
1 |
2 |
3 |
4 |
а
(а+3)
Пам’ять, зарезервовану під динамічний масив за допомогою new[ ], потрібно звільняти оператором delete [] <імя массиву>.
Отже, якщо кількість елементів масиву відома до виконання програми, краще використовувати статичний масив, розмірність якого позначити як значення іменованої константи. Якщо розмірність масиву необхідно задавати в процесі виконання програми (до введення його елементів), то доцільно створювати динамічний масив.