Розробка уроку

Тема: мова програмування Object Pascal, cередовище програмування Lazarus.

Мета:

По завершенню вивчення учень: Обладнання: комп’ютери зі встановленими ОС та середовищем візуаль­ного програмування Lazarus, (дана) інструкція.

Структура уроку

  1. Організаційний момент.
  2. Актуалізація опорних знань.
  3. Вивчення нового матеріалу.
  4. Закріплення вивченого матеріалу.
  5. Підведення підсумків уроку.
  6. Домашнє завдання.

Хід уроку

1. Організаційний момент
Привітання з учнями. Перевірка присутності і готовності учнів до уроку. Перевірка виконання домашнього завдання. Оголошення теми й мети уроку.

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

Дати означення (описати) поняття, виділені жирним шрифтом. Порівняти з поданим.

Алгоритмце запис скінченої послідовності вказівок, виконання яких призводить до розв'язання певної задачі.

Вказівка (алгоритму) — це спонукальне речення, що вказує, яку дію має виконати виконавець алгоритму.

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

Система вказівок виконавцяце множина (сукупність) всіх вказівок, які може виконувати даний виконавець.

Середовище виконання алгоритму — об'єкти, з якими працює виконавець у процесі виконання алгоритму.

3. Вивчення нового матеріалу

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

Перші мови програмування з'явилися задовго до появи перших комп'ютерів. Ще в 19-му столітті існували «програмовані» ткацькі верстати та піаніно-програвачі. На початку 20-го століття починають викорис­товувати перфокарти та механічне опрацювання даних.

Першою широковживаною компільованою мовою став розроблений групою Джона Бекуса Фортран, анонсований у 1954 році і випущений у 1957 для IBM 704.

У 1958 році у Масачусетському Технологічному Інституті розробили LISP — мову, яка понад чверть століття домінувала у програмуванні задач штучного інтелекту.

У 1964 році було створено спрощену мову BASIC — Beginners All-purpose Symbolic Instruction Code — для навчання програмуванню студентів, які переважно спеціалізувалися у вільних мистецтвах, а не технічних науках.

У 1965 році було розроблено мову PL/I, яка поєднувала можливості Фортран, ALGOL і COBOL, і виявилась заскладною, хоча і була у широкому вжитку у 1970-их у наукових і бізнес задачах.

У 1971 році Вірт опублікував опис мови Pascal, яка у 70-их стала загальновживаною для навчання студентів.

У 1972 році Деніс Річі розробив у Bell Labs мову C. Тоді ж у Марселі створено інтерпретатор мови Пролог — першої і найвідомішої мови логічного програмування.

У 1984 році з метою об'єднання різних діалектів мови LISP створено Common LISP. Випущено MATLAB.

У 1985 році Б'ярн Страуструп опублікував реалізацію мови C++.

У 1986 році Borland і Apple незалежно створили об'єктно-орієнтоване розширення мови Pascal — Object Pascal.

У 1991 році створено Visual Basic і опубліковано Python.

У 1995 році Sun Microsystems випустила Java, Netscape— JavaScript, тоді ж створено PHP і Ruby.

У 2001 році створено C#.


В основі середовища програмування Lazarus лежить мова програмування Object Pascal, яка бере свій початок від класичної мови Pascal. Одне з поширених середовищ програмування Delphi теж ґрунтується на цій мові. Мова програмування Pascal була розроблена в 1971 році професором Інституту інформатики швейцарської вищої політехнічної школи Ніклаусом Віртом і названа на честь французького математика, фізика й філософа Блеза Паскаля (1623–1662).

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

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

Офіційний сайт містить посилання на останні версії програмного забезпечення. Репозиторії Linux Mint зазвичай їх не містять. При ОС Linux Mint для встановлення останньої версії достатньо видалити наявні версії Free Pascal i Lazarus та діяти згідно з певними рекомендаціями з поправкою на номер версії та розташування. Попередньо потрібно встановити з репозиторіїв kdesvn — програмний засіб для завантаження файлів.

Після завантаження середовища Lazarus буде відкрито такі вікна:

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

Після першого завантаження середовища Lazarus буде автоматично створено проект з назвою project1. Інакше, якщо середовище запускають не у перше, буде відкрито останній проект, над яким працювали. Останнє можна змінити в налаштуваннях.

Новий проект можна створити за допомогою вказівки меню Проект / Новий проект / Застосунок. Або Проект / Закрити проект,

після чого у вікні Майстер проектів вибрати Новий проект / Застосунок.

У вікні Редактор текстів буде відображено текст модуля

