Основи програмування

Анотація курсу

Вивчення дисципліни «Основи програмування» охоплює отримання теоретичних знань та практичних навичок з алгоритмізації та програмування мовами високого рівня С++ та Python, навчання створенню програмних проектів в IDE Visual Studio та PyCharm. Отриманий досвід використовується для вибору оптимального алгоритму вирішення задачі та оптимальної мови програмування, виявлення слабких місць реалізації функціонування системи. Здобуті знання та навички у галузі програмування є базою для вивчення дисциплін професійно-орієнтованого циклу.

Мета:

Метою дисципліни є вивчення принципів обробки інформації на комп’ютері, формування у студентів навичок розробки та відлагодження прикладних програм мовами програмування С++ та Python iз застосуванням технологій структурного, модульного та об’єктно-орієнтованого програмування, отримання практичних навичок використання інтегрованих середовищ розробки програмного забезпечення.

Основні завдання:

Основними завданнями вивчення дисципліни є оволодіння навичками формалізації задач; оволодіння базовими методами проектування алгоритмів і програм; вивчення основних методологій розробки програмного забезпечення; отримання навичок розробки програм мовами програмування С++ та Python; вивчення основ управління проектами розробки програмного забезпечення; вивчення основ забезпечення та контролю якості програмного забезпечення.

Що ви будете знати:

  • основні синтаксичні конструкції мов програмування С++ та Python;
  • основні функції стандартних бібліотек мов програмування С++ та Python;
  • основні методології розробки програмного забезпечення;
  • основи управління проектами розробки програмного забезпечення;
  • основи забезпечення та контролю якості програмного забезпечення.

Що ви будете вміти:

  • розробляти структуровані алгоритми розв’язання задач, використовуючи типові алгоритмічні конструкції;
  • створювати програми мовами програмування С++ та Python із застосуванням технологій структурного, модульного та об’єктноорієнтованого програмування;
  • вiдлагоджувати та тестувати програми для одержання коректних результатів;
  • користуватися інтегрованими середовищами розробки програмного забезпечення.

Тематичний план курсу

