
- •Скорочений if
- •2.Повний if
- •15. Вкладені цикли. Оператори дочасного завершення циклу.
- •17.Поясніть операції з вказівниками і способи ініціалізації вказівників.
- •Посилання та правила їхнього використання.
- •19. Масиви статичні і динамічні, Правила опису і використання одно та дво вимірних масивів.
- •20. Визначений інтеграл. Метод центральних прямокутників.
- •26. Об'єднання. Синтаксис опису та сфери їхнього використання.
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 =
;
Головний член для повної похибки:
Визначений інтеграл. Метод трапецій.
Ідея методу трапецій полягає в наближенні області під графіком функції f(x) трапецією та обчисленні її площі.
похибка, так званий залишковий член E(f) не перевищує за
де
.
Визначений інтеграл. Метод Сімпсона (парабол).
Даний метод є найточніший.
Формула:
23.Поясніть алгоритм обчислення інтегралів із заданою точністю.
Вибираємо число розбиттів N=10 і обчислюємо для нього значення інтегралу
int_New. Тоді запускаємо цикл, у якому тіло циклу має int_Old = int_New.
N=N+1; // N збільшується на 1.
Перераховуємо значення кроку і обчислюємо int_New. Цикл продовжуємо доти, доки int_Old – int_New не стане меншим за Eps.
24. Метод Монте-Карло.
-
неперервна функція, яка на інтервалі
[a,b]
набуває тільки додатних значень
Для обчислення інтеграла використовуємо наступний алгоритм:
табулюємо функцію f(x) на проміжку [a,b], визначаючи в процесі табулювання максимальне значення функції M на цьому проміжку
встановлюємо Nб=0- початкове значення лічильника.
Обислюємо S – площу прямокутника, сторони якого утворенні віссю Ox, лінією y=M і двома вертикальними лініями x=a і x=b: S=(b-a)*M
Генеруємо на проміжку [a,b] N випадкових точок: xi=a+Ui(b-a),
для кожної точки xi генеруємо випадкове число Y=Ui*M і визначаємо значення yi=f(xi).
Якщо
,значення Nб збільшуємо на одиницю Nб= Nб+1
Завершуємо процес генерування випадкових чисел. Обислюємо шукане значення визначеного інтеграла за методом Монте-Карло
Головні переваги:
Алгоритм легко узагальнюється на випадок обчислення кратних інтегралів для складних областей у багатовимірних просторах
Похибка обчислень інтеграла не залежить від гладкості та неперервності функції 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}
Структури можна використовувати як параметир функції і як тип значення. Яке функція повертає.