Технология программирования

advertisement
Cтр. 1 из 3
446966288 1/16/2016 V- 1
Технология программирования
1. Отличия синтаксиса функций и процедур в OP
Использование предопределенной переменной Result в теле функции
Возвращаемое значение в теле функции может присваиваться или имени функции (как в
TP) или специальной переменной Result (объявлять которую не надо!).
Разница: имя функции – это не переменная. Оно может фигурировать только в левой
части оператора присваивания, и не может входить ни в какие выражения. А Result – это
обычная переменная.
Пример - старый стиль (можно использовать):
Function FSum(a, b, c: real): real;
Begin
FSum := a*(b + c);
End;
Пример - с использованием Result:
Function FSum(a, b, c: real): real;
Begin
Result := b + c;
If a = 1 then Exit; // Обратить внимание на предопределенную проц. выхода exit
result := a*result;
End;
Перегрузка процедур и функций
Можно определить в одной и той же области видимости несколько процедур или
функций с одинаковыми именами, но различающиеся по числу и типу параметров. При этом
необходимо указывать ключевое слова overload. Например:
function Min(a, b: integer): integer; overload;
begin
if a < b then result := a
else result := b;
end;
function Min(a, b: double): double; overload;
begin
if a < b then result := a
else result := b;
end;
Если записать min(5, 3) , будет вызываться первая функция, а при вызове min(5.0, 3.0) – вторая.
Параметры функций и процедур со значением по умолчанию
Значение по умолчанию – это значение параметра в случае, если он не передан в вызове
функции или процедуры. Пример:
Function Circle(radius : real = 1;
Begin
Result := 2*pi*radius;
End
1/16/2016 2:47:00 PM
pi:real = 3.14): real;
"КИТ" – В.М.  7-177- 424, 009
Cтр. 2 из 3
446966288 1/16/2016 V- 1
Вызовы такой функции могут быть такие:
Circle или Circle( 10.5) или Circle(2, 3.14567 );
Передача параметра как Константы
При попытке в теле процедуры или функции изменить значение такого параметра
компилятор выдаст сообщение об ошибке. Это позволяет сделать код более эффективным и
надежным. Пример:
function foo(const x: real; a: integer) real;
Begin
// x := 2*x ; // ошибка
// result := x * a;
Result := 2 * x * a; // это сработает
End;
2. Тип данных - множество
– это группа элементов какого то типа, причем один и тот же элемент не может входить
в множество более одного раза. Множество может быть и пустым.
Множество определяется перечислением его элементов, заключенных в прямоугольные
скобки. Например: [‘Y’, ‘y’, ‘N’, ‘n’]. Для определение, принадлежит ли переменная
множеству, служит оператор in.
Пример: дал ли пользователь допустимый ответ
If (key in [‘Y’, ‘y’, ‘N’, ‘n’]) then …
Объявление типа множества:
Set of <базовый тип>.
Объявление глобальной переменной:
Var K: set of char = [‘0’..’9’, ‘+’, ‘-’]
…
If key in K then …
Объявление типизированной константы:
Const K: set of char = [‘0’..’9’, ‘+’, ‘-’]
Объявление типа множества и переменных этого типа:
Type TDigit = set of ‘0’..’9’;
Var d1, d2 : TDigit;
...
D1 := [‘0’, ‘1’];
D2 := [‘2’..’9’];
3. Обзор невизуальных компонентов
Невизуальные компоненты не присутствуют на форме во время выполнения, а
вызываются по запросу (меню, диалоги) или используются без визуализации.
Основные невизуальные компоненты:- Меню – компоненты MainMenu, PopUpMenu
(всплывающее меню) Стандартные диалоги, расположенные на вкладке палитры компонентов
Dialogs: OpenDialog, SaveDialog, FontDialog, ColorDialog и др. Диспетчеры действий: ActionList,
ActionManager - позволяют упорядочить разработку обработчиков событий. Таймер: Timer –
позволяет задавать в приложении интервалы времени.
1/16/2016 2:47:00 PM
"КИТ" – В.М.  7-177- 424, 009
446966288 1/16/2016 V- 1
Cтр. 3 из 3
4. Подпрограмы и методы для работы с диалоговыми окнами
Основные подпрограмы реализующие типовые диалоговые окна, не входящие в палитру
компонентов:
Процедуры, просто показывающие сообщение на экране:
Procedure ShowMessage(const message: string);
Procedure ShowMessageDlg(const message: string; x, y: integer);
Для получения ответа от пользователя можно использовать следующие функции:
function MessageDlg(const Msg: string; DlgType: TMsgDlgType;
Buttons:TMsgDlgButtons; HelpCtx: Longint): Word;
В этой функции используются следующие типы данных
TMsgDlgType = (mtWarning, mtError, mtInformation, mtConfirmation, mtCustom);
TMsgDlgBtn = (mbYes, mbNo, mbOK, mbCancel, mbAbort, mbRetry, mbIgnore, mbAll,
mbNoToAll, mbYesToAll, mbHelp);
TMsgDlgButtons = set of TMsgDlgBtn;
В зависимости от значения DlgType в окне появяться те или иные значки.
В зависимости от значения параметра Buttons в окне появяться те или иные кнопки
или их сочетания. функция может возвращать следующие значения:
mrOk, mrOk, mrCancel, mrYes, mrNo, mrAbort, mrRetry, mrIgnore, mrAll, mrNoToAll,
mrYesToAll.
Параметр HelpCtx – обычно равен 0, иначе это номер (индекс) справочной информации
function InputBox(const ACaption, APrompt, ADefault: string): string; - возвращает
строку, введенную пользователем
function InputQuery(const ACaption, APrompt: string; var ADefault: string):
boolean; - если пользователь нажал кнопку “Отмена” – возвращается False, иначе –
True и в переменной ADefault - строка введенная пользователем.
Наиболее “богатые” возможности предоставляет метод MessageBox объекта Application:
function MessageBox(const Text, Caption: PChar; Flags: Longint = MB_OK): Integer;
Параметр Flag в этой функции может принимать много различных значений (см. справку
в Delphi), что позволяет показывать в окне различные значки и кнопки.
Пример:
if Application.MessageBox(‘Мой текст’, ‘Мой заголовок’, MB_YESNO) = IDYES then...
Работа с невизуальными компонентами диалоговых окон, такими как OpenDialog,
FileDialog, ColorDialog и др, расположенными на закладке Dialogs:
Для вывода этих окон на экран во время работы приложения используется метод Execute
этих компонентов. Метод Execute возвращает значение false в случае, если пользователь
отказался выполнять действие (нажал кнопку Отмена). В противном случае метод возвращает
True, и можно выбрать то или иное свойство компонента для получения более подробной
информации о выборе пользователя. Например, в следующем примере свойство : FileName
диалога OpenDialog1 используется для загрузки всех строк файла в компонент Memo1
(многострочный редактор):
if OpenDialog1.Execute then
Memo1.Lines.LoadFromFile(OpenDialog1.FileName);
Наиболее часто используемые свойства компонентов диалоговых окон:
Для OpenDialog, SaveDialog: FileName – полное имя файла, InitialDir - начальная
папка, Title – Заголовок окна, Options – настройки диалогово окна.
Для ColorDialog: Color – Выбранный цвет.
Для FontDialog: - Font – Выбранный фонт (шрифт).
1/16/2016 2:47:00 PM
"КИТ" – В.М.  7-177- 424, 009
Download