Информатика. Курс лекций. Громов Ю.Ю - 125 стр.

UptoLike

функция TotalCost выполняется для переданных ей на вход значений Price и TaxRate, после чего полученное значение
умножается на 2.
Функции определяются почти так же, как процедуры. Различие состоит в том, что заголовок функции обычно начинает-
ся с описания типа возвращаемого этой функцией значения, а в теле функции присутствует оператор возврата, операндом
которого является возвращаемое значение.
Операторы ввода/вывода. Процедуры и функции расширяют возможности языков программирования. Если язык не
предусматривает некоторую операцию в качестве предопределенной языковой конструкции, для выполнения этой задачи
можно написать процедуру или функцию, а затем вызвать ее из того программного модуля, где эта операция потребуется.
Подобным же образом во многих языках программирования осуществляются и операции ввода/вывода, но за исключением
того, что вызываемые процедуры и функции в конечном счете представляют собой подпрограммы, выполняемые операци-
онной системой компьютера.
Например, чтобы ввести значение с клавиатуры и присвоить его переменной под именем Value, в языке Pascal необхо-
димо использовать оператор
readln(Value);
Для вывода переменной Value на экран дисплея используется другой оператор:
writeln(Value);
Заметим, что синтаксис этих операторов не отличается от вызова процедуры со списком параметров.
Аналогично в языке С для выполнения операций ввода и вывода предназначены функции scanf и printf, соответ-
ственно. Эти функции используют параметры как для определения вводимых данных, так и для определения вида этих дан-
ных в напечатанном виде. Этот подход называется форматированным вводом и выводом (formatted I/O). Например, чтобы
напечатать в отдельной строке значения переменных Value1 и Value2 в десятичном виде, в языке С можно использовать
следующий оператор:
printf("%d %d \n", Value1, Value2);
Здесь строка в кавычках определяет формат данных, а остальные параметры задают выводимые значения. Каждая пара
символов "%d" определяет позицию, которая должна быть заполнена очередным значением в десятичной нотации, задавае-
мым соответствующим параметром. Пара символов "\n" означает, что после вывода значений следует перейти на новую
строку. Предположим, что значения переменных Age1 и Age2 равны 16 и 25, соответственно, и что выполняется оператор
printf("The ages are %d and %d. \n", Agel, Age2);
В этом случае на экран дисплея будет выведено следующее сообщение:
The ages are 16 and 25
Поскольку языки C++ и Java являются объектно-ориентированными, они трактуют операции ввода/вывода как передачу
данных от объекта к объекту. В частности, в язык C++ встроены готовые объекты с именами cin и cout, предназначенные
для представления стандартных устройств ввода (возможно, клавиатуры) и вывода (возможно, экрана дисплея), соответст-
венно. Данные, которые вводятся с клавиатуры или выводятся на экран дисплея, передаются этим объектам или поступают
от них в виде сообщений. Например, с помощью следующего оператора можно ввести с клавиатуры некоторое значение и
присвоить его переменной Value:
cin >> Value;
Для того чтобы вывести значение переменной Value на экран, следует послать его на устройство вывода с помощью сле-
дующего оператора:
cout << Value;
Вопросы для самопроверки
1. Чем отличаются локальные переменные от глобальных?
2. Чем отличается процедура от функции?
3. Почему многие языки программирования реализуют операторы ввода/вывода так, будто они представляют собой вы-
зов процедуры?
4. Чем отличаются формальные параметры от фактических?
5.4. РЕАЛИЗАЦИЯ ЯЗЫКА
В этом разделе мы познакомимся с процессом перевода программы с языка высокого уровня в такую форму, которая
может быть выполнена машиной.