- •2. Алгоритм и его свойства. Методы записи алгоритмов.
- •3.Булева алгебра и вопросы, связанные с ее применением
- •4.Векторы в трехмерном пространстве. Понятия правого ортонормированного базиса. Скалярное, векторное и смешанное произведения.
- •5.Виды уравнений плоскостей и прямых в пространстве. Условия их параллельности и перпендикулярности.
- •6.Группы, кольца, поля (определения и примеры)
- •7. Дискретные св. Числовые х-ки и их св-ва.
- •8. Ду, допускающие понижение порядка.
- •9. Ду не разрешенные относ-но производной. Ур-я Лагранжа и Клеро.
- •12. Диалоговый и пакетный режим работы эвм с пользователем. Принципы функционирования мультипрограммных ос.
- •11. Дифференцируемось функций многих действительных переменных. Экстремумы функций многих действительных переменных.
- •13. Элементарные функции комплексной переменной и их свойства.
- •14. Общие понятия исчисления.
- •Двійкова система числення.
- •15. Застосування теорії операційного числення до розв’язання диференціальних рівнянь.
- •16. Зв’язані динамічні структури даних: черги і стеки.
- •17. Интегрирование фкп. Интеграл по замкнутому контуру от аналитической функции. Интегральная формула Коши и следствия из нее.
- •18. Интерполирование функций. Интерпол. Полином лагранжа
- •19.Интуитивное и техническое понятие информации. Понятие бита и байта. Модель оперативной памяти эвм.
- •20. Квадратичные формы: ранг, канонический и нормальный виды, сигнатура. Способы сведения к каноническому виду.
- •21. Классификация изолированных особых точек фкп. Интегральный вычет.
- •22. Классическое определение вероятности. Геометрическая вероятность. Формула полной вероятности.Формула Байеса.
- •Событие наз. Простым (элементарным), если оно состоит только лишь из одного элементарного исхода, и составным – если k исходов.
- •Классическое определение вероятности Колмагорова
- •Геометрическая вероятность
- •Конструкторы и деструкторы особые члены класса, служащие для инициализации и уничтожения объекта.
- •24. Кратные интегралы (двойные, тройные): определение, основные свойства. Применение.
- •25. Криволинейные и поверхностные интегралы. Определение. Основные свойства. Применение.
- •26. Линии 2-го порядка
- •27. Лінійні диференціальні рівняння першого порядку та методи їх розв’язування.
- •29. Неодн. Лин. Ду n-го порядка с пост. Коэф-тами, спец. Прав. Часть.
- •Метод неопр коэф-тов.
- •31.Линейные операторы. Собственные векторы и собственные значения линейных операторов.
- •32.Матрицы. Операци над матрицами. Определители, миноры, алгебраические дополнения.
- •33.Методы комбинаторного анализа и их применение для реш-я задач.
- •1)Элементарные рекуррентные соотн-я.
- •3)Метод включения и исключения.
- •34. Метрические пространства
- •35.Многочлены над полями q,r,с. Основная tr алгебры.
- •36. Непрерывность функции одной переменной. Свойства непрерывных функций. Понятие точек разрыва и их классификация.
- •Точки разрыва
- •Свойства функций, непрерывных в точке
- •Глобальные свойства непрерывных функций
- •37.Обратные матрицы. Методы нахождения обратной матрицы.
- •38. Определенный инт-л и его св-ва
- •39. Определения теории графов. Задачи оптимизации на графах.
- •42.Основные типы ду 1-го порядка
- •Уравнения с разделенными и разделяющимися пер-ми.
- •Уравнение Бернулли
- •43. Основные типы диалогов эвм-человек.
- •44. Основные типы уравнений матфизики.
- •Теплопроводность стержня
- •Теплопроводность пластины
- •Стационарный случай
- •Гельмгольца
- •45. Основные логические блоки эвм и их назначения.
- •46. Поверхности 2-го порядка.
- •47.Повторение испытании. Формула Бернулли. Формула Пуассона. Локальная и интегральная теоремы Муавра и Лапласа.
- •48. Поле комплексных чисел. Различные формы записи комплексных чисел. Формула муавра.
- •50. Понятие математического (программного) обеспечения эвм. Инструментальное математическое обеспечение. Примеры.
- •51. Поняття обчислювальної складності алгоритму. Параметри аналізу обчислювальної складності. Поняття обчислювальної складності
- •52. Понятие ос, ее основные компоненты. Понятие ресурса эвм.
- •53. Понятие первообр-й ф-и, неопр. Инт-ла и их св-ва.
- •1)Метод замены пер-й
- •2)Метод интегр-я по частям
- •Простое наследование
- •Множественное наследование
- •55. Понятие функции комплексной переменной. Предел, непрерывность, производная функции комплексной переменной. Условия Коши-Римана дифференцируемости функции.
- •Сравнение функций.
- •57.Прямая на плоскости. Уравнение прямой на плоскости в прямоугольной сис. Координат.
- •58.Ранг матрицы, способы его вычисления. Теорема Кронекера – Капелли.
- •60.Решение задачи коши для обыкновенного диф. Ур. Методом эйлера
- •61. Решение нелинейных алгебраических уравнений методом Ньютона.
- •62.Решение системы линейных алгебраических уравнений методом простой итерации.
- •Второй способ особенно прост в случае, когда система однородна (f1(t)≡0 и f2(t)≡0), так как в этом случае правые части уравнений (3), (4) и (5) равны нулю.
- •64.Системы линейных алгебраических уравнений.
- •Скалярні і векторні поля та їх характеристики Скалярні поля
- •Векторні поля
- •Формула Остроградського-Гаусса
- •Формула Стокса
- •68. Технологический процесс создания рабочей программы для эвм с применением транслятора (текстовый редактор, транслятор, компоновщик).
- •69. Трансляторы и интерпретаторы. Назначение и отличие.
- •70. Тригонометрический ряд фурье
- •71.Формула Тейлора функции одной действительной переменной и ее остаточный член в разных формах. Ряд тейлора. Разложение в ряд Маклорена основных элементарных функций.
- •72.Условия почленного дифференцирования и интегрирования. Степенные ряды.
- •73. Численное интегрирование. Формула трапеций.
- •74. Числовые посл-ти.
- •Предел посл-ти.
- •Арифм. Операции над посл-тями.
- •75.Числовые ряды, признаки их сходимости. Абсолютно и условно сходящиеся ряды, их свойства.
16. Зв’язані динамічні структури даних: черги і стеки.
Динамічні структури - структури даних, розмір яких (об'єм пам'яті, що вони займають) може змінюватись у процесі виконання програми. Для організації таких структур використовуються динамічні змінні, які створюються та знищуються в процесі виконання програми.
Характеризуються:
1. Ці змінні явно не описуються, до них неможливо звернутись за допомогою ідентифікатора.
2. Пам'ять для цих змінних не виділяється під час формування коду програми. Вона виділяється у спеціальній області оперативної пам'яті - heap-області (динамічній пам'яті) - тільки під час виконання програми (звідки і назва - динамічні змінні).
3. Доступ до таких змінних виконується за допомогою показівників (чи посилань), які стають активними після визначення динамічного об'єкту та містять адресу у вигляді <сегмент>:<зміщення>
Показівники можуть містити будь-яку адресу: статичних даних, фрагменту коду програми, стеку і т.і.).
За визначенням, список — це послідовність з n≥0 елементів X[1],X[2], … X[n], для якої виконується наступна умова: якщо n>0 та X[1] — перший елемент у списку, а X[n] — останній, то k-й елемент розташований між X[k-1] та X[k+1] елементами для усіх 1<k<n.
З такими структурами даних виконуються наступні операції:
отримання k-го елемента списку для читання чи запису в нього нового значення;
додавання нового елемента в будь-яку позицію в списку;
видалення елемента списку;
об'єднання в одному списку двох або більше лінійних списків;
розбиття списку на два або більше фрагментів;
створення копії списку;
визначення кількості елементів в списку;
сортування елементів списку;
пошук елемента, що задовільняє певним критеріям.
Важливими окремими випадками лінійних списків, в яких операції додавання та вилучення певних значень можуть бути виконані лише для першого чи останнього елементу, є:
- стек лінійний список, в якому операції додавання та вилучення виконуються лише на одному кінці списку (верхівці стеку). Принцип побудови стеку називають LIFO (англ. last in, last out).
- черга (однобічна черга)
- лінійний список, в якому усі операції додавання виконується на одному кінці (в голові черги), а операції вилучення — на іншому кінці списку (в хвості черги). Принцип побудови черги називають FIFO (англ. first in, first out).
- дек або двобічна черга (англ. double-ended queue, deq)
- лінійний список, в якому всі операції вставки та видалення виконуються на обох кінцях списку.
Не менш важливим окремим випадком лінійного списку є зв'язаний список, в якому кожний елемент окрім поля даних зберігає також вказівник на наступний. Така структура дозволяє зняти обмеження на зберігання лінійного списку в безперервній області пам'яті.
Важливим узагальненням лінійного списку є багатовимірний масив.
А) Стек.
СТЕК в інформатиці та програмуванні -- різновид лінійного списку, структура даних, яка працює за принципом (дисципліною) "останнім прийшов -- першим пішов" (LIFO, last in, first out). Всі операції (наприклад, видалення елементу) в стеку можна проводити тільки з одним елементом, який знаходиться на верхівці стеку та був введений в стек останнім.
Стек можна розглядати як певну аналогію до стопки тарілок, з якої можна взяти верхню, і на яку можна покласти верхню тарілку (інша назва стеку -- "магазин", за аналогією з принципом роботи магазину в автоматичній зброї)
Операції зі стеком
push ("заштовхнути елемент"): елемент додається в стек та розміщується в його верхівці. Розмір стеку збільшується на одиницю. При перевищенні розміру стека граничної величини, відбувається переповнення стека (stack overflow)
pop ("виштовхнути елемент"): отримує елемент з верхівки стеку. При цьому він видаляється зі стеку і його місце в верхівці стеку займає наступний за ним відповідно до правила LIFO, а розмір стеку зменшується на одиницю. При намаганні "виштовхнути" елемент з вже пустого стеку, відбувається ситуація "незаповнення" стеку (stack underflow)
Кожна з цих операцій зі стеком виконується за фіксований час O(1) і не залежить від розміру стеку.
Додаткові операції (присутні не у всіх реалізаціях стеку):
isEmpty: перевірка наявності елементів в стеку; результат: істина (true), коли в стеку немає елементів.
isFull: перевірка заповненості стека. Результат: істина, коли додавання нового елементу неможливе
clear: звільнити стек (видалити усі елементи).
top: отримати верхній елемент (без виштовхування).
size: отримати розмір (кількість елементів) стека.
swap: поміняти два верхніх елементи місцями.
Організація в пам'яті комп'ютера
Стек може бути організований як масив або множина комірок в певній області комп'ютера з додатковим зберіганням ще й вказівника на верхівку стека. Заштовхування першого елемента в стек збільшує адресу вказівника, виштовхування елементу зменшує її. Таким чином, адреса вказівника завжди відповідає комірці масиву, в якій зараз знаходиться верхівка стеку.
Приклади застосування
Калькулятори, які використовують зворотню польську нотацію, використовують стек для збереження даних обчислень.
Існує велика кількість "стеко-орієнтованих" мов програмування (Forth, PostScript), які використовують стек як базову структуру даних при виконанні багатьох операцій (арифметичних, логічних, вводу-виводу тощо).
Стеко-орієнтованими є багато з віртуальних машин, наприклад віртуальна машина Java.
Компілятори мов програмування використовують стек для передавання параметрів в процесі виклику підпрограм, процедур та функцій. Спеціалізований стек використовується також для збереження адрес повернення з підпрограм.
Реалізація базових алгоритмів
На високорівневих мовах програмування, стек може бути реалізований за допомогою масиву та додаткової змінної:
Для зберігання елементів стеку резервується масив S[1 n] певного розміру та додаткова змінна top[S], яка буде зберігати індекс верхівки стеку.
Операції push та pop тоді можуть бути записані так (без перевірки на переповнення та "незаповнення"):
PUSH (S, x)
1 top[S]:= top[S]+1 //збільшення індексу на 1
2 S[top[S]]:=x //запис нового елемента у верхівку стека
POP (S)
1 top[S]:=top[S]-1 // зменшення індексу на 1
2 return S[top[S]+1] //повернення колишньої верхівки стеку
Б) Черга
Черга в програмуванні — динамічна структура даних, що працює за принципом "перший прийшов - перший пішов" (англ. FIFO — first in, first out). У черги є голова (англ. head) та хвіст (англ. tail). Елемент, що додається до черги, опиняється в її хвості. Елемент, що видаляється з черги, знаходиться в її голові.
Така черга повністю аналогічна звичній "базарній" черзі, в якій хто перший встав в неї, той першим буде обслуженим (але, на відміну від реальної черги, імовірність пройти поза чергою виключена)
Основні операції з чергою
англ. enqueue — "поставити в чергу". Операція додавання елемента в "хвіст" черги. При цьому довжина черги збільшується на одиницю. Якщо відбувається намагання додати елемент у вже заповнену чергу, відбувається її переповнення (англ. queue overflow).
англ. dequeue — "отримання з черги". Операція, яка повертає елемент з голови та видаляє його з черги, таким чином встановлюючи голову на наступний за видаленим елемент та зменшуючи довжину на одиницю. При намаганні видалити елемент з пустої черги, виникає ситуація "незаповнення" (англ. queue underflow).
Зв’язаний список
Зв'язаний список в програмуванні — одна з найважливіших структур даних, в якій елементи лінійно впорядковані, але порядок визначається не номерами елементів, а вказівниками, які входять в склад елементів списку та вказують на наступний за даним елемент (в однозв'язаних або однобічно зв'язаних списках) або на наступний та попередній елементи (в двозв'язаних або двобічно зв'язаних списках). Список має «голову» — перший елемент та «хвіст» — останній елемент.
Зв'язані списки мають серію переваг порівняно з масивами. Зокрема, в них набагато ефективніше (за час О(1), тобто незалежно від кількості елементів) виконуються процедури додавання та вилучення елементів. Натомість, масиви набагато кращі в операціях, які потребують безпосереднього доступу до кожного елементу, що у випадку зі зв'язаними списками неможливо та потребує послідовного перебору усіх елементів, які передують даному.
Різновиди зв'язаних списків
[ред.] Однобічно зв'язані списки
Однобічно
зв'язаний список з трьох елементів
В однобічно зв'язаному списку, який є найпростішим різновидом зв'язаних списків, кожний елемент складається з двох полів: data або даних, та вказівника next на наступний елемент. Якщо вказівник не вказує на інший елемент (інакше: next = NULL), то вважається, що даний елемент — останній в списку.
[ред.] Двобічно зв'язаний список
Двобічно
зв'язаний список
В двобічно зв'язаному списку елемент складається з трьох полів — вказівника на попередній елемент prev, поля даних data та вказівника next на наступний елемент. Якщо prev=NULL, то в елемента немає попередника (тобто він є «головою» списку), якщо next=NULL, то в нього немає наступника («хвіст» списка).
[ред.] Кільцевий список
В кільцевому списку перший та останній елемент зв'язані. Тобто, поле prev голови списка вказує на хвіст списка, а поле next хвоста списка вказує на голову списка.
Застосування списків:
Списки інтенсивно застосовуються в програмуванні як самостійні структури. Також на їх основі можуть будуватись більш складні структури даних, такі як дерева. На базі списків також можуть бути реалізовані стеки та черги.
[ред.] Переваги та недоліки
В загальному випадку, якщо необхідно оперувати з динамічними множинами, де присутні інтенсивні операції з додавання або видалення елементів, існують досить переконливі аргументи для використання саме зв'язаних списків.
[ред.] Зв'язані списки та масиви
Списки мають деякі переваги над масивами. Вони досить ефективні щодо операцій додавання або видалення елементу в довільному місці списка, виконуючи їх за постійний час, тоді як масиви для цього потребують часу O(n), тобто час зростає з ростом кількості елементів масиву.
В списках також не існує проблеми "розширення", яка рано чи пізно виникає в масивах фіксованого розміру, коли виникає необхідність включити в нього додаткові елементи. Точно так, фіксований масив, з якого було видалено багато елементів (або вони просто не використовуються) є дуже неефективним з точки зору використання пам'яті. Функціонування списків можливо в ситуації, коли пам'ять комп'ютера фрагментована, тоді як масиви переважно потребують неперервної області для зберігання.
З іншого боку, масиви дозволяють безпосередній доступ до будь-якого елементу. Однобічно зв'язані списки, натомість, потребують проходження усіх попередніх елементів. Це призводить до складнощів застосування списків в задачах, де необхідно швидко знаходити елемент за його індексом, наприклад в алгоритмах сортування. Кешування списків в таких випадках майже не дає ефекту.
Іншим очевидним недоліком списків є необхідність разом з корисною інформацією додаткового збереження інформації про вказівники, що позначається на ефективності використання пам'яті цими структурами.
Двобічне та однобічне зв'язування:
Двобічне зв'язування потребує більше пам'яті на елемент та більших обчислювальних затрат на виконання елементарних операцій. Але такими списками легше маніпулювати, тому що вони дозволяють проходження по списку в обох напрямах, що є необхідною умовою функціонування деяких алгоритмів.
