Смекни!
smekni.com

Основы программирования (стр. 3 из 5)

Тип выражения

Тип выражения определяется типом операндов, входящих в выражение, и зависит от операций, выполняемых над ними. Например, если оба операнда, над которыми выполняется операция сложения, целые, то очевидно, что результат тоже является целым. А если хотя бы один из операндов дробный, то тип результата дробный, даже в том случае, если дробная часть значения выражения равна нулю.

Важно уметь определять тип выражения. При определении типа выражения следует иметь в виду, что тип константы определяется ее видом, а тип переменной задается в инструкции объявления. Например, константы о, 1 и -512 — целого типа (integer), а константы 1.0, 0.0 и 3.2Е-05 — вещественного типа (real).

В табл. 5 приведены правила определения типа выражения в зависимости от типа операндов и вида оператора.

Таблица 5. Правила определения типа выражения

Оператор Тип операндов Тип выражения
*, +, - Хотя бы один из операндов real real
*, +, - Оба операнда integer integer
/ real или integer Всегда real
DIV, MOD Всегда integer Всегда integer

Выполнение инструкции присваивания

Инструкция присваивания выполняется следующим образом:

1. Сначала вычисляется значение выражения, которое находится справа от символа инструкции присваивания.

2. Затем вычисленное значение записывается в переменную, имя которой стоит слева от символа инструкции присваивания.

Например, в результате выполнения инструкций:

· i:=0; — значение переменной i становится равным нулю;

· а:=b+с; — значением переменной а будет число, равное сумме значений переменных ь и с;

· j :=j+1; — значение переменной j увеличивается на единицу.

Инструкция присваивания считается верной, если тип выражения соответствует или может быть приведен к типу переменной, получающей значение. Например, переменной типа real можно присвоить значение выражения, тип которого real или integer, а переменной типа integer можно присвоить значение выражения только типа integer.

Так, например, если переменные i и nимеют тип integer, а переменная d — тип real, то инструкции

i:=n/10; i:=1.0;

неправильные, а инструкция

d:=i+1; правильная.

Во время компиляции выполняется проверка соответствия типа выражения типу переменной. Если тип выражения не соответствует типу переменной, то компилятор выводит сообщение об ошибке:

Incompatible types ... and ...

где вместо многоточий указывается тип выражения и переменной. Например, если переменная п целого типа, то инструкция n: = m/2 неверная, поэтому во время компиляции будет выведено сообщение :

Incompatible types 'Integer' and.'Extended'.

Стандартные функции

Для выполнения часто встречающихся вычислений и преобразований язык Delphi предоставляет программисту ряд стандартных функций.

Значение функции связано с ее именем. Поэтому функцию можно использовать в качестве операнда выражения, например в инструкции присваивания. Так, чтобы вычислить квадратный корень, достаточно записать k:=Sqrt(n), где Sqrt — функция вычисления квадратного корня, п — переменная, которая содержит число, квадратный корень которого надо вычислить.

Функция характеризуется типом значения и типом параметров. Тип переменной, которой присваивается значение функции, должен соответствовать типу функции. Точно так же тип фактического параметра функции, т. е. параметра, который указывается при обращении к функции, должен соответствовать типу формального параметра. Если это не так, компилятор выводит сообщение об ошибке.

Математические функции

Математические функции (табл. 6) позволяют выполнять различные вычисления.

Таблица 6. Математические функции

Функция Значение
Аbs (n) Абсолютное значение n
Sqrt (n) Квадратный корень из n
Sqr (n) Квадрат n
Sin (n) Синус n
Cos (n) Косинус n
Arctan (n) Арктангенс n
Ехр(n) Экспонента n
Ln(n) Натуральный логарифм n
Rardom(n) Случайное целое число в диапазоне от 0 до n- 1

Величина угла тригонометрических функций должна быть выражена в радианах. Для преобразования величины угла из градусов в радианы используется формула (а*з.141525б)/180, где: а— величина угла в градусах; 3.1415926 — число л. Вместо дробной константы 3.1415926 можно использовать стандартную именованную константу PI. В этом случае выражение пересчета угла из градусов в радианы будет выглядеть так: a*Pi/180.

Функции преобразования

Функции преобразования (табл. 7) наиболее часто используются в инструкциях, обеспечивающих ввод и вывод информации. Например, для того чтобы вывести в поле вывода (компонент Label) диалогового окна значение переменной типа real, необходимо преобразовать число в строку символов, изображающую данное число. Это можно сделать при помощи функции FloatToStr, которая возвращает строковое представление значения выражения, указанного в качестве параметра функции.