— частини програми, що має таку структуру:

Заголовок відкривають зарезервованим словом unit, після якого пишуть назву модуля і крапку з комою.

Розділ інтерфейсних оголошень відкривають зарезервованим словом interface. У цьому розділі описують програмні складові (типи, процедури, класи і функції), які можуть використовувати інші модулі.

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

Розділ ініціалізації не обов’язково наповнювати. Він необхідний для виконання коду при запуску.

Пояснимо детальніше код, відображений у вікні редактора коду.

unit Unit1;
Заголовок починається з ключового слова unit, після якого пишуть назву модуля (у даному випадку Unit1). Як усталено вона збігається з назвою файлу, в якому буде збережено модуль. Для першого модуля назва Unit1, для другого — Unit2 і т.д.

{$mode objfpc}{$H+}
Директиви компілятора керують компіляцією програми. Запис директиви у фігурних дужках починають символом $:

Interface
Розділ інтерфейсних оголошень розпочинають зарезервованим словом interface. У цьому розділі описують програмні складові (типи, процедури, класи і функції), які можуть використовувати інші модулі.

uses Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs;
Перелік бібліотечних модулів, які підключають до проекту.

type TForm1 = class(TForm)
Оголошення класу форми з назвою TForm1. В цей клас будуть включені об’єкти, розташовані на формі.

private {private declarations}
Закритий розділ класу. Все, оголошене в розділі private, буде досяжним лише у межах цього модуля.

public {public declarations}
Відкритий розділ класу. Все, оголошене в розділі public, буде досяжним і для інших класів і модулів.

end;
Термінатор.

var Form1: TForm1;
Розділ опису змінних.

implementation
Секція реалізацій.

{$R *.lfm}
Директива компілятора. Означає підключення файлу ресурсу форми.

end.
Термінатор модуля чи програми (слово end з крапкою).

Збереження проекту означає запис або перезапис таких файлів:

Кожний проект бажано зберігати в окрему теку. При збереженні буде запропоновано дати (змінити) назви файлів Project1.lpi і Unit1.pas. Інші буде збережено автоматично.

Структура програми мовою Pascal:

Тут назва програми — послідовність символів латиниці, цифр і знака підкреслювання, що не починається з цифри. Змістовна програма має містити опис змінних. Наприклад, цілого типу integer чи дійсного типу real.

Створення програми з консолі в середовищі Lazarus

  1. У середовищі Lazarus закрити поточний проект, використавши вказівку меню Проект / Закрити проект.

  2. У вікні Майстер проектів вибрати Новий проект / Проста програма.

  3. Отримати вікно редактора тексту з такими трьома рядками коду програми:

    program Project1;
    begin
    end.

Тут перший рядок містить заголовок програми. Тіло програми записують між словами begin і end.

Розглянемо програму для введення з клавіатури двох цілих чисел та виведення на екран їхньої суми:

program sum
var a,b,c: integer; 
begin 
  readln(a,b);
  writeln(a+b);
  readln; {затримка екрану користувача}
end.

Після написання програми і збереження її, використавши вказівку меню Виконання / Компілювати

або натиснувши клавіші Ctrl + F9, перевіримо програму на наявність помилок. Запустимо програму на виконання, використавши вказівку меню Виконання / Виконати або натискаємо клавішу F9. Отримаємо таке вікно.

Після введення значень двох чисел отримаємо результат.

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

program sum
var a,b,c: integer; 
begin 
  writeln('Введіть два цілих числа')
  readln(a,b);
  writeln('сума=' a+b);
  readln;
end.

При спробі вивести кирилицю (наприклад, якщо ви працюєте під ОС Windows), можете отримати таке вікно:

Для виправлення цієї помилки виведення необхідно змінити кодування. Для цього в редакторі коду потрібно натиснути праву кнопку миші і в контекстному меню вибрати: Параметри файла / Кодування / СР866

— виведення кирилиці без підтримки літер букв і, ї, є. Замість української «і» можна використати літеру латиниці «і». Після заміни кодування потрібно у вікні, що відкриється, потрібно вибрати Змінити файл. Тепер у результаті виконання програми отримаємо таке.

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

  1. Що таке мова програмування?
  2. Назвіть мови програмування.
  3. З яких частин складається програма мовою Pascal?
  4. Що таке візуальне програмування?
  5. Які вікна надає для роботи середовище Lazarus?
  6. Як cтворити програму з консолі в Lazarus?

5. Підбиття підсумків уроку
Виставлення оцінок.

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

