скачать рефераты

скачать рефераты

 
 
скачать рефераты скачать рефераты

Меню

Програмування в Delphi скачать рефераты

p align="left">10: Case I of

1: Begin

Memo2.Lines.Add (' Відповідь вірна');

m := m + 1;

End;

2: Begin

Memo2.Lines.Add (' Відповідь не вірна');

Memo2.Lines.Add ('Опрацюйте матеріал спочатку');

End;

3: Begin

Memo2.Lines.Add (' Відповідь не вірна');

Memo2.Lines.Add ('Опрацюйте матеріал спочатку');

End;

4: Begin

Memo2.Lines.Add (' Відповідь не вірна');

Memo2.Lines.Add ('Опрацюйте матеріал спочатку');

End;

5: Begin

Memo2.Lines.Add (' Відповідь не вірна');

Memo2.Lines.Add ('Опрацюйте матеріал спочатку');

End;

end;

11: Case I of

1: Begin

Memo2.Lines.Add (' Відповідь не вірна');

Memo2.Lines.Add ('Опрацюйте матеріал спочатку');

End;

2: Begin

Memo2.Lines.Add (' Відповідь вірна');

m := m + 1;

End;

3: Begin

Memo2.Lines.Add (' Відповідь не вірна');

Memo2.Lines.Add ('Опрацюйте матеріал спочатку');

End;

4: Begin

Memo2.Lines.Add (' Відповідь не вірна');

Memo2.Lines.Add ('Опрацюйте матеріал спочатку');

End;

5: Begin

Memo2.Lines.Add (' Відповідь не вірна');

Memo2.Lines.Add ('Опрацюйте матеріал спочатку');

End;

end;

12: Case I of

1: Begin

Memo2.Lines.Add (' Відповідь не вірна');

Memo2.Lines.Add ('Опрацюйте матеріал спочатку');

End;

2: Begin

Memo2.Lines.Add (' Відповідь вірна');

m := m + 1;

End;

3: Begin

Memo2.Lines.Add (' Відповідь не вірна');

Memo2.Lines.Add ('Опрацюйте матеріал спочатку');

End;

4: Begin

Memo2.Lines.Add (' Відповідь не вірна');

Memo2.Lines.Add ('Опрацюйте матеріал спочатку');

End;

5: Begin

Memo2.Lines.Add (' Відповідь не вірна');

Memo2.Lines.Add ('Опрацюйте матеріал спочатку');

End;

end;

13: Case I of

1: Begin

Memo2.Lines.Add (' Відповідь не вірна');

Memo2.Lines.Add ('Опрацюйте матеріал спочатку');

End;

2: Begin

Memo2.Lines.Add (' Відповідь не вірна');

Memo2.Lines.Add ('Опрацюйте матеріал спочатку');

End;

3: Begin

Memo2.Lines.Add (' Відповідь не вірна');

Memo2.Lines.Add ('Опрацюйте матеріал спочатку');

End;

4: Begin

Memo2.Lines.Add (' Відповідь не вірна');

Memo2.Lines.Add ('Опрацюйте матеріал спочатку');

End;

5: Begin

Memo2.Lines.Add (' Відповідь вірна');

m := m + 1;

End;

end;

14: Case I of

1: Begin

Memo2.Lines.Add (' Відповідь не вірна');

Memo2.Lines.Add ('Опрацюйте матеріал спочатку');

End;

2: Begin

Memo2.Lines.Add (' Відповідь не вірна');

Memo2.Lines.Add ('Опрацюйте матеріал спочатку');

End;

3: Begin

Memo2.Lines.Add (' Відповідь не вірна');

Memo2.Lines.Add ('Опрацюйте матеріал спочатку');

End;

4: Begin

Memo2.Lines.Add (' Відповідь вірна');

m := m + 1;

End;

5: Begin

Memo2.Lines.Add (' Відповідь не вірна');

Memo2.Lines.Add ('Опрацюйте матеріал спочатку');

End;

end;

15: Case I of

1: Begin

Memo2.Lines.Add (' Відповідь не вірна');

Memo2.Lines.Add ('Опрацюйте матеріал спочатку');

