If (условие) оператор_1; else оператор_2;
Синтаксис сокращенной формы записи условного оператора:
If (условие) оператор_1;
Условие является логическим вычисляемым выражением, например, x < 0, y > 3, (x > 3) && (x < 5) и т. д. Условие заключается в круглые скобки, что синтаксически отделяет его от последующего оператора_1.
В полной форме условного оператора при истинности условия выполняется оператор_1, в противном случае (условие ложно) выполняется оператор_2, следующий после ключевого слова языка else.
В сокращенной форме условного оператора при выполнении (истинности) условия выполняется оператор_1, в противном случае (условие ложно) происходит переход к следующему за if оператору.
В качестве оператора_1 и оператора_2 могут выступать любые простые и/или структурные операторы.
Пример 12.5.4. Написать программу вычисления функции по различным математическим выражениям на различных интервалах:
#include <stdio.h>
main()
{float x,y;
printf("Введите x\n");
scanf(“%f “,&x);
if (x<=0) {y=x*x+1;}
else if (x>2) {y=x+1;}
else y=7-x*x;
printf(“ x=%8.2f y=%8.2f\n”,x,y);
return 0; }
В языке Си существует три оператора циклов: цикл с параметром (цикл типа for), цикл с предусловием (цикл типа while), цикл с постусловием (цикл типа do … while).
Цикл с параметром имеет следующий синтаксис:
for (раздел 1; раздел 2 ; раздел 3) тело цикла;
где раздел 1 - инициализация; раздел 2 - проверка условий повторения цикла; раздел 3 - модификация; тело цикла (повторяющаяся часть) состоит из одного оператора; если требуется выполнить в цикле несколько операторов, они заключаются в фигурные скобки, образуя составной оператор.
Разделы отделяются друг от друга точками с запятой, так что всегда в заголовке цикла типа for две точки с запятой, даже если разделы пустые.
В каждом разделе может быть произвольное количество операторов, в этом случае операторы внутри раздела отделяются запятыми. Если в разделе нулевое число операторов, точки с запятой ставятся все равно, так, возможен заголовок цикла for ( ; ; ), в этом случае условие выхода из цикла должно содержаться внутри тела цикла.
В разделе 1 записываются операторы, которые должны быть выполнены до цикла. В разделе 2 записываются операторы проверки условий повторения цикла; при истинности условий цикл повторяется. В разделе 3 записываются операторы, которые должны быть выполнены после каждой итерации цикла.
С помощью цикла типа for удобно находить суммы, произведения, искать максимальные и минимальные значения и т. п.
Пример 12.5.6. Найти сумму квадратов натурального ряда:
При нахождении суммы некоторой переменной, например S присваивается значение 0, затем в цикле к этой переменной прибавляется общий член заданной последовательности. Программа вычисления суммы квадратов натурального ряда имеет вид:
#include<stdio.h>
#include<conio.h>
main()
{ int S,n,i;
clrscr();
printf(“Введите n\n”);
scanf(“%d”,&n);
for(S=0,i=1;i<=n;i++) S+=i*i;
printf(“n=%d S=%d\n”,n,S);
getch();
return 0; }
В программе определяются целые переменные S, n, i. В языке Си учитывается регистр при определении идентификатора (имени) переменной. Функция clrscr, производящая очистку экрана, содержится в заголовочном файле conio.h. После ввода переменной n следует цикл типа for. В разделе инициализации присваиваются начальные значения переменным S (в которой накапливается сумма квадратов) и i - параметру цикла. Присваивания разделяются запятой, раздел инициализации отделяется точкой с запятой. В разделе проверки условия значение i сравнивается с n, при i меньшем или равном n цикл повторяется, в противном случае происходит выход из цикла. Раздел модификации состоит из оператора инкремента (увеличения на 1) значения параметра цикла i. Запись i++ эквивалентна записи i = i + 1.
В цикле выполняется один оператор S += i * i; это оператор составного присваивания, эквивалентный оператору S = S + i * i, поэтому фигурные скобки для тела цикла не требуются. После окончания цикла производится печать результата (оператор printf). Функция getch, содержащаяся в заголовочном файле conio.h, ожидает нажатия любой клавиши.