Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Паскаль / spravochnictp7 / Справочник по Турбо Паскалю 7.0.rtf
Скачиваний:
93
Добавлен:
10.12.2013
Размер:
821.03 Кб
Скачать

2.3.7. Функции и процедуры пользователя

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

СписокФормальныхПараметров – имена и типы формальных параметровПараметр1:ИмяТипа1; Параметр2:ИмяТипа2; ПараметрN:ИмяТипаN ;

- аналогичен разделу переменных. Слово Var перед формальным параметром указывает на то, что подпрограмма при выходе из нее передаст новое значение этого фактического параметра блоку с вызовом подпрограммы.

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

  • Количество, типы и порядок написания формальных параметров в заголовке подпрограммы и фактических параметров в обращении к подпрограмме должны совпадать. Подпрограмма может не иметь ни одного формального параметра.

  • Обмен данными между вызывающей программой и подпрограммой происходит не только через параметры подпрограммы, но и через глобальные данные. Локальные данные имеют смысл только внутри самой подпрограммы. См. также гл. 2.3.4.

  • Отличие функции от процедуры: а) функция возвращает единственное значение; б) в заголовке функции обязательно указание типа ее; с) в разделе операторов функции нужен оператор присваивания с именем функции в левой части;d) функция может быть операндом в выражении соответствующего типа.

  • Досрочный выход из подпрограммы – процедура exit, из программы – halt.

23

2.4. Операторы

2.4.1. Последовательные структуры Присваивание

Оператор присваивания ИмяПеременной Выражение ;

Оператор позволяет присвоить переменной, стоящей слева от знака присваивания (‘’), новое значение, заменив текущее значение её новым значением, которое задается выражением, стоящим справа от знака ‘’.

  • В левой части оператора может стоять элемент структуры данных, элемент строки или имя функции.

  • Тип выражения, стоящего в правой части оператора присваивания, должен быть совместимым с типом переменной, стоящей в левой части оператора.

  • Значение выражения вещественного типа не может быть присвоено переменной целого типа, наоборот - можно.

Ввод и вывод данных

READ, READLN операторы вызова процедур ввода данных,

WRITE, WRITELNоператоры вызова процедур вывода данных.

Отличие READLN / WRITELN от READ / WRITE в том, что после выполнения оператора курсор переводится в начало следующей строки.

read(СписокВвода); - вызов процедуры ввода данных с клавиатуры,

СписокВвода – объекты ввода (имена переменных числового, символьного типа, строки), разделенные запятыми.

  • Количество и типы вводимых значений должны соответствовать переменным в списке ввода; разделитель значений переменных - символ-пробел, конец ввода - символ конца строки (клавиша [Enter]).

  • Данные типа string следует вводить с использованием оператора readln.

write(СписокВывода); - вызов процедуры вывода данных на экран,

СписокВывода – объекты вывода (имена переменных, выражения, константы) числового, логического, символьного или строкового типов, разделенные запятыми. Форматный вывод заключается в указании:

  • одного параметра - ширины поля вывода N для вещественных чисел с плавающей точкой, целых чисел, символов и строк - write(X:N);

  • ширины всего поля вывода N, включая точку-разделитель, и дробной части M для данных вещественного типа с фиксированной точкой - write(X:N:M);

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

  • Пример:

const b FALSE; var x,y : byte;

write (‘123456’);

writeln (‘7890’);

write (‘c новой строки’:15, ‘ ’, b);

writeln ; { перейти на новую строку }

Экран вывода

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

1234567890

c новой строки FALSE

Введите целые числа<=99: 16 82

16 + 82 = 98

3.1415926536E+00 3.1E+003 3.1416

write (‘Введите целые числа<=99: ’);

readln (x, y);

writeln (x:2, ‘ ’, y:3, ‘ =’, x y:4);

write (pi, ‘ ’:4, pi:5, ‘ ’, pi:7:4);