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

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

29520-para_ok_array.ppt

  • Количество слайдов: 24

>Масиви Масиви

>Масив – це сукупність елементів одного типу, звернення до яких здійснюється за допомогою імені Масив – це сукупність елементів одного типу, звернення до яких здійснюється за допомогою імені масиву та індексу. (Лєхан С.А.) Масив – це впорядкований скінчений набір даних одного типу, які зберігаються в послідовно розташованих комірках оперативної пам'яті і мають спільну назву (яку надає користувач). (Глинський Я.М.) Масив – це структура даних, що являє собою однорідну (за типом), фіксовану (за розміром і конфігурацією) сукупність елементів, упорядкованих за номерами. (Скляр І.В.) Масивом називається скінчена послідовність змінних одного типу, які мають однакове ім'я та розрізняються індексом. (Караванова Т.П.) Масив – це змінна, утворена послідовністю значень, які називають елементами, є однотипними й ідентифікуються номерами (індексами)/ (Ставровський А. Б.) Поняття масиву

>Загальний вигляд: тип ім'я [розмір]; Тип імя [p1] [p2]; Розмір – це кількість елементів Загальний вигляд: тип ім'я [розмір]; Тип імя [p1] [p2]; Розмір – це кількість елементів масиву. Розміром може бути лише стала величина (не змінна). Розрізняють одно- та багатовимірні масиви. Наприклад: int a[5]; char st[30]; float x[5], y[5]; Опис масиву

>За допомогою імені масиву:  a[0]=3; cout<<a[4]; Увага! Нумерація елементів масиву починається з нуля. За допомогою імені масиву: a[0]=3; cout<

>Надати значення елементам масиву) можна одним із способів: Використовуючи принцип замовчування Безпосередньо під час Надати значення елементам масиву) можна одним із способів: Використовуючи принцип замовчування Безпосередньо під час його оголошення Застосовуючи команду присвоєння Під час ведення із клавіатури Під час введення із файлу Ініціалізація масиву

>Присвоєння нульових значень 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; Під час оголошення: 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(вираз) sizeof (тип) Наприклад: #include #include int main () { int little[5]={1,2, 3, 4, 5}; double x=1; cout<<“sizeof(float)=“<

>Оскільки в С++ не контролюється розмір масиву, то у функцію слід передавати також параметр, Оскільки в С++ не контролюється розмір масиву, то у функцію слід передавати також параметр, що містить кількість елементів у масиві: void fun(int A[], int n); Такий прийом дозволяє однією функцією обробляти масиви різних розмірів Передача масивів у функції

>Статичні масиви Опис  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}}; //початкові значення групуються в рядки 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 ryad, stovp; cin>>ryad>>stovp; int **a=new int *[ryad]; //вказівник на вказівник на int, виділяється пам’ять під масив вказівників на рядки масиву for (int i=0; i

>Вивести значення масивів: #include<iostream.h> #include<conio.h> void show_array(int A[], int n) { for (int i=0; Вивести значення масивів: #include #include void show_array(int A[], int n) { for (int i=0; i #include void get_array(int A[], int n) { for (int i=0; i>A[i]; } int main () { int little[5]; int big[3]; get_array(little, 5); for (int i=0; i<5; i++) cout<

>У С++ змінні можуть бути розміщені або статично – під час компіляції, або динамічно У С++ змінні можуть бути розміщені або статично – під час компіляції, або динамічно – під час виконання програм, шляхом виклику відповідних функцій зі стандартної бібліотеки. Статичне розміщення більш ефективне, тому що виділення пам'яті відбувається до виконання програми, але ми повинні заздалегідь знати тип і розмір розташовуваної змінної. Завдання, у яких потрібно зберігати й обробляти заздалегідь невідоме число елементів, зазвичай вимагають динамічного виділення пам'яті. Після того як потреба у динамічній змінній зникає, місце, яке вона займала, можна звільнити для інших динамічних об'єктів. Статичні та динамічні дані

