Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Пользовательские процедуры и функции

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

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

Объявление на языке Pascal процедур:

procedure <Имя функции> (передаваемые параметры);

begin

// тело процедуры

end;

 

Или с объявлением локальных переменных и констант

 

procedure <Имя функции> (передаваемые параметры);

const

// объявление локальных констант 

var

// объявление локальных переменных

begin

// тело процедуры

end;

 

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

Объявление функции:

 

function <Имя функции> (передаваемые параметры):<тип возвращаемых данных>;

begin

// тело функции

<имя функции>:= <что возвращать>;

end;

 

Или с объявлением локальных переменных и констант

 

function <Имя функции> (передаваемые параметры):<тип возвращаемых данных>;

const

// объявление локальных констант 

var

// объявление локальных переменных

begin

// тело функции

<имя функции>:= <что возвращать>;

end;

 

На языке С++ объявление функций:

 

<тип возвращаемых данных> <имя функции> (передаваемые параметры)

{

// тело функции

return <что возвращать>;

};

 

Если отсутствуют возвращаемые данные, то впереди имени функции следует поставить слово void. Аналогично, если передаваемые данные отсутствуют, то необходимо в скобках указать (void).

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

 

Пример:

Разработать функцию, которая бы делала арифметические действия над тремя числами, два из которых являются целыми, одно – десятичной дробью.

На языке Pascal:

 

function MyFun (A:integer; B:integer; C:real):real;

begin

MyFun:= (A+B)*C;

end;

 

Пример вызова функции из обработчика события OnClick:

 

procedure TForm1.Button1Click(Sender: TObject);

var

N1:Integer; // объявление локальной переменной

  N2:Integer; // объявление локальной переменной

N3:Real;  // объявление локальной переменной

begin

N1:=StrToInt(Edit1.Text); // определение значения N1

N2:=StrToInt(Edit2.Text); // определение значения N2

N3:=StrToFloat(Edit3.Text); // определение значения N3

// вызов функции MyFun и вывод результата в Edit3

Edit3.Text:= FloatToStr(MyFun(N1,N2,N3));

end;

 

На языке C++

 

float MyFun (int A, int B, float C)

{

return (A+B)*C;

};

 

Пример вызова:

 

void __fastcall TForm1::Button1Click(TObject *Sender)

{

int N1,N2; // объявление локальных переменных

float N3;

 

N1 = StrToInt (Edit1->Text); // определение значения N1

N2 = StrToInt (Edit2->Text); // определение значения N2

N3 = StrToFloat (Edit3->Text); // определение значения N3

// вызов функции MyFun и вывод результата в Edit3

Edit3->Text = FloatToStr(MyFun(N1,N2,N3));

}

 

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

1. Функция StrToInt преобразования строки (например, '220') в целое для переменных типа integer;

2. Функция StrToFloat преобразования строки (например, '3.14') в десятичную дробь для переменных типа real (float).

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

1. Функция IntToStr преобразования переменной типа integer в строку;

2. Функция FloatToStr преобразования переменной типа real (float) в строку.

Объекты программы

И Delphi, и C++ являются объектно-ориентированными языками. Это означает, что пользователь оперирует некими объектами, у которых есть индивидуальные свойства, методы и события.

Свойства (Properties) позволяют управлять текущим состоянием объекта. Практически все свойства доступны для считывания и записи. Для удобства все свойства объекта помещены в структуру с его именем. Например, в таблице 1.2 приведены некоторые свойства объекта Button (вкладка «Standard» палитры компонентов), который на форме программы выглядит как кнопка, нажимаемая мышью.

 

Таблица 1.2 – Некоторые свойства объекта Button

Свойство Назначение
Caption Текст, помещаемый на кнопке
Enabled Включение кнопки. Иначе она не нажимается
Height Высота кнопки в пикселях
Left Положение кнопки от левого края объекта, на котором находится кнопка, до левого края самой кнопки
Name Имя кнопки, используемое для идентификации в программе
Top Положение кнопки от верхнего края объекта, на котором находится кнопка, до верхнего края самой кнопки
Visible Включение видимости кнопки на форме
Width Ширина кнопки в пикселях

 

Некоторые свойства также организованы в структуры. Например, группа свойств Font, которая управляет шрифтом надписи на кнопке, имеет конкретные свойства, например, «Color» - цвет шрифта, «Name» - имя шрифта, «Size» - размер шрифта в пикселях.

Доступ к свойствам объекта осуществляется аналогично как в структуре, организованной пользователем. Например, на языке Pascal:

 

Form1.Button1.Left:= 30;    // Изменение положения кнопки Button1

                     // по горизонтали

Form1.Button1.Font.Size:= 10; // Изменение размера шрифта

 

Необходимо отметить, что название формы «Form1» писать не обязательно, если, например, подпрограмма описывает обработку конкретного события. В данном случае название формы уже имеется в заголовке подпрограммы:

 

// Процедура, вызываемая при нажатии кнопки Button1 на форме

procedure TForm1.Button1Click(Sender: TObject);

begin // начало процедуры

Button1.Font.Size:= 10;

...

end; // конец процедуры

 

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

 

with Form1 do // указывает где искать объекты и их свойства

begin // начало действия оператора with

Button1.Left:= 10;

end; // Конец действия оператора with

 

Доступ к свойствам объектов на языке C++ осуществляется через указатели. В остальном организация структур аналогично Delphi:

 

Form1->Button1->Left = 30; // Изменение положения кнопки Button1

                     // по горизонтали

Form1->Button1->Font->Size = 10; // Изменение размера шрифта

 

...

 

// Функция, вызываемая при нажатии кнопки Button1 на форме

void __fastcall TForm1::Button1Click(TObject *Sender)

{ // начало функции

Button1->Font->Size = 10;

...

}; // конец функции

 

Методы, которые можно применить по отношению к объекту, являются по сути процедурами, находящимися в «теле» объекта, и которые выполняют наперед заданные функции. Например, к таким методам можно отнести функции создания и разрушения объекта, виртуального нажатия на кнопку, и т.д.

При действии над объектами появляются те или иные события (Events), которые вызывают подпрограммы, написанные пользователем, если есть такая необходимость. В этом случае подпрограммы называют «обработчиком события».

Некоторые события, которые появляются при действии с объектом типа «TButton» приведены в таблице 1.3.

 

Таблица 1.3 – Некоторые события объекта «TButton»

Событие Когда происходит событие
OnClick При нажатии правой клавишей мыши на кнопке и последующем отпускании (Клик)
OnMouseDown В момент нажатия любой клавишей мыши на кнопке
OnMouseUp В момент отпускания любой клавиши мыши
OnMouseMove При перемещении курсора над поверхностью кнопки

 

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

          

а) Свойства                              б) События

Рисунок 1.1 – Список свойств и событий в инспекторе объекта типа «TButton»



<== предыдущая лекция | следующая лекция ==>
Локальные и глобальные переменные | Последовательность разработки программы
Поделиться с друзьями:


Дата добавления: 2018-10-15; Мы поможем в написании ваших работ!; просмотров: 529 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Либо вы управляете вашим днем, либо день управляет вами. © Джим Рон
==> читать все изречения...

3209 - | 2911 -


© 2015-2026 lektsii.org - Контакты - Последнее добавление

Ген: 0.014 с.