Ситкин. Информатика. Программирование в DELPHI
.pdfПравила записи типовых действий
|
|
|
|
|
Таблица 2.8 |
|
|
|
|
Стандартные функции и процедуры |
|
||
|
|
|
|
|
|
|
Математ. запись |
Запись на язы- |
Тип |
||||
или действие |
ке программ. |
аргумента |
результата |
|||
|x| |
Abs(x) |
Целый |
Целый |
|||
Вещественный |
Вещественный |
|||||
|
|
|
|
|||
x2 |
Sqr(x) |
Целый |
Целый |
|||
Вещественный |
Вещественный |
|||||
|
|
|
|
|||
|
|
|
Sqrt(x) |
Целый |
Вещественный |
|
|
x |
|||||
|
Вещественный |
Вещественный |
||||
|
|
|
|
|||
ex |
Exp(x) |
Целый |
Вещественный |
|||
Вещественный |
Вещественный |
|||||
|
|
|
|
|||
Lnx |
Ln(x) |
Целый |
Вещественный |
|||
Вещественный |
Вещественный |
|||||
|
|
|
|
|||
Sinx |
Sin(x) |
Целый |
Вещественный |
|||
Вещественный |
Вещественный |
|||||
|
|
|
|
|||
Cosx |
Cos(x) |
Целый |
Вещественный |
|||
Вещественный |
Вещественный |
|||||
|
|
|
|
|||
Arctgx |
Arctan(x) |
Целый |
Вещественный |
|||
Вещественный |
Вещественный |
|||||
|
|
|
|
|||
Целая часть x |
Int(x) |
Вещественный |
Вещественный |
|||
Дробная часть x |
Frac(x) |
Вещественный |
Вещественный |
|||
Округл. x до це- |
Trunc(x) |
Вещественный |
Целый |
|||
лого в сторону 0 |
||||||
|
|
|
||||
Округл. x до |
Round(x) |
Вещественный |
Целый |
|||
ближайш. целого |
||||||
|
|
|
||||
Случайное целое |
Random(N) |
Целый |
Целый |
|||
x от 0 до N |
||||||
|
|
|
||||
Случайное ве- |
Random |
|
Вещественный |
|||
ществ. x от 0 до 1 |
|
|||||
|
|
|
||||
Число |
Pi |
|
Вещественный |
|||
Увелич. х на 1 |
Inc(x) |
|
|
|||
Увелич. х на n |
Inc(x, n) |
|
|
|||
Уменьш. х на 1 |
Dec(x) |
|
|
|||
Уменьш. х на n |
Dec(x, n) |
|
|
31
Приведём примеры записи некоторых вычислений (выражений)
|
|
|
|
|
a |
|
|
|
|
|
x2 y 2 |
|
sqrt(abs(sqr(x) sqr(y))); |
b |
a/(a+1)+b; |
||
|
|
|
||||||
|
|
|
a 1 |
|||||
|
|
|
|
|
|
|
||
xy = ey·lnx exp(y*ln(x)); logax ln(x)/ln(a); |
tgx sin(x)/cos(x). |
При вводе (выводе) данных в компоненты Edit, LabeledEdit, Memo, Label и др. сами данные получают строковый тип данных, так уста-
новлено системой программирования. Поэтому, даже если в поле Edit1
введено число, например, 55, то оно воспринимается как строка из двух символов 5, т.к. Edit1.Text свойство строкового типа по умолча-
нию. Для того, чтобы программа воспринимала числа, как числа, и
над ними можно было выполнять арифметические операции, содержимое Edit1.Text следует преобразовать из строки символов в число. А
при выводе данных, наоборот, следует преобразовать число в строку
символов. Некоторые функции преобразований описаны в табл. 2.9.
|
|
|
Таблица 2.9 |
|
|
Функции преобразования типов |
|
||
|
|
|
|
|
Функция |
Преобразование |
Тип |
||
аргумента |
результата |
|||
|
|
|||
StrToInt(s) |
строка символов |
Строковый |
Целый |
|
целое число |
||||
|
|
|
||
StrToFloat(s) |
строка символов |
Строковый |
Вещественный |
|
веществ. число |
||||
|
|
|
||
IntToStr(n) |
целое число |
Целый |
Строковый |
|
строка символов |
||||
|
|
|
||
FloatToStr(n) |
веществ. число |
Вещественный |
Строковый |
|
строка символов |
||||
|
|
|
Примеры преобразований
var x1, x2:byte;
y1, y2:real;
32
begin
x1 StrToInt(Edit1.Text); y1 StrToFloat(Edit2.Text);
…………………………………………………………...
Label1.Caption IntToStr(x2); Label2.Caption FloatToStr(y2);
Структура процедуры обработки события
Процедура состоит из заголовка, раздела описаний и раздела операторов и имеет следующую структуру
procedure имя_процедуры(параметры) ; // заголовок
const {начало раздела описаний} // объявление констант type // объявление пользовательских типов
var // объявление переменных begin {начало раздела операторов}
оператор1;
…………...
операторN;
end; // конец процедуры
Заголовок начинается со служебного слова procedure, за которым идёт имя процедуры с указанием в скобках параметров. Заголовок полностью формируется автоматически в момент назначения проце-
дуры обработки события. Далее следует раздел описаний, в котором описываются (объявляются) константы, переменные, пользователь-
ские типы данных, которые будут использованы в данной процедуре.
Между служебными словами begin и end располагается раздел опера-
торов, содержащий команды, которые должны быть выполнены по данной процедуре. В тексте допускается использование комментари-
ев, игнорируемых компилятором. Однострочный пишут после симво-
ла «//», многострочный размещают в фигурных скобках. Константы,
типы, переменные, описанные внутри процедуры, являются локаль-
33
ными и могут быть использованы только в ней, а описанные вне про-
цедур после слова implementation, являются глобальными для данно-
го проекта и могут использоваться в любой процедуре проекта.
Пример 2.1
Разработаем проект для вычисления значения выражения
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
z a |
x2 |
5 |
a2 |
y2 5 |
|
|
( y 2)2 5 |
, |
|
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
x |
5 |
|
|
|
y |
|
5 |
|
|
y 2 |
|
5 |
|
|
||
где x и y переменные, a константа. |
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||
|
начало |
|
|
|
|
|
|
|
Поскольку в выражении часто встречается число |
||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
«5», то целесообразно также взять его за константу. |
|||||||||||||||||||
a=3, b=5 |
|
|
Блок-схема алгоритма вычисления представлена на |
||||||||||||||||||||||||||||||||
ввод x, y |
|
|
|||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
рис. 2.1. После ввода значений переменных x и y по- |
|||||||||||||||||||
z1 |
|
|
x2 |
b |
|
|
|
следовательно вычисляются значения трёх дробей. За- |
|||||||||||||||||||||||||||
|
|
|
|
|
b |
|
|
||||||||||||||||||||||||||||
|
|
|
x |
|
|||||||||||||||||||||||||||||||
|
|
|
|
||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
тем в первом случае значение дроби умножается на |
|||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
z2 |
|
y2 |
|
b |
|
|
|
значение константы a, |
|
во |
втором на его квадрат, |
||||||||||||||||||||||||
|
|
|
b |
|
|||||||||||||||||||||||||||||||
|
|
|
|
|
|
||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
y |
|
|
|
промежуточные результаты складываются, и полу- |
||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||
z3 |
( y 2)2 |
b |
|
|
чившийся итоговый результат выводится. |
|
|||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||
|
|
|
|
|
y 2 |
b |
|
|
|
Реализуем разработанный алгоритм в проекте. |
|||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Для ввода переменных x и y разместим на форме два |
|||||||||||||||||||
z=az1+a2z2 |
|
|
|
|
|
|
|||||||||||||||||||||||||||||
+z3 |
|
|
компонента |
Edit, для пояснений к ним добавим два |
|||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
компонента Label. Для вывода результата предусмот- |
|||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||
|
вывод z |
|
|
рим третий компонент Label. Поместим также команд- |
|||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||
|
|
конец |
|
|
|
|
|
|
ную кнопку Button, со щелчком по которой свяжем |
||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
Рис. 2.1 |
|
|
|
|
|
|
считывание |
исходных |
данных из компонентов |
Edit, |
||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
вычисление значения выражения и его вывод в Label3. На рис. |
2.2 |
34
изображён примерный вид разработанной формы запущенного на ис-
полнение приложения. Текст процедуры будет иметь вид procedure TForm1.Button1Click(Sender: TObject); const a=3; b=5;
var x, y, z, z1, z2, z3:real;
begin
x:=StrToFloat(Edit1.Text); //считывание и преобр. значения x из Edit1 y:=StrToFloat(Edit2.Text); //считывание и преобр. значения y из Edit2
z1:=(sqr(x)+b)/(sqrt(abs(x))+b);
z2:=(sqr(y)+b)/(sqrt(abs(y))+b);
z3:=(sqr(y-2)+b)/(sqrt(abs(y-2))+b);
z:=a*z1+sqr(a)*z2+z3;
Label3.Caption:='z='+ FloatToStr(z); //вывод значения z в Label3
end;
Label1 |
|
|
|
|
|
Form1 |
|
|
|
|
|
Button1 |
||
|
|
|
||
|
|
|
|
|
Edit1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Label2 |
Label3 |
|
Edit2
Рис. 2.2
При выводе ответа использован общий способ представления результата в виде вещественного числа z с помощью функции
FloatToStr(z). Для представления вещественного результата в задан-
ном формате применяют функцию FloatToStrF(n, f, m, k),
где n – строка символов, которую нужно представить в виде числа; f – формат представления (ffGeneral – универсальный, ffFixed – c
фиксированным положением разделителя, ffExponent – экспоненци-
35
альный); m – общее количество цифр; k – количество цифр после за-
пятой.
Задание
Разработать проект для вычисления значения выражения z, где x
и y – переменные, a и b – константы. Представить результат в трёх форматах: обычном, экспоненциальном, с округлением до трёх знаков после запятой.
1. |
z |
|
|
|
|
x |
|
|
|
x2 |
|
|
|
|
|
|
|
|
|
x 2 |
|
|
|
|
(x 2)2 |
|
|
|
|
|
|
|
|
2 y |
|
|
4 y 2 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
a |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2a |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
b |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||
2. |
z a |
|
|
|
|
|
|
|
|
x2 1 x |
2a |
|
|
|
|
|
|
|
|
|
|
y2 |
1 y |
|
|
|
|
|
|
|
|
( y b)2 1 y b |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
sin x cos x |
sin y |
cos y |
sin( y b) cos( y b) |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
z a |
|
|
|
|
|
|
|
|
|
|
x3 7 a5 |
|
|
|
|
|
|
|
|
|
|
|
(x b)3 7 |
|
|
|
|
|
|
|
|
|
|
|
|
y3 7 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
3. |
|
|
|
|
|
|
x |
|
|
|
|
x b |
|
|
|
|
|
|
|
y |
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||||||||||||||||
4. |
z |
|
|
|
|
x |
|
|
|
|
x y |
3 |
|
|
|
|
|
|
|
x a |
|
|
(x a) y3 |
|
|
|
|
|
|
|
|
|
|
x |
|
|
x ( y b)3 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||
|
|
|
y |
|
|
|
|
|
|
y x3 |
|
|
|
|
|
|
|
|
y |
|
y (x a)3 |
|
|
|
y b |
|
y b x3 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
x3 y2 |
|
|
|
(ax)3 y2 |
|
|
|
x3 |
|
(by)2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
5. |
z |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||
|
y |
3 |
x |
2 |
y |
3 |
|
(ax) |
2 |
|
|
|
(by) |
3 |
x |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||
6. |
z 2 |
|
x3 |
3 y |
|
|
(x a)3 3 |
y b |
|
2 |
|
x3 |
3 x |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||
|
y2 |
3 x |
( y b)2 3 |
x a |
x2 |
|
3 x |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
7. |
z a |
e X |
|
3a |
|
e2 X |
|
b |
eY |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
x |
4 |
1 |
|
|
|
|
|
|
|
|
4 |
|
|
1 |
y |
4 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
16x |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
8. |
z a |
(x y)2 |
|
|
|
|
|
|
|
|
|
x y |
|
|
10 |
|
b |
4(x y)2 2 |
|
x y |
|
|
10 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
x |
y |
|
20 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
|
x y |
|
20 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
9. |
z a |
|
y X y3 |
|
b |
xY x3 |
|
|
|
y2 y3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
x |
Y |
x |
4 |
|
|
y |
X |
y |
4 |
2 |
Y |
16 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
36
Проанализируйте выражение на предмет возможности появле-
ния ошибок выполнения при определённых исходных данных. Опре-
делите области их допустимых значений.
Содержание отчёта
цель работы и задание;
блок-схема алгоритма вычисления значения выражения;
текст модуля;
пример работы приложения с указанием компонентов формы;
тестирование приложения альтернативным расчётом;
выводы по работе.
Контрольные вопросы
1.Что определяют типы данных, какова их классификация?
2.Что такое константы и переменные, каков синтаксис их объявле-
ния, как присвоить значение переменной?
3.Чем следует руководствоваться при назначении типа данных при объявлении переменной?
4.Перечислите правила записи арифметических операций и основных стандартных действий.
5.В чём заключается причина использования функций преобразова-
ния типов, перечислите их.
6. Какова структура процедуры обработки события, каково назначе-
ние её разделов?
7. В чём состоит разница между локальными и глобальными констан-
тами и переменными, где осуществляется их описание (объявление)? 8. В каких форматах можно представить число при его отображении на форме?
37
Лабораторная работа № 3
ПОДПРОГРАММЫ
Цель работы приобретение умений разработки подпрограмм. В программировании часто встречаются ситуации, когда одни и
те же действия необходимо выполнить над разными объектами, например, переменными. Это приводит к повторяющимся фрагментам в программном коде, где выполняемые действия одинаковы, а изменяются лишь имена объектов, над которыми эти действия выполняются. В таких случаях эффективнее один раз описать последовательность этих действий, а затем несколько раз выполнить их, подставляя соответствующие имена объектов. Часто это приводит к значительному снижению объёма программного кода, уменьшает количество ошибок, упрощает программу и её отладку. Кроме того, иногда проще разбить большую задачу на несколько подзадач, а затем, комбинируя их, получить результат. Такие возможности предоставляют подпрограммы.
Подпрограмма логически законченная самостоятельная программная единица с именем, которую можно многократно использовать для выполнения. Использование подпрограмм позволяет избегать многократного описания однотипных действий и увеличивает наглядность программы.
Классификация и структура подпрограмм
Подпрограммы разделяются на функции, процедуры и процедуры обработки событий. В свою очередь, функции и процедуры делятся на стандартные и пользовательские. Стандартные поставляются
38
вместе с системой программирования и описывают типовые действия,
например, вычисление синуса, косинуса, квадратного корня,
ввод/вывод данных и т.п. Пользовательские функции и процедуры разрабатывает сам программист. Эти подпрограммы не являются об-
работчиками событий, они используются ими. Поэтому, они не назначаются через окно Object Inspector и полностью прописывают-
ся программистом. Текст пользовательской подпрограммы помещает-
ся в разделе implementation модуля и должен предшествовать тексту процедуры обработки события, которая будет её использовать.
Структура функции в общем случае имеет вид
function имя_функции(формальные параметры: тип): тип;
const //объявление локальных констант
type //объявление локальных пользовательских типов var //объявление локальных переменных
begin //начало раздела операторов
оператор1;
…………...
операторN;
имя_функции:= значение; //присвоение имени ф-ии значения end; //конец функции
Структура процедуры в общем случае имеет вид
procedure имя_процедуры(формальные параметры: тип);
const //объявление локальных констант
type //объявление локальных пользовательских типов var //объявление локальных переменных
begin //начало раздела операторов
оператор1;
…………...
операторN;
end; //конец процедуры
39
Первая строка подпрограммы её заголовок. Он начинается со служебного слова function или procedure, за которым указывается имя подпрограммы, выбираемое программистом, с перечислением в скобках формальных параметров с указанием их типа. Далее следует раздел описаний, где объявляются локальные константы и перемен-
ные, т.е. используемые только в этой подпрограмме. Между служеб-
ными словами begin и end располагается раздел операторов, содер-
жащий команды, которые должны быть выполнены по данной под-
программе, описанные с использованием формальных параметров.
Главное отличие функции от процедуры состоит в том, что функция в процессе своей работы вырабатывает значение определён-
ного типа данных, которое связывается с её именем, т.е. имя функции является носителем этого значения. У процедуры же имя не является носителем значения. Поэтому, в заголовке функции указывают тип значения, которое она вырабатывает, и описание функции завершает-
ся присвоением результата её имени, у процедуры всего этого нет.
Механизм работы подпрограммы и обмена параметрами
Само по себе описание подпрограммы никаких действий не производит, а формальные параметры не имеют значений. Чтобы вос-
пользоваться подпрограммой, её нужно вызвать, задав конкретные,
фактические значения параметров. Вызов подпрограммы имеет вид имя_функции(фактические параметры) или имя_процедуры(фактические параметры);
При вызове подпрограммы значения фактических параметров заме-
няют формальные параметры в описании подпрограммы, и для фак-
тических параметров выполняются действия, которые были описаны
40