Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
теория_информатика.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
5.34 Mб
Скачать

17.2.4.5 Сдвиговые операции

Операции арифметического сдвига применяются в целочисленной арифметике и обозначаются как:

>> - сдвиг вправо;

<< - сдвиг влево.

Общий синтаксис осуществления операции сдвига:

объект = выражение сдвиг КоличествоРазрядов;

Пример:

unsigned char a=6;  // a = 0000 0110

unsigned char b;

b = a >> 1; // b = 0000 0110 >> 1 = 0000 0011 = 3

Арифметический сдвиг целого числа вправо >> на 1 разряд соответствует делению числа на 2.

Арифметический сдвиг целого числа влево << на 1 разряд соответствует умножению числа на 2.

17.2.4.6 Круглые скобки

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

17.2.4.7 Порядок вычисления выражений

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

Таблица 17.9 Приоритеты действий при вычислении выражений

Приоритет

Лексемы

Операция

1

,

последовательное вычисление

2

=, +=, -=, *=, /=, %=, <<=, >>=, &=, ^=, |=

присваивание

3

? :

условие

4

||

логическое ИЛИ

5

&&

логическое И

6

|

побитовое ИЛИ

7

^

побитовое исключающее ИЛИ

8

&

побитовое И

9

==, !=

равенство/неравенство

10

<, >, <=, >=

отношения

11

<<, >>

сдвиг влево и вправо

12

+, -

аддитивные операции

13

*, /, %

мультипликативные операции

14

++, --, sizeof, ~, !, -, +, &, *, (имя типа)

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

15

имена, литералы, a[k], f(…), a.b, ->

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

Лекция 18 Операторы языка Turbo Pascal и c

Простые операторы Turbo Pascal

Простые операторы C

Структурированные операторы Turbo Pascal

Структурированные операторы C

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

Все операторы языка Паскаль и Си можно разделить на две группы: простые и структурированные.

18.1 Простые операторы Turbo Pascal

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

оператор присваивания;

обращение к процедуре;

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

пустой оператор.

18.1.1 Оператор присваивания (“:=”)

18.1.1.1 Назначение

С помощью этого оператора переменной присваивается значение выражения.

18.1.1.2 Формат записи

<переменная> : = <выражение>).

<Переменная> и <выражение> должны иметь одинаковый тип (кроме "вещественному типу можно присвоить целочисленный");

Не следует путать оператор присваивания (“:=”)с операцией сравнения (“=”);

Пример:

А := 5*х-6.

18.1.2 Оператор безусловного перехода (“Goto”)

18.1.2.1 Назначение

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

18.1.2.2 Формат записи

Goto <метка> .

Перед использованием метка должна быть объявлена в разделе описания меток;

Допускается переход к <метке> внутри одного блока.

Пример:

If x<>0 then y:=a/x else goto 1;

18.1.3 Обращение к процедуре (функции)

18.1.3.1 Назначение

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

18.1.3.2 Формат записи

<имя процедуры> [ (<Список параметров>) ]

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

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

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

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

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

18.1.4 Пустой оператор

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

18.2 Простые операторы C

18.2.1 Пустой оператор

18.2.1.1 Назначение

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

в операторах do, for, while, if в строках, когда место оператора не требуется, но по синтаксису требуется хотя бы один оператор;

при необходимости пометить фигурную скобку.

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

Пример:

int main ( )

{

:

{ if (...) goto a; /* переход на скобку */

{ ...

}

a:; }

return 0;

}