Рефераты. Основные понятия алгоритмического языка p> {$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] [1,3]

[2] [2,3]

[3] [1,2,3]

Порядок перечисления элементов базового типа в константах безраз- личен.

Значение переменной множественного типа может быть задано конс- трукцией вида [T], где T - переменная базового типа.

К переменным и константам множественного типа применимы операции присваивания(:=), объединения(+), пересечения(*) и вычитания(-):

['A','B'] + ['A','D'] даст ['A','B','D']

['A'] * ['A','B','C'] даст ['A']

['A','B','C'] - ['A','B'] даст ['C'].

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

К множественным величинам применимы операции: тождественность (=), нетождественность (), содержится в (=). Результат выполнения этих операций имеет логический тип, например:

['A','B'] = ['A','C'] даст FALSE

['A','B'] ['A','C'] даст TRUE

['B'] = ['A'] даст FALSE.

Кроме этих операций для работы с величинами множественного типа в языке ПАСКАЛЬ используется операция

in

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

A in ['A', 'B'] даст TRUE,

2 in [1, 3, 6] даст FALSE.

При использовании в программах данных множественного типа выполнение операций происходит над битовыми строками данных. Каждому значению множественного типа в памяти ЭВМ соответствует один двоичный разряд. Например, множество

['A','B','C','D']

представлено в памяти ЭВМ битовой строкой

1 1 1 1.

Подмножества этого множества представлены строками:

['A','B','D'] 1 1 0 1

['B','C'] 0 1 1 0

['D'] 0 0 0 1

Величины множественного типа не могут быть элементами списка вво- да - вывода.

В каждой конкретной реализации транслятора с языка ПАСКАЛЬ коли- чество элементов базового типа, на котором строится множество, огра- ничено. В TURBO PASCAL количество базовых элементов не должно превы- шать 256.

Инициализация величин множественного типа производится с помощью типизированных констант:

const seLit: Set of 'A'..'D'= [];

Проиллюстрируем применение данных множественного типа на примере.

Пример. Составить программу, которая вырабатывает и выводит на эк- ран дисплея наборы случайных чисел для игры в "Спортлото 5 из 36".

Для заполнения каждой карточки спортлото необходимо получить набор из пяти псевдослучайных чисел. К этим числам предъявляются два требо- вания:

-числа должны находиться в диапазоне 1..36;

-числа не должны повторяться.

Program Lotto; var nb, k: Set of 1..36; kol, l, i, n: Integer; begin

Randomize;

WriteLn('ВВЕДИ kol');

ReadLn(kol); nb:=[1..36]; for i:=1 to kol do begin k:=[]; for l:=1 to 5 do begin repeat n:=Random(36) until (n in nb) and not (n in k); k:=k+[n];

Write(n:4) end;

WriteLn end end.

29. З А П И С И

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

Описание записи в языке ПАСКАЛЬ осуществляется с помощью служебного слова RECORD, вслед за которым описываются компоненты за- писи. Завершается описание записи служебным словом END.

Например, записная книжка содержит фамилии, инициалы и номера те- лефона, поэтому отдельную строку в записной книжке удобно представить в виде следующей записи:

Страницы: 1, 2, 3, 4, 5, 6, 7



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.