Ознайомитися з наступним матеріалом, щоб виробити уявлення про можливості мови програмування. У разі потреби використати довідникову літературу або ресурси Інтернету.


Матеріал для самостійного опрацювання

Абетка мови Pascal (Паскаль):

Примітка. Компілятор Pascal не враховує регістр літер.

За допомогою цих символів записують таке.

Операції:
– — віднімання;
+ — додавання;
* — множення;
/ — ділення (з дійсним результатом).

Відношення:
< — менше;
> — більше;
<= — не більше;
>= — не менше;
= — дорівнює;
<> — не дорівнює.

Елементи синтаксису —
використання розділових знаків для відокремлення чи вказання:

; — вказівок;
, — елементів списків;
. — цілої частини числа від дробової;
.. — меж неперервного діапазону;
' ' — символів або рядків тексту;
( ) — виразів і списків;
[ ] — індексу чи діапазону індексів масиву;
(* *) або { } — коментарів;
: — міток;
$ — шістнадцяткового коду;
^ — символ керування.

Зарезервовані слова, зміст яких фіксовано мовою і які неможна використовувати як назви сталих, змінних, процедур, функцій чи міток:
and, asm, array, begin, case, const, constructor, destructor, div, do, downto, else, end, exports, file, for, function, goto, if, implementation, in, inherited, inline, interface, label, library, mod, nil, not, object, of, or, packed, procedure, program, record, repeat, set, shl, shr, string, then, to, type, unit, until, uses, var, while, with, xor, absolute, assembler, export, external, far, forward, index, interrupt, near, private, public, resident, virtual.

Використання імен псевдомасивів Port, PortW, Mem, MemW, MemL не викликає помилки, але унеможливлює їх подальше застосування.


В описі мови традиційно використовують такі умовні позначення:
< > — обов'язковий параметр;
[ ] — не обов'язковий параметр.

Описова частина містить опис всього, що буде надалі використано у програмі:

uses <назва1>,<назва2> ...; — приєднання бібліотек та модулів;

label <назва1>,<назва2> ...;— оголошення (перелік) міток;

type
<назва1>=<опис1 через наявні типи>;
<назва2>=<опис2 через наявні типи>
...; — опис типів даних;

const
<назва1>[:тип]=<значення1>;
<назва2>[:тип]=<значення2>
...; — оголошення сталих (величин), значення яких не буде змінено протягом виконання програми. При спробі змінити сталу буде вказано на помилку на етапі компіляції;

var <назва1>, <назва2>... :<тип> — оголошення змінних;

procedure <назва>
[параметри];
[опис локальних змінних]
[вказівки]
— оголошення процедури;

function <назва>
[параметри] : <тип>
[опис локальних змінних]
[вказівки]
— оголошення функцій користувача;

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

begin <вказівка1>; <вказівка2>... end.

Free Pascal — вільно поширюване середовище програ­мування, яке використовують при проведенні Міжнародної та Всеукраїнської учнівських олімпіад з інформатики. Ядром середовища є мова Pascal. Перший компілятор цієї мови створено Ніклаусом Віртом у 1970-му у Федеральній вищій технічній школі Цюріха (німецькою Eidgenössische Technische Hochschule Zürich).

Поняття величини є одним з найважливіших понять математики та фізики. Більшість з них є числовими. У програмуванні користуються таким визначенням.

Величинаодиниця даних, якими оперує програма. Вона має такі властивості:

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

Оператор надання значення має такий вигляд:

<назва змінної>:=<вираз>

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

У мові Pascal передбачено використання таких простих типів змінних.

Цілі числові типи

Назва
типу
Діапазон
зміни
Кількість
відведених
байтів
byte0..2551
word0..655352
shortint– 128..1271
integer– 32768..327672
longint– 2147483648..21474836474
int64– 9 223 372 036 854 775 808
..9 223 372 036 854 775 807
8

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

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

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

Дійсні числові типи

Назва
типу
Діапазон
зміни
Число
значущих
цифр
Кількість
відведених
байтів
Real2.9·10–39..1.7·103811–126
Single1.5·10–45..3.4·10387–84
Double5.0·10–324..1.7·1030815–168
Extended3.4·10–4932..1.1·10493219–2010
Comp– 9 223 372 036 854 775 808
..9 223 372 036 854 775 807
19 8

Дійсні типи є впорядкованими, але не є порядковими. До дійсних типів даних застосовують операції порівняння, додавання, віднімання, множення, ділення (/). На них означені такі фінкції (перелік далеко неповний):

