| KnighTeX Новичок
Регистрация: 03.10.2009
Сообщений: 84 Репутация: 0 (0) | Средства отладки программ в DELPHI.Создание программ для циклических процессов
Ребята, помогите, пожалуйста, нубу, никак не справлюсь(( Заранее благодарен)
1. Средства отладки программ в DELPHI.Создание программ для циклических процессов. 
Текст программы приведен ниже: | Код Delphi | 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
| unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class (TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel.
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Memo1: TMemo;
Button1: TButton;
procedure FormCreate (Sender: TObject);
procedure Button1Click (Sender: TObject);
private
(Private declarations)
public
(Public declarations)
end;
var
Form1: TForm1;
implementation
($ R *. dfm)
procedure TForm1.FormCreate (Sender: TObject);
begin
Edit1.Text: = '0 ';
Edit2.Text: = '2 ';
Edit3.Text: = '5 ';
Edit4.Text: = '0, 25 ';
Memo1.Clear;
Memo1.Lines.Add ('Результаты. Студ. Гр.2ЭК Иванов А.А.');
end;
procedure TForm1.Button1Click (Sender: TObject);
Var
x1, x2, x, h, a, s: extended;
N, k, c: integer;
begin
x1: = StrToFloat (Edit1.Text.
Memo1.Lines.Add ('x1 =' Edit1.Text.
x2: = StrToFloat (Edit2.Text.
Memo1.Lines.Add ('x2 =' Edit2.Text.
N: = StrToInt (Edit3.Text.
Memo1.Lines.Add ('N =' Edit1.Text.
h: = StrToFloat (Edit4.Text.
Memo1.Lines.Add ('h =' Edit4.Text.
C: = -1;
X: = x1;
Repeat
A: = 1;
S: = 1;
for k: = 1 to N do
begin
a: = c * a * x / k;
s: = s a;
end;
Memo1.Lines.Add ('nры x =' FloatToStr (x, ffFixed, 6, 2)
'Сумма =' FloatToStr (s, ffFixed, 6, 2));
x: = x h;
until x> x2;
end;
end.
|
|
После отладки программы составьте тест (N = 2, X1 = 0, X2 = 1, h = 3), установите курсор на первый оператор (N: =), нажмите клавишу F4. После этого нажимая клавишу F7, выполните пошаговое налаживания программы и проследите, как меняются все переменные в процессе выполнения. 
2. Стандартные компоненты и обработчики событий. Создание программ для процессов, разветвляются. 
Текст программы: | Код Delphi | 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
| unit unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TForm1 = class (TForm)
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel.
Memo1: TMemo;
Button1: TButton;
CheckBox1: TCheckBox;
RadioGroup1: TRadioGroup;
Label5: TLabel;
procedure Button1Click (Sender: TObject);
procedure FormCreate (Sender: TObject);
private
(Private declarations)
public
(Public declarations)
end;
var
Form1: TForm1;
implementation
($ R *. dfm)
procedure TForm1.FormCreate (Sender: TObject);
begin
Edit1.Text: = '0, 1 '; / / Начальное значение Х
Edit2.Text: = '0, 356 '; / / Начальное значение Y
Edit3.Text: = '0 '; / / Начальное значение Z
Memo1.Clear; / / Очистка окна редактора Memo1
/ / Вывод строки в многострочный редактор Memol
Memo1.Lines.Add ('Ла6.раб.N3. Ст.гр. 2ЭК Иванов А.А.');
end;
procedure TForm1.Button1Click (Sender: TObject);
var x, y, z, a, u, ma: Extended;
begin
x: = StrToFloat (Edit1.Text.
/ / Считывается значение X
Memo1.Lines.Add ('Х =' Edit1.Text.
/ / Вывод Х в окно Memol
Y: = StrToFloat (Edit2.Text.
/ / Считывается значение Y
Memo1.Lines.Add ('Y =' Edit2.Text.
/ / Вывод Y в окно Memol
Z: = StrToFloat (Edit3.Text.
/ / Считывается значение Z
Memo1.Lines.Add ('Z =' Edit3.Text.
/ / Проверка номера нажатой кнопки и выбор соответствующей ей функции
case RadioGroup1.ItemIndex of
0: u: = cos (x);
1: u: = sin (x);
2: u: = sin (x) / cos (x);
end;
/ / Вывод U в окно Memol
Memo1.Lines.Add ('U =' FloatToStr (U, fffixed, 8,2));
/ / Проверка состояния кнопки CheckBox1
if CheckBox1.Checked then
begin
u: = abs (u);
y: = abs (y);
z: = abs (z)
end;
/ / Нахождение максимального из трех чисел
if u> y then ma: = u else ma: = y;
if z> ma then ma: = z.
if Checkbox1.checked then
Memo1.Lines.Add ('maxabs =' FloatToStrF (ma, fffixed, 8,2))
else
Memo1.Lines.Add ('max =' FloatToStrF (ma, fffixed, 8,2));
end;
end.
|
|

3. Обработка массивов.
Задача: создать программу для определения вектора:
,
где А - квадратная матрица, а Y, B - одномерные массивы.
Элементы вектора Y определяются по формуле;
.
Значение N вводить в компонент Tedit, А и В - в компонент TStringGrid. Результат, после нажатия кнопки типа TButton, вывести в компонент TStringGrid.
Панель диалога приведена на рис.1 
Текст программы приведен ниже. | Код Delphi | 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
| Unit Lab4;
Interface
Uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, Grids;
type
TInputForm = class (TForm)
StringGrid1: TStringGrid;
StringGrid2: TStringGrid;
StringGrid3: TStringGrid;
Label1: TLabel;
Edit1: TEdit;
Button1: TButton;
Button2: TButton;
Procedure FormCreate (Sender: TObject);
Procedure Button1Click (Sender: TObject);
Procedure Button2Click (Sender: TObject);
private
(Private declarations)
public
(Public declarations)
end;
const
Nmax = 10; / / Максимальная размерность массива
type
Mas1 = array [1 .. Nmax] of Extended;
/ / Объявление типа одномерного массива
Mas2 = array [1 .. Nmax, 1 .. Nmax] of Extended; / / Объявления типа двумерного массива
var
InputForm: TInputForm;
A: Mas2; / / Объявления двумерного массива
B, Y: Mas1; / / Объявления одномерных массивов
N, i, j: integer;
Implementation
($ R *. DFM)
Procedure TInputForm.FormCreate (Sender: TObject);
begin
N: = 3; / / Размерность массива
Edit1.Text: = FloatToStr (N);
/ / Задание числа строк и столбцов
StringGrid1.ColCount: = N 1;
StringGrid1.RowCount: = N 1;
StringGrid2.RowCount: = N 1;
StringGrid3.RowCount: = N 1;
/ / Введение в левую верхнюю каморку таблицы названия массива
StringGrid1.Cells [0, 0]: = 'Массив А';
StringGrid2.Cells [0, 0]: = 'Массив В';
StringGrid3.Cells [0, 0]: = 'Массив В';
/ / Заполнение верхнего и левого столбиков подписями, объясняющих
for i: = 1 to N do
begin
StringGrid1.Cells [0, i]: = 'i =' IntToStr (i);
StringGrid1.Cells [i, 0]: = 'j =' IntToStr (i);
end;
end;
Procedure TInputForm.Button1Click (Sender: TObject);
begin
N: = StrToInt (Edit1.Text.
/ / Задача числа строк и столбцов в таблицах
StringGrid1.ColCount: = N 1;
StringGrid1.RowCount: = N 1;
StringGrid2.RowCount: = N 1;
StringGrid3.RowCount: = N 1;
/ / Заполнение верхнего и левого столбиков подписями, объясняющих
for i: = 1 to N do
begin
StringGrid1.Cells [0, i]: = 'i =' IntToStr (i);
StringGrid1.Cells [i, 0]: = 'j =' IntToStr (i);
end;
end;
Procedure TInputForm.Button2Click (Sender: TObject);
var
s: extended;
begin
/ / Заполнение массива A элементами из тавлици StringGrid1
for i: = 1 to N do
for j: = 1 to N do
A [i, j]: = StrToFloat (StringGrid1.Cells [j, i]);
/ / Заполнение массива B элементами из тавлици StringGrid2
for и: = 1 to N do
B [и]: = StrToFloat (StringGrid2.Cells [0, и]);
/ / Умножение массива A на массив B
for i: = 1 to N do
begin
s: = 0;
for j: = 1 to N do
s: = s A [i, j] * B [j];
Y [i]: = s;
/ / Вывод результата в таблицу StringGrid3
StringGrid3.Cells [0, i]: = FloatToStrF (Y [i], ffFixed, 6,2);
end;
end;
end.
|
|
Задание: Задано матрицу размером. Получить массив B, присвоив его k-м элементу значение 1, если k-я строка матрицы симметричный, и значение 0 в противном случае.
4. ОБРАБОТКА СОБЫТИЙ В DELPHI.КОМПОНЕНТЫ TLISTBOX И TCOMBOBOX | Код Delphi | 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
| Unit Unit1;
Interface
Uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons;
type
Tunit_Lab5 = class (TForm)
ComboBox1: TComboBox;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
BitBtn1: TBitBtn;
Button1: TButton;
Procedure FormActivate (Sender: TObject);
Procedure ComboBox1KeyPress (Sender: TObject; var Key: Char);
Procedure ComboBox1Click (Sender: TObject);
Private
(Private declarations)
Public
(Public declarations)
end;
var
Unit_Lab5: TUnit_Lab5;
Implementation
($ R *. DFM)
/ / Обработка события активизации формы
Procedure TUnit_Lab5.FormActivate (Sender: TObject);
begin
ComboBox1.SetFocus; / / Передача фокуса ComboBox1
end;
/ / Обработка события нажатия левой клавиши мыши
Procedure TUnit_Lab5.ComboBox1KeyPress (Sender: TObject; var Key: Char);
begin
if Key = # 13 then / / Если нажата клавишу Enter то ...
begin
/ / Строка из окна редактирования заносится в список выбора
ComboBox1.Items.Add (ComboBox1.Text.
ComboBox1.Text: =''; / / Очистка окна редактирования
end;
end;
Procedure TUnit_Lab5.ComboBox1Click (Sender: TObject);
var
St: string;
n, и, nst, ind: integer;
begin
n: = 0; / / Содержит число слов избранного строки
/ / Содержит количество слов
ind: = 0;
/ / Определение номера выбранного строки
nSt: = ComboBox1.ItemIndex;
/ / Сохранение выбранного строки в переменную st
St: = ComboBox1.Items [nst];
/ / Пересмотр всех символов строки st
for i: = 1 to Length (St) do
begin
Case ind of
0: if St [и] <>''then
begin
/ / Если встретился символ после пробела
/ / Килькистьслив увеличивается на единицу
ind: = 1;
n: = n 1;
end;
/ / Если встретился пробел после символов
1: if St [i] =''then ind: = 0;
end;
end;
Label3.Caption: = IntToStr (n); / / Вывод количества слов в Label3
end;
end.
|
|
ЗАДАНИЕ:
Дана строка, состоящая из групп нулей и единиц. Подсчитать количество символов в самой длинной группе.
5. Программирование подпрограмм и модулей. | Код Delphi | 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
| Тексты модуля и программы, его вызывает, приведены ниже.
Текст модуля:
Unit Matfu;
Interface
Function Tg (x: extended): extended;
/ / Функция для вычисления тангенса
Function Ch (x: extended): extended;
/ / Функция для вычисления гиперболического синуса
Function Sin2 (x: extended): extended;
/ / Функция для вычисления квадрата синуса
Implementation
Function Tg;
begin
Result: = sin (x) / cos (x);
end;
Function Ch.
begin
Result: = (exp (x)-exp (-x)) / 2;
end;
Function Sin2;
begin
Result: = sqr (sin (x));
end;
end.
Текст дерзкой программы:
Unit Unit1;
Interface
Uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, ExtCtrls, MatFunc;
type
TForm1 = class (TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Memo1: TMemo;
Button1: TButton;
Button2: TButton;
RadioGroup1: TRadioGroup;
Procedure FormCreate (Sender: TObject);
Procedure Button1Click (Sender: TObject);
Procedure Button2Click (Sender: TObject);
private
(Private declarations)
public
(Public declarations)
end;
type
func = function (x: extended): extended;
var
Form1: TForm1;
implementation
($ R *. DFM)
procedure TForm1.FormCreate (Sender: TObject);
begin
Edit1.Text: = '0 ';
Edit2.Text: = '2 ';
Edit3.Text: = '0 .2 ';
Memo1.Clear;
RadioGroup1.ItemIndex: = 0;
end;
procedure Tabl (f: func; xn, xk, h: extended);
var
x, y: extended;
begin
x: = xn;
Repeat
y: = f (x);
Form1.Memo1.Lines.Add ('x =' FloatToStrF (x, fffixed, 8,2)
'Y =' FloatToStrF (y, fffixed, 8,2));
x: = x h;
Until (x> xk.
end;
procedure TForm1.Button1Click (Sender: TObject);
var
xn, xk, h: extended;
begin
xn: = StrToFloat (Edit1.Text.
xk: = StrToFloat (Edit2.Text.
h: = StrToFloat (Edit3.Text.
Case RadioGroup1.ItemIndex of
0: Tabl (tg, xn, xk, h);
1: Tabl (ch, xn, xk, h);
end;
end;
procedure TForm1.Button2Click (Sender: TObject);
begin
Halt
end;
end.
|
|
Задание: |