DiNGS – программирование игр в домашних условиях. Часть 16
АрхивПрограммазм (архив)Разбираемся с функциями в DiNGS.
Функции часто используются в программировании. Прежде чем начать писать функции самостоятельно, необходимо понять, что же это такое.
Представьте кухонный комбайн. Вы закладываете в него мясо, лук, соль и на выходе получаете фарш. Это краткое описание «функции». Как все происходит от нас скрыто (свойство сокрытия подробностей называется инкапсуляцией).
Функция получает определенные данные и возвращает результат после действий произведенных над ними. Пример, известная вам функция RND в качестве параметра получающая число и возвращающая случайное значение, не превышающее указанное функции. Этот результат мы может присвоить переменной:
А=RND(400)
Существуют функции, которые вообще не возвращают значений (или возвращают значение void – что значит «ничего»). На языке С это функции void, а на Pascale подобные функции называются процедурами. Все вместе - есть обычные подпрограммы, а остальное лишь терминология способная при незнании запутать. Функции позволяют упростить программирование. Один раз сокрыть (инкапсулировать) часть кода под осмысленным названием и в дальнейшем пользоваться этим псевдонимом.
Но прежде чем мы углубимся в создание первой функции необходимо объяснить, что есть локальные и глобальные переменные.
Локальные переменные действуют только внутри функции. Если есть локальная переменная «A» внутри функции и она равна 5, то это никак не повлияет на одноименную переменную находящуюся за пределами кода функции. Если есть необходимость, чтобы определенная переменная везде была одной и той же необходимо ее обозначить, как глобальную:
GLOBAL A
Локальные переменные обозначаются LOCAL A. Особенность состоит только в том, что если вы хотите использовать значение именно глобальной переменной, то стоит так и написать:
С=GLOBAL a +b
Приведем пример функции seredina получающей определенное значение и возвращающей это значение деленным на 2:
// Начало программы LOADSPRITE “bita.bmp”,0 SPRITE 0, seredina(640),seredina(480),0 SHOWSCREEN FUNCTION seredina: a //если значений больше, то писать через запятую a,b,c c=a/2 ENDFUNCTION c
Вышеприведенный пример демонстрирует использование функции. Функция начинается словом FUNCTION после которого следует название функции, двоеточие и входные переменные и завершается словом ENDFUNCTION с указанием названия возвращаемой переменной: ENDFUNCTION с.
Если функции не возвращает значения указывается: ENDFUNCTION void Функция середина получает значение, обозначенное переменной «а». Далее мы вводим переменную «с», которой присваиваем результат деления «а» на 2. И возвращаем из функции значение «с».
Часто функции используют для определения большего числа из 2.
FUNCTION max: a,b IF a>b THEN c=a IF b>a THEN c=b ENDFUNCTION c
Как вы будете использовать функции зависит только от вашей фантазии.
(Продолжение следует)