Тут синім кольором подано назви математичних функцій, які вивчають на уроках математики у старших класах і тут подано лише для відносної повноти опису. Зауважимо лише, що ab обчислюють так: exp(b*ln(a)).

Символьний тип char передбачає використання символів всієї кодової таблиці комп'ютера ASCII (літер, цифр, спеціальних символів). Цей тип є впорядкованим і порядковим (порівнюють коди символів). Символьну сталу записують як символ, взятий в апострофи. Наприклад, '$'.

Логічний тип boolean описує величину, що може бути лише хибною (false) або істиною (true), але на збереження якого відводять 1 байт.

Такі величини отримують, наприклад, у результаті обчислення логічних виразів з операціями порівняння (відношення). Для даних логічного типу визначено такі операції:

Значення
операндів
(аргументів)
Результат операції
XYnot XX and YX or YX xor X
falsefalsetruefalsefalsefalse
falsetruetruefalsetruetrue
truefalsefalsefalsetruetrue
truetruefalsetruetruefalse

Подамо приклад програми порівняння одного з трьох введених цілих чисел з сумою решти

program example3;
var  a, b, c: integer;
    la,lb,lc: boolean;
begin
  write('Введіть 3 цілих числа через пропуск ');
  readln(a,b,c);
  la:=a>b+c;
  lb:=b>c+a;
  lc:=c>a+b;
  writeln('a>b+c b>c+a c>a+b');
  writeln(la:5,lb:6,lc:6);
end.

В останній вказівці після двокрапки вказано кількість позицій (символів) для виведення (останню заповнено). Результат роботи при введенні 3 4 5 буде таким.

Введіть 3 цілих числа через пропуск 3 4 5
a>b+c b>c+a c>a+b
False False False

Тип лінійного (одновимірного) масиву, що відповідає послідовності елементів:

array[<найменше значення індексу>..<найбільше значення індексу>] of <тип>;

Тип двовимірного масиву, що відповідає прямокутній таблиці елементів:

array[<найменше значення індексу1>..<найбільше значення індексу1>;
      <найменше значення індексу2>..<найбільше значення індексу2>] of <тип>;

Тип множина

set of <тип>

Тут <тип> передбачає наявність лише 256 різних значень. Наприклад, char, byte чи shortint.

Дії з множинами

Тип запис — сукупність полів

record
<назва поля1>: <тип поля1>;
<назва поля2>: <тип поля2>; …
end;

Щоб отримати доступ до значення поля, потрібно у тексті програми вказати назву змінної-запису і через крапку вказати назву поля:

<назва змінної (сталої)>.<назва поля>

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

Типи файлів

Надалі ми обмежимося роботою з лише з текстовими файлами.

Робота з файлами

Тут і в наступних описах замість f можна записати будь-яку іншу назву файлу.

Оператори введення-виведення

У разі відсутності назви файлової змінної f (і коми) операцію введення / виведення буде здійснено зі стандартним пристроєм Input / Output. Як усталено — з клавіатурою / екраном.

Розгалуження
if <умова> then <вказівка> else <вказівка>
— повна форма умовного оператора.

if <умова> then <вказівка>
— неповна форма умовного оператора.

goto <мітка> — перехід до мітки.

case <вираз> of
 <значення1>: <дія1>;
 <значення2>: <дія2>; …
 else <дія>
end

— виконання дії залежно від значення виразу. Замість значень можна записувати діапазон у такому вигляді:
<найменше значення>..<найбільше значення>.

begin [<вказівки>] end — об'єднання кількох вказівок в одну.

Цикли

for j:=1     to n do <вказівка>
for j:=n downto 1 do <вказівка>

— цикли з відомим діапазоном зміни індекса. У першому випадку змінна цілого типу j буде зростати від 1 до n, у другому — спадати від n до 1. Замість меж зміни (1 й n) можна записати довільні вирази, що набувають цілих значень, замість j — довільну допустиму назву змінної цілого типу.

while <умова> do <вказівка>
— з попередньою перевіркою умови.

repeat <вказівки> until <умов>>
— до справдження умови.

break — вихід з циклу.

halt [код виходу] — припинення виконання програми.

Тип рядок (тексту)
string — тип рядка до 255 символів включно;
string[1..n] — тип рядка до n символів включно.

Функції рядків

Процедури дій з рядками Динамічний розподіл пам'яті

Текст упорядкував Мацьоха Олександр Михайлович, учитель спеціалізованої школи № 269 з поглибленим вивченням французької мови Голосіївського району міста Києва, під час виконання випускної роботи на курсах підвищення кваліфікації з 28.11.2016 по 2.12.2016.