Урок №3. Введення в розробку програмного забезпечення

  Юрій  | 

  Оновл. 4 Чер 2021  | 

 864

Перед написанням і виконанням нашої першої програми, ми повинні зрозуміти, з чого взагалі складається розробка програмного забезпечення на мові програмування C++.

Проілюструємо процес розробки програмного забезпечення (скор. “ПЗ”):

Крок №1: Визначте проблему, яку потрібно вирішити

Цей крок називається «Що?». Тут ви повинні зрозуміти, що ж саме ви хочете, щоб ваша програма виконувала. Цей крок може бути як найпростішим, так і найскладнішим. Все, що вам потрібно — це чітко сформулювати головну ідею вашої програми. Тільки після цього ви зможете перейти до наступного кроку.

Ось декілька прикладів виконання кроку №1:

   “Я хочу написати програму, яка буде вираховувати середнє арифметичне переданих їй чисел.”

   “Я хочу написати програму, в якій буде 2D-лабіринт, по якому користувач зможе пересуватися.”

   “Я хочу написати програму, яка аналізуватиме ціни акцій на біржах і прогнозуватиме скачки цін на акції вгору чи вниз.”

Крок №2: Визначте, як ви вирішуватимете проблему

Тут ми відповідаємо на запитання «Як?». Як саме ми вирішуватимемо проблему з кроку №1? Цим кроком досить часто нехтують при розробці програмного забезпечення. Справа в тому, що способів вирішення проблеми може бути багато, тільки от деякі з цих способів можуть бути хорошими, деякі погані, а деякі просто жахливі. Ви повинні навчитися розрізняти якість пропонованих рішень. Дуже часто можна спостерігати ситуацію, коли у програміста виникає ідея і він відразу ж сідає за стіл програмувати. Як ви вже могли б здогадатися, такий сценарій далеко не завжди призводить до хороших рішень і хорошого коду.

Як правило, більшість хороших рішень мають наступні характеристики:

   простота;

   наявність документації (з інструкціями і коментарями);

   модульність: будь-яка частина програми може бути повторно використана або змінена пізніше без впливу на інші частини коду;

   надійність: наявність системи обробки помилок і екстрених випадків.

Коли ви відразу ж починаєте програмувати після виникнення геніальної ідеї, ви сідаєте за стіл і думаєте, що зробите це, ось це і ще ось це. Таким чином ви приймаєте рішення, які дозволять вам швидше виконати поставлене завдання. Однак це може призвести до того, що ви отримаєте програму, яку пізніше буде важко модифікувати, підтримувати або взагалі отримаєте десятки (якщо не сотні) помилок на етапі компіляції.

Згідно з законом Парето, програміст витрачає близько 20% часу на написання програми і близько 80% часу на її відлагодження (виправлення помилок) або підтримку (додання нових функціональних можливостей). Тому цілком логічно, що краще витратити додатковий час на обдумування кращого способу вирішення проблеми перед фактичним написанням коду, ніж потім витрачати решту 80% часу на пошук та виправлення помилок.

Крок №3: Напишіть програму

Для того, щоб написати програму, вам необхідно мати знання вибраної вами мови програмування та середовище розробки.

Програму можна написати, використовуючи будь-який редактор, навіть той же Блокнот в Windows або текстовий редактор Vi в Unix. Проте я настійно рекомендую використовувати середовище розробки.

Редактор типового програміста, як правило, має наступні особливості, які полегшують процес програмування:

   Нумерація рядків. Ця функція надзвичайно корисна при відлагодженні програми, коли компілятор повідомляє нас про наявність помилок. Типова помилка компіляції складається з “помилка” і “№ рядка“, де ця помилка сталася, наприклад: “помилка перевизначення змінної x, рядок 80“. Без нумерації рядків шукати той самий 80-й рядок коду було б трохи важко, чи не так?

   Підсвічування синтаксису. Підсвічування синтаксису змінює колір різних частин програми і коду, що покращує сприйняття як цілої програми, так і окремих її частин.

   Спеціальний шрифт. В звичайних шрифтах дуже часто виникає плутанина через певні символи, коли незрозуміло, що саме знаходиться перед вами. Наприклад, цифра 0 чи буква O, цифра 1 чи буква l (нижній регістр L), чи, можливо, буква I (верхній регістр i). Ось саме в таких випадках і потрібен спеціальний шрифт, в якому можна чітко відрізнити дані символи, запобігаючи випадкове використання одного символу замість іншого.