>Виділення динамічної пам'яті здійснюється операцією new. За допомогою new виділяється пам’ять, і адреса, з Виділення динамічної пам'яті здійснюється операцією 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 створюється динамічний масив, але int n=100;//розмірність масиву float *p=new float [n]; У зразку 3 створюється динамічний масив, але p – не його ім'я, а вказівник , що зберігає адресу початку безперервної області динамічної пам'яті, достатньої для розміщення 100 елементів дійсного типу. Увага! Динамічні масиви при створюванні ініціювати не можна, і вони не заповнюються нулями. Доступ до елементів динамічного масиву здійснюється так само, як до статичного: p[5] або *(p+5) Робота з динамічними даними Виділення динамічної пам'яті

>Для звільнення пам'яті, виділеної за допомогою операції new, використовують операцію delete: delete n; delete Для звільнення пам'яті, виділеної за допомогою операції new, використовують операцію delete: delete n; delete m; delete [] p; Робота з динамічними даними Звільнення динамічної пам'яті

>З клавіатури вводиться ціле число n, а потім ще n цілих чисел. Розмістити уведені З клавіатури вводиться ціле число n, а потім ще n цілих чисел. Розмістити уведені n чисел у динамічному масиві, після чого вивести їх на екран, відокремивши пропусками. # include< iostream.h> # include int main () {int n, *a; //розмір та масив cout<<“n=”; cin>>n; a=new int [n]; for(int i=0; i>a[i]; //уведення масиву cout<<“masic:\n”; for (int i=0; i

>Лєхан С.Ф. Інформатика С++. Спецкурс. 10-12 класи. – Шепетівка; Аспект, 2007. Глинський Я.М., Анохін Лєхан С.Ф. Інформатика С++. Спецкурс. 10-12 класи. – Шепетівка; Аспект, 2007. Глинський Я.М., Анохін В.Є., Ряжська В.А. С++ і С++ Builder. Навчальний посібник. – Львів: СПД Глинський, 2006. Глушаков С.В., Смирнов С.В., Коваль А.В. Практикум по С++. – Харьков: Фолио, 2006. Павловская Т.А. С/С++. Программирование на языке высокого уровня. – СПб.: Питер, 2003 Література

>Випадкові числа Випадкові числа

>19 Випадкові числа: скрізь… викидання монети («орел» чи «решка») падання снігу Броунівский рух поміхи 19 Випадкові числа: скрізь… викидання монети («орел» чи «решка») падання снігу Броунівский рух поміхи при телефонному зв’язку шум радіоефіру Случайные числа – это такая последовательность чисел, для которой невозможно предсказать следующее даже зная все предыдущие. Проблема: как получить на компьютере? Возможные решения: использовать внешний источник шумовых помех с помощью математических преобразований

>20 Псевдовипадкові числа Псевдовипадкові числа – це така послідовність чисел, яка має властивості випадкових 20 Псевдовипадкові числа Псевдовипадкові числа – це така послідовність чисел, яка має властивості випадкових чисел, але кожне наступне число вираховується по заданій формулі. Приклади: Випадкові цілі числа [0,m) (лінійний конгруентний метод) Випадкові дійсні числа [0,1] Литература: Д. Кнут, Искусство программирования для ЭВМ, т.2. дробова частина числа a, c, m - цілі числа просте число 230-1 Остача від діленя

>21 Генератор випадкових чисел в С RAND_MAX – максимальне випадкове ціле число  21 Генератор випадкових чисел в С RAND_MAX – максимальне випадкове ціле число (зазвичай RAND_MAX = 32767) rand() – випадкове ціле число в інтервалі [0,RAND_MAX] srand(N) – встановити початкове значення послідовності випадкових чисел N: #include // випадкові числа int x, y; x = rand(); // перше число [0,RAND_MAX] y = rand(); // уже інше число srand ( 345 ); // начнем с 345

>22 Целые числа в заданном интервале  Целые числа в интервале [0,N-1]:  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; 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 <graphics.h> #include <conio.h> #include <stdlib.h>    main() { 24 Программа #include #include #include main() { int x, y, R, G, B; initwindow ( 500, 500 ); // цикл до нажатия на Esc closegraph(); } int random(int N) { return rand() % N; } функция для получения случайного числа от 0 до N-1