- •1, 4, 7. Решение нелинейных уравнений
- •2.Транспортная задача линейного программирования
- •9. Файловый ввод-вывод
- •12. Системный анализ
- •17.Смешанные, стратегии в матричных играх. Основная теорема матричных игр.
- •18. Моделювання випадкових факторів.
- •19. Первая интерполяционная формула Ньютона.
- •20. Числові характеристики випадкових величин.
- •21. Моделирование параллельных процессов.
- •22(19,25). Наближення функцій. Задача інтерполяції.
- •23. Математичне сподівання випадкової величини, його властивості та формули для обчислювання.
- •26. Булева алгебра
- •27. Класифікація моделей.
- •28. Численное дифференцирование .
- •30. Полиморфизм
- •31. Численное интегрирование.
- •32. Канонічні форми булевих функцій, способи побудови канонічних форм
- •33. Наследование
- •36.Об'єктно - орієнтоване програмування та його головні принципи
- •40. Методи розв'язування задачі Коші системи звичайних диференціальних рівнянь. Метод Ейлера. Методи типу Рунге-Кутта. Методи з вибором кроку інтегрування.
- •Розв’язування систем однорідних рівнянь з сталими коефіцієнтами методом Ейлера.
- •41. Методи спрощення булевих функцій
- •42. Процедури та функції. Призначення процедур та функцій. Формальні та фактичні параметри. Глобальні та локальні дані. Параметри значення і параметри змінні.
- •43. Методи розв'язування крайових задач системи звичайних диференціальних рівнянь. Різницеві схеми для рівнянь другого порядку. Методи прогонки.
- •44. Повні системи булевих функцій та базиси.
- •45. Використання стеку для організації рекурсивних обчислень.
- •46. Общая задача линейного программирования
- •50. Двійковий пошук на впорядкованій множині.
- •51. Динамічні структури даних. Стеки. Черги.
- •52. Симплекс-перeтворення. Симплекс-метод.
- •53. Алгоритми сортування.
- •54. Динамічні структури даних. Списки.
- •55. Теорема двоїстості. Двоїстий критерій оптимальності. Двоїстий симплекс-метод.
- •56. Керування подіями. Програмування обробки подій.
- •Виды событий.
- •События от мышки.
- •События от клавиатуры.
- •События сообщений.
- •"Пустые" события.
- •Передача событий.
- •57. Вказівники. Розподіл динамічної пам’яті.
- •58. Транспортна задача лінійного програмування. Методи знаходження початкового базисного розв'язку.
- •6.2. Умова існування розв'язку транспортної задачі
- •59. Математичне моделювання і диференціальні рівняння.
- •60. Мови програмування та їх класифікація
- •61. Транспортна задача лінійного програмування. Метод потенціалів.
- •6.2. Умова існування розв'язку транспортної задачі
- •6.3. Метод потенціалів
- •6.3.1. Алгоритм методу потенціалів складається з таких етапів.
- •6.3.2. Методи побудови опорного плану тз
- •Метод північно-західного кута
- •62.Задачі і методи математичного моделювання і системного аналізу. Приклади математичних моделей для детермінованих і випадкових процесів(див. 18).
- •63. Реляційна модель бази даних.
- •65. Моделювання процесів керування у живій природі біологічних, екологічних, процесів автоматизованого керування.
- •66. Інформаційна модель концептуального рівня. Основні поняття. Еволюція концепції бази даних. Типи запитів.
57. Вказівники. Розподіл динамічної пам’яті.
Указатель – переменная, значением которой является адреса некоторого обїекта в памяти компьютера.
Переманняа, являющаяся указателем, обьявляется соответствующим образом. Обьявление указателя состоит из имени базового типа, символа * и имени перемнной. Общая форма обїявления указателя: тип *имя
Здесь тип – это бызовый тип указателя, им может быть любой правильный тип. Имя определяет имя переменной-указателя.
Базовый тип указателя определяет тип объекта, на который указатель будет ссылаться.
В программе на языке высокого уровня указатели могут быть типизированными и нетипизированными. При объявлении типизированного указателя определяется и тип объекта в памяти, адресуемого этим указателем. Так например, объявления в языке PASCAL:
Var ipt : ^integer; cpt : ^char;
или в языке C:
int *ipt; char *cpt;
означают, что переменная ipt представляет собой адрес области памяти, в которой хранится целое число, а cpt - адрес области памяти, в которой хранится символ. Хотя физическая структура адреса не зависит от типа и значения данных, хранящихся по этому адресу, компилятор считает указатели ipt и cpt имеющими разный тип, и в Pascal оператор: cpt := ipt;
будет расценен компилятором как ошибочный (компилятор C для аналогичного оператора присваивания ограничится предупреждением). Таким образом, когда речь идет об указателях типизированных, правильнее говорить не о едином типе данных "указатель", а о целом семействе типов: "указатель на целое", "указатель на символ" и т.д. Могут быть указатели и на более сложные, интегрированные структуры данных, и указатели на указатели.
Нетипизированный указатель - тип pointer в Pascal или void * в C - служит для представления адреса, по которому содержатся данные неизвестного типа. Работа с нетипизированными указателями существенно ограничена, они могут использоваться только для сохранения адреса, обращение по адресу, задаваемому нетипизированным указателем, невозможно.
Основными операциями, в которых участвуют указатели являются присваивание, получение адреса, выборка.
Присваивание является двухместной операцией, оба операнда которой - указатели. Как и для других типов, операция присваивания копирует значение одного указателя в другой, в результате оба указателя будут содержать один и тот же адрес памяти. Если оба указателя, участвующие в операции присваивания типизированные, то оба они должны указывать на объекты одного и того же типа.
Операция получения адреса - одноместная, ее операнд может иметь любой тип, результатом является типизированный (в соответствии с типом операнда) указатель, содержащий адрес объекта-операнда.
Операция выборки - одноместная, ее операндом является типизированный (обязательно!) указатель, результат - данные, выбранные из памяти по адресу, заданному операндом. Тип результата определяется типом указателя-операнда.
Динамическое распределение памяти - методика, в которой программы определяют, где сохранить некоторую информацию. Вы нуждаетесь в динамическом распределении, когда число блоков памяти, в которых Вы нуждаетесь, или то, как долго Вы продолжаете нуждаться в них, зависит от данных, с которыми Вы продолжаете работать.
Например, Вы можете нуждаться в блоке, чтобы сохранить строку прочитанную из входного файла; так как не имеется никаких ограничений, как долго нужно будет хранить строку, Вы должны динамически распределить память и динамически ее увеличивать, поскольку Вы читаете большее количество строк.
Динамическое распределение не обеспечивается C переменными; не имеется никакого класса памяти "dynamic", и не может быть переменной C, чье значение сохранено в динамически размещенном месте. Единственный способ обратиться к динамически размещенному месту - через указатель. Т.к. это менее удобно, и фактический процесс динамического распределения требует большего количества компьютерного времени, программисты использует динамическое распределение только когда ни статическое ни автоматическое распределение применить невозможно.
Например, если Вы хотите зарезервировать динамически некоторое место, чтобы разместить struct foobar, Вы не можете объявлять переменную типа struct foobar, чье содержание - динамически размещенное место. Но Вы можете объявить переменную struct foobar * типа указатель и назначить ей адрес. Тогда Вы можете использовать операторы "*" и "->" для этой переменной- указателя, чтобы обратиться по адресу:
{
struct foobar *ptr= (struct foobar *) malloc (sizeof (struct foobar));
ptr->name = x;
ptr->next = current_foobar;
current_foobar = ptr;
}