Вітаю!

Усім привіт!

Я викладаю інформатику в гімназії №179 м.Києва.

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

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

 

Урок №1

Тема. Поняття програми. Середовище програмування та компілятор.

Мета: ознайомити учнів з основними поняттями програмування; розглянути поняття компілятора; показати переваги об’єктно-орієнтованого програмування; ознайомити з  поняттям підпрограми.

Хід уроку.

  1. 1. Актуалізація опорних знань.

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

1.2. З чого складається програма? Програма складається з інструкцій (команд), виконання яких приводить до отримання потрібного результату.

1.3. Від чого залежить набір інструкцій? Набір інструкцій залежить від виконавця та від мови програмування.

 

2. Пояснення нового матеріалу.

2.1. Мова програмування.

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

А  тепер погляньте на програму, як описує дії екіпажу. Ми використали набір команд: ВПЕРЕД, НАПРАВО, НАЛІВО, ВОГОНЬ!

Назвемо нашу мову програмування АТАКА 1.0.

Додамо до нашої мови команду ДИМ. Якщо додати до мови програмування нові команди, то з’явиться нова версія мови – АТАКА 2.0.  Якщо вносити несуттєві зміни, то міняється лише друга цифра – АТАКА 2.1, АТАКА 2.2 і т.д.

Для комп’ютера всі команди є інструкціями. Отримавши наступну інструкцію, комп’ютер повинен її виконати. Тепер до нашої мови входять команди ВПЕРЕД, НАПРАВО, НАЛІВО, ВОГОНЬ! та ДИМ.

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

Крім того в мові програмування повинні бути визначені правила їх використання. Вони називаються правилами синтаксису або просто синтаксисом мови програмування.

Наприклад, в нашій мові біля оператора ВПЕРЕД обов’язково повинне стояти якесь число, яке показує на скільки кроків вперед треба пройти. Це число називається параметром. Наприклад, ВПЕРЕД 2. Якщо ми використаємо від’ємний параметр (ВПЕРЕД  — 2), то отримаємо нові можливості. Цю вдосконалену версію мови програмування можна назвати АТАКА 2.1

2.2. Компілятор.

Команди нашої мови програмування записні українськими словами. Це означає, що в Австралії чи Голландії користуватись ними буде складно. В програмування є традиція використовувати англійські символи та слова.

Існують, звичайно, мови програмування, які використовують символи і слова інших мов – російської, французької і т.д. Але комп’ютер «не розуміє» ні англійської, ні російської мов. Він розуміє лише сигнали, які  записані цифрами. Вручну зробити такий переклад дуже складно, тому цю справу доручають комп’теру. Для цього служать спеціальні програми, які називаються компіляторами.

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

2.3. Як вибрати мову програмування.

Як нам вже відомо, мова програмування складається з набору операторів, правил синтаксису та компілятора.

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

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

—            Basic

—            Pascal

—            C++

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

З допомогою системи можна не писати програми, а збирати їх з готових компонентів точно так, як з компонентів дитячого конструктора збираються різноманітші іграшки. Так, Basic реалізувався в систему програмування Visual Basic, мова Паскаль – в Delphi, а С++ реалізовано в декількох системах, наприклад, Borland C++ Builder та Microsoft Visual C.

2.4. Підпрограми. Процедури та функції.

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

Давайте повернемось до нашої гіпотетичної мови програмування АТАКА 2.1. В ній немає команди назад. Ми говорили, що можна використати від’ємний параметр. Але це не буде рух назад —  танк буде просто «задкувати».

Як зробити так, щоб танк розвернувся і поїхав в зворотньому напрямку?

Треба двічі повернутися ліворуч або праворуч, а потім рухатись вперед.

ВПРАВО                       ВЛІВО

ВПРАВО                       ВЛІВО

ВПЕРЕД  2                    ВПЕРЕД 2

Такий прийом називається емуляцією. Наша програма з трох інструкцій емулює дію інструкції, якої не вистачає в нашій мові. Цю маленьку підпрограму можна назвати процедурою розвороту.

 

Програмісти розрізняють два види підпрограм: процедури та функції. Цей поділ, звичайно, умовний, і не в кожній мові програмування відображений, але різницю між процедурами та функціями треба розуміти.

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

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

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

Продовжимо. Маючи процедуру, яку ми назвали НАЗАД, ми можемо написати програму, за якою танк під’їде до гармати, розвернеться і відбукусує її назад. Програма матиме такий вигляд (див. рис.)

Чи буде працювати така програма?

Ні. Тому, що ми знаємо про існування підпрограми НАЗАД, а комп’ютеру нічого про цю процедуру евідомо, він вперше бачить  таку команду.

