Где описывать процедуры(функции) — КиберПедия 

Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ - конструкции, предназначен­ные для поддерживания проводов на необходимой высоте над землей, водой...

Эмиссия газов от очистных сооружений канализации: В последние годы внимание мирового сообщества сосредоточено на экологических проблемах...

Где описывать процедуры(функции)

2017-11-28 288
Где описывать процедуры(функции) 0.00 из 5.00 0 оценок
Заказать работу

 

Процедура(функция) описывается внутри модуля. Если требуется, чтобы процеду­ра(функция) была доступна для других модулей, в части Interface необходимо описать ее заголовок, а в части Implementation описать ее реализацию, например:

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs;

type

TForm1 = class(TForm)

private

{ Private declarations }

public

{ Public declarations }

end;

{описание заголовка функции, которая будет доступна для других модулей}

function min(a,b:real):real;

var

Form1: TForm1;

 

implementation

{$R *.dfm}

{ описание функции }

function min(a,b:real):real;

begin

if a>b then

min:=a

else min:=b;

end;

end.

 

Если процедура(функция) будет использоваться только в данном модуле, не требуется описание ее заголовка в секции Interface.

 

Передача параметров по ссылке и по значению

 

Любой из формальных параметров подпрограммы может быть либо:

1) параметром-значением (передача по значению)

2) параметром переменной (передача по ссылке)

3) параметром-константой (передача по ссылке)

Например, в следующем описании процедуры:

procedure MyProc(var a:real; b:integer; const c:string);

задан список формальных параметров где

a - передается по ссылке, для этого используется ключевое слова var;

b - передается по значению;

c - передается по ссылке, для этого используется ключевое слова const.

 

При передаче по значению параметр вычисляется, копируется во временную па­мять и передается подпрограмме, т.е. передается копия параметра, поэтому на выходе из подпрограммы значение параметра не меняется. Например:

procedure A(c:real);

begin

....

c:=c+10;

...

end;

 

Использование процедуры:

c:=5;

A(c);

 

При выходе из процедуры А переменная c - будет равна 5.

 

При использовании параметра-переменной передается адрес переменной. Поэтому на вы­ходе из подпрограммы ее значение может быть изменено. Например:

procedure Double(var c:real);

begin

c:=c*2;

end;

 

Использование процедуры:

a:=10;

Double(a);

После выхода из процедуры значение переменной A изменится и будет равно 20.

 

Параметр-константа будет использоваться в подпрограмме только для считывания данных, любые изменения параметра-константы запрещены. Параметр-константа пере­да­ет­ся по адресу. Использование такого параметра позволяет организовать эффективную обработку соответствующего параметра, не беспокоясь о возможных изменениях его значения. Например:

Procedure Sum(const A: integer);

Процедуре Sum передается параметр A, который нельзя менять в теле процедуры.

 

Контрольные вопросы

 

  1. Что такое процедура? Как и где описывается процедура? Как вызвать процедуру?
  2. Что такое функция? Как и где описывается функция? Как вызвать функцию?
  3. Чем функция отличается от процедуры?
  4. Какие преимущества дает использование процедур и функций?
  5. Какие параметры называются фактическими?
  6. Какие параметры называются формальными?
  7. Механизмы передачи параметров в процедуру и функцию: по значению, по ссылке. Поясните в чем разница.

 

Задание для самостоятельной работы

 

1. Написать функцию Procent, которая возвращает процент от полученного в качестве аргумента числа.

2. Написать функцию Doxod, которая вычисляет доход по вкладу. Исход­ными данными для функции являются: величина вклада, процентная став­ка (годовых) и срок вклада(количество дней). Формула вычисления вклада может быть такой:

