Классификация способов передачи параметров в подпрограмму

Существует два способа передачи параметров. До текущего момента мы использовали только один способ — передача по значению (англ. by value). Смысл этого способа в том, что мы передаём подпрограмме конкретное значение — число, текст, логическое значение и т.д. Подпрограмма каким-либо образом использует это значение. При этом, из внешней программы передавать эти параметры можно было как явным указанием значения (например, указав число прямо в коде программы), так и передавая переменную или константу — использовалось соответствующее значение переменной / константы.

Но такой способ не всегда удобен. Более того, в случае, если подпрограмма должна вычислить сразу несколько значений, этот способ не принесёт успеха. Именно поэтому существует другой способ передачи параметров — передача по ссылке (англ. by reference). Смысл этого способа в том, что мы передаём не конкретное значение, а ячейку памяти, т.е. переменную. В чём же отличие? А отличие в том, что подпрограмма уже может работать с этой переменной, т.е. не только получать её значение, но и это значение менять! Получается, что мы берём переменную из основной программы, отдаём её подпрограмме, та, в свою очередь, производит какие-то манипуляции с ней, и в результате наша переменная получает новое значение и мы можем далее её использовать. Несложно догадаться, что такой подход позволит подпрограмме отдавать сразу несколько значений (причём не обязательно одного типа).

Для передачи по значению никаких изменений в подпрограмму вносить не нужно — это способ передачи по умолчанию. А вот для передачи по ссылке нужно всего лишь в описании подпрограммы добавить слово var перед нужными параметрами.

Параметры – значения

Если в качестве формального параметра указана переменная, то такой параметр и есть параметр-значение. Примерами таких параметров служат параметры a, b и с в процедуре sq:

procedure sq((a, b, c: real; var x1, x2: real);В этом случае фактическим параметром, соответствующим a либо bлибо c, может быть любое выражение соответствующего типа, в частности, константа.

Например, обратиться к sq можно так:

sq((25./3 + 2) * 2, -1.5, (8.2 – 3.1) / 3, x1, x2);Для параметров-значений машина при вызове процедур производит следующие действия: выделяет место в памяти для каждого формального параметра, вычисляет значение фактического параметра и записывает его в ячейку, соответствующую формальному параметру.Если фактический параметр есть имя переменной, например, r, то значение этой переменной пересылается в соответствующий формальный параметр, например, a. На этом всякая связь между a и r обрывается.Если даже фактический и формальный параметры одинаково обозначены, в памяти ЭВМ эти параметры занимают разные ячейки. Это полезно знать, чтобы не допустить распространенной среди начинающих программистов ошибки – пытаться передать информацию из процедуры в вызывающую программу через параметр-значение.

Параметр-переменная

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

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

Примечание: Файловый тип может передаваться только, как параметр-переменная.

28) Строка, она же текст — это набор символов, любая их последовательность. Соответственно, один символ — это тоже строка, тоже текст. Текстовая строка имеет определённую длину. Длина строки — это количество символов, которые она содержит. Если один символ занимает 1 байт, то строка из N символов занимает соответственно N байт.

Операции со строками : 1)сложение строк, 2) нумерация строк

Клавиша редактирования Описание
Backsрасе Удаляет последний введенный символ.
Esс Удаляет всю вводимую строку
Enter Прекращает ввод строки и записывает метку конца строки в буфере
Ctrl+S Действует также, как Backspace
Ctrl+D Извлекает один символ из последней вводимой строки и выводит его на экран
Сtrl+F Восстанавливает на экране последнюю вводимую строку
Ctrl+Z Завершает ввод строки и генерирует символ конца файла
Сtrl-Z Генерирует символ конца файла и завершает строку ввода

Ввод строк:

Процедуры и функции со строковым типом данных:1) нахождение длины строки2) нахождение подстроки в строке3) Удаление части строки4) Копирование(извлечение)части строки5) Вставка подстроки в строку

Уроки по С++. Урок 53. Способы передачи параметров в функцию


Похожие статьи.

Понравилась статья? Поделиться с друзьями: