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

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

Содержание



Понятие процедуры, функции и метода класса

Подпрограммы в Pascal делят на процедуры и функции. Процедуры — это такие подпрограммы, которые выполняют предназначенное действие и возвращают выполнение в точку вызова. Функции в целом аналогичны процедурам, за тем исключением, что они еще и возвращают результат своего выполнения.

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

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

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

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

Передача параметров

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

Передача параметров по значению

Этот режим передачи параметров применяется по умолчанию. Если параметр передается по значению, создается локальная копия данной переменной, которая и предоставляется для обработки в процедуру или функцию. Посмотрите на следующий пример:

При вызове указанной процедуры будет создана копия передаваемой ей в качестве параметра строки s, с которой и будет работать процедура Test. При этом все внесенные в строку изменения никак не отразятся на исходной переменной s.

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

В случае если в процедуру передается переменная объекта, то в данном случае произойдет передача по ссылке (даже если это не указано явно).

Передача параметров по ссылке

Pascal позволяет также передавать параметры в функции или процедуры по ссылке — такие параметры называются параметрами-переменными. Передача параметра по ссылке означает, что функция или процедура сможет изменить полученные значения параметров. Для передачи параметров по ссылке используется ключевое слово var, помещаемое в список параметров вызываемой процедуры или функции.

Вместо создания копии переменной x, ключевое слово var требует передачи адреса самой переменной x, что позволяет процедуре непосредственно изменять ее значение.

Передача параметров констант

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

Пример использования процедуры для построения звездного неба

Процедура Star объявлена внутри класса TForm1 и по сути является методом этого класса, позволяющим рисовать звезды на форме. При создании процедуры удобно использовать горячие клавиши (Ctrl+Shift+C), которые автоматически создадут тело процедуры внутри блока implementation. Для этого необходимо прописать заголовок процедуры в разделе public или private и нажать горячие клавиши Ctrl+Shift+C.

В процедуру передаются параметры x, y — координаты расположения звезды, Size — размер и Color — цвет отрисовки. Используя цикл задается 100 звезд разного цвета и размера.

Построение звездного неба


Оставить комментарий