Тема: складання та виконання алгоритмів з використанням величин логічного типу в навчальному середовищі програмування Free Pascal.
Мета: навчитися складати та виконувати алгоритми з використанням величин логічного типу в середовищі програмування Free Pascal.
Учень повинен вміти:
застосовувати отримані знання під час вирішення практичних завдань;
складати алгоритми опрацювання величин логічного типу;
cкладати, редагувати, налагоджувати та виконувати програми опрацювання величин логічного типу в інтегрованому середовищі програмування Free Pascal;
аналізувати результати виконання програм опрацювання величин логічного типу.
Обладнання: ПК із встановленим ОС й інтегрованим середовищем програмування Free Pascal.
Структура уроку
Хід уроку
1. Організаційний момент
Вітання з класом. Перевірка присутності і готовності учнів до уроку. Перевірка виконання домашнього завдання.
2. Актуалізація опорних знань
3. Вивчення нового матеріалу
Скласти алгоритми й програми розв'язання завдань, порівняти з демонстраційними розв'язаннями. У разі потреби завдання 3 вчитель може задати на самостійне опрацювання додому.
Завдання 1. Дано три цілих числа: A, B, C. Перевірити істинність висловлювання: «Число B розташоване між числами A і C».
Алгоритм
var a,b,c: longint; l: boolean; BEGIN write('Ведіть числа A, B та C '); readln(A,B,C); L:=(A<B) and (B<C) or (A>B) and (B>C); writeln('Число B знаходиться між числами A та C: ', L); END.
Завдання 2. Є 26 лампочок, прозначених малими літерами латиниці, що незалежно під'єднані до електричної мережі. У початковий момент усіх їх вимкнено. Вхідний файл містить послідовність малих літер латиниці, що задає послідовність перемикань вимикачів відповідних ламп. Визначити, скільки ламп буде увікнено після таких маніпуляцій і яку найбільшу кількість ламп буде увімкнено протягом цих маніпуляцій.
Алгоритм
Примітка. У поданій далі програмі пункти алгоритму 1 і 2 не відображено, бо булевим змінним на початку виконання програми у середовищі Free Pascal надають значень false, цілим — 0 як усталено. Частину пункту 3 реалізовано за допомогою процедури change.
Програма
var a,b,c,d,e,f,g,h,i,j,k,l,m,n,o, p,q,r,s,t,u,v,w,x,y,z: boolean; n_, {остаточна кількість увімкнених ламп} m_: byte; {найбільша кількість увімкнених ламп} ch: char; {зчитаний символ} fi: text; {вхідний або вихідний файл} procedure change(var a: boolean); begin a:=not a; if a then inc(n_) else dec(n_); if n_>m_ then m_:=n_ end; BEGIN assign(fi,'lamps.in'); reset (fi); while not eof(fi) do begin read(fi,ch); case ch of 'a': change(a); 'b': change(b); 'c': change(c); 'd': change(d); 'e': change(e); 'f': change(f); 'g': change(g); 'h': change(h); 'i': change(i); 'j': change(j); 'k': change(k); 'l': change(l); 'm': change(m); 'n': change(n); 'o': change(o); 'p': change(p); 'q': change(q); 'r': change(r); 's': change(s); 't': change(t); 'u': change(u); 'v': change(v); 'w': change(w); 'x': change(x); 'y': change(y); 'z': change(z); end; END; close (fi); assign (fi,'lamps.out'); rewrite(fi); writeln(fi,n_,' ',m_); close (fi); END.
Завдання 3. Вхідний (як завгодно великий) файл містить послідовність чисел зі значеннями у межах діапазону базового типу longint. Встановити тип впорядкованості послідовності: стала, зростає, спадає, не зростає, не спадає, не впорядкована.
Алгоритм
Надати булевим змінним lt, gt, leq, geq початкового значення true.
Примітка По завершенню виконання алгоритму справдження цих змінних означатиме, що послідовність відповідно спадає, зростає, не зростає, не спадає. Або те, що кожен член послідовності, починаючи з другого, відповідно менший, більший, не більший чи не менший від попереднього.
Прочитати (перший) член послідовності й надати змінній а його значення.
Повторювати до закінчення файлу або до одночасної хибності змінних leq і geq (тобто до з'ясування, що послідовність невпорядкована):
прочитати наступний член послідовності й надати змінній b його значення;
замінити значення:
Якщо справджується lt, тоді вивести 'Послідовність спадає', інакше
якщо справджується gt, тоді вивести 'Послідовність зростає', інакше
якщо справджуються leq і geq, тоді вивести 'Послідовність стала', інакше
якщо справджується leq, тоді вивести 'Послідовність не зростає', інакше
якщо справджується geq, тоді вивести 'Послідовність не спадає', інакше
вивести 'Послідовність не впорядкована'.
Програма
var lt, {Чи послідовність: спадає} gt, {зростає} leq, {не зростає} geq: boolean; {не спадає} a, {попередній член послідовності} b: longint;{поточний член послідовності} fi: text; {вхідний або вихідний файл} BEGIN lt :=true; gt :=true; leq:=true; geq:=true; assign(fi,'sequence.in'); reset (fi); read(fi,a); repeat read(fi,b); lt :=lt and (b< a); gt :=gt and (b> a); leq:=leq and (b<=a); geq:=geq and (b>=a); a:=b until (not leq) and (not geq) or seekeof(fi); close (fi); assign (fi,'sequence.out'); rewrite(fi); write(fi,'Послідовність '); if lt then writeln (fi,'спадає') else if gt then writeln (fi,'зростає') else if leq and geq then writeln (fi,'стала') else if leq then writeln (fi,'не зростає') else if geq then writeln (fi,'не спадає') else writeln (fi,'не впорядкована'); close (fi); END.
4. Інструктаж з ТБ
5. Закріплення вивченого матеріалу
Завантажити інтегроване середовище програмування Free Pascal. Для кожного із завдань 1, 2 і 3 виконати вказівку меню File / New. Набравши текст прогами, компілювати (Alt + F9) й виправляти доти, поки результат компіляції не стане успішним. Запускати на виконання програму (Ctrl + F9) і вводити всі змістовно різні вхідні дані, для яких шлях галуженнями алгоритму різний. У разі помилкових результатів:
створити вікно обчислюваних виразів за допомого вказівки меню Debug / Watch;
задати у ньому подання величин змінних програми, натиснувши клавішу Insert та у вікні діалогу Edit Watch ввести назву змінної та натиснути кнопку OK;
розташувати обидва вікна таким чином, щоб їх було повністю одночасно видно. Наприклад, у лівій і правій частинах програмного вікна;
програму виконувати покроково (F8) з метою знайти і виправити логічну помилку.
Про успішне виконання кожного завдання повідомляти вчителя підняттям руки.
6. Підбиття підсумків уроку
Виставлення оцінок.
7. Домашнє завдання
Завдання 4. Вхідний файл містить послідовність чисел зі значеннями у межах діапазону базового типу int64. Встановити, чи є послідовність арифметичною прогресією, тобто чи різниця двох послідовних членів є сталою.
Текст упорядкував Мельник Володимир Михайлович, вчитель спеціалізованої школи І–ІІІ ступенів № 320 з поглибленим вивченням української мови Деснянського району міста Києва, під час виконання випускної роботи на курсах підвищення кваліфікації з 17.03.2014 по 04.04.2014.