русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Процедуры


Дата добавления: 2014-11-27; просмотров: 786; Нарушение авторских прав


 

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

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

Program

Const

Var

. . . . .

Процедура_1

. . . . .

Процедура_n

Begin { Начало основной программы }

. . . . . .

End.

Сама процедура оформляется следующим образом:

 

Procedure Имя(Формальные_параметры);{заголовок процедуры}

Описание локальных переменных

Begin

Операторы <= Тело процедуры

End;

Из этого текста видно, что процедура описывается так же, как программа. Отличие заключается в том, что текст программы заканчивается служебным словом End сточкой, а процедура заканчивается служебным словом End с точкой с запятой после него. Поэтому саму Паскаль-программу можно считать главной процедурой.

 

Формальные параметры – это список, который содержит имена переменных, массивов и типов, являющихся исходными данными и результатами процедуры. Он может отсутствовать. Элементы списка параметров описываются полностью, с указанием типов.

Локальные переменные — это переменные, которые используются только внутри данной процедуры.

На вход процедуры (в качестве исходных данных) поступает совокупность параметров – аргументов, а на выходе формируются параметры – результаты. Причем процедура позволяет получить один или несколько результатов, а функция — только один.

 

Пример. Процедура, выводящая горизонтальную линию из n одинаковых символов, может быть такой.

 

Procedure GorLine(n : Integer; Sim : char);

{Изображение горизонтальной линии символом Sim}

Var

I : Integer;

Begin



For i := 1 To n Do

Write(Sim);

End;

 

Здесь n и Sim– формальные параметры, являющиеся входными величинами;

i – локальная переменная.

Процедуры в программе выполняются не в том порядке, в каком они записаны. К ним обращаются (их вызывают) из главной программы по имени с указанием фактических параметров.

Например:

Имя; { если процедура не имеет параметров } или

Имя (Фактические_параметры);{если процедура с параметрами}

Обращения к процедуре GorLine возможны в следующих формах:

GorLine(25);

GorLine(WhereX + 10);

После выполнения процедуры происходит возврат в основную программу к оператору, стоящему после вызывающего (см. рис. 2.9).

 


Пример. Пусть в массиве Dan имеются 20 значений целого типа (1≤ Dan[i] ≤75), которые нужно представить в виде гистограммы (графика, представляемого столбцами символов). Значения элементов массива можно получить с помощью генератора случайных чисел. Для простоты примем, что ось Y располагается вдоль экрана.

При составлении программы воспользуемся ранее написанной процедурой GorLine. Столбцы графика будем изображать символом "*" (звездочка).

 

Program Graf1;

Const

N = 20;

Var

Dan : Array[1..N] of Integer;

K,I : Integer;

 

Procedure GorLine(n : Integer; Sim : char);

Var

I : Integer;

Begin



For i := 1 To n Do

Write(Sim);

End; { GorLine }

 

Begin { Основная программа }

Randomize;{Инициализация генератора случайных чисел}

For I :=1 To N Do { Заполнение массива }

Dan[I] := Random(75)+1; { случайными числами }

For I :=1 To N Do

Begin



K := Dan[i];

GorLine(K, ’*’);

WriteLn;

End;

WriteLn(’Нажмите ENTER’);

ReadLn;

End.

Здесь N — формальный параметр (в процедуре),

K — фактический (в основной программе).

 

Различие между формальными и фактическими параметрами такое же, как между символами в общей формуле для нахождения корней квадратного уравнения и значениями, которые подставляются в эту формулу при решении конкретного уравнения. Другими словами, формальные параметры – это просто объекты, которые позволяют описать, что будет делать процедура. Сами действия будут выполняться над теми значениями объектов, которые передаются процедуре при ее вызове. Поэтому при вызове процедуры должны соблюдаться следующие требования:

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

– порядок следования фактических параметров и их типы должны соответствовать порядку следования и типам формальных параметров. Это, в частности означает, что массивы должны иметь одинаковую размерность и содержать данные одного типа.

 

Пример.Пусть в программе описана процедура P1 так, как это показано ниже.

 

Procedure P1(X,Y,Z:Real;K:Integer);

. . . . . . .

Begin



{ Тело процедуры }

End;

. . . . . . .

Begin { Основная программа }

. . . . .

P1(A,B,C,N); { Вызов процедуры P1}

. . . . .

End.

 
 

При вызове процедуры P1 будет установлено следующее соответствие между фактическими и формальными параметрами:

