Задание: написать и отладить программу, которая выводит таблицу значений функций S(x) для х изменяющихся в интервале от x1 до x2 с шагом h.
.
Панель диалога представлена на фиг.3.1.
Фиг.3.1.
Текст программы приведен ниже.
Unit Rab_3;
Interface
Uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls;
Type
Tform1=class(TForm)
Memo1:Tmemo;
Button1: Tbutton;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Edit1:Tedit;
Edit2:Tedit;
Edit3:Tedit;
Edit4:Tedit;
procedure FormСreate(Sender: TObject);
procedure Button1Сlick(Sender: TObject);
private
{Private declarations}
public
{Public declarations}
end;
var
Form1:TForm1;
Implemetation
{$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('Результаты. Вариант 4. Студ. гр.107227 Иванов А.А.');
Procedure Tform1.Button1Click(Sender: TObject);
Var
x1, x2, x, h, a, s: extended;
N, k, c: integer;
begin
xl:= StrToFloal(Edit4.Text);
Memo1.Lines.Add('x1 = ' + Edit1.Text);
x2:= StrToFloat(Edit2.Text);
Memo1.Lines Add('x2 = ' + Edit2.Text);
N:= StrTolnt(Edit3.Text);
Memo1.Lines.Add(‘N = ' + Editl.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('npи x = ' + FloatToStrF(x, ffFixed, 6, 2) +
' сумма = ' + FloalToStrF(s, ffFixed, 6, 2));
x:= x+h;
until x>x2;
end;
end.
Послe отладки программы составьте тест (N=2, X1=0,X2 = 1, h=3), установите курсор на первый оператор (N:=), нажмите клавишу F4. После этого нажимая клавишу F7, выполните пошаговую отладку программы и проследите, как меняются все переменные в процессе выполнения.
Выполнение индивидуального задания
Выберите заданный вариант задачи из нижеприведенного списка. Откорректируйте панель диалога и текст программы.
Индивидуальные задания
В заданиях с №1 по 15 (табл.3.1) необходимо вывести на экран таблицу значений функции Y(x) и ее разложения в ряд S(x) для х изменяющихся от x0 до xk с шагом h = (x0-xk)/10. Близость значений S(x) и Y(x) во всем диапазоне значений x указывает на правильность вычисления S(х) и Y(x).
Таблица 3.1
№ | S(x) | Y(x) | |||
0.1 | |||||
0.1 | |||||
0.1 | |||||
0.1 | |||||
0.1 | |||||
0.1 | |||||
0.1 | |||||
0.1 | |||||
0.1 | |||||
0.1 | 0.5 | arctgx | |||
0.1 | |||||
0.1 | |||||
-2 | -0.1 | ||||
0.2 | 0.8 | ||||
0.1 | 0.8 |
16. Посчитать k–количество цифр в десятичной записи целого неотрицательного числа n.
17. Переменной t присвоить значение 1 или 0 в зависимости от того, является ли натуральное число k степенью 3.
18. Дано n вещественых чисел. Вычислить разность между максимальным и минимальным из них.
19. Дана непустая последовательность различных натуральных чисел, за которой следует ноль. Определить порядковый номер наименьшего из них.
20. Даны целое n>0 и последовательность из n вещественных чисел, среди которых есть хотя бы одно отрицательное число. Найти величину наибольшего среди отрицательных чисел этой последовательности.
21. Дано n вещественных чисел. Определить, образуют ли они возрастающую последовательность.
22. Дана последовательность из n целых чисел. Определить, со скольких отрицательных чисел она начинается.
23. Определить k — количество трёхзначных натуральных чисел, сумма цифр которых равна n (). Операции деления (/, div, mod) не использовать.
24. Вывести на экран в возрастающем порядке все трёхзначные числа, в десятичной записи которых нет одинаковых цифр (операции деления не использовать).
25. Переменной t присвоить значение 1 или 0 в зависимости от того, можно или нет натуральное число n представить в виде трех полных квадратов.
26. Дано натуральное число n. Выяснить, входит ли цифра 3 в запись числа .
27. Дано натуральное число п. Найти сумму его цифр.
28. Дано целое n>0, за которым следует n вещественных чисел. Определить, сколько среди них отрицательных.
29. Дано натуральное число n. Переставить местами первую и последнюю цифры числа n.
30. Дано натуральное число n. Заменить порядок следования цифр числа n на обратный.
Работа 4.
КОНСТРУИРОВАНИЕ ПРОГРАММ
С ИСПОЛЬЗОВАНИЕМ МАССИВОВ
Цель работы: изучить свойства компонента TStringGrid. Написать программу с использованием массивов.
Работа с массивами
Массив есть упорядоченный набор однотипных элементов, объединенных под одним именем. Каждый элемент массива обозначается именем, за которым в квадратных скобках следует один или несколько индексов, разделенных запятыми, например: а[1], bb[I], с12[I, j*2], q[l, 1, I*j-l]. В качестве индекса можно использовать любые порядковые типы за исключением LongInt.
Тип массива или сам массив определяются соответственно в разделе типов (Type) или переменных (Var) с помощью ключевого слова Array следующим образом:
Array [описание индексов] of <тип элементов массива >
Примеры описания массивов:
Const N=20; // Задание максимального значения индекса;
Type
Tvector = array [1..N] of real; // Описание типа одномерного массива;
Var
A: Tvector; //A - массив типа Tvector;
Ss: array[1..10] of integer; //Ss - массив из десяти целых чисел;
Y: array[l..5, 1..10] of char; //Y -двумерный массив символьного типа.
Элементы массивов могут использоваться в выражениях так же, как и обычные переменные, например:
F:= 2*a[3] + a[ss[l] + 1]*3;
A[n]:= 1+sqrt(abs(a[n-1]));
Компонент TstringGrid
При работе с массивами ввод и вывод информации на экран удобно организовывать в виде таблиц, используя компонент TstringGrid. Последний предназначен для отображения информации в виде двумерной таблицы, каждая ячейка которой представляет собой окно однострочного редактора (аналогично окну TEdit). доступ к информации осуществляется с помощью свойства
Cells[ACol, Arow: Integer]: string;
где ACol, Arow - индексы элементов двумерного массива. Свойства ColCount и RowCount устанавливают количество строк и столбцов в таблице, а свойства FixedCols и FixedRows задают количество строк и столбцов фиксированной зоны. Фиксированная зона выделена другим цветом, и в нее запрещен ввод информации с клавиатуры.