Когда вы думаете о коде как о наборе инструкций, полезно присвоить имя этим блокам инструкций. Две основные из них (в программировании) называются процедурами и функциями.

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

Функции - это автономные модули кода, которые выполняют конкретную задачу .² Цель функции - «получить» данные, обработать их и «вернуть» результат (или значение). Чтобы оптимизировать и поддерживать современный код, функции теперь обычно ограничиваются выполнением одной задачи и сохраняются как можно короче. [Для некоторых программистов] идея о том, что функции должны быть небольшими, почти считается слишком неприкосновенной, чтобы ее ставить под сомнение3.

Сила функций заключается в их практически бесконечной модульности. Они позволяют программистам сокращать код, повторно использовать его вместо того, чтобы переписывать его .² Функцию можно написать один раз и использовать снова и снова в разных точках программы. Также возможно вызывать функции изнутри других функций. Некоторыми типичными примерами функций могут быть арифметические операторы, такие как «плюс», «время» и «квадратный корень», которые можно комбинировать с другими арифметическими операциями для составления выражений.

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

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

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

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

Эта интуиция лежит в основе логики. Если повторение одной и той же операции с одним и тем же входом дает другой результат, вы, без сомнения, знаете, что что-то изменилось: это не та функция, о которой вы думали, это не простая машина. (Дерек Робинсон, 2008)

Реализация функций в моих проектах по программированию

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

Проект называется TEXTBOX. Его цель - создать иллюстрацию из текста, который пользователь вводит в текстовое поле при нажатии кнопки отправить. Он вдохновлен этим примером, с которым я столкнулся, когда больше склонялся к использованию ввода и кнопок на p5.

Я вызвал функцию greet через встроенную функцию действия / действия mousePressed в p5. В greet помещается цикл for, который генерирует копию текста и случайным образом меняет его цвет и положение. Просто перезагрузите страницу, чтобы фон стал белым.

Хорошим обновлением будет добавление кнопки обновления внутри самой веб-страницы, а также возможность сохранять изображения (с разными соотношениями сторон) в виде изображения на вашем компьютере.

Доступ к проекту можно получить здесь https://alpha.editor.p5js.org/full/SJvi1DzrG

Использованная литература:

  1. BBC Bitesize - GCSE Computer Science - Функции, процедуры и модули - Версия 1 (2018). Доступно по адресу: https://www.bbc.co.uk/education/guides/z9hykqt/revision.
  2. Программирование - функции (2018). Доступно по адресу: https://www.cs.utah.edu/~germain/PPS/Topics/functions.html (дата обращения: 19 января 2018 г.).
  3. Шридхаран, К. (2018) Малые функции считаются вредными, Средние. Доступно по адресу: https://medium.com/@copyconstruct/small-functions-considered-harmful-91035d316c29.
  4. Дерек Робинсон (2008) Исследования программного обеспечения, выполненные Фуллером, М. Кембриджем, Массачусетс: MIT Press.
  5. Голдберг, О. (2017) Javascript и функциональное программирование - Часть 2: функции первого класса, Hacker Noon - Medium. Доступно по адресу: https://hackernoon.com/javascript-and-functional-programming-pt-2-first-class-functions-4437a1aec217.

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

ш. Http://francescoimola.com/

tw. Https://twitter.com/francescoimola