что такое параметр в программировании

Параметр (программирование)

Пара́метр в программировании — принятый функцией аргумент. Термин «аргумент» подразумевает, что конкретно и какой конкретной функции было передано, а параметр — в каком качестве функция применила это принятое. Т.е. вызывающий код передает аргумент в параметр, который определен в спецификации функции.

Содержание

Фактический или формальный

По способу применения различают:

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

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

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

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

Передача параметра по адресу

Если необходимо именно изменить переменную из внешней, по отношению к вызываемой функции, области видимости, можно копировать адрес переменной, подлежащей изменению. Соответственно при вызове функции g(&x) приходится использовать операцию взятия адреса. Эта техническая деталь отвлекает внимание программиста от логики прикладной программы, однако в случаях невозможности передачи по ссылке может оказаться единственным решением.

Можно заметить, что передача параметра по адресу является частным случаем передачи по значению: передаваемым значением является адрес, по которому можно найти другое значение — значение переменной x.

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

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

Передача по ссылке позволяет избежать копирования всей информации, описывающей состояние объекта (а это может быть существенно больше чем sizeof(int)) и является необходимой для конструктора копирования.

Если функция возвращает значение по ссылке (например, в виде «return *this;»), то её вызов можно использовать слева от оператора присваивания (смотри также L-выражение).

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

Таким образом можно ожидать, что примерная программа напечатает (если закоментировать ошибочную строку) «0010 022 233 333».

См. также

Литература

Ссылки

что такое параметр в программировании. 40px Wiki letter w.svg. что такое параметр в программировании фото. что такое параметр в программировании-40px Wiki letter w.svg. картинка что такое параметр в программировании. картинка 40px Wiki letter w.svg. Пара́метр в программировании — принятый функцией аргумент. Термин «аргумент» подразумевает, что конкретно и какой конкретной функции было передано, а параметр — в каком качестве функция применила это принятое. Т.е. вызывающий код передает аргумент в параметр, который определен в спецификации функции.

Полезное

Смотреть что такое «Параметр (программирование)» в других словарях:

Параметр (значения) — Параметр (математика) Параметр (программирование) Параметр (свойство карт ККИ) Параметр (техника) … Википедия

ПРОГРАММИРОВАНИЕ ТЕОРЕТИЧЕСКОЕ — математическая дисциплина, изучающая математич. абстракции программ, трактуемых как объекты, выраженные на формальном языке, обладающие определенной информационной и логич. структурой и подлежащие исполнению на автоматич. устройствах. П. т.… … Математическая энциклопедия

ПРОГРАММИРОВАНИЕ ПАРАЛЛЕЛЬНОЕ — раздел программирования, связанный с изучением и разработкой методов и средств для: а) адекватного описания в программах естественного параллелизма моделируемых в ЭВМ и управляемых ЭВМ систем и процессов, б) распараллеливания обработки информации … Математическая энциклопедия

Аргумент (программирование) — У этого термина существуют и другие значения, см. Аргумент. В программировании: аргумент функции значение (число, указатель и т. д.), передаваемое функции, а также символьное имя (название переменной) в тексте программы,… … Википедия

Параметрическое программирование — (англ. parametrical programming) У этого термина существуют и другие значения, см. Параметрическое программирование (значения). Параметрическое программирование (Макропрограммирование) это язык программирования ЧПУ. Производители систем… … Википедия

Обобщённое программирование — (англ. generic programming) парадигма программирования, заключающаяся в таком описании данных и алгоритмов, которое можно применять к различным типам данных, не меняя само это описание. В том или ином виде поддерживается разными… … Википедия

Обобщенное программирование — Обобщённое программирование парадигма программирования, заключающаяся в таком описании данных и алгоритмов, которое можно применять к различным типам данных, не меняя само это описание. В том или ином виде поддерживается разными языками… … Википедия

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

Шаблон (программирование) — Шаблоны (англ. template) средство языка C++, предназначенное для кодирования обобщённых алгоритмов, без привязки к некоторым параметрам (например типам данных, размерам буферов, значениям по умолчанию). В C++ возможно создание шаблонов функций и … Википедия

Источник

СОДЕРЖАНИЕ

Пример

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

Параметры и аргументы

Чтобы лучше понять разницу, рассмотрим следующую функцию, написанную на C :

Код, вызывающий функцию Sum, может выглядеть так:

Альтернативная конвенция в Эйфеле

Рассмотрим следующее стандартное определение:

Типы данных

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

Передача аргумента

Аргументы по умолчанию

Аргументы по умолчанию можно рассматривать как частный случай списка аргументов переменной длины.

Списки параметров переменной длины

Именованные параметры

Несколько параметров на функциональных языках

Выходные параметры

В некоторых случаях различаются только ввод и ввод / вывод, при этом вывод рассматривается как конкретное использование ввода / вывода, а в других случаях поддерживаются только ввод и вывод (но не ввод / вывод). Режим по умолчанию зависит от языка: в Fortran 90 ввод / вывод по умолчанию, в C # и расширениях SQL ввод по умолчанию, а в TScript каждый параметр явно указывается как ввод или вывод.

Синтаксически режим параметра обычно указывается ключевым словом в объявлении функции, например, void f(out int x) в C #. Обычно выходные параметры часто помещаются в конец списка параметров, чтобы их четко различать, хотя это не всегда соблюдается. TScript использует другой подход, когда в объявлении функции перечислены входные параметры, затем выходные параметры, разделенные двоеточием (:), и нет типа возврата для самой функции, как в этой функции, которая вычисляет размер текста. фрагмент:

Использовать

Например, чтобы вернуть две переменные из функции в C, можно написать:

и может использоваться следующим образом:

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

Недостатки

при записи с параметрами вывода и ввода / вывода вместо этого становится (поскольку F это выходной параметр для параметра G ввода / вывода):

В особом случае функции с одним выходным или входным / выходным параметром и без возвращаемого значения, композиция функции возможна, если выходной или входной / выходной параметр (или в C / C ++, его адрес) также возвращается функцией, в этом случае приведенное выше становится:

Альтернативы

Существуют различные альтернативы вариантам использования выходных параметров.

Вместо этого для возврата значения одного из нескольких типов можно использовать помеченное объединение ; наиболее распространенными случаями являются типы, допускающие значение NULL ( типы параметров ), где возвращаемое значение может быть NULL, чтобы указать на сбой. Для обработки исключений можно вернуть тип, допускающий значение NULL, или вызвать исключение. Например, в Python может быть:

или, более идиоматично:

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

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

Источник

Урок №13. Параметры и аргументы функций

Обновл. 11 Сен 2021 |

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

Параметры и аргументы функций

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

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

Аргумент функции — это значение, которое передается из caller-а в функцию и которое указывается в скобках при вызове функции в caller-е:

Обратите внимание, аргументы тоже перечисляются через запятую. Количество аргументов должно совпадать с количеством параметров, иначе компилятор выдаст сообщение об ошибке.

Как работают параметры и аргументы функций?

При вызове функции, все её параметры создаются как локальные переменные, а значение каждого из аргументов копируется в соответствующий параметр (локальную переменную). Этот процесс называется передачей по значению. Например:

Как работают параметры и возвращаемые значения функций?

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

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

Результат выполнения программы:

Еще примеры

Рассмотрим еще несколько вызовов функций:

Результат выполнения программы:

С первыми двумя вызовами всё понятно.

Следующая пара относительно лёгкая для понимания:

Теперь рассмотрим вызов посложнее:

add(1, multiply(2, 3)) => add(1, 6) => 7

Последний вызов может показаться немного сложным из-за того, что параметром функции add() является другой вызов add():

add(1, add(2, 3)) => add(1, 5) => 6

Задание №1: Что не так со следующим фрагментом кода?

Задание №2: Какие здесь есть две проблемы?

Задание №3: Какой результат выполнения следующей программы?

Задание №4: Напишите функцию doubleNumber(), которая принимает целое число в качестве параметра, удваивает его, а затем возвращает результат обратно в caller.

Задание №5: Напишите полноценную программу, которая принимает целое число от пользователя (используйте std::cin), удваивает его с помощью функции doubleNumber() из предыдущего задания, а затем выводит результат на экран.

Ответы

Чтобы просмотреть ответ, кликните на него мышкой.

Ответ №1

Функция multiply() имеет тип возврата void, что означает, что эта функция не возвращает значения. Но, так как она все равно пытается возвратить значение с помощью оператора return, мы получим ошибку от компилятора. Функция должна иметь тип возврата int.

Ответ №2

Проблема №1: main() передает один аргумент в multiply(), но multiply() имеет два параметра.

Проблема №2: multiply() вычисляет результат и присваивает его локальной переменной, которую не возвращает обратно в main(). А поскольку тип возврата функции multiply() — int, то мы получим ошибку (в некоторых компиляторах) или неожиданные результаты (в остальных компиляторах).

Ответ №3

Источник

Различия между параметрами и аргументами (Visual Basic)

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

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

Параметры

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

При определении Function Sub процедуры или необходимо указать список параметров в круглых скобках сразу после имени процедуры. Для каждого параметра указывается имя, тип данных и механизм передачи (ByVal или ByRef). Можно также указать, что параметр является необязательным. Это означает, что вызывающему коду не обязательно передавать значение для него.

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

Аргументы

Аргумент представляет значение, которое передается в параметр процедуры при вызове процедуры. Вызывающий код предоставляет аргументы при вызове процедуры.

При вызове Function процедуры или Sub вы включаете список аргументов в круглые скобки сразу после имени процедуры. Каждый аргумент соответствует параметру в том же положении в списке.

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

Источник

Материал из Википедии — свободной энциклопедии

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

Формальные и фактические параметры

Использование параметров

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

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

На практике, модель вычисления многих промышленных языков (Java, C#) сводится к стратегии «вызов-при-упоминании/передача-по-ссылке». Некоторые более старые языки, в особенности небезопасные языки, такие как C++, сочетают несколько разных моделей вызова, включая экзотичные, такие как «вызов-по-ссылке-на-константу». Исторически вызов по значению и вызов по имени восходят к Алголу-60, созданному в конце 1950-х годов. Только чистые функциональные языки, такие как Clean и Haskell, используют вызов по необходимости (англ. call-by-need ), который часто отождествляют (что также не вполне корректно) с ленивыми вычислениями.

Примеры

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

Передача по ссылке позволяет избежать копирования всей информации, описывающей состояние объекта (а это может быть существенно больше чем sizeof(int)) и является необходимой для конструктора копирования.

Если функция возвращает значение по ссылке (например, в виде «return *this;»), то её вызов можно использовать слева от оператора присваивания (см. также L-выражение).

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

Таким образом можно ожидать, что примерная программа напечатает (если закомментировать ошибочную строку) «0010 022 233 333».

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

Язык Fortran подразумевает передачу параметров исключительно по ссылке:

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *