47859 (Опрацювання масивів), страница 2

2016-07-30СтудИзба

Описание файла

Документ из архива "Опрацювання масивів", который расположен в категории "". Всё это находится в предмете "информатика" из 1 семестр, которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "курсовые/домашние работы", в предмете "информатика, программирование" в общих файлах.

Онлайн просмотр документа "47859"

Текст 2 страницы из документа "47859"

„Всі літери”.

Після цього ця керуюча панель „Опції” набуде такого вигляду, як показано на рисунку 3.

Рисунок 3 - Керуюча панель „Опції”

Для забезпечення можливості виведення інформації про програму створюємо ще одне вікно „Про програму... ”, що міститиме поле для виведення необхідної інформації та керуючу кнопку „Вихід”, що дозволяє вийти з цього вікна. Вигляд цього вікна приведено на рисунку 4.

Рисунок 4 - Вікно „Про програму... ”

Для виведення інформації про розробника створюємо ще одне вікно, яке міститиме інформацію про розробника. На цьому вікні розміщуємо необхідні написи, фото та кнопку „Вихід”. Вигляд цього вікна приведено на рисунку 5:

Рисунок 5 - Вікно „Про програму... ”

Ще одна форма потрібна для початкової реєстрації користувача. Вона має назву „Зарегіструйте будь-ласка програму!!!”, та міститиме поле для введення реєстраційного коду, відповідний напис та керуючі кнопки „Далі” та „Вихід”. Її вигляд приведено на рисунку 6.

Рисунок 6 - Вікно „Розробник... ”

На цьому завершуємо проектування інтерфейсу і переходимо до програмної реалізації проекту.


6. Складання коду програми

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

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

procedure TForm1. FormCreate(Sender: TObject);

var

i, j: integer;

begin

for i: = 1 to MaxX do begin

for j: = 1 to MaxY do begin

sbut [i, j]: = TPanel. Create(form1);

sbut [i, j]. Parent: = form1;

sbut [i, j]. Height: = 20;

sbut [i, j]. Width: = 20;

sbut [i, j]. Top: = (i - 1) * 26 + 10;

sbut [i, j]. Left: = (j - 1) * 26 + 10;

sbut [i, j]. Color: = clYellow;

sbut [i, j]. OnClick: = panelOnClick;

end;

end;

end;

Наступна функція здійснює пошук слова, заданого користувачем у матриці символів. Порядок пошуку - зліва направо.

function TForm1. Search_LR: Boolean;

var

i, j, k: integer;

Myword: String;

begin

Search_LR: =False;

if Edit1. Text<>'' then begin // якщо задано якесь слово для пошуку

for i: = 1 to MaxX do

for j: = 1 to MaxY do // поки не кінець матриці

if (j+Length(Edit1. Text) - 1) <=MaxY then begin // якщо не кінець слова

for k: =0 to Length(Edit1. Text) - 1 do // Посимвольно формуємо змінну

Myword: =Myword+SBut [i,j+k]. Caption; // Myword

if Myword=Edit1. Text then begin // Якщо Myword співпадає із введеним

for k: =0 to Length(Edit1. Text) - 1 do begin // користувачем словом, то

sbut [i, j+k]. Font. Color: =clYellow; // інвертується колір тесту та фону панелі

sbut [i, j+k]. Color: = clBlue;

end;

Search_LR: =True;

{Exit; }

end else Myword: ='';

end;

end;

end;

Функції function TForm1. Search_RL: Boolean; function TForm1. Search_UD: Boolean; function TForm1. Search_DU: Boolean; мають дуже схожий до вище описаного алгоритму пошуку заданого слова, змінюється лише порядок пошуку.

Здійснення пошуку в усіх напрямах по черзі виконується наступною процедурою.

procedure TForm1. Search;

var Find,F1,F2,F3,F4: Boolean;

begin

if SearCB. ItemIndex<0 then Search_LR;

Find: =True;

F1: =True; F3: =True;

F2: =True; F4: =True;

case SearCB. ItemIndex of

0: Find: =Search_LR;

1: Find: =Search_RL;

2: Find: =Search_UD;

3: Find: =Search_DU;

4: begin

F1: =Search_LR;

F2: =Search_RL;

F3: =Search_UD;

F4: =Search_DU;

end;

end;

if (Find=False) or((F1=False) and(F2=False) and(F3=False) and(F4=False)) then

ShowMessage('Шуканої послідовності символів не знайдено! ')

end;

Функція Sumbol формує набір символів із введеної послідовності в розділі const. В залежності від вибору користувача масив заповнюється великими чи малими українськими, російськими, латинськими символами чи цифрами.

function TForm1. Sumbol: Char;

const

Ukr='йцукенгшщзхїфівапролджєячсмитьбюЙЦУКЕНГШЩЗХЇФІВАПРОЛДЖЄЯЧСМИТЬБЮ';

UkrL='йцукенгшщзхїфівапролджєячсмитьбю';

UkrB='ЙЦУКЕНГШЩЗХЇФІВАПРОЛДЖЄЯЧСМИТЬБЮ';

Rus='йцукенгшщзхъфывапролджэячсмитьбюЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮ';

RusL='йцукенгшщзхъфывапролджэячсмитьбю';

RusB='ЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮ';

Eng='qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM';

EngL='qwertyuiopasdfghjklzxcvbnm';

EngB='QWERTYUIOPASDFGHJKLZXCVBNM';

Num='0123456789';

begin

if ALF. ItemIndex<0 then ALF. ItemIndex: =0;

case ALF. ItemIndex of

0: begin

case RG. ItemIndex of

0: Sumbol: =UkrB [Random(Length(UkrB)) +1] ;

1: Sumbol: =UkrL [Random(Length(UkrL)) +1] ;

2: Sumbol: =Ukr [Random(Length(Ukr)) +1] ;

end;

end;

1: begin

case RG. ItemIndex of

0: Sumbol: =RusB [Random(Length(RusB)) +1] ;

1: Sumbol: =RusL [Random(Length(RusL)) +1] ;

2: Sumbol: =Rus [Random(Length(Rus)) +1] ;

end;

end;

2: begin

case RG. ItemIndex of

0: Sumbol: =EngB [Random(Length(EngB)) +1] ;

1: Sumbol: =EngL [Random(Length(EngL)) +1] ;

2: Sumbol: =Eng [Random(Length(Eng)) +1] ;

end;

end;

3: Sumbol: =Num [Random(Length(Num)) +1] ;

end;

end;

Нижче приведена процедура дозволяє заповнювати масив символами, що вводитимуться користувачем.

procedure Tform1. panelOnClick (sender: Tobject);

var

s: string;

Col: Integer;

begin

Col: =TPanel(sender). Color;

TPanel(sender). Color: =clRed;

s: = InputBox ('Введіть потрібний символ', 'Символ: ', TPanel(sender). Caption);

if S<>'' then

TPanel(sender). Caption: = S [1] ;

TPanel(sender). Color: =Col;

end;

Основні функціональні блоки програми описані. Решта програмного коду є досить проста для розуміння, тому не описувалась.

Лістинг програми наведено в додатку А.


7. Реалізація проекту у візуальному середовищі

Програмна реалізація у візуальному середовищі має свої особливості. Тому необхідно показати порядок її реалізації, зупинитись на особливостях. Це й зробимо у цьому розділі.

Спочатку потрібно завантажити середовище програмування Borland Delphi 7.0. Щоб створити новий додаток відразу в рядку меню вибираю: Файл Создать Приложение (при запуску Borland Delphi додаток створюється автоматично). Після чого на екрані з‘явиться нова порожня форма, назву якої за допомогою властивості Caption змінюємо на „Абетка”.

Для створення головного меню програми вибрано компонент MainMenu із закладки Standart. Для додання підпунктів меню на цьому компоненті двічі клацаємо та у властивості Caption вказуємо назву підпункту.

Щоб створити так звану „панель керування” програми використано компонент GroupBox, що знаходиться на закладці Standart. Цю панель називають „Опції” (властивість Caption). Із цієї ж закладки вибрано компонент Edit та Label, що призначені для введення слова для пошуку користувачем та підпису його відповідно (властивість Caption компоненти Label змінюємо на „Шукане слово”).

Випадаючі списки реалізуємо за допомогою компонентів ComboBox, що знаходяться на тій же закладці Standart. Властивість Text змінимо на „Виберіть слово” та „Виберіть напрям” відповідно.

Для вище описаних компонентів Edit та ComboBox властивість Color змінюємо на clBlue, щоб змінити їх фон. Таку ж властивість для Label встановимо на clYellow - колір напису.

Панелі, що потрібні для керування роботою програми, використовуємо компонент Panel, що знаходиться на тій же закладці. Властивості Caption змінюємо на „Знайти”, „Зняти виділення”, „Згенерувати масив”. Властивості Color змінюємо на clYellow - фон панелі. Властивість Font задає формат напису на панелі. Для неї встановимо колір шрифту на clBlue.

Щоб створити список перемикачів використаємо компонент RadioGroup (закладка Standart). Властивість Caption змінюємо на „Регістр”, Color - на clBlue.

Для створення кнопки „Вихід” та інших візуальних компонентів додатку використано додаткові „скіни” AlphaControls. Як це зробити покажемо у розділі 10. Після інсталяції бібліотек у панелі компонентів з’являться три нові закладки: AlphaStandart, AlphaAdditional, AlphaTools. Для створення цієї ж кнопки використаємо компонент sBitBtn (закладка AlphaStandart), її властивість Caption замінимо на „Вихід”.

Для створення реєстраційної форми виконуємо Файл Новая Другое і у закладці Форми вибираємо About Box. Аналогічно вище описаному змінюємо її назву (Caption). Для введення коду реєстрації додамо на форму поле Edit (закладка Standart), його фон змінимо на чорний (властивість Color). Для підпису цього поля використано компонент sLabelFX (закладка AlphaAdditional). Керуючі кнопки реалізовано за допомогою компонентів sBitBtn (закладка AlphaStandart). При цьому властивості Caption компонентів sLabelFX та sBitBtn необхідно змінити. Для забезпечення можливості використання „скінів” на цю форму помістимо sSkinManager (закладка AlphaTools). У його властивість SkinDirectory слід помістити шлях до „скінів” - а саме D: \Install\for_delphi_skin\acnt_reg7\Skins. У властивості SkinName слід вказати назву „скіна” - LikeOperaStyle (internal).

На кожну з форм слід помістити компонент sSkinProvider (закладка AlphaTools).

Для відображення інформації про програму створюємо однойменну форму.

На неї поміщаємо поле Мемо (закладка Standart), у властивості Lines якого вводимо потрібну інформацію про програму. Кнопку „Вихід” реалізуємо, використовуючи компонент sButton (закладка AlphaStandart).

На ще одну форму „Розробник... ” розміщуємо компонент Image (закладка Additional), а у його властивості Picture можна обрати фото. Для відображення текстової інформації на форму розміщуємо три компоненти sLabelFX та два - sStickyLabel із закладки AlphaAdditional і змінюю її властивість Caption.

Кнопка „Вихід” реалізується за допомогою компоненту sButton (закладка AlphaStandart).

На цьому реалізацію програми у візуальному середовищі завершено.

8. Аналіз програми

Виконана у попередніх розділах робота в основному достатня для виконання поставленого завдання. Проте для перевірки цього факту, функціональної закінченості проекту, вияснення його позитивних та негативних сторін, визначення напрямків доопрацювання необхідно провести повний аналіз розробки.

Насамперед, для виявлення функціональної повноти програми, визначимо головні її можливості:

можливість захисту від несанкціонованого доступу;

можливість автоматичної генерації символів матриці генератором випадкових чисел, або заповнення її користувачем в ручному режимі;

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

вибір алфавіту символів, з яких формується матриця;

можливість пошуку заданого користувачем слова у матриці символів;

вибір напрямку пошуку;

зручний та наглядний інтерфейс програми.

Як бачимо із вище написаного програма забезпечує виконання поставленого завдання у повному обсязі. Але як і будь-яка інша розробка, має певні недоліки:

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

не передбачена можливість додання нових, не передбачених програмою символів у матрицю (редагування алфавітів);

можна вибирати напрям пошуку лише у чотирьох напрямках. Пошук по діагоналі, або ще якось не передбачено.

Всі ці недоліки є відносно несуттєвими, та, швидше, можуть доповнити функціональні можливості програми, ніж принципово її змінити. Тобто основні завдання, що передбачені завданням, виконані.

9. Тестування програми

Тестування роботи програми виконувалось насамперед на етапах розробки програми у середовищі візуального програмування Borland Delphi. Тобто саме середовище при появі певних помилок при роботі програми видає повідомлення про помилку. При цьому може вказуватись достатньо зрозуміло причина виникнення помилки, місце виникнення її у програмі, тип помилки.

Крім цього у Borland Delphi передбачені певні можливості відлагодження програм, наприклад, так зване покрокове виконання програми, що дуже допомагають при виправленні помилок.

Після ж закінчення розробки програми тестуємо програму, перевіряючи порядок та правильність запуску форм, виконання операцій, формат введення даних, діапазон вводу. Насамперед запустивши програму перевіряється послідовність появи форм - першою має з’явитись реєстраційна форма. У цій формі треба перевірити відповідність введеного паролю вірному. Після цієї перевірки з’являється головна форма. В цій формі перевіряється правильність виконання усіх операцій, що вибираються на панелі „Опції”.

Після цієї перевірки запускаються із головного меню форми „Про програму... ” та „Розробник”. Ще раз пересвідчуємося у відповідності зображеного на них задуманому та доопрацьовуємо за потреби їх.

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

10. Інструкція з експлуатації програми

Для роботи із створеною програмою її необхідно скопіювати з компакт диску на жорсткий диск комп’ютера папку із програмою, де з нею будуть працювати. Для цього на жорсткому диску має бути 4,93Мб вільного простору для цієї програми. Крім цього комп’ютер має відповідати таким мінімальним вимогам:

Операційна система Windows (бажано Windows ХР для забезпечення візуальних ефектів програми);

процесор з тактовою частотою 400МГц;

64 Мбайт оперативної пам’яті;

4,93 Мбайт вільного простору на дисковому носії;

кольоровий монітор та відео адаптер, що б забезпечували розширення хоча б 800*600 при частоті оновлення 60Гц та 16-ти бітний кольоровий режим роботи.

дисковод;

клавіатура;

маніпулятор „миша”.

Для роботи із програмою потрібно запустити на виконання файл Project1_0. exe. У реєстраційну форму вводять код, що можна побачити у файлі cod. txt. Проте для подальшої роботи над доопрацюванням програми та її аналізу слід встановити необхідні „скіни”.

Для цього їх потрібно встановити та здійснити налаштування у Delphi. Це здійснюється так:

Розпаковуємо архів acnt_reg7. exe у папку, що вибирається користувачем (наприклад, Install).

Ця директорія має бути зареєстрована в так званому шляху пошуку системи (system search path). Потрібно додати AlphaControls папку у Delphi (Tools - >Environment Options->Library->Library Path). Далі вибрати шлях, наприклад, D: \Install\for_delphi_skin\acnt_reg7\D7.

Використовуємо File\Open. Вибираємо шлях де знаходиться run-time паркет, наприклад, D: \Install\for_delphi_skin\acnt_reg7\D7\ acntD7_R. dpk. У вікні що відкриється, натискаємо кнопку Compile.

Використовуємо File\Open. Вибираємо шлях де знаходиться design - time паркет, наприклад, D: \Install\for_delphi_skin\acnt_reg7\D7\ acntD7. dpk. У вікні що відкриється, натискаємо кнопку Install, щоб встановити цю бібліотеку.

Цього буде достатньо для роботи програми, але за необхідності можна додатково встановити пакет DB-aware.

Після цього можна користуватись новими закладками панелі компонентів та запускати без помилок проект Delphi (файл Project1_0. dpr).

11. Аналіз отриманих результатів

Аналіз отриманих результатів проведемо, розглянувши результати роботи програми. Після запуску програми на виконання отримаємо реєстраційну форму програми, вигляд якої зображено на рисунку 7:

Рисунок 7 - Реєстраційна форма

Після введення реєстраційного коду потрібно натиснути кнопку „Далі”. В разі введення правильного коду, з’явиться головна форма проекту (рисунок 8).

Рисунок 8 - Головна форма програми

В іншому випадку у полі Реєстраційної форми з’явиться відповідне повідомлення і потрібно повторити введення коду (рисунок 8(а)).

Рисунок 8(а)

В головній формі для керування роботою потрібно користуватись панеллю „Опції”. для початку задають умови заповнення матриці: регістр символів, що задається відповідними перемикачами, алфавіт, з якого генеруватимуться символи. Для автоматичної генерації натискають кнопку „Згенерувати масив”. Після цього матриця заповниться символами.

Якщо ж користувач сам заповнює матрицю, або ж хоче редагувати певні символи заповненої матриці він обирає вузол матриці та натискає на ньому. Після цього з’явиться діалогове вікно для введення символу (рисунок 9).

Рисунок 9 - Діалогове вікно для введення символу

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

Рисунок 10 - Пошук слова

Далі можна задати нові умови пошуку і виконати його. Щоб зняти виділення натискають відповідну кнопку. У разі, якщо пошук не дав результатів виводиться відповідне повідомлення.

Рисунок 11 - Інформаційне повідомлення

При виборі пункту меню „Про програму” з’явиться вікно, що показане на рисунку 12

Рисунок 12 - Вікно „Про програму”

При виборі пункту меню „Розробник” з’явиться вікно, що показане на рисунку 13

Рисунок 13 - Вікно „Розробник”

По закінченні роботи із програмою здійснюють вихід натисканням кнопки „Вихід”.


Висновок

Отже, результатом роботи є створення програмного продукту та пояснювальної записки, що відповідають темі курсової роботи - „Опрацювання масивів. Розробити програму пошуку послідовності символів в двовимірному масиві. Передбачити декілька напрямків пошуку. ”

Підсумовуючи усе зроблене вважаю закінчення роботи над курсовою роботою - логічним висновком вивчення предмету ”Програмування та алгоритмічні мови”. Ця робота дала дуже багато мені у плані здобуття та підсумування знань та умінь із програмування, зокрема в середовищі візуального програмування Borland Delphi.

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


Література

  1. Глинський Я.М., Анохін В. Є., Ряжська В.А. Turbo Pascal і Delphi. Практикум. - Львів, 2003.

  2. Гофман В.Э., Хомоненко А.Д. Delphi 6: - Спб, 2002.

  3. Культин Н.Б. Delphi 6. Программирование на Object Pascal: - Спб, 2002.


Додаток

Додаток А

Лістінг головної програми:

program Project1_0;

uses

Forms,

Unit1_0 in 'Unit1_0. pas' {Form1};

{$R *. res}

begin

Application. Initialize;

Application. CreateForm(TForm1, Form1);

Application. Run;

end.

unit Unit1;

interface

uses Windows, SysUtils, Classes, Graphics, Forms, Controls, StdCtrls,

Buttons, ExtCtrls, sButton, sSkinProvider, sSkinManager;

type

TAboutProgram = class(TForm)

Memo1: TMemo;

sButton1: TsButton;

sSkinProvider1: TsSkinProvider;

procedure OKButtonClick(Sender: TObject);

procedure sButton1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

AboutProgram: TAboutProgram;

implementation

uses Unit1_0;

{$R *. dfm}

procedure TAboutProgram. OKButtonClick(Sender: TObject);

begin

Form1. Enabled: =True;

Close;

end;

procedure TAboutProgram. sButton1Click(Sender: TObject);

begin

Form1. Enabled: =True;

Close;

end;

end.

unit Unit1_0;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, Buttons, StdCtrls, ExtCtrls, jpeg, Menus, sBitBtn,

sSkinProvider, sSkinManager;

type

TForm1 = class(TForm)

Edit1: TEdit;

SearCB: TComboBox;

ALF: TComboBox;

RG: TRadioGroup;

GroupBox1: TGroupBox;

Label1: TLabel;

Panel1: TPanel;

Panel2: TPanel;

Panel3: TPanel;

MainMenu1: TMainMenu;

N1: TMenuItem;

N2: TMenuItem;

sBitBtn1: TsBitBtn;

sSkinProvider1: TsSkinProvider;

procedure FormCreate(Sender: TObject);

function Search_LR: Boolean;

function Search_RL: Boolean;

function Search_UD: Boolean;

function Search_DU: Boolean;

procedure Search;

function Sumbol: Char;

procedure Edit1KeyDown(Sender: TObject; var Key: Word;

Shift: TShiftState);

procedure SpeedButton1Click(Sender: TObject);

procedure panelOnClick (sender: Tobject);

procedure ALFChange(Sender: TObject);

procedure SearCBChange(Sender: TObject);

procedure Panel1Click(Sender: TObject);

procedure Panel2Click(Sender: TObject);

procedure Panel3Click(Sender: TObject);

procedure Panel4Click(Sender: TObject);

procedure N1Click(Sender: TObject);

procedure N2Click(Sender: TObject);

procedure FormClose(Sender: TObject; var Action: TCloseAction);

procedure sBitBtn1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

Const MaxY = 25;

MaxX = 25;

var

Form1: TForm1;

sbut: array [1. MaxX,

1. MaxY] of TPanel;

X1,Y1: Integer;

implementation

uses Unit1, Unit2, Unit3;

{$R *. dfm}

procedure TForm1. FormCreate(Sender: TObject);

var

i, j: integer;

begin

for i: = 1 to MaxX do begin

for j: = 1 to MaxY do begin

sbut [i, j]: = TPanel. Create(form1);

sbut [i, j]. Parent: = form1;

sbut [i, j]. Height: = 20;

sbut [i, j]. Width: = 20;

sbut [i, j]. Top: = (i - 1) * 26 + 10;

sbut [i, j]. Left: = (j - 1) * 26 + 10;

sbut [i, j]. Color: = clYellow;

sbut [i, j]. OnClick: = panelOnClick;

end;

end;

end;

function TForm1. Search_LR: Boolean;

var

i, j, k: integer;

Myword: String;

begin

Search_LR: =False;

if Edit1. Text<>'' then begin

for i: = 1 to MaxX do

for j: = 1 to MaxY do

if (j+Length(Edit1. Text) - 1) <=MaxY then begin

for k: =0 to Length(Edit1. Text) - 1 do

Myword: =Myword+SBut [i,j+k]. Caption;

if Myword=Edit1. Text then begin

for k: =0 to Length(Edit1. Text) - 1 do begin

sbut [i, j+k]. Font. Color: =clYellow;

sbut [i, j+k]. Color: = clBlue;

end;

Search_LR: =True;

{Exit; }

end else Myword: ='';

end;

end;

end;

function TForm1. Search_RL: Boolean;

var

i, j, k: integer;

Myword: String;

begin

Search_RL: =False;

if Edit1. Text<>'' then begin

for i: = 1 to MaxX do

for j: = 1 to MaxY do

if (j+Length(Edit1. Text) - 1) <=MaxY then begin

for k: =Length(Edit1. Text) - 1 DownTo 0 do

Myword: =Myword+SBut [i,j+k]. Caption;

if Myword=Edit1. Text then begin

for k: =Length(Edit1. Text) - 1 DownTo 0 do begin

sbut [i, j+k]. Font. Color: =clRed;

sbut [i, j+k]. Color: = clBlack;

end;

Search_RL: =True;

{Exit; }

end else Myword: ='';

end;

end;

end;

function TForm1. Search_UD: Boolean;

var

i, j, k: integer;

Myword: String;

begin

Search_UD: =False;

if Edit1. Text<>'' then begin

for i: = 1 to MaxX do

for j: = 1 to MaxY do

if (i+Length(Edit1. Text) - 1) <=MaxX then begin

for k: =0 to Length(Edit1. Text) - 1 do

Myword: =Myword+SBut [i+k,j]. Caption;

if Myword=Edit1. Text then begin

for k: =0 to Length(Edit1. Text) - 1 do begin

sbut [i+k,j]. Font. Color: =clBlack;

sbut [i+k,j]. Color: = clRed;

end;

Search_UD: =True;

{Exit; }

end else Myword: ='';

end;

end;

end;

function TForm1. Search_DU: Boolean;

var

i, j, k: integer;

Myword: String;

begin

Search_DU: =False;

if Edit1. Text<>'' then begin

for i: = 1 to MaxX do

for j: = 1 to MaxY do

if (i+Length(Edit1. Text) - 1) <=MaxX then begin

for k: =Length(Edit1. Text) - 1 DownTo 0 do

Myword: =Myword+SBut [i+k,j]. Caption;

if Myword=Edit1. Text then begin

for k: =Length(Edit1. Text) - 1 DownTo 0 do begin

sbut [i+k,j]. Font. Color: =clBlue;

sbut [i+k,j]. Color: = clGreen;

end;

Search_DU: =True;

{Exit; }

