Какие виды программ есть в паскале модуль функция

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

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

В простейшем виде модуль выглядит так же как и программа, только в место слова Program пишется слово Unit. Так же как и в обычной программе в модуле могут быть разделы описания переменных, констант, процедур и функций. Так же есть слова begin и end, между которыми находится тело модуля. В конце модуля, после слова end, должна стоять точка. Далее пример простейшего модуля:

Уроки на языке Pascal. Урок 19. Модуль (Unit).

writeln( ‘Привет всем!’ );

writeln( ‘Модуль загрузился.’ );

Название модуля (то что находится после слова Unit) должно совпадать с названием файла, в котором хранится модуль. Расширение такого файла должно быть PAS. После компиляции модуль будет содержаться в файле с расширением PCU.

Для того, что бы подключить модуль к программе и иметь доступ ко всем его процедурам, функциям, константам и переменным используется слово Uses, после которого следует имя нужного модуля. Если необходимо подключить несколько модулей, то их имена перечисляются через запятую. Для того, что бы эти модули автоматически были найдены, они должны находиться в той же папке, что и программа, или в папке Lib, которая находится там же, где и PascalABC.NET. Пример:

Обратите внимание, строчка « writeln(‘Модуль загрузился.’); », находящаяся в теле модуля, никак не вызывается из основной программы, тем не менее она выполняется. Это потому, что тело модуля выполняется при подключении его к программе. Здесь можно произвести какие-либо подготовительные действия, например: загрузить драйвера или определить параметры компьютера. Если вам подобных действий производить не нужно, то тело модуля можно опустить. В таком случае в конце модуля должно просто находиться слово end с точкой. Далее этот же пример, но без тела модуля:

writeln( ‘Привет всем!’ );

Здесь и далее строчка со знаками «равно» будет разделять тексты из различных файлов.

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

writeln( ‘Процедура из модуля. Привет всем!’ );

writeln( ‘Процедура из программы. Привет всем!’ );

Создание модулей на языке Pascal

Процедура из программы. Привет всем!

Процедура из модуля. Привет всем!

Структура модуля, которую мы изучили, называется упрощённым синтаксисом модуля. В учебных целях этого вполне достаточно. Для того, что бы писать свои модули, на первых порах, этого тоже достаточно. Однако на самом деле структура модуля несколько сложнее, и для изучения чужих модулей необходимо знать, как выглядит модуль в полном синтаксисе.

Читайте также:
В какой программе сделать резюме на компьютере

При полном синтаксисе модуля его структура выглядит следующим образом:

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

Раздел интерфейса. В данном разделе следует указывать заголовки всех подпрограмм, а так же имена переменных и констант, которые будут доступны в программе, к которой будет подключен этот модуль. Это очень удобно т.к. при изучении данного модуля вам достаточно будет просмотреть этот раздел. А так как в нём нет описания (реализации) подпрограмм, то он будет не так велик.

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

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

Раздел инициализации. Этот раздел подобен телу модуля в упрощённом синтаксисе. В нём происходит выполнение кода при загрузке модуля.

Раздел финализации. Этот раздел выполняется при закрытии модуля.

Разделы инициализации и финализации можно опустить. При этом в конце модуля должно стоять слово end с точкой.

Перепишем модуль М в полном синтаксисе:

writeln( ‘Процедура из модуля. Привет всем!’ );

Источник: www.dvkuklin.ru

Процедуры, функции и модули в паскале

Процедура — это независимый программный блок (программная единица), выполняющий решение некоторой самостоятельной подзадачи. Процедуры (и функции) размещаются в программе сразу же после описания переменных (в разделе Var) и перед словом Begin, указывающим начало ее основной части, т.е. следующим образом: Program Const Var . . . . . Процедура_1 . . . . . Процедура_n Begin < Начало основной программы >. . . . . . End.

Сама процедура оформляется следующим образом: Procedure Имя(Формальные_параметры); Описание локальных переменных Begin Операторы End; Из этого текста видно, что процедура описывается так же, как программа. Отличие заключается в том, что текст программы заканчивается служебным словом End с точкой, а процедура заканчивается служебным словом End с точкой с запятой после него.

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

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

Процедура, выводящая горизонтальную линию из n одинаковых символов, может быть такой. Procedure GorLine(n : Integer; Sim : char); Var I : Integer; Begin For i := 1 To n Do Write(Sim); End; Здесь n и Sim – формальные параметры, являющиеся входными величинами; i – локальная переменная. Процедуры в программе выполняются не в том порядке, в каком они записаны.

Читайте также:
Mushroom как пользоваться программой

К ним обращаются (их вызывают) из главной программы по имени с указанием фактических параметров. Например: Имя; < если процедура не имеет параметров >или Имя (Фактические_параметры); Обращения к процедуре 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 Описатель Var записывается столько раз, сколько разных типов параметров-переменных используется в процедуре. Параметр-переменная при вызове не может представляться выражением.

Ограничение

Для продолжения скачивания необходимо пройти капчу:

Источник: studfile.net

PASCAL ABC. Модули

PASCAL ABC. Модули

Шумская Лариса

Модули предназначены для разбиения текста программы на несколько файлов. В модулях описываются переменные, константы, типы, классы, процедуры и функции. Для того чтобы эти объекты можно было использовать в вызывающем модуле (которым может быть и основная программа), следует указать имя файла модуля (без расширения .pas) в разделе uses вызывающего модуля. Файл модуля должен находиться либо в том же каталоге, что и основная программа, либо в подкаталоге Units системного каталога программы Pascal ABC.

unit имя модуля;
раздел подключения модулей
раздел описаний
раздел инициализации
раздел финализации
end.

Первая строка обязательна и называется заголовком модуля.

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

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

Раздел инициализации состоит из служебного слова initialization , после которого следуют операторы, разделяемые символом «точка с запятой». Операторы из раздела инициализации модуля выполняются до начала основной программы.

Раздел финализации состоит из служебного слова finalization , после которого следуют операторы, разделяемые символом «точка с запятой». Операторы из раздела финализации модуля выполняются после окончания основной программы.

Раздел финализации может отсутствовать, либо оба раздела инициализации и финализации могут отсутствовать. Раздел инициализации может также начинаться со служебного слова begin , в этом случае раздел финализации отсутствует.

unit Lib;
uses GraphABC;
const Dim=5;
var Colors: array [1..Dim] of integer;
function RandomColor: integer;
begin
Result:=RGB(Random(255),Random(255),Random(255));
end;
procedure FillByRandomColor;
var i: integer;
begin
for i:=1 to Dim do
Colors[i]:=RandomColor;
end;
initialization
FillByRandomColor;
end.

Поскольку система Pascal ABC не создает кода на диске, модули являются по-существу аналогом включаемых файлов. В частности, они компилируются всякий раз при компиляции основной программы. Однако, если при компиляции программы один и тот же модуль подключается в нескольких модулях, то этот модуль компилируется лишь раз.

Циклические ссылки в модулях запрещены. Например, ситуация, когда в в модуле a.pas присутствует строка uses b , а в модуле b.pas — строка uses a , считается ошибочной.

Источник: znanio.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru