Песни о Паскале | страница 65




>procedure Pause (msg : string);


Здесь имя параметра msg назначено нами произвольно (это сокращение от слова message – «сообщение»). Параметр, объявленный в заголовке, называют формальным, он доступен только внутри процедуры, где можно обращаться с ним, как с обычной переменной. Например, вывести на экран, как в нашем случае.


>procedure Pause (msg : string); { объявление процедуры с параметром }

>begin

>      Write(msg); Readln;

>end;


Что касается вызывающей программы, то имя формального параметра ей неизвестно.

Как действует такая процедура? В момент вызова в главной программе формальному параметру msg автоматически присваивается указанное в вызове фактическое значение, – оно и будет напечатано. Повторяю: присвоение формальному параметру фактического значения происходит автоматически, без участия программиста. Теперь наша программа станет такой.


>{ P_19_2 – применение процедуры с параметром }


>var Man : string;

>{--- объявление процедуры с параметром msg ---}

>procedure Pause (msg : string);

>begin

>      Write(msg); Readln;

>end;


>begin       {--- главная программа ---}

>      Writeln(’Как тебя зовут?’); Readln(Man);

>      Writeln(’Здравствуй, ’, Man);

>      Pause(’Нажмите Enter…’);

>      Pause(’Еще раз…’);

>      Pause(’И ещё разок!’);

>end.


Здесь процедура Pause вызвана трижды с тремя разными фактическими параметрами, испытайте эту программу.

Итоги

• С ростом размера программы стремительно растет её сложность. Для упрощения программ их разбивают на процедуры и функции.

• Чтобы создать процедуру или функцию, необходимо поместить в программе её описание, состоящее из заголовка и тела.

• Внутрь процедуры или функции можно передать один или несколько параметров. Для этого в заголовке процедуры объявляют формальные параметры, а при вызове указывают фактические.

• Тип фактического параметра должен совпадать с типом формального параметра, объявленного в процедуре.

А слабо?

А) Напишите ещё одну версию процедуры Pause, выводящую сообщение либо на русском, либо на английском языке. Параметр этой процедуры должен быть булевым и работать она должна так:


>      Pause(true);       { печатается «Нажмите Enter…» }

>      Pause(false); { печатается «Press Enter…» }


Б) Напишите и испытайте процедуру (назовем её Line – «линия»), печатающую строку заданной длины, составленную из звездочек, например:


>      Line(3); { печатает «***» }

>      Line(7); { печатает «*******» }


Подсказка: внутри процедуры надо организовать цикл.

В) Напишите процедуру для очистки экрана, она может пригодиться вам в будущем. Подсказка: можно напечатать несколько десятков пустых строк (не менее 25, что зависит от настройки размера консольного окна).