end else Myword: ='';

end;

end;

end;

procedure TForm1. Search;

var Find,F1,F2,F3,F4: Boolean;

begin

if SearCB. ItemIndex<0 then Search_LR;

Find: =True;

F1: =True; F3: =True;

F2: =True; F4: =True;

case SearCB. ItemIndex of

0: Find: =Search_LR;

1: Find: =Search_RL;

2: Find: =Search_UD;

3: Find: =Search_DU;

4: begin

F1: =Search_LR;

F2: =Search_RL;

F3: =Search_UD;

F4: =Search_DU;

end;

end;

if (Find=False) or((F1=False) and(F2=False) and(F3=False) and(F4=False)) then

ShowMessage('Шуканої послідовності символів не знайдено! ')

end;

function TForm1. Sumbol: Char;

const

Ukr='йцукенгшщзхїфівапролджєячсмитьбюЙЦУКЕНГШЩЗХЇФІВАПРОЛДЖЄЯЧСМИТЬБЮ';

UkrL='йцукенгшщзхїфівапролджєячсмитьбю';

UkrB='ЙЦУКЕНГШЩЗХЇФІВАПРОЛДЖЄЯЧСМИТЬБЮ';

Rus='йцукенгшщзхъфывапролджэячсмитьбюЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮ';

RusL='йцукенгшщзхъфывапролджэячсмитьбю';

RusB='ЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮ';

Eng='qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM';

EngL='qwertyuiopasdfghjklzxcvbnm';

EngB='QWERTYUIOPASDFGHJKLZXCVBNM';

Num='0123456789';

begin

if ALF. ItemIndex<0 then ALF. ItemIndex: =0;

case ALF. ItemIndex of

0: begin

case RG. ItemIndex of

0: Sumbol: =UkrB [Random(Length(UkrB)) +1] ;

1: Sumbol: =UkrL [Random(Length(UkrL)) +1] ;

2: Sumbol: =Ukr [Random(Length(Ukr)) +1] ;

end;

end;

1: begin

case RG. ItemIndex of

0: Sumbol: =RusB [Random(Length(RusB)) +1] ;

1: Sumbol: =RusL [Random(Length(RusL)) +1] ;

2: Sumbol: =Rus [Random(Length(Rus)) +1] ;

end;

end;

2: begin

case RG. ItemIndex of

0: Sumbol: =EngB [Random(Length(EngB)) +1] ;

1: Sumbol: =EngL [Random(Length(EngL)) +1] ;

2: Sumbol: =Eng [Random(Length(Eng)) +1] ;

end;

end;

3: Sumbol: =Num [Random(Length(Num)) +1] ;

end;

end;

procedure TForm1. Edit1KeyDown(Sender: TObject; var Key: Word;

Shift: TShiftState);

begin

if Key=13 then Search;

end;

procedure TForm1. SpeedButton1Click(Sender: TObject);

begin

Close;

end;

procedure Tform1. panelOnClick (sender: Tobject);

var

s: string;

Col: Integer;

begin

Col: =TPanel(sender). Color;

TPanel(sender). Color: =clRed;

s: = InputBox ('Введіть потрібний символ', 'Символ: ', TPanel(sender). Caption);

if S<>'' then

TPanel(sender). Caption: = S [1] ;

TPanel(sender). Color: =Col;

end;

procedure TForm1. ALFChange(Sender: TObject);

begin

if ALF. ItemIndex=3 then RG. Enabled: =False

else RG. Enabled: =True;

Edit1. SetFocus;

end;

procedure TForm1. SearCBChange(Sender: TObject);

begin

Edit1. SetFocus;

end;

procedure TForm1. Panel1Click(Sender: TObject);

begin

if SearCB. ItemIndex<0 then SearCB. ItemIndex: =0;

Search;

end;

procedure TForm1. Panel2Click(Sender: TObject);

var i,j: Integer;

begin

for i: =1 to MaxX do

for j: =1 to MaxY do begin

sbut [i, j]. Font. Color: =clBlue;

sbut [i, j]. Color: =clYellow;

end;

end;

procedure TForm1. Panel3Click(Sender: TObject);

var i,j: Integer;

begin

Randomize;

for i: = 1 to MaxX do

for j: = 1 to MaxY do begin

sbut [i, j]. Caption: = Sumbol;

