You are on page 1of 15

Вступ до лабораторних робіт.

Основи програмування
Вступ до лабораторних робіт
ЗНАЙОМСТВО З ПАЙТОН
Компілюємі та інтерпретуємі мови програмування
Компілюєма мова програмування — мова програмування, в якій вхідний
код програми перед виконанням повністю перетворюється в машинний код і
записується у файл з особливим заголовком і/або розширенням для
ідентифікації цього файлу як виконуваного операційною системою. Такий файл
називається виконуваним. Основою реалізації компільованої мови є
компілятор – спеціальна програма, яка на основі вхідного коду програми
створює машинний код цієї програми у окремому файлі.
Інтерпретована мова програмування — мова програмування, в якій
вхідний код програми не потребує попереднього перетворення повністю у
машинний код, а виконується рядок за рядком з допомогою спеціальної
програми – інтерпретатора.
Отже, основною відмінністю компільованих мов програмування від
інтерпретованих мов програмування, є перетворення всієї програми у форму
машинного коду, в той час як у інтерпретованих код виконується порядково
інтерпретатором.

Python
Python – інтерпретована мова програмування: вхідний код частинами
перетворюється у машинний в процесі виконання інтерпретатором.
Метою розробників Python був простий «читабельний» синтаксис. Читати
код на цій мові програмування досить легко, тому що в ньому мало допоміжних
елементів, а правила мови змушують програмістів робити відступи.
Python об'єктно-орієнтована мова програмування з великою кількістю
вбудованих класів, які реалізують складні структури даних. Наявність таких
класів значно спрощує написання програм для обробки різноманітних масивів
даних.
Дзен Пайона. Якщо інтерпретатору Пайтона дати команду import
this (імпортувати "сам об'єкт"), то виведеться так званий "Дзен Пайтона", який
ілюструє ідеологію і особливості даної мови.
Офіційна документація є першоджерелом вивчення будь-якої мови
програмування. Для Пайтона https://docs.python.org/3/

Python як калькулятор
Пайтон має інтерактивний режим, у якому можна писати команди і вони
будуть виконуватися порядково. Для цього необхідно відкрити інтерактивний
режим інтерпретатора, написати команду і натиснути Enter. Результат буде
виведено на екран.
Спробуйте написати
import this
та ознайомтеся з "Дзеном Пайтона". На екрані має бути виведено текст
аналогічно тому, як це представлено на рисунку 0.1.
Вступ до лабораторних робіт. Основи програмування

Рисунок 0.1 – "Дзен Пайтона"

Аналогічним чином можна писати арифметичні, логічні та інші команди і


вони будуть виконані. Приклад виконання таких команд представлено на
рисунку 0.2. Самостійно запишіть п’ять різних команд та проаналізуйте
виведені результати.

Рисунок 0.2 – Приклад виконання команд у інтерактивному режимі

Математичні оператори мови Пайтон представлені у таблиці 0.1. Порядок


виконання математичних операцій можна задати дужками.

Таблиця 0.1 – Математичні оператори в Пайтон


Оператор Опис
+ Додавання
- Віднімання
* Множення
/ Ділення
// Цілочислове ділення
% Залишок від ділення
** Піднесення до степеня
Вступ до лабораторних робіт. Основи програмування
Імпортування бібліотек у інтерактивному режимі
У разі необхідності виконання складніших обчислень можна імпортувати
бібліотеку math, а потім у виразі скористатися функціями цієї бібліотеки. Для
цього слід спочатку виконати команду імпорту бібліотеки
import math
Потім записати та виконати команду для відповідних обчислень, наприклад:
math.cos(0.123)+math.sin(0.321)
Самостійно ознайомтеся із функціями бібліотеки math та запишіть п’ять
різних команд, використовуючи функції цієї бібліотеки.

Використання змінних у інтерактивному режимі


