Методичка
.pdfДля этого значение нужно поместить в какой-нибудь компонент, имеющий свойства Text или Caption. Это, например, такие компоненты как Label и Edit, да и сама Форма имеет свойство Caption, куда тоже можно выводить информацию. Однако, в Delphi информацию перед выводом, как правило, необходимо преобразовывать. Так как присвоение возможно только между переменными одного типа, то такая программа (не пытайтесь её исполнять):
var A, B, C: Integer ; begin
A := 5 ; B := 10 ; C := A+B ;
Label1.Caption := C ; end ;
вызовет ошибку, так как свойство Caption имеет текстовый тип String, а использованные переменные - цифровой тип Integer. Значит, нужно преобразовать значение переменной C в текстовый тип. Для этого есть встроенная функция IntToStr. Строка в нашей программе, вызывавшая ошибку, должна выглядеть так:
Label1.Caption := IntToStr(C) ;
Такая программа, кроме показа числа 15, ни на что не способна. Мы должны научиться вводить в программу другие числа. Используем компоненты Edit. Введённые числа будут содержаться в свойстве Text этих компонентов. Расположим на форме два компонента Edit, один компонент Label и кнопку Button, по нажатию на которую и будем проводить вычисления. В компоненты Edit1 и Edit2 будем вводить числа для суммирования. Чтобы переместиться в редактор кода, щёлкнем дважды по нашей кнопке Button1. Мы попадём прямо в сформированную для нас средой Delphi заготовку обработчика нажатия на кнопку, непосредственно между операторами begin и end. Напишем такой простой код:
procedure TForm1.Button1Click(Sender: TObject); var A, B, C: Integer;
begin
A := Edit1.Text;
B := Edit2.Text; C := A+B;
Label1.Caption := IntToStr(C); end ;
При попытке исполнить этот код Delphi покажет ошибки по аналогичной причине - переменные A и B имеют цифровой тип Integer, а свойство Text - текстовый тип String. Исправить ошибки поможет встроенная функция StrToInt, выполняющая обратное преобразование - текст в целое число. Операторы присвоения переменным A и B должны выглядеть так:
11
A := StrToInt(Edit1.Text);
B := StrToInt(Edit2.Text);
Аналогично, имеются функции и для преобразования в строку и обратно действительных чисел c плавающей (Floating англ.) запятой, имеющих тип Real. Для преобразования в строку - FloatToStr, обратно - StrToFloat.
Часто результаты вычислений, имеющие тип Delphi Real, имеют после запятой длинный "хвост" цифр. При выводе такой переменной в текстовом виде необходимо ограничить количество цифр после запятой. Для этого воспользуемся командой Round, которая позволяет округлять значеняи переменных до единиц. Код
Round(C*100)/100;
округлит значение переменной C до сотых, сначала умножив ее на 100, округлив до единиц, и разделив на 100.
Лабораторная работа № 1 Вычисление выражений в среде Delphi
Цель: Научиться присваивать переменным значения, введенные с клавиатуры, производить вычисления и выводить результаты расчета.
Задание: написать программу для вычисления значения заданного выражения, произвести расчет при x = 6 и y = 4, вывести результат расчета на форму.
Пример выполнения задания.
Размещаем на компоненты Edit по количеству исходных данных (x и y, то есть 2) для считывания из них значений переменных, компонент Label для вывода результата расчета и компонент Button для запуска расчета по нажатию на кнопку. Также можно добавить текстовые поля Label перед полями ввода текста, для обозначения исходных данных, с текстом, например «X=» и «Y=». Для этого присвоим свойству «Caption» компонентов Label и Button текстовые значения, которые мы хотим видеть отображенными на форме. Например, свойству «Caption» кнопки присвоим значение «Расчет» в объектном инспекторе. Форма показана на рис. 2.1.
Рис. 2.1. Окно программы
12
Перейдем в код и опишем переменные. Для этого в разделе var присвоим переменным x,y и z тип Real.
Рис. 2.2. Код программы
Для написания кода, выделим компонент Button, перейдем в инспекторе объектов во вкладку «Events».
Рис. 2.3. Инспектор объектов
Дважды щелкнув на событие «OnClick», которое означает исполнение кода, по нажатию на выбранный компонент (Кнопка), перейдем в код процедуры, которая выполняется по нажатию кнопки.
Рис. 2.4. Код процедуры
13
И между ключевыми словами begin и end; напишем код процедуры. Сначала считаем данные из текстовых полей Edit с именами Edit1 и Edit2, затем выполним вычисления и выведем результат в компонент Label с
именем Label1.
Рис. 2.5. Код процедуры
И запустим программу, нажав на кнопку «Run». Введем исходные данные и нажмем копку «Расчет».
Рис. 2.6. Окно программы
Варианты индивидуальных заданий
Вариант |
Задание |
Вариант |
Задание |
|
|
|
|
1 |
|
9 |
|
|
|
|
|
2 |
|
10 |
|
|
|
|
|
3 |
|
11 |
|
|
|
|
|
4 |
|
12 |
|
|
|
|
|
5 |
|
13 |
|
|
|
|
|
6 |
|
14 |
|
|
|
|
|
7 |
|
15 |
|
|
|
|
|
8 |
|
16 |
|
|
|
|
|
14
Тема 3. Операторы Delphi. Условный оператор
Выражения Delphi.
Впрограммах Delphi применяютсяматематические выражения;логические выражения;выражения со строками;и другие.
Математические выражения
Вматематических выражениях используются операции присваивания :=, сложения +, вычитания –, умножения *, деления /, целочисленного деления div, остатка от деления mod. При использовании этих операций важен приоритет их выполнения, так как в программировании на языке Delphi, как и в обычной математике, выражения выполняются не в порядке следования, а с учётом приоритета. У операций умножения и деления более высокий приоритет, чем у операций сложения и вычитания.
То есть, результат выражения
X:=1+2*3-4/5;
будет равен не 1, как в случае последовательного выполнения, а 6.2 . Если же мы хотим получить именно последовательное выполнение, то необходимо применять скобки (), обособляющие те операции, которые
необходимо выполнить первыми. Скобки могут быть вложены друг в друга неограниченное число раз:
X:=((1+2)*3-4)/5;
Вот теперь X будет равен 1.
Помимо четырёх математических действий в Delphi доступно множество математических функций, таких, например, как тригонометрические, логарифмические, и т.д.
Внутри математических операций возможно использование любых функций, если они возвращают численное значение, а также возможно использование и стандартных функций, таких как sin, cos и т.п., которые уже предусмотрены в Delphi.
a := sin(b)*2+1;
Допустима неограниченная вложенность различных функций, операций, скобок и т.п.:
a := sin(cos(b/2+sqr(c))) * 2;
Рассмотрим самые необходимые и часто используемые функции, работающие с числами, которые уже предусмотрены в Delphi.
15
Таблица 3.1
Математические функции в среде Deplhi
Название функции |
Описание функции |
|
|
|
|
Abs(x) |
Возвращает абсолютное значение аргумента |
|
(модуль) |
||
|
||
Sin(x) |
Возвращает синус аргумента. Аргумент необ- |
|
ходимо указывать в радианах |
||
|
||
Cos(x) |
Возвращает косинус аргумента. Аргумент |
|
необходимо указывать в радианах |
||
|
||
Exp(x) |
Экспонента (e в степени аргумента) |
|
Ln(x) |
Возвращает натуральный логарифм аргумента |
|
Sqr(x) |
Возвращает квадрат аргумента |
|
Sqrt(x) |
Возвращает квадратный корень аргумента |
|
Int(x) |
Возвращает целую часть нецелочисленного ар- |
|
гумента |
||
|
||
Frac(x) |
Возвращает дробную часть нецелочисленного |
|
числа |
||
|
||
Round(x) |
Округление аргумента до ближайшего целого |
|
числа |
||
|
||
Trunc(x) |
Возвращает целую часть вещественного числа |
Логические выражения Логические выражения выполняются над операндами логического
типа, то есть имеющими тип Boolean Delphi. Они применяются в основном в условных операторах.
Операторы Delphi
Для создания приложений, реализующих сложную алгоритмическую логику, нужны средства управления ходом работы программы: изменения порядка выполнения операторов в зависимости от различных условий, и эффективной организации работы часто повторяющихся фрагментов. Математически доказано, что любой алгоритм можно закодировать с помощью
оператора присваивания;
условного оператора;
оператора цикла.
С оператором присваивания ":=" мы уже знакомились. Он работает следующим образом. Переменная, стоящая в левой части оператора, становится равной той величине, которая находится справа. Типы этих величин должны совпадать. В выражении, стоящем справа, также может использоваться переменная, стоящая слева. С математической точки зрения это неправильно, но в программировании это означает, что из ячейки па-
16
мяти берётся исходное значение, производятся вычисления, и результат записывается в эту же ячейку памяти, затирая прежнее значение.
Пример:
var A, B : Integer; begin
A:=3;
B:=4;
A:=A*A+B*B;
end;
В начале фрагмента переменная A равна 3, а в конце -25.
Условный оператор позволяет изменить порядок выполнения операторов в зависимости от выполнения некоторого условия. Вот как он записывается:
if условие then действие else альтернатива ;
Слова if (если), then (тогда), do (действие) else (иначе) - зарезервированные. Действие и else альтернатива - это любые операторы Delphi, или несколько операторов, заключённых в логические скобки begin/end, или вызов подпрограммы. Если условие истинно, то выполняется действие, если ложно, то выполняется альтернатива.
Условие представляет собой логическое выражение. В нём сравниваются значения выражений (в том числе также и логических), вызов функций, возвращающих значения типа Boolean, и комбинирование этих значений с помощью логических операций:
Логические операции могут комбинироваться с помощью связок: Таблица 3.2
Связки логических операций
Логическая операция |
Расшифровка |
|
|
and |
логическое И |
or |
логическое ИЛИ |
xor |
исключающее ИЛИ |
= |
Равно |
<> |
Не равно |
> |
Больше |
< |
Меньше |
>= |
Больше или равно |
<= |
Меньше или равно |
not |
Логическое Не - отрицание |
Результат выполнения операции логического И равен true, если оба операнда равны true.
Результат выполнения операции логического ИЛИ равен true, если
17
хотя бы один из операндов равен true.
Результат выполнения операции исключающего ИЛИ равен true, если операнды не равны друг другу.
Пример решения квадратного уравнения в среде Delphi через дискриминант с использованием условного оператора
Квадратное уравнение – уравнение алгебраического типа вида
где – |
свободная переменная, |
– коэффициенты при неизвестном, |
причем |
. |
|
Общая формула вычисления корней
Подкоренное выражение называется дискриминантом D,
при |
корней два; |
при |
корень один (в некоторых контекстах говорят также о |
двух равных или совпадающих корнях); |
|
при |
корней на множестве действительных чисел нет. |
Решение.
Форма показана на рис. 3.1.
Рис. 3.1. Форма программы для решения квадратного уравнения
В разделе var объявляем необходимые переменные, а в обработчике события нажатия кнопки считываем исходные данные из компонентов Edit и реализуем алгоритм решения.
18
Рис. 3.2. Листинг программы для решения квадратного уравнения
Лабораторная работа № 2 Условный оператор в Delphi
Цель: Научиться использовать условный оператор при разработке приложений в среде Delphi.
Задание: вычислить в среде Delphi заданные выражения с использованием условного оператора.
19
Варианты индивидуальных заданий
Вариант |
Задание |
|
Вариант |
Задание |
|
|
|
|
|
1 |
2 |
|
3 |
4 |
|
|
|
|
|
1 |
|
|
9 |
|
|
|
|
|
|
2 |
|
|
10 |
|
|
|
|
|
|
3 |
|
|
11 |
|
|
|
|
|
|
4 |
|
|
12 |
|
|
|
|
|
|
5 |
|
|
13 |
|
|
|
|
|
|
6 |
|
|
14 |
|
|
|
|
|
|
7 |
|
|
15 |
|
|
|
|
|
|
8 |
|
|
16 |
|
|
|
|
|
|
|
|
Тема 4. Циклы |
|
|
Операторы цикла позволяют организовать многократное повторение одной и той же последовательности действий. В Delphi имеются три оператора, позволяющих это сделать:
1.простой оператор цикла;
2.условный оператор цикла;
3.условный оператор повторения.
Простой оператор цикла применяется, когда известно количество повторений цикла. Он записывается так:
20
