- Формальные и фактические параметры
- Статьи к прочтению:
- Ээ в этом случае наши полномочия все окончены
- Похожие статьи:
- Что такое параметр в информатике
- Параметры (информатика)
- Содержание
- Назначение параметров
- Различные термины параметров
- Примеры параметров
- СМИ для передачи параметров
- Параметры в подпрограммах
- Передача параметров / аргументов
- Перенос через стек
- Значения или ссылки / указатели как параметры
- Обратная запись через ссылочные данные
- Реализация на машинном уровне
- Определение и техническое применение параметров подпрограммы
- Формальные параметры
- Фактические параметры или аргументы
- Подсказка типов
- Замените формальные параметры фактическими
- Пример передачи различных параметров
- Параметры командной строки
- Информатика и информационные технологии
- Глава 5 Параметры
- Презентация по информатике «Параметры» (8 класс)
- Дистанционное обучение как современный формат преподавания
- Информатика: теория и методика преподавания в образовательной организации
- Математика и информатика: теория и методика преподавания в образовательной организации
- Оставьте свой комментарий
- Подарочные сертификаты
Формальные и фактические параметры
Рассмотрим более подробно вопросы взаимодействия формальных и фактических параметров.
Определения формальных и фактических параметров являются исключительно важными для понимания механизма их взаимодействия в подпрограммах. Поэтому на этом вопросе следует остановиться подробнее.
Формальные параметры подпрограммы указывают, с какими параметрами следует обращаться к этой подпрограмме (количество параметров, их последовательность, типы). Они задаются в заголовке подпрограммы в виде списка формальных параметров, разбитого на группы, разделенные точками с запятыми. В группу формальных параметров включаются однотипные параметры одной категории.
Все формальные параметры можно разбить на четыре категории:
— параметры-значения (эти параметры подпрограмма может изменить в основной подпрограмме);
— параметры-переменные (эти параметры подпрограмма может изменить в основной программе);
— параметры-константы (только в версии 7.0);
— параметры-процедуры и параметры-функции (т.е. процедурного типа).
Для каждого формального параметра следует указать имя и, как правило, тип, а в случае параметра-переменной или параметра-константы — категорию. Имена параметров могут быть любыми, в том числе и совпадать с именами объектов программы. Необходимо лишь помнить, что в этом случае параметр основной программы с таким именем становится недоступным для непосредственного использования подпрограммой. Тип формального параметра может быть практически любым, однако в заголовке подпрограммы нельзя вводить новый тип.
Например, нельзя писать
Function SUMM (A: array[1..100] of Real): Real;
Чтобы правильно записать этот заголовок, следует в основной программе ввести тип-массив, а затем использовать его в заголовке:
Type aArr = array[1..100] of real;
Function SUMM (A: aArr): Real;
При обращении к подпрограмме формальные параметры заменяются на соответствующие фактическиевызывающей программы или подпрограммы.
Параметры-значения передаются основной программой в подпрограмму через стек (специальный канал передачи данных) в виде их копий и, следовательно, собственный параметр программы подпрограммой измениться не может.
Параметр-значение указывается в заголовке подпрограммы своим именем и через двоеточие — типом. Тип параметра-значения может быть любым, за исключением файлового.
Если параметров-значений одного типа несколько, их можно объединить в одну группу, перечислив их имена через запятую, а затем уже указать общий тип. Как было отмечено выше, отдельные группы параметров отделяются друг от друга точкой с запятой.
Procedure MIN_MAX(Max,Min: Real; n: Word);
Function Tabulir(X,Y: Integer): Real;
В качестве фактического параметра на месте параметра-значения при вызове подпрограммы может выступать любое выражение совместимого для присваивания типа, не содержащее файловую компоненту, например:
Пример 2.6.Использовать функцию для вычисления максимального элемента в массиве.
Определим в основной программе тип-массив.
aArr = Array[1..] of Integer;
Var Massiv: aArr; Maxim: Integer;
Функция в этом случае может иметь следующий вид.
Function Max(Mas: aArr; N: Byte): Integer;
Var Ma : Integer; i : Byte;
If MaMas[i] then Ma := Mas[i];
Пусть надо определить максимальное число из первых 35 чисел массива. Это можно сделать с помощью оператора, использующего обращение к функции: Maxim := Max(Massiv,35);
Примечание. Данная программа может работать только с массивами типа аАrr. Для массивов другого типа надо создавать другую аналогичную подпрограмму. Данная программа создает в стеке копию исходного массива, поэтому она работает медленно.
Параметр-переменная указывается в заголовке подпрограммы аналогично параметру-значению, но только перед именем параметра записывается зарезервированное слово VAR. Действие слова VAR распространяется до ближайшей точки с запятой, т.е. в пределах одной группы.
Пример 2.8. Procedure MaxMin(A: аАrr; Var Max, Min: Real; N: Word);
Здесь Max, Min- параметры-переменные, а переменные А и N — параметры-значения.
Тип параметров-переменных может быть любым, включая и файловый. При вызове подпрограммы на месте параметра-переменной в качестве фактического параметра должна использоваться переменная идентичного типа. Так, если формальный параметр имеет тип, определенный следующим образом:
Type аАrr = array [1.. 100] of Integer;
то и фактический параметр должен быть переменной или типизированной константой типа аАrr.
Использовать функцию для вычисления максимального элемента в массиве.
В основной программе определяется тип-массив.
Type аАrr = Array [1.. 50] of Integer;
Var Massiv: аАrr; Maxim: Integer;
Функция в этом случае может иметь вид:
Function Max(Var Mas: аАгг; N: Byte): Integer;
Var Ma : Integer; i : Byte;
If MaMas[i] then Ma := Mas[i];
Пусть надо определить максимальное число из первых 35 чисел массива Это можно сделать с помощью оператора:
Примечание. Эта программа лучше предыдущей тем, что в данном случае в стеке не создается копия исходного массива, что улучшает быстродействие и экономит память. Однако при такой передаче параметра возможно его нежелательное изменение (этот вариант передачи параметра допустим только в таких небольших подпрограммах, как в данном случае, когда программист может проконтролировать несанкционированное изменение параметра). Недостатком этой программы, как и ранее описанной, является то, что она может работать только с одним типом массива.
Часто в качестве параметра в подпрограмму следует передать ту или иную переменную, но изменять ее подпрограмма не должна. В этом случае нежелательно передавать этот параметр как параметр-переменную. Можно его передать как параметр-значение, однако если эта переменная имеет больший размер (массив, запись и т.д.), то копия этого параметра займет большую часть стека и даже может его переполнить. Это приводит также к уменьшению быстродействия программы. В этой ситуации параметр лучше передать как параметр-константу. Такой параметр, если он структурированного типа, передается своим адресом, но предусматривается защита от его изменения. Использовать параметр-константу можно только в версии Турбо Паскаля 7.0.
Параметр-константа указывается в заголовке подпрограммы аналогично параметру-значению, но перед именем параметра записывается зарезервированное слово Const. Действие слова Const распространяется до ближайшей точки с запятой, т.е. в пределах одной группы.
Пример 2.10.Function NewString(Const S: String): String;
Тип параметра-значения может быть любым, за исключением файлового. При вызове подпрограммы на месте параметра-переменной в качестве фактического параметра можно использовать любое выражение совместимого для присваивания типа, не содержащего файловую компоненту.
Параметр-константу нельзя передавать в другую подпрограмму в качестве фактического параметра.
Функция вычисления максимального элемента в массиве, и в качестве первого параметра – параметр-константа.
Function Max(Const Mas: аАrr; N: Byte): Integer;
Var Ma : Integer; i : Byte;
If MaMas[i] then Ma := Mas[i];
Параметры без типа
В Турбо Паскале можно использовать параметры-переменные и параметры-константы без указания типа. В этом случае фактический параметр может быть переменной любого типа,а ответственность за правильное использование того или иного параметра возлагается на программиста.
Пример 2.12.Function Tqual(Var Param1, Param2; Len: Word):Boolean;
Здесь Param1, Param2 — параметры-переменные без типа (вместо них можно использовать, например, любые переменные простого типа, типа-массив, типа-запись и т.д.); Len — параметр-значение.
Следует иметь в виду, что параметр “без типа” внутри подпрограммы типа не имеет и его перед использованием следует преобразовать к конкретному типу, применяя идентификатор соответствующего типа так, как ранее указывалось, при этом полученный результат может быть любого размера.
Пример 2.13.Функция вычисления максимального элемента в массиве. При этом в качестве первого параметра используется параметр-переменная без типа:
Function Max(Var Masr; N: Byte): Integer;
Type aArray = array[Maxint] of Integer;
Var Ма : Integer; i : Byte;
Begin Ма := aArray(Mas)[1];
If МаaArray(Mas)[i] then Ма := aArray(Mas)[i];
В этом случае в качестве первого передаваемого параметра можно использовать любой массив (и не только массив), так что подпрограмма становится более универсальной. Тем не менее здесь необходимо передавать в качестве второго параметра фактический размер информации, что не очень удобно.
Статьи к прочтению:
Ээ в этом случае наши полномочия все окончены
Похожие статьи:
Лабораторная работа №3 Использование подпрограмм в системе MATLAB Цель работы: Знакомство с организацией функций в MATLAB, особенностями их работы….
Существует несколько способов передачи параметров в подпрограмму. § Передача параметров по значению. Формальному параметру присваивается значение…
Что такое параметр в информатике
Формат записи цикла:
1) for i:= 1 to n do s1;
2) for i:= 3 to 10 do s1;
3) for i := a to b do s1;
4) for i := a to b do
begin
Пример:
Составить программу вывода на экран чисел от 1 до 10.
Program Problem; <Вывод чисел>
var i : integer;
begin
for i:=1 to 10 do
writeln (i);
redaln;
end.
Пример:
Составить программу вычисления факториала числа n, т. е. n!. (0! = 1)
Существует другая форма оператора цикла For:
Формат записи цикла:
Пример:
Возможны такие записи оператора цикла:
1) for i:= n downto 1 do s1;
2) for i:= 10 downto 3 do s1;
3) for i := b downto a do s1; (при условии, что b>a)
4) for i := b downto a do
begin
end; (при условии, что b>a)
Пример: Программу вычисления факториала числа можно составить, используя этот оператор цикла.
Параметры (информатика)
Различают «формальные параметры» (= как часть определения функции в программном коде; пример 🙂 (
Если аргумент не передается для каждого параметра при вызове (под) программы, это может использовать стандартное предположение, сделанное при создании программы, или (в зависимости от реализации) обработка может быть отменена из-за отсутствия параметров.
Содержание
Назначение параметров
С точки зрения концепции системы параметры являются входными данными ; однако они отличаются от обычных входных данных, например Б. следующим образом:
Различные термины параметров
Параметры используются в различных функциях информатики:
При использовании нескольких параметров важно уметь идентифицировать и различать отдельные параметры. Для этого есть два метода обнаружения:
Допускаются ли пустые параметры и как их обрабатывать, например Б. пустая строка символов или стандартное предположение ( аргумент по умолчанию для английского языка ) должна обрабатываться программой. Формат, в котором они должны быть указаны, также должен быть указан / согласован для обоих вариантов ; в примере: «чч: мм», по 2 цифры, разделенные двоеточием.
Кроме того, параметры можно различать по:
Примеры параметров
В самом широком смысле компьютерные команды (на всех языках программирования, а также на машинном языке ) являются параметрами: они содержат код функции, а также адреса, длину и т. Д. Для данных, подлежащих обработке. Информация интерпретируется и декодируется блоком управления компьютера и исполняется соответствующим образом.
Конкретный пример применения параметров:
В рамках приложения для управления счетами должна быть создана программа, которая выводит счета для пользователей в виде списка. В качестве технического требования было определено, что в этом списке отображаются все еще не оплаченные счета-фактуры старше 1 месяца, рассчитанные на момент запуска программы.
СМИ для передачи параметров
Параметры в подпрограммах
Передача параметров / аргументов
Перенос через стек
Для этого в других системных средах используется стековый механизм. В этих случаях необходимы следующие базовые знания, чтобы понять, как работают подпрограммы:
В основном память процессоров делится на
У каждого потока есть свой стек. В этом сохраняются:
Параметры передаются через стек. Каждый фактический параметр помещается в стек в том порядке, в котором он обрабатывается, обычно слева направо (в соответствии со строго определенным соглашением о вызовах ). При необходимости он конвертируется в формат, требуемый подпрограммой.
Значения или ссылки / указатели как параметры
Вызов function(data) без оператора ссылки & приводит к синтаксической ошибке. В C, однако, только если известен прототип вызываемой функции.
В C или C ++ также можно запрограммировать передачу значений вместо обычно разумной и обычной передачи ссылок. Выглядит это так:
При вызове все содержимое структуры копируется в стек. Это может быть много, если структура обширная. Это может привести к сбою всего процесса, если пределы стека превышены, а это не распознается в среде выполнения. Перенос стоимости полезен в следующих случаях:
Обратная запись через ссылочные данные
Во многих языках программирования результаты также могут быть записаны обратно с использованием ссылок, которые были переданы как параметры подпрограммы, например, в C и C ++:
Это также относится к Java. Ответная реакция может быть нежелательной, так как следует предотвратить побочные эффекты. Подпрограмма должна обрабатывать значения определенных структур данных только для чтения и не должна на них влиять. В C ++ (или в C) можно сформулировать:
Обозначение, используемое здесь с ключевым словом, const должно пояснять, что указанная (указанная) область должна рассматриваться как постоянная. Возможно, const Type* то, что написано, является синтаксически и семантически идентичным. Только в этом случае можно вообще передать область памяти, объявленную постоянной. Постройка
Однако в C и C ++ можно изменить тип указателя внутри функции и при этом по-прежнему иметь доступ для записи в область памяти. Такое программирование следует использовать только в особых случаях и должным образом задокументировать извне.
В объектно-ориентированном программировании на Java и C ++ ссылка на this данные класса неявно передается с указателем. Поэтому всегда можно записать свои собственные данные для методов класса.
Реализация на машинном уровне
Для подпрограмм на уровне машинного языка (ассемблер) это не имеет особого значения, или это зависит от программиста, как он управляет передачей параметров и адресом возврата. Также возможна передача и сохранение только в регистрах процессора. Однако при управлении адресом возврата необходимо учитывать необходимость вложенного вызова нескольких (обычно разных) подпрограмм внутри друг друга. Ограничение до нескольких или только одного уровня имеет смысл только для очень простых задач. Однако на самом деле такие концепции существуют для специализированных процессоров и задач.
На ассемблере все это нужно программировать самостоятельно. В языках программирования C ++ и C это делает переводчик. В Java то же самое происходит в областях памяти виртуальной машины, организованных с помощью байт-кода (сгенерированного транслятором Java) и машинного кода в виртуальной машине.
В качестве иллюстрации показан сгенерированный код ассемблера ( ассемблер 80×86 ) следующей простой функции:
Машинный код для звонка: float y = parabel(2.0F);
Машинный код подпрограммы:
В следующем примере показан рукописный код ассемблера для сигнального процессора ADSP-216x от Analog Devices для вызова следующей функции из C:
Определение и техническое применение параметров подпрограммы
Формальные параметры
Пример: объявление подпрограммы в языках программирования PASCAL и Delphi с x и y в качестве формальных параметров:
Формальные параметры здесь x и y являются заполнителями для аргументов или фактических параметров, которые должны передаваться каждый раз, когда они используются.
Фактические параметры или аргументы
Пример: вызов подпрограммы с различными фактическими параметрами:
Подсказка типов
Замените формальные параметры фактическими
Существуют различные методы замены формальных параметров фактическими параметрами во время передачи параметров:
В макросе формальный параметр текстуально заменяется фактическим параметром. Отличие параметров имени в том, что разрешены конфликты имен. Если в фактическом параметре есть переменная, имя которой совпадает с именем локальной переменной, локальная переменная используется для раскрытия макроса.
Современные процедурные языки программирования обычно поддерживают параметры значений и ссылочные параметры, а иногда также параметры значений результатов.
Пример передачи различных параметров
Объяснение: Призывы test не изменять переменные a и b, чтобы переменные сохраняли свое исходное значение после завершения подпрограммы.
Вывод для справочных параметров ( вызов по ссылке )
Вывод для параметров результата значения ( вызов по значению и результат )
Параметры командной строки
Пример: фиктивный вызов программы через командную строку под Windows
В DOS (в традициях OpenVMS ) «/» традиционно используется вместо «-», а значения имен параметров разделяются «=». Оба стиля можно найти в Windows.
Информатика и информационные технологии
© М.Е. Крекин, 1999, 2002
Глава 5
Параметры
Как вы знаете, желательно, чтобы алгоритмы были массовыми. В этой главе вы узнаете, что такое параметры и как можно составлять универсальные процедуры.
это квадрат :а
по
повтори 4 [вп :а пр 90]
пп
конец
Имена переменных образуются точно так же, как имена процедур. Однако, в Лого, чтобы указать, когда мы имеем дело со значением переменной, перед ее именем (без пробела!) ставится двоеточие.
Рассмотрим чуть подробнее, что происходит при исполнении процедуры с параметром. Переменную можно представить в виде ящика, на котором наклеена табличка с именем. В этот ящик может поместиться одно значение. Компьютер в любое время может посмотреть, что там находится, а может и поменять хранящееся значение. Допустим, мы дали команду
В заголовке процедуры после ее имени стоит «:а». Поэтому число 70 компьютер положит в «ящик» с такой «табличкой». Теперь начинается выполнение самой процедуры. Опускается перо, и черепашка начинает выполнять цикл. Встретившись с командой «вп :а», она смотрит, какое значение «лежит в ящике», и подставляет его в эту команду. Само значение переменной при этом не меняется.
Процедура может иметь не один параметр, а несколько. Например:
это прямоугольник :a :b
по
повтори 2 [вп :a пр 90 вп :b пр 90]
пп
конец
Презентация по информатике «Параметры» (8 класс)
Новые аудиокурсы повышения квалификации для педагогов
Слушайте учебный материал в удобное для Вас время в любом месте
откроется в новом окне
Выдаем Удостоверение установленного образца:
Описание презентации по отдельным слайдам:
В описании процедуры или функции задается список формальных параметров. Каждый параметр, описанный в списке формальных параметров, является локальным по отношению к описываемой процедуре или функции и в модуле, связанным с данной процедурой или функцией на него можно ссылаться по его идентификатору. Существует три типа параметров: значение, переменная и нетипизированная переменная. ПАРАМЕТРЫ
1) Группа параметров, перед которыми отсутствует ключевое слово var и за которыми следует тип, является списком параметров- значений. Они характеризуются следующим: 2) Группа параметров, перед которыми следует ключевое слово var и за которыми следует тип, является списком параметров-переменных. 3) Группа параметров, перед которыми стоит ключевое слово var и за которыми не следует тип, является списком нетипизованных параметров-переменных.
Формальный параметр-значение обрабатывается, как локальная по отношению к процедуре или функции переменная, за исключением того, что он получает свое начальное значение из соответствующего фактического параметра при активизации процедуры или функции. Изменения, которые претерпевает формальный параметр-значение, не влияют на значение фактического параметра. Параметры-значения Соответствующее фактическое значение параметра-значения должно быть выражением и его значение не должно иметь файловый тип или какой-либо структурный тип, содержащий в себе файловый тип. Фактический параметр должен иметь тип, совместимый по присваиванию с типом формального параметра-значения. Если параметр имеет строковый тип, то формальный параметр будет иметь атрибут размера, равный 255.
Параметр-переменная используется, когда значение должно передаваться из процедуры или функции вызывающей программе. Параметры-переменные Соответствующий фактический параметр в операторе вызова процедуры или функции должен быть ссылкой на переменную.
Параметры-переменные При активизации процедуры или функции формальный параметр-переменная замещается фактической переменной, любые изменения в значении формального параметра-переменной отражаются на фактическом параметре. Внутри процедуры или функции любая ссылка на формальный параметр-переменную приводит к доступу к самому фактическому параметру.
Параметры-переменные Тип фактического параметра должен совпадать с типом формального параметра-переменной (вы можете обойти это ограничение с помощью нетипизованного параметра-переменной). Если формальный параметр имеет строковой тип, ему присваивается атрибут длины, равный 255, и фактический параметр должен также иметь строковой тип и атрибут длины, равный 255.
Областью действия идентификатора называется часть про- граммы, где он может быть использован. Область действия идентификаторов определяется местом их объявления. Если идентификаторы допускается использовать только в рамках одной процедуры или функции, то такие идентификаторы, как уже говорилось выше, называются локальными, а если действие идентификаторов распространяется на несколько вложенных процедур и/или функций, то такие идентифика- торы называются глобальными. Заметим, что понятие “глобальные” и “локальные” следует понимать относительно по отношению к конкретной процедуре или функции. Область действия идентификаторов при использовании процедур и функций.
В данном примере А0, В0 и С0 будут глобальными для всех процедур и функций, используемых в программе. А1, В1 и С1 будут глобальными для процедур и функций, описанных внутри процедуры Р1 и локальными для самой процедуры Р1. Данные А2, В2 и С2, объявленные в самой внутренней процедуре Р2, будут только локальными.
1. Действуют все идентификаторы, определенные внутри процедуры/функции; 2. Действуют все идентификаторы окружающего контекста, если их имена отличаются от имен, объявленных внутри процедуры/функции; Локальные идентификаторы процедуры/функции во внешнем окружении действовать не будут никогда (при выходе их процедуры/функции компьютеры о них забывает!) В случае совпадения имен глобального и локального идентификаторов действовать будет только внутренний локальный идентификатор. Сформулируем правила определения области действия для идентификаторов процедур и функций:
Если первые три правила поясняются рассмотренным примером, то для пояснений четвертого приведем еще один пример:
Если Вы хотите получить результат, полученный в процедуре/ функции и использовать в программе, то необходимо формальный соответствующий параметр oбъявить как переменную с ключевым словом VAR в списке параметров. При вызове процедуры указывать константы в качестве параметров (в виде чисел или условных обозначений-имен) можно только в том случае, если соответствующий параметр в объявлении процедуры не имеет атрибута VAR, т.е. объявлен как параметр-значение. 3) При вызове процедуры/функции не ставить на место фактических параметров различные выражения. 4) Оформлять подпрограмму как функцию целесообразно только в том случае, если ожидается некоторый результат работы подпрограммы. Если же последовательность команд ориентирована на выполнение некоторого действия или действий, целесообразно оформлять ее как процедуру. И еще несколько правил!
Курс повышения квалификации
Дистанционное обучение как современный формат преподавания
Курс профессиональной переподготовки
Информатика: теория и методика преподавания в образовательной организации
Курс профессиональной переподготовки
Математика и информатика: теория и методика преподавания в образовательной организации
Международная дистанционная олимпиада Осень 2021
Номер материала: ДБ-638289
Не нашли то что искали?
Вам будут интересны эти курсы:
Оставьте свой комментарий
Авторизуйтесь, чтобы задавать вопросы.
Минкультуры предложило создать совет по развитию библиотечного дела
Время чтения: 2 минуты
ВПР начались в колледжах с 15 сентября
Время чтения: 4 минуты
В пяти регионах России протестируют новую систему оплаты труда педагогов
Время чтения: 2 минуты
До конца года построят и отремонтируют более 780 школьных дорог
Время чтения: 1 минута
Около 50% россиян поддерживают использование цифровых технологий в школе
Время чтения: 1 минута
Студент устроил стрельбу в Пермском государственном университете
Время чтения: 1 минута
Подарочные сертификаты
Ответственность за разрешение любых спорных моментов, касающихся самих материалов и их содержания, берут на себя пользователи, разместившие материал на сайте. Однако администрация сайта готова оказать всяческую поддержку в решении любых вопросов, связанных с работой и содержанием сайта. Если Вы заметили, что на данном сайте незаконно используются материалы, сообщите об этом администрации сайта через форму обратной связи.
Все материалы, размещенные на сайте, созданы авторами сайта либо размещены пользователями сайта и представлены на сайте исключительно для ознакомления. Авторские права на материалы принадлежат их законным авторам. Частичное или полное копирование материалов сайта без письменного разрешения администрации сайта запрещено! Мнение администрации может не совпадать с точкой зрения авторов.