Для представлення даних у програмі використовується поняття «змінна».
Змінна – це пойменована область пам'яті, де зберігаються ті чи інші дані.
Змінна характеризується розміром виділеної пам’яті для зберігання, ім’ям
(ідентифікатором), типом і значенням. В якості імені змінної можна
використовувати послідовність з літер латинського алфавіту, цифр та символу
підкреслення. Пайтон дозволяє використовувати змінні у інтерактивному
режимі. Пайтон не вимагає опису змінних перед їх використанням, а одній і тій
же змінній у різні моменти часу можуть бути присвоєні значення різних типів.
Такий стан речей характерний для мов програмування з нестрогою типізацією,
але вся відповідальність при роботі зі змінними у такому разі лягає на плечі
програміста. На рисунку 0.3 представлено приклад використання змінних
інтерактивному у режимі.

Рисунок 0.3 – Приклад використання змінних у інтерактивному режимі

Для кращого розуміння моделі даних, яка


реалізована у Пайтон, слід уважно вивчити
наступний розділ документації
https://docs.python.org/3/reference/datamodel.html

Створення та виконання найпростішої програми


Відкрийте середовище IDLE та створіть новий файл як на рисунку 0.4.
Вступ до лабораторних робіт. Основи програмування

Рисунок 0.4 – Створення нового файлу в IDLE

Створіть у новому файлі програму:


a=int(input("Enter num1->"))
b=int(input("Enter num2->"))
s=a+b
d=a-b
m=a*b
v=a/b
print(s,d,m,v,sep="; ")

Проаналізуйте, що робить програма. Запустіть її на виконання,


натиснувши F5 або виконавши Run->Run Module. Перевірте працездатність
програми.
Форматування виведення результатів
У попередній програмі результати виводились не дуже компактно, інколи
таке виведення ускладнює їх сприйняття. Пайтон надає досить широкі
можливості для форматування даних, які виводяться на екран. Тут буде подано
коротку довідку з форматування, а детальніше з інформацією щодо
форматування даних можна ознайомитись за посиланням
https://docs.python.org/3/library/string.html#format-string-syntax
Найпростіший синтаксис методу format():
"{:format_spec}".format()

де format_spec — специфікація формату і у формальному записі має вигляд:


[[fill]align][sign][#][0][width][grouping_option][.precision][type]

Не всі елементи формату є обов’язковими, можна вказати лише декілька.


Призначення елементів формату:
fill — символ для заповнення (будь-який символ)
Вступ до лабораторних робіт. Основи програмування
align — вирівнювання. Доступні значення: "<" | ">" | "=" | "^" (вирівнювання
по лівому краю, вирівнювання по правому краю, заповнення
символами після знаку перед цифрами, вирівнювання по центру
відповідно).
sign — виведення знаку. Доступні значення: "+" | "-" | " "
# — виведення префікса для двійкового, вісімкового та шістнадцяткового
форматів (тобто 0x, 0o, або 0b)
0 — заповнення нулями для числових типів, коли вирівнювання не задано
явно
width — ширина поля виведення (ціле число, вказує кількість позицій
символів екрану для виведення числа)
grouping_option — розділитель розрядів «,» або «_»
.precision — кількість чисел дробової частини (крапка обов’язкова, за нею
вказується ціле число)
type — тип значення, яке виводиться.

Деякі типи значень (детальніше дивитись документацію):


b – бінарний формат;
c – символ юнікода;
d – ціле десяткове число;
е – число в експоненційному форматі;
f – число з фіксованою крапкою;
s – рядок символів.

Додайте у програму такий рядок:


print('{4:4s}{0:<5d} {5:4s}{1:<4d} {6:4s}{2:<8d}
{7:4s}{3:<.2f}'.format(s,d,m,v,"a+b=","a-b=","a*b=","a/b="));
Зверніть увагу на форматування виведення результатів, поясніть
параметри форматування. Поекспериментуйте з виведенням значень у різних
форматах.

Імпортування бібліотек у основній програмі


Для виконання складних обчислень у Пайтон є бібліотека math.
Підключіть бібліотеку командою
import math
Змініть програму, щоб вона обчислювала гіпотенузу прямокутного
трикутника двома способами:

myHip=math.sqrt(a**2+b**2);
h=math.hypot(a,b);
print(myHip,h,sep=" ");

Порівняйте результати обчислень.


Вступ до лабораторних робіт. Основи програмування
Індивідуальне завдання з обчислення виразу
Виконайте індивідуальне завдання з обчислення виразу (таблиця 0.2).

Номер варіанта – остання цифра студентського квитка.

Таблиця 0.2 – Завдання для самостійної роботи


Варіант Завдання
sin 3 (a) cos 2 (b) − a2 + b
1
a − sin 3 (2b) cos 2 (0.5a)

a2 + (b 2 − a + 5ab)2
2
(a 2 − b + 5ba)2 − 5
5a 5b
3 +2 − a −b
b + 2ab + 1 a + 2ba + 1

sin( a) sin( b)
4 −
a b
cos(b) + cos(a) +
b a
5
a 2 − b 2 + 3ab +
5 b 2 − a 2 + 3ba

(a − b )2 + b − a 3a 2
6 −
2ab (b − a) 2 + a − b
2a 2b
1+ −
7 2
sin (0.5b) + b−a 2
sin (0.5a) + a −b

ea + 4 a2 + b2 sin( 2b)
8 −1+
cos(0.5ab) eb + 4 b 2 + a 2
5 sin 2 (0.5a ) cos(2b) − e a
9
ln( ba) + 5 sin 2 (0.5b) cos(2a )
2a e b + ln( ba)
10 +
e a + ln( ab) 2b
Вступ до лабораторних робіт. Основи програмування

АЛГОРИТМІЗАЦІЯ ТА ПРОГРАМУВАННЯ
Поняття алгоритму та програми
Алгоритмом називають точне розпорядження, яке задається
обчислювальному процесу і являє собою кінцеву послідовність звичайних
елементарних дій, чітко визначає процес перетворення вхідних даних у
вихідний результат.
Кожен алгоритм має справу з даними – вхідними, проміжними і
вихідними.
Запис алгоритму на деякій мові програмування являє собою програму.

Властивості алгоритму
Скінченність. Алгоритм повинен закінчуватися за кінцеве число кроків.
Якщо будується нескінченний, який сходиться до шуканого рішення, то він
обривається на певному етапі і отримане значення приймається за наближене
рішення даної задачі. Точність наближення залежить від числа кроків.
Елементарність (зрозумілість). Кожен крок алгоритму повинен бути
простим, щоб пристрій, який виконує операції, міг виконати його однією дією.
Дискретність. Процес вирішення задачі представляється кінцевою
послідовністю окремих кроків, і кожен крок алгоритму виконується за кінцевий
(не обов'язково одиничний) час.
Детермінованість (визначеність). Кожен крок алгоритму повинен бути
однозначно визначеним і не повинен допускати довільного трактування. Після
кожного кроку або вказується, який крок робити далі, або дається команда
зупинки, після чого робота алгоритму вважається закінченою.
Результативність. Алгоритм має деяке число вхідних величин –
аргументів. Мета виконання алгоритму полягає в отриманні конкретного
результату, що має цілком визначене ставлення до вихідних даних. Алгоритм
повинен зупинятися після кінцевого числа кроків, що залежить від даних, із
зазначенням того, що вважати результатом. Якщо рішення не може бути
знайдено, то повинно бути вказано, що в цьому випадку вважати результатом.
Для однакових вхідних даних алгоритм завжди повинен видавати один і той же
результат, тобто алгоритм не може кожного разу видавати різні результати при
одних і тих же вхідних даних.
Масовість. Алгоритм рішення задачі розробляється в загальному вигляді,
тобто він повинен бути застосовний для деякого класу задач, що розрізняються
лише вхідними даними. При цьому вхідні дані можуть вибиратися з деякої
області, яка називається областю застосовності алгоритму.
Ефективність. Одну і ту ж задачу можна вирішити по-різному і
відповідно за різний час і з різними витратами пам'яті. Бажано, щоб алгоритм
складався з мінімального числа кроків і при цьому рішення задовольняло б
умові точності і вимагало мінімальних витрат інших ресурсів.
Вступ до лабораторних робіт. Основи програмування
Запис алгоритму. Поняття блок-схеми
Для запису алгоритмів використовують найрізноманітніші засоби. Вибір
засобу визначається типом виконуваного алгоритму. Виділяють
наступні основні способи запису алгоритмів:
− вербальний – алгоритм описується на людській мові;
− символьний – алгоритм описується за допомогою набору символів;
− графічний – алгоритм описується за допомогою набору графічних
зображень.
Загальноприйнятими способами запису алгоритму є графічна запис за
допомогою схем алгоритмів (блок-схем) і символьний запис з допомогою будь-
якого алгоритмічної мови.
Для опису алгоритму за допомогою схем зображують пов'язану
послідовність геометричних фігур, кожна з яких має на увазі виконання певної
дії алгоритму. Порядок виконання дій вказується стрілками.

Типи алгоритмів за структурою


Розрізняють алгоритми лінійної, розгалуженої та циклічної структури.
В алгоритмах лінійної структури дії виконуються послідовно одна за
одною.
В алгоритмах розгалуженої структури в залежності від виконання або
невиконання будь-якої умови виробляються різні послідовності дій. Кожна така
послідовність дій називається гілкою алгоритму.
В алгоритмах циклічної структури в залежності від виконання або
невиконання будь-якої умови виконується актуальна послідовність дій, яка
називається тілом циклу. Вкладеним називається цикл, що знаходиться
всередині тіла іншого циклу. Ітераційним називається цикл, число повторень
якого не задається, а визначається в ході виконання циклу.
У цьому випадку одне повторення циклу називається ітерацією.
Дуже часто програма містить комбінацію цих структур, до того ж вони
можуть бути вкладеними одна в одну.
Визначте для кожної із задач у списку тип алгоритму:
1. обчислення коренів квадратного рівняння;
2. обчислення значень якоїсь функції на вказаному діапазоні із
вказаним кроком;
3. знаходження цілої частини і залишку від ділення одного числа на
інше;
4. обчислення суми чисел масиву;
5. знайти мінімальне поміж трьох чисел;
6. визначити відстань між двома точками на координатній площині;
7. визначити частку двох чисел;
8. знайти максимальне значення поміж елементів масиву;
9. знайти площу та периметр заданої геометричної фігури;
10.визначити кількість елементів масиву, які менші за середнє
значення всіх елементів;
11.знайти суму цифр числа;
12.знайти найменшу цифру числа.
Вступ до лабораторних робіт. Основи програмування

Рисунок 0.5 – Типи обчислювальних процесів

Алгоритми з лінійною структурою


Лінійним називається обчислювальний процес, у якому дії виконуються
послідовно в природному і єдиному порядку проходження. Блокові символи в
цій структурі розміщаються в тому ж порядку, у якому повинні бути виконані
запропоновані дії.
На рисунку 0.6 представлено приклад алгоритму з лінійною структурою.

Рисунок 0.6 – Приклад алгоритму з лінійною структурою


Вступ до лабораторних робіт. Основи програмування
Алгоритми з розгалуженою структурою
На практиці часто виникає необхідність, у залежності від отриманих
вхідних даних, значень проміжних результатів, здійснювати обчислення за
одними чи іншим формулам, тобто в залежності від виконання якої-небудь
логічної умови обчислювальний процес повинен йти по одному чи іншому
напрямку. Алгоритми, що містять дію вибору напрямку обчислювального
процесу, мають назву розгалужених.
Для реалізації розгалужених обчислювальних процесів у залежності вiд
результатів проміжних обчислень застосовується умовний оператор переходу.
На рисунку 0.7 представлено приклад алгоритму з розгалуженою
структурою.

Рисунок 0.7 – Приклад алгоритму з розгалуженою структурою

Оператори умови в Пайтон


Поведінка програми дуже часто залежить від деякої умови, яка може
залежати від вхідних даних, потреб користувача та ін. Для реалізації такої
програми використовують алгоритми з розгалуженнями. Існує кілька
операторів розгалужень (або їх ще називають умовними операторами) для
написання програм.
Умовна інструкція if-elif-else (її ще іноді називають оператором
розгалуження) – один з основних інструментів мови програмування Пайтон.
Вона визначає, яку дію слід виконати, в залежності від значення змінних в
момент перевірки умови.
Синтаксис інструкції:
Спочатку записується частина if з виразом умови, далі можуть слідувати
одна або більше необов'язкових частин elif, і, нарешті, необов'язкова частина
else. Загальна форма запису умовної інструкції if виглядає наступним чином:
Вступ до лабораторних робіт. Основи програмування
if <умова_1>:
<набір_операторів_1>
elif <умова_2>:
<набір_операторів_2>
else:
<набір_операторів_3>

Перевірка істинності виразу в Python виконується за такими правилами:


1) будь-яке число, яке не дорівнює 0, або непорожній об'єкт – істина
(true);
2) числа, рівні 0, порожні об'єкти і значення None – неправда (false);
3) операції порівняння застосовуються до структур даних рекурсивно.
Операції порівняння завжди повертають True або False.
Логічні оператори and і or повертають істинний або помилковий об'єкт-
операнд.
Логічні оператори:
X and Y – Істина, якщо обидва значення X і Y істинні;
X or Y – Істина, якщо хоча б одне із значень X або Y істинне;
not X – Істина, якщо X містить значення false.