End;

2: Begin

Memo2.Lines.Add (' Відповідь не вірна');

Memo2.Lines.Add ('Опрацюйте матеріал спочатку');

End;

3: Begin

Memo2.Lines.Add (' Відповідь вірна');

m := m + 1;

End;

4: Begin

Memo2.Lines.Add (' Відповідь не вірна');

Memo2.Lines.Add ('Опрацюйте матеріал спочатку');

End;

5: Begin

Memo2.Lines.Add (' Відповідь не вірна');

Memo2.Lines.Add ('Опрацюйте матеріал спочатку');

End;

end;

end;

end;

procedure TForm1.Button3Click(Sender: TObject);

begin

Close;

end;

procedure TForm1.Button2Click(Sender: TObject);

begin

Memo1.Clear;

Memo2.Clear;

Edit1.Clear;

Label3.Caption := '';

k := k + 1;

Case k of

2: Begin

Label3.Caption := 'З чого складається програма ?';

Memo1.Lines.Add('1. StringAnsi');

Memo1.Lines.Add('2. StringShort');

Memo1.Lines.Add('3. З основної частини і декількох модулів');

Memo1.Lines.Add('4. Short');

Memo1.Lines.Add('5. WideShort');

End;

3: Begin

Label3.Caption := 'Яким ключовим словом починається заголовок програми?';

Memo1.Lines.Add('1. Статистичні і динамічні');

Memo1.Lines.Add('2. Формальні і статичні');

Memo1.Lines.Add('3. Типові і динамічні');

Memo1.Lines.Add('4. Program');

Memo1.Lines.Add('5. Логічні і формальні');

End;

4: Begin

Label3.Caption := 'Чим починається і закінчується розділ опису логіки програми?';

Memo1.Lines.Add('1. Об'+'"'+'єднання множин : +');

Memo1.Lines.Add('2. Пересічення множин : *');

Memo1.Lines.Add('3. Еквівалентність : =');

Memo1.Lines.Add('4. Перевірка входження : <=');

Memo1.Lines.Add('5. Begin..End.');

End;

5: Begin

Label3.Caption := 'Який розділ програми є обовязковим?';

Memo1.Lines.Add('1. нефіксованої кількісті різних типів');

Memo1.Lines.Add('2. фіксованої кількісті тільки однакових типів');

Memo1.Lines.Add('3. розділ опису логіки програми');

Memo1.Lines.Add('4. нефіксованої кількісті однакових типів');

Memo1.Lines.Add('5. однакової кількісті різних типів');

End;

6: Begin

Label3.Caption := 'Яким ключовим словом починається розділ опису констант? ';

Memo1.Lines.Add('1. Файлова константа');

Memo1.Lines.Add('2. Const');

Memo1.Lines.Add('3. Файловий оператор');

Memo1.Lines.Add('4. Файловий масив');

Memo1.Lines.Add('5. Файлові записи');

End;

7: Begin

Label3.Caption := 'Яким ключовим словом починається заголовок модуля?';

Memo1.Lines.Add('1. Дійсного типу');

Memo1.Lines.Add('2. Unit ');

Memo1.Lines.Add('3. Типу множина');

Memo1.Lines.Add('4. Типу масив');

Memo1.Lines.Add('5. Файлового типу');

End;

8: Begin

Label3.Caption := 'Яким ключовим словом починається інтерфейсна секція?';

Memo1.Lines.Add('1. mass[1..5] of real');

Memo1.Lines.Add('2. real[1..5] of real');

Memo1.Lines.Add('3. interface');

Memo1.Lines.Add('4. readmass[1..5] of real');

Memo1.Lines.Add('5. matr[1..5] of real');

End;

9: Begin

Label3.Caption := 'Яким ключовим словом починається описова секція?';

Memo1.Lines.Add('1. 128');

Memo1.Lines.Add('2. Implementation');

Memo1.Lines.Add('3. 32767');

Memo1.Lines.Add('4. 65535');

Memo1.Lines.Add('5. 2147483647');

End;

10: Begin

Label3.Caption := 'Яким ключовим словом починається секція ініціалізації? ';

Memo1.Lines.Add('1. initialization');

