Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
PYaVU_s.doc
Скачиваний:
44
Добавлен:
24.02.2016
Размер:
665.09 Кб
Скачать
    1. Оператор do

Синтаксис:

do

<statement>

while (<expression>);

Выполнение:

Тело оператора do выполняется один или несколько раз до тех пор, пока выражение <expression> станет ложным (равным нулю). Вначале выполняется оператор <statement> тела, затем вычисляется выражение <expression>. Если выражение ложно, то оператор do завершается и управление передается следующему оператору в программе. Если выражение истинно (не равно нулю), то тело оператора выполняется снова и снова проверяется выражение. Выполнение тела оператора продолжается до тех пор, пока выражение не станет ложным. Оператор do может также завершить выполнение при выполнении операторов break, goto или return внутри тела оператора do.

Пример:

do

{

y=f(x);

x--;

} while (x>0);

Вначале выполняются два оператора y=f(x); и x--; не обращая внимание на начальное значение x. Затем вычисляется выражение x>0. Если x>0, то тело оператора выполняется снова, и снова перевычисляется выражение x>0. Тело оператора выполняется до тех пор, пока x не станет меньше или равным нулю.

    1. Оператор-выражение

Синтаксис:

expression;

Выполнение:

Выражение <expression> вычисляется в соответствии с правилами, изложенными в разделе 5 "Выражения и присваивания".

Примеры

x=(y+3); / *example 1* /

x++;/ *example 2* /

f(x); / *example 3* /

В Си присваивания являются выражениями. Значением выражения является значение, которое присваивается (так называемое "право-сторонее значение").В первом примере x присваивается значение y+3.

Во втором примере x инкрементируется.

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

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

    1. Оператор for

Синтаксис:

for ([<init-expression>];[<cond-expression>];[<loop-exp>])

statement

Тело оператора for выполняется нуль и более раз, до тех пор, пока условное выражение <cond-expression> не станет ложным. Выражения инициализации <init-expression> и цикла <loop-expression> могут быть использованы для инициализации и модификации величин во время выполнения оператора for.

Первым шагом при выполнении оператора for является вычисление выражения инициализации, если оно имеется. Затем вычисление условного выражения с тремя возможными результатами:

  1. Если условное выражение истинно (не равно нулю), то выполняется тело оператора. Затем вычисляется выражение цикла (если оно есть). Процесс повторяется снова с вычислением условного выражения.

  2. Если условное выражение опущено, то его значение принимается за истину и процесс выполнения продолжается, как показано выше. В этом случае оператор for может завершиться только при выполнении в теле оператора операторов break, goto, return.

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

Оператор for может завершиться при выполнении операторов break, return, goto в теле оператора.

Пример

for (i=space=tab=0; i<MAX; i++)

{

if (line [i] == '\x20')

space++;

if (line [i] == '\t')

{

tab++;

line [i] = '\x20';

}

}

В приведенном примере подсчитываются символы пробелов ('\x20') и табуляций ('\t') в массиве символов, поименованном line, и замена каждого символа табуляции на пробел.

Сначала i, space и tab инициализируются нулем. Затем i сравнивается с константой MAX. Если i меньше MAX, то выполняется тело оператора. В зависимости от значения line [i], выполняются операторы if.

Затем переменная i инкрементируется и снова сравнивается с константой MAX. Тело оператора выполняется до тех пор, пока значение i не станет больше или равно MAX.