Змістовий модуль 1. Основи структурного програмування мовою С++
Істория розвитку мови С++. Структурне, модульне та об’єктно-орієнтоване програмування. Поняття компілятора, інтерпретатора. Структура програми на С++ та етапи її обробки. Препроцесор. Заголовні файли. Директива #include. Використання об’єктів cin та cout. Коментарі та їх використання. Призначення функції main(). Стандартні функції та їх використання.
Змінні. Виділення пам’яті. Розмір змінних і його визначення за допомогою sizeof. Знакові і беззнакові величини (signed /unsigned). Основні типи змінних (int, long, char, float, double, bool). Розмір в пам’яті і допустимий діапазон значень. Оголошення змінних. Чутливість до регістра букв. Одночасне оголошення більш ніж однієї змінної. Надання значення змінним. Ініціалізація. Оператор typedef. Використання типів int, short та long. Переповнювання беззнакових і знакових цілих. Символи. Тип char і числа. Спеціальні символи. Константи. Константи-літерали. Символічні константи. Визначення констант за допомогою #define і const. Константи, що перераховуються. Оператор enum.
Оператори. Порожні символи. Блоки і складені оператори. Вирази. Операція присвоювання. Математичні операції. Цілочисельне ділення і залишок від ділення. Поєднання присвоювання і математичних операцій. Інкремент і декремент. Префіксні і постфіксні операції. Пріоритет виконання операцій. Вкладені дужки. Операції відношення.
Простий оператор if. Стилі виділення відступами. Повна форма оператора if з ключовим словом else. Вкладені оператори if. Використання дужок у вкладених операторах if. Логічні оператори І, АБО, НЕ (&&, ||, !). Пріоритет операцій відношення і логічних операцій. Умовна (тернарна) операція. Оператор switch. Використання ключових слів case, default і break. Використання оператора switch в програмах, що містять меню. Цикли. Цикл з ключовим слово goto. Цикли while. Цикли while із складними умовами. Оператори continue та break. Цикли do-while. Цикли for. Множинна ініціалізація та інкрементування в циклах for. Видимість імен в циклах. Безконечні цикли.
Змістовий модуль 2. Функції та управління пам’яттю у мові С++
Що таке покажчик? Адреси змінних. Використання операції & (адреса). Зберігання адреси в покажчику. Імена покажчиків. Непряма адресація. Операція *. Покажчики, адреси і змінні. Маніпулювання даними за допомогою покажчиків. Стек і вільна пам’ять (heap). Виділення, використання і видалення змінних у вільній пам’яті. Оператори new і delete. Null-покажчик. Покажчики const. Витік пам’яті. Створення і видалення об’єктів у вільній пам’яті. Покажчик this. Створення і використання посилань. Використання оператора адреси до посилань.
Масиви як структурований тип даних. Визначення масивів. Синтаксис об’яви масивів. Поняття “елемент масиву” та “індекс масиву”. Синтаксис використання масивів. Зв’язок покажчиків з масивами. Вирази та арифметика з покажчиками. Динамічний розподіл пам’яті. Стандартні алгоритми роботи з масивами: визначення екстремальних значень, статистичних показників, упорядкування масивів, пошук визначеного елементу. Багатовимірні масиви. Приклади програм з багатовимірними масивами. Реалізація алгоритмів, пов’язаних з обробкою матриць.
Програмні модулі мови С++. Функції математичної бібліотеки. Функції бібліотеки стандартного введення/виведення. Використання функцій при розробці програм на мові С++. Визначення функцій. Прототипи функцій та файли заголовків. Розробка власних функцій. Виклик функції за значенням. Способи обміну інформацією між функціями. Локальні та глобальні змінні. Виклик функції за посиланням –передача параметрів за адресою. Приклад програми, що використовує виклик за посиланням. Класи пам’яті. Правила області дій. Параметри за умовчанням (default). Перевантаження (поліморфізм) функцій. Розробка програми у вигляді проекту. Зовнішні змінні. Рекурсія. Приклад використання рекурсії: числа Фібоначчі. Перевантаження функцій. Шаблони функцій.
Масиви символів (рядки С-типа). Використання cin, cin.get() для введення рядків. Використання бібліотеки string.h для роботи з рядками. Визначення довжини рядка за допомогою strlen(). Присвоєння (копіювання) рядків функціями strcpy() і strncpy(). Порівняння рядків за допомогою strcat() і strncat(). Основні функції для рядків С-стилю.
Змістовий модуль 3. Об’єктно-орієнтоване програмування на С++
Створення нових типів даних. Класи і члени. Оголошення класу. Визначення об’єкту. Класи і об’єкти. Доступ до членів класу. Ключові слова private і public. Обґрунтування необхідності в приватних членах-даних. Приватність і безпека. Реалізація методів класу. Конструктори і деструктори. Конструктори і деструктори за умовчанням. Використання покажчика this. Функціїчлени const. Інтерфейс і реалізація. Реалізація inline. Класи з іншими класами як дані члени. Структури.
Спадкування. Базові і похідні класи. Синтаксис похідних класів. Private та protected. Конструктори і деструктори в похідних об’єктах. Передача аргументів в базові конструктори. Перевантаження конструкторів в похідних класах. Перекривання методу базового класу в похідному. Утаєння методів базового класу. Віртуальні методи. Раннє та пізнє зв’язування. Віртуальні деструктори. Віртуальний конструктор копіювання. Поліморфізм. Ідентифікація типа під час виконання. Множинне спадкування. Віртуальне спадкування. Абстрактні типи даних. Повністю віртуальні функції. Складні ієрархії абстракцій.
Потоки. Буферизація. Стандартні об’єкти введення/виводу. Введення з використанням cin. Використання cin.get(). Введення рядків із стандартного введення. Використання cin.getline(). Использование cin.ignore(). Використання cin.peek() і cin.putback(). Виведення з використанням cout. Очищення виводу. Метод cout.flush(). Функції cout.put() і cout.write(). Маніпулятори, прапори і інструкції форматування. Використання cout.width(), cout.fill(), cout.setf(). Потоки проти функції printf. Файлове введення/виведення. Об’єкти типа ofstream і ifstream. Відкриття та закриття файлів для введення і виводу. Функції eof(), bad(), fail(), good(). Зміна поведінки ofstream при відкритті файлів. Використання ios::app, ios::ate, ios::trunc, ios::nocreate, ios::noreplace.
Змістовий модуль 4. Програмування мовою Python.
Історія створення мови Python. Інтерпретатор Python. Інтерактивний та сценарний режими. Інтегровані середовища розробки для Python. Введення та виведення даних, форматне виведення. Динамічна типізація в мові Python. Числа, рядки, послідовності, відображення. Арифметичні вирази. Складені об’єкти: списки, кортежі, словники, множини. Робота з файлами.
Структури управління та повторення у мові Python. Повне та неповне розгалуження. Реалізація багатоваріантного вибору через розгалуження. Параметричний цикл з варіативною та без варіативної частини. Цикл з передумовою. Оператори continue та break. Виконання команд всередині контексту (with). Обробка виключень в програмах, вбудовані типи виключень та визначення нових виключень.
Визначення власних функцій. Передача параметрів і повернення результатів. Значення аргументів функції за замовчуванням. Довільний набір аргументів. Іменовані аргументи. Правила видимості. Функції, як об’єкти та замикання. Області видимості у мові Python. Декоратори. Ітератори. Генератори та со-програми. Генератори списків. Вирази-генератори. Основи декларативного програмування. Оператор Lambda. Атрибути функцій. Розробка рекурсивної функції на базі її процедурної форми. Послідовна, паралельна та псевдопаралельна рекурсії. Обробка списків рекурсивними функціями.
Створення і використання модуля. Пошук модулів і компільовані файли. Стандартні модулі: sys, os. Пакети. Коротка характеристика нестандартних модулів Python. Модуль чисел з плаваючою точкою Decimal. Модуль раціональних чисел Fractions. Модуль стандартних математичних функцій Math. Модуль абстрактних базових класів Numbers. Модуль псевдовипадкових чисел Random. Модуль для роботи з комплексними числами CMath. Модуль для роботи з масивами Array. Модуль сортування списків Bisect. Стандартні модулі обробки рядків String і Codecs. Модуль приблизного порівняння двох рядків DiffLib. Модуль для роботи з кодуванням і регулярними виразами Re. Модуль перетворення даних Struct. Модуль доступу до бази символів UnicodeData.
Програмування класів. Методи класів. Екземпляри класів. Спадкування. Простір імен. Перевантаження операторів. Менеджери контексту. Обробка виключень в програмах, вбудовані типи виключень та визначення нових виключень.