Тримісний вираз if / else має вигляд


<змінна> = <вираз_1> if <умова> else <вираз_2>
У даній інструкції інтерпретатор виконає вираз_1, якщо умова істинна, в
іншому випадку виконається вираз_2.

Приклад використання оператора умови в Пайтон


Розглянемо використання умовного оператора в Пайтон, ввівши у
попередню програму перевірку ділення на 0. Для цього змініть обчислення
частки таким чином (будьте уважні із відступами!!!):
if (b==0):
v="NA"
else:
v=a/b

Протестуйте роботу програми з різними значеннями вхідних даних.

Напишіть програму, яка запитує у користувача число і виводить:


− Неможливо обчислити – якщо число менше 0;
− Завеликий діапазон – якщо число більше 5000;
− Корінь квадратний з числа – у іншому випадку.

Алгоритми з циклічною структурою


Рішення багатьох задач зводиться до виконання обчислень по тих самих
математичних залежностях, але при різних значеннях вхідних величин. Такий
обчислювальний процес називається циклічним, а багаторазово повторювані
Вступ до лабораторних робіт. Основи програмування
ділянки цього процесу називаються циклами. Змінні, які змінюються при
кожному новому вході на повторення, називають параметрами циклу.
Розрізняють регулярні чи арифметичні цикли (з відомим числом
повторень), умовою закінчення яких є досягнення параметром циклу свого
кінцевого значення, і цикли ітераційні (з невідомим числом повторень). У таких
циклах умова повторення або закінчення циклу задається по деякому
проміжному чи остаточному результаті, наприклад, поки не буде досягнута
необхідна точність обчислень.
Регулярні цикли називають також циклами з лічильником. Число
повторень тіла циклу в цьому випадку підраховується за допомогою введення
спеціальної змінної - лічильника, для якої відомі початкове, кінцеве значення і
крок її зміни. Керування циклом здійснюється на підставі порівняння поточного
значення лічильника з заданим кінцевим. Для органiзацiї циклiв з визначеною
кiлькiстю повторень, (наприклад, при роботi з елементами масивiв)
найзручнiше застосовувати цикл з параметрами.
При реалізації ітераційних обчислювальних процесів в алгоритмах
повинне забезпечуватися обов'язкове виконання умови виходу з циклу,
збіжність ітераційного процесу.
Прикладом ітераційних обчислювальних процесів є обчислення
нескінченних числових рядів. При цьому, для практичних розрахунків
обмежуються обчисленням деякого числа елементів, виходячи з вимог заданої
точності обчислення заданої суми членів ряду.
У середині одного циклу може знаходитися один чи кілька інших циклів.
Цикл, який містить у собі інший цикл, має назву зовнішнього. Цикл, який
міститься в тілі іншого циклу, має назву внутрішнього. Основне правило
побудови вкладених циклів – це охоплення зовнішнім циклом внутрішнього чи
декількох внутрішніх. Глибина вкладеності, тобто кількість відкритих циклів на
ділянці алгоритму може бути більше двох і не обмежується. Правила
організації як зовнішнього, так і внутрішніх циклів аналогічні правилам
організації простого циклу. Параметри циклів різних рівнів змінюються
одночасно.
При організації внутрішніх циклів необхідно врахувати, що область дії
внутрішнього циклу не повинна виходити за область дії зовнішнього циклу.
На рисунку 0.8 представлено приклад блок-схеми циклічного алгоритму.

Рисунок 0.8 – Приклад блок-схеми циклічного алгоритму


Вступ до лабораторних робіт. Основи програмування
Оператори циклу в Пайтон
Цикл while – один з найбільш універсальних циклів в Python. Виконує
тіло циклу до тих пір, поки умова циклу приймає значення істина. Синтаксис:
while <умова>:
... <набір_операторів>
Цикл for проходить по будь-якому ітеративному об'єкту (наприклад рядку
або списку), і під час кожного проходу виконує тіло циклу. Синтаксис:
for <змінна> in <ітеративний_об’єкт>:
... <набір_операторів>
Для написання багатьох алгоритмів недостатньо мати циклічні оператори.
Поряд з ними використовуються інші специфічні оператори.
Оператор continue
Оператор continue починає наступний прохід циклу, минаючи команди
тіла циклу (for або while), які записані після нього.

Оператор break
Оператор break достроково перериває цикл, при цьому цикл закінчує
виконуватись і виконується наступна за циклічним оператором команда.
Чарівне слово else
Слово else, застосоване в циклі for або while, перевіряє, чи був
проведений вихід з циклу інструкцією break або ж цикл завершився звичайним
чином. Блок операторів всередині else виконається тільки в тому випадку, якщо
вихід з циклу стався без допомоги break. Приклад синтаксису:
for <змінна> in <ітеративний_об’єкт>:
... <набір_операторів_1>
... else:
... <набір_операторів_2>
У наведеному прикладі синтаксису набір_операторів_1 повинен
обов’язково містити оператор break!

Приклад використання оператора циклу в Пайтон


Розглянемо використання операторів циклу у Пайтон на прикладі такого
завдання: для функції y=x2 обчислити значення на відрізку [-1;1] з кроком, який
вкаже користувач, та вивести на екран. Програма, яка реалізує дане завдання,
представлена нижче. Створіть її у IDLE та протестуйте на правильність роботи.
Текст програми:
step=float(input("step->"))
x1=-1.0
x2=1.0
trace=x1

while trace<=x2:
print("{:>5.3f}: {:.5f}".format(trace,trace**2))
trace=trace+step
Вступ до лабораторних робіт. Основи програмування
Індивідуальне завдання з обчислення значень функції
на діапазоні
Обчислити і вивести на екран у вигляді таблиці значення функції F на
інтервалі від до х2 з кроком Δх. Значення a, b, c, х1, х1, Δх задає користувач з
обов’язковою перевіркою правильності введених даних (таблиця 0.3).

Номер варіанта – остання цифра студентського квитка.

Таблиця 0.3 – Завдання для самостійної роботи

Варіант Функція
1

7
Вступ до лабораторних робіт. Основи програмування
8

10

Контрольні запитання
1. Особливості мови програмування Пайтон.
2. Як відділяються блоки операторів у Пайтон?
3. Що таке змінна?
4. Які імена можна задавати змінним?
5. Операція присвоєння.
6. Як створити коментар?
7. Як ввести та вивести дані?
8. Форматування виведення даних за допомогою format.
9. Призначення sep та end.
10.Математичні оператори.
11. Умовні оператори Пайтон.
12.Оператори циклу у Пайтон.
13.Оператор continue.
14.Оператор break.

You might also like