Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
kolokvium-_programuvannya2.docx
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
102.92 Кб
Скачать

19. Масиви статичні і динамічні, Правила опису і використання одно та дво вимірних масивів.

Масив –це обмежена впорядкована сукупність однотипних пронумерованих величин. Кожну окрему величину називають компонентою (елементом) масиву. Номери елементів називають індексами, а тип компонентів– базовим типом.

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

  • Усі компоненти масиву мають один і той самий тип;

  • Кожна компонента у послідовності має свій номер (індекс), чим і відрізняється від інших елементів (ідентифікується);

  • Множина індексів є скінченною, зафіксованою в описі масиву і в процесі виконання програми не змінюється;

  • Можливість обробки компонентів (її доступність) не залежить від місця компоненти у послідовності, тобто елементи масиву є рівноправними.

С++ завдяки індексам забезпечує прямий доступ до кожного елемента масиву (крім прямого доступу, буває ще й послідовний).

У мові С++ розрізняють дві категорії масивів: статичні і динамічні. Пам’ять під статичні масиви виділяється в області, яка належить програмі (сегмент даних або стек). Динамічні масиви роз приділяють у вільній пам’яті (heep) –динамічній пам’яті.

У чистому С з динамічною пам’яттю працює функція malloc.

  • Опис масивів у С++

У С++ нумерування елементів масиву завжди починається з нуля.

Сам опис має вигляд:

<тип елементів><ім’я масиву> [<кількість елементів>]

int x [5]

Під час опису масиву його елементи зразу ж можна ініціалізувати:

int x [5] = {1, 3, 7}; x[Ø] = 1; x[1] = 3; x[2] = 7; x[3] = Ø; x[4] = Ø;

Якщо під час опису масивів написати int x[] = {1, 3, 7} , то компілятр виділить три елементи (без нульових.)

  • Дво вимірні масиви (матриці)

Опис:

Int matr [6][8]; - матриця із 6-тирядківі 8-мистовпців. У пам’яті елементи масиву розташовано по рядках. Ініціалізація:

Int matr [][]={{1,1},

{0,2},

{1,3}

};

Уразі повної ініціалізації вказується повний список значень у фігурних дужках. Кожен рядок ініціалізується в своїх фігурних дужках. Компілятор сам для себе визначить кількість за списком ініціалізації. 

Уразі часткової ініціалізації вказуються всі розміри масиву і неповні списки значень у фігурних дужках.  int A [4] [4] = {{2, 6},  {1 квітня, 1 2, 1 6},  {6}  }; 

20. Визначений інтеграл. Метод центральних прямокутників.

Оскільки інтеграл – це площа, то для його обчислення потрібно поділити відрізок [a,b] на N рівних (нерівних) частин і замінити кожну криволінійну трапецію на геометричну фігуру, площу якої знайти легко. Найпростіше це можна зробити, замінюючи кожну криволінійну трапецію прямокутником. Сума площ цих прямокутників і буде значенням шуканого інтегралу.

Формула центральних прямокутників:

R – похибка; h = ;

Головний член для повної похибки:

  1. Визначений інтеграл. Метод трапецій.

Ідея методу трапецій полягає в наближенні області під графіком функції f(x) трапецією та обчисленні її площі.

похибка, так званий залишковий член E(f) не перевищує за

 де  .

  1. Визначений інтеграл. Метод Сімпсона (парабол).

Даний метод є найточніший.

Формула:

23.Поясніть алгоритм обчислення інтегралів із заданою точністю.

Вибираємо число розбиттів N=10 і обчислюємо для нього значення інтегралу

int_New. Тоді запускаємо цикл, у якому тіло циклу має int_Old = int_New.

N=N+1; // N збільшується на 1.

Перераховуємо значення кроку і обчислюємо int_New. Цикл продовжуємо доти, доки int_Old – int_New не стане меншим за Eps.

24. Метод Монте-Карло.

- неперервна функція, яка на інтервалі [a,b] набуває тільки додатних значень

Для обчислення інтеграла використовуємо наступний алгоритм:

  1. табулюємо функцію f(x) на проміжку [a,b], визначаючи в процесі табулювання максимальне значення функції M на цьому проміжку

  2. встановлюємо Nб=0- початкове значення лічильника.

  3. Обислюємо S – площу прямокутника, сторони якого утворенні віссю Ox, лінією y=M і двома вертикальними лініями x=a і x=b: S=(b-a)*M

  4. Генеруємо на проміжку [a,b] N випадкових точок: xi=a+Ui(b-a),

  5. для кожної точки xi генеруємо випадкове число Y=Ui*M і визначаємо значення yi=f(xi).

  6. Якщо ,значення Nб збільшуємо на одиницю Nб= Nб+1

  7. Завершуємо процес генерування випадкових чисел. Обислюємо шукане значення визначеного інтеграла за методом Монте-Карло

Головні переваги:

  • Алгоритм легко узагальнюється на випадок обчислення кратних інтегралів для складних областей у багатовимірних просторах

  • Похибка обчислень інтеграла не залежить від гладкості та неперервності функції f(x). функція може бути перервною.

Головним недоліком алгоритму є його невисока точність і мала швидкодія. Просте для багатьох інтегралів швидкодія методу Монте-Карло (порівняно з методами , які ми розглядали вище) різко зростає. Швидкодію можна підвищити , якщо використовувати не рівномірний розподіл випадкових чисел, а згущувати кількість випадкових точок і під областях найвищої зміни функції.

25. Структури у мові С++. Опис. Ініціалізація. Доступ до полів структури.

Структура – складний тип даних, який ми самі утворили на основі інших типів. У Делфі аналогом структури є запис(record).

Структура в мові С++ –це тип даних, який складається з великої кількості елементів, що називаються членами структури(інколи– полями структури). Члени структури можуть мати різні типи. Структура скадається з полів – даних різних типів. Опис структури:

struct <ім’я(тег) структури>

{

     <тип поля_1> <назва поля_1>;

     <тип поля_2> <назва поля_2>;

        ...

     <тип поля_n> <назва поля_n>;

};

Або

Struct {<поля>;} <ім’я 1>,< ім’я 2>,…;

У ролі полів можуть бути : змінні, масиви, вказівники, інші структури і т.д. 

Для роботи з полями структури (читання/запису) в С++ використовують операції:

  • «.»(крапка) – якщо звертання йде за іменем

<назва змінної>.<назва поля>

  • -> якщо звертання – за адресою (посиланням)

<назва вказівника>-><назва поля>

Масив змінних типу структура можна оголосити так:

<назва типу структури><назва масиву>[кількість елементів]

Доступ до полів окремих елементів масиву здійснюється так:

<назва елемента>[індекс].<назва поля>

Змінні типу структура можуть бути аргументами функцій. Для них діють тіж самі правила, що і для змінних стандарних типів.

Ініціалізація полів структури- це заповнення її елементів початковими значеннями. Це можна зробити так:

Struct {

AnsiString PIB[30];

AnsiString group [8];

Int year;

Int inform, math, fizyk;

}

Khlystun={“Хлистун Ярослав Олександрівна”,”Феі-11”,1991,5,5,5}

Структури можна використовувати як параметир функції і як тип значення. Яке функція повертає.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]