пис структури програмного проекту

ипи даних Borland Delphi

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

ілий тип

Мова Delphi i підтримує сім цілих типів даних: shortint, smallint, Longint, Int64, Byte, word і Longword, опис яких приведений нижче.

Таблиця 1.1

Тип Діапазон Формат
Shortint -128..127 8 бітів
Smallint -32 768 .. 32 767 16 бітів
Longint -2 147 483 648 .. 2 147 483 647 32 біти
Int64   64 біти
Byte 0..255 8 бітів, без знаковий
Word 0..65 535 16 бітів, без знаковий
Longword 0 .. 4 294 967 295 32 біти, без знаковий

Delphi підтримує і самий універсальний цілий тип - Integer, який еквівалентний Longint.

ійсний тип

Мова Delphi підтримує шість дійсних типів: Real, single, Double, Extended, comp, Currency. Типи розрізняються між собою діапазоном допустимих значень, кількістю значущих цифр і кількістю байтів.

Таблиця 1.2

Тип Діапазон Значущі цифри Байтів
Real 2.9*E-39..1.7*E38 11-12
Single 1.5 *E-45..3.4*E 38 7-8
Double 5.0*E-324 ..1.7*E308 15-16
Extended 3.4*E-4932 ..1.1 *E4932 19-20
Comp 1.0 .. 9.2*E18 19-20
Currency 0.0001 .. 9.2*E14 19-20

 

имвольний тип

Мова Delphi підтримує два символьні типи: Ansichar і Widechar:

· тип Ansichar — це символи в кодуванні ANSI, яким відповідають числа в діапазоні від 0 до 255;

· тип widechar — це символи в кодуванні Unicode, їм відповідають числа від 0 до 65 535.

Delphi підтримує і самий універсальний символьний тип - Char, який еквівалентний Ansichar.

ядковий тип

Мова Delphi підтримує два рядкові типи: shortstring та WideString: тип shortstring є статично розміщуваними в пам'яті комп'ютера рядка завдовжки від 0 до 255 символів; тип WideString є динамічно розміщувані в пам'яті рядками, довжина яких була обмежена тільки об'ємом вільної пам'яті. Кожний символ рядка типу WideString є Unicode-символом.

В мові Delphi для позначення рядкового типу допускається використовування ідентифікатора string. Тип string еквівалентний типу shortstring.

1.5 Логічний тип

Логічна величина може приймати одне з двох значень True (істина) або False (хибно). В мові Delphi логічні величини відносять до типу Boolean.


2 Аналіз завдань та розробка методів вирішування задач

Масив - це безліч однотипних елементів, об'єднаних загальним ім'ям і займають в комп'ютері певну область пам'яті. Кількість елементів у масиві завжди звичайно. У загальному випадку масив - це структурований тип даних, що складається з фіксованого числа елементів, що мають один і той же тип. Назва регулярний тип (або ряди) масиви отримали за те, що в них об'єднані однотипні (логічно однорідні) елементи, впорядковані (врегульовані) за індексами, що визначає положення кожного елемента в масиві. В якості елементів масиву можна використовувати будь-який тип даних, тому цілком правомірно існування масивів записів, масивів покажчиків, масивів рядків, масивів і т.д.Елементами масиву можуть бути дані будь-якого типу, включаючи структуруванняя. Тип елементів масиву називається базовим. Особливістю мови Паскаль є те, що число елементів масиву фіксується при описі і в процесі виконання програми не змінюється. Елементи, що утворюють масив, впорядковані таким чином, що кожному елементу відповідає сукупність номерів (індексів), що визначають його місце розташування в загальній послідовності. Доступ до кожного окремого елементу здійснюється шляхом індексування елементів масиву. Індекси представляють собою вираження будь-якого скалярного типу (частіше цілого), крім речовинного. Тип індексу визначає межі зміни значень індексу. Для опису масиву призначено словосполучення array of.

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

Характеристики масиву:

· Розмірність – кількість індексів.

· Розмір – загальна кількість елементів.

· Тип даних (числові, символьні).

 

Загальний вигляд опису масивів:

<ім’я змінної>: array [<межі зміни індексів>] of <тип>;

<ім’я змінної> – імя масиву:

array - зарезервоване слово мови програмування, що означає масив:

<межі зміни індексів> - цілі константи, що визначають діапазон зміни індексів:

<тип> - тип елементів масиву.

При виконанні завдання ми використовували іменовані константи для оголошення масивів розмірyjcns n n, де n = k mod 3+6, (k номер студента в журналі групи).

const

n=6;

k=11;

var

a:array[1..n,1..n] of real;

b:array[1..n] of real;

Наступним етапом є введення елементів масиву – це процес одержання значень елементів масиву. Існує декілька варіантів організації введення масиву: з використанням генератора випадкових чисел, за формулою, з використанням компонентів Memo, StringGrid і т.д.

Виходячи з завдання курсової роботи ми вводили елементи масиву А(n n) за формулою A[I,j]=cos(i+j)k.

for i:=1 to n do

for j:=1 to n do

begin

a[i,j]:=cos(i+j)*k;

З масиву, що відповідає матриці А (n n) утворили одновимірний масив В розмірністю n елементи якого є сумою непарних елементів відповідного рядка:

begin

for i:=1 to n do

for j:=1 to n do

if abs(a[i,j])< min then min:=abs(a[i,j]);

end;

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

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

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

Сортування (sortіng) процес, що дозволяє впорядкувати безліч подібних даних у зростаючому або спадаючому порядку.

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

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

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


пис структури програмного проекту

procedure TForm1.BitBtn1Click(Sender: TObject);//Завдання 1

begin

for i:=1 to n do

for j:=1 to n do

begin

a[i,j]:=cos(i+j)*k;

StringGrid1.Cells[j-1,i-1]:=FloatToStrF(a[i,j],ffFixed,6,2);

label3.caption:='Згенерована квадратна матриця А розмірності де дорівнює (К-номер студента в журналі групи а j-номер групи)'

end;

end;

 

procedure TForm1.BitBtn2Click(Sender: TObject); //Завдання 2

var

min:real;

begin

for i:=1 to n do

for j:=1 to n do

if abs(a[i,j])< min then min:=abs(a[i,j]);//знаходження мінімального об`єкта

label1.caption:='Мінімальний об`єкт '+FloatToStrF(min,ffFixed,6,2);

label3.caption:='В двовимірному масиві, що відповідає матриці а, знайти мінімальний по модолю об`єкт'

end;

 

 

procedure TForm1.BitBtn3Click(Sender: TObject); //Завдання 3

var

sb:real;

begin

for i:=1 to n do

begin

sb:=0;

for j:=1 to n do

if j mod 2<>0then sb:=sb+a[i,j];

b[i]:=sb;

stringgrid2.Cells[i-1,0]:=floattostrF(b[i],ffFixed,6,2);

label3.caption:='b[i] є сумою [i] рядка з непарним номером стовбців'

end;

end;

 

 

procedure TForm1.BitBtn4Click(Sender: TObject); //Завдання 4

var

t:real;

begin

for i:=1 to n do//Сортування масиву

c[i]:=b[i];

for i:=1 to n do

for j:=1 to n-1 do

if c[j]>c[j+1] then

begin

t:=c[j];

c[j]:=c[j+1];

c[j+1]:=t;

end;

for i:=1 to n do

StringGrid3.Cells[i-1,0]:=FloatToStrF(c[i],ffFixed,6,2);

label3.caption:='сортування одновимірного масиву b за зростанням методом обмінного сортування'

end;

 

 

procedure TForm1.BitBtn5Click(Sender: TObject); //Завдання 5

var

s:real;

begin

s:=0;

for i:=1 to n do

s:=s+sin(b[i]+c[n+1-i]);// знаходження добутку за формулою s:=s+ +sin(b[i]+c[n+1-i])

label2.caption:='Сума-'+floattostrF(s,ffFixed,6,2);

label3.caption:='використовуючи елементи масивів b та c виконати обчислення s:=s+sin(b[i]+c[n+1-i])'

end;

 

 

procedure TForm1.BitBtn6Click(Sender: TObject); //Завдання 6

var

s,t:real;

min:integer;

//Обчислюємо характеристику стовпців матриці А - сума додатних елементів

begin

for i:=1 to n do

begin

s:=1;

for j:=1 to n do

if (j mod 2 <>0) then s:=s*a[i,j];

X[i]:=S;

stringGrid5.Cells[0,i-1]:=FloatToStr(x[i]);

end;

for i:=1 to n do

begin

y[i]:=x[i]; //Копія массиву x

stringGrid5.Cells[0,i-1]:=FloatToStr(y[i]);

end;

for i:=1 to n do //Сортування масиву

for j:=1 to n do

d[i,j]:=a[i,j];

for i:=1 to n-1 do

begin

min:=i;

for j:=i+1 to n do

if y[j]<y[min] then min:=j;

t:=y[i];

y[i]:=y[min];

y[min]:=t;

for j:=1 to n do

begin

t:=d[i,j];

d[i,j]:=d[min,j];

d[min,j]:=t;

end;

label3.caption:='Характеристика рядків матриці А є добуток елементів з непарними індексами'

end;

 

for i:=1 to n do

stringGrid6.Cells[0,i-1]:=FloatToStr(y[i]); //Виведення відсортованої характеристики

for i:=1 to n do

for j:=1 to n do

stringGrid4.Cells[j-1,i-1]:=FloatToStrF(D[i,j],ffFixed,6,2); //Виведення відсортованого масиву

end;

 

 

procedure TForm1.BitBtn7Click(Sender: TObject); //Завдання 7

var

st:string;

begin

for i:=1 to n do

begin

st:='';

for j:=1 to n do

st:=st+' '+floattostrF(a[i,j],ffFixed,6,2); //Виведення матриці А в поле memo1

memo1.Lines.add(st);

end;

memo1.Lines.SaveToFile('a.txt'); //Збереження елементів матриці А в текстовий документ

for i:=1 to n do

begin

st:='';

st:=st+' '+floattostrF(b[i],ffFixed,6,2);

memo2.Lines.add(st);

end;

memo2.Lines.SaveToFile('b.txt');

 

for i:=1 to n do

begin

st:='';

st:=st+' '+floattostrF(c[i],ffFixed,6,2);

memo3.Lines.add(st);

end;

memo3.Lines.SaveToFile('c.txt');

 

for i:=1 to n do

begin

st:='';

st:=st+' '+floattostrF(x[i],ffFixed,6,2);

memo4.Lines.add(st);

end;

memo4.Lines.SaveToFile('x.txt');

 

for i:=1 to n do

begin

st:='';

for j:=1 to n do

st:=st+' '+floattostrF(d[i,j],ffFixed,6,2);

memo5.Lines.add(st);

end;

memo5.Lines.SaveToFile('d.txt');

label3.caption:='збереження масивів'

end;

 

end.

 

4 Реалізація проекту в середовищі Borland Delphi

Для виконання завдання курсової роботи на формі розмістили компоненти:

Компонента GroupBox1 використовуєть для групування об’єктів BitBtn. Компонента BitBtn 1-7 використовується для реалізації та виконання завдань.

Компонента Label 1-2 використовується для виведення результатів розрахунків.

Компонента Label 3 використовується для виведення коментарів до завдань.

Компонента Memo 1-6 використовується для загального виведення

обрахунків матриць і масивів.

Компонента StringGrid 1- 6 використовується для виведення результатів обчислення та розрахунків завдань №3,№4,№6.