Подпрограммы. Процедуры без параметров (Turbo Pascal 7.0)

Лекции по предмету «Программирование»
Информация о работе
  • Тема: Подпрограммы. Процедуры без параметров (Turbo Pascal 7.0)
  • Количество скачиваний: 1
  • Тип: Лекции
  • Предмет: Программирование
  • Количество страниц: 4
  • Язык работы: Русский язык
  • Дата загрузки: 2014-05-19 18:26:11
  • Размер файла: 17.29 кб
Помогла работа? Поделись ссылкой
Информация о документе

Документ предоставляется как есть, мы не несем ответственности, за правильность представленной в нём информации. Используя информацию для подготовки своей работы необходимо помнить, что текст работы может быть устаревшим, работа может не пройти проверку на заимствования.

Если Вы являетесь автором текста представленного на данной странице и не хотите чтобы он был размешён на нашем сайте напишите об этом перейдя по ссылке: «Правообладателям»

Можно ли скачать документ с работой

Да, скачать документ можно бесплатно, без регистрации перейдя по ссылке:

Подпрограммы.

Процедуры без параметров

В практике программирования часто встречаются ситуации, когда по ходу выполнения программы приходится производить одни и те же вычисления или действия. Чтобы исключить повторение одинаковых записей и сделать тем самым программу проще и понятнее, можно выделить эти повторяющиеся фрагменты в самостоятельную часть программы, которая может быть использована многократно по мере необходимости. Такая автономная часть программы, реализующая определённый алгоритм и допускающая обращение к ней из различных частей программы, называется подпрограммой. Использование подпрограмм позволяет реализовать один из самых прогрессивных методов программирования - структурное программирование. Язык программирования Turbo Pascal 7.0, даже в сравнении с другими промышленными системами программирования, обладает очень мощными средствами для работы с подпрограммами.
Описание процедур без параметров.
Как вы уже знаете, в структуре Pascal-программы предусмотрен специальный раздел для описания подпрограмм - раздел описания процедур и функций. Именно в этом разделе производится описание подпрограмм. Структура любой подпрограммы почти буквально повторяет структуру всей Pascal-программы, и выглядит следующим образом:
Procedure <имя процедуры>;
Uses <имена модулей>;
Label <имена меток>;
Const <имена констант>;
Type <имена типов пользователя>;
Var <имена локальных переменных>;
<раздел объявления подпрограмм>;
Begin
<операторы>;
End;
Отличия Pascal-программ от подпрограмм.
Единственным отличием процедуры без параметров от Pascal-программы состоит в названии заголовка, которое начинается не служебным словом Program, а служебным словом Procedure. Наличие заголовка процедуры обязательно, в отличии от наличия заголовка программы, который может быть опущен. Кроме того любая подпрограмма заканчивается служебным словом End и точкой с запятой, в отличии от End с точкой в Pascal-программе.
Вызов процедур без параметров.
Вызов процедуры без параметров осуществляется по имени данной процедуры в теле программы. Имя процедуры воспринимается как оператор. При выполнении этого оператора выполняется вся подпрограмма.
Вложенность подпрограмм.
Допускается использование в одной программе сразу нескольких подпрограмм. Кроме использования одновременно нескольких подпрограмм Pascal-программа допускает использование вложенных подпрограмм. То есть каждая подпрограма может содержать в себе описание других подпрограмм, которые являются таким образом подпрограммами подпрограмм. Эти подпрограммы, в свою очередь, тоже могут содержать описание своих подпрограмм и так далее.
Область доступности переменных (объектов).
Структура подпрограмм (блоков) Pascal-программ достаточно традиционна для многих языков и требует определённой дисциплины для доступа к объектам (например переменным, константам, типам пользователя), описанным в различных блоках. Эту дисциплину можно сформулировать в виде следующих правил:
1. Имена объектов, описанных в некотором блоке, считаются известными в пределах данного блока, ВКЛЮЧАЯ и все вложенные блоки.
2. Имена объектов, описанных в блоке, должны быть уникальны в пределах данного блока и могут совпадать с именами объектов из других блоков.
3. Если в некотором блоке описан объект, имя которого совпадает с именем объекта, описанного в объемлющем блоке, то это последнее имя становится недоступным в данном блоке.
Говорят, что имя, описанное в блоке, экранирует (закрывает, делает недоступным) одноимённые объекты из блоков, объемлющих данный.
Возвращаясь к предыдущей схеме, можно сказать, что объекты описанные в блоке B, известны (видимы), кроме самого блока B, ещё и в блоках D и E. Имена из блоков C, D, E известны только в пределах соответствующих блоков. Наконец, имена объектов из самого внешнего блока A (то есть блока, соответствующего программе в целом) известны во всех вложенных блоках.
Общий вид Pascal-программы с использованием подпрограмм.
Схематически Pascal-программа содержащая подпрограммы может выглядеть следующим образом:
PROGRAM <главная программа А>;

