Полная и укороченная форма оператора if.

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

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

if(условие) {S1; S2;...} [else {Q1;Q2;...}]

Если условие, указанное в круглых скобках истинно, то выполняется цепочка операторов S1, S2,… . В противном случае выполняется цепочка операторов Q1,Q2,… . Альтернативная ветвь вместе со служебным словом else может отсутствовать. И тогда речь идет о выполнении или обходе цепочки операторов S1,S2,… .

Простейшие условия задаются в виде проверки соотношения двух однотипных выражений:

if(a>b) cout<<a; else cout<<b;

if(x>=0) y=sqrt(x);

Напомним, что операции отношения в языках C, C++ обозначаются следующими символами и их комбинациями:

== равно != не равно > больше
>= больше или равно < меньше <= меньше или равно

Более сложные условия могут составляться из элементарных соотношений с помощью логических операций "ИЛИ" (||), "И" (&&), "НЕ" (!). Например, проверка принадлежности x диапазону [a,b] выглядит следующим образом:

if(a<=x && x<=b) ...

В качестве логического условия иногда можно встретить в круглых скобках обычное арифметическое выражение:

if(a)...

В языке C логические переменные отсутствуют. Вместо этого действует соглашение о том, что ложь эквивалентна нулевому значению числового выражения, а истина – не нулевому значению. Поэтому приведенная выше проверка эквивалентна соотношению:

if(a != 0)...

Паскаль

f((a>b)and(b<10)) then

begin ...

and;

else ...;

С++

if(a>b && bb<10)

{ ...

}

else ...;

Билет 6

1. Объявление переменных и присвоение им начальных значений. Укажите на разницу между соответствующими средствами языков С++ и Паскаль. Комментарий в программе.

Объявление и инициализация числовых переменных

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

int main(void)

{ int i,j;

...........

s=0;

for(int k=0; k<10; k++)

........................

В приведенном примере переменные i и j объявлены в начале функции, а объявление переменной k встретилось в операторе цикла. По стандарту языка C++ место объявления переменной определяет сферу ее действия. Переменные, описанные в начале функции (такие как i и j в приведенном выше примере), считаются локализованными в данной функции и могут быть использованы в любой части тела этой функции. Повторное объявление переменных с такими же именами считается ошибкой (дублирование имен переменных). В отличие от этого действие переменных, объявленные в некотором внутреннем блоке функции (в нашем примере переменная k объявлены в цикле for), распространяется только на время работы этого блока. Т.е после выхода из цикла память, выделенная под переменную k, возвращается системе, и без повторного переобъявления этой переменной пользоваться уже нельзя.

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

Тип Длина Минимальное значение Максимальное значение
char, signed char 1 байт -128
unsigned char 1 байт
short int, short 2 байта -32768
unsigned short 2 байта
int, signed 2 байта -32768
unsigned int, unsigned 2 байта
long, long int 4 байта -2147483648
unsigned long 4 байта
float 4 байта 3.4*e-38 3.4*e38
double 8 байт 1.7e-308 1.7e308
long double 10 байт 3.4e-4932 1.1e4932

Объявление переменной можно совместить с присвоением ей начального значения (инициализацией):

int x=18,y=-5;

float a=5F;

В отличие от языка Pascal инициализация локальных переменных в функциях на языках C, C++ происходит при каждом вызове функции.

Оператор присваивания

Оператор присваивания является наиболее распространенным средством, позволяющим изменить значение переменной во время работы программы.

В простейшем случае он имеет следующий формат:

namev = expression;

Здесь namev – имя переменной:

expression – выражение, значение которого будет присвоено переменной namev.

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

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

v1=v2=v3=exp;

В программах на C, C++ очень часто встречаются специфические форматы записи операторов присваивания. В тех случаях, когда значение переменной должно быть увеличено или уменьшено на 1, используются следующие синтаксические конструкции:

x++; //вместо x=x+1;

++x; // вместо x=x+1;

x--; // вместо x=x-1;

--x; // вместо x=x-1;

В приведенных примерах размещение двойного знака сложения или вычитания роли не играет. Однако такая конструкция может входить в качестве операнда в арифметическое выражение (что встречается не очень часто) или выступать в роли индекса у элементов массива. Например:

y=a[i++];

z=b[++j];

В первом случае переменной y будет присвоено значение a[i] со старым индексом, после чего индекс i будет увеличен на 1. Во втором случае сначала индекс j будет увеличен на 1, а потом значение b[j] с новым индексом будет участвовать в операции присвоения.

Еще одна форма оператора присваивания ведет свое происхождение от условного арифметического выражения, впервые появившегося в языке АЛГОЛ-60:

v = (a > b)? e1 : e2;

Выполняется такой оператор следующим образом. Проверяется условие, записанное в круглых скобках и, если оно удовлетворяется, то переменной v присваивается значение выражения e1. В противном случае в переменную v засылается значение выражения e2.

Наши рекомендации