Доход=вклад*(проц_ставка/360*срок

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

4. Написать программный код для игры «Летающие тарелки», который определяет, было ли столкновение снаряда с летающей тарелкой, и если было, убирает тарелку с экрана и увеличивает счет игры. Оформить этот программный код в виде процедуры или функции.

 

Занятие12. Еще про компоненты

 

Еще раз про списки

 

Как было уже рассмотрено в занятии 4, Delphi предлагает два вида списков:

· Прокручиваемый список – ListBox;

· Выпадающий список – ComboBox.

Оба вида списков располагаются на вкладке Standart. Списки имеют много общих свойств и методов, но отличаются внешним видом, кроме того, список ComboBox является полем редактирования со списком, т.е. он объединяет возможности редак­тирования и выбора из списка.

Свойство Items у обоих видов списков является объектом типа TString со своими свойствами и методами. Иными словами, Items это символьный массив с набором методов, позволяющим работать со строками списка, т.е. добавлять, удалять, вставлять строки и т.д. Набор основных методов класса TString приведен в таблице:

 

Метод Описание
Add(const S: string): Integer Добавить строку, передаваемую в качестве входного параметра, в конец списка
Insert(Index: Integer; const S: string); Вставить строку S в позицию, задаваемую параметром Index. Нумерация строк начинается с нуля.
Delete(Index: Integer) Удалить строку, позиция которой указана в параметре Index
Exchange(Index1, Index2: Integer) Поменять местами два элемента списка, позиции которых указаны параметрами Index1 и Index2
Clear Очистить список

 

Заполнение списков данными часто удобно производить на этапе выполнения программы программным путем.

Для демонстрации этого рассмотрим несложное приложение, назовем его «Работа со списками». Это приложение позволит программным путем изменять список ListBox. Внешний вид приложения может быть, например, таким:

 

ListBox1

 

В поле Edit1:TEdit будет вводиться значение нового элемента списка. По кнопке «Добавить» - введенный эле­мент добавляется в конец списка. По кнопке «Вставить» - элемент вставляется перед текущей позицией курсора. По кнопке «Удалить» - удаляется элемент, на котором установлен курсор. По кнопке «Очистить» - все элементы списка удаляются.

Используя методы объекта Items списка, напишем программный код на события OnClick кнопок.

Для кнопки «Добавить» программный код будет иметь вид:

ListBox1.Items.Add(Edit1.Text);

 

Для кнопки «Вставить» программный код будет иметь вид:

ListBox1.Items.Insert(ListBox1.ItemIndex, Edit1.Text);

Здесь первый параметр задает порядковый номер элемента, перед которым вставляется элемент, второй параметр – задает этот элемент.

 

Для кнопки «Удалить» программный код будет иметь вид:

ListBox1.Items.Delete(ListBox1.ItemIndex);

 

Для кнопки «Очистить» программный код будет иметь вид:

ListBox1.Items.Clear;

 

Функция MessageDlg

 

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

 

 

Заголовок функции имеет следующий вид:

function MessageDlg(const Msg: string; DlgType: TMsgDlgType; Buttons: TMsgDlgButtons;

HelpCtx: Longint): Word;

 

Как видно из заголовка функция имеет четыре входных параметра:

Msg – задает текст сообщения;

DlgType – задает тип сообщения, фактически задает пиктограмму (картинку) в окне;

Buttons – задает набор кнопок в окне;

HelpCtx – используется для задания файла помощи.

 

Для параметра DlgType возможны следующие варианты:

 

Значение Описание
mtWarning Задает пиктограмму с изображением желтого восклица­тельного знака
MtError Задает пиктограмму с изображением красного стоп-сигнала
mtInformation Задает пиктограмму с изображением голубой буквы i с точкой
mtConfirmation Задает пиктограмму с изображением зеленого знака вопроса
MtCustom Не содержит пиктограммы

 

Для задания кнопок, как правило, используются следующие константы:

 

Значение Описание
mbYesNoCancel Три кнопки “Yes”, “No”, “Cancel”
mbOKCancel Две кнопки “Ok” и “Cancel”
mbAbortRetryIgnore Три кнопки “Abort”, “Retry”, “Ignore”

 

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

 

Выбранная кнопка Возвращаемое значение
mbOK mrOk
mbYes mrYes
mbNo mrNo
mbCancel mrCancel
mbAbort mrAbort
mbRetry mrRetry
mbIgnore mrIgnore

 

Давайте изменим программный код на событие кнопки «Удалить» примера предыдущего пункта, добавив использование функции MessgaeDlg. Программный код будет иметь такой вид:

if MessageDlg('Вы уверены?', mtConfirmation, mbOkCancel, 0) = mrOk then

ListBox1.Items.Delete(ListBox1.ItemIndex);

Теперь, в случае если пользователь ошибочно нажмет на кнопку «Удалить», удаление будет произведено, если только пользователь его подтвердит.

 

Задание для самостоятельной работы

 

1. Создать прокручиваемый список с возможностью множественного выделения элементов. Отобразить выбор пользователя с помощью функции ShowMessage.

2. Даны два прокручиваемых списка. По кнопкам организовать перемещение элементов из одного списка в другой. По кнопке «>» выделенный элемент левого списка переносится в конец правого списка. По кнопке «<», наоборот, выделенный элемент правого списка переносится в конец левого списка. По кнопке «>>» все элементы левого списка переносятся в конец правого списка, соответственно по кнопке «<<» - все элементы правого списка переносятся в конец левого списка, как показано на рисунке:

 

 

.


Поделиться с друзьями:

Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ - конструкции, предназначен­ные для поддерживания проводов на необходимой высоте над землей, водой...

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

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

Особенности сооружения опор в сложных условиях: Сооружение ВЛ в районах с суровыми климатическими и тяжелыми геологическими условиями...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.035 с.