Урок № 33. Поняття програми та мови програмування. Мова Python. Інсталяція та ознайомлення з середовищем розробки.

І. Опрацюйте теоретичний матеріал:

Більш строге визначення: мова програмування — це система позначень для опису алгоритмів та структур даних, певна штучна формальна система, засобами якої можна виражати алгоритми. Мову програмування визначає набір лексичнихсинтаксичних і семантичних правил, що задають зовнішній вигляд програми і дії, які виконує виконавець (комп’ютер) під її управлінням.
З часу створення перших програмованих машин було створено понад дві з половиною тисячі мов програмування. Щороку їх кількість поповнюється новими. Деякими мовами вміє користуватись тільки невелике число їх власних розробників, інші стають відомі мільйонам людей. Професійні програмісти зазвичай застосовують в своїй роботі декілька мов програмування.

Мова програмування, як і будь-яка інша мова, має такі складові:

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

Перші комп’ютери доводилось програмувати двійковими машинними кодами. Проте програмувати таким чином — доволі трудомістке і важке завдання. Для спрощення цього завдання почали з’являтися мови програмування низького рівня, які дозволяли задавати машинні команди в зрозумілішому для людини вигляді. Для перетворення їх у двійковий код були створені спеціальні програми — асемблери.

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

Прикладом мови низького рівня є мова асемблера. Мови низького рівня орієнтовані на конкретний тип процесора і враховують його особливості, тому для перенесення програми на асемблері на іншу апаратну платформу її потрібно майже цілком переписати. Певні відмінності є і в синтаксисі програм під різні компілятори. Щоправда, центральні процесори для комп’ютерів фірм AMD та Intel практично сумісні і відрізняються лише деякими специфічними командами. А ось спеціалізовані процесори для інших пристроїв, наприклад, відеокарт, телефонів містять суттєві відмінності.
Переваги:
За допомогою мов низького рівня створюють ефективні і компактні програми, оскільки розробник отримує доступ до всіх можливостей процесора.
Недоліки:
Програміст, що працює з мовами низького рівня, має бути високої кваліфікації, добре розуміти будову мікропроцесорної системи, для якої створює програму.
– Результуюча програма не може бути перенесена на комп’ютер або пристрій з іншим типом процесора; часто труднощі виникають і при перенесенні програми для іншої операційної системи.
– Значний час розробки великих і складних програм.
Мови низького рівня, як правило, використовують для написання невеликих системних програм, драйверів пристроїв, модулів стиків з нестандартним обладнанням, програмування спеціалізованих мікропроцесорів, коли найважливішими вимогами є компактність, швидкодія і можливість прямого доступу до апаратних ресурсів.

Мови програмування високого рівня (транслятори) поділяються на:
компілятори — перетворюють текст програми в машинний код, який можна зберегти і після цього використовувати уже без компілятора (прикладом є виконувальні файли з розширенням *.exe).
інтерпретатори — перетворюють частину програми в машинний код, виконують і після цього переходять до наступної частини. При цьому щоразу при виконанні програми використовується інтерпретатор.
Можна сказати, що мови програмування високого рівня є зрозумілішими людині, ніж комп’ютеру. Особливості конкретних комп’ютерних архітектур в них не враховуються, тому створені програми легко переносяться з комп’ютера на комп’ютер. Здебільшого достатньо просто перекомпілювати програму під певну комп’ютерну архітектурну та операційну систему. Розробляти програми на таких мовах значно простіше і помилок допускається менше. Значно скорочується час розробки програми, що особливо важливо при роботі над великими програмними проектами.
Наразі у середовищі розробників вважається, що мови програмування, які мають прямий доступ до пам’яті та регістрів або мають асемблерні вставки, потрібно вважати мовами програмування з низьким рівнем абстракції. Тому більшість мов, які вважалися мовами високого рівня до 2000-го року зараз вже такими не вважаються.
Недоліком мов високого рівня є більший розмір програм порівняно з програмами на мові низького рівня. Сам текст програм на мові високого рівня менший, проте, якщо взяти у байтах, то код початково писаний на асемблері буде компактніший. Тому в основному мови високого рівня використовуються для розробок програмного забезпечення комп’ютерів, і пристроїв, які мають великий обсяг пам’яті. А різні підвиди асемблеру застосовуються для програмування інших пристроїв, де критичним є розмір програми.

За технологією програмування розрізняють:
процедурні мови – програма, складається із набору підзадач (процедур), які реалізують завдання;
об’єктно-орієнтовні – головними елементами алгоритму є клас – новий тип даних, що розширює мову, й об’єкт, що має властивості та методи – дії, які виконуються об’єктом;
декларативні – мови створення програм зі штучним інтелектом;
мова скриптів (мова сценаріїв) – мова, розроблена для запису «сценаріїв» – послідовностей команд, які користувач може виконувати на комп’ютері.

