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


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

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



 

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

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

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

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

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-02-05; просмотров: 495; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.138.114.38 (0.117 с.)