Загальна інформація

Форма навчанняКількість кредитів ECTSЗагальна кількість
академічних годин
ЛекційніЛабораторніСамостійна
робота
Форма контролю
Денна123606868224залік, екзамен
Заочна123601616328залік, екзамен
КомпетентностіРезультати навчання
ЗК01 Здатність до абстрактного мислення, аналізу та синтезу;
ЗК02 Здатність застосовувати знання у практичних ситуаціях;
ЗК05 Здатність вчитися і оволодівати сучасними знаннями;
СК10 Здатність накопичувати, обробляти та систематизувати професійні знання щодо
створення і супроводження програмного забезпечення та визнання важливості навчання
протягом всього життя;
СК13 Здатність обґрунтовано обирати та освоювати інструментарій з розробки та
супроводження програмного забезпечення.
ПР06 Уміння вибирати та використовувати відповідну задачі методологію створення
програмного забезпечення.
ПР07 Знати і застосовувати на практиці фундаментальні концепції, парадигми і основні
принципи функціонування мовних, інструментальних і обчислювальних засобів інженерії
програмного забезпечення.
ПР15 Мотивовано обирати мови програмування та технології розробки для розв’язання
завдань створення і супроводження програмного забезпечення.
ПР17 Вміти застосовувати методи компонентної розробки програмного забезпечення.

Викладач

Рибальченко Олена Геннадіївна

Методичне забезпечення