Транслятор – програма, яка записує команди програми, описаної деякою мовою програмування, машинною мовою.
Компілятор зчитує одразу всю програму й переписує її машинним кодом або мовою асамблер. Процес трансляції, який при такому підході називають компіляцією, відбувається один раз, і результат перекладу зберігається в окремому файлі.
Інтерпретатор зчитує вихідний код програми по одній команді й одразу намагається їх «перекладати» та виконувати. Це дає змогу програмісту швидше  перевіряти правильність виконання програми та знаходити помилки в коді.
Середовище програмування – це комплекс програм, що містить засоби автоматизації процесів підготовки та виконання програм користувача, а саме:
1) редактор текстів програм – у ньому можна створювати й редагувати текст програми;
2) довідково-інформаційну систему про мову програмування та середовище;
3) бібліотеки, у яких зберігаються найбільш уживані фрагменти програм або цілі програми;
4) компілятор чи інтерпретатор, використання якого дає змогу швидко знайти в програмі помилку та виправити її;
5) покроковий «виконавець» програми.

Python (найчастіше вживане прочитання — «Па́йтон», запозичено назву з британського шоу Монті Пайтон) — інтерпретована об’єктно-орієнтована мова програмування високого рівня зі строгою динамічною типізацією. Розроблена в 1990 році Гвідо ван Россумом. Структури даних високого рівня разом із динамічною семантикою та динамічним зв’язуванням роблять її привабливою для швидкої розробки програм, а також як засіб поєднування наявних компонентів. Python підтримує модулі та пакети модулів, що сприяє модульності та повторному використанню коду. Інтерпретатор Python та стандартні бібліотеки доступні як у скомпільованій, так і у вихідній формі на всіх основних платформах. В мові програмування Python підтримується кілька парадигм програмування, зокрема: об’єктно-орієнтована, процедурна, функціональна та аспектно-орієнтована.

IDLE  (Integrated Development and Learning Environment) – це інтегроване середовище розробки і навчання на мові Python, створена за допомогою бібліотеки Tkinter. Офіційно – спотворення IDE, але насправді названа в честь Ерік Айдл ( англ.  Eric Idle ) з Монті Пайтон. Поставляється разом з Python і завдяки використанню Tkinter може використовуватися на багатьох платформах, серед яких Windows, Mac OS, Unix-подібні ОС
За допомогою IDLE можна виконувати звичайні для інтегрованого середовища завдання: переглядати, редагувати, запускати, налагоджувати програми на Python. Редактор коду використовує підсвічування синтаксису . IDLE пропонує додаткові можливості для досвідчених користувачів, наприклад, засіб перегляду об’єктів.
Функція print(). Вона відповідає за виведення даних, за замовчуванням на екран. Якщо код міститься у файлі, то без неї не обійтися. В інтерактивному режимі в ряді випадків можна обійтися без неї.
Введення даних в програму і їх виведення важливі в програмуванні. Без введення програми нічого б не робили, крім випадків, коли в них самих генеруються випадкові значення. Виведення дозволяє побачити, використовувати, передати далі результат роботи програми.
Звичайно потрібно, щоб програма обробляла якийсь діапазон різних вхідних даних, які надходять в неї з зовнішніх джерел. В якості останніх можуть виступати файли, клавіатура, мережа, вихідні дані з іншої програми. Виведення даних також можливе в файли і ін. Однак у багатьох випадках це відбувається на екран монітора.
Можна сказати, що програма – це відкрита система, яка обмінюється чим-небудь із зовнішнім для неї середовищем. Якщо живий організм в основному обмінюється речовиною та енергією, то програма – даними, інформацією.
Що таке функція в програмуванні, дізнаємося пізніше. 
Поки будемо вважати, що print () – це така команда мови Python, яка виводить те, що в її дужках на екран.

В попередньому прикладі ми працювали з Python в інтерактивному режимі. Ми ввели команду (директиву), і інтерпретатор Python її тут же виконав.
Виконати команду, директиву або програму означає те ж саме, що і «запустити» її.

В оболонці Python можна множити, додавати, віднімати і ділити числа, а також здійснювати деякі інші операції. Символи, за допомогою яких виконуються математичні дії в мові Python, називаються операторами. Основні математичні оператори перераховані в таблиці:

Множення і ділення мають більш високий пріоритет, ніж додавання і віднімання, і це значить, що вони будуть виконуватися першими. Інакше кажучи, при обчисленні математичного виразу Python спочатку перемножить і розділить числа, а потім перейде до додавання і віднімання.

ІІ. Виконайте практичну роботу за інструктивною карткою

ІІІ. Домашнє завдання: опрацювати вивчений матеріал, підготуватись до тестової перевірки знань