If (выражение) оператор s

Ветвления

 

Ветвление алгоритмов и программ в языке C записывается с помощью условного оператора if. Условный оператор if имеет вид:

if (выражение) оператор s1 [else оператор s2]

В случае отсутствия конструкции else получим сокращенный условный оператор:

Схема работы оператора if (полного и сокращенного) представлена на рис.2.5.

Рис.2.5. Схема работы оператора if (полного и сокращенного)

 

Условие ветвления алгоритма и программы – выражение языка С (как в циклах). Значение выражения служит условием выбора той или иной ветви программы или алгоритма. Если значение выражения ≠ 0, то условие истинно и выполняется оператор s1, иначе – оператор s2. Одна из ветвей может отсутствовать, тогда при нулевом значении выражения оператор s пропускается (сокращенный условный оператор).

Задача 2.2. Вычислить значение величины y при следующих условиях:

a*x2 + b2*x, если a < 0

y = x – a*b, если 0 ≤ a < 1

1 + x, если a ≥ 1

/* Фрагмент программы для вычисления величины y */

float a, b, x;

cin >> a >> b>>x;

if ( a < 0 ) cout << “y = ” << a *x *x + b *b *x;

else if ( a < 1 ) cout << “y = ” << x - a * b;

else cout << “y = ” << 1 + x;

Контрольные вопросы и упражнения.

1. Каким будет результат выполнения следующего фрагмента программы?

float x = 10,y; float z; char c = '*';

y=x + 2;

printf ("\n %f %c %f = %f", x, c, y, x*y);

2. Какие операторы можно использовать в языке С для организации циклов?

3. В каких случаях используется составной оператор?

4. Какие из перечисленных условий будут ложными при заданных значениях a = 10; b = -5;

a) while (a) б) while (a>0 || b>0)

в) while (a>0 && b>0) г) while (!a || b)

д) while (!a && b) е) while (a && b)

5. Какое значение примет величина s после выполнения следующего фрагмента

int j, n = 5, s = 0;

. . .

for (j = 0; j < n; j++)

s = s + (j + 1)*2;

6.Какие числа будут получены при выполнении следующего фрагмента программы?

int j;

. . .

for(j = 20; j > 10; j--)

printf (“%d ”, j%3);

Какое значение примет величина j после выполнения фрагмента?

7. Что означает следующая запись: for ( ; ; );

8. Запишите оператор ветвления для вычисления y = 1/x (исключите деление на 0).

9.Запишите следующий фрагмент программы без помощи оператора for. Дополните определением типов переменных. Нарисуйте схему.

for(r = -1, n = 500; n > 0; n--)

{ scanf("%f",&z);

if (z < r) r = z;

}

10. Напишите программу вычисления произведения двух натуральных чисел А и В, не используя операцию умножения.

11. Напишите программу получения таблицы n значений функции:

x, если x>=5;

y= 2*x, если -5<=x< 5;

x2, если x<-5.

Заданы количество значений n (n > 0), начальное значение аргумента функции x0 и шаг табулирования t.

12. Напишите программу, которая вводит три числа, находит и выводит наименьшее из заданных чисел.