Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Основной текст

.pdf
Скачиваний:
10
Добавлен:
28.03.2015
Размер:
2.42 Mб
Скачать
Арифметические встроенные функции
Назначение
2 вычисление абсолютного значения X вычисление квадрата X (X • X) вычисление синуса X
Логические операции

Т а б л и ц а 7.1

Операция

Пример

Значение A

Значение В

 

Результат

 

Название

not

 

not A

true

 

 

 

 

false

 

 

логическое

 

false

 

 

 

 

true

 

 

отрицание

 

 

 

 

 

 

 

 

 

 

 

 

 

 

true

 

true

 

true

 

 

 

and

 

A and В

true

 

false

 

false

 

 

логическое

 

false

 

true

 

false

 

 

И

 

 

 

 

 

 

 

 

 

 

 

 

false

 

false

 

false

 

 

У

 

 

 

 

true

 

true

 

true

 

 

 

 

 

 

true

 

false

 

true

 

 

or

 

A or В

 

 

 

 

логическое

 

false

 

true

 

true

 

 

Или

 

 

 

 

 

 

 

 

 

 

 

 

false

 

false

 

false

Т

 

 

 

 

 

 

 

 

 

 

 

 

 

true

 

true

 

false

 

 

 

 

 

 

 

true

 

false

 

Н

 

xor

 

A xor В

 

 

true

 

исключаемое

 

false

 

true

Бtrue

 

 

Или

 

 

 

 

 

 

 

 

 

 

 

false

 

false

 

false

 

 

 

Операции And, Or, Xor -

 

 

й

 

 

унарная. При-

 

 

, операция Not -

 

оритет операций в порядке убывания:иNot, And, Or, Xor. Приоритет

логических операций выше приоритета операций отношения.

Стандартные

функции.бинарные

 

 

 

 

 

 

 

 

 

 

о

 

 

 

 

 

 

 

Наиболее часто используемые функции TURBO-PASCAL приве-

дены в табл. 7.4. Необходимот

отметить, что в тригонометрических

функциях синуса икосинуса аргумент должен быть задан только в

радианах. Если аргумент задан в градусах, для перевода его в ра-

 

 

 

з

 

 

 

 

 

 

 

 

дианы используется формула

 

 

 

 

 

 

 

 

 

 

о

Y = X • л /180.

 

 

 

 

 

 

п

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Т а б л и ц а 7.4

е

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Р

 

 

 

 

 

 

 

 

 

 

 

 

Функция

1

Abs(X)

Sqr(X)

Sin(X)

60

7.3. Операторы языка PASCAL 7.3.1. Операторы
Основная часть программы на языке PASCAL представляет собой последовательность операторов, каждый из которых произво-
61

функции (Sin, Cos, Arctg). Для вычисления остальных тригонометрических функций необходимо использовать известные соотношения:

 

 

 

Окончание табл. 7.4

1

 

2

 

 

 

Cos(X)

вычисление косинуса X

 

 

 

Arctg(X)

вычисление арктангенса X

 

 

 

Ехр(Х)

вычисление экспоненты X

 

 

 

Ln(X)

вычисление натурального логарифма X

Sqrt(X)

вычисление квадратного корня из X

 

Trunc(X)

вычисление целой части X

 

 

 

Round(X)

округление X в сторону ближайшего целого:

Ocid(X)

true, если X -

нечетное;

 

 

У

 

false, если X -

четное

 

 

 

 

Т

 

 

 

 

В TURBO-PASCAL определены только 3 тригонометрические

 

 

 

Н

 

 

 

Б

 

 

Tg (X)

=

Sin (X) / Cos (X)

й

Ctg (X) =

Cos (X) / Sin (X)

Csc (X) = 1 / Sin (X)

 

 

и

 

 

 

 

 

 

 

 

 

Sc (X)

= 1 / Cos (X)

 

рJ 1/2

Arcsin (X) = Arctg (X/(1-X ))

 

Arccos (X) = л/2 - Arcsin (X)

 

 

 

 

 

 

 

 

о

 

Arcctg (X) = Tt/2 - Arctg (X).

 

 

 

 

 

 

 

т

 

 

Для вычисления логарифма с основанием А используется соот-

ношение:

 

 

 

и

 

 

 

 

 

з

 

 

 

 

 

 

 

 

logA(X) = ln(X)/In(A).

 

 

о

 

 

 

 

 

 

 

 

В TURBO-PASCAL нет операции возведения в степень. При не-

 

п

 

 

 

 

 

 

е

 

 

 

 

 

 

 

 

Р

 

 

 

 

 

 

 

 

 

обходимости ее использования применяют стандартные функции: ХА соответствует ЕХР(А*1п(Х)).

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

Все операторы подразделяются на три группы:

1)простые;

2)структурные;

3)ввода-вы вода.

Кроме операторов, входящих в перечисленные группы, имеется

еще оператор With.

 

 

 

Простыми

называются операторы, не содержащие в себе ника-

ких других операторов. К ним относятся операторы:

ТУ

1) присваивания;

 

БН

2) безусловного перехода;

 

3) вызова процедуры или функции;

4) пустой.

 

 

Оператор присваивания (:=) предписывает выполнить выраже-

ние, заданное в его правой части, и

 

ь результат переменной,

идентификатор

которой расположен

в лево части. Переменная и

 

 

 

й

 

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

переменная имеет вещественный тип, а выражение - целочисленный.

 

 

 

 

 

 

 

присвоит

Допустимо присваивание любых типов данных, кроме файловых.

Формат:

 

 

 

 

 

р

 

 

 

 

о

 

 

 

 

 

 

 

<Идентификатор> := <выражение> ;

 

 

 

 

т

 

 

Пример:

 

 

и

 

 

 

Sort:= 1;

 

з

 

 

 

 

сепа:= 15.754;о

 

 

 

 

 

resultat:= sin(A)+cos(B);

 

 

 

п

 

 

 

 

 

 

Оператор

безусловного перехода (Goto) означает "перейти к" и

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

Формат:

Goto <метка>;

62

Пример:

 

 

 

Label metkal, metka2;

 

 

 

metkal:

 

 

 

goto metka2;

 

 

У

metka2:

 

 

 

Т

 

 

 

Н

 

При записи оператора Goto нужно помнить следующее:

 

Б

 

 

1) метка должна быть описана в разделе описания меток того блока процедуры, функции, основной программы, в котором она

используется;

 

 

 

 

 

 

 

 

 

й

2) областью действия

 

метки является тот блок, в котором она

 

 

 

 

 

 

 

 

 

 

 

и

описана; переход возможен только в пределах блока;

3) при передаче управления

внутрь другого блока происходит

программное прерывание.

р

 

 

 

 

 

 

 

 

 

о

 

 

Обычно оператор Goto используется для преждевременного вы-

Формат:

 

 

 

 

обработк

е ошибок.

хода из цикла или при

 

 

 

Оператор

вызова процедуры

служит для активизации предвари-

 

 

 

 

 

и

 

 

 

 

 

тельно определенной пользователем или стандартной процедуры.

 

 

 

 

з

 

 

 

 

 

 

<имя

процедуры

> {( параметры )};

 

п

 

 

 

 

 

 

 

 

 

npimep:

 

 

 

 

 

 

 

 

 

 

Program prim;

 

 

 

 

 

 

 

 

procedureе vl;

 

 

 

 

 

 

 

 

begin

 

 

 

 

 

 

 

 

 

 

 

Р...

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

 

 

 

 

 

end;

 

 

 

 

 

 

 

 

 

 

 

procedure v2;

 

 

 

 

 

 

 

 

begin

 

 

 

 

 

 

 

 

 

 

 

...

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

 

 

 

 

 

end;

63

begin

 

v 1;

{вызов процедуры v 1}

v2;

{вызов процедуры v2}

end.

 

Пустой оператор не содержит никаких символов и не выполняет никаких действий. Он может быть расположен в любом месте

программы, где синтаксис языка допускает наличие оператора.

Пример:

 

 

 

 

 

 

 

 

У

Begin

 

 

 

 

 

 

 

Т

goto ml; (переход в конец блока)

 

 

Н

 

ml: (пустой оператор помечен меткой}

 

end.

 

 

 

 

 

Б

 

 

 

 

 

 

 

 

 

 

 

Структурный

оператор представляет собой структуру, постро-

 

 

 

 

 

й

 

 

 

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

Все структурные операторы подразделяются натри группы:

1) составные;

 

 

р

 

 

 

 

 

2) условные;

 

 

 

 

 

 

 

ного числа операторов, отделенных друг от друга точкой с запятой

3) повтора.

 

 

и

 

 

 

 

Составной оператор представляет собой группу из произволь-

и ограниченную операторными скобками Begin и End.

 

Формат:

 

т

 

 

 

 

 

 

Begin

о

и

 

 

 

 

 

 

<оператор>;з

 

 

 

 

 

 

 

<оператор>;

 

 

 

 

 

 

 

 

е

 

 

 

 

 

 

 

 

 

Р

 

 

 

 

 

 

 

 

 

<оператор>;п

 

 

 

 

 

 

 

 

end;

 

 

 

 

 

 

 

 

 

Пример:

Begin t:=A*B+C; rez:=A+sin(C); writeln(rez:12:6) end;

64

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

Условные операторы If и Case обеспечивают выполнение или невыполнение некоторого оператора, группы операторов или блока в зависимости от заданных условий. PASCAL допускает использование двух условных операторов: If и Case.

Оператор условия If является одним из самых популярных средств, изменяющих естественный порядок выполнения операторов програм-

мы. Он может принимать одну из следующих форм:

 

 

У

1) if <условие> then <оператор1> else <оператор2> ;

2) if <условие> then <оператор>;

 

 

 

 

 

Т

 

 

 

 

 

Условие - выражение булевского типа. Оно может быть простым

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

 

 

 

 

Н

 

В первом случае, если значение выражения истинно, выполняет-

ся <оператор1>, если ложно, -

<оператор2>.

 

 

 

Пример:

 

 

Б

 

 

 

 

й

 

 

 

if А>В then writeln('A больше В')

 

 

 

else writeln('A меньше или

 

ио В');

 

 

 

 

равн

 

 

 

 

Во втором случае, если результат выражения - True, выполняется

<оператор>, если False, - оператор, следующий сразу за оператором If.

Один оператор If можетвходить в состав другого оператора If.

При вложенности операторов каждое Else соответствует тому Then,

 

и

которое непосредственно ему предшествует.

Оператор

з

Case является обобщением оператора If и по-

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

Рбора.еКак и в операторе If, здесь может присутствовать слово Else, имеющее тот же смысл.

Формат:

Case <выражение-селектор> of <список 1>: <оператор 1>; <список 2>: <оператор 2>;

65

<список N>: <оператор N>; else <оператор>

end;

Оператор Case работает следующим образом. Сначала вычисляется значение выражения-селектора, затем обеспечивается реализация того оператора, константа выбора которого равна текущему значению селектора. Если ни одна из констант не равна текущему значению селектора, выполняется оператор, стоящий за словом Else. Если слово Else отсутствует, активизируется оператор, стоя-

щий за словом End. Селектор может иметь любой скалярный тип,

кроме вещественного.

 

У

Т

 

Пример:

 

 

 

 

 

 

 

 

Case I of

 

 

БН

 

 

1: Z:=I+10;

 

 

ий

 

 

2: Z:=I+100;

 

 

 

3: Z:=I+1000

 

 

 

end;

 

 

 

 

Операторы ввода-

.

 

 

Ввод данных - это передач информации от внешнего носителя

 

 

 

т

р

-

процесс,

в оперативную память для обработки. Вывод - обратный

когда данные

и

 

 

 

передаютсявыводапосле обработки из оперативной памяти

 

 

з

 

 

 

 

на внешний носитель. Внешним носителем может служить .

 

Для выполнения операций ввода-вывода служат 4 оператора:

1) терминал ввода-вывода;

 

 

2) печатающее устройство;

 

 

 

п

 

 

 

 

 

3) гибкий (дискета) или жесткий (винчестер) магнитный диск и др.

1)Read;

 

 

 

 

 

Р

 

 

 

 

 

 

2) Readln;

 

 

 

 

 

е3) Write;

 

 

 

 

 

4) Writeln.

 

 

 

 

 

Оператор

чтения Read

обеспечивает ввод числовых

данных,

символов, строк и т.д. для последующей их обработки программой. Формат:

read (Х1,Х2,...,Хп);

66

или

read(FV,X 1 ,X2,...,Xn),

где Xl,X2,...,Xn - переменные допустимых типов данных;

FV - переменная, связанная с файлом, откуда будет выполняться чтение.

В данном разделе рассматривается, в основном, первый вариант

формата.

У

 

Значения Х1,Х2,...,Хп набираются пользователем на клавиатуре

 

Т

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

бора данных для одного оператора Read нажимается клавиша ввода Enter. Значения переменных должны вводиться в строгом соответ-

ствии с синтаксисом языка PASCAL.

Н

 

Пример:

 

 

 

 

 

 

 

 

 

 

Var

 

 

 

йБ

 

I: real;

 

 

и

 

 

J: integer;

 

 

 

 

К: char;

 

 

 

 

begin

 

 

 

 

 

ор

 

 

read(I,J,K);

 

 

 

Первый вариант ответа:т

Второй вариант ответа:

 

235.6 100 'G' <Enter>и

'G' 235.6 100

 

 

 

 

 

з

 

 

 

Первый вариант обеспечивает нормальный ввод данных; второй

вызовет ошибку.о

 

 

 

Оператор

чтения Readtn

аналогичен оператору Read;

единст-

 

п

 

 

 

 

венно отличие - в том, что после считывания последнег о в списке

значенияедля одного оператора Readln данные для следующего опе-

ратора чтения будут считываться с начала новой строки.

 

Р

 

записи Write производит вывод числовых

данных,

Оператор

символов, строк и булевых значений. Формат:

write(Y 1,Y2,...,Yn);

или

write(FV,Y1,Y2,...,Yn);

67

где Yl,Y2,...,Yn - выражения типа Integer, Real, Byte, Char, Boolean и т.д.;

FV - имя файла, куда выполняется вывод.

Пример:

write(234); write(A+B-2);

Форматы оператора вывода Write. В TURBO-PAS KAL предусмотрен вывод данных с форматом. В общем случае формат имеет

следующий вид:

 

 

 

 

 

У

 

 

 

 

 

 

 

Р:М,

 

 

 

 

 

Т

где Р -

имя переменной;

 

 

Н

 

М -

 

 

 

 

 

целая константа, указывающая на число позиций для выво-

 

 

 

 

 

Б

 

 

димой величины Р (в качестве параметра М может указываться не

 

 

 

 

и

 

 

 

число, а имя константы, описанное в разделе Const). Вывод осуще-

ствляется в крайние правые позици поляйшириной М.

 

Для вещественных переменных формат может быть задан в виде:

 

 

о

 

 

 

 

P:M:N,

т

р

 

 

 

 

 

 

 

где М -

общее число позиций для выводимой переменной Р, вклю-

чая знак числа, целую часть, точку и дробную часть;

 

 

N - числ

ий дробной части (0<= N <=24).

 

 

В этом случае переменная Р выводится в виде константы с фик-

 

позици

сированной точкой. Если N = 0, ни дробная часть, ни десятичная

точка н выводятся.о

Если N > 24, при выводе используется формат с

плавающей точкой.

 

 

п

 

Если параметры М и N опущены, вещественная переменная вы-

е

 

водится в виде константы с плавающей точкой. В этом случае зна-

чения М и N устанавливаются транслятором по умолчанию.

Р

 

 

Пример. Используем форматный вывод переменных I, J, К (см. выше пример с использованием оператора ввода Read):

writeln('K 1:6:2, 'j=', j:4, 'k=', k:2) end.

68

В результате получим: 1=235.60 j=100 k=G

Оператор записи Writeln аналогичен оператору Write; единственное отличие заключается в том, что после вывода последнего в списке значения для текущего оператора Writeln происходит перевод курсора к началу следующей строки. Оператор Writeln, записанный без параметров, вызывает перевод строки.

7.3.2. Файлы

У

 

Файл - это поименованная область памяти на внешнем носите-

 

Т

ле, предназначенная для хранения информации (любого набора

Н

Б

 

элементов одного и того же типа). Число элементов, называемое

длиной файла, не фиксировано. Файл может быть связан с любым

 

 

 

 

 

й

источником или потребителем информации:

1) клавиатурой;

 

 

 

и

2) принтером;

 

 

др

 

3) магнитным диском;

 

 

 

4) коммутационным

канало

 

 

 

м и .

 

Файлы по методу

доступ

 

их элементам подразделяются на

файлы последовательного и прямого доступа. В файлах последова-

и

 

 

 

тельного доступа каждый элемент становится доступным только

з

 

 

 

 

 

после перебора всех предыдущих элементов. Файлы прямого дос-

тупа позволяютообращаться к каждому элементу непосредственно по его порядковому номеру в файле.

По отношению к программе файлы могут быть внешними и внутренними. Внутренними являются файлы, которые создаются,

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

 

п

программы, внешними - файлы, которые существуют вне

программы.е

В качестве носителей внешних файлов обычно

Р

 

 

используют магнитные диски.

Каждому файлу пользователя должно быть присвоено уникальное имя, которое используется при обращении к этому файлу. Имя состоит из собственно имени (1-8 символов: букв и цифр) и необя- ' зательного типа файла (3 символа). Если тип файла присутствует, он отделяется от первой части имени точкой. Внешние файлы должны быть описаны в разделе описаний программы.

69