para_OK_array.ppt
- Количество слайдов: 24
Масив – це сукупність елементів одного типу, звернення до яких здійснюється за допомогою імені масиву та індексу. (Лєхан С. А. ) Масив – це впорядкований скінчений набір даних одного типу, які зберігаються в послідовно розташованих комірках оперативної пам'яті і мають спільну назву (яку надає користувач). (Глинський Я. М. ) Масив – це структура даних, що являє собою однорідну (за типом), фіксовану (за розміром і конфігурацією) сукупність елементів, упорядкованих за номерами. (Скляр І. В. ) Масивом називається скінчена послідовність змінних одного типу, які мають однакове ім'я та розрізняються індексом. (Караванова Т. П. ) Масив – це змінна, утворена послідовністю значень, які називають елементами, є однотипними й ідентифікуються номерами (індексами)/ (Ставровський А. Б. )
Загальний вигляд: тип ім'я [розмір]; Тип імя [p 1] [p 2]; Розмір – це кількість елементів масиву. Розміром може бути лише стала величина (не змінна). Розрізняють одно- та багатовимірні масиви. Наприклад: 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); Такий прийом дозволяє однією функцією обробляти масиви різних розмірів
1. Статичні масиви § Опис 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]
2. Динамічні масиви § Опис int ryad, stovp; cin>>ryad>>stovp; int **a=new int *[ryad]; //вказівник на int, виділяється пам’ять під масив вказівників на рядки масиву for (int i=0; i
Вивести значення масивів: #include
У С++ змінні можуть бути розміщені або статично – під час компіляції, або динамічно – під час виконання програм, шляхом виклику відповідних функцій зі стандартної бібліотеки. Статичне розміщення більш ефективне, тому що виділення пам'яті відбувається до виконання програми, але ми повинні заздалегідь знати тип і розмір розташовуваної змінної. Завдання, у яких потрібно зберігати й обробляти заздалегідь невідоме число елементів, зазвичай вимагають динамічного виділення пам'яті. Після того як потреба у динамічній змінній зникає, місце, яке вона займала, можна звільнити для інших динамічних об'єктів.
Виділення динамічної пам'яті здійснюється операцією new. За допомогою new виділяється пам’ять, і адреса, з якої вона починається, заноситься у вказівник на потрібний тип: 1. int *n=new int; 2. int *m=new int (10); У зразку 1 виконується виділення достатньої для розміщення величини типу int ділянки динамічної пам'яті й записує адресу початку цієї ділянки в змінну n. Пам’ять під саму змінну n виділяється на етапі компіляції. У зразку 2, крім описаних вище дій, проводиться ініціалізація виділеної пам'яті значенням 10.
Виділення динамічної пам'яті 3. int n=100; //розмірність масиву float *p=new float [n]; У зразку 3 створюється динамічний масив, але p – не його ім'я, а вказівник , що зберігає адресу початку безперервної області динамічної пам'яті, достатньої для розміщення 100 елементів дійсного типу. Увага! Динамічні масиви при створюванні ініціювати не можна, і вони не заповнюються нулями. Доступ до елементів динамічного масиву здійснюється так само, як до статичного: p[5] або *(p+5)
Звільнення динамічної пам'яті Для звільнення пам'яті, виділеної за допомогою операції new, використовують операцію delete: 1. delete n; 2. delete m; 3. delete [] p;
З клавіатури вводиться ціле число n, а потім ще n цілих чисел. Розмістити уведені n чисел у динамічному масиві, після чого вивести їх на екран, відокремивши пропусками. # include< iostream. h> # include
§ Лєхан С. Ф. Інформатика С++. Спецкурс. 10 -12 класи. – Шепетівка; Аспект, 2007. § Глинський Я. М. , Анохін В. Є. , Ряжська В. А. С++ і С++ Builder. Навчальний посібник. – Львів: СПД Глинський, 2006. § Глушаков С. В. , Смирнов С. В. , Коваль А. В. Практикум по С++. – Харьков: Фолио, 2006. § Павловская Т. А. С/С++. Программирование на языке высокого уровня. – СПб. : Питер, 2003
Випадкові числа
Випадкові числа: скрізь… • викидання монети ( «орел» чи «решка» ) • падання снігу • Броунівский рух • поміхи при телефонному зв’язку • шум радіоефіру Случайные числа – это такая последовательность чисел, для которой невозможно предсказать следующее даже зная все предыдущие. Проблема: как получить на компьютере? Возможные решения: • использовать внешний источник шумовых помех • с помощью математических преобразований 19
Псевдовипадкові числа – це така послідовність чисел, яка має властивості випадкових чисел, але кожне наступне число вираховується по заданій формулі. Приклади: a, конгруентний 1. Випадкові цілі числа [0, m) (лінійний c, m - цілі числаметод) 230 -1 просте число 2. Випадкові дійсні числа [0, 1] Остача від діленя дробова частина числа Литература: 20 Д. Кнут, Искусство программирования для ЭВМ, т. 2.
Генератор випадкових чисел в С #include
Целые числа в заданном интервале Целые числа в интервале [0, N-1]: int random(int N) { return rand()% N; } Примеры: x = random ( 100 ); x = random ( z ); // интервал [0, 99] // интервал [0, z-1] Целые числа в интервале [a, b]: x = random ( z ) + a; // интервал [a, z-1+a] x = random (b – a + 1) + a; // интервал [a, b] 22
Генератор случайных чисел в Си Вещественные числа в интервале [0, 1] float x; [0, RAND_MAX] = [0, 32767] 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; 23
Программа #include