Песни о Паскале | страница 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, что зависит от настройки размера консольного окна).