Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информатика.pdf
Скачиваний:
305
Добавлен:
02.03.2016
Размер:
600.39 Кб
Скачать

знаки операций сравнения. Логические выражения принимают только два значения: либо false (истина), либо true (ложь).

Пример. Двойное неравенство х < y < z на Паскале записывается так: (x<y) and (y<z).

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

1.операции сравнения: = (равно), <> (не равно), < (меньше), <= (меньше или равно), > (больше), >= (больше или равно);

2.операции типа сложения: + , – , or ;

3.операции типа умножения: * , / , div , mod , and;

4.унитарные операции: not , – .

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

6.2. Элементарный ввод и вывод

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

Процедуры ввода имеют вид:

read (x1, x2 , ..., xn ); readln (x1 , x2 , ..., xn );

где xi, i = 1 , ..., n — элементы списка ввода, представляющие собой переменные.

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

данном случае это xn, осуществляется перевод к началу новой строки. Переменные списка ввода могут быть целого, вещественного или сим-

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

Процедуры вывода имеют вид:

write (x1, x2, ..., xn ); writeln ( x1 , x2 , ..., xn );

где xi, i = 1, ..., n — элементы списка вывода, представляющие собой выражения.

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

60

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

Для выводимого данного можно задавать определенное число позиций. В этом случае требуется указывать формат вывода следующим образом: для целых, символьных, булевских и строковых данных — write (x:n), для вещественных — write (x:n:m), где n — общее число позиций, m — число позиций после десятичной точки.

6.3. Основные операторы

Каждый оператор представляет собой законченную фразу языка и определяет некоторый вполне законченный этап обработки данных.

1. Оператор присваивания имеет вид:

<имя переменной> := <выражение>; Оператор выполняется так: вычисляется значение выражения, стоящего в

правой части, затем полученное значение присваивается переменной, имя которой записано в левой части оператора присваивания.

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

2. Составной оператор имеет вид: begin

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

...

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

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

Выполнение составного оператора заключается в последовательном (в порядке их записи) выполнении операторов внутри операторных скобок begin

иend.

3.Условный оператор имеет вид:

if <условие>

then <оператор1> else <оператор2> ;

При выполнении условного оператора сначала определяется значение логического выражения. Если это значение — true, то выполняется оператор, следующий за служебным словом then. В противном случае выполняется оператор, следующий за служебным словом else.

61

Условный оператор может использоваться в сокращенной форме: if <условие>

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

В этом случае, если логическое выражение истинно, выполняется оператор, стоящий за служебным словом then, в противном случае этот оператор пропускается и выполняется оператор, следующий за условным.

4. Оператор цикла с предусловием имеет вид: while <условие>

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

Оператор выполняется следующим образом. Сначала проверяется условие, т.е. вычисляется значение логического выражения (поэтому и называется оператором цикла с предусловием). Если это значение истинно, то выполняется оператор (простой или составной), следующий за служебным словом do, и снова вычисляется значение логического выражения. И так до тех пор, пока значение логического выражения истинно. Как только оно будет ложным, выполнение оператора цикла завершается. Если в операторе цикла с предусловием после служебного слова do надо записать несколько операторов (составной оператор), то они заключаются в операторные скобки begin–end.

5. Оператор цикла с постусловием имеет вид: repeat <оператор>

unti <условие> ;

Оператор выполняется так. Сначала выполняется оператор, следующий за служебным словом repeat, затем проверяется условие, т.е. вычисляется значение логического выражения (поэтому он называется оператором цикла с постусловием). Если значение логического выражения ложно, то выполняется оператор (операторы), следующий за служебным словом repeat, и снова проверяется условие. И так до тех пор, пока значение логического выражения ложно. Как только значение логического выражения примет значение true, выполнение оператора цикла завершается.

Для того, чтобы при выполнении вышеописанных операторов цикла не произошло «зацикливания», необходимо, чтобы среди выполняемых операторов был оператор, влияющий на значение логического выражения.

6. Оператор цикла с параметром имеет вид:

for <имя переменной> := <выражение1> to <выражение2> (1) do <оператор> ;

где <имя переменной> — идентификатор переменной, называемый параметром цикла; <выражение1> — начальное значение параметра цикла, <выражение2>

— конечное значение параметра цикла ; <оператор> — любой оператор языка Паскаль (в том числе и составной).

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

62

Если обозначить через i — идентификатор параметра цикла, n — начальное значение параметра, k — конечное значение параметра, t — оператор (тело цикла), тогда (1) примет вид:

for i := n to k do t;

Оператор цикла выполняется следующим образом. Сначала вычисляются начальное и конечное значения параметров n и k. Если n > k, то выполнение оператора цикла сразу же прекращается. Если n ≤ k, то переменной i присваивается значение n и выполняется оператор t, следующий после служебного слова do. Затем переменной i присваивается следующее значение (если i целого типа, то i := i +1), которое сравнивается с конечным значением параметра цикла. Если i ≤ k, то снова выполняется оператор t, значению параметра i присваивается следующее значение и т.д. Оператор цикла завершается, как только значение параметра i будет больше k.

В Паскале предусмотрен также оператор цикла следующего вида: for <имя переменной> := <выражение1> downto <выражение2> (2) do <оператор> ;

где <имя переменной>, <выражение1>,<выражение2>, <оператор> имеют прежний смысл.

Используя уже введенные обозначения, оператор цикла вида (2) можно переписать в виде :

for i := n downto k do t;

При выполнении данного оператора параметр цикла последовательно убывает от n до k, и при каждом повторении цикла, если i целого типа, принимает значение i := i – 1. Выполнение оператора цикла прекращается при i < k.

7. Оператор варианта (полная форма) имеет вид: сase <выражение> of

<список констант1> : <оператор1> ;

. . .

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

end ;

где <выражение> — выражение любого скалярного типа, кроме вещественного, <оператор> — любой оператор языка Паскаль, в том числе и составной, <cписок констант> — список разделенных запятыми констант (значений выражения или одно его значение). Значения выражения и констант должны иметь один и тот же тип.

Неполная форма оператора варианта имеет вид: сase <выражение> of

<список констант1> : <оператор1> ;

. . .

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

63