Начала программирования на языке Си, страница 10

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

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

Примеры:

1). If (у<0) x=у+1;

Здесь оператором If дается следующая команда машине: «Если  у<0 то x нужно присвоить значение у+1.

2). If (a <b+c  || b<a+c || c< b+a) s=sqrt(p(p-a)*(p-b)*(p-c));

Эту строку можно перевести так: «Если  a меньше суммы  b и с, а b меньше  суммы а и с, с меньше суммы  b  и а, то выполнять действие, стоящее за скобками.

3). if(x<0 && x>-10) x=-x;   Здесь написано: «Если 0<х<-10, то присвоить х значение –х (то есть поменять знак у величины х)

Блок-схема этого оператора имеет вид (рис. 8.1).

Рис. 8.1. Блок-схема сокращенной формы оператора if.

Полная форма оператора условного перехода имеет вид:

if (выражение-условие)

{

оператор_A1;

оператор_A2;       /*здесь A1, A2,..., AN показывают, что при  */

……………            /*истинности выражения_условия ,*/  оператор_AN;      /* должны быть выполнены соответствующие */

/* N операторов, где N= 1, 2, 3,… */

/*обратите внимание, что если N>1, то */

}                       /*все операторы заключаются в фигурные скобки*/        

else

{ оператор_B1;

оператор_B2;       /*здесь B1, B2,..., BM показывают, что при  */

……………            /*ложности выражения_условия ,  */  оператор_BM;      /* должны быть выполнены соответствующие */

/* M операторов, где M= 1, 2, 3,… */

/*обратите внимание, что если M>1, то */

}                       /*все операторы заключаются в фигурные скобки*/        

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

Пример:

if(x>0)

b=x;

else

b=-x;

Блок-схема этого примера на рис. 8.2.

Рис. 8.2. Блок-схема оператора if - else.

Контрольные вопросы и задания

1. Напишите алгоритм  вычисления корней квадратного уравнения,  применяя сокращенную и полную форму оператора условного перехода.

2. Найдите ошибки в следующих фрагментах программ.

а)   if(x>0 && x<= 7)

b=sqrt(x*x-2);

d=sin(b);

else

b=-x;

b) if(i==0 || k>8);

{b=ln(x*x-2);

d=sin(b);}

printf(“/nsin(b)=%7.3”,d);

else(a<0)

a=a+a;

summa=a+d;

8.3.Метки и пустой оператор

Метка – это идентификатор, помещаемый слева от оператора и отделенный от него двоеточием. Например,

label: x=-a;

dom: z=i+1;

Чтобы было можно поставить метку в любом месте программы, был введен пустой оператор, изображаемый символом точка с запятой ‘;’. Например:

metka: ;

8.4. Оператор безусловного перехода

Этот оператор имеет следующий вид goto идентификатор_метки;

Пример:

goto label;

goto dom;

goto metka;

8.5. Операторы цикла

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

8.5.1. Циклы с предусловием

Он имеет следующий вид:

while (выражение_условие)

{

тело_цикла

}

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

Например

while (x<0)

{

x++

printf(“x=%5.2f”,x);

}

В переводе это звучит так. Пока x<0 увеличивать x на единицу и выводить данные на печать с точностью до второго знак после запятой.

8.5.2. Цикл с постусловием

Цикл с постусловием имеет следующий вид:

do

{  тело_цикла;

}

while (выражение_условие);

Данную конструкцию можно интерпретировать следующим образом. Выполнять (делать) (do) операторы, входящие в цикл (требующие повторения), до тех пор пока (while)  верно выражение_условие.

Пример

do

{x++;

printf(“x=%5.2f”,x);}

while (x<0)

Что означает:  «Увеличивать x на единицу и выводить результат на печать до тех пор, пока x остается меньше нуля».