Memo1.Lines.Add('2. елементи другої множини, що не містяться в першій множині');

Memo1.Lines.Add('3. елементи множини, що містяться в другій множині');

Memo1.Lines.Add('4. елементи множини, що містяться в першій множині');

Memo1.Lines.Add('5. елементи першої множини, що містяться в другій множині');

End;

11: Begin

Label3.Caption := 'Яким ключовим словом починається секція деініціалізації?';

Memo1.Lines.Add('1. одним');

Memo1.Lines.Add('2. finalization');

Memo1.Lines.Add('3. трьома');

Memo1.Lines.Add('4. чотирма');

Memo1.Lines.Add('5. п'+'"'+'ятьма');

End;

12: Begin

Label3.Caption := 'Яка схема програм реалізується у Windows ?';

Memo1.Lines.Add('1. 4 Гб');

Memo1.Lines.Add('2. Керованих подіями');

Memo1.Lines.Add('3. 512 Кб');

Memo1.Lines.Add('4. 256 Кб');

Memo1.Lines.Add('5. 64 Кб');

End;

13: Begin

Label3.Caption := 'Як розшифровується абревіатура API ?';

Memo1.Lines.Add('1. LengthSet');

Memo1.Lines.Add('2. SetString');

Memo1.Lines.Add('3. StringSet');

Memo1.Lines.Add('4. StringLength');

Memo1.Lines.Add('5. Інтерфейс прикладного програмування');

End;

14: Begin

Label3.Caption := 'Який розділ програми є обовязковим?';

Memo1.Lines.Add('1. f1 : TextFile');

Memo1.Lines.Add('2. f2 : File of integer');

Memo1.Lines.Add('3. f3 : File of real');

Memo1.Lines.Add('4. Begin..End.');

Memo1.Lines.Add('5. f5 : System.Text');

End;

15: Begin

Label3.Caption := 'Яким ключовим словом починається розділ опису типів?';

Memo1.Lines.Add('1. Low');

Memo1.Lines.Add('2. SetLow');

Memo1.Lines.Add('3. Type');

Memo1.Lines.Add('4. High');

Memo1.Lines.Add('5. LowHigh');

End;

end;

if k > 15 then

Begin

if (m>=0)and(m<4) then km := 1;

if (m>=4)and(m<7) then km := 2;

if (m>=7)and(m<9) then km := 3;

if (m>=9)and(m<12) then km := 4;

if (m>=12)and(m<=15) then km := 5;

Str(km:7,Skm);

Edit3.Text := Skm;

Exit;

End;

Sk := IntToStr(k);

Edit2.Text := Sk;

Edit1.SetFocus;

Form1.Button1.Enabled := False;

end;

procedure TForm1.FormActivate(Sender: TObject);

begin

Edit1.SetFocus;

Sk := IntToStr(k);

Edit2.Text := Sk;

Form1.Button1.Enabled := False;

end;

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);

begin

if not ( Key in ['1'..'5']) then

Begin

Key := #0;

Beep;

Exit;

End;

Form1.Button1.Enabled := True;

end;

end.

Результат роботи тест-програми

ПРАКТИЧНА ЧАСТИНА

Метод Гаусса з вибором головного елементу для розв'язку СЛАР

У лінійній алгебрі розглядаються чотири класи основних задач: розв'язок систем лінійних алгебраїчних рівнянь (СЛАР), знаходження визначників, визначення обернених матриць, знаходження особистих значень і особистих векторів матриць. Всі ці задачі мають важливе прикладне значення при розв'язанні різних проблем науки і техніки. Крім того, задачі лінійної алгебри є допоміжними при реалізації багатьох алгоритмів математики і математичної фізики.

Необхідно визначити СЛАР

а11 х1 + а12 х2 + ... + а1n хn = а1,n+1 , (1.1)

а21 х1 + а22 x2 + …+ а2n хn =a2,n+1,

аn1 х1 + а n2 x2+ ...+ аnn xn = an,n+1,