sbut [i, j]. Font. Color: =clBlue;

sbut [i, j]. Color: =clYellow;

end;

end;

procedure TForm1. Panel4Click(Sender: TObject);

begin

Close;

end;

procedure TForm1. N1Click(Sender: TObject);

begin

Form1. Enabled: =False;

AboutProgram. Show;

end;

procedure TForm1. N2Click(Sender: TObject);

begin

Form1. Enabled: =False;

AboutBox. Show;

end;

procedure TForm1. FormClose(Sender: TObject; var Action: TCloseAction);

begin

AboutBox1. close;

end;

procedure TForm1. sBitBtn1Click(Sender: TObject);

begin

close;

end;

end.

Лістінг модуля Unit2:

unit Unit2;

interface

uses Windows, SysUtils, Classes, Graphics, Forms, Controls, StdCtrls,

Buttons, ExtCtrls, sBitBtn, sSkinProvider, sSkinManager, sPanel, sLabel,

sButton;

type

TAboutBox = class(TForm)

Panel1: TPanel;

Image1: TImage;

sLabelFX1: TsLabelFX;

sLabelFX2: TsLabelFX;

sStickyLabel1: TsStickyLabel;

sStickyLabel2: TsStickyLabel;

sLabelFX3: TsLabelFX;

sSkinProvider1: TsSkinProvider;

sButton1: TsButton;

procedure OKButtonClick(Sender: TObject);

procedure sBitBtn1Click(Sender: TObject);

procedure sBitBtn2Click(Sender: TObject);

procedure sButton1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

AboutBox: TAboutBox;

implementation

uses Unit1_0;

{$R *. dfm}

procedure TAboutBox. OKButtonClick(Sender: TObject);

begin

Form1. Enabled: =True;

close;

end;

procedure TAboutBox. sBitBtn1Click(Sender: TObject);

begin

Form1. Enabled: =True;

close;

end;

procedure TAboutBox. sBitBtn2Click(Sender: TObject);

begin

Form1. Enabled: =True;

close;

end;

procedure TAboutBox. sButton1Click(Sender: TObject);

begin

Form1. Enabled: =True;

close;

end;

end.

Лістінг модуля Unit3:

unit Unit3;

interface

uses Windows, SysUtils, Classes, Graphics, Forms, Controls, StdCtrls,

Buttons, ExtCtrls, sSkinProvider, sBitBtn, sSkinManager, sLabel;

type

TAboutBox1 = class(TForm)

Edit1: TEdit;

sBitBtn1: TsBitBtn;

sSkinProvider1: TsSkinProvider;

sBitBtn2: TsBitBtn;

sLabelFX1: TsLabelFX;

sSkinManager1: TsSkinManager;

procedure OKButtonClick(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure Panel1Click(Sender: TObject);

procedure Panel2Click(Sender: TObject);

procedure sBitBtn1Click(Sender: TObject);

procedure sBitBtn2Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

AboutBox1: TAboutBox1;

implementation

uses Unit1_0, Unit2;

{$R *. dfm}

procedure TAboutBox1. OKButtonClick(Sender: TObject);

begin

if Edit1. Text='1111' then begin

Form1. Show;

AboutBox. Visible: =False;

end

else

Edit1. Text: ='Код не вірний, спробуйте ще раз... ';

end;

procedure TAboutBox1. Button1Click(Sender: TObject);

begin

close;

end;

procedure TAboutBox1. Panel1Click(Sender: TObject);

begin

if Edit1. Text='80968540042' then begin

Form1. Show;

AboutBox. Visible: =False;

end

else

Edit1. Text: ='Код не вірний, спробуйте ще раз... ';

end;

procedure TAboutBox1. Panel2Click(Sender: TObject);

begin

close;

end;

procedure TAboutBox1. sBitBtn1Click(Sender: TObject);

begin

if Edit1. Text='80968540042' then begin

Form1. Show;

AboutBox. Visible: =False;

end

else

Edit1. Text: ='Код не вірний, спробуйте ще раз... ';

end;

procedure TAboutBox1. sBitBtn2Click(Sender: TObject);

begin

close;

end;

end.

н

1

49


Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5301
Авторов
на СтудИзбе
416
Средний доход
с одного платного файла
Обучение Подробнее