- •Основи об’єктно-орієнтованого програмування
- •Факультету комп’ютерних наук та інформаційних технологій
- •Луцьк 2009
- •Факультету комп’ютерних наук та інформаційних технологій 1 Лабораторна робота №1 5 Програмування лінійних алгоритмів 5
- •2.1. Приклад створення додатка 14
- •9.3. Виконання індивідуального завдання 61
- •Програмування лінійних алгоритмів
- •1.1. Візуальне середовище delphi
- •1.2. Приклад створення додатка
- •1.2.1. Збереження проекта
- •1.2.2. Настройка вікон
- •1.2.3. Зміна заголовка Форми
- •1.2.4. Розміщення компонентів на Формі
- •1.2.5. Написання процедури обробки події створення Форми (FormCreate)
- •1.2.6. Написання процедури обробки події натиснення кнопки Button1 (Button1Click)
- •1.2.7. Текст модуля UnLinAlg
- •X,y,z,a,b,c,u : extended; // оголошення локальних змінних
- •1.2.8. Робота з додатком
- •1.3. Виконання індивідуального завдання
- •Індивідуальні завдання
- •Лабораторна робота №2 Програмування алгоритмів, що розгалужуються
- •2.1. Приклад створення додатка
- •2.1.1. Розміщення компонентів на Формі
- •2.1.2. Створення процедур обробки подій FormСreate і Button1Сlick
- •2.1.3. Текст модуля UnRazvAlg
- •2.1.4. Робота з додатком
- •2.2. Виконання індивідуального завдання
- •Індивідуальні завдання
- •Лабораторна робота №3 Програмування циклічних алгоритмів
- •3.1. Відладка модулів проекта
- •3.1.1. Відладка синтаксичних помилок
- •3.1.2. Відладка логічних помилок
- •3.2. Приклад створення додатка
- •3.2.1. Розміщення компонентів на Формі
- •3.2.2. Текст модуля UnCiklAlg
- •3.3. Виконання індивідуального завдання
- •Індивідуальні завдання
- •Лабораторна робота №4 Програмування алгоритмів з використанням масивів
- •4.1. Приклад створення додатка
- •4.1.1. Розміщення компонентів на Формі
- •4.1.2. Створення процедур обробки подій SpinEdit1Change і SpinEdit2Change
- •4.1.3. Текст модуля UnMas
- •4.1.4. Робота з додатком
- •4.2. Виконання індивідуального завдання
- •Індивідуальні завдання
- •Лабораторна робота №5 програмування Алгоритмів з використанням рядків
- •5.1. Приклад створення додатка
- •5.1.1. Розміщення компонентів на Формі
- •5.1.2. Створення процедур обробки подій
- •5.1.3. Текст модуля UnStr
- •Індивідуальні завдання
- •Лабораторна робота №6 Програмування алгоритмів з використанням записів
- •6.1. Приклад створення застосування
- •6.1.1. Розміщення компонентів на Формі
- •6.1.2. Створення процедур обробки подій FormCreate і Button1Click
- •6.1.3. Текст модуля UnZap
- •6.2. Виконання індивідуального завдання
- •Індивідуальні завдання
- •Лабораторна робота №7 Програмування алгоритмів з використанням файлів
- •7.1. Приклад створення застосування
- •7.1.1. Розміщення компонентів на Формі
- •7.1.2. Створення процедур обробки подій
- •7.1.3. Текст модуля UnFile
- •7.1.4. Робота із застосуванням
- •7.2. Індивідуальні завдання
- •Лабораторна робота №8 Програмування алгоритмів з використанням функцій і процедур. Створення модулів
- •8.1. Приклад створення додатка
- •8.1.1. Розміщення компонентів на Формі
- •8.1.2. Створення модуля і підключення його до проекта
- •8.1.3. Текст модуля UnFuncProc
- •8.1.4. Текст модуля UnModul
- •8.2. Виконання індивідуального завдання
- •Індивідуальні завдання
- •Лабораторна робота №9 Програмування алгоритмів з використанням динамічних структур даних
- •Приклади створення застосувань
- •9.1. Використання динамічних масивів
- •9.1.1. Розміщення компонентів на Формі
- •9.1.2. Створення процедур обробки подій FormCreate і Button1Click
- •9.1.3. Текст модуля UnDinMas
- •9.2. Використання динамічних списків
- •9.2.1. Розміщення компонентів на Формі
- •9.2.2. Створення процедур обробки подій FormCreate і Button1Click
- •9.2.3. Текст модуля UnStek
- •9.3. Виконання індивідуального завдання
- •Навчально-методичне видання
- •43018, М. Луцьк, вул. Львівська, 75
9.2. Використання динамічних списків
Завдання 2: створити додаток для формування стека, який заповнюється шляхом введення цілих додатних чисел з клавіатури. Як тільки буде введено перше від’ємне число, вміст стека виводиться на панель інтерфейсу, а пам'ять займана його елементами звільняється.
Один з можливих варіантів панелі інтерфейсу створюваного додаток показаний на рис.9.2.
9.2.1. Розміщення компонентів на Формі
Розмістимо на Формі компоненти Label, Edit, Button і Memo.
Label
Memo
Edit
Button
Рис. 9.2
Збережемо модуль під ім'ям UnStek (текст модуля приведений в п.9.2.3).
9.2.2. Створення процедур обробки подій FormCreate і Button1Click
Подвійним натисненням клавіші “миші” на Формі і кнопці Button1 створіть відповідні процедури обробки подій. Використовуючи текст модуля UnStek, уважно наберіть операторів цих процедур.
9.2.3. Текст модуля UnStek
Unit UnStek;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs
StdCtrls;
type
TForm1 = class(TForm)
Label1: TLabel;
Edit1: TEdit;
Button1: TButton;
Label2: TLabel;
Label3: TLabel;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
Type
PSt=^Zap;
Zap=record
inf:integer;
adr:PSt
end;
Var // оголошення глобальних змінних:
PVer, // покажчик вершини стека
PTek:PSt; // поточний покажчик
ElSt:integer; // елемент стека
procedure TForm1.Button1Click(Sender: TObject);
begin
New(PTek); // виділити пам'ять
ElSt:=StrToInt(Edit1.Text);// у ElSt занести значення з Edit1
PTek^.inf:=ElSt; // в інформаційну частину стека занести ElSt
PTek^.adr:=PVer; // в адресну частину занести покажчик на вершину
PVer:=PTek;// покажчик вершини повинен указувати на останній елемент
if ElSt>=0 then // якщо елемент стека ненегативний тоді...
begin
Edit1.Text:='';// очистити вікно редактора Edit1
Edit1.SetFocus;// передати фокус введення редакторові Edit1
end
else
begin
Memo1.Lines.Add('Елементи стека:'); // вивести заголовок
repeat
Memo1.Lines.Add(#9+IntToStr(PTek^.inf));// виведення елементів
PVer:=PTek^.adr;
Dispose(PTek); // звільнити пам'ять
PTek:=PVer
until PTek=nil;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
PVer:=nil; // ініціалізувати покажчик вершини
ElSt:=0; // ініціалізувати елемент стека
end;
end.
9.3. Виконання індивідуального завдання
За вказівкою викладача виберіть два варіанти індивідуальних завдань. У всіх завданнях необхідно передбачити контрольне виведення початкових даних.
Створити додаток, яке здійснює введення к значень елементів одновимірного масиву з клавіатури, міняє місцями елементи з найбільшим і найменшим значеннями серед парних і виводить отриманий масив.
Створити додаток, яке здійснює введення m рядків і n стовпців двовимірного масиву з клавіатури і виводить номер рядка і номер стовпця найменшого зі всіх значень його елементів.
Створити додаток, яке здійснює введення к значень елементів одновимірного масиву з клавіатури і виводить порядковий номер елемента з найменшим значенням серед непарних.
Створити додаток, яке здійснює введення значень елементів двовимірного масиву n-го порядку з клавіатури і виводить значення найбільшого з елементів головної діагоналі.
Створити додаток, яке здійснює введення к значень елементів одновимірного масиву з клавіатури, змінює порядок проходження елементів на протилежний і виводить отриманий масив.
Створити додаток, яке здійснює введення к значень елементів одновимірного масиву з клавіатури і виводить порядковий номер елемента з найбільшим значенням серед парних.
Створити додаток, яке здійснює введення значень елементів двовимірного масиву n-го порядку з клавіатури і виводить значення суми елементів головної діагоналі.
Створити додаток, яке здійснює введення к значень елементів одновимірного масиву з клавіатури, міняє місцями елементи з мінімальним і максимальним значеннями і виводить отриманий масив.
Створити додаток, яке здійснює введення к значень елементів одновимірного масиву з клавіатури і виводить порядковий номер елемента з найменшим значенням серед додатних.
Створити додаток, яке здійснює введення значень елементів двовимірного масиву n-го порядку з клавіатури, змінює порядок проходження елементів головній діагоналі на протилежний і виводить перетворений масив.
Створити додаток, яке здійснює введення к значень елементів одновимірного масиву з клавіатури, міняє місцями елементи з мінімальним і максимальним значеннями серед додатних і виводить отриманий масив.
Створити додаток, яке здійснює введення к значень елементів одновимірного масиву з клавіатури і виводить порядковий номер елемента з найбільшим значенням серед негативних.
Створити додаток, яке здійснює введення к значень елементів одновимірного масиву з клавіатури, міняє місцями елементи з найбільшим значенням серед негативних і найменшим серед додатних і виводить отриманий масив.
Створити додаток, яке здійснює введення к значень елементів одновимірного масиву з клавіатури і виводить середнє арифметичне значення елементів масиву.
Створити додаток, яке здійснює введення к значень елементів одновимірного масиву з клавіатури, міняє місцями елементи з найменшим значенням серед парних і найбільшим серед непарних і виводить отриманий масив.
Створити додаток, яке заносить в стек цілі позитивні числа з клавіатури, виводить вміст стека і середнє арифметичне значення його елементів.
Створити додаток, яке заносить в стек символи з клавіатури, виводить вміст стека і повідомлення про те, міститься чи ні в стеку заданий символ.
Створити додаток, яке заносить в кожен елемент стека англійське слово з клавіатури і, як тільки буде введено слово “end”, виводить вміст стека.
Створити додаток, яке заносить в стек довільні цілі числа з клавіатури, виводить вміст стека і повідомлення про те, міститься чи ні в стеку задане число.
Створити додаток, яке заносить в стек символи з клавіатури, виводить вміст стека і повідомлення про те, чи впорядковані елементи стека за абеткою чи ні.
Створити додаток, яке заносить в стек позитивні цілі числа з клавіатури і, як тільки буде введено число, рівне сумі введених чисел, виводить вміст стека.