You are on page 1of 6

ОП та АМ.

Лекції
Лекция №2
Розробка та модифікація програм

ЗМІСТ ЛЕКЦІЇ
1. Підхід до побудови програм (парадигми програмування) 1
1.1. Імперативне програмування 1
1.2. Декларативне програмування 2
2. Перша програма 2
2.1. Основні поняття 2
2.2. Відправка повідомлень 4
2.3. Аргументи 4
3. Етапи розробки програм 5

1. Підхід до побудови програм (парадигми програмування)


Мова програмування - це штучна мова, створена для передачі команд комп'ютеру.
Підхід до побудови програм (парадигма) може бути різним. Кожен з цих підходів використовують
певний стиль написання програми.
Зараз існує достатньо велика кількість парадигм програмування. Одні парадигми розвиваються
незалежно, інші з'являються. Основними серед існуючих парадигм програмування вважаються наступні:
 Імперативне програмування;
 Декларативне програмування.

1.1.Імперативне програмування
Імперативнее програмування - стиль написання програми (програмного коду), згідно з якого процес
отримання результатів описується як послідовність дій (команд), які повинен виконати комп'ютер
покроковим чином. Оскільки імперативна програма дуже схожа на НАКАЗИ комп'ютеру, то імперативне
програмування іноді називають наказовим (ІМПЕРАТИВНИМ).
До програмування в імперативному стилі належить:
C:\ANNA_2020\Дисциплины\ОП та
АМ\ЛЕКЦІЇ_ЛР_СР\2019_2020\__І_семестр\C_02_Перша_програма_CP_01_Lec_02_Contr_02\Lec\ОП_та_АМ_Lec_02_Розроб
ка_та_модифікація_програм_ST_ukr_101820.doc 9/11/2022
1) СТРУТУРНЕ програмування: будь-яку програму можна створити використовуючи три
конструкції:
 послідовне виконання — одноразове виконання операції в порядку запису їх (операцій) в
тексті програми;
 розгалуження — виконання певної операції або декількох операцій залежно від стану певної,
наперед заданої умови;
 цикл — багаторазове виконання операції або групи операцій за умови виконання деякої
наперед заданої умови. Таку умову називають умовою продовження циклу.
2) ПРОЦЕДУРНЕ програмування: оператори які виконуються послідовно можна зібрати у
підпрограми (функції) за допомогою механізмів самої мови програмування. Тобто, виконується
розбиття програми на декілька частин (декомпозиція) програми.
3) МОДУЛЬНЕ програмування: розподіл функціональності програми на незалежні модулі, таких, що
кожен з них містить все необхідне, щоб виконати тільки один аспект необхідної функціональності.
4) ОБ’ЄКТНО - ОРІЄНТОВАНЕ програмування: виділяються деякі об'єкти, що взаємодіють між
собою, з характерною для них "поведінкою".
Об'єкти об'єктно-орієнтованого програмування тісно пов'язані з реальним життям. ОБ'ЄКТИ - це
предмети, які оточують нас. Наприклад, будь-хто зі студентів, машина на вулиці, світлофор на перехресті і
птахи, об'єкти, розташовані на екрані монітора тощо. Світлофор, що стоїть біля вашого будинку, - це
окремий об'єкт. Кожен студент теж є окремим об'єктом, як і стіл, за яким ви сидите.
Деякі з об'єктів схожі один на одного: виглядають однаково або мають подібні характеристики.
Наприклад, студенти. Хоча кожен з них індивідуальний, але всі вони мають схожі характеристиками, що
відрізняють їх від світлофорів, меблів або птахів. Об'єкти, що мають схожі характеристики, можна
об’єднати в групи (КЛАСИ). Наприклад: клас студентів; клас світлофорів; клас меблів; клас птахів, клас
екранних об'єктів. Клас характеризує один узагальнений об’єкт класу, а не один конкретний об'єкт.
Наприклад клас гімнастів: група гімнастів. Всі, хто записаний до групи можуть виконувати деякі
строго визначені вправи. Сукупність даних (абстрактний гімнаст) і дій (вправ) будемо називати класом.

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

2. Перша програма
2.1.Основні поняття
При розробці програми, будемо використовувати елементи готового класу, який створив П. Франка -
автор книги «С++. Учебный курс».
атлетів, який має назву athlete.
Розглянемо групу атлетів - гімнастів. Всі бажаючі, які записалися в цю групу, можуть виконувати
суворо обумовлені вправи. Наприклад, стати в позицію готовності, підняти руки вгору, опустити їх в низ,
щось сказати. Щоб стати членом групи атлетів, в неї необхідно записатися: стати об’єктом класу.

2
Напишемо програму, яка виведе на екран гімнаста з ім'ям Sal, після чого він привітає Вас: скаже "Hi!".
Текст програми складається з інструкцій, директив і коментарів.

ІНСТРУКЦІЇ - це оператори, яких виконує процесор.

ДИРЕКТИВИ - це спеціальні команди, які виконує компілятор до самого процесу компіляції.

КОМЕНТАРІ- одним із способів, що полегшують розуміння програм. Вони ігноруються комп'ютером.


Рядковий коментар - подвійна коса риска (//). Багаторядковий - /* . */

Хороший програміст завжди прагне, щоб його програми були зрозумілі іншим. Тому
ніколи не вважайте, що робота над програмою закінчується разом з її запуском. Ви або
хтось інший може знову скористатися вашою програмою або ж спробує її модифікувати.
Більш того, можливо вам самому доведеться розбирати і модифікувати програми, написані
кимось іншим! У будь-якому випадку вкрай важливо, щоб не тільки ви, але й інші могли
розібратися у ваших програмах.
Одним із способів, що полегшують розуміння ваших програм, є коментарі. Вони
ігноруються комп'ютером і не впливають на роботу програми, їх призначення - всього лише
пояснювати ваші дії іншим. (Згодом вони допоможуть і вам згадати, що і навіщо ви
робили.) Можливо, зараз у вас немає особливого бажання вставляти коментарі в програми,
оскільки останні ще невеликі і, я сподіваюся, зрозумілі, але не попадайтеся на цю вудку!
Обсяг і складність ваших програм будуть весь час зростати. Почніть використовувати
коментарі вже зараз!
Приклад. Вивести на екран картинку - гімнаста Села.

/*--------------------------------------------------------
Програма C_Sal.CPP
Ця програма показує на екрані гімнаста
Розроблена Paulo Franca 21.08.2011
Останнє доопрацювання 21.08.2011

---------------------------------------------------------*/
#include "franca.h" // директива препроцесору
athlete Sal; // Оголошення Села в якості гімнаста
void mainprog() // Початок програми
{
Sal. ready(); // Вказівка ​Селу встати в позицію готовності
Sal.say("Hi!"); // Вказівка ​Селу сказати "Hi!"
} // Кінець програми
Розгляньмо кожен рядок програмного коду.
1. #include - цей рядок повідомляє компілятору (точніше його складової частини, що називається
препроцесором), що він повинен вставити в це місце інші рядки, які містяться у файлі franca.h,
розташованому в тому каталозі, де знаходяться файли проекту (C:\FRANCA ). Таким чином,
з'являється можливість вставляти у ваші програми частини інших програм, розроблених вами або
кимось ще. Для приєднання таких програм до ваших програм і використовується директива
#include.
2. athlete Sal - Записати Села в групу гімнастів. У програмуванні - це спеціальний об'єкт. Він
описаний у файлі franca.h, тому ми можемо його спокійно використовувати. Таким чином, цей
рядок пояснює компілятору, що Sal (Сел) - це об'єкт деякого класу athlete
3. void mainprog () - починаючи з цього рядка йде опис основної послідовності дій, яку ви задаєте
своєму комп'ютеру. Ці дії складаються з інструкцій, укладених між відкриваючою і закриваючою
фігурними дужками ({}). Насправді основна послідовність дій у C++ позначається функцією
main(). Назва mainprog () використовується тільки для навчання.
4. Sal.ready () - цей рядок вказує Селу підготуватися до виконання вправ. Як і в житті, якщо ми
хочемо попросити когось виконати що-небудь, ми звертаємося до нього з проханням, можна
сказати, посилаємо йому повідомлення. Дію готовий описано у файлі franca.h. Його може виконати
не тільки Sal, але і інші члени групи гімнастів, якщо звичайно, вони записані в цю групу.

3
Звичайний формат пересилання повідомлення складається з імен об'єкта (Sal) і повідомлення
(ready), між якими ставиться крапка, а слідом за назвою повідомлення розташовуються круглі
дужки ().
5. Sal.say ("Привіт!") - це інше повідомлення, що надсилається Селу. Цей рядок вказує Селу сказати
"Hi" (привіт). Але не в прямому сенсі. На екрані буде виїдено повідомлення "Hi".

2.2. Відправка повідомлень

Об'єкта Sal можна спостерігати на екрані в декількох позиціях (так запрограмував розробник програм)
: ready (готов); up (руки вгору); left (руки вліво); right (руки вправо); Для виконання цих вправ
необхідно послати об'єкту Sal відповідне повідомлення . Наприклад, Sal.left();
Якщо попросити Сэла лягти на підлогу, то він цього не зробить, оскільки ця дія не запрограмована.

Можна оголосити 2 об’єкта: гімнасти Сел і Салі.

1-й спосіб: 2-й спосіб:


athlete Sal; athlete Sal, Sally;
athlete Sally; Sal.ready();
Sal.ready(); Sally.ready();
Sally.ready();

Кожна виконувана інструкція закінчується крапкою з комою ( ; ).


Інструкції #include і void main() - не виконувані.
Компілятор C++ розрізняє прописні і рядкові букви: Sal і sal - це імена двох різних об'єктів.
athlete Sal, Sally;
sal.ready(); // помилкова інструкція

2.3. Аргументи
Рухи атлети можуть виконуватися швидше або повільніше. Число секунд, яке атлет може знаходитися
в тій або іншій позиції задається в повідомлення, як аргумент усередині дужок.

Приклад. Написати програму, за допомогою якої Сел залишаться 5 секунд з піднятою лівою рукою, а потім
на 8 секунд з піднятими вгору руками:
#include "franca.h"
athlete Sal;

void mainprog()
{
Sal.left(5);
Sal.up(8);
}

Тут використовуються чисельні аргументи - числа, що означають значення проміжку часу.

Способи запису аргументів повідомлень:


1) Ціле число. Sal.up(8);

4
2) Дробове число: Sal.left(0.5);
3) 0 Sal.left(0); Дія виконується максимально швидко.
4) пусто Sal.left(); Атлет знаходиться в позиції 1 секунду. Такий аргумент
називається значенням за умовчанням.

Повідомлення say теж має аргумент: те, що вимовляє гімнаст. Це символьний аргумент.
Символи - це послідовність з букв, цифр і знаків. Вони задаються усередині парних лапок.
Наступне повідомлення є помилковим:
Sal.say(hello);
Компілятор прийме аргумент hello як ім'ям якого-небудь об'єкту. А у нас об'єкт hello не визначений
.

3. Етапи розробки програм

1. ПОЧАТКОВИЙ МОДУЛЬ – файл з розширенням срр, який містить текст програми.


2. ОБ'ЄКТНИЙ МОДУЛЬ - це команди і дані машинної мови. Перетворення початкового модуля в
об'єктний виконує програма КОМПІЛЯТОР. Частина компілятора, яка до початку процесу компіляції
виконує обробку тексту програми, називається ПРЕПРОЦЕСОРОМ.
3. КОМПОНУВАЛЬНИК. Програма може складатися з багатьох модулів. Деякі програми, які часто
використовуються, можуть об'єднуватися в одну групу - БІБЛІОТЕКУ програм (об'єктних
модулів). Вони заздалегідь компілюються в машинний код. Наприклад, бібліотека
математичних функцій.
У проекті, створеному Франка, окрім модуля з розширенням .cpp, є модуль з розширенням obj. Це
бібліотечний модуль. В ньому, в відкомпілюваному вигляді, містяться функції, розроблені П. Франка.

Завдання для виконання.

5
1. Реалізувати наступну послідовність повідомлень : ready, up, left, up, ready, up,
right, up, ready

Домашнє завдання
1. Зміните попередню програму так, щоб виконання вправ стало повільніше. Для цього вставте число,
наприклад 5, всередину дужок відповідних повідомлень ready, up, left, right.
2. Зміните програму так, щоб прискорити виконання вправ. Для цього вставте в дужки 0.
3. Зміните програму C_SAL.CPP так, щоб Сел говорив "Sal" замість "Hi"!.
4. Оголосите на додаток до об'єкту Sal ще один об'єкт, наприклад Sally (Салі), і нехай кожен об'єкт
повідомить своє ім'я.
5. Змусьте Сэла, а потім і Салі виконати наступні вправи: ready, up, left, up, right, up,
ready.
6. Змусьте Сэла по ходу виконання вправ говорити, яку вправу він робить (ready, up, left, up,
right, up, ready).

Література. П. Франка. С++. Учебный курс. Стор. 82 – 93.

You might also like