Простейшие операторы языка Паскаль

 

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

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

Составной оператор. Составной оператор – объединение нескольких операторов в одну группу.

Форма записи составного оператора:

Begin

оператор 1;

оператор 2;

оператор n-1;

оператор n

end;

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

Составной оператор представляется как единый оператор. Его можно вставлять в любое место программы, где допускается один оператор. Любой из операторов составного оператора, в свою очередь, также может быть составным, например:

Begin

Begin

оператор А;

оператор В

End;

Begin

оператор С;

оператор D

End

End;

 

Оператор присваивания. Оператор присваивания – основной оператор любого языка программирования. Общая форма записи оператора:

v := a;

где v – имя переменной; “:=” – знак присваивания; а – выражение. Знак операции состоит из двух символов, которые нельзя разделять пробелом.

Данный оператор вычисляет значение выражения а, стоящего справа от знака операции присваивания :=, и присваивает полученной значение переменной v, стоящей слева. Например:

d := sin (x + a) * g – sqrt (abs ( x – g ));

В частных случаях выражение в правой части оператора присваивания может принимать значение константы, переменной или функции. Например:

f := 23.6;

q := x;

l := sqrt(x);

Оператор присваивания применим не только к арифметическим, но и логическим и символьным данным.

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

Var

a : real;

k : char;

Begin

k := a; (*символьной переменной присваивается вещественная*)

k := 23.7; (*символьной переменной присваивается

число*)

a := ‘!’; (*вещественной переменной присваивается символ*)

End.

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

Var

x, y : real;

k, l : integer;

Begin

y := abs(k) * x + sqrt (x * l);

End.

 

Оператор ввода. Для ввода и вывода данных в Паскале предусмотрены стандартные встроенные программы, которые называются процедурами.

Процедура ввода вызывается с помощью оператора ввода read.

Различают следующие виды операторов ввода:

Read (a1, a2, …, an) – каждое вводимое значение получают последовательно переменные a1, a2,…, an;

ReadLn (a1, a2, …, an) - каждое вводимое значение получают последовательно переменные a1, a2,…, an, после чего происходит переход на новую строку.

 

Вводить можно только переменные целого, вещественного, символьного и строкового типа.

Ввод числовых данных. Числовые данные (целые и действительные) должны разделяться пробелом или нажатием клавиши Enter.

 

Пример ввода

Var

a, b, c: real;

r, q: integer;

Begin

ReadLn(a, b, c);

Read(r, q);

End.

 

После запуска программы на выполнение происходит останов машины при встрече ReadLn(a, b, c) и ожидание ввода данных. Необходимо набрать три действительных числа через пробел и нажать клавишу Enter. Затем – два целых числа и нажать клавишу Enter,например,

0.4 6.2 –8 Enter

6 12 Enter

Числа можно отделять друг от друга клавишей Enter, например,

0.4 Enter

6.2 Enter

-8 Enter

6 Enter

12 Enter

Но нельзя вводить все в одну строку:

0.4 6.2 –8 6 12 Enter

В этом случае оператор ReadLn(a, b, c) введет три числа и перейдет к новой строке, пропустив два последних числа, а оператор READ(R,Q) будет ждать ввода двух чисел в новую строку (которые мы уже ввели).

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

Var

c, d, w: char;

Begin

ReadLn(c,d,w);

End.

Правильный ввод Неправильный ввод

aвсEnter a b c Enter

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

Оператор вывода. Оператор вывода данных из памяти на экран дисплея имеет следующие формы записи:

Write (b1, b2,…, bn) – выводит последовательно значения b1, b2,…, bn;

WriteLn (b1, b2,…, bn) - выводит последовательно значения b1, b2,…, bn и осуществляет переход на новую строку.

В качестве параметров В1, В2, Вn могут быть использованы целые, вещественные, символьные и логические переменные, а также символьные константы, заключенные в апострофы.

Примеры:

WriteLn (‘Результаты вычислений’); - вывод на экран строки «Результаты вычислений».

Y := 12;

WriteLn (‘Y= ‘,Y); - вывод на экран строки

Y= 12

Для вывода целых и вещественных чисел можно указывать форматы. Формат указывается через двоеточие после переменной.

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

WriteLn(y:5:2);

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

Если для вещественного числа не указать формат, число будет выведено в экспоненциальной форме, например число 0.000345 будет выведено как 0.345Е-03.

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

WriteLn (i:3);

для изображения целой переменной i отводит три позиции.

Если формат отведен больше, чем реальное количество позиций, занимаемых числом, то перед целой частью будет выведено соответствующее количество пробелов, а после дробной части – соответствующее количество нулей.

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

Var

s: char;

k: integer;

Begin

k := 3;

s := ‘*’;

WriteLn (s:k);

End.

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

goto метка;

Метка представляет собой целое число без знака в диапазоне 1-9999 или идентификатор (имя). Метка записывается перед помеченным оператором и отделяется от него двоеточием. Метка должна быть объявлена в разделе label. Например:

Label

10, aaa;

...

Begin

