Тема: cтворення програми з розгалуженням і повторенням з використанням змінних у середовищі Lazarus.
Мета: навчитися:
- складати програми з розгалуженням і повторенням у cередовищі Lazarus;
- описувати та використовувати змінні для організації розгалужень і циклів;
- програмно змінювати значення властивостей об’єктів;
- перевіряти результат виконання програми на відповідність умові задачі
По завершенню вивчення учень:
- розрізняє сталі та змінні;
-
yміє:
- використовувати сталі та змінні для розв’язування задач;
- надавати значення змінним та змінювати їх;
- використовувати умови зі змінними;
- створювати та застосовувати інформаційні моделі різних типів.
Структура уроку
- Організаційний момент.
- Актуалізація опорних знань.
- Інструктаж з ТБ.
- Вироблення практичних навичок.
- Підбиття підсумків уроку.
- Домашнє завдання.
1. Організаційний момент
Вітання з класом. Перевірка присутності і готовності учнів до уроку. Перевірка виконання домашнього завдання.
Мотивація навчання: сьогодні ми навчимося складати програми з розгалуженням і повторенням у середовищі Lazarus. Cклавши програму один раз, можна виконати її для різних значень вхідних даних. Це може істотно зекономити час виконання завдань для багатьох варіантів вхідних даних. Сподіваюся, ви навчитеся краще логічно мислити і використовувати програмування для ефективного розв'язання і навчальних, і практичних задач.
2. Актуалізація опорних знань
Описати поняття, назви яких подано жирним написанням шрифту.
Величина — властивість деякого об'єкта, виражена елементом деякої (зазвичай, упорядкованої) множини.
Прикладами величин є, наприклад, ширина і висота класної дошки, колір дошки, напис на кнопці, її кнопки роззташування на формі та інше. У математиці — довжина і ширина прямокутника, його площа, градусна міра кута тощо. У фізиці — час, швикість, пройдений шлях, густина речовини тощо.
Cтала (константа) — величина, значення якої не змінюється..
Прикладом математичної сталої є, наприклад, число Піфагора π — відношення довжини кола до його діаметра. Прикладом фізичної сталої є швидкість світла у порожнечі для різних інерційних систем відліку.
Змінна — величина, значення якої може змінюватися..
Прикладами змінної є: температура повітря, оцінки учнів з контрольної роботи, вага товару.
Властивості величини у програмуванні:
- назва (ідентифікатор) — послідовність літер латиниці, цифр і нижнього підкреслювання «_», на початку — обов'язково літера (наприклад: a1,a_1);
- тип — визначає обсяг відведеної пам'яті, можливі дії та множину допустимих значень.
Деякі стандартні типи величин мови Object Pascal:
-
цілі:
- ShortInt (–128..127);
- Integer (–32768..32767);
- LongInt (–2147483648..2147483647);
- Byte (0..255);
- Word (0..65535);
-
дійсні:
- Single (1.5E–45..3.4E38);
- Real (2.9 E–39..1.7E38);
- Double (5.0E–324..1.7E308);
- Comp (–2E+63..(+2E+63 –1));
- Extended (3.4E–4932 .. 1.1E493);
-
логічні (булеві):
- Boolean, ByteBool;
- Bool;
- WordBool;
- LongBool;
- символьні: Char;
- рядкові: String.
Логічний тип описує величину, що може набувати лише одне з двох таких значень: false (хибність) або true (істина).
Символьний тип Char передбачає використання символів всієї кодової таблиці комп'ютера ASCII (літер, цифр, спеціальних символів). Цей тип є впорядкованим і порядковим (порівнюють коди символів). Значення записують як символ, взятий у апострофи (наприклад, 'x') або дієз + код символу (наприклад, #222).
Рядковий тип String задає описує послідовність величин типу Char. Цей тип є впорядкованим (порівнюють коди символів спочатку перших, при їхньому збігу — наступних і т.д.). Зазвичай значення записують як послідовність символів, взятих у апострофи. Наприклад, 'abc'.
Усі змінні потрібно оголосити (описати) в розділі опису змінних, який розпочинають службовим словом Var. Усі сталі потрібно оголосити (описати) в розділі опису сталих, який розпочинають службовим словом Const. Наприклад, таким чином:
Var n:integer; k1,k2: real; z: char; t: string;
Const n=12; g=9.8; z='?'; t='Чемпіон!'; При описі неструктурованих сталих (як і в поданому вище прикладі) тип величини зазвичай не вказують. Інакше доведеться писати довше:
Const n: byte =12; g: real =9.8; z:char ='?'; t: string ='Чемпіон!'; 3 етапи роботи зі змінними (величинами):
- Надання значень (зчитування вхідних даних або оператор надання значень);
- Опрацювання даних;
- Виведення вихідних даних.
Всі мови програмування мають такі спеціальні вказівки (оператори) для розгалуження залежно від справдження певної умови. Їх називають умовні уператори. У мові Object Pascal є такі види умовного оператора: повний і неповний.
Повний оператор (розгалуження) має такий вигляд:
if умова then вказівка1 else вказівка2 При справдженні умови буде виконано вказівку1, інакше — вказівку2. Тут під вказівками розуміємо як окрему вказівку, так і послідовність вказівок. Тому у блок-схемі повної форми розгалуження замість слова «вказівка» вжито слово «послідовність».
if умова then begin послідовність вказівок 1 end else begin послідовність вказівок 2 end;
Якщо у точці розгалуження (програми) має бути більше двох варіантів вибору, додаткові оператори потрібно вкласти в середину гілки «інакше». Такі додаткові оператори називають вкладеними умовними операторами.
if умова then вказівка; У випадку виконання послідовності вказівок в разі істиності умови цей оператор матиме такий вигляд:</>
if умова then begin послідовність вказівок end;Для ілюстрації виконання повної форми вказівки розгалуження розглянемо фрагмент проекту, у якому пропонують перевірити правильність введення 4-цифрового паролю, значення якого задають у розділі опису сталих. Наприклад, таким чином:
const parol_1 = 1243;
На збіг перевіряють пароль parol_2, який вводять у поле редагування Edit1.
parol_2:=StrToInt(Edit1.Text); if parol_2 = parol_1 then Label3.Caption:=' Пароль правильний!' else Label3.Caption:=' Пароль неправильний!');Для ілюстрації виконання неповної форми вказівки розгалуження розглянемо фрагмент проекту, у якому подвоюється ціле число а у випадку, якщо воно більше за число 5.
If а >5 then begin а := а*2; Label3.Caption:='a = ' + IntToStr(a); end;Для ілюстрації виконання вказівки розгалуження з вкладеними додатковими операторами розгалуження розглянемо фрагмент проекту, у якому менше з двох різних цілих чисел треба замінити їхньою різницею, більше — їхнім подвоєним добутком та вивести їхнє відношення і (нові) їхні значення. У разі збігу значень чисел ніяких операцій з числами не виконувати, а лише вивести повідомлення про їхню рівність.
if a < b then begin Label3.Caption:=IntToStr(a)+' < '+ IntToStr(b); a := a - b; b := 2*a*b; Label4.Caption:='a = '+IntToStr(a)+' b = '+IntToStr(b) end else if b < a then begin Label3.Caption:=IntToStr(b)+' < '+ IntToStr(a); b := a - b; a := 2*a*b; Label4.Caption:='a = '+IntToStr(a)+' b = '+IntToStr(b) end else Label4.Caption:='Значення чисел збігаються і дорівнюють '+IntToStr(a);При складанні програм часто виникає потреба повторити виконання певної вказівки або послідовності вказівок кілька разів.
Цикл (вказівка повторення) — різновид керівної конструкції мови програмування, призначеної для організації багаторазового виконання послідовності вказівок, яку називають тілом циклу.
Види циклів мови програмування Object Pascal:
- з лічильником;
- з передумовою;
- з післяумовою.
Зазвичай цикл з лічильником використовують, якщо кількість виконуваних повторень відома заздалегідь хоча б у момент початку виконання циклу. Його блок-схема (у випадку зростання значень лічильника циклу) має такий вигляд.
for назва змінної := вираз1 to вираз2 do begin тіло циклу end;або
for назва змінної := вираз1 downto вираз2 do begin тіло циклу end;Перший рядок у поданих записах називають рядком заголовка вказівки циклу з лічильником. Змінну в рядку заголовку вказівки циклу з лічильником називають лічильником циклу. На блок-схемі лічильник циклу має назву і. І лічильник циклу, і вираз1, і вираз2 мають набувати лише цілих значень.
Першим подано вигляд для зростання лічильника, який застосовують, якщо значення виразу1 не перевищує значення виразу2. Наступним подано вигляд для спадання лічильника, який застосовують, якщо значення виразу1 не менше від значення виразу2.
Якщо тіло циклу складається лише з однієї вказівки, операторні дужки begin та end можна на використовувати.
Для ілюстрації виконання команди циклу з лічильником розглянемо фрагмент проекту, у якому обчислюється сума перших ста натуральних чисел.
Var i, s: integer; begin s:=0; for i:=1 to 100 do s:=s+i; Label2.Caption:=IntToStr(s); end;Цикл з передумовою — цикл, тіло якого виконують при справдженні умови, вказаної перед його початком.
Справдження умови перевіряють кожного разу перед виконанням тіла циклу. Якщо ця умова не справджується при звертанні до циклу, то тіло циклу не буде виконано жодного разу.
While умова do begin тіло циклу end;Для ілюстрації виконання циклу з передумовою розглянемо фрагмент проекту, у якому обчислюють суму перших ста натуральних чисел.
Var i,s: integer; begin s:=0; i:=1; while i<=100 do begin s:=s+i; i:=i+1; end; Label2.Caption:=IntToStr(s); end;Цикл з післяумовою — цикл, тіло якого виконують до справдження певної умови.
Справдження умови перевіряють кожного разу після виконання тіла циклу, тому тіло циклу з післяумовою буде виконано щонайменше один раз.
Repeat тіло циклу until умова;Для ілюстрації виконання вказівки циклу з післяумовою розглянемо фрагмент проекту, у якому обчислюють суму перших ста натуральних чисел.
Var i,s: integer; begin s:=0; i:=1; repeat s:=s+i; i:=i+1; until i=101; Label2.Caption:=IntToStr(s); end;3. Інструктаж з ТБ
4. Вироблення практичних навичок
Задача 1. Обчислити значення виразу z = (а + 2b)/(а – 3b), де а, Ь — дійсні числа.
Знаменник дробу може дорівнювати нулю. Тому алгоритм розв'язання має містити розгалуження, в якому будуть враховані два можливих випадки:
- а – 3b = 0;
- а – 3b ≠ 0.
- Завантажити середовище Lazarus і отримати на екрані монітора відображення кількох вікон: Lazarus IDE, Редактор тексту, Інспектор об'єктів, Повідомлення, Form1.
- Скористатися вказівкою меню Файл / Новий ...
- У вікні Інспектора об'єктів Властивості надати такі значення властивостям форми:
- Сaption — Обчислення значення виразу z = (а + 2b) / (а – 3b), де а і b — дійсні числа;
- Color — clSkyBlue;
- Height — 400;
- Left — 300;
- Top — 220;
- Width — 500.
- Створити окрему теку для проекту з назвою Ваше прізвище_Вираз у теці, вказаній учителем. Для збереження всіх файлів:
- або використати комбінацію клавіш Shift + Ctrl + S;
- або натиснути кнопку Зберегти всі на Панелі інструментів;
- або скористатися вказівкою меню Файл / Зберегти всі.
- Використовуючи Панель компонентів, розмістити на формі об’єкти: 2 кнопки, 2 поля і 4 написи. Для цього зробити таке:
- натиснути віповідну кнопку на вкладенні Standard вікна Lazarus IDE:
tbutton — для створення кнопки;
tedit — для створення поля;
tlabel — для створення напису. - розташувати вказівник миші на формі у вершині прямокутника, у якому буде розташовано об'єкт;
- натиснути ліву кнопку миші і, не відпускаючи кнопки миші, змістити вказівник миші по діагоналі прямокутника (розташування об'єкта);
- відпустити кнопку миші і пересвідчитися, що об'єкт розташовано у потрібному місці.
- натиснути віповідну кнопку на вкладенні Standard вікна Lazarus IDE:
- Використовуючи Інспектор об'єктів, встановити властивості об'єктів таким чином (не вказані властивості — довільні):
-
для напису Label1 Caption (текст напису):
"Для обчислення значення виразу z = (а + 2b)/(а – 3b) введіть значення:"; - для напису Label2 Caption: "а =";
- для напису Label3 Caption: "b =";
- для напису Label4 Caption порожня;
- для полів edit1 та edit2 Text порожня;
- для кнопки button1 Caption: Обчислити;
- для кнопки button2 Caption: "Закрити",
-
для напису Label1 Caption (текст напису):
- На формі виділити кнопку з написом Обчислити.
- У вікні Інспектор об'єктів перейти на вкладення Події, вибрати подію OnClick і двічі клацнути у полі OnClick.
- У вікні Редактор тексту ввести такий код процедури.
procedure TForm1.Button1Click(Sender: TObject); var a,b,x,y,z:real; begin a:=StrToFloat(Edit1.Text); b:=StrToFloat(Edit2.Text); x:=a-3*b; y:=a+2*b; if x<>0 then begin z:=y/x; label4.Caption:='z='+FloatToStr(z); end else label4.Caption:='Значення виразу не визначене.'; end;
У цій процедурі використано такі змінні:
- a, b — вхідні дані, які вводять у поля Edit1 та Edit2;
- х — знаменник виразу;
- y — чисельник виразу;
- z — значення виразу.
- StrToFloat — перетворення рядка тексту в десяткове число;
- FloatToStr — перетворення десяткового числа у текстовий рядок.
- Пересвідчитися, що у вікні Редактор тексту буде таке виділення
зарезервовані слова — напівжирним шрифтом;
procedure TForm1.Button2Click(Sender: TObject); begin close; end;Зберегти зміни в проекті:
- або використати комбінацію клавіш Shift + Ctrl + S;
- або натиснути кнопку Зберегти всі на Панелі інструментів;
- або скористатися вказівкою меню Файл / Зберегти всі.
Таким чином проект для обчислення значення виразу створено і перевірено. Для кращого засвоєння матеріалу можна переглянути навчальне відео
Задача 2. Створити проект для розв'язання відомої задачі-головоломки «Кролики і числа», описаної у «Книзі Абака» в 1202 році італійським математиком Леонардо Фібоначчі. На початку січня тобі подарували пару новонароджених кроликів. Відомо, що кожна пара кроликів кожні 2 місяці народжує нову пару кроликів. Скільки пар кроликів у тебе буде у грудні?
Розв'язання. Позначимо через kj кількість кроликів на початку j-го місяця. Маємо:
При створенні проекту використаємо цикл з лічильником та розгалуження (для перевірки коректності введеного номера місяця). Перед створенням проекту створити окрему теку для проекту з назвою Ваше прізвище_Кролики у теці, вказаній учителем.
Вказівки до складання програми для розв'язання задачі про кроликів у середовищі програмування Lazarus.
- У середовищі Lazarus, встановити властивості форми й розташувати на ній об'єкти згідно з поданим зразком (як це робити див. у вказівках до попередньої задачі).
Для заповнення властивості Label2.Caption (текст умови завдання) скористайтесь кнопкою Редактор рядків.
У вікні Інспектор об'єктів на вкладенні Властивості для об'єкта Image1 встановити значення властивості Strech як True, для того щоб зображення заповнило повністю рамку, якою позначене місце для зображення. У рядку властивості Picture треба скористатися кнопкою для виклику вікна Діалог завантаження зображення - Image...
- натиснути кнопку Завантажити;
- вибрати у вікні діалогу потрібне зображення;
- натиснути кнопка Відкрити;
- натиснути кнопку Гаразд.
procedure TForm1.Button1Click(Sender: TObject); var n,k,k1,k2,i:integer; begin n:=StrToInt(Edit1.Text); if n>0 then begin k1:=1; k2:=1; k:=0; For i:=2 to n do begin k2:=k1+k; k:=k1; k1:=k2; end; Label3.Caption:='Наприкінці цього місяця в тебе буде '+IntToStr(k2)+ ' пар кроликів.'; end else Label3.Caption:='Введено некоректні дані!' end;
- або використати комбінацію клавіш Shift + Ctrl + S;
- або натиснути кнопку Зберегти всі на Панелі інструментів;
- або скористатися вказівкою меню Файл / Зберегти всі.
6. Підбиття підсумків уроку
Виставлення оцінок.
7. Домашнє завдання
Доробити проекти у разі потреби. Якщо необхідно, порівняти з демонстраційним розв'язанням. Створити 2 модифікації проекту для задачі 2, передбачивши використання циклів з передумовою та з післяумовою.
Інформацію взято з kievoit.ippo.kubg.edu.ua
Немає коментарів:
Дописати коментар