Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Тема: Створення додатків ОС Windows в ІDE Delphi.
Мета: Навчитися створювати додатки, що складаються з кількох форм.
Завдання:
1. Створити новий додаток, що складається з головної форми та форм, створених для наступних завдань.
Зауваження: в додатку всі форми мають імена, що не повторюються (якщо ви маєте дві форми з однаковим імям перейменуйте одну з них, змінюючи для форми її властивість name, форми збережіть в спільному для них каталозі).
2. На головній формі привязати до компонентів Button процедури обробки події, що містять FormX.Show (X номер форми).
3. Перевірити роботу програми.
4. Роздрукувати отримані результати (головна форма та її програмний модуль).
Вимоги до звіту
У звіті з лабораторної роботи повинні бути відображені:
Підготовка до роботи
За вказаною літературою вивчити:
Контрольні питання
1. Активізація ІDE і вихід із середовища.
2. Вікна ІDE.
3. Призначення й зміст головного вікна ІDE.
4. Вікно Інспектора об'єктів
5. Вікно Конструктора форми.
6. Вікно Дерева об'єктів.
7. Вікно Редактора коду.
8. Панелі інструментів.
9. Палітра компонентів.
10. Меню головного вікна ІDE. Опції пунктів Файл, Виправлення, Пошук, Вид, Проект, Виконати, Компоненти, База даних, Сервіс, Вікно, Допомога.
11. Властивості форми та її зовнішній вигляд.
12. Як додати у форму компоненти?
13. Рядок введення Edit.
14. Поля виводу тексту Label.
15. Командна кнопка, компонент Button.
Практична частина
Необхідно створити новий додаток, що складається з головної форми та форм, які створені для наступних лабораторних робіт: лінійні обчислювальні процеси, обчислювальні процеси з розгалуженнями, циклічні обчислювальні процеси, обробка одновимірних масивів, обробка двовимірних масивів.
Для цього необхідно виконати наступні дії.
Компоненти:
Label1 (властивості Caption присвоїмо значення „КУРС "ПРОГРАМУВАННЯ ТА ТЕОРІЯ АЛГОРИТМІВ". Лабораторні роботи студента 2 курсу ЛФ групи... П.І.Б.”).
Button1 (властивості Сaption присвоїмо значення «Лінійні процеси»),
Button2 (властивості Сaption присвоїмо значення «Процеси з розгалуженням»),
Button3 (властивості Сaption присвоїмо значення «Циклічні процеси»),
Button4 (властивості Сaption присвоїмо значення «Одновимірний масив»),
Button5 (властивості Сaption присвоїмо значення «Двовимірний масив»),
Button6 (властивості Сaption присвоїмо значення «Вихід»).
Рисунок 14 Інформаційне вікно
7.1. Вказати маршрут розміщення проекту, тобто у вікні , що зявиться, створити нову папку та відкрити її;
7.2. Задати нове імя першого модуля або залишити запропоноване системою Unit1 і зберегти його, натиснувши кнопку Сохранить;
7.3. Пункт 7.2 виконати для всіх модулів;
7.4. Вказати імя проекту або залишити запропоноване системою Project1.
Увага! При першому збереженні проекту запис файлів в папку відбувається в два етапи: спочатку зберігається модуль форми проекту з розширенням .pas, потім зберігається файл проекту з розширенням .dpr.
При збереженні в папці проекту автоматично створюється група допоміжних файлів, які не треба знищувати або редагувати.
Текст модуля
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Label1: TLabel;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Button5: TButton;
Button6: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses Unit2, Unit3, Unit4, Unit5, Unit6, Unit7;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
Form2.show
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Form3.show
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
Form4.show
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
Form5.show
end;
procedure TForm1.Button5Click(Sender: TObject);
begin
Form6.show
end;
procedure TForm1.Button6Click(Sender: TObject);
begin
Form1.close
end;
end.
Результат роботи
Висновки
Тема: Програмування лінійних обчислювальних процесів.
Мета: навчитися виконувати обчислення математичних виразів.
Завдання:
Створити додаток, що дозволяє виконувати обчислення заданих виразів (варіанти завдань обираються згідно таблиці 12).
Таблиця Варіанти завдань
№ |
Розрахункові формули |
Дані |
|
x=1,82 y=18 z=-3,29 |
|
|
x=0,33 y=0,02 |
|
|
a=-0,5 b=1,7 t=0,44 |
|
|
a=-0,5 b=15,5 x=-2,9 |
|
|
a=16,5 b=3,4 x=0,61 |
|
|
a=0,7 b=0,05 x=0,5 |
|
|
a=1,1 b=0,04 x=0,2 |
|
|
a=3,2 b=17,5 x=-4,8 |
|
|
|
a=10,2 x=2,2 b=9,2 c=0,5 |
|
a=0,3 b=0,9 x=0,61 |
|
|
a=0,5 b=3,1 x=1,4 |
|
|
a=16,5 b=3,4 x=0,61 |
|
|
a=0,5 b=2,9 x=0,3 |
|
|
|
x=1,42 y=-1,27 z=3,5 |
|
m=10,7 c=2,1 x=1,7 a=0,5 |
|
|
|
x=1,625 y=-15,4 |
|
|
x=3,25 y=4,05 |
|
|
x=0,4 y=-0,875 |
|
|
x=1,825 y=18,225 z=-3,298 |
|
; |
x=47,8 y=-5,5 z=-2,3 |
|
|
x=37,15 y=-12,55 z=20,12 |
|
|
x=0,22 y=-6,72 n=10,05 |
|
|
x=12,650 y=-2,255 n=3,205 |
|
|
x=-4,500 y=0,750 z=0,845 |
|
|
x=0,335 y=0,025 z=32,005 |
Вимоги до звіту
У звіті з лабораторної роботи повинні бути відображені:
Підготовка до роботи
Вивчити:
Контрольні питання
1. Алфавіт мови Delphi, операції, ідентифікатори.
2. Структура програми. Розділи оголошення констант, змінних, міток, типів даних, підпрограм.
3. Константи. Їх оголошення. Константні вирази.
4. Змінні. Їх оголошення.
5. Формати подання чисел (з фіксованою й плаваючою крапкою).
6. Типи цілих чисел зі знаком.
7. Типи дійсних чисел.
9. Логічні типи даних .
10. Символьні типи .
11. Строкові типи для довгих рядків.
12. Строкові типи для коротких рядків.
13. Сумісність типів при присвоєннях.
Практична частина
Потрібно створити додаток, що дозволяє виконувати обчислення виразу:
.
Для цього необхідно запустити ІDE Delphi, викликати відповідну форму Form2 для лінійного процесу, на формі розмістити компоненти із Палітри компонентів (Label, Edit, Button), потім змінити їх властивості у вікні Object Inspector (Caption, Text), а на кнопку «Button1» створити обробку подій «OnClick».
Клацнувши два рази на кнопку Button1 (OK) у вікні, що спливе, необхідно набрати текст програми по обчисленню виразу.
Для збереження внесених у проект змін, а саме тексту програми набраного модуля, виконується команда File /Save all. В тому випадку, якщо потрібно зберегти модуль з іншим іменем, то необхідно виконати команду File /Save As і в діалоговому вікні задати нове імя модуля, а потім виконати команду File /Save all.
Якщо необхідно ввести зміни в будь-який модуль проекту, на даному етапі в Unit1 або Unit2, досить переключитися на закладку з назвою потрібного модуля та виконати виправлення, після чого зберегти модуль командою File /Save all .
Блок-схема алгоритму
Текст модуля
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm2 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Button1: TButton;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
{$R *.dfm}
procedure TForm2.Button1Click(Sender: TObject);
var
x,y,a,b:real;
begin
{введення даних}
x:=StrToFloat(Edit1.Text);
y:=StrToFloat(Edit2.Text);
{обчислення}
a:=exp((1/5)*ln(x+1))-sqr(sin(exp(x+1))/cos(exp(x+1)));
b:=3.14+sqr(cos(y+1.2));
{виведення даних}
label7.Caption := floatToStr(a);
label8.Caption := floatToStr(b)
end;
procedure TForm2.Button2Click(Sender: TObject);
begin
Form2.Close;
end;
end.
Результат роботи
Висновки
Тема: Програмування розгалужених обчислювальних процесів.
Мета: Навчитися програмувати і налагоджувати програми розгалужених обчислювальних процесів.
Завдання:
Створити додаток, що дозволяє виконувати табулювання (обчислення значень) складної функції при зміні аргумена в деяких межах з певним кроком із застосуванням розгалуженого процесу (вхідні данні мають вводитися з клавіатури, результати обчислень повинні виводитися на екран).
Таблиця - Варіанти завдань
№ |
Функції |
Умови |
Дані |
Діапазон аргументу |
|
t < 1 1 ≤ t ≤ 2 t > 2 |
a=-0,5 b=2 |
t=[2...4] крок 0,25 |
|
|
f ≤ 1,5 1,5 < f < 3 f ≥ 3 |
f=[1...5] крок 0,25 |
||
|
x < 1.3 x = 1.3 x > 1.3 |
a=2,8 |
x=[1...2] крок 0,25 |
|
|
x < 1.4 x = 1.4 x > 1.4 |
a=1,65 b=1,1 |
x=[0,5...2] крок 0,25 |
|
|
x ≤ 1 1 < x < 2 x ≥ 2 |
x=[1...2,5] крок 0,25 |
||
|
x > a x < a x = a |
a=2,5 |
x=[1...2,5] крок 0,25 |
|
|
bx < 1 bx = 1 bx > 1 |
b=5,5 |
x=[0,5...3] крок 0,25 |
|
|
x > 3.5 x ≤ 3.5 |
x=[2...5] крок 0,25 |
||
|
x > 1 x ≤ 1 |
a=20,3 |
x=[0,5...2] крок 0,25 |
|
|
x > 1 x ≤ 1 |
a=0,9 |
x=[2...5] крок 0,5 |
|
|
x < 0.5 x = 0.5 x > 0.5 |
t=2,2 |
x=[0.25...2] крок 0,25 |
|
|
x < 2.8 2.8 ≤ x ≤ 5 x > 5 |
a=2,6 b=-0,39 |
x=[0...6] крок 1 |
|
|
i < 4 4 ≤ i ≤ 6 i > 6 |
a=2,1 b=-1,8 c=-20,5 |
i=[1...10] крок 1 |
|
|
a=2,5 n=10 |
i=[1...2,5] крок 0,25 |
||
|
t < 0.1 t = 0.1 t > 0.1 |
a=2,5 b=0,4 |
t=[-1...1] крок 0,2 |
|
|
y 2 -2 < y < 2 y -2 |
y=[-4...4] крок 0,2 |
||
|
x > 0,5 -0,5 x 0,5 x < -0,5 |
x=[-5...5] крок 0,25 |
||
|
x -1 -1 x < 0 x 0 |
x=[-4...4] крок 0,2 |
||
|
x -0,5 -0,5 < x 0,5 x > 0,5 |
x=[-2...2] крок 0,2 |
||
|
x < -1 -1 x < 1 x 1 |
x=[-5...5] крок 0,25 |
||
|
x < 1 1 x 2 x > 2 |
x=[0...3] крок 0,2 |
||
|
x 0 -1 < x < 0 x -1 |
x=[-4...2] крок 0,25 |
||
|
x 1 -1 < x < 1 x -1 |
x=[-2...2] крок 0,25 |
||
|
x < 0 0 x 1 x > 1 |
x=[-2...2] крок 0,25 |
||
|
x > 3 0 < x 3 x 0 |
x=[-5...5] крок 0,25 |
Підготовка до роботи
1. Вивчити можливості мови програмування для реалізації умовної та безумовної передачі керування обчислювального процесу зі структурою, що розгалужується.
2. Розробити алгоритм рішення відповідно до завдання.
3. Скласти програми рішення завдань.
Контрольні питання
1. Які структури обчислювальних процесів Ви знаєте?
2. Як організувати розгалуження обчислень?
3. Умовний оператор if...then...else.
4. Умовний оператор if...then.
5. Навіщо потрібно при налагодженні програми тестувати всі гілки алгоритму?
Практична частина
1. Потрібно виконати обчислення виразу на інтервалі [-1,1] з кроком 0.1:
Знайти максимум та мінімум значення y на інтервалі .
На форму Form3 встановлюємо компоненти Label, Edit, Button. Необхідно змінити їх властивості у вікні Object Inspector (Caption, Text).
Для кнопки «Button1» створюємо обробник подій «OnClick». Клацнувши двічі на кнопку Button1 (OK) у вікні, що спливе, набираємо текст програми, яка реалізує розгалужений обчислювальний процес.
Блок-схема алгоритму
Текст модуля
unit Unit3;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm3 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Edit1: TEdit;
Label4: TLabel;
Edit2: TEdit;
Label5: TLabel;
Edit3: TEdit;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Button1: TButton;
Label10: TLabel;
Label11: TLabel;
Label12: TLabel;
Label13: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form3: TForm3;
implementation
{$R *.dfm}
procedure TForm3.Button1Click(Sender: TObject);
Label 1;
Var X, Xmin, Xmax, Dx, Y, Ymin, Ymax : real;
mes1, mes2: string[255];
begin
{введення початкових даних}
Xmin:=StrToFloat(Edit1.Text);
Xmax:=StrToFloat(Edit2.Text);
Dx:= StrToFloat(Edit3.Text);
X:=Xmin;
Ymax:=-maxint;
Ymin:=maxint;
1: {обчислення Y }
if X <-0.1 then Y:=1.25*sqrt(abs(X));
if (X >=-0.1) and (X <0.1) then Y:= X +1.3;
if X >=0.1 then Y:=sqrt(-X * X +cos(X)+1);
{виведення Х та Y }
mes1:= mes1+FloatToStrF(X,ffFixed,6,1)+#13 ;
mes2:= mes2+FloatToStrF(Y,ffFixed,10,5)+#13;
Label8.Caption:= mes1;
Label9.Caption:= mes2;
{обчислення Ymin та Ymax}
If Y<Ymin then Ymin:=Y;
If Y>Ymax then Ymax:=Y;
{перехід до наступного значення Х }
Х:=X+Dx;
If X<=Xmax then goto 1;
{виведення Ymin та Ymax}
Label12.Caption:= FloatToStrF(Ymin,ffFixed,10,5);
Label13.Caption:= FloatToStrF(Ymax,ffFixed,10,5);
end;
end.
Результат роботи
Висновки
Тема: Програмування циклічних обчислювальних процесів з невизначеною кількістю повторень.
Мета: Навчитися створювати програми для циклічних обчислювальних процесів з невизначеною кількістю повторень.
Завдання:
Створити додаток, що дозволяє виконувати обчислення суми елементів послідовності з точністю ε=10-7 (вхідні дані мають вводитися з клавіатури, результати обчислень повинні виводитися на екран).
Таблиця Варіанти завдань
№ |
Сума членів ряду |
Значення |
Точність E |
1 |
x=0,1 |
10-5 |
|
2 |
x=0,1 |
||
3 |
x=0,15 |
10-3 |
|
4 |
x=0,12 |
10-4 |
|
5 |
x=0,7 |
10-4 |
|
6 |
x=1,7 |
10-3 |
|
7 |
x=1,15 |
||
8 |
x=0,5 |
||
9 |
|||
10 |
x=0,75 |
||
11 |
x=0,62 |
||
12 |
x=0,2 |
10-4 |
|
13 |
x=0,25 |
10-4 |
|
14 |
x=0,3 |
10-5 |
|
15 |
x=0,62 |
10-4 |
|
16 |
x=0,78 |
10-4 |
|
17 |
x=0,23 |
10-5 |
|
18 |
x=0,4 |
10-5 |
|
19 |
|
x=0,85 |
10-5 |
20 |
|
x=0,71 |
10-6 |
21 |
|
x=0,29 |
10-6 |
22 |
|
x=0,72 |
10-5 |
23 |
|
x=0,11 |
10-6 |
24 |
|
x=0,64 |
10-5 |
25 |
|
x=0,56 |
10-5 |
Підготовка до роботи
1. По зазначеній літературі вивчити:
2. Розробити алгоритм рішення завдання.
3. Скласти програму рішення завдання.
Контрольні питання
1. Циклічний процес із невідомим числом повторень.
2. Його відмінності від циклу із заданим числом повторень.
3. Формат оператора while...do.
5. Як виконати групу операторів у циклі while...do?
6. Формат оператора repeat...until.
7. Як виконати групу операторів в циклі repeat...until?
8. Умова виходу із циклу при обчисленні значення суми членів нескінченного ряду.
Практична частина
Потрібно створити додаток, що дозволяє виконувати обчислення суми нескінченного ряду
.
На форму Form4 установлюємо компоненти з Палітри компонентів (Label, Edit, Button). Необхідно змінити їх властивості у вікні Object Inspector (Caption, Text). Клацнувши двічі на кнопку Button1 (OK), у вікні, що спливе, набираємо текст програми і виконуємо команду File /Save all.
Блок-схема алгоритму
Текст модуля
unit Unit4;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm4 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Edit1: TEdit;
Label4: TLabel;
Edit2: TEdit;
Button1: TButton;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form4: TForm4;
implementation
{$R *.dfm}
procedure TForm4.Button1Click(Sender: TObject);
Var mes1,mes2,rez: string;
s,sn,e,x,ch,f:real;
i:integer;
begin
x:=StrToFloat(Form4.Edit1.Text);
e:=StrToFloat(Form4.Edit2.Text);
s:=0;i:=0;ch:=-x;f:=1;
repeat
i:=i+1;
ch:=ch*(-x);
f:=f*i;
sn:=ch/f;
s:=s+sn;
mes1:= mes1+IntToStr(i)+#13 ;
mes2:= mes2+FloatToStrF(sn,ffFixed,10,5)+#13;
Label7.Caption:= mes1;
Label8.Caption:= mes2;
until abs(sn)<e;
Label10.Caption:= ' S = ' + FloatToStrF(S,ffFixed,10,5);
end;
end.
Результат роботи
Висновки
1. Для організації циклів з невідомим числом повторень застосовуються оператори while...do (цикл ПОКИ), repeat...until (цикл ДО).
2. Для виконання в циклі while...do групи операторів їх необхідно обєднати в один складний оператор за допомогою операторних дужок begin…end.
3. При виконанні циклу repeat...until у тілі циклу може перебувати безліч операторів. Складний оператор не потрібний.
Тема: Програмування циклічних обчислювальних процесів з визначеною кількістю повторень. Обробка числових послідовностей.
Мета: Навчитися виконувати обробку числових масивів.
Завдання:
Створити додаток, що дозволяє виконувати обробку елементів одновимірного масиву (вхідні дані мають вводитися з клавіатури, результати обчислень повинні виводитися на екран).
Таблиця Варіанти завдань
№ |
Імя масиву |
Завдання |
1 |
X(100) |
Підрахувати суму і кількість елементів масиву Х, які задовольняють умові . |
2 |
A(80) |
Підрахувати середнє арифметичне значення елементів масиву А, якщо елементи задовольняють умові . |
3 |
X(70) |
Переписати елементи масиву X в масив Y і підрахувати їх кількість, якщо елементи задовольняють умові . |
4 |
B(50) |
Визначити максимальний елемент масиву В та його порядковий номер. |
5 |
C(40) |
Визначити мінімальний елемент масиву С та його номер. |
6 |
D(80) |
Визначити максимальний і мінімальний елементи масиву D та поміняти їх місцями. |
7 |
Y(20) |
Підрахувати суму елементів масиву. Розділити кожний елемент масиву на отримане значення. Результат одержати в тому ж масиві. |
8 |
A(14) |
Підрахувати суму елементів масиву A, кратних трьом. Умова: остача(A(i)/3)=0 . |
9 |
N(50) |
Підрахувати суму і кількість елементів масиву N, якщо елементи задовольняють умові . |
10 |
X(N) |
Підрахувати суму і кількість елементів масиву X, якщо елементи задовольняють умові . |
11 |
X(N) |
Переписати в масив Y підряд додатні елементи масиву X, якщо елементи задовольняють умові . |
12 |
X(N) |
Переписати в масив Y підряд додатні і в масив Z відємні елементи масиву X. Умова . |
13 |
B(K) |
Визначити максимальний елемент масиву B та його порядковий номер, якщо K≤ 50. |
14 |
C(K) |
Визначити мінімальний елемент масиву С та його порядковий номер, якщо елементи задовольняють умові . |
15 |
A(K) |
Підрахувати середнє значення елементів заданого масиву. Перетворити початковий масив, віднімаючи від кожного елемента середнє значення. K≤ 40. |
16 |
X(N) |
Отримати добуток елементів одновимірного масиву розмірністю N≤ 10 з номерами від 3 до 7 (якщо елемент дорівнює 0, то пропустити). |
17 |
X(N) |
Помножити кожен елемент одновимірного масиву розмірністю N на кількість його додатних елементів. |
18 |
X(N) |
Замінити перші 6 додатних елементів одновимірного масиву розмірністю N ≤ 10 на 0. |
19 |
X(N) |
Замінити всі парні елементи одновимірного масиву розмірністю N≤ 15 на 1. |
20 |
X(N) |
Замінити всі непарні члени одновимірного масиву розмірністю N≤ 20 на 10. |
21 |
X(N) |
Визначити суму квадратів парних чисел одновимірного масиву розмірністю N≤ 15. |
22 |
X(N) |
Відібрати і надрукувати із одновимірного масиву розмірністю N≤ 20 ті елементи, які менші числа А. |
23 |
X(N) |
В одновимірному масиві розмірністю N знайти індекс першого відємного елементу. |
24 |
X(N) |
В одновимірному масиві розмірністю N знайти індекс першого додатного елементу. |
25 |
X(N) |
В одновимірному масиві розмірністю N знайти індекс останнього додатного елементу. |
Підготовка до роботи
1. По зазначеній літературі вивчити:
2. Розробити алгоритм рішення завдань.
3. Скласти програми рішення завдань.
Контрольні питання
Практична частина
Потрібно підрахувати суму всіх елементів в одновимірному масиві довжиною N.
Необхідно створити новий додаток; на форму Form5 установлюються компоненти.
Компонент StringGrid встановлюється з вкладки Advanced:
StringGrid1 (ColCount=20, FifedCols=0, RowCount=2, FifedRows=1,Optoins: goEdit=true, goTabs=true);
StaticText (з вкладки Advanced):
StaticText1, StaticText2 StaticText3, StaticText4 (властивостям Сaption присвоїмо значення: «ЛАБОРАТОРНА РОБОТА №5. Обробка одновімирних масивів», «Кількість елементів», «Елементи масиву», «Сума елементів масиву» відповідно);
Edit (з вкладки Standart):
Edit1 ( властивості text присвоїмо значення « »);
Label (з вкладки Standart):
Label1 (властивості Сaption присвоїмо значення « »);
Button (з вкладки Standart):
Button1 (властивості Сaption присвоїмо значення «Обчислити».
Клацнувши двічі на кнопку Button1 (Обчислити) у вікні, що спливе, набрати текст програми по знаходженню суми елементів масиву і виконати команду File /Save all.
Блок-схема алгоритму
Текст модуля
unit Unit5;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids;
type
TForm5 = class(TForm)
Edit1: TEdit;
StringGrid1: TStringGrid;
Button1: TButton;
StaticText1: TStaticText;
StaticText2: TStaticText;
StaticText3: TStaticText;
StaticText4: TStaticText;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
procedure Edit1Change(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form5: TForm5;
A: array of real;
i, N: integer;
S: real;
implementation
{$R *.dfm}
procedure TForm5.Edit1Change(Sender: TObject);
begin
if Edit1.Text = '' then exit;
n:=StrToInt(Edit1.Text); // вводимо кількість елементів
stringgrid1.ColCount:=n; // stringgrid1 розбиваємо на n стовбців
for i:=0 to n-1 do StringGrid1.Cells[i,0]:=inttostr(i);
// у комірках фіксованого рядка прописуємо номери стовбців
SetLength(a,n); // розмір масиву встановлюємо рівним n
end;
procedure TForm5.Button1Click(Sender: TObject);
Begin
For i:=0 to n-1 do a[i]:=StrToFloat(StringGrid1.Cells[i,1]);
// вводимо значення комірок StringGrid1 у масив а
S:=0;
for i:=0 to N-1 do if A[i]>0 then S:= S + A[i];
Label1.Caption:= ' S = '+ FloatToStr(S);
end;
end.
Результат роботи
Висновки
1. Для організації циклів з відомим числом повторень застосовуються оператори:
2. Змінна циклу повинна бути порядкового типу (наприклад, Integer).
3. Якщо в тілі циклу використовується багато операцій, то їх потрібно оформити як складений оператор за допомогою операторних дужок begin…end.
Тема: Програмування циклічних обчислювальних процесів з визначеною кількістю повторень.
Мета: Навчитися виконувати обробку двомірних числових масивів.
Завдання:
Виконати обробку матриці X(n,m) згідно до варіанту.
Таблиця Варіанти завдань
№ |
Матриця |
Завдання |
1 |
A |
Підрахувати і вивести суму та кількість додатних елементів кожного стовпця матриці. |
2 |
B |
Підрахувати і вивести суму та кількість додатних елементів кожного рядка матриці. Результати вивести у вигляді двох стовпців. |
3 |
C |
Підрахувати суму елементів побічної діагоналі матриці. |
4 |
A |
Підрахувати добуток елементів головної діагоналі матриці. |
5 |
B |
Знайти суму елементів другого рядка матриці. |
6 |
C |
Знайти суму елементів другого стовпця матриці. |
7 |
A |
Вивести до друку елементи матриці A(i,j)<=4. |
8 |
A |
Вивести до друку елементи матриці 2<= A(i,j)<=5. |
9 |
B |
Вивести до друку відємні елементи матриці. |
10 |
A |
Вивести до друку додатні елементи матриці. |
11 |
A |
Підрахувати суму елементів матриці. |
12 |
A |
Підрахувати суму елементів головної діагоналі матриці. |
13 |
B |
Підрахувати суму елементів двох перших стовпців матриці. |
14 |
C |
Визначити середнє арифметичне матриці. |
15 |
A |
Знайти суму елементів третього рядка матриці. |
15 |
B |
Визначити i надрукувати найменший елемент матриці та його iндекси. |
17 |
C |
Для кожного рядка матриці знайти i надрукувати кількість додатних елементів. |
18 |
A |
Для кожного стовпця матриці знайти i надрукувати суму значень вiд`ємних елементів. |
19 |
B |
Для кожного стовпця матриці знайти i надрукувати суму значень елементів, що перевищують число Z. |
20 |
C |
Для кожного рядка матриці знайти i надрукувати номери стовпців, що містять вiд`ємнi елементи. |
21 |
A |
Для кожного стовпця матриці знайти i надрукувати мінімальний елемент. |
22 |
B |
Знайти i надрукувати суму значень вiдємних елементів матриці. |
23 |
C |
Для кожного рядка матриці знайти i надрукувати суму значень елементів, що розташовані в стовпцях з непарними номерами. |
24 |
A |
Знайти i надрукувати добуток значень вiд`ємних елементів матриці. |
25 |
B |
Для кожного стовпця матриці знайти i надрукувати кількість елементів, значення яких не перевищує числа Z. |
Практична частина
Потрібно для кожного рядка таблиці визначити i надрукувати кількість елементів, значення яких перевищує число Z.
Необхідно створити новий додаток; на форму Form6 встановлюються компоненти.
StringGrid (з вкладки Advanced):
StringGrid1 (ColCount=20, FixedCol=1,FixedRows=1,RowCount=24, Options:goEdit=true, goTabs=true),
StringGrid2 (ColCount=1, FixedCol=0,FixedRows=1,RowCount=24, Options:goEdit=true, goTabs=true);
Edit (з вкладки Standart):
Edit1, Edit2, Edit3 ( властивості Тext присвоїмо значення « »);
Label (з вкладки Standart) та Button (з вкладки Standart).
Блок-схема алгоритму
Текст модуля
unit Unit6;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Grids;
type
TForm6 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Edit1: TEdit;
Edit2: TEdit;
StringGrid1: TStringGrid;
StringGrid2: TStringGrid;
Button1: TButton;
Label4: TLabel;
Label5: TLabel;
Edit3: TEdit;
Label6: TLabel;
procedure Edit1Change(Sender: TObject);
procedure Edit2Change(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
Public
{ Public declarations }
end;
var
Form6: TForm6;
n,m,k:integer;
a: array [0..10,0..10] of real;
implementation
{$R *.dfm}
procedure TForm6.Edit1Change(Sender: TObject);
var i:integer;
begin
//вводимо кількість рядків
n:=Strtoint(Edit1.text);
//stringgrid1 та stringgrid2 розбиваємо на n+1 рядків
stringgrid1.RowCount:=n+1;
stringgrid2.RowCount:=n+1;
//у комірках фіксованого стовбця прописуємо номери //рядків
for i:=0 to n do begin
StringGrid1.Cells[0,i]:=inttostr(i);
StringGrid2.Cells[0,i]:=inttostr(i); //
end;
end;
procedure TForm6.Edit2Change(Sender: TObject);
var j:integer;
begin
// вводимо кількість стовбців m:=StrToInt(Edit2.text);
// stringgrid1 розбиваємо на m+1 стовбців stringgrid1.ColCount:=m+1;
// у комірках фіксованого рядка прописуємо номери // стовбців
for j:=0 to m do StringGrid1.Cells[j,0]:=inttostr(j);
end;
procedure TForm6.Button1Click(Sender: TObject);
var i,j:integer;
begin
for i:=1 to n do
for j:=1 to m do
a[j,i]:=StrToFloat(StringGrid1.Cells[j,i]);
// вводимо значення комірок StringGrid1 у масив а
for i:=1 to n do begin
k:=0;
for j:=1 to m do if a[j,i]>0 then k:=k+1;
StringGrid2.Cells[1,i] :=IntToStr(k);
end;
end; end.
Результат роботи
Висновки
1. Масив це упорядкований набір значень однакового типу.
2. Розмірність масиву обмежена тільки доступною пам'яттю.
3. Для обробки масивів застосовуються оператори циклів з відомим числом повторень.
4. Матриці наочно відображаються у табличній формі.
Тема: Програмування процедур та функцій у Delphi.
Мета : навчитися створювати і використовувати підпрограми процедури та функції, освоїти поняття фактичних та формальних параметрів, параметрів-значень та параметрів-змінних.
Завдання:
Модифікувати програму лабораторної роботи № 6 таким чином, щоб введення масиву та виведення результатів його обробки відбувалися у процедурі Button1Click, а обробка масиву і формування результату були оформлені у вигляді окремої підпрограми : процедури або функції.
Вимоги до звіту.
У звіті з лабораторної роботи повинні бути відображені:
Підготовка до роботи
1. Вивчити принципи використання підпрограм.
2. Розробити алгоритми рішення завдання алгоритм основної підпрограми та підпрограми по обробці масиву.
3. Скласти програму та налагодити її виконання.
Контрольні питання
1. Поняття підпрограми, види підпрограм.
2. Відмінності між процедурою та функцією.
3. Параметри підпрограми.
4. Формальні та фактичні параметри.
5. Параметри-значення та параметри-змінні.
Практична частина
Для кожного рядка дійсного масиву розмірністю n*m визначити кількість елементів, значення яких перевищує число Z.
Необхідно створити новий додаток; на форму Form7 встановлюються компоненти.
StringGrid (з вкладки Advanced):
StringGrid1 (ColCount=20, FixedCol=1,FixedRows=1,RowCount=24, Options:goEdit=true, goTabs=true),
StringGrid2 (ColCount=1, FixedCol=0,FixedRows=1,RowCount=24, Options:goEdit=true, goTabs=true);
Edit (з вкладки Standart):
Edit1, Edit2, Edit3 ( властивості Тext присвоїмо значення « »);
Label (з вкладки Standart) та Button (з вкладки Standart).
У наведеній програмі введення елементів масиву та виведення результатів відбуваються у головній програмі, обробка масиву тобто визначення кількості елементів, що перевищують число Z для кожного рядка, здійснюється процедурою Obrobka.
У такому разі параметри (n,m,z,a,b) , вказані при виклику процедури Obrobka (n,m,z,a,b) є фактичними параметрами, а параметри, вказані у заголову процедури Obrobka (n1,m1:integer; q:real; x:mas1type; var y:mas2type) формальними. З них n1,m1:integer; q:real; x:mas1type є параметрами-значеннями, що отримують значення відповідних фактичних параметрів n, m, z, a; var y:mas2type параметр-змінна, що в результаті виконання процедури повертає значення фактичному параметру b, що є масивом результатів.
Блок-схема алгоритму
головної програми
Блок-схема алгоритму підпрограми (процедури Obrobka )
Текст модуля
unit Unit7;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids;
type
mas1type = array [1..20,1..20]of real;
mas2type = array [1..20]of integer;
TForm1 = class(TForm)
Label1: TLabel;
Edit1: TEdit;
Label2: TLabel;
Edit2: TEdit;
Label3: TLabel;
Edit3: TEdit;
Label4: TLabel;
StringGrid1: TStringGrid;
StringGrid2: TStringGrid;
Button1: TButton;
procedure Edit1Change(Sender: TObject);
procedure Edit2Change(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
n,m:integer;
implementation
{$R *.dfm}
procedure TForm1.Edit1Change(Sender: TObject);
var i:integer;
begin
n:=Strtoint(Edit1.text);
stringgrid1.RowCount:=n+1;
stringgrid2.RowCount:=n+1;
for i:=0 to n do StringGrid1.Cells[0,i]:=inttostr(i);
end;
procedure TForm1.Edit2Change(Sender: TObject);
var j:integer;
begin
m:=Strtoint(Edit2.text);
stringgrid1.ColCount:=m+1;
for j:=0 to m do StringGrid1.Cells[j,0]:=inttostr(j);
end;
procedure Obrobka (n1,m1:integer; q:real; x:mas1type; var y:mas2type);
var i,j,k:integer;
begin
for i:=1 to n1 do begin
k:=0;
for j:=1 to m1 do if x[i,j]>q then k:=k+1;
y[i] :=k;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var i,j,k:integer; z:real; a:mas1type; b:mas2type;
begin
z:= strtofloat(Edit3.text);
{введення елементів масиву}
for i:=1 to n do
for j:=1 to m do
a[i,j]:=strtofloat(StringGrid1.Cells[j,i]);
{обробка масиву і формування масиву результатів за допомогою процедури}
Obrobka (n,m,z,a,b) ;
{виведення масиву результатів}
for i:=1 to n do
StringGrid2.Cells[0,i] :=inttostr(b[i]);
end;
end.
Результат роботи
Висновки