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


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



ЗНАЕТЕ ЛИ ВЫ?

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



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

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

Приоритет Лексемы Операция
  , последовательное вычисление
  =, +=, -=, *=, /=, %=, <<=, >>=, &=, ^=, |= присваивание
  ?: условие
  || логическое ИЛИ
  && логическое И
  | побитовое ИЛИ
  ^ побитовое исключающее ИЛИ
  & побитовое И
  ==,!= равенство/неравенство
  <, >, <=, >= отношения
  <<, >> сдвиг влево и вправо
  +, - аддитивные операции
  *, /, % мультипликативные операции
  ++, --, sizeof, ~,!, -, +, &, *, (имя типа) положительное и отрицательное приращение, размер, побитовое НЕ, логическое НЕ, изменение знака, плюс, адрес, опосредование (разыменование), приведение типа
  имена, литералы, a[k], f(…), a.b, -> простые лексемы, индексы, вызов функции, прямой выбор, опосредованный выбор

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

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

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

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

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

 

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

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

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

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

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

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

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

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

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

Назначение

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

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

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

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

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

Пример:

А:= 5*х-6.

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

Назначение

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

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

Goto <метка>.

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

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

Пример:

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

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

Назначение

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

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

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

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

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

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

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

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

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

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

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

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

Назначение

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

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

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

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

Пример:

int main ()

{

:

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

{...

}

a:; }

return 0;

}

Оператор goto

Назначение

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

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

Пример:

goto имя-метки;

...

имя-метки: оператор;

Оператор continue

18.2.3.1 Назначение:

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

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

continue;

Пример:

int main()

{ int a,b;

for (a=1,b=0; a<100; b+=a,a++)

{ if (b%2) continue;

... /* обработка четных сумм */

}

return 0;

}

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

18.3.1 Составной оператор (Begin End;)

Назначение

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

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

Begin

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

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

End;

Пример:

if x=0 then

Begin Writeln ('Деление на ноль');

Writeln ('Введите новое значение Х');

Goto 1;

End;

18.3.2 Оператор одного условия (If)

Назначение

Оператор If реализует алгоритмическую конструкцию «ветвление» и изменяет порядок выполнения операторов в зависимости от истинности или ложности заданного условия.

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

If <условие> then <оператор1>

[else <оператор2>]

<Условие> - выражение булевского типа, может быть простым или сложным;

<Оператор1>, <оператор2> простые или составные операторы.

Пример:

if x=0 then Begin Writeln ('Деление на ноль');

Writeln ('Введите новое значение Х');

Goto 1;

End

else Begin Y:=(a+b)/x;

Writeln (‘Y = ’,Y);

End;

18.3.3 Оператор выбора (Case)

Назначение

С помощью этого оператора можно выбрать выполнение одного оператора из любого количества вариантов.

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

Case <выражение-селектор> of

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

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

……

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

[ else <оператор>]

End; {Case}

При использовании оператора Case необходимо помнить, что:

- тип выражения–селектора и типы констант списков выбора должны быть одинаковы;

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

Пример:

Case I of

0,2,4,6,8: Writeln ('Четная цифра');

1,3,5,7,9: Writeln ('Нечетная цифра');

10..100: Writeln (‘Число от 10 до 100’)

else

Writeln (‘Отрицательное число или больше 100’)

End;

18.3.4 Оператор цикла (Repeat)

Назначение

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

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

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

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

…..

<ОператорN>

until <условие>;

Группа операторов от 1 до N образует тело цикла.

Пример:

Repeat

Write (‘Введите числа X и Y ’);

Readln (X,Y);

Sum:=X+Y;

Writeln (‘Сумма чисел X+Y равна ’, Sum);

Write (‘Завершить программу? ’);

Readln (Ch);

Until (UpCase(Ch) = ‘Y’) or (Ch = ‘д’) or (Ch = ‘Д’);

{UpCase – получение заглавной буквы}

18.3.5 Оператор цикла While

Назначение

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

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

While <условие> do <оператор;>;

Оператор образует тело цикла, он может быть простым или составным.

Пример:

a:=5000;

While Abs(a)>0.0001 do

a:=a*0.99;

18.3.6 Оператор цикла For

Назначение

Оператор цикла For организует выполнение одного оператора заранее известное число раз.

Различают две формы записи оператора For.

Формат записи 1:

For <параметр цикла>:= <S1> to <S2> do <оператор>;

Формат записи 2:

For <параметр цикла>:= <S1> Downto <S2> do <оператор>;

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

Необходимо помнить, что после каждого шага цикла:

- при использовании формата записи 1 параметр цикла увеличивается на 1, следовательно, всегда S 2 должно задавать большим или равным S 1,

- а при использовании формата записи 2 параметр цикла уменьшается на 1, следовательно, всегда S 1 должно задавать большим или равным S 2.

Пример:

For I:=1 to 9 do Write (‘I = ‘,I);

For j:=’Z’ downto ‘A’ do Write (j);

18.3.7 Оператор обращения к записям и объектам With

Назначение

Оператор With применяется для упрощения доступа к полям записи.

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

With <Имя записи> do

< выражение, использующее <поле записи>>

Пример:

Переменная Comp1 такая же как и в примере программы в первой лекции по Паскалю:

With Comp1 do

Begin

Amplitude:=Sqrt(Sqr(Re)+Sqr(Im));

Angle:=Atan(Im/Re);

End

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

18.4.1 Оператор if

Назначение

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

18.4.1.2 Общая форма записи оператора if:

if (выражение) оператор–1; [ else оператор–2;]

Выполнение оператора if начинается с вычисления выражения.

Далее выполнение осуществляется по следующей схеме:

- - если выражение истинно (т.е. отлично от 0), то выполняется оператор–1.

- - если выражение ложно (т.е. равно 0), то выполняется оператор–2.

- - если выражение ложно и отсутствует оператор–2 (в квадратные скобки заключена необязательная конструкция), то выполняется следующий за if оператор.

Пример:

if (i < j) i++:

else { j = i-3; i++; }

18.4.2 Оператор switch

Назначение

Оператор switch предназначен для организации выбора из множества различных вариантов.

18.4.2.2 Форма записи:

switch (expression) {

case value1:

program statement;

...

break;

case value2:

program statement;

...

break;

...

case valuen:

program statement;

...

break;

default:

program statement;

...

break;

}

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

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

Пример:

int i=2;

switch (i)

{

case 1: i += 2;

case 2: i *= 3;

case 0: i /= 2;

case 4: i -= 5;

default:;

}

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

Условный оператор?

Назначение

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

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

условие? выражение_1: выражение_2

Если в результате вычисления условия будет получено значение TRUE (истина, не нуль), то выполняется выражение_1, и результатом выполнения оператора условия будет значение, полученное при вычислении этого выражения. Если в результате вычисления условия будет получено значение FALSE (ложь, т.е. нуль), то выполняется выражение_2, и результатом выполнения оператора условия будет значение, полученное при вычислении выражение_2.

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

18.4.5 Оператор for

Назначение

Оператор for - это наиболее общий способ организации цикла.

18.4.5.2 Формат записи:



Поделиться:


Последнее изменение этой страницы: 2017-02-07; просмотров: 183; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

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