Смекни!
smekni.com

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

Выбор: = MessageDlg( Сообщение, Тип, Кнопки, КонтекстСправки)

где:

· Сообщение — текст сообщения;

· Тип — тип сообщения. Сообщение может быть информационным, предупреждающим или сообщением о критической ошибке. Каждому типу сообщения соответствует определенный значок. Тип сообщения задается именованной константой (табл. 8);

Кнопки — список кнопок, отображаемых в окне сообщения. Список может состоять из нескольких разделенных запятыми именованных констант (табл.9). Весь список заключается в квадратные скобки.

Таблица 8. Константы функции MessageDlg

Константа Тип сообщения
mtWarning Внимание
mtError Ошибка
mtInformation Информация
mtConfirmation Подтверждение
mtCustom Обычное

Таблица 9. Константы функции MessageDlg

Константа Кнопка Константа Кнопка
mbYes Yes mb Abort Abort
mbNo No mbRetry Retry
mbOK OK mblgnore Ignore
mbCancel Cancel mbAll All
mbHelp Help

Например, для того чтобы в окне сообщения появились кнопки ОК и Cancel, список Кнопки должен быть таким:

[mbOK,mbCancel]

Кроме приведенных констант можно использовать константы: mbokcancel, mbYesNoCancel и mbAbortRetryIgnore. Эти константы определяют наиболее часто используемые в диалоговых окнах комбинации командных кнопок.

Контекст справки — параметр, определяющий раздел справочной системы, который появится на экране, если пользователь нажмет клавишу <F1>. Если вывод справки не предусмотрен, то значение параметра КонтекстСправки должно быть равно нулю.

Значение, возвращаемое функцией MessageDig (табл. 10), позволяет определить, какая из командных кнопок была нажата пользователем.

Таблица 10. Значения функции MessageDlg

Значение функции MessageDig Диалог завершен нажатием кнопки
mrAbort Abort
mrYes Yes
mrOk Ok
mrRetry Retry
mrNo No
mrCancel Cancel
mrIgnore Ignore
mrAll All

Вывод в поле диалогового окна

Часть диалогового окна, предназначенная для вывода информации, называется полем вывода, или полем метки. Поле вывода — это компонент Label.

Содержимое поля вывода определяется значением свойства Caption. Изменить значение свойства Caption, как и большинства свойств других компонентов, можно как во время разработки формы приложения, так и во время работы программы.

Для того чтобы во время работы программы изменить содержимое поля вывода, например, вывести в поле результат работы программы, нужно присвоить свойству новое значение.

Свойство Caption символьного типа. Поэтому для того, чтобы во время работы программы вывести в поле метки числовое значение, нужно преобразовать число в строку, например, при помощи функции FloatToStr или IntToStr.

Процедуры и функции

При программировании в Delphi работа программиста заключается в основном в разработке процедур (подпрограмм) обработки событий.

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

В языке Object Pascal основной программной единицей является подпрограмма. Различают два вида подпрограмм: процедуры и функции. Как процедура, так и функция, представляют собой последовательность инструкций, предназначенных для выполнения некоторой работы. Чтобы выполнить инструкции подпрограммы, надо вызвать эту подпрограмму. Отличие функции от процедуры заключается в том, что с именем функции связано значение, поэтому имя функции можно использовать в выражениях.

Структура процедуры

Процедура начинается с заголовка, за которым следуют: П раздел объявления констант;

· раздел объявления типов;

· раздел объявления переменных;

· раздел инструкций.

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

procedure Имя (СписокПараметров);

const

// здесь объявления констант

type

// здесь объявления типов var

// здесь объявления переменных

begin

// здесь инструкции программы

end;

Заголовок процедуры состоит из слова procedure, за которым следует имя процедуры, которое используется для вызова процедуры, активизации ее выполнения. Если у процедуры есть параметры, то они указываются после имени процедуры, в скобках. Завершается заголовок процедуры символом "точка с запятой".

Если в процедуре используются именованные константы, то они объявляются в разделе объявления констант, который начинается словом const.

За разделом констант следует раздел объявления типов, начинающийся словом type.

После раздела объявления типов идет раздел объявления переменных, в котором объявляются (перечисляются) все переменные, используемые в программе. Раздел объявления переменных начинается словом var.

