Что такое параметр в информатике
Параметр (программирование)
Пара́метр в программировании — принятый функцией аргумент. Термин «аргумент» подразумевает, что конкретно и какой конкретной функции было передано, а параметр — в каком качестве функция применила это принятое. Т.е. вызывающий код передает аргумент в параметр, который определен в спецификации функции.
Содержание
Фактический или формальный
По способу применения различают:
Передача параметра
Передача параметра возможна по значению и по ссылке. Иногда также используют выражение «передача параметра по адресу». Ниже приведён пример, иллюстрирующий различия этих способов.
Передача параметра по значению
Передача параметра по значению означает что вызывающая функция копирует в память, доступную вызываемой, (обычно стек) непосредственное значение. Изменение копии переменной, соответственно, оригинал не затрагивает.
Передача параметра по адресу
Если необходимо именно изменить переменную из внешней, по отношению к вызываемой функции, области видимости, можно копировать адрес переменной, подлежащей изменению. Соответственно при вызове функции g(&x) приходится использовать операцию взятия адреса. Эта техническая деталь отвлекает внимание программиста от логики прикладной программы, однако в случаях невозможности передачи по ссылке может оказаться единственным решением.
Можно заметить, что передача параметра по адресу является частным случаем передачи по значению: передаваемым значением является адрес, по которому можно найти другое значение — значение переменной x.
Передача параметра по ссылке
Передача параметра по ссылке означает что копируется не само значение, а адрес исходной переменной (как в случае передачи параметра по адресу), однако синтаксис используется такой, чтобы программисту не приходилось использовать операцию разыменования и он мог иметь дело непосредственно со значением, хранящимся по этому адресу (как в случае передачи параметра по значению).
Передача по ссылке позволяет избежать копирования всей информации, описывающей состояние объекта (а это может быть существенно больше чем sizeof(int)) и является необходимой для конструктора копирования.
Если функция возвращает значение по ссылке (например, в виде «return *this;»), то её вызов можно использовать слева от оператора присваивания (смотри также L-выражение).
В случае если передача по ссылке используется именно как средство увеличения быстродействия, но изменение параметра нежелательно, можно использовать передачу по ссылке константного объекта.
Таким образом можно ожидать, что примерная программа напечатает (если закоментировать ошибочную строку) «0010 022 233 333».
См. также
Литература
Ссылки
Полезное
Смотреть что такое «Параметр (программирование)» в других словарях:
Параметр (значения) — Параметр (математика) Параметр (программирование) Параметр (свойство карт ККИ) Параметр (техника) … Википедия
ПРОГРАММИРОВАНИЕ ТЕОРЕТИЧЕСКОЕ — математическая дисциплина, изучающая математич. абстракции программ, трактуемых как объекты, выраженные на формальном языке, обладающие определенной информационной и логич. структурой и подлежащие исполнению на автоматич. устройствах. П. т.… … Математическая энциклопедия
ПРОГРАММИРОВАНИЕ ПАРАЛЛЕЛЬНОЕ — раздел программирования, связанный с изучением и разработкой методов и средств для: а) адекватного описания в программах естественного параллелизма моделируемых в ЭВМ и управляемых ЭВМ систем и процессов, б) распараллеливания обработки информации … Математическая энциклопедия
Аргумент (программирование) — У этого термина существуют и другие значения, см. Аргумент. В программировании: аргумент функции значение (число, указатель и т. д.), передаваемое функции, а также символьное имя (название переменной) в тексте программы,… … Википедия
Параметрическое программирование — (англ. parametrical programming) У этого термина существуют и другие значения, см. Параметрическое программирование (значения). Параметрическое программирование (Макропрограммирование) это язык программирования ЧПУ. Производители систем… … Википедия
Обобщённое программирование — (англ. generic programming) парадигма программирования, заключающаяся в таком описании данных и алгоритмов, которое можно применять к различным типам данных, не меняя само это описание. В том или ином виде поддерживается разными… … Википедия
Обобщенное программирование — Обобщённое программирование парадигма программирования, заключающаяся в таком описании данных и алгоритмов, которое можно применять к различным типам данных, не меняя само это описание. В том или ином виде поддерживается разными языками… … Википедия
Процедура (программирование) — Подпрограмма (англ. subprogram) поименованная или иным образом идентифицированная часть компьютерной программы, содержащая описание определённого набора действий. Подпрограмма может быть многократно вызвана из разных частей программы. В языках… … Википедия
Шаблон (программирование) — Шаблоны (англ. template) средство языка C++, предназначенное для кодирования обобщённых алгоритмов, без привязки к некоторым параметрам (например типам данных, размерам буферов, значениям по умолчанию). В C++ возможно создание шаблонов функций и … Википедия
Что такое параметр в информатике
Синтаксис определения и вызова функции
Синтаксис функций (определения и вызова) включает в себя до десятка терминов и определений, поэтому придется сначала договориться о терминологии, не вникая в суть, а затем обсуждать механизмы ее работы.
Как любая другая переменная, результат функции относится к определенному типу данных, который указан в заголовке функции ( 6). Это делается тем же способом, что и для обычных переменных. Используется тот же самый синтаксис, в котором имя функции выступает в роли переменной-результата. Тип результата может быть любым, за исключением функции или массива.
return (nn+1) ; // FF = (double)(nn + 1)
Nothing(); // Просто вызов без использования результата
Определение функции представляет собой всего лишь статическую «заготовку» программы. Выполнение ее происходит тогда, когда в процессе вычисления выражения встречается вызов функции. Синтаксически вызовом функции называется упоминание имени этой функции в выражений ( 10), причем после имени функции в скобках следует список фактических параметров (12).
Фактические параметры – переменные, константы и выражения, которые ставятся в соответствие формальным параметрам при текущем вызове функции. По поводу них можно сказать следующее :
· между формальными и фактическими параметрами устанавливается «один-один» соответствие, которое действует только в течение текущего вызова функции (динамически);
· существуют различные способы установления соответствия, на настоящий момент реально распространенными в языках программирования являются способы передачи параметров по ссылке и по значению;
Способы соответствия формальных и фактических параметров
В настоящее время в большинстве языков программирования используются два способа передачи параметров: по ссылке и по значению. Особенностью Си является то, что он имеет возможность использовать ссылки не только неявно, но и с использованием такого архитектурно-ориентированного средства как указатель Кроме того, указатель и ссылка могут быть не только формальным параметром, но и результатом функции ( 5.2). Пока же мы ограничимся общепринятыми для всех языков программирования рамками.
· формальные параметры являются собственными переменными функции, аналогом локальных переменных;
· при вызове функции происходит присваивание формальным параметрам значений фактических (копирование вторых в первые);
· при изменении формальных параметров значения соответствующих им фактических параметров не меняются;
· передача параметров по значению используется для задании функции входных данных.
· формальные параметры существуют как синонимы фактических, в этом смысле они не являются «настоящими» переменными, под которые отводится память, а реализуется как элемент отображения;
· при изменении значений формальных параметров эти изменения проецируются на соответствующие им фактические;
· передача параметров по ссылке может использоваться для данных, которые являются либо чисто выходными (неявный результат функции), либо представляют собой внешние для функции данные, которые она должна изменить.
Доступ к объекту в виде значения (копии) и ссылки на оригинал широко используются в информационных технологиях. Для любого набора данных можно создать копию, передав ее пользователю, либо создать ссылку на оригинал. Например, на рабочем столе можно разместить копию файла (аналог передачи по значению), либо его ярлык (аналог передачи по ссылке).
В Си приняты следующие правила передачи, которые определяются синтаксическим видом формальных параметров в заголовке функции:
· по умолчанию (т.е. при отсутствии явных символов обозначения) все параметры, кроме массивов, передаются по значению, т.е. копируются ;
· массивы передаются исключительно по ссылке, т.е. отображаются;
· для явного указания способа передачи параметра по ссылке служит символ « &», который записывается перед именем формального параметра.
Механизм вызова функции
Механизм вызова функции является динамическим, т.е. действия, связанные с его реализацией, осуществляются при выполнении программы. Именно поэтому текст программы и его «развертка» во времени представляют для функции «две большие разницы». Это касается двух вещей :
· последовательность выполняемых действий (поток управления) при вызовах функций:
· соответствие между формальными и фактическими параметрами.
Именно поэтому мы и рассмотрим процесс вызова вышеприведенной функции в «исторической перспективе»:
1. результатом трансляции функции является программный код, размещенный в сегменте команд;
3. выполняется программный код вызывающей функции, пока в ней не встретится выражение, содержащий вызов функции;
4. в соответствии со списком фактических параметров устанавливается соответствие между элементами контекста вызывающей функции и формальными параметрами;
7. сохраняется точка возврата в вызывающую функцию, после чего происходит переход к началу блока программного кода функции sum ;
8. выполняется программный код функции sum ;
9. в контексте вызываемой функции используются локальные переменные и формальные параметры, в соответствии со способами передачи параметров массив A отображается на исходный массив B в контексте main ;
12. продолжается выполнение программного кода вызывающей функции.
Области действия функций. Определения и объявления
До сих пор мы ничего не говорили ни о взаимном расположении в программе определения функции и ее вызова, ни о соответствии формальных и фактических параметров, ни о контроле такого соответствия. Конечно, нельзя считать, что транслятор «знает» о всех функциях, когда либо написанных, либо находящихся в библиотеках, текстовых файлах и т.д.. Каждая программа должна сама сообщать транслятору необходимую информацию о функциях, которые она собирается вызывать. Перечислим, какую именно:
· список формальных параметров (переменные и типы).
При ее наличии транслятор может корректно сформировать вызов функции, даже если текст ее (определение) отсутствует в программе. Вся перечисленная информация о функции находится в ее заголовке. Таким образом, достаточно этот заголовок привести отдельно, и проблема корректного вызова решается. Такой заголовок называется объявлением или в рассматриваемом нами варианте синтаксиса прототипом функции
// определенной далее по тексту
extern int printf(char *. ); // Объявление библиотечной функции
// с переменным числом параметров
extern int other(void); // Объявление функции без
// параметров из другого
void main() // файла программы
int sum(int s[], int n) <. >// Определение ранее объявленной функции
Из примера видно, что объявление функции практически дублирует заголовок, отличаясь в некоторых деталях:
· объявление заканчивается символом «;» ;
· если функция находится вне текущего файла, то объявление предваряется служебным словом extern;
· имена переменных в списке формальных параметров объявления могут отсутствовать;
· если функция не имеет формальных параметров, то в объявлении присутствует формальный параметр типа void.
Имея предварительно определенную функцию или ее объявление, транслятор в состоянии проверить соответствие формальных и фактических параметров как по их количеству, так и по типам. При этом транслятор может выполнить неявные преобразования типов фактических параметров к типам формальных, если это потребуется:
extern double sin(double);
y = sin(x); //——Неявное преобразование (double)x
Глобальные переменные. Инициализация
Программа в целом представляет собой набор вызывающих друг друга функций с обязательной функцией main, имеющих собственные наборы локальных переменных.
Параметр (программирование)
Связанные понятия
В языках программирования объявле́ние (англ. declaration) включает в себя указание идентификатора, типа, а также других аспектов элементов языка, например, переменных и функций. Объявление используется, чтобы уведомить компилятор о существовании элемента; это весьма важно для многих языков (например, таких как Си), требующих объявления переменных перед их использованием.
Упоминания в литературе
Связанные понятия (продолжение)
Из-за путаницы с терминологией словом «оператор» в программировании нередко обозначают операцию (англ. operator), см. Операция (программирование).Инстру́кция или опера́тор (англ. statement) — наименьшая автономная часть языка программирования; команда или набор команд. Программа обычно представляет собой последовательность инструкций.
Побо́чные эффе́кты (англ. side effects) — любые действия работающей программы, изменяющие среду выполнения (англ. execution environment). Например, к побочным эффектам относятся.
По одной из классификаций, языки программирования неформально делятся на сильно и слабо типизированные (англ. strongly and weakly typed), то есть обладающие сильной или слабой системой типов. Эти термины не являются однозначно трактуемыми, и чаще всего используются для указания на достоинства и недостатки конкретного языка. Существуют более конкретные понятия, которые и приводят к называнию тех или иных систем типов «сильными» или «слабыми».
В информатике, спи́сок (англ. list) — это абстрактный тип данных, представляющий собой упорядоченный набор значений, в котором некоторое значение может встречаться более одного раза. Экземпляр списка является компьютерной реализацией математического понятия конечной последовательности.
В информатике и теории автоматов состояние цифровой логической схемы или компьютерной программы является техническим термином для всей хранимой информации, к которой схема или программа в данный момент времени имеет доступ. Вывод данных цифровой схемы или компьютерной программы в любой момент времени полностью определяется его текущими входными данными и его состоянием.
СОДЕРЖАНИЕ
Пример
После того, как функция определена, ее можно вызывать следующим образом:
Параметры и аргументы
Чтобы лучше понять разницу, рассмотрим следующую функцию, написанную на C :
Код, вызывающий функцию Sum, может выглядеть так:
Альтернативная конвенция в Эйфеле
Рассмотрим следующее стандартное определение:
Типы данных
В строго типизированных языках программирования тип каждого параметра должен быть указан в объявлении процедуры. Языки, использующие вывод типов, пытаются автоматически обнаруживать типы из тела функции и использования. Языки программирования с динамической типизацией откладывают разрешение типов до времени выполнения. Слабо типизированные языки практически не имеют разрешения типов, вместо этого полагаясь на правильность программиста.
Передача аргумента
Аргументы по умолчанию
Аргументы по умолчанию можно рассматривать как частный случай списка аргументов переменной длины.
Списки параметров переменной длины
Именованные параметры
Несколько параметров на функциональных языках
Выходные параметры
В некоторых случаях различаются только ввод и ввод / вывод, при этом вывод рассматривается как конкретное использование ввода / вывода, а в других случаях поддерживаются только ввод и вывод (но не ввод / вывод). Режим по умолчанию зависит от языка: в Fortran 90 ввод / вывод по умолчанию, в C # и расширениях SQL ввод по умолчанию, а в TScript каждый параметр явно указывается как ввод или вывод.
Синтаксически режим параметра обычно указывается ключевым словом в объявлении функции, например, void f(out int x) в C #. Обычно выходные параметры часто помещаются в конец списка параметров, чтобы их четко различать, хотя это не всегда соблюдается. TScript использует другой подход, когда в объявлении функции перечислены входные параметры, затем выходные параметры, разделенные двоеточием (:), и нет типа возврата для самой функции, как в этой функции, которая вычисляет размер текста. фрагмент:
Использовать
Например, чтобы вернуть две переменные из функции в C, можно написать:
и может использоваться следующим образом:
Аналогичные соображения применимы к возврату значения одного из нескольких возможных типов, где возвращаемое значение может указывать тип, а затем значение сохраняется в одной из нескольких выходных переменных.
Недостатки
при записи с параметрами вывода и ввода / вывода вместо этого становится (поскольку F это выходной параметр для параметра G ввода / вывода):
В особом случае функции с одним выходным или входным / выходным параметром и без возвращаемого значения, композиция функции возможна, если выходной или входной / выходной параметр (или в C / C ++, его адрес) также возвращается функцией, в этом случае приведенное выше становится:
Альтернативы
Существуют различные альтернативы вариантам использования выходных параметров.
Вместо этого для возврата значения одного из нескольких типов можно использовать помеченное объединение ; наиболее распространенными случаями являются типы, допускающие значение NULL ( типы параметров ), где возвращаемое значение может быть NULL, чтобы указать на сбой. Для обработки исключений можно вернуть тип, допускающий значение NULL, или вызвать исключение. Например, в Python может быть:
или, более идиоматично:
Микрооптимизация, заключающаяся в том, что не требуется локальная переменная и копирует возвращаемый результат при использовании выходных переменных, также может быть применена к обычным функциям и возвращаемым значениям достаточно сложными компиляторами.
Обычной альтернативой выходным параметрам в C и родственных языках является возврат единой структуры данных, содержащей все возвращаемые значения. Например, учитывая структуру, инкапсулирующую ширину и высоту, можно написать:
Информатика и информационные технологии
© М.Е. Крекин, 1999, 2002
Глава 5
Параметры
Как вы знаете, желательно, чтобы алгоритмы были массовыми. В этой главе вы узнаете, что такое параметры и как можно составлять универсальные процедуры.
это квадрат :а
по
повтори 4 [вп :а пр 90]
пп
конец
Имена переменных образуются точно так же, как имена процедур. Однако, в Лого, чтобы указать, когда мы имеем дело со значением переменной, перед ее именем (без пробела!) ставится двоеточие.
Рассмотрим чуть подробнее, что происходит при исполнении процедуры с параметром. Переменную можно представить в виде ящика, на котором наклеена табличка с именем. В этот ящик может поместиться одно значение. Компьютер в любое время может посмотреть, что там находится, а может и поменять хранящееся значение. Допустим, мы дали команду
В заголовке процедуры после ее имени стоит «:а». Поэтому число 70 компьютер положит в «ящик» с такой «табличкой». Теперь начинается выполнение самой процедуры. Опускается перо, и черепашка начинает выполнять цикл. Встретившись с командой «вп :а», она смотрит, какое значение «лежит в ящике», и подставляет его в эту команду. Само значение переменной при этом не меняется.
Процедура может иметь не один параметр, а несколько. Например:
это прямоугольник :a :b
по
повтори 2 [вп :a пр 90 вп :b пр 90]
пп
конец