goto 10;

aaa: a := 2;

10: y := y + a;

End.

Здесь после оператора goto 10 выполняется оператор с меткой 10. Оператор, следующий за оператором перехода, также должен быть помечен. Иначе операторы между оператором goto и оператором с меткой 10 будут мнимыми, так как к ним нет доступа и они не будут выполняться.

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

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

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

– метки, описанные в процедуре (функции), локализуются в ней, поэтому передача управления извне процедуры (функции) на метку внутри нее невозможна.

Использование оператора goto нарушает естественный ход выполнения программы, делает ее запутанной и сложной в понимании. Поэтому использовать в программах данный оператор крайне не рекомендуется.

 

Условный оператор. Условный оператор имеет следующие формы записи:

if логическое выражение then

оператор 1

Else

оператор 2;

 

if логическое выражение then

Begin

группа операторов 1

End

Else

Begin

группа операторов 2

end;

 

if логическое выражение then оператор;

 

if логическое выражение then

Begin

группа операторов

end;

 

Если логическое выражение истинно, тогда выполняется оператор 1 или группа операторов 1, иначе выполняется оператор 2, или группа операторов 2, или оператор if пропускается и выполняется следующий за ним оператор.

Пример 1.

if x >= 50 then

y := sqrt (x)

Else

y := sqr (х);

WriteLn (y);

В данном примере, если х больше или равен 50, то y равен квадратному корню из х, в противном случае y равен переменной х в квадрате. Затем выполняется оператор вывода.

Пример 2.

if x < 0 then

x := abs(x);

s := s + x;

Если условие x < 0 истинно, то х присваивается модуль х и происходит передача управления на вычисление значения s.

Если условие x < 0 ложно, то сразу выполняется оператор вычисления s.

В качестве операторов 1 и 2 могут быть также условные операторы. Служебное слово else всегда ассоциируется с ближайшим по тексту слову if, которое еще не связано со служебным словом else. Например:

if x > y then

if a = 0 then

b := 0

Else

b := 1;

В данном случае при выполнении условия x > y переменная b получит значение 0 или 1 в зависимости от выполнения условия a= 0. Но если условие x > y не выполняется, второй условный оператор не будет работать и значение bне изменится.

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

 
 

Пример 3. Вычислить значение функции Y.

Текст программы.

Var

x,a,y:real;

Begin

WriteLn (‘Введите х,а’);

ReadLn (x,a);

if x<= a then

y:=cos(x+a)

Else

y:= ln(x-a);

WriteLn (‘y= ’, y:10:4, ‘ x=’, x:6:2);

End.

 

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

case выражение (переключатель) of

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

константа 2: оператор 2;

константа n: оператор n

[else оператор k]

end;

Здесь case, of, else, end – зарезервированные слова. Квадратные скобки говорят о том, что эта часть конструкции может отсутствовать.

Оператор выбора действует следующим образом.

Если значение выражения совпадает с константой 1, то выполняется оператор 1, затем управление передается следующему за case оператору. Если значение выражения совпадает с константой 2, то выполняется оператор 2, затем управление передается следующему за case оператору и т.д. Если значение выражения не совпадает ни с одной константой и есть конструкция else, то выполняется оператор k, затем управление передается следующему за case оператору. Если значение выражения не совпадает ни с одной константой, и нет конструкции else, то управление сразу передается оператору, следующему за case.

Кроме одиночных констант могут быть списки констант, которые записываются через запятую или как диапазоны. Например:

case i of

1,2 : k := 0;

3..8: k := 1;

9,10,20..25: k := 2

Else

k := 100

end;

В данном примере, если i равно 1 или 2, то k присваивается 0. Если i принимает значение от 3 до 8, то k присваивается 1. Если i принимает значение 9, или 10, или изменяется от 20 до 25, то k принимает значение 2. Если i не совпадает ни с одним из указанных выше значений, то k присваивается 100.

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

Константы и переключатель должны быть одного и того же типа.

Диапазоны изменений значений констант не пересекаются.

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

Примеры использования оператора выбора.

Пример 1.

Type

color=(red,green,black);

Var

x: integer;

clr:color;

Begin

writeln(‘ Введите цифру red-0,green-1,black-2');

ReadLn(x);

case x of

0: clr := red;

1: clr := green;

2: clr := black;

End;

Write(‘цвет-‘);

case clr of

red: WriteLn(‘красный’);

green: WriteLn(‘зеленый’);

black: WriteLn(‘черный’);

End;

End.

 

В данном примере переключатель х имеет целый тип, а переключатель clr имеет перечисляемый тип.

Пример 2.

Var

s: ’a’..’g’;

Begin

WriteLn(‘введите букву от а до g’);

ReadLn(s);

case s of

‘a’, ‘b’, ‘c’, ‘e’ : WriteLn (‘буквы русского и

латинского алфавита’);

‘d’, ‘f’. ‘g’ : WriteLn(‘буквы латинского алфавита’);

End;

End.

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

 








Дата добавления: 2017-01-29; просмотров: 828;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.065 сек.