Масиви Масив – це сукупність елементів одного типу,


![Загальний вигляд: тип ім'я [розмір]; Тип імя [p1] [p2]; Розмір – це кількість елементів Загальний вигляд: тип ім'я [розмір]; Тип імя [p1] [p2]; Розмір – це кількість елементів](https://present5.com/presentacii-2/20171211\29520-para_ok_array.ppt\29520-para_ok_array_3.jpg)
![За допомогою імені масиву: a[0]=3; cout<<a[4]; Увага! Нумерація елементів масиву починається з нуля. За допомогою імені масиву: a[0]=3; cout<<a[4]; Увага! Нумерація елементів масиву починається з нуля.](https://present5.com/presentacii-2/20171211\29520-para_ok_array.ppt\29520-para_ok_array_4.jpg)

![Присвоєння нульових значень int B[8]; for(int i=0; i<8; i++) B[i]=0; Під час оголошення: Присвоєння нульових значень int B[8]; for(int i=0; i<8; i++) B[i]=0; Під час оголошення:](https://present5.com/presentacii-2/20171211\29520-para_ok_array.ppt\29520-para_ok_array_6.jpg)


![Статичні масиви Опис float a[5][4]; Початкові значення int c[3][2]={{4,2},{6,7},{5,8}}; //початкові значення групуються Статичні масиви Опис float a[5][4]; Початкові значення int c[3][2]={{4,2},{6,7},{5,8}}; //початкові значення групуються](https://present5.com/presentacii-2/20171211\29520-para_ok_array.ppt\29520-para_ok_array_9.jpg)
![Динамічні масиви Опис int ryad, stovp; cin>>ryad>>stovp; int **a=new int *[ryad]; //вказівник на вказівник Динамічні масиви Опис int ryad, stovp; cin>>ryad>>stovp; int **a=new int *[ryad]; //вказівник на вказівник](https://present5.com/presentacii-2/20171211\29520-para_ok_array.ppt\29520-para_ok_array_10.jpg)
![Вивести значення масивів: #include<iostream.h> #include<conio.h> void show_array(int A[], int n) { for (int i=0; Вивести значення масивів: #include<iostream.h> #include<conio.h> void show_array(int A[], int n) { for (int i=0;](https://present5.com/presentacii-2/20171211\29520-para_ok_array.ppt\29520-para_ok_array_11.jpg)


![int n=100;//розмірність масиву float *p=new float [n]; У зразку 3 створюється динамічний масив, але int n=100;//розмірність масиву float *p=new float [n]; У зразку 3 створюється динамічний масив, але](https://present5.com/presentacii-2/20171211\29520-para_ok_array.ppt\29520-para_ok_array_14.jpg)







![22 Целые числа в заданном интервале Целые числа в интервале [0,N-1]: 22 Целые числа в заданном интервале Целые числа в интервале [0,N-1]:](https://present5.com/presentacii-2/20171211\29520-para_ok_array.ppt\29520-para_ok_array_22.jpg)
![23 Генератор случайных чисел в Си Вещественные числа в интервале [0,1] float x; 23 Генератор случайных чисел в Си Вещественные числа в интервале [0,1] float x;](https://present5.com/presentacii-2/20171211\29520-para_ok_array.ppt\29520-para_ok_array_23.jpg)

29520-para_ok_array.ppt
- Количество слайдов: 24
Масиви
Масив – це сукупність елементів одного типу, звернення до яких здійснюється за допомогою імені масиву та індексу. (Лєхан С.А.) Масив – це впорядкований скінчений набір даних одного типу, які зберігаються в послідовно розташованих комірках оперативної пам'яті і мають спільну назву (яку надає користувач). (Глинський Я.М.) Масив – це структура даних, що являє собою однорідну (за типом), фіксовану (за розміром і конфігурацією) сукупність елементів, упорядкованих за номерами. (Скляр І.В.) Масивом називається скінчена послідовність змінних одного типу, які мають однакове ім'я та розрізняються індексом. (Караванова Т.П.) Масив – це змінна, утворена послідовністю значень, які називають елементами, є однотипними й ідентифікуються номерами (індексами)/ (Ставровський А. Б.) Поняття масиву
Загальний вигляд: тип ім'я [розмір]; Тип імя [p1] [p2]; Розмір – це кількість елементів масиву. Розміром може бути лише стала величина (не змінна). Розрізняють одно- та багатовимірні масиви. Наприклад: int a[5]; char st[30]; float x[5], y[5]; Опис масиву
Надати значення елементам масиву) можна одним із способів: Використовуючи принцип замовчування Безпосередньо під час його оголошення Застосовуючи команду присвоєння Під час ведення із клавіатури Під час введення із файлу Ініціалізація масиву
Присвоєння нульових значень int B[8]; for(int i=0; i<8; i++) B[i]=0; Під час оголошення: int s[5]={163, 4, 170, 3, 8} float r[]={1.5, 3, 4.2} //компілятор сам визначає розмір =3 char a[6]=“abetka”; або char a[6]={‘a’, ‘b’, ‘e’, ‘t’, ‘k’, ‘a’} Якщо початкових значень менше, ніж елементів у масиві, елементи, що залишилися автоматично одержують нульові початкові значення int n[10]={0}; Масиви-сталі оголошуються так: const int flag[]={1, 2}; // якщо сталі не ініціалізувати під час оголошення елементам автоматично будуть присвоєні 0. Використання константи для задання розміру: const int n=10; int m[n]; Уведення із клавіатури: int x[5]; for(i=0; i<5; i++) cin>>x[i]; Приклади:
Функція визначення розміру sizeof використовується для обчислення розміру значення виразу чи типу в байтах і має дві форми: sizeof(вираз) sizeof (тип) Наприклад: #include
Оскільки в С++ не контролюється розмір масиву, то у функцію слід передавати також параметр, що містить кількість елементів у масиві: void fun(int A[], int n); Такий прийом дозволяє однією функцією обробляти масиви різних розмірів Передача масивів у функції
Статичні масиви Опис float a[5][4]; Початкові значення int c[3][2]={{4,2},{6,7},{5,8}}; //початкові значення групуються в рядки int d[2][2]={{10},{9,14}}; // d[0][0]=10, d[0][1]=0 Звернення до елементу a[i][j] Багатовимірні масиви
Динамічні масиви Опис int ryad, stovp; cin>>ryad>>stovp; int **a=new int *[ryad]; //вказівник на вказівник на int, виділяється пам’ять під масив вказівників на рядки масиву for (int i=0; i
Вивести значення масивів: #include
У С++ змінні можуть бути розміщені або статично – під час компіляції, або динамічно – під час виконання програм, шляхом виклику відповідних функцій зі стандартної бібліотеки. Статичне розміщення більш ефективне, тому що виділення пам'яті відбувається до виконання програми, але ми повинні заздалегідь знати тип і розмір розташовуваної змінної. Завдання, у яких потрібно зберігати й обробляти заздалегідь невідоме число елементів, зазвичай вимагають динамічного виділення пам'яті. Після того як потреба у динамічній змінній зникає, місце, яке вона займала, можна звільнити для інших динамічних об'єктів. Статичні та динамічні дані
Виділення динамічної пам'яті здійснюється операцією new. За допомогою new виділяється пам’ять, і адреса, з якої вона починається, заноситься у вказівник на потрібний тип: int *n=new int; int *m=new int (10); У зразку 1 виконується виділення достатньої для розміщення величини типу int ділянки динамічної пам'яті й записує адресу початку цієї ділянки в змінну n. Пам’ять під саму змінну n виділяється на етапі компіляції. У зразку 2, крім описаних вище дій, проводиться ініціалізація виділеної пам'яті значенням 10. Робота з динамічними даними
int n=100;//розмірність масиву float *p=new float [n]; У зразку 3 створюється динамічний масив, але p – не його ім'я, а вказівник , що зберігає адресу початку безперервної області динамічної пам'яті, достатньої для розміщення 100 елементів дійсного типу. Увага! Динамічні масиви при створюванні ініціювати не можна, і вони не заповнюються нулями. Доступ до елементів динамічного масиву здійснюється так само, як до статичного: p[5] або *(p+5) Робота з динамічними даними Виділення динамічної пам'яті
Для звільнення пам'яті, виділеної за допомогою операції new, використовують операцію delete: delete n; delete m; delete [] p; Робота з динамічними даними Звільнення динамічної пам'яті
З клавіатури вводиться ціле число n, а потім ще n цілих чисел. Розмістити уведені n чисел у динамічному масиві, після чого вивести їх на екран, відокремивши пропусками. # include< iostream.h> # include
Лєхан С.Ф. Інформатика С++. Спецкурс. 10-12 класи. – Шепетівка; Аспект, 2007. Глинський Я.М., Анохін В.Є., Ряжська В.А. С++ і С++ Builder. Навчальний посібник. – Львів: СПД Глинський, 2006. Глушаков С.В., Смирнов С.В., Коваль А.В. Практикум по С++. – Харьков: Фолио, 2006. Павловская Т.А. С/С++. Программирование на языке высокого уровня. – СПб.: Питер, 2003 Література
Випадкові числа
19 Випадкові числа: скрізь… викидання монети («орел» чи «решка») падання снігу Броунівский рух поміхи при телефонному зв’язку шум радіоефіру Случайные числа – это такая последовательность чисел, для которой невозможно предсказать следующее даже зная все предыдущие. Проблема: как получить на компьютере? Возможные решения: использовать внешний источник шумовых помех с помощью математических преобразований
20 Псевдовипадкові числа Псевдовипадкові числа – це така послідовність чисел, яка має властивості випадкових чисел, але кожне наступне число вираховується по заданій формулі. Приклади: Випадкові цілі числа [0,m) (лінійний конгруентний метод) Випадкові дійсні числа [0,1] Литература: Д. Кнут, Искусство программирования для ЭВМ, т.2. дробова частина числа a, c, m - цілі числа просте число 230-1 Остача від діленя
21 Генератор випадкових чисел в С RAND_MAX – максимальне випадкове ціле число (зазвичай RAND_MAX = 32767) rand() – випадкове ціле число в інтервалі [0,RAND_MAX] srand(N) – встановити початкове значення послідовності випадкових чисел N: #include
22 Целые числа в заданном интервале Целые числа в интервале [0,N-1]: Примеры: Целые числа в интервале [a,b]: int random(int N) { return rand()% N; } x = random ( 100 ); // интервал [0,99] x = random ( z ); // интервал [0,z-1] x = random ( z ) + a; // интервал [a,z-1+a] x = random (b – a + 1) + a; // интервал [a,b]
23 Генератор случайных чисел в Си Вещественные числа в интервале [0,1] float x; x = 1.*rand() / RAND_MAX; // интервал [0,1] Вещественные числа в интервале [0,z] x = 1.*z*rand() / RAND_MAX; Вещественные числа в интервале [a,z+a] x = 1.*z*rand() / RAND_MAX + a; Вещественные числа в интервале [a,b] x = 1.*(b-a)*rand() / RAND_MAX + a; [0,RAND_MAX] = [0,32767]
24 Программа #include