Для обеспечения соответствия массивов и некоторых других типов данных (записей, файлов) стандарт языка Паскаль требует их описания в разделе Type. Типы, определяемые таким образом, имеют тот же статус, что и стандартные: Real, Integer и др. Описатель типов в программе располагается после описания констант и перед описанием переменных. В общем виде типы пользователя описываются так.

Type

Имя_типа_1=описание этого типа;

Имя_типа_2=описание этого типа;

. . . . . .

Пример.

Const

Nmax = 10;

Mmax = 100;

Type

MasInt =Array[1.. Nmax,1.. Nmax] of Integer;

MasStr =Array[1.. Mmax] of String;

 

Параметры процедур делятся на 2 класса:

1) параметры–значения;

2) параметры–переменные.

Параметр–значение используется в процедуре, но после окончания ее работы не изменяется. Как правило, это аргумент (исходное данное) процедуры.

Так, в процедуре GorLine параметры n, Sim, а в Р1 – все 4 параметра являются параметрами–значениями. При обращении к процедуре Р1 значения фактических параметров A, B, C, N присваиваются соответствующим формальным параметрам X, Y, Z, K. Поэтому, если в ней был, например, оператор Z:=Z+1, то изменится именно значение Z, а переменная A - нет. Другими словами, после завершения работы процедуры все переданные ей параметры–значения в главной программе не меняются.

Если формальный параметр является параметром–значением, то фактический параметр может быть выражением соответствующего типа, например:

 

GorLine (20,’+’);

GorLine (2*K-1, Pred(Simvol));

Параметр–переменная не только используется в процедуре, но и позволяет изменять значение соответствующего фактического параметра. Это – результат работы процедуры. При вызове процедура получает доступ к области памяти, в которой хранится значение фактического параметра, соответствующего параметру–переменной. Таким образом, обеспечивается возможность изменения этого фактического параметра.

В заголовке параметру-переменной должен предшествовать описатель (слово) Var.

 

Пример.

Procedure SumXY(X,Y:Real;Var Z,Q:Real);

Begin



Z:=X+Y;

If Z<0 Then

Q := -Z

Else

Q := Z;

End; { SumXY }

 

Описатель Var записывается столько раз, сколько разных типов параметров-переменных используется в процедуре. Параметр-переменная при вызове не может представляться выражением.

 

Пример программы с процедурой

Задача. Выполнить упорядочение по возрастанию нескольких массивов вещественных чисел. В программе используется процедура сортировки методом «пузырька», алгоритм которой описан ранее.

 

Исходными данными для процедуры являются массив вещественных чисел и его размерность. Стандарт языка Паскаль, как отмечалось выше, требует описания массива в разделе Type (в программе это новый тип - MasReal). При использовании процедуры сортировки для согласования параметров необходимо в основной программе и процедуре ссылаться только на этот тип.

 

Program Sort;

Const

M = 200; { Максимальный размер массива }

Type

MasReal = Array [1..M] Of Real;

Var

A,B : MasReal;

I,N : Integer;

Procedure SortY (L:Integer; Var Y:MasReal);

{ Сортировка вещественных чисел методом "пузырька" }

{ L – размер массива; Y – массив вещественных чисел}

Var

i,k : Integer;

Z : Real;

Begin



For k:=1 To L-1 Do

For i:=1 To L-k Do

If Y[i]>Y[i+1]Then

Begin



Z := Y[i];

Y[i] := Y[i+1];

Y[i+1] := Z

End;

End; { SortY }

 

Begin {Основная программа}

Writeln(’ Введите размер массивов’);

ReadLn(n);

Writeln(’Введите первый массив’);

For i : =1 To n Do

ReadLn(A[i]);

Writeln (’Введите второй массив’);

For i := 1 To n Do

ReadLn(B[i]);

SortY (n,A); { Сортировка массива А }

SortY (n,B); { Сортировка массива В }

Writeln (’Первый массив’);

For i := 1 To n Do

Write (A[i]:8:3);

Writeln;

Writeln (’Второй массив’);

For i := 1 To n Do

Write(B[i]:8:3);

Readln; { Ожидание нажатия клавиши ENTER }

End.

 



<== предыдущая лекция | следующая лекция ==>
ПРОЦЕДУРЫ, ФУНКЦИИ И МОДУЛИ В ПАСКАЛЕ | Расположение процедур в программе


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 1.604 сек.