За разделом объявления переменных расположен раздел инструкций. Раздел инструкций начинается словом begin и заканчивается словом end, за которым следует символ "точка с запятой". В разделе инструкций находятся исполняемые инструкции процедуры.

Ниже в качестве примера приведен фрагмент программы вычисления стоимости покупки — процедура Summa.

procedure Summa;

var

cena: real; // цена

kol: integer; // количество

s: real; // сумма

mes: string[255]; // сообщение

begin

cena := StrToFloat(Form1.Edit1.Text);

kol := StrToInt(Form1.Edit2.Text);

s := cena * kol; if s > 500 then

begin

s := s * 0.9;

mes := 'Предоставляется скидка 10%'

+ #13; end; mes := mes+ 'Стоимость покупки: '

+ FloatToStrF(s,ffFixed,4,2) +' руб.';

Forml.Label3.Caption := mes; end;

Структура функции

Функция начинается с заголовка, за которым следуют разделы объявления констант, типов и переменных, а также раздел инструкций.

Объявление функции в общем виде выглядит следующим образом:

function Имя (Список Параметров) : Тип;

const // начало раздела объявления констант

type // начало раздела объявления типов

var // начало раздела объявления переменных

begin // начало раздела инструкций

result := Значение; // связать с именем функции значение

end;

Заголовок функции начинается словом function, за которым следует имя функции. После имени функции в скобках приводится список параметров, за которым через двоеточие указывается тип значения, возвращаемого функцией (тип функции). Завершается заголовок функции символом "точка с запятой".

За заголовком функции следуют разделы объявления констант, типов и переменных.

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

Ниже в качестве примера приведена функция FuntToKg, которая пересчитывает вес из фунтов в килограммы:

// Пересчет веса из фунтов в килограммы

function FuntToKg(f:real):real;

const

// в России 1 фунт равен 409,5 гр.

К=0.4095; // коэф. Пересчета

begin

result:=f*K;

end;

Запись инструкций программы

Одну инструкцию от другой отделяют точкой с запятой или, другими словами, в конце каждой инструкции ставят точку с запятой.

Хотя в одной строке программы можно записать несколько инструкций, как правило, каждую инструкцию программы записывают в отдельной строке.

Некоторые инструкции (if, case, repeat, while и др.) принято записывать в несколько строк, используя для выделения структуры инструкции отступы. Ниже приведен пример инструкции, которая записана в несколько строк и с использованием отступов:

if d >= 0 then begin

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

x2:=(-b-Sqrt(d))/(2*a);

ShowMessage('x1='+FloatToStr(xl) +

'x2='+FloatToStr(x2)) ;

end

else

ShowMessage('Уравнение не имеет корней.');

Следует обратить внимание на то, что слова then и else записаны одно под другим (с одинаковым отступом) и с отступом относительно слова if. Слово end располагается под словом begin, а инструкции между begin и end размещаются одна под другой, но с отступом относительно begin.

Приведенную выше инструкцию можно записать и так:

if d >= 0 then begin

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

x2:=(-b-Sqrt(d))/(2*a);

ShowMessage('x1='+FloatToStr(x1)+'x2='+FloatToStr(x2));

end

else ShowMessage('Уравнение не имеет корней.');

Однако первый вариант лучше, т. к. он отражает структуру алгоритма, реализуемого инструкцией. С первого взгляда видна группа инструкций, которая будет выполнена, если условие d >= о выполняется (в этом случае будут вычислены значения переменных xl и х2), и инструкция, которая будет выполнена, если условие d >=o не выполняется.

Длинные выражения тоже могут быть записаны в несколько строк. Разорвать выражение и перенести оставшуюся часть на следующую строку можно практически в любом месте. Нельзя разрывать имена переменных, числовые и строковые константы, а также составные операторы, например, оператор присваивания.

Ниже приведен пример записи выражения в несколько строк:

st:= 'Корни уравнения'+ #13

+'x1=' + FloatToStr(x1)+ #13 +'х2=' + FloatToStr(x2);

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

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

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

программирование программа алгоритм

Очевидно, что второй вариант воспринимается лучше.

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