де хk -- невідомі величини; а ij -- задані елементи розширеної матриці системи рівнянь. Для розв'язку СЛАР приміняють два класи методів: прямі та ітераційні. Прямі методи універсальні і приміняються до розв'язку систем невисокого порядку (n< 200). Ітераційні методи зручно використовувати для СЛАР високого порядку з слабо заповненими матрицями.

Метод Гаусса відноситься до прямих методів. Алгоритм методів складається з двох етапів. Перший етап називається прямим ходом і заключається у послідовному виключенні невідомих з рівнянь, починаючи з х1.

З першого рівняння системи(1.1) виражаємо невідоме х1:

х1 = (а1,n+1 - а12 х2 - ... -а1n хn )/а11, (1.2)

що можливе при а11 ? 0, в іншому випадку потрібно виконати перестановку рівнянь системи. Згідно формулі (1.2) потрібно кожен елемент першого рядка розширеної матриці СЛАР поділити на діагональний елемент

а1j(1) = a1j /a11. (1.3)

Потім підставляємо вираз (1.2) у всі рівняння системи, тим самим відкидаємо х1 із всіх рівнянь, крім першого. Елементи розширеної матриці перетворюємо по формулі

a i j(1) = а i j - аi 1а1j(1) ,

i = 2, 3, ..., n; j = 1, 2, ..., n+1. (1.4)

У результаті виключення першого невідомого х1 із всіх рівнянь, всі елементи першого стовпчика перетворення матриці будуть рівні нулю, крім а11(1) =1.

Невідоме х2 виражаємо із другого рівняння системи і виключаємо із останніх рівнянь і т.д. В результаті отримуємо СЛАР з верхньою трикутною матрицею, у якої всі елементи нижче головної діагоналі рівні нулю.

Запишем вирази для невідомих хk і перетворення елементів розширеної матриці системи, згідно формулам (1.2) - (1.4):

xk = (аk,n+1 -? аk j хj )/а kk , (1.5)

а kj (m+1) = аkj (m)/ а kk(m),

а i j (m+1)= а i j (m)- а i k(m)а kj (m).

Другий етап розв'язку СЛАР називається зворотнім ходом методу Гаусса і полягає в послідовному визначенні невідомих х k за першою формулою (1.5), починаючи з невідомого х n і закінчуючи х1 .

Точність результатів буде визначатися точністю виконання арифметичних операцій при перетворенні елементів матриці. Для зменшення похибки при діленні на діагональний елемент (друга формула (1.5)) рекомендується виконати таку перестановку рівнянь, щоб поставити на діагональ найбільший по модулю із всіх елементів цього стовпчика. Така процедура називається вибором головного елемента стовпчика. Кількість арифметичних операцій у методі Гаусса зв'язано з розмірністю системи і наближено рівно 2/3 n3 . Контроль отриманих розв'язків можна провести шляхом їх підстановки в початкову СЛАР і знаходження rk , різницю між правими і лівими частинами рівнянь:

r k = а k,n+1 - ? аk j х j (1.6)

При малій похибці розв'язок величини r k буде наближатися до нуля.

Мал.1.1. Блок-схема програми розв'язку СЛАР методом Гаусса

Програму розв'язку СЯАР методом Гаусса складемо з трьох блоків (мал. 1.1). В блоці О (основна програма) задамо порядок системи і звертаємось до блоку 1, в якому визначаються елементи розширеної матриці СЛАР. Потім звертаємось до блоку 2, де реалізована програма методу Гаусса. Після цього виведем на дисплей результати розв'язку СЛАР або звістку про те, що розв'язок не існує у випадку виродженої матриці (DЕТ = О).

Для загальності блок 1 оформлений у вигляді окремої підпрограми. Тут елементи розширеної матриці задаються по рядкам у діалоговому режимі з клавіатури ПЕВМ. Хоча для інших конкретних задач елементи матриці можуть визначатися шляхом обчислення за даним алгоритмом, що потребує зміни програми блоку 1. Блок 2 являє собою програму методу Гаусса, яка складається з програми прямого і зворотнього ходів. У процесі прямого ходу здійснюється перестановка рядків матриці з метою вибору головних елементів стовпців.

Особливістю програми 1.1 мовою Паскаль є введення нових типів перемінних MAT і VEC для матриці А і вектора результатів Х. Таке введення потрібне тому, що перемінні А і Х є формальними і фактичними параметрами процедур.

Для контролю програм вирахуємо систему рівнянь

х1 - 3х2 + 2х3 =7 ,

4х1 + 6х2 + х3 = 3 ,

2х1 + х2 - 2х3 = -1,

у результаті отримаємо х1 = 2, х2 = -1, х3 = 1.

Реалізація програми для метода Гауса для СЛАР

program Project1;

{$APPTYPE CONSOLE}

uses

SysUtils;

Type

MAT=array [1..20,1..21] of real;

VEK=array [1..20] of real;

Var

A:MAT;

X:VEK;

I, N:integer;

S: real;

Procedure MATR (N:integer; var A:MAT);

Var

I, J:integer;

Begin

for I:=1 to N do

For J:=1 to N+1 do

begin

Write (' A', I:2, J:2, ' ? => ');

readln (A[I, J])

End

End;

Procedure Gauss (N:integer; var A:MAT; var X:VEK; var S:real);

Var

I,J,K,L,K1,N1:integer;

R:real;

Begin

N1:= N+1;

For K := 1 to N do

begin

K1:= K+1;

S:= A[K,K];

J := K;

For I := K1 to N do

begin

R:= A[I,K];

If abs (R) > abs (S) then

begin

S:= R;

J:= I

end

End;

If S = 0.0 then exit;

If J <> K then

for I:= K to N1 do

begin

R:= A[K, I];

A[K, I]:= A[J, I];

A[J, I]:= R

end;

For J:= K1 to N1 do A[K, J]:= A[K, J] / S;

For I:= K1 to N do

begin

R:= A[I, K];

For J:= K1 to N1 do A[I, J]:= A[I, J] - A[K, J] *R

End

End;

If S <> 0.0 then

For I:= N downto 1 do

begin

S:= A[I, N1];

For J:= I+1 to N do S:= S - A[I, J]*X[J];

X [I]:= S

End

End;

begin

Repeat

write (' N ? => ');

Readln (N);

Matr (N,A);

Gauss (N, A, X, S);

If S <> 0.0 then

for I:= 1 to N do

writeln (' X', I:2, ' = ', X[I])

Else

writeln (' DET = 0');

Until false ;

Readln;

Readln;

end.

Результат роботи програми

Висновок

При виконанні курсової роботи я поглибила свої знання в області комп'ютерної техніки, набула практичних навичок роботи з ЕОМ та інформацією представленою в ній, навчилась самостійно шукати методи розв'язку задач, освоїла прийоми систематизації знань та використала їх на практиці, глибше зрозуміла основи алгоритмізації та програмування при розв'язку задач, навчилась виконувати оформлення результатів роботи та представляти їх при захисті, освоїла основні елементи практичного програмування, уяснила роль програмного забезпечення ЕОМ, добре засвоїла принципи роботи з найбільш необхідним програмним забезпеченням та мовами програмування (Windows, MS Offise, Delphi).

Список використаної літератури

1. Бородич Ю.С. и др. Паскаль для персональных компьютеров. Минск, изд-во "Вышейшая школа". 1991

2. Зуев Е.А. и др. Язык прграммирования Turbo Pascal, М. "Унитех", 1992

3. Введение в Делфи 6. Электронный вариант.

4. Сухарев М.В. Основы Делфи. изд-во "Наука и техника", С-П, 2004

5. Хомоненко А. и др. Делфи 7, С-П. "БХВ-Петербург", 2006

6. Галисеев Г.В. Компоненты в Делфи 7. изд-во "Диалектика", С-П, 2004

7. Ф.В. Левитин, Алгоритмы: введение в разработку и анализ, М.”Вильямс”, 2006.

8. С.В.Поршнев, Вычислительная математика. Курс лекций, СПб,”БХВ-Петербург”, 2004.

9. К.Х. Зеленский, Компьютерные методы прикладной математики, К,”Дизайн”, 1999.

10. В.Е. Краскевич и др., Численне методы в инженерных исследованиях,-К,”Вища школа”,1986.

Страницы: 1, 2, 3