Напростіший вихід з такої ситуації – дати комп’ютеру заздалегіть інформацію про те, НАЗАД – це наш власний «винахід».

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

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

SUB  НАЗАД (N)

ВПРАВО

ВПРАВО

ВПЕРЕД N

END SUB

Звідки ж програма дізнається чому дорівнює N? З основної програми. Якщо там буде записано НАЗАД (3), то програма візьме параметр 3 і підставить його в процедуру.

При виклику підпрограми ми вказуємо в ній те значення параметру, яке нам потрібно. Це значення називають фактичним значенням параметру. При опису процедури на початку програми ми не знали чому буде дорівнювати цей параметр, тому написали просто N. Такі значення параметрів називаються формальними.

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

2.5. Як пишуться програми?

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

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

На третьому етапі запускається програма, яка називається редактором зв’язків. Вона перевіряє, які стандартні підпрограми були використані, видобуває їх код  з бібліотек і вставляє його в об’єктний код, створений компілятором.

Лише пісял цього отримуємо готову програму, яку називають виконуваний код. В такому вигляді програму можна запустити і вона запрацює.

2.6. Об’єкти та їх властивості.

НЛО? Що таке об’єкт?

1)      Це дещо конкретне, ми можемо сказати де він починається, де закінчується.

2)      Характеризується певною внутрішньою будовою, про яку ми можнмо і не знати.

3)      Характеризується деякою поведінкою, за якою ми можемо спостерігати, а іноді і впливати на неї.

Наведіть приклади об’єктів (будильник, холодильник, пральна машина і т.д.)

Всі об’єкти володіють властивостями. Наприклад, візьмено комах і спробуємо оцінити їх так, щоб оцінка виражалась 1 байтом (від 0 до 255)

Властивість

Наша оцінка

Метелик.Укус

0

Муха.Укус

20

Комар.Укус

60

Бджола.Укус

255

Метелик.Забарвлення

255

Муха.Забарвлення

20

Комар.Забарвлення

0

Бджола.Забарвлення

60

 

 

А тепер спробуйте  здогадатись, про яку комаху йдеться зараз.

Комаха. Об’єкт. Політ = False

Комаха. Об’єкт. Звук = True

Комаха. Об’єкт. Колір = Green

Комаха. Об’єкт. Стрибок = 255

 

Значення False та True – це так звані логічні значення. В них може бути лише два стани: ТАК (Правда (True)) або НІ (Неправда (False)). Компілятори часто використовують числові значення 0 (False) та 1(True).

Який стосунок це все має до програмування? Сьогодні майже все, що ви бачите на екранах комп’ютера реалізовано як об’єкти. Кожне вікно, кнопка, меню – це об’єкт, який має свої властивості. Наприклад, командна кнопка у вікні має своє положення, розмір, колір, текст напису та ін. Ми можемо працювати з тими властивостями, які нам потрібні, а всі інші можна задати раз і назавжди. Отже, об’єкт, який використовується в програмі, може використовуватись і в іншій програмі. При цьому:

—          додавання об’єкту не порушує роботу інших об’єктів.

—          поведінка об’єкта не змінюється через наявність інших об’єктів.

Наприклад, програміст описує ігрову програму, в якій відбувається бій.

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

 

Для перевірки і зміни властивойстей об’єкта існують спеціальні методи. В об’єктно-орієнтованому програмування об’єкти об’єднуються з методами.

Тобто, дані і процедури для їх обробки називають об’єктами.  Змінюють ці дані шляхом налаштування чи зміни властивостей об’єкта.

 

3. Закріплення нового матеріалу.

Повторення основний положень:

  1. Програма – це набір команд, що приводить до розв’язання поставленої задачі
  2. Оператори — команди, які входять до мови програмування
  3. Синтаксис — правила використання операторів
  4. Компілятор — це програма, призначена для перекладу програми в машинні коди
  5. Ідея мови – набір операторів та правила синтаксису
  6. Реалізація мови – розробка компілятора
  7. Функція – це підпрограма, яку викликають, щоб виконати якісь розрахунки чи перевірки.
    Коли вона закінчує роботу, то повертає управління програмі, з якої викликалась і передає їй результати розрахунків.
  8. Процедура – це підпрограма, яку викликають, щоб виконати деякі дії, але від неї не вимагається повертати основній програмі певні значення.
  9. Фактичним називають значення параметру, яке вказується при виклику підпрограми в основній програмі. Наприклад, НАЗАД (5).

10.  Формальним називають значення параметру, яке використовується при описі підпрограми на початку основної програми. Наприклад, НАЗАД (N).

11.  Бібліотека – це сховище готових процедур та функцій.

12.  Початковий, об’єктний та виконуваний коди програми, редактор зв’язків.

 

 

4. Домашнє завдання.

Вивчити конспект.