procedure <подпрограмма B>;

procedure <подпрограмма D>;
begin
<операторы подпрограммы D>;
end;

begin
<операторы подпрограммы B>;
end;

BEGIN
<операторы главной программы A>;
END.
Примеры использования процедур без параметров.
Программа, текст которой приведён ниже, выполняет рисование 15 прямоугольных треугольников расположенных горизонтально. Рисование прямоугольного треугольника оформлено в виде процедуры TRG. Треугольник рисуется от текущего указателя, который является правым нижним углом данного треугольника.
PROGRAM ex_25_1;
USES Graph,Crt;
VAR
gd,gm,i: integer;

procedure TRG;
begin
linerel(40,0);
linerel(-40,-40);
linerel(0,40);
end;

BEGIN
gd:=vga;
gm:=vgahi;
Initgraph(gd,gm,);
if Graphresult=grok then
begin
MoveTo(10,200);
for i:=1 to 15 do begin MoveRel(45,0); TRG; end;
Repeat Until KeyPressed;
end;
END.
Для того, чтобы нарисовать линию из 15 разноцветных треугольников можно немного изменить процедуру рисования треугольников.
procedure TRG2;
begin
setcolor(i);
linerel(40,0);
linerel(-40,-40);
linerel(0,40);
end;
Как вы заметили, переменная i, которая используется для изменения цвета рисования, в процедуре TRG2 не объявлена. Она объявлена в главной программе и доступна (видима) в любой её подпрограмме, в том числе и в процедуре TRG2. Такие переменные называются глобальными.
Переменные можно объявлять и внутри подпрограммы. Но в этом случае, переменная объявленная внутри подпрограммы будет доступна только внутри этой подпрограммы. Такие переменные называются локальными переменными. Ниже приведён пример нашей процедуры рисования прямоугольного треугольника с разноцветными сторонами, с использованием локальной переменной j.
procedure TRG3;
var j: integer;
begin
j:=12; setcolor(j); linerel(40,0);
j:=succ(j); setcolor(j); linerel(-40,-40);
j:=succ(j); setcolor(j); linerel(0,40);
end;
Пример программы с вложенными процедурами.
Программа ex_25_2, рисует сетку состоящую из разноцветных прямоугольных треугольников. Процедура LineTrg предназначна для рисования линии из треугольников, начиная от текущего положения указателя. Она содержит в качестве подпрограммы уже знакомую вам процедуру TRG.
PROGRAM ex_25_2;
USES Graph,Crt;
VAR
gd,gm,i: integer;

procedure LineTrg;
var k: integer;

procedure TRG;
begin
linerel(40,0);
linerel(-40,-40);
linerel(0,40);
end;

begin
for k:=1 to 10 do begin setcolor(i+k); moverel(45,0); trg; end;
end;

BEGIN
gd:=vga;
gm:=vgahi;
Initgraph(gd,gm,);
if Graphresult=grok then
begin
MoveTo(10,50);
for i:=1 to 9 do begin LineTrg; MoveRel(-450,50); end;
Repeat Until KeyPressed;
end;
END.
Преиму