Файли з вашими програмами на мові C++ слід називати name.cpp, де name замінюється назвою вашої програми, а розширення .cpp повідомляє компілятору (і вам також), що це вихідний файл коду, який містить інструкції на мові програмування C++. Слід звернути увагу, що деякі програмісти використовують розширення .cc замість .cpp, але я рекомендую використовувати саме .cpp.

Також варто відзначити, що програми в C++ можуть складатися з декількох .cpp-файлів. Хоча більшість програм, які ви створюватимете на цих уроках, не будуть надто великими, у вашій подальшій практиці ви матимете змогу навчитися писати програми, які складатимуться з десятків, якщо не з сотень окремих .cpp-файлів .

Крок №4: Виконайте компіляцію програми

Для того, щоб виконати компіляцію програми, нам потрібен компілятор. Робота компілятора складається з двох частин:

   Перевірка програми на відповідність правилам мови C++ (перевірка синтаксису). Якщо вона буде невдалою, то компілятор повідомить вас про помилки, які потрібно буде виправити.

   Конвертація кожного вихідного файлу з кодом в об’єктний файл (або “об’єктний модуль”) на машинній мові. Об’єктні файли, як правило, називаються name.o або name.obj, де name повинне бути таке ж, як і назва вашого вихідного .cpp-файлу. Якщо ваша програма складається з трьох .cpp-файлів, то компілятор згенерує 3 об’єктних файли.

Варто зазначити, що такі операційні системи як Linux і macOS мають вже вбудований компілятор C++, який називається g++. Для компіляції файлів з командного рядка за допомогою g++ вам необхідно написати наступне:

g++ -c file1.cpp file2.cpp file3.cpp

Таким чином ми створили file1.o, file2.o и file3.o. -c означає “тільки скомпілювати”, тобто створити .o (об’єктні) файли. Також є і інші компілятори для Linux, Windows та інших операційних систем.

Крок №5: Виконайте лінкінг програми (з’єднайте об’єктні файли)

Лінкінг — це процес зв’язування всіх об’єктних файлів, що генеруються компілятором, в єдину виконувану програму, яку ви потім зможете запустити (виконати). Це можна зробити за допомогою програми, яка називається лінкер (або “компоновщик”).

Крім об’єктних файлів, лінкер також підключає файли зі Стандартної бібліотеки С++ (або будь-якої іншої бібліотеки, яку ви використовуєте). Сам по собі мова С++ є досить невеликою та простою. Проте до неї підключається велика бібліотека додаткових функцій, які можуть використовувати ваші програми, і ці функції знаходяться в Стандартній бібліотеці C++. Наприклад, якщо ви хочете вивести що-небудь на екран, то у вас в коді повинна бути спеціальна команда, яка повідомить компілятору, що ви плануєте використати функцію виведення інформації на екран зі Стандартної бібліотеки C++.

Після того, як лінкер закінчить з’єднувати всі об’єктні файли (за умови, що не буде помилок), ви отримаєте виконуваний файл. Знову ж таки, щоб зв’язати .o-файли, які ми створили вище в Linux або в macOS, ми можемо скористатися g++:

g++ -o prog file1.o file2.o file3.o

Команда -o повідомляє g++, що ми хочемо отримати виконуваний файл з іменем prog з наступних файлів: file1.o, file2.o і file3.o. При бажанні, компіляцію і лінкінг можна об’єднати в один крок:

g++ -o prog file1.cpp file2.cpp file3.cpp

Результатом виконання стане виконуваний файл з іменем prog.

Крок №6: Виконайте тестування та відлагодження програми

Ось саме тут і починаються веселощі! Ви вже можете запустити виконуваний файл і подивитися, чи все працює так як треба. Якщо ні, то настав час для відлагодження вашої програми (більш докладно про це ми поговоримо на наступних уроках).

Зверніть увагу, що для виконання кроків №3-№6 вам знадобиться спеціальне програмне забезпечення. Хоча ви можете використовувати окремі програми на кожному з цих кроків, середовище розробки (скор. “IDE” від англ. Integrated Development Environment”) об’єднує всі ці програми в собі. Зазвичай з IDE ви отримуєте редактор коду з нумерацією рядків і підсвічуванням синтаксису, а також компілятор та лінкер. А коли вам потрібно буде виконати відлагодження програми, то ви зможете використати вбудований відлагоджувач. Крім того, IDE має ще ряд інших корисних можливостей: доповнення коду, система контролю версій тощо.

Оцінити статтю:

1 Зірка2 Зірки3 Зірки4 Зірки5 Зірок (14 оцінок, середня: 5,00 з 5)
Loading...

Залишити відповідь

Ваш E-mail не буде опублікований. Обов'язкові поля відмічені *