Реферат: Основные понятия алгоритмического языка
определить функциональный или процедурный тип без параметров, напри-
мер:
type
Proc = Procedure;
После объявления процедурного или функционального типа его можно
использовать для описания формальных параметров - имен процедур и
функций.
Кроме того, необходимо написать те реальные процедуры или функции,
имена которых будут передаваться как фактические параметры. Эти про-
цедуры и функции должны компилироваться в режиме дальней адресации с
ключом {$F+}.
Пример. Составить программу для вычисления определенного интеграла
tk
2t
I= S--------------- dt
sqrt(1-sin2t)
tn
по методу Симпсона. Вычисление подинтегральной функции реализовать с
помощью функции, имя которой передается как параметр. Значение опре-
деленного интеграла по формуле Симпсона вычисляется по формуле:
ISimps=2*h/3*(0.5*F(A)+2*F(A+h)+F(A+2*h)+2*F(A+3*h)+...
+2*F(B-h)+0.5*F(B))
где A и B - нижняя и верхняя границы интервала интегрирования,
N - число разбиений интервала интегрирования,
h=(B-A)/N, причем N должно быть четным.
Program INTEGRAL;
type
Func= function(x: Real): Real;
var
I,TN,TK:Real;
N:Integer;
{$F+}
Function Q(t: Real): Real;
begin
Q:=2*t/Sqrt(1-Sin(2*t));
end;
{$F-}
Procedure Simps(F:Func; a,b:Real; N:Integer; var INT:Real);
var
sum, h: Real;
j:Integer;
begin
if Odd(N) then N:=N+1;
h:=(b-a)/N;
sum:=0.5*(F(a)+F(b));
for j:=1 to N-1 do
sum:=sum+(j mod 2+1)*F(a+j*h);
INT:=2*h*sum/3
end;
begin
WriteLn(' ВВЕДИ TN,TK,N');
Read(TN,TK,N);
Simps(Q,TN,TK,N,I);
WriteLn('I=',I:8:3)
end.
{}
26. О П Е Р А Т О Р Ы В Ы Х О Д А
Для завершения работы программ, процедур и функций без предвари-
тельного перехода по меткам к закрывающему end в TURBO PASCAL введены
процедуры Exit и Halt.
Вызов Exit завершает работу своего программного блока и передает
управление вызывающей программе. Если Exit выполняется в подпрограм-
ме, то выполнение этой подпрограммы прекратится, и далее будет выпол-
няться следующий за вызовом этой подпрограммы оператор. Если Exit вы-
полняется в основной программе, выход из нее будет эквивалентен ее
нормальному завершению.
Вызов процедуры Halt, где бы она не находилась, завершает работу
программы и передает управление операционной системе.
Процедура Halt имеет структуру Halt(n), где n - код возврата, ко-
торый может быть проанализирован операционной системой с помощью ко-
манды IF ERRORLEVEL. Значение n=0 соответствует нормальному заверше-
нию работы программы. Вызов процедуры Halt без параметра эквивалентен
вызову Halt(0).
27. М О Д У Л И
Модуль (UNIT) в TURBO PASCAL - это особым образом оформленная биб-
лиотека подпрограмм. Модуль в отличие от программы не может быть за-
пущен на выполнение самостоятельно, он может только участвовать в
построении программ и других модулей.
Модули позволяют создавать личные библиотеки процедур и функций и
строить программы практически любого размера.
Модуль в TURBO PASCAL представляет собой отдельно хранимую и неза-
висимо компилируемую программную единицу.
В общем случае модуль - это совокупность программных ресурсов,
предназначенных для использования другими программами. Под программ-
ными ресурсами понимаются любые элементы языка TURBO PASCAL: констан-
ты, типы, переменные, подпрограммы. Модуль сам по себе не является
выполняемой программой, его элементы используются другими программны-
ми единицами.
Все программные элементы модуля можно разбить на две части:
- программные элементы, предназначенные для использования другими
программами или модулями, такие элементы называют видимыми вне моду-
ля;
- программные элементы, необходимые только для работы самого моду-
ля, их называют невидимыми или скрытыми.
В соответствии с этим модуль, кроме заголовка, содержит две основ-
ные части, называемые интерфейсом и реализацией.
В общем случае модуль имеет следующую структуру:
unit <имя модуля>; {заголовок модуля}
interface
{ описание видимых программных элементов модуля }
{ описание скрытых программных элементов модуля }
begin
{ операторы инициализации элементов модуля }
end.
В частном случае модуль может не содержать части реализации и час-
ти инициализации, тогда структура модуля будет такой:
unit <имя модуля>; {заголовок модуля}
interface
{ описание видимых программных элементов модуля }
implementation
end.
Использование в модулях процедур и функций имеет свои особенности.
Заголовок подпрограммы содержит все сведения, необходимые для ее вы-
зова: имя, перечень и тип параметров, тип результата для функций, эта
информация должна быть доступна для других программ и модулей. С дру-
гой стороны, текст подпрограммы, реализующий ее алгоритм, другими
программами и модулями не может быть использован. Поэтому заголовок
процедур и функций помещают в интерфейсную часть модуля, а текст - в
часть реализации.
Интерфейсная часть модуля содержит только видимые (доступные для
других программ и модулей) заголовки процедур и функций (без служеб-
ного слова forward). Полный текст процедуры или функции помещают в
часть реализации, причем заголовок может не содержать список формаль-
ных параметров.
Исходный текст модуля должен быть откомпилирован с помощью дирек-
тивы Make подменю Compile и записан на диск. Результатом компиляции
модуля является файл с расширением .TPU (Turbo Pascal Unit). Основное
имя модуля берется из заголовка модуля.
Для подключения модуля к программе необходимо указать его имя в
разделе описания модулей, например:
uses CRT, Graph;
В том случае, если имена переменных в интерфейсной части модуля и
в программе, использующей этот модуль, совпадают, обращение будет
происходить к переменной, описанной в программе. Для обращения к пе-
ременной, описанной в модуле, необходимо применить составное имя,
состоящее из имени модуля и имени переменной, разделенных точкой.
Например, пусть имеется модуль, в котором описана переменная К:
unit M;
interface
var K: Integer;
implementation
.................
end.
Пусть программа, использующая этот модуль, также содержит перемен-
ную К:
Program P;
uses M;
var K: Char;
begin
.............
end.
Для того, чтобы в программе P иметь доступ к переменной K из моду-
ля M, необходимо задать составное имя M.K.
Использование составных имен применяется не только к именам пере-
менных, а ко всем именам, описанным в интерфейсной части модуля.
Рекурсивное использование модулей запрещено.
Если в модуле имеется раздел инициализации, то операторы из этого
раздела будут выполнены перед началом выполнения программы, в которой
используется этот модуль.
28. М Н О Ж Е С Т В А
Понятие множества в языке ПАСКАЛЬ основывается на математическом
представлении о множествах: это ограниченная совокупность различных
элементов. Для построения конкретного множественного типа использует-
ся перечисляемый или интервальный тип данных. Тип элементов, состав-
ляющих множество, называется базовым типом.
Множественный тип описывается с помощью служебных слов Set of,
например:
type M= Set of B;
Здесь М - множественный тип, В - базовый тип.
Пример описания переменной множественного типа:
type
M= Set of 'A'..'D';
var
MS: M;
Принадлежность переменных к множественному типу может быть опреде-
лена прямо в разделе описания переменных:
var
C: Set of 0..7;
Константы множественного типа записываются в виде заключенной в
квадратные скобки последовательности элементов или интервалов базово-
го типа, разделенных запятыми, например:
['A', 'C'] [0, 2, 7] [3, 7, 11..14].
Константа вида
[ ]
означает пустое подмножество.
Множество включает в себя набор элементов базового типа, все подм-
ножества данного множества, а также пустое подмножество. Если базовый
тип, на котором строится множество, имеет К элементов, то число подм-
ножеств, входящих в это множество, равно 2 в степени К. Пусть имеется
переменная Р интервального типа:
var P: 1..3;
Эта переменная может принимать три различных значения - либо 1,
либо 2, либо 3. Переменная Т множественного типа
var T: Set of 1..3;
может принимать восемь различных значений:
[ ] [1,2]
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12