
- •1. Мова програмування. Класифікація мов програмування. Поняття про інтерпретацію та компіляцію. Інтегровані середовища програмування.
- •2. Загальна структура програми. Основні розділи програми і правила їх описання. Директиви препроцесора.
- •3. Поняття змінної. Оголошення змінної. Типи даних. Поняття локальних і глобальних змінних. Час життя змінної. Константи.
- •1. Char - символ
- •3. Float - число з плаваючою комою одинарної точності
- •4. Double - число з плаваючою комою подвійної точності
- •4. Поняття оператора. Різновиди операторів. Вирази. Основні правила запису, обчислення та використання виразів. Надання значень виразів змінним. Пріоритет операцій. Арифметичні операції,
- •5. Оператори введення та виведення: з використанням формату, символів, рядків.
- •Int printf (const char * керуючий_рядок, ...);
- •Int scanf (const char * керуючий_рядок, ...);
- •6. Вказівники та посилання. Адреси об’єктів в пам’яті. Динамічні структури даних.
- •7. Складені типи даних: масиви. Поняття масиву, одновимірні та багатовимірні масиви. Ініціалізація масивів та виведення їх на екран. Класичні алгоритми для роботи з масивами
- •8. Складені типи даних: рядки. Бібліотека функцій обробки рядків. Класичні алгоритми для обробки рядків
- •9. Складені типи даних: структури (записи)
- •10. Файлові типи даних. Файли прямого доступу.
- •11. Файлові типи даних. Файли послідовного доступу.
- •12. Алгоритмічна конструкція розгалуження та її графічне подання. Оператори розгалуження (умовний оператор та оператор вибору). Оператори зміни порядку виконання програми.
- •13. Алгоритмічна конструкція повторення та її графічне подання. Циклічні конструкції в мовах програмування. Оператори циклів. Оператори зміни порядку виконання програми.
- •14. Функціональний підхід в програмуванні. Рекурсія та її програмна реалізація.
- •15. Алгоритми пошуку: послідовний та бінарний пошук.
- •16. Алгоритм впорядкування : вибірка, вставка, обмін.
- •18. Абстрактні типи даних: лінійні списки
- •19. Абстрактні структури даних: стеки та черги
- •20. Абстрактні структури даних: двійкові дерева.
- •21. Наближені методи обчислення визначених інтегралів: метод лівих, правих та середніх прямокутників; метод трапецій; метод Сімпсона.
- •Метод Монте-Карло: зміст, приклади, застосування для обчислення площ складних фігур.
- •Наближені методи розв’язання алгебраїчних рівнянь: метод половинного ділення; метод хорд; метод дотичних.
- •Поняття моделювання та типи моделей. Класифікація моделей, інформаційна модель, математична модель як різновид інформаційної моделі. Основні етапи моделювання.
6. Вказівники та посилання. Адреси об’єктів в пам’яті. Динамічні структури даних.
Указатель — это переменная, значением которой является адрес некоторого объекта (обычно другой переменной) в памяти компьютера. Например, если одна переменная содержит адрес другой переменной, то говорят, что первая переменная указывает (ссылается) на вторую.
Объявление указателя состоит из имени базового типа, символа * и имени переменной. Общая форма объявления указателя следующая:
тип *имя;
Здесь тип — это базовый тип указателя, им может быть любой правильный тип. Имя определяет имя переменной-указателя.
В языке С определены две операции для работы с указателями: * и &. Оператор & — это унарный оператор, возвращающий адрес своего операнда. Например, оператор
m = &count;
присваивает переменной m адрес переменной count.
Вторая операция для работы с указателями выполняет действие, обратное по отношению к &. Оператор * — это унарный оператор, возвращающий значение переменной, расположенной по указанному адресу. Например, если m содержит адрес переменной count, то оператор
q =*m;
присваивает переменной q значение переменной count.
В языке С допустимы только две арифметические операции над указателями: суммирование и вычитание.
Операции адресной арифметики не ограничены увеличением и уменьшением. Например, к указателям можно добавлять целые числа или вычитать из них целые числа. Выполнение оператора p1 = p1 + 12; "передвигает" указатель p1 на 12 объектов в сторону увеличения адресов.
Кроме суммирования и вычитания указателя и целого, разрешена еще только одна операция адресной арифметики: можно вычитать два указателя. Благодаря этому можно определить количество объектов, расположенных между адресами, на которые указывают данные два указателя; правда, при этом считается, что тип объектов совпадает с базовым типом указателей. Все остальные арифметические операции запрещены.
Иногда указатель может ссылаться на указатель, который ссылается на число. Это называется многоуровневой адресацией.
Переменная, являющаяся указателем на указатель, должна быть соответствующим образом объявлена. Это делается с помощью двух звездочек перед именем переменной. Например, в следующем операторе newbalance объявлена как указатель на указатель на переменную типа float:
float **newbalance;
Следует хорошо понимать, что newbalance — это не указатель на число типа float, а указатель на указатель на число типа float.
Ссылка была введена в С++ для упрощения передачи сложных структур в функции, чтобы избежать их копирования, которое сильно ухудшит скоростные показатели программы. Чтобы представить себе как она работает достаточно одного слова - псевдоним. Т.е. если у вас есть переменная x, то вы можете сделать ей псевдоним с именем y. Если вы измените y, то изменится и x, а если измените x, то аналогично изменится и y.
Динамические структуры данных – это структуры данных, память под которые выделяется и освобождается по мере необходимости.
Динамическая структура данных характеризуется тем что:
она не имеет имени;
ей выделяется память в процессе выполнения программы;
количество элементов структуры может не фиксироваться;
размерность структуры может меняться в процессе выполнения программы;
в процессе выполнения программы может меняться характер взаимосвязи между элементами структуры.
Элемент любой динамической структуры данных представляет собой структуру, содержащую по крайней мере два поля: для хранения даннях и для указателя. Полей данных и указателей может быть несколько. Поля даннях могут быть любого типа: основного, составного или типа указатель. Описание простейшего элемента (компоненты, узла) выглядит следующим образом:
struct Node{
Data d; // тип данных Data должен быть определен заранее
Node *р:
};
К динамическим структурам относятся:
однонаправленные (односвязные) списки. В односвязном списке каждый элемент информации содержит ссылку на следующий элемент списка.
двунаправленные (двусвязные) списки. Двусвязный список состоит из элементов данных, каждый из которых содержит ссылки как на следующий, так и на предыдущий элементы.
циклические списки. Последний элемент списка содержит указатель, связывающий его с первым элементом, то есть нет пустых указателей.
стек («последним пришёл – первым вышел»). Добавление элемента – в вершину стека, удаление – из вершины стека.
Дек (двухсторонняя очередь) называется структура данных, в которую можно удалять и добавлять элементы как в начало, так и в конец.
Очередь ( «первый пришёл – первый вышел»). Добавление элемента – в конец очереди, удаление – только из начала.
бинарные деревья. Древовидная структура данных, в которой каждый узел имеет не более двух потомков (детей).