Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Основы программирования в Delphi. Учебно-методическое пособие

.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
1 Мб
Скачать
☆
Основы программирования в 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
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]