Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Основы программирования в Delphi. Учебно-методическое пособие
.pdf
Основы программирования в Delphi
Математи-
ческая запись
Запись на
языке Pascal
Пояснение
Тип
аргумента и
результата
|x|
abs(x)
Модуль числа x
Integer (I) или
Real (R)
x2
sqr(x)
Квадрат числа x
аргумент - I или
R,
результат - r
sin x
cos x
arctg x
sin(x)
cos(x)
arctan(x)
Синус, косинус и арктангенс числа соответсвенно.
Других тригонометриче-
ских функций в языке нет
аргумент - I
или R,
результат - R
ex
ln x
exp(x)
ln(x)
Экспонента и натуральный
логарифм
аргумент - I
или R,
результат – R
x
sqrt(x)
Квадратный корень от
числа x
аргумент - I или
R, результат - R
pi
Функция без аргументов,
вернет число
R
trunc(x)
Функция отбрасывает
дробную часть числа, число не округляется
аргумент R,
результат I
frac(x)
Функция выделяет
дробную часть числа
R
round(x)
Округление вещественного числа до ближайшего
целого
аргумент R,
результат I
функции следует ее аргумент (или аргументы), заключенный в круглые скобки.
Если аргументов несколько, они разделяются запятыми. Информация об основ-
ных стандартных функциях Delphi представлена в табл. 3.2.
В приведенной таблице x обозначает любую подходящую по типу пере-
менную, либо результат вычисления выражения соответствующего типа, либо
соответствующий по типу результат, вычисленный другой стандартной функ-
цией.
Табл. 3.2. Стандартные функции языка Pascal
31

Основы программирования в Delphi
3/1
3
xx
2
ba
y
2
b
a
Приведем примеры арифметических выражений:
1. Возвести величину x в пятую степень. Выражение может быть записано как
x*x*x*x*x или sqr(x)*sqr(x)*x или sqr(sqr(x))*x, последнее показывает, что результаты одних функций могут быть аргументами других - это называют вло-
жением функций. Разумеется, тип результата, возвращаемый вложенной функцией, должен быть подходящим для аргумента внешней функции.
2. Возвести величину a в произвольную степень x. Так как в Pascal нет функции
возведения в произвольную степень, воспользуемся формулой ax=e
a:=2.5; x:=0.25;
ax:=exp(x*ln(a));
Обратите внимание, что все круглые скобки в выражении должны быть парны-
x*ln a
:
ми. Другой пример применения этого способа:
= exp(1/3ln(x)).
3. Вычислить sin2x. Запись в Delphi: sqr(sin(x)). Сравните с выражением sin x2,
которое записывается как sin(sqr(x)).
4. Вычислить k=tg(t). Так как функции тангенса в Delphi нет, распишем тангенс
в виде k:=sin(t)/cos(t);
5. При необходимости изменить обычное старшинство операций в записи выражения используются дополнительные круглые скобки. Например, правильная
запись выражения
так как это означает
выглядит как y:=(a+b)/2;. Запись y:=a+b/2; неверна,
.
6. В записи выражений нельзя пропускать знак умножения, как это делается в
математике: b2-4ac записывается как sqr(b)-4*a*c. Нельзя также писать sin*x
или sin x, после имени функции может следовать только ее аргумент и обязательно в круглых скобках.
Тип выражения определяется старшим из типов входящих в него операн-
дов (то есть, стандартных функций, переменных, констант). Старшинство типов
можно определить по табл. 2.1. В первой строке таблицы находится самый
младший тип.
Например, для переменных
var i,j:integer;
f:real;
выражение i+4*j имеет целый тип, и его результат можно записать в целую переменную. Выражение f+i*0.5 дает вещественный, результат, который должен
быть записан в вещественную переменную.
32

Основы программирования в Delphi
yyxxz
2211
cossin)36ln(5
Операция деления в Delphi всегда дает вещественное число. Для деления
целых чисел с целым результатом используйте оператор div, для взятия остатка
от деления двух целых – оператор mod.
Рассмотрим небольшой пример вычисления значений функции двух пере-
менных (рис. 3.1)
:
Рис. 3.1 Вычисление значения функции
Обработчик щелчка на кпопке Вычислить должен быть следующий:
procedure TForm1.Button1Click(Sender: TObject);
var x,y,z:Real;
begin
x:=StrToFloat(Edit1.Text);
y:=StrToFloat(Edit2.Text);
z:=5*exp(11*ln(x))+ln(6*x+3)-sqrt(Sin(y)*sin(y)+cos(y)*cos(y));
Edit3.Text:=FloatToStr(z);
end;
КОНТРОЛЬНЫЕ ВОПРОСЫ
33

Основы программирования в Delphi
1. Перечислите основные арифметические операциии в Delphi.
2. Назовите стандатные функции языка.
3. В чем заключается особенность записи арифметических выражений в
Delphi?
4. Для чего используются операторы div и mod?
5. Какие способы записи степени переменной в Delphi вы знаете?
ВИДЕО-УРОК 2
https://youtu.be/6c4o9SxHz_A
34

Основы программирования в Delphi
4. ОПЕРАТОРЫ ВЕТВЛЕНИЙ В DELPHI
Для того чтобы дальнейшее изучение Delphi сопровождалось практичны-
ми примерами в этом рассмотрим операторы разветвления if и case.
Оператор if … then … else …
Часто требуется выполнить определенные действия только в том случае,
когда выполняются некоторые условия. Если условия не выполняются, то следует выполнить какие-то другие действия. Такие участки программы называ-
ются разветвлением. Структура такого фрагмента программы имеет следующий
вид:
if условие
then действие_1
else действие_2;
Действие_1 будет выполнено, если условие истинно (равно True), действие_2 выполняется, если условие ложно (False).
Условия в таких выражениях представляют собой логические выражения.
В них происходит сравнение значений выражений, с помощью операторов
сравнения: >, <, =, < > (не равно) , > = (больше или равно) и < = (меньше или
равно).
После ключевых слов then и else может идти составной оператор, заклю-
ченный в логические или, как еще говорят, операторные скобки begin … end.
Пример. Рассмотрим классический пример решения квадратного урав-
нения (рис 4.1). Как мы знаем, решение уравнения в данной случае зависит от
знака дискриминанта. Уравнение может иметь два действительных корня,
один корень, а может не иметь ни одного действительного корня вообще.
35

Основы программирования в Delphi
Рис 4.1 Решение квадратного уравнения
Код обработчика нажатия на кнопке Решить имеет вид:
procedure TForm1.Button1Click(Sender: TObject);
var a,b,c,x1,x2,d:Real;
begin
a:=StrToFloat(Edit1.Text);
b:=StrToFloat(Edit2.Text);
c:=StrToFloat(Edit3.Text);
d:=Sqr(b)-4*a*c;
Edit4.Text:=FloatToStr(d);
if d<0 then
begin
Label8.Caption:='Корней уравнения не существует';
Edit6.Visible:=False;
Edit5.Visible:=False;
Label6.Visible:=False;
Label7.Visible:=False;
end;
if d=0 then
begin
Label8.Caption:='Уравнение имеет один корень';
36

Основы программирования в Delphi
Edit6.Visible:=False;
Label7.Visible:=False;
Edit5.Text:=FloatToStr(-b/2*a);
end;
if d>0 then
begin
Label8.Caption:='Уравнение имеет два корня';
Edit5.Text:=FloatToStr((-b-sqrt(d))/2*a);
Edit6.Text:=FloatToStr((-b+sqrt(d))/2*a);
end;
end;
Оператор выбора case
Для случаев, когда требуется выбор одного значения из дискретного набора значений, оператор if удобно заменить оператором выбора case, который еще
называется переключателем. Этот оператор имеет следующую форму записи:
case выражение of
значение1: оператор1;
значение2: оператор2;
. . .
значениеN: операторN;
else операторM;
end;
Оператор выполняется так же, как составной условный оператор. Выражение обязательно должно иметь порядковый тип (целый или символьный). Элементы списка перечисляются через запятую. Ими могут быть константы и диа-
пазоны значений того же типа, что тип выражения. Диапазоны указываются в
виде:
Мин.значение .. Макс.значение
Оператор диапазона записывается как два рядом стоящих символа точки. В
диапазон входят все значения от минимального до максимального включитель-
но.
В качестве примера рассмотрим программу, в которой по номеру месяца m
определим число дней d в нем:
37

Основы программирования в Delphi
Рис. 4.2 Использование оператора case
Программный код щелчка на компоненте RadioGroup:
procedure TForm1.RadioGroup1Click(Sender: TObject);
var s:Integer;
begin
case RadioGroup1.ItemIndex of
0:s:=31;
1:s:=29;
2:s:=31;
3:s:=30;
4:s:=31;
5:s:=20;
6:s:=31;
7:s:=31;
8:s:=30;
9:s:=31;
10:s:=30;
11:s:=31;
38

Основы программирования в Delphi
end;
Edit1.Text:=IntToStr(s);
end;
КОНТРОЛЬНЫЕ ВОПРОСЫ
1. Как записывается условный оператор if в языке Delphi?
2. Назовите операторные (логические) скобки в языке.
3. Когда используется оператор case?
4. Приведите примеры использования условных операторов.
5. Можно ли всегда оператор if заменить оператором case и наоборот?
ВИДЕО-УРОК 3
https://youtu.be/UN6QeyR915g
39

Основы программирования в Delphi
5. ОПЕРАТОРЫ ЦИКЛОВ В DELPHI
В языке программирования Delphi имеется несколько операторов, позволяющих организовать циклическое (повторное) выполнение некоторого участка
программы. Это операторы for …, while …и repeat … until. Начнем с расмотрения for-цикла. Далее рассмотрим формат использования других операторов
цикла.
5.1 Цикл с параметром for
for-цикл удобно использовать в тех случаях, когда количество цикличе-
ских выполнений некоторого участка программы заранее известно. Например,
при вычислении суммы ряда, который состоит из n-элементов.
Этот оператор имеет следующий формат записи:
for счетчик: выражение_1 to выражение_2 do
тело_цикла
Примечание. Если в теле цикла два и более операторов, то их необходимо
заключить в операторные скобки. Роль операторных скобок в языке Delphi играет конструкция begin…end.
Например:
for счетчик:=выражение_1 to выражение_2 do
begin
оператор1;
оператор2;
…
операторN;
end;
Пример. Вычисление суммы первых n-членов арифметической прогрес-
сии. Даны: первый элемент прогрессии, приращение и количество элементов.
Оформим форму, как это показан на рис. 5.1.
40
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
