Материал: Кластерний аналіз

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

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

1.      Label

Для відображення різних написів на формі використовуються в основному компоненти Label і Panel. Перші два з цих компонентів - мітки, спеціально призначені для відображення текстів. Основне призначення панелі Panel - компоновка компонентів у вікні форми, проте можна використовувати і для виведення текстів.

Тексти, які відображаються в компонентах, визначаються значенням їх властивості Caption. Його можна встановлювати в процесі проектування або задавати і змінювати програмно під час виконання програми. Наприклад:. Caption = «Новий текст»;

Властивість Caption має тип рядка AnsiString. При присвоєнні цього типу числової інформації відбувається її автоматичне перетворення в рядок. Тому ви можете безпосередньо здійснювати подібні присвоювання. Наприклад:. Caption = 5.1;

Оператор призведе до появи в мітці напису «5,1». Але якщо ви хочете занести в мітку змішану інформацію, що складаються з рядків символів і чисел, ви повинні скористатися функціями FloatToStr і IntToStr, що переводять відповідно числа з плаваючою комою і цілі в рядок. Для формування тексту, що складається з декількох фрагментів, можна використовувати операцію «+», яка для рядків означає їх склеювання (конкатенацію). Наприклад, якщо в програмі є ціла змінна I, що відображає число співробітників деякої організації, то вивести в мітку Label1 інформацію про це можна оператором:. Caption = «Число співробітників:» + IntToStr (I);

У всіх компонентах колір фону визначається властивістю Color, а колір напису подсвойством Color властивості Font. Якщо колір спеціально не задавати, то колір фону зазвичай зливається з кольором контейнера, що містить мітку, так що фон просто не помітний.

Для мітки Label колір і шрифт - єдино доступні елементи оформлення напису. Компоненти StaticText і Panel мають крім того властивість Border - Style, визначальне рамку тексту - бордюр. При стилі sbsNone мітка StaticText по виду не відрізняється від мітки Label. Ймовірно, якщо вже використовувати бордюр, то найбільш приємний стиль sbsSunken.

Компонент Panel крім властивості BorderStyle має ще властивості Bevellnner, BevelOuter, BevelWidth, BorderWidth, які надають багаті можливості оформлення напису. Таким чином, з точки зору оформлення виведеного тексту максимальні можливості дає Panel і мінімальні Label.

Розміщення всіх текстових компонентів на формі визначається, зокрема, властивостями Top, Left, Height, Width, Aline, спільними для всіх віконних компонентів. Ці властивості, що визначають координати компонента, його розміри і їх зміну при зміні користувачем розмірів батьківського компонента.

Розмір міток Label і StaticText визначається також властивістю AutoSize. Якщо ця властивість встановлено в true, то вертикальний і горизонтальний розміри компонента визначаються розміром напису. Якщо ж AutoSize одно false, то вирівнювання тексту всередині компонента визначається властивістю Alignment, яке дозволяє вирівнювати текст по лівому краю, правому краю або центру клієнтської області мітки. У панелі Panel також є властивість AutoSize, але воно не відноситься до розмірів написи Caption. Однак властивість вирівнювання Alignment працює і для панелі.

У мітці Label є властивість WordWrap - допустимість переносу слів довгою написи, що перевищує довжину компонента, на нову сходинку. Щоб такий перенос міг здійснюватися, треба встановити властивість WordWrap в true, властивість AutoSize в false (щоб розмір компоненту не визначався розміром напису) і зробити висоту компонента такий, щоб у ньому могло поміститися кілька рядків. Якщо WordWrap не встановлено у true при AutoSize рівному false, то довгий текст, що не міститься в рамці мітки, просто обрізається.

2. StringGrid

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

Компонент StringGrid призначений в першу чергу для відображення таблиць текстової інформації. Однак компонент може відображати і графічну інформацію.

Всі ці властивості доступні під час виконання. Задавати тексти можна програмно або за окремими осередкам, або відразу по стовпцях і рядках за допомогою методів класу TStrings.

Властивості ColCount і RowCount визначають відповідно число стовпців і рядків, властивості FixedCols і FixedRows - число фіксованих, що не прокручуваних стовпців і рядків. Колір фону фіксованих осередків визначається властивістю FixedColor.

Властивості LeftCol і TopRow визначають відповідно індекси перший видимого на екрані в даний момент прокручуваного стовпця і першою видимою прокручуваному рядка.

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

Властивість Options є множиною, визначальним багато властивостей таблиці: наявність розділових вертикальних і горизонтальних ліній у фіксованих (goFixedVertLine і goFixedHorzLine) і не фіксованих (goVertLine і goHorzLine) осередках, можливість для користувача змінювати за допомогою миші розміри стовпців і рядків (goCoISizing і goRowSizing), переміщати стовпці і рядки (goColMoving і goRowMoving) і багато іншого. Важливим елементом у властивості Options є goEditing - можливість редагувати вміст таблиці.

В основному компонент StringGrid використовується для вибору користувачем якихось значень, відображених в осередках.

Властивості Col і Row показують індекси стовпця і рядка виділеної комірки. Можливо також виділення користувачем безлічі осередків, рядків і стовпців.

Серед безлічі подій компонента StringGrid слід відзначити подію OnSelectCell, що виникає в момент вибору користувачем осередки. У обробник цієї події передаються цілі параметри ACol і ARow - стовпець і рядок виділеного осередку, і булеві параметр CanSelect - допустимість вибору.

Параметр CanSelect можна використовувати для заборони виділення комірки, задавши його значення false. А параметри ACol і ARow можуть використовуватися для якоїсь реакції програми на виділення користувача.

3. Button

Найпростішою і, мабуть, найбільш часто використовуваної кнопкою є кнопка Button, розташована на сторінці бібліотеки Standard. Рідше використовується кнопка BitBtn, знана, насамперед, можливістю відобразити на її поверхні зображення. Більшість властивостей, методів і подій у цих видів кнопок однакові.

Основне з точки зору зовнішнього вигляду властивість кнопки - Caption (напис). У написах кнопок можна передбачати використання клавіш прискореного доступу, виділяючи для цього один із символів напису. Перед символом, який повинен відповідати клавіші прискореного доступу, ставиться символ амперсанда «&». Цей символ не з'являється в написи, а наступний за ним символ виявляється підкресленим. Тоді користувач може замість клацання на кнопці натиснути в будь-який момент клавішу Alt спільно з клавішею виділеного символу.

Наприклад, якщо у вашому додатку є кнопка виконання якоїсь операції, ви можете задати її властивість Caption рівним «& Start». На кнопці цей напис буде мати вигляд «Start». І якщо користувач натисне клавіші Alt + S, то це буде еквівалентно клацанню на кнопці.

Основна подія будь кнопки - OnClick, що виникає при натисканні на ній. Саме в обробнику цієї події записуються оператори, які повинні виконуватися при клацанні користувача на кнопці. Крім цього є ще ряд подій, пов'язаних з різними маніпуляціями клавішами і кнопками миші. Писати обробник події OnClick треба, якщо ви не пов'язуєте властивістю Action дану кнопку з якимось дією.

Властивість Cancel, якщо встановити його в true, визначає, що натискання користувачем клавіші Esc буде еквівалентно клацанню на даній кнопці. Ця властивість доцільно ставити рівним true для кнопок Скасувати в різних діалогових вікнах, щоб можна було вийти з діалогу, клікнувши на цю кнопку або натиснувши клавішу Esc.

Властивість Default, якщо його встановити в true, визначає, що натискання користувачем клавіші введення Enter буде еквівалентно натисканню на дану кнопку, навіть якщо дана кнопка в цей момент не перебуває у фокусі. Правда, це спрацює, якщо у фокусі знаходиться якийсь віконний компонент. Якщо ж у момент натискання Enter у фокусі знаходиться інша кнопка, то все-таки спрацює саме кнопка у фокусі. Якщо у декількох кнопок на формі властивість Default задано рівним true, то при натисканні Enter спрацює та з них, яка знаходиться раніше в послідовності табуляції.

З методів, властивих кнопках, має сенс відзначити один - Click. Виконання цього методу еквівалентно клацанню на кнопці, тобто викликає подія кнопки OnClick. Цим можна скористатися, щоб продублювати якимись іншими діями користувача клацання на кнопці. Нехай, наприклад, ви хочете, щоб при натисканні користувачем клавіші з символом «С» або «з» в будь-який момент роботи з додатком виконувалися операції, передбачені в обробнику події OnClick кнопки Button1. Оскільки невідомо, який компонент буде натискатися у фокусі в момент цієї події, треба перехопити його на рівні форми. Такий перехоплення здійснюється, якщо встановити властивість форми KeyPreview = true. Тоді в обробнику події форми OnKeyPresss можна написати оператор:((Кеу = 'С') || (Кеу = 'з')). Click ();

Якщо користувач ввів символ «С» або «з», то в результаті буде виконаний обробник клацання кнопки Button1.

4. Edit

Компонент Edit призначений для введення тексту. Розташований він на вкладці Standard Палітри компонентів:

Основна його властивість - це Text. Воно дозволяє читати і записувати деякий текст в Edit. Зверніть увагу, що ця властивість має строковий тип (вірніше тип AnsiString, але зараз це уточнення не настільки важливо). Це означає, що якщо користувач вводить в edit деяке число, то необхідно додаткове перетворення. Робиться це пріблізітетльно так:

int z = StrToInt (Edit1. Text);

Крім функції StrToInt є обернена до неї IntToStr. Вони переводять рядок в ціле число і ціле число в рядок відповідно. Крім цієї пари функцій є пара StrToFloat і FloatToStr, котрі працюють з речовими числами.

Основна подія для edit'а - це Change. Виникає при зміні властивості Text.

Крім того, часто використовуються такі події як KeyPress (виникає при введенні кожного символу), KeyDown і KeyUp (виникають при натисканні та відпусканні клавіші).

2.3 Структура програми з описом функцій складових частин і зв'язків між ними

Структура програми являє собою набір функцій. Наша програми містить 5 функцій.

1.      procedure TForm1. FormCreate (Sender:TObject)

Стандартна функція середовиша Borland Delphi. Під час виконання цієї функції відбувається створення об’єктів програми і початок відображення форми для взаємодії з користувачем.

2.      procedure TForm1. Edit1-2Change (Sender: TObject)

Функція призначена для задання розмірності початкової матриці.

3.      procedure TForm1. Button3Click (Sender: TObject)

Ця функція здійснює рандомне заповнення початкової матриці.

4.      4.procedure TForm1. Button1Click (Sender: TObject)

Функція здійснює кластерування методом к-середніх.

5.      procedure TForm1. Button2Click (Sender: TObject)

Фукціїя кластеризує за допомогою методу деревовидної кластеризації

 


3. Опис і тестування програми


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

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

·              відповідність вимогам, якими керувалися проектувальники та розробники

·              правильна відповідь для усіх можливих вхідних даних

·              виконання функцій за прийнятний час

·              практичність

·              сумісність з програмним забезпеченням та операційними системами

·              відповідність задачам замовника.

Оскільки число можливих тестів навіть для нескладних програмних компонент практично нескінченне, тому стратегія тестування полягає в тому, щоб провести всі можливі тести з урахуванням наявного часу та ресурсів. Як результат програмне забезпечення (ПЗ) тестується стандартним виконанням програми з метою виявлення баґів (помилок або інших дефектів).

Тестування ПЗ може надавати об'єктивну, незалежну інформацію про якість ПЗ, ризики відмови, як для користувачів так і для замовників.

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

Источник: https://www.bibliofond.ru/view.aspx?id=864248