comp2009
.pdf3. Практикум по программированию на языке Object Pascal "
Рис. 3.5
2. Ввести текст программы, учитывая, что некоторые строки были созданы автоматически. Текст программы приведен полностью.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes,
Graphics, Controls, Forms, Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Label1: TLabel;
Edit1: TEdit; Label2: TLabel;
141
" Компьютерный практикум по информатике и программированию
Memo1: TMemo;
Label3: TLabel; Edit2: TEdit; Button1: TButton;
procedure Button1Click(Sender: TObject); private
{Private declarations } public
{Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject); var i,n:integer;
s:extended; begin s:=0;
Memo1.Clear;
Edit2.Text:=’’;
n:=StrToInt(Edit1.Text); for i := 1 to n do begin s:=s+(2*i*(n-1.5*i));
Memo1.Lines.Add(‘При i= ‘+ IntToStr(i)+’ промежуточная сумма = ‘+ FloatToStr(s));
end;
Edit2.Text:=’Результат суммирования S=‘+FloatToStr(s); end;
end.
3. Вид исполняемой программы представлен на рис. 3.6.
142
3. Практикум по программированию на языке Object Pascal "
Рис. 3.6
∞ |
1 |
|
|
Задание 2. Вычислить сумму бесконечного ряда ∑ |
с точностью |
||
n2 |
|||
i=1 |
|
ε < 0.00001 и подсчитать количество итераций, использованных при вычислении.
1.Создать форму по образцу рис. 3.7. Используемые компоненты: Label1 — для сообщения о точности вычислений; Edit1 — для ввода числового значения точности (дробная часть отделяется запятой); Label2 — для сообщения о промежуточных вычислениях; Memo1 — для вывода промежуточных вычислений; Label3 — сообщение о результате; Edit2 — для вывода результата вычислений; Label4 — сообщение о количестве итераций; Edit3 — для вывода числа итераций.
2.Ввести текст программы, учитывая, что некоторые строки были созданы автоматически. Текст программы приведен полностью.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes,
Graphics, Controls, Forms, Dialogs, StdCtrls;
143
" Компьютерный практикум по информатике и программированию
Рис. 3.7.
type
TForm1 = class(TForm)
Label1: TLabel;
Edit1: TEdit;
Label2: TLabel; Memo1: TMemo; Label3: TLabel;
Edit2: TEdit;
Label4: TLabel; Edit3: TEdit;
Button1: TButton;
procedure Button1Click(Sender: TObject); private
{ Private declarations } public
144
3.Практикум по программированию на языке Object Pascal "
{Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject); var i:integer;
eps,epsp,s,v,w:extended; begin
Memo1.Clear;
Edit2.Clear;
Edit3.Clear;
epsp:=1;
eps:=StrToFloat(Edit1.Text); i:=1; s:=0;
if eps>=1 then begin
ShowMessage(‘Точность вычислений не может быть
>=1’);
Exit;
end;
while epsp>eps do begin v:=1/sqr(i); s:=s+v;
i:=i+1;
w:=1/sqr(i); epsp:=v-w;
Memo1.Lines.Add(‘Итерация № ‘+IntToStr(i)+’ Разность значений = ‘ + FloatToStr(epsp));
end;
Edit2.Text:=FloatToStr(s);
Edit3.Text:=IntToStr(i);
end;
end.
145
"Компьютерный практикум по информатике и программированию
3.Вид исполняемой программы показан на рис. 3.8.
Рис. 3.8
|
N |
x |
k |
|
Задание 3. Вычислить таблицу значений функции S(x) = ∑(-1)k |
|
|||
k! |
||||
для х изменяющихся в интервале от X1 до X2 c шагом h. |
k=0 |
|||
|
4.Создать форму по образцу рис. 3.9. Используемые компоненты:
Label1 — надпись X1; Edit1 — ввод X1; Label2 — надпись X2; Edit2 — ввод X2; Label3 — надпись N; Edit3 — ввод N; Label4 — надпись H; Edit4 —
ввод H; Label5 — сообщение о результатах вычислений; Memo1 — вывод результатов вычислений.
5.Ввести текст программы, учитывая, что некоторые строки были созданы автоматически. Текст программы приведен полностью.
unit Unit1.dcu;
interface
uses
Windows, Messages, SysUtils, Variants, Classes,
Graphics, Controls, Forms,
146
3. Практикум по программированию на языке Object Pascal "
Рис. 3.9
Dialogs, StdCtrls;
type
TForm1 = class(TForm) Label1: TLabel;
Label2: TLabel;
Edit1: TEdit;
Edit2: TEdit; Label3: TLabel;
Label4: TLabel;
Edit3: TEdit;
Edit4: TEdit;
147
" Компьютерный практикум по информатике и программированию
Label5: TLabel; Memo1: TMemo;
Button1: TButton;
procedure Button1Click(Sender: TObject); private
{Private declarations } public
{Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject); var x1,x2,x,h,a,s:extended;
N,k,c:integer; begin
Memo1.Clear;
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= ‘+Edit3.Text); h:=StrToFloat(Edit4.Text); Memo1.Lines.Add(‘ h= ‘+Edit4.Text); c:=-1;x:=x1;
repeat a:=1;S:=0;
for k:=1 to N do begin a:=c*a*x/k; s:=s+a;
148
3. Практикум по программированию на языке Object Pascal "
end;
Memo1.Lines.Add(‘при x=’+FloatToStr(x)+’ сумма =
‘+FloatToStr(s));
x:=x+h; until x>x2; end;
end.
6. Вид исполняемой программы представлен на рис. 3.10.
Рис. 3.10
3.4. Массивы
При работе с массивами ввод и вывод информации на экран удобно организовывать в виде таблиц. Компонент TStringGrid предназначен для отображения информации в виде одномерной или двумерной таблицы, каждая ячейка которой представляет собой окно одностроч-
149
" Компьютерный практикум по информатике и программированию
ного редактора (аналогично окну TEdit). Доступ к информации осу-
ществляется с помощью свойства Cells[ACol, ARow: Integer]: string, где
ACol, ARow — индекс элемента двумерного массива. Свойства ColCount и RowCount устанавливают количество строк и столбцов в таблице, а свойства FixedCols и FixedRows задают количество строк и столбцов фиксированной зоны. Фиксированная зона выделена другим цветом, и в нее запрещен ввод информации с клавиатуры.
Задание 1. Дана квадратная матрица A(n×n) и одномерный вектор B(n). Вычислить одномерный вектор Y(n) как произведение матрицы A(n×n) на вектор B(n), то есть элементы вектора определяются по
n
формуле Yi = ∑ Aij × Bi, где i = 1, ... n.
j
1.Создать форму по образцу рис. 3.11. Используемые компоненты: Label1 — сообщение о вводе размерности массивов; Edit1 — ввод размерности массивов; Label2, Label3, Label4 — ввод подписей названий массивов; StringGrid1, StringGrid2, StringGrid3 — отображение массивов
A, B, Y соответственно.
2.Компонент TStringGrid находится на странице Additional меню компонентов. После установки его на форму требуется отрегулировать его размер. В Object Inspector значения для StringGrid1 свойств ColCount
иRowCount установить 4, а FixedCols и FixedRows установить 1. Так как компоненты StringGrid2 и StringGrid3 имеют только один столбец, то у них: ColCount= 1, RowCount=4, FixedCols=0 и FixedRows=1. По умолча-
нию в компонент TStringGrid запрещен ввод информации с клавиатуры, поэтому если необходимо редактировать содержимое ячеек, то свойство Options goEditing нужно установить в положение True.
3.Ввести текст программы, учитывая, что некоторые строки были созданы автоматически. Текст программы приведен полностью.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, StdCtrls;
150