MІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
КОЛЕДЖІНФОРМАЦІЙНИХ СИТЕМ І ТЕХНОЛОГІЙКНЕУ
ЗАТВЕРДЖУЮЗаступник директора з навчальної роботи
___________ЗубченкоН.І.
“____”_________ 200 р.
МЕТОДИЧНІРЕКОМЕНДАЦІЇ ДО ВИКОНАННЯ
лабораторнихта практичних робіт
oб’єктно-орієнтованогопрограмування МП Delphi
з дисципліни“Алгоритмічні мови та програмування”
дляспеціальності 5.080405 “Програмування для ЕОТ та АС ”
Розробиввикладач Карлюченко О.Г.
Обговорено і схвалено на засіданніпредметної комісії обчислювальної техніки КІСІТ КНЕУ
Протокол №___ від__________200 р.
Головапредметної комісії:
________________Іванова Л.Д.
КИЇВ
Особистабібліотека програміста
При накопиченні значної кількості процедур і функцій,найчастіше досить простих, але часто застосовуваних розроблювачем, має сенспоєднувати їх в особистий комплекс, названий особистою бібліотекою програміста.Найчастіше в бібліотеку заносяться процедури побудови рамок, окантовок, віконіз заголовками, форматування видимого і невидимого курсору, установка кольору іфону, подача звукового сигналу (при аварійних ситуаціях). Побудова різних типівменю (вертикальне, горизонтальне, об'єднане), різні варіанти введення даних.
Кожний зперерахованих модулів повинeн бути />оформлений у вигляді процедури,ім'я якої потрібно давати загальне та зрозуміле. Текстовийфайл з модулямибібліотеки має розширення .pas
Структурамодуля :
Unit Servis— ім’ямодуля> ;{ заголовок бібліотеки}
Interface{ розділ декларації, описпідпрограм }
Uses crt, dos; {підключеннястандартних бібліотек}
Type…; {опис глобальних типів,міток, const }
Label… ;
Const… ;
Proceduremenu V; {описпідпрограм}
Proceduremenu G;
Implementation{розділреалізації, виконуюча частина}
Type…; {опис локальних типів,міток, const }
Label… ;
Const… ;
Proceduremenu V;
Proceduremenu G;
Begin {ініціююча частина, виконується до
передачі управління головній програмі}
End.
Для створення бібліотеки цей файл Servis. pas компілюємо через головне меню чи Alt + F9. У результатікомпіляції одержуємо файл Servis. tpu.
При компіляції звичайного тексту програми ззаголовками Program одержуємо завантажувальний модуль зрозширенням .EXE. Часто необхідно вказати в опціях директорію длязбереження зкомпільованого файлу.
Підключення бібліотеки в головній програмі :
Program proba;
Uses Servis, Crt, Dos;
/>
BorlandDelphi. Середовище Delphi, його складові.
Delphi – це інтегроване середовищерозробки, має гнучкий інструментарій для швидкого створення додатків,контекстні спливаючі підказки: основні і допоміжні.
Можливевикористання додатків: баз даних, Ассемблера, C, але алгоритмічна основа ObjectPascal (це розширення мови програмування Turbo Pascal 7.0.).
Існує могутнійкомпілятор, що без проміжного (як би віртуального) p – коду, перетворюєбезпосередньо в машинний код. Працює в 10 –20 разів швидше звичайного компілятора.
Готові Delphi – додатки можуть бути у виглядівиконуючого модуля, чи у вигляді динамічних бібліотек, які можнавикористовувати в інших додатках.
Існує можливістьшвидкого візуального інтерфейсу і додатка.
У Delphi 2основні фази розробки додатків:
1) конструюванняформи;
2) кодування.
Післязапуску Delphi — на екрані 4 вікна:
I Головне вікно; — верхнійрядок екрана з заголовком: Delphi (версія) і Project1.
II Вікно проектувальника форм(вікно форми) – FORM1.
III Вікно редактора коду (вікнокоду програми) – файл .PAS – code Editor.
IV Вікно інспектора об'єктів(Object inspector).
Усівікна мають інтерфейсом Windows. Розташоваіо вікна мозаїкою.
I Головне вікно:
1. Рядок заголовка, девказується версія Delphi, ім'я проекту (за замовчуванням Project1).
2. Основне меню (існує системадопоміжних меню, через праву кнопку миші).
3.Третій, четвертий рядок екрана лівогополя – панель інструментів. Це кнопки з
спливаючимипідказками, що повторюють пункти головного меню (піктограми).
4. Третій, четвертий рядокправого поля – палітра компонентів. Це піктограми з закладками
(Componentpalette), як багатосторінковий блокнот.
При закриттіголовного вікна відбувається вивантаження з DELPHI
IIВікно проектувальникаформ
з'являєтьсяавтоматично при завантаженні DELPHI, чи F12.
Форма – це основа додатка Delphi –це розмічене поле, у якому розташовуються об'єкти, тобто компоненти з палітрикомпонентів.
Міститьстандартний інтерфейс Windows. Компоненти: візуальні і невізуальні.
Роботау вікні форми — як гра з дитячим конструктором: з палітри компонентіввибираються об'єкти і розташовуються на формі вікна. Це і є основа«візуального» програмування, тобто заповнення вікна форми інтерфейснимиелементами: кнопками, мітками, панелями.
IIIРедактор коду ( оброблювачподії):
Викликаєтьсяподвійним клацанням миші у вікні інспектора об'єкта праворуч від необхідноїподії в сторінці Events. На вікні форми з”являэться вікно редактора коду ззаготівкою тексту процедури оброблювача подій.
Ліворуч від вікнаредактора коду з'являється вікно провідника (дослідника,браузера) коду. Він полегшує пошук потрібних елементів для великої кількостірядків коду.
Головнеменю:
File (файл); Edit(редагування); Search (пошук); View(вид);Project (проект); Run (запуск); Component(компонент); Data base (база даних); Tools(інструменти); Workgroup (робоча група); Help (довідка).
Панельінструментів:
Debug (налагодження); Run(запуск);Pause(пауза); StepOver (крок через);TraceIntro(крок в).
Standard (стандартна); New(створити); Open (відкрити); Save (зберегти);
Save all (зберегти усі); Openproject (відкрити проект); Add project (додати в проект);Remove from project (видалити з проекту).
Панельінструментів:
Custom(користувача);
Кнопка Help(довідка);
Палітракомпонентів – компонента VCL (Visual Component Library) і Active X.
IV Для зміни параметрівоб'єктів використовується інспектор об'єктів, що має дві закладки– властивості (Properties) та події (Events). Для настроювання об'єктактивізується одним клацанням лівої кнопки миші.
У DELPHI існує компонентнийпідхід (метод): готові компоненти – це частини машинного коду, щоможуть бути додані до програми клацанням миші.
Праворуч у вікнізнаходиться палітра компонентів, компоненти яких мають властивості,тобто характеристики. Властивості настроюються за допомогою інспектораоб'єктів. Сукупність властивостей відображає видиму ( візуальну) сторонукомпонента:
· Положення щодо лівоговерхнього кута
· Розміри
· Шрифт
· Текст
Властивості об'єкта відсортовані за алфавітом і покатегоріях
Компонентихарактеризуються методами (тобто програмні коди обробкивластивостей) і подіями, котрі компонент приймає від додатка привиконанні дій.
Сукупністьподій –поведінкова сторона компонента, наприклад – чи буде компонент реагувати наклацання миші чи натискання кнопки, клавіші; як він буде поводитися в моментпояви на екрані чи в момент зміни розмірів вікна і т.д.
Рядки таблиці інспектораоб'єктів вибираються клацанням миші і можуть відображати прості іскладені (складні) властивості. Наприклад: прості властивостівизначаються одним значенням (Caption).
Складні– це шрифт, стиль, розмір і т.д. закрити – відкрити список складних властивостейможна подвійним клацанням миші на властивості, чи клацанням по « – ».
/>Клацання на правій кнопці активізуєзазначені властивості і з'являється кнопка для виклику діалогового вікна.
Ускладної властивості з'являється кнопка — це розкриваючийся список значень.
Виклик(активізація) інспектора об'єктів виконується через головне меню View – Object Inspector чи F11.
Основніпоняття об’єктно — орієнтованого програмування
Клас — спеціальний тип даних, яккатегорія, яка має своі поля, місце і властивість.
Сама категоріявизначається загальною властивістю, яку мають всі єкземпляри цієі категоріі,тобто конкретні об’єкти класу.
Клас — структурний тип. Наприклад в Паскалі — тип RECORD (записи).
Прикладом класу ікласифікації може бути ієрархічне дерево „музичні інструменти”. Всі музичніінструменти мають загальну властивість — видавати звуки. Але методи вилученнязвуків різні: вдаряти по струнах, дути у мунштук, натискати на клавіші.
Класи мають:
а)поля — дані об’єкту одного типу ( як тип RECORD );
б) властивості — поля даних, що впливають на поведінку об’єкта;
застосовуютьсядля опису об’єкта, викликаючи методи їх обробки;
в) методи — підпрограммb з вихідним кодом обробки властивостей і полів.
При описі змінноїтипу клас для полів і властивостей цієї змінної в пам’яті виділяється(резервується) відповідний об’єм. При створенні об’єкту працює методконструктора для початковоі ініціалізаціі полів об’єкта.
При знищенніоб’єкта для звільнення пам’яті визивається метод деструктора. Ціметоди не можна визивати із програмного коду, вони виконуються тількиавтоматично.
Змінна описана якклас, який являється вказівкою на єкземпляр класу (але без символу ^ ). Звернення до такоі змінної — звичайне, а до полів,властивостей, методів класу (тобто до членів класу) — через крапку, як до полівзапису RECORD .
ЗАУВАЖЕННЯ!!!
Нe можнаописувати змінну типу класвсередині програми як локальну.
Наслідування,інкапсуляціі, поліморфізм–
три основнівластивості класу
Наслідування — це можливість породженогокласу нащадка (descendant)наслідувати властивості свого предка (ansestor). При цьому наслідуються всі поля, властивості і методибатьківського класу, не потрібно іх засновувати і розробляти додатково. Алепороджений клас може володіти більшими можливостями, наприклад, властивістьвидавати звуки перенесено з батьківського класу „музичні інструменти” на клас„гітара”. Механізм наслідування дозволяє багаторазово застосовувати програмнийкод. Відповідно класи м.б. систиматизовані в ієархію, як у візуальній біблітецікомпонент Delphi (VCL)
Інкапсуляція — це сполучення даних іметодів іх обробки в одному об’єкті. Mетодиоб’єкту визначають спосіб змінення даних. Наприклад: немає необхідності знатиспосіб отримання звуку — через мунштук для духових, або сруни для струнних. Кодреалізації метода не важливий, це принцип закриття інформаціі. Спосібдобуття звуку заключений всередині інструмента. Принцип „закриття об’єкту” — оточення не може випадково змінити цей об’єкт.
Поліморфізм — це одий і той же метод,виконується по різному для різних об’єктів, при необхідності конкретногооб’єкта можна перевизначити методи, враховуючи особливості даного об’єкта.
Лабораторна робота №2-3.
Тема: Створення простого додатка.Знайомство із системою
об'єктно-орієнтованого візуальногопроектування Delphi.
Мета:Ознайомиться з ООВП наприкладі створення додатка.
Хід роботи:
I.Конструювання форми :
1. ЗапуститиDelphi {Меню Windows Пуск àПрограми}, відкрити новий додаток {FileàNew Application à«No»}. На екрані відкрилася порожнянова Forma (Form1).
2. На Formрозмістити кнопку Tbutton {виділити на сторінці Standardпалітри компонентів піктограму кнопки одним клацанням миші, вибрати місце наполі Form1 і клацнути M à з'явиться кнопка, ім'я якоїза замовчуванням – «Button1»}.
3. На Formрозмістити мітку Label {Аналогічно: Standard à піктограма Label à клацнути на формі à мітка Label1}.
4. Розміститикнопку під міткою {перетаскуючи мишею}, зменшити розмір вікна {мишею}.
5. Перейменуватикнопку на «Пуск», а мітку на «Перший додаток» {виділити наForm1 кнопку, перейти в Інспектор Об'єктів (якщо його немає на екрані – F11 чи Fileà View à Object Inspector), змінити властивість Caption(напис, заголовок)}.
6. Напис на мітцізробити жирним шрифтом {виділити мітку, у вікні Інспектор Об'єктів розкритиподвійним клацанням миші властивість Font (шрифт) à аналогічно – властивість Style(стиль) à встановити в True властивість fsBold(жирний)}.
7. Стерти текст увластивості Caption мітки, щоб він не висвічувався, поки користувач не натисне «Пуск».Текст на мітці повинний з'являтися тільки після натискання кнопки.
II.Кодування ( розробка підпрограми обробки події OnClick ).
8. Виділитикнопку на Form1 àІнспектор Об'єктів à відкритисторінкуподійEvents àподвійне клацання мишею увікні праворуч від імені події OnClick à перейшли у вікноРедактора Коду з текстом процедури (тобто оброблювач події):
/>/>/> Procedure TForm1.Button1Click(Sender: TObject);
Клас форм ім'якомпонента ім'я події (без префікса On)Begin
Label1.Caption:=’Перший додаток’;Мітка Заголовок
End ;
9.У вікніРедактора Коду вбудоване вікно Провідника (Дослідника) Коду. Його можназакрити.
10. Властивiсть CaptionкомпонентаLabel1 змінена на текст “Пер-ший додаток” за допомогою метода — підпрограми обробки події — Procedure TForm1.Button1Click.
11. Якщо немаєпомилок Error і зауважень Warning, компілюємо додаток і виконуємо його {FileàRun àRun чи F9}.
Контрольніпитання.
1. Типи віконDelphi.
2. Основнікомпоненти палітри.
3. Формування таконструювання форми.
4. Основніоб'єкти форми.
5. Обробка події(Редактор Коду).
6. ПровідникКоду.
7. Знавець Коду.
Захист програмипаролем
Програміст може показати діалоговевікно з запитом пароля і блокувати виклик методу Application.Run, якщовведений користувачем пароль невірний. У наступному прикладі, у проектівикористовуються дві форми: стандартна форма InputQuery і звичайнаголовна форма Form1. Форма InputQuery створюється при звертаннідо однойменної функції, визначеної в модулі Dialogs. Вона являє собою невеликедіалогове вікно з однорядковим текстовим полем Tedit і двома кнопками – OKі Cancel. У вікні користувач повинний ввести пароль (Delphi) і натиснутиклавішу Enter.
program Password;
uses
Forms,
Dialogs, // У цьому модулі визначенафункція InputQuery
Until in ‘Unit1.pas’ {Form1};
{$R *.RES}
var
Passwrd: String;
Begin // Запитуємо пароль:
if InputQuery (‘Вікновведення пароля ’, ‘ Введіть пароль: ‘, Passwrd)
then
if Passwrd = ‘Delphi’ then
begin // Все в порядку, парольвірний
Application.CreateForm(Tform1, Form1);
Application.Run;
end else
ShowMessage ( ‘ Пароль не вірний! ’ ):
end.
Лабораторна роботаN4-5
Тема: Вивчення палітри компонентів.
Мета: Розробити додаток для виконанняарифметичних операцій.
Хід роботи:
I.1. Відкрити новий додаток.
2. Перенести на форму зісторінки бібліотеки Standard компоненти :
Form1 _ X
Label1
Edit1
Label2
Edit2
Label3
Panel1
Button1
три мітки Label для написів у
послідовному порядку ;
два вікна редагування Edit;
панель Panel;
кнопку Button;
3. Замінити надписи в мітках{властивість
Caption} на наступні:
Наприклад: “ число1 “,”число2 “,”результат”,
надпис кнопки – “Розрахунок”.
4.Задати для міток жирний шрифт, а длякнопки – курсив.
5.Очистити властивість Caption у панелі.
6. Для властивості Text(текст) вікон редагування задати«1»- початкове зна-
чення тексту .
7.Змінити вид панелі:
основне поле — Bevellnner=BvRaised («опуклий»).
рамка – Bevelouter= BvLowered (»утоплений»)
8. У редакторі коду написатиобробку події – клацання кнопки OnClick
Panel1.Caption:= Edit1.Text + ’ * ‘ + Edit2.Text + ’ = ’+
FloatToStr(StrToFloat (Edit1.text) * StrToFloat (Edit2.text));
9.Зберегти додаток {створити свій підкаталог (як папку Windows):
{ FileàSaveallчи швидкими кнопками головноговікна}.
10.Зкомпілювати і виконати розроблений проект (додаток).
II.Розробитипроект згідно варіанта завданнядля розрахунку:
1.Площі трикутника за сторонами А та В і кутом міжними α: S= ½ A*B*Sinα
2.Площі прямокутноготрикутника за двома його катетами А та В: S=½ A*B
3.Площі рівносторонньоготрикутника за довжиною його сторони: S=√3/4 a2.
4.Площі трикутника за довжинами його сторін А, В та С за формулою Герона
S= √P∙(P-A) ∙ (P-B) ∙ (P-C), де Р=½(А+В+С)
5.Площі трапеції за двома основами А та В і висотою Н: S=(А+В)*Н.
6.Довжини кола позаданому радіусу R: L=2πR.
7.Площі кругу по заданомурадіусі R: S= πR2
8.Периметра Р і площі Sпрямокутника за його сторонами А та В
9.Сторону трикутника С за двома іншими сторонамА та В і кутом між ними :
C= А2+B2-2A*B*Cos β
10.Площі ромба за його діагоналями Н1 і Н2: S=H1*H2
Контрольні питання :
1.Компоненти Edit іPanel, їхвластивості.
2.Візуальні властивості«Вид».
3.Функції перетворення типів FloatToStr, StrToFloat (IntToStr, StrToInt).
4.Компіляція і виконанняпроекта (додатка).
5.Розширення файлів Delphi.
Лабораторна робота № 6-7
Тема: Розробка додатків з використаннямменю.
Мета:освоїти розробку додатків звикористанням меню.
Хід роботи:
I.Створення головного меню.
1.Відкрити новий додаток (проект).
2.Активізувати FORMу, змінити значення властивості Caption на МMenu, а Name- на Mform.
3.Зберегти проект {FileàSaveProjectAsàз'явиться діалогове вікноSaveUnit1 As à створюємо
нову папку, вибравшиосмислену назву проекту (наприклад ЛР_6_7).Розкриваємо створену папку
у поле Ім'я файлуà дати ім'я програмного модуляà Зберегти. Відкриється діалогове вікно
SaveProjectAs.(зберегти проект). У поле Ім'яфайлуàім'я файлу проекту(LR 6-7).
Розширення файлу модуля-.pas, файл проекту -.dpr}
4.На формі в лівому верхньому кутку розмістити компонентTMainMenuзStandard(це не візуальний
компонент, тобто йогопіктограма не відповідає явному виду, а миша показує його наявність.
Настроювання його ведеться задопомогою спеціального редактора MenuDesigner, що викликається
Подвійнимклацанням на об'єкті MainMenu1).
5.Створити пункт головного меню File{ в MenuDesignerзмінити властивість Caption на &Fileі, таким
чином визначили клавішушвидкого виклику (Мнемонічного доступу), тобто +}.
6.Внести підпункти меню Saveі eХit {змінюючи Captionна &Save та e&xit}.
7.Вибрати клавішні еквіваленту F2 і F3 {властивість ShortCut à вибрати відповідні F? чи
набрати їх у віконці }.
8.Анологічно створити пункт гол. меню Help(праворуч від File) і його підпункти ?Info(F1)
таExit.
9. Вставити між ? та Exit розділову лінію {у властивості Captionу першій позиції набрати “дефіс – “}.
10.Відзначити пункт Save символом√ .
11.Розробити код обробки подій, що виникають при виборі пунктів меню, наприклад – Exit.
У редакторі меню подвійним клацанням миші на пункті Exitвизиваємо редактор коду
ProcedureTMForm.Exit1Click(Sender:Tobject);
Begin
IfCloseQuery then Close; {чи Close}
End;
12.Зкомпілювати додаток {F9} і перевірити функції головного меню.
II.Створення Контекстного (Спливаючого)меню.
1.На формі розмістити не візуальний компонент TРopUpMenu.
2.Аналогічно пунктам 5-7(першоїчастина LR) створити спливаюче меню.
3.Після створення спл. меню вредакторі Menu закрити вікно редактора Menu([x]) à клацнути на формі
(для скасування виборувсіх компонентів) .à у списку вікна, що розкривається, ObjectInspectorбуде
MForm:TMForm. Властивості PopUpMenu форми надати значення PopUpMenu1.
4.Аналогічно пункту 11 (I ч. LR)обробити пункт спливаючого меню «?Info» для інформаційного
діалогового вікна повідомлень.
Використати процедуру MessageDlg,що має 4 аргументи:
1 – симв. рядок з «переходом рядка» (код #13) і «поверненнямкаретки» (код #10) -для виведення
тексту у декількарядків;
2 – mtInformation – вибір стилю діалогового вікна ;
3 – [mbOк] – множинакнопок у вікні;
4 – – ознака контекстної довідки;
Текст процедури обробки події :
ProcedureTMForm.Info1Click (Sender:Tobject);
Begin
MessageDlg('Менюрозробив(ла)'#13#10'студент(ка) гр. № ФИО', mtInformation,[mbOk],0);
End;
5.Зкомпілювати додаток і перевірити його роботу вибором пункту мишею, клавішами еквіваленту та мнемонічного коду.
Контрольні питання:
1.Візуальні та невізуальні компоненти. 2.Етапизбереження проекту.
3.Створення головного ( контекстного ) меню. 4.Клавіші еквіваленту.
5.Мнемонічний код. 6.Інформаційне діалогове вікно повідомлень.
Тема:Сторінка системних компонентів
СторінкаSystem: містить компоненти, що дозволяютьмати доступ до програмного та апаратного забезпечення ПК.
Наприклад: Tіmer, Audіo — vіdіoplayer, вікно для малювання Paіnt — Box.
Компоненти Tіmer використовується для запускупроцедур і функцій по обробці подій у зазначений інтервал часу, для контролючасу, тобто для виконання дій у реальному режимі часу. Це не візуальнийкомпонент.
Має властивості:
— Enable (True, False) – використовується для генератора повідомлень.
— Іnterval – задається цілим числом у мілісекундах.
Має подію OnTіmer.
Сторінка Win32: містить 32-бітні компоненти(після Delphi-2) загального призначення,що дозволяє розробку додатків у стилі Win98, 2000, NT.
Наприклад: календар, можливість корегування дат ічасу, створення структури дерева, відтворення кліпів і т.д.
Візуальний компонентTdateTimePicker – поле введення, корегуваннядати і часу.
Має властивості :
Kind два значення:
dtk Date – корегування чи відображення дати.
dtk Time – корегування часу.
Властивість Data Mode дозволяє змінювати зовнішній виглядкалендаря для дати, при цьому у властивостях Kind повинне бути значення dtkDate.
ЗначенняdmComboBox – це поле зі списком(називається спадаючий чи календар, що випадає).
Значення dmUpDown – це коректування дати у вигляділічильника.
Властивість Time — корегування часу.
Візуальнийкомпонент TMonthCalendar – дозволяє швидко корегуватидату, готовий до роботи відразу після розміщення, ліворуч – колонка – номертижня, використовуються кнопки переміщення, повернення на поточну дату злічильником на сьогодні.
Лабораторнаробота №8-9
Тема: Розробкаінтерфейсу користувача з використанням компонентів SYSTEMі WIN32.
Ціль: засвоїти інтерфейскористувача з використанням компонентів сторінок SYSTEM. і WIN32.
Хід роботи:
I.Створення цифрового годинника.
1.Відкрити новий додаток(проект).
2.Вибрати форму {клацнувшина ній}, змінити Caption-на FORMLR8, Name- на FLR8.
3.Видалити кнопкимінімізації і максимізації вікна {на властивості BorderIconsàрозкрити [+] àвстановити biSystemMenu– у TRUE, biMinimizeі biMaximize— у FALSE
Результат буде видний наформі лише після компіляції}.
4.Розмістити в центріформи мітку { компонент LABEL сторінки STANDART}.
Для резервування місцяпід розташовувані цифри змінити :
Caption-00:00:00 AM; Name-TimeLable1.
5.У властивості Fontоб'єктаTimeLabel вибрати колір, шрифт, розмір, стильдля годин; наприклад – жирний курсив, розмір 24 і т.д.
6.Перенести на форму зісторінки SYSTEM компонент Timer (його ім'я за замовчуванням Timer1).
7.Обробити подію OnTimer{вибрати об'єкт Timer1 і клацнути на закладці Eventsу вікні Інспектора Об'єктів.
Викликати процедуру(метод) обробки подвійним клацанням миші на значенні праворуч від події:
ProcedureTFLR8.Timer1Timer(Sender: Tobject);
Begin
TimeLable1.Caption:=TimeToStr(Time);
End; Цей код конвертує (переводить) поточний час у рядокString }.
8.Зкомпілювати додаток ізапустити його. Вікно форми з ім'ям FormLR8 – без кнопок максимізації і мінімізації.
9.Вийти в Delphi на форму FormLR8.
II. Маніпуляція з кольорами форми –мерехтіння кольору форми.
1.Вибрати об'єкт Timer1на формі.
2.Установити властивістьInterval = 100
3.Код обробки подіїOnTimer доповнити процедурою (методом):
FLR8.Color:= trunc ( $02ffffff * random );
Ім'я (Name) форми властивість кольору
4.Зкомпелювати ізапустити проект.
III. Робота з календарем. Виведення повідомлення.
1.Розмістити на формікнопку, змінити заголовок Captionна «Час», ім'я Name – Button1.
2.Розмістити на формі зісторінки WIN32 візуальний компонент TDateTimePicker.
3.Встановити режимвідображення дати з розкритим календарем (поле зі списком):
властивість DateMode = dmComboBox; властивість Kind = dtkDate.
4.Встановити режим увигляді лічильника:
властивість DateMode = dmUpDown.
5.Обробити подіюнатинення кнопки «Час» для виведення в інформаційному діалоговому вікніповідомлень поточного часу:
MessageDlg('Поточнийчас
+TimeToStr(DateTimePicker1.Time),mtInformation, [mbOK],0);
6.Впорядкувати розміщенняоб'єктів на формі {вибрати всі об'єкти форми: меню Edit( Selectall};
{Впорядкувати об'єкти: Edit→ Align→ діалогове вікно — погоризонталі → Center(центрувати)
по вертикалі →SpaceEqual (рівна відстань)}
7.Зкомпілювати і запустити додаток.
8.Зберегти модуль іпроект.
Контрольні питання.
1.Призначення компонентівсторінки SYSTEM.
2.Компонент Timer, йоговластивості і події.
3.Призначення компонентівсторінки WIN32.
4.Властивості і значеннякомпонента TDateTimePicker.
5.Властивості і значеннякомпонента TMonthCalendar
6.Корегування дати ічасу.
7.Впорядкуванннярозміщення об'єктів на формі.
8.Видалення кнопокмаксимізації та мінімізіції на формі.
Директивикомпілятора
Використовуютьсядля зміни режимів функціонування (роботи) компілятора, впливають наефективність виконання програми.
Розташовуютьдирективи в коді програми безпосередньо перед текстом. Кожна директивазаключається в фігурні дужки і має ознаку „$”. В одному рядку можна вказати декілька директив через кому: { $R+, $I+, $I_ Funct1.pas }
Типидиректив:
1.перемикачі— вкл / відкл режим компілятора(„+” / ”-„, ON / OFF). { $R+, $I+ }
Можуть бутилокальними і глобальними.
2. зпараметрами — конкретне значення. Наприклад: ім’яфайла. { $I_ Funct1.pas }
3. умовноїкомпіляціі — дозволяють в залежності від умов компілірувати або ні окреміфрагментикопій.
Для перевіркивстановлених директив за замовчуванням — функційні клавіші Ctrl + О або О (Options Compiler ).
Налагодити сторінку компілятора можна вдіалоговому вікні ProjectOptions установкою відповіднихіндикаторів.
1. {$R} – перевірка допустимих значень індексівмасивів .
Дозволяєперевірити діапазон цілочисельних значень індексів, автоматично контролює
результативведення і виведення (за замовчуванням R- ).
2. {$І}- перевірка помилок введення/виведення, автоматично контролює результати введення — виведення (зазамовчуванням І+).
Аналізується кодпомилки процедурою І / О RESULT
0 – Відсутність помилки;
2 – Файл незнайдений;
3 – Помилка вімені файла;
4 – Забагатовідкритих файлів: збільшити кількість відкритих файлів в налаштуванні;
5 – Файлушкоджений;
100 – Кінецьфайла;
101 – Дискпереповнений;
106 – Помилкавведення при роботі з файлами;
3. {$I_ім’я файла} – підключає на етапікомпіляції розроблені раніше файли;
4. {$Q} – переповнення при цілочисельних операціях;
5. {$Р} –розширення параметрів процедур і функцій у вигляді рядків;
6. {$С+} –перевірка тверджень.
Лабораторна робота №10
Тема: ”Консольний додаток”.
Ціль: У режимі консольного додаткавідпрацювати основний модуль задачі курсового проекту.
Послідовністьвиконання:
1.Запустити Delphi; відкрити новий додаток {FileàNewApplication}.
2. Закрити наступні вікна:
форми Form1;
інспектора об'єктів Object inspector;
модуль додатку Unit1.pas( без збереження ).
àнаекрані лише головне вікно Delphi.
3. З меню Projectà View Source (перегляд)à з'являється вікно головної
процедури додатка, назва Project1.dpr.
4. Набираємо текст (код) програми наПаскалі.
5. Перший рядокà{$Apptype Console} – директива компілятора.
6. У тексті програми перед (end.)повинeн бути оператор Readln;
зкомпілювати код програмименю {ProjectàCompile} і запустити в роботу
{RunßàF9}.
7. На екрані – вікно Dos.
Контрольнізапитання :
1. Директивикомпілятора.
2. Класифікаціядиректив.
Лабораторна робота № 11
Тема: „Налагодження інтегрованого середовища розробника”
Хід роботи:
1. Відминити- відновити вивід на екран палітри компонентів
{View→ToolBars→ComponentPalette}{Вид→Панель инструментов→Палитракомпонентов}.
2. Відминити- відновити вивід на екран панелі інструментів {View→ToolBars→Standard}{Вид→Панель инструментов→Стандарт}.
3. Додати кнопку на панеліінструментів, Comands{View→ToolBars→Customize(налагодження)→ вiкно зі сторінками Categories(мелю) та Comands(команди). Вибрати меню файлі команду мишкою перетягнути кнопку на панель. Видалити кнопку з панелі}.
4. Відминити- відновити вивід на екран інспектора об'єктів {View→ToolBars→ObjectInspeclor(Інспектор об’єктів)(F11)}.
5. Додатиелемент в меню {Tools(інструменти)→ConfigureTools(конфігурація інструментів)→у вікні діалогової панелі ToolOptionsнатиснути Add→ToolsProperties(властивосиі інструментів), натиснути Brows→ зі списку вибратизадачу, відкрити її; у вікні Titleдати заголовок — наприклад Matric→Okyвікні ToolsProperties→Close→ задача включена в Tools}.
6. Змінитипорядок задач у списку Tools {усписці ToolOptionвибрати потрібну задачу іперемістити її на початок списку кнопками MoveUp}.
7. Видалити задачу зі списка Tools {вибрати задачу зі списку Tools→Delete}.
8. Переміститисторінку палітри компонентів Systemперед Standart {натиснути правою кнопкою миші напалітрі компонентів → висвітиться контексне меню Properties(властивості) →діалогове вікно PalettePropertiesз двома колонками → у списці сторінок Pageвибираємо Systemта переміщуємо її}.
9. Додатинову сторінку в палітру з назвою «37 „ {в діалоговому вікні PalettePropertiesнатиснути на Addі вводимо нове ім 'ясторінки GR37}.
10.Видалення сторінки {в діалоговому вікні PalettePropertiesнатиснути на сторінці GR37_(mo6moвибираємо її) та на кнопку Delete}.
11.Доповнити в Знавець Коду (CodeInsight) шаблон для оператору цикла з
параметром — 1:
For |: = downto do // Ctrl+J — виклик знавця коду
{Tools→EditionOption→CodeInsight→CodeTemplates→ натиснути Addу вікні для виводу новогошаблону shotcut+nameв його короткий опис Descriptionнабираємо текст
шаблону, встановлюємо “ │ » перед ": =" → зберігаємота виходимо }.
12.Видалити шаблон із Знавця Коду {Tools→EditerOption→CodeInsight→ знайти шаблон і.Del}.
13.Змінити затримку автоматичного спрацьовування CodeInsightна максимум (Delay) {Tools→EditionOption→CodeInsight→Delay→ повзунок на max= 1.5 sec→ Ok}.
Контрольні питання:
1. Налагодженняпалітри компонентів.
2. Налагодженняпанелі інструментів.
3. Налагодженняменю Tools.
4. Корегуваннязнавця коду.
Тема: Введення й обробка елементівмасиву
ІВизначити конкретне значенняелементів масиву ми можемо з використанням компонентів сторінки StandardEdit ( вікно редагування), прицьому на вихідній формі необхідно передбачити таку кількість віконець Edit, скільки елементів маємасив.
Edit.Text — інформація символьного типу, для обробки числових значень необхіднеперетворення типів:
· StrToFloat, StrToInt – перетворення символьного вчислове;
· FloatToStr, IntToStr – зворотне перетворення для висновкурезультату.
При такому заданні масивунеобхідно заздалегідь визначати і чітко фіксувати кількість елементів (розмірність масиву).
ІІПри великій розмірності масивунезручно використовувати величезну кількість вікон редагування. Масив можнавводити по рядкам в таблицю елементів, де кожне число знаходитися в окремому клітинці. При цьому елементи розділяються пробілом. Компонент StringGridзнаходитися на сторінці Add itional .
Властивості компонентаStringGrid:
1. Name – ім'я, що використовується в програмі для звернення до об'єкта;
2. ColCount– кількість стовпчиків (стовпців);
3. RowCount – кількість рядків;
4. Cells– ім'я масиву, відповідного таблиці.
5. FixedCols – кількість фіксованих зліва стовпчиків;
6. FixedRows – кількість фіксованих зверхурядків;
7. Options.goEditing – можливість редагування вмісту клітинок таблиці;
8. Options.goTab – можливість переходу до наступногоелементу клавішею “Tab”;
9. DefaultColWidth – визначає ширину стовпчиківтаблиці;
10. DefaultRowWidth – висота рядків таблиці.
11. OptionsGoAlwaysShowEditor – при значенні False, після набору тексту необхіднонатиснути F2, чи клацнути миша при значенні True – редагування виконуєтьсяавтоматично.
ІІІ. Використання компонента Мемо дозволяє вводити в масивелементи символьного типу у виглядірядків тексту.
Властивості Memo:
Name -— ім'я компонента, що використовується в тексті програми;
Lines– номер рядка, номерація починається з нуля (номер задається в «[ ]»);
Text – символьна інформація, що визначаєзначення елементів масиву.
IV. Введення даних у масив з використанням списку List Box(Standard).
Властивості ListBox:
Items – елементи списку;
ItemIndex – номер обраного елемента списку (на початку роботи «0»).
Список може бутисформований під час створення форми додатка, чи динамічно під час роботипрограми.
У вікні ObjectInspector вибрати властивості Items іклацнути на кнопці....., відкривається діалогове вікно редактора списку рядків( StringList Editor). Кожен елемент набирати з нового рядка і завершувати «Enter».Після введення всіх елементів списку натиснути «ОК».
Процедура обробкиподії OnKeyPress
( перевіркакоректності введення цілих чисел)
ProcedureTform1.StringGridKeyPress (Sender:Tobject; Var Key: char );
BeginCase Key of
#8,’0’..’9’:; // Цифриіклавіша
#13; // Клавіша
IfStringGrid1. ColStringGrid1.ColCount – 1
ThenStringGrid. co l: = StringGrid1.col + 1
Else key: = Chr(0);// iнші символи заборонені
End;
End;
Перевірка коректності введення дійсних чисел
ProcedureTform1.StringGridKeyPress (Sender:Tobject; Var Key: char );
BeginCase Key of
#8,’0’..’9’:; // Цифриіклавіша
#13;// Клавіша>
IfStringGrid1. Col
ThenStringGrid. co l: = StringGrid1.col + 1;
‘. ‘, ’,’: // Роздільник цілої і дробової частинчисла
Begin
If Key DecimalSeparator then
Key: =DecimalSeparator; //Замінимороздільникнаприпустимий
If Pos (StringGrid1. cells [ StringGrid. Col, 0], DecemalSeparator ) 0
Then Key:= chr ( 0); // Заборонавведенняповторногороздільника
End;
‘ – ‘: // мінус можна ввести тільки першимсимволом
// тобтоколикоміркапорожня
If Length (StringGrid1.Cells [ StringGrid1. Col, 0 ] ) 0
then Key:= Chr ( 0 )
else / /Іншісимволи заборонені
key: = Chr(0);
end; { end case}
end; { endproc}
Лабораторна робота №12.
Тема: Обробка двовимірного масиву.
Мета: Освоїти методи обробки масиву.
Постановка задачі: Підрахувати середній бал студентів за підсумками сесії. За запитом виводити середній бал по всій групі.
Хід роботи:
I. Відкрити новийдодаток. Дати заголовок Form1.Caption ― 'Підсумки сесії':
Розмістити на формі:
1) Зі сторінки Standardà мітку Label1; властивість Caption― 'Підсумки сесії по групі 37_';
2) Зі сторінки Additionalà таблицю рядків StringGrid1;встановити властивості:
ColCount ― 5 {Кількість стовпців};
RowCount ― 5 {Кількість рядків};
FixedCols ― 0 {Кількість фіксованихстовпців};
FixedRows ― 1 {Кількість фіксованихрядків};
Name ― StringGrid1 ( або SG1 );
Options.goEditing ― True {Редагування клітиноктаблиці};
/>
Options.goTab ― True;
3) Зі сторінки Standard à прапорець CheckBox; встановити його властивість Caption ― 'Середній бал по групі';
4) Зі сторінки Standard à кнопкуButton1; встановити властивість Caption ― 'Пуск';
5) Зі сторінки Standard для виведення середнього бала по групі à Label2 (чи Panel1); Caption ― ' ' (очистити).
II. Для початковогопрограмного заповнення заголовка таблиці обробити подію активації форми:
ProcedureTForm1.FormActivate(Sender: TObject);
begin
StringGrid1.Cells[0,0]:='Ф И О';
StringGrid1.Cells[1,0]:='Програм.';
StringGrid1.Cells[2,0]:='Мат.Ан.';
StringGrid1.Cells[3,0]:='Диф.Ур.';
StringGrid1.Cells[4,0]:='Ср.Бал';
end;
III. Основну обробку івведення елементів масиву (при заповненні таблиці) оформити як процедуру обробки події натискання клавіші«Пуск»:
procedureTForm1.Button1Click(Sender: TObject);
var
a:array[1..5,1..10] of integer; {робочий масив}
S, {середнійбал студента}
SR:real; {середнійбал по групі}
i, {лічильникстовпців}
j:integer; {лічильникрядків}
begin
SR:=0;
For j:=1 toSG1.RowCount-1 do {цикл по рядках}
begin
S:=0;
For і:=1 to 3do {цикл по стовпцях}
begin
a[i,j]:=StrToInt(SG1.Cells[i,j]);
S:=S+a[i,j];
end; {For і}
S:=S/3; {підрахунок середнього балу студента}
SG1.Cells[4,j]:= FloatToStr(s);
SR:=SR+S;
end; {For j}
{аналіз значення прапорця- обчислення середнього бала по групі}
IfCheckBox1.State=cbChecked then
begin
SR:=SR/(SG1.RowCount-1);
Label2.Caption:=FloatToStr(SR);
end; {Then}
end; {Proc}
IV. Виконатиперевірку коректності введення даних процедурою OnKeyPressed. У випадкупомилки вивести повідомлення
«Дані не входять удіапазон [1..5]» і повторити введення.
V. Перевірити, чивведені дані в клітинку, якщо ні ― повідомлення на екран і корегування таблиці.
Заповнитипочатковий масив випадковими числами ( RANDOM ).
Контрольні питання:
1. Компонент StringGrid,його властивості і події.
2. Компонент CheckBox,його властивості і події.
3. Методи введення йобробки елементів масиву.
4. Перевіркакоректності введення даних.
Лабораторнаробота №13
Тема: ”Анкета студента”
Мета: Використання зображення (фото,картинки), створення ехе-файла.
Постановка задачі:
Розробити додаток іззображеннями, що перекриваються.
Хід роботи:
I. Конструювання форми:
1. Відкрити новий додаток. Датизаголовок Form1.Caption – ‘Анкета студента’
2. Вибрати піктограму (іконку) длязапуску задачі {Icon®
®Load (завантажити)®вибираємо зі списку файлів*.ico ®
переглядаємо ®відкрити ®ОК ®іконка в системному рядку формизмінилася на обрану}
3. За бажанням змінити колір, фон,стиль, розмір форми.
4. Забрати кнопки системного меню форми( ) {Borderconst ®biSystemMenu; biMinimize; biMaximizeустановити False }
На формірозмістити:
5. Зі сторінки Standard – мітку Label1;властивість Caption – 'Студент КТРЕ'
6. Зі сторінки Standard – полеМемо (чи вікно Edit, чи Label) – для введення анкетних даних.
7. Розмістити 2 кнопки Button (зStandard)
Установити:
Caption.Button1 – ‘портретнe фото’
Caption.Button2 – ‘художнє фото’
8. Для коректного виходу з задачі (див.п.4) використовувати кнопкуBitBtn зі сторінки палітрикомпонентів Additional. Установити властивість Kind(сорт) – вид кнопки на bkClose ®на кнопці з'явилася піктограма і напис Close.
9.На кнопці виведемо спливаючу підказку– “натяк”:
{властивість Hint –(це текстпідказки, що з'являється при наведенні покажчика миші)– 'вихід іззадачі’; властивістьShowHint – (показувати/непоказуватипідказку)®установитиTrue}
10.Розмістити на формі об'єкт Image1(«картинка») зі сторінки Additional.
11.Уставити своє чи фото малюнок: {Image1®Picture ®вікно редактораPicture ®Load ®вибираємо файл із*.jpg; *.bmp;*.ico; *.wmf ®OK ®картинка у вікні}
12.Привести розмір зображення до заданихрозмірів об'єкта Image: {властивістьStretch®TRUE}
13.Аналогічно п.п.10-13 вибрати 2-і фото(картинку), наклавши її цілком на першу картинку і сполучивши розміри.
II. Розробкакодів(процедур):
procedureTForm1.Button1Click(Sender: TObject);
begin
Image1.Visible:=true;{портретнефотовізуальне}
Image2.Visible:=false;{художнєфотоневізуальне}
button1.Visible:=false;{кнопка1 невізуальна}
button2.Visible:=true;{кнопка2 візуальна}
end;
procedureTForm1.Button2Click(Sender: TObject);
begin
Image2.Visible:=true;{портретнефотовізуальне}
Image1.Visible:=false;{художнєфотоневізуальне}
button2.Visible:=false;{кнопка2 невізуальна}
button1.Visible:=true;{кнопка1 візуальна}
end;
procedureTForm1.BitBtn1Click(Sender: TObject);
begin
close;
end;
III. Зберегтирозробленийдодаток:
{гол. меню®File ®Save all (зберегтиусі) чиShift+Ctrl+S}
чи для іншої папки:
{гол.меню®File ®Save as…(SaveUnitas…)®шлях®ім'яAnketa.pas.
гол.меню®Save Project as…®шлях®ім'яFoto.dpr}
У в а г а!!!
Файли проекту і текступрограми повинні мати різні імена.
IV. Створити ехе-файл проекту:
1. {гол.меню ®Project®Build all (сконструювати все)}
2. Закрити Delphi:
Запустити задачу якехе-файл через піктограму
КОНТРОЛЬНІ ПИТАННЯ :
1. Властивостікомпонента Image.
2. Властивості іподії компонента BitBtn.
3. Створенняехе-файла.
4. Вибір піктограмизадачі
5. Спливаючапідказка.
Лабораторнаробота № 14
Тема: Створення довідкової системидодатка
Мета:Навчитися створювати довідкову систему проекту
Складається здвох етапів: Створення файлу документа
Компіляціїфайлу довідки.
IЕтап
Файл документастворюється будь-яким текстовим процесором (напр. Microsoft Word) ізберігається як rtf файл.
1. Набираємо текст розділівдовідки.
2. Заголовки розділівоформляємо одним зі стилів «Заголовок».
3. Текст кожного розділудовідки повинен бути на окремій сторінці документа, тобто закінчуватися «розривомсторінки».
4. Позначаємо заголовкирозділів виносками. Універсальна виноска для ідентифікатора теми, по якому нацю виноску можуть посилатися інші теми — #. Її потрібно ставити перед кожнимрозділом довідки; {Вставка → посилання → виноска → інша→ # у поле введення → Ok}. У нижній частині вікнаредагуваннярозкривається вікно введення тексту виноски, де вводимоідентифікатор уставленої виноски; {# розділ1 # razd 2}.
5. Перехід до інших розділівдовідки по виділеному слову (ключу): ключове слово в загальному тексті rtfфайлу підкреслюємо подвійною лінією {Формат → Шрифт →Підкреслення → Подвійне → Ок застосовуємо до виділеного ключовогослова}. За ключовим словом у тексті rtf файлу набираємоідентифікатор посилання, куди необхідний перехід у довідці і «ховаємо» цейнабраний ідентифікатор {Формат → Шрифт → Схований → Ок}.При цьому опція «подвійне підкреслення» повинна бити відключена.
6. Зразок фрагменту rtf– файлу:
# sozdСтворення довідкової системи{Заголовок1} складається з двох етапів:
I – Створенняфайлу документів razdel1
II –Компіляція файлу довідки razdel2
# razdel1Файл документа можнастворити засобами процесора MS Word
{ текстрозділу }
# razdel2Компілюємо файл довідкипрограмою MS Help Workshop
{ текстрозділу }
Усі виноски
▼
Закрити
# sozd
# razdel1
# razdel2
II Компіляція файлудовідки .
1. Запускаємо MS Help Workshop,його шлях:C:\ProgramFiles\Borland\Delphi\Help\Tools\Hcw.exe
2. У головному вікні програми:
File → New → Help Project → відкривається вікно Project File Name → вибираємо папку з проектом і з файлом rtf → у полі Ім'я файлу вводимо ім'я файлу довідковоїсистеми → Зберегти.
3. Відкрилося вікно проектудовідкової системи .
4. Додаємо файл – документдовідкової системи.
Кнопка Files→ у вікні Topic File → Add → вікно «Відкриттяфайлу» → вибираємо потрібнийrtf – файл.
5. Задаємо характеристики вікнадовідкової системи:
Кнопка Windows→ Windows Properties → у поле Create a window named → слово“Main” – основний тип створюваного вікна→ Ok → поверненняу вікноWindows Properties.
6. ВкладкаGeneral → полеTitle bar text → вводимо заголовок головного вікна (напр. Довідка).
7. Можна вибрати колір фонузаголовка і тексту довідки
{ ВкладкаColor → вибірChange → Ok}
8. Призначимо числові значенняідентифікаторам розділів довідки: {у вікні проекту довідковоїсистеми натиснути кнопкуMap → сховалося діалогове вікно Map→Add → у полеTopic ID вводимо ідентифікатор посилання→у полеMapped numeric Value – відповідне значення}.
9. Компілюємо файл довідки:
Меню File →Compile → Compile a Help File установлюємо прапорець дляавтоматичного показу створеної довідки→ Compile.
10. Створено файл довідки ім'я.hlp.
11. Підключаємо розроблений файлдовідки в проект Delphi, зв'язуючи довідку з клавішею F1:
ObjectInspector Form1 → Help File → ім'я.hlp;
→HelpContext → 1.
12. Для виклику довідкинатисканням на кнопку – процедура (Button чи пункт меню)
ProcedureTForm1.Button1Click(Sender:TObject);Begin
Winhelp(Form1.Handle,’ім'я.hlp’, Help_Context,1);
End;
{властивістьHandle вікна доступно лише під час роботи роботи програми}/
13. Розроблений проект Delphi,файл – rtf і файл довідки.hlp повинні знаходиться в одній папці.
Література до курсу алгоритмічних мовта програмування:
Література
1. АрхангельскийА.Я. Программирование в Delphi6.-
М.: ЗАО “Изд-80 БИНОМ”,2002г.-1120с.: ил.
2. Бобровский С. Delphi 5: Учебный курс-С-П: Питер, 2001.-640 c.: ил.
3 Глинский Я.Н., Анохин В. Е., Ряжская В. А. Turbo Pascal 7.0 и Delphi.
Учебное пособие .-СПб: ООО “ДиаСофтЮП” 2001.-208 c.
4. Культин Н.Б. Программирование на Obgect PASCAL в Delphi5.
-СПБ.: БХВ-С.-П.,2000,-464 с.: ил.
5. Фаронов В. В. Delphi5. Учебный курс.-М.:’’Нолидж”, 2001.-608c., ил.
6. Черняхівський В.В.Delphi-4: сучасна технологія візуального програмування.-
Львів: БаК, 1999. – 196 с.
7. Фаронов В.В. Turbo Pascal 7.0 Научныйкурс. Учебное пособие,
изд.- 7-е М.: „ Нолидж”, 2001, -576 с., ил.
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
КІСІТКНЕУ імені Вадима Гетьмана
Лабораторна робота №12
з предмету: «Алгоритмічні мови та програмування».
Тема:” Робота з двовимірним масивом”
Фах 5.080.405.027 ПЗ
Мета: Освоїти методи обробкимасиву.
Постановказадачі:Порахувати середній бал студентів за підсумками сесії. По запиту розрахувати івивести середній бал по всій групі.
Хід роботи:
VI. Відкритиновий додаток. Дати заголовок Form1.Caption ― 'Підсумки сесії':
Розмістити наформі:
6) Зісторінки Standard à мітку Label1; властивість Caption― 'Підсумки сесії по групі 37_';
7) Зісторінки Additional à таблицю рядків StringGrid1;встановити властивості:
ColCount ― 5 {Кількістьстовпців};
RowCount ― 5 {Кількістьрядків};
FixedCols ― 0 {Кількістьфіксованих стовпців};
FixedRows ― 1 {Кількістьфіксованих рядків};
Name ― StringGrid1;
Options.goEditing ― True {Редагуванняосередків таблиці};
Options.goTab ― True;
8) Зісторінки Standard à прапорець CheckBox;установити його властивість Caption ― 'Середній бал по групі';
9) Зі сторінкиStandard à кнопку Button1; установити властивість Caption― 'Пуск';
10) Зісторінки Standard для висновку середнього бала по групі à Label2 (чи Panel1);Caption ― ' ' (очистити).
VII. Дляпочаткового програмного заповнення заголовка таблиці обробити подія активаціїформи:
procedureTForm1.FormActivate(Sender: TObject);
begin
StringGrid1.Cells[0,0]:= 'Ф И О';
StringGrid1.Cells[1,0]:= 'Програм.';
StringGrid1.Cells[2,0]:= 'Мат.Ан.';
StringGrid1.Cells[3,0]:= 'Диф.Ур.';
StringGrid1.Cells[4,0]:= 'Ср.Бал';
end;
VIII. Основну обробку і введення елементівмасиву (при заповненні таблиці) оформляти у виді процедури обробки подіїнатискання клавіші «Пуск»:
procedureTForm1.Button1Click(Sender: TObject);
var
a: array[1..5,1..10] of integer; {робочиймасив}
S, {середнійбал студента}
SR: real; {середнійбал по групі}
i, {лічильникстовпців}
j: integer; {лічильник рядків}
begin
SR := 0;
For j := 1 to StringGrid1.RowCount-1do {цикл по рядках}
begin
S := 0;
For і := 1 to 3 do{цикл по стовпцях}
begin
a[i,j] :=StrToInt(StringGrid1.Cells[i,j]);
S := S + a[i,j];
end; {For і}
S := S/3; {ви числениесереднього бала студента}
SR := SR+S;
end; {For j}
{аналіз значенняпрапорця — обчислення середнього бала по групі}
IfCheckBox1.State=cbChecked then
begin
SR :=SR/(StringGrid1.RowCount-1);
Label2.Caption:= FloatToStr(SR);
end; {Then}
end; {Proc}
IV Виконатиперевірку коректності введення даних процедурою OnKeyPressed. У випадкупомилки вивести повідомлення «Дані не входять у діапазон [1..5]» іповторити введення.
V Перевірити, чи введеноі дані восередок, якщо немає ― повідомлення на екран і коректування таблиці.
Контрольніпитання:
5. КомпонентStringGrid, його властивості і події.
6. КомпонентCheckBox, його властивості і події.
7. Методивведення й обробки елементів масиву.
8. Перевіркакоректності введення даних.
Протокол роботи:
unit lr12;
interface
uses
Windows,Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,StdCtrls, Grids;
type
TForm1 = class(TForm)
Label1:TLabel;
StringGrid1:TStringGrid;
CheckBox1:TCheckBox;
Button1:TButton;
Label2:TLabel;
Button2:TButton;
procedure FormActivate(Sender:TObject);
procedure Button2Click(Sender:TObject);
procedure Button1Click(Sender:TObject);
procedureStringGrid1KeyPress(Sender: TObject; var Key: Char
private
{ Privatedeclarations }
public
{ Publicdeclarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedureTForm1.FormActivate(Sender: TObject);
begin
StringGrid1.Cells[0,0]:= 'ФИО';
StringGrid1.Cells[1,0]:= 'Програм.';
StringGrid1.Cells[2,0]:= 'Мат.ан.';
StringGrid1.Cells[5,0]:= ‘Стипендия';
end;
procedureTForm1.Button2Click(Sender: TObject); {Процедура виходу з програми}
begin
form1.Close;
end;
procedureTForm1.Button1Click(Sender: TObject);{ Процедура обробкиButton }
var
S, Sr: real;
i, j: integer;begin
Sr := 0;
for j := 1 to StringGrid1.RowCountdo
begin
S := 0;
for i := 1 to 3 do
begin ifStringGrid1.cells[i,j]''
then S :=S+StrToInt(StringGrid1.Cells[i,j])
else StringGrid1.Cells[i,j] :='0';
end; //end i
S := S/3;
StringGrid1.Cells[4,j]:= FloatToStrF(s,ffFixed,4,2);
if s=5 thenStringGrid1.Cells[5,j] := '40.00'
else if(S=4) then StringGrid1.Cells[5,j] := '32.50'
else StringGrid1.Cells[5,j] :='не получает';
sr := Sr+s;
end; //end i
if CheckBox1.State=cbCheckedthen
begin
Sr :=sr/(stringGrid1.RowCount-1);
label2.Caption:= 'Средний балл ='+FloatToStrF(Sr,ffFixed,4,2);
end; //end check
end; //end proc
procedureTForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char);
begin
case key of
#8, '2'..'5':;
else begin
MessageDlg('Оценкапо 5-ой смистеме(2..5)',mtError,[mbOk,MbCancel],0);
Key := chr(0);
end;
end;
end;
end. //end program
Форми:
/>
/>
/>