Например, инструкция Label1.caption := FioatTostr(x) выводит значение переменной х в поле Label1.

Использование функций

Обычно функции используют в качестве операндов выражений. Параметром функции может быть константа, переменная или выражение соответствующего типа. Ниже приведены примеры использования стандартных функций и функций преобразования.

n := Round((x2-x1)/dx);

x1:= (-b + Sqrt(d)) / (2*а);

m := Random(10);

cena := StrToInt(Edit1.Text);

Edit2.Text := IntToStr(100);

mes := 'x1=' + FloatToStr(xl);

Ввод данных

Наиболее просто программа может получить исходные данные из окна ввода или из поля редактирования (компонент Edit).

Ввод из окна ввода

Окно ввода — это стандартное диалоговое окно, которое появляется на экране в результате вызова функции inputBox. Значение функции inputBox — строка, которую ввел пользователь.

В общем виде инструкция ввода данных с использованием функции inputBox выглядит так:

Переменная := InputBox(Заголовок, Подсказка, Значение);

где:

· Переменная — переменная строкового типа, значение которой должно быть получено от пользователя;

· Заголовок — текст заголовка окна ввода; Подсказка — текст поясняющего сообщения;

· Значение — текст, который будет находиться в поле ввода, когда окно ввода появится на экране.

Ниже в качестве примера приведена инструкция, используя которую можно получить исходные данные для программы пересчета веса из фунтов в килограммы. Окно ввода, соответствующее этой инструкции, приведено на рис. 3.

s:=InputBox('Пример', 'Введите что-нибудь', 'Привет');

Рис.3. Пример окна ввода

Если во время работы программы пользователь введет строку и щелкнет на кнопке ОК, то значением функции inputBox будет введенная строка. Если будет сделан щелчок на кнопке Cancel, то значением функции будет строка, переданная функции в качестве параметра значение.

Следует еще раз обратить внимание на то, что значение функции inputBox строкового (string) типа. Поэтому если программе надо получить число, то введенная строка должна быть преобразована в число при помощи соответствующей функции преобразования. Например, фрагмент программы пересчета веса из фунтов в килограммы, обеспечивающий ввод исходных данных из окна ввода, может выглядеть так:

s:=StrToInt(InputBox('Пример', 'Введите что-нибудь','10'));

Ввод из поля редактирования

Поле редактирования — это компонент Edit. Ввод данных из поля редактирования осуществляется обращением к свойству Text.

Рис. 4. Компонент Edit1 используется для ввода данных

На рис. 4 приведен вид диалогового окна программы в которой осуществляем ввод данных с помощью компонента Editl. Компонент Editl используется для ввода исходных данных. Инструкция ввода данных в этом случае будет иметь вид:

s:= Edit1.Text;

Вывод результатов

Наиболее просто программа может вывести результат своей работы в окно сообщения или в поле вывода (компонент Label) диалогового окна.

Вывод в окно сообщения

Окна сообщений используются для привлечения внимания пользователя. При помощи окна сообщения программа может, к примеру, проинформировать об ошибке в исходных данных или запросить подтверждение выполнения необратимой операции, например, удаления файла.

Вывести на экран окно с сообщением можно при помощи процедуры ShowMessage или функции MessageDlg.

Процедура ShowMessage выводит на экран окно с текстом и командной кнопкой ОК.

В общем виде инструкция вызова процедуры ShowMessage выглядит так:

ShowMessage(Сообщение);

где сообщение — текст, который будет выведен в окне.

На рис. 5 приведен вид окна сообщения, полученного в результате выполнения инструкции:

ShowMessage('Пример процедуры.');

Рис. 5. Пример окна сообщения

Следует обратить внимание на то, что в заголовке окна сообщения, выводимого процедурой ShowMessage, указано название приложения, которое задается на вкладке Application окна Project Options. Если название приложения не задано, то в заголовке будет имя исполняемого файла.

Функция MessageDig более универсальная. Она позволяет поместить в окно с сообщением один из стандартных значков, например "Внимание", задать количество и тип командных кнопок и определить, какую из кнопок нажал пользователь. На рис. 6 приведено окно, выведенное в результате выполнения инструкции

r:=MessageDlg('Файл будет удален.', mtWarning, [mbOk,mbCancel] , 0) ;

Рис. 6. Пример окна сообщения

Значение функции MessageDlg — число, проверив значение которого, можно определить, выбором какой командной кнопки был завершен диалог.

В общем виде обращение к функции MessageDig выглядит так: