Реферат: Основы алгоритмического языка С++
Сравните этот листинг и его вариант с отступами
if ( i > 0 )
j = i * i;
else
j = 10 - i;
Последний вариант читается много легче; легко указать, где операторы if и else. Более того, если вы будете работать с вложенными циклами, отступы еще более значимы в отношении удобочитаемости кода.
Каковы правила написания условий в операторе if-else?
Здесь существуют два подхода. Первый рекомендует писать условия так, что true будет чаще, чем false. Второй подход рекомендует избегать отрицательных выражений (тех, которые используют операции сравнения != и булевы операции !).
Программисты из последнего лагеря преобразуют такой оператор if:
if ( i != 0 )
j = 100/i;
else
j = 1;
в следующую эквивалентную форму:
if ( i == 0 )
j = 1;
else
j = 100/i;
хотя вероятность равенства нулю переменной i достаточно низка.
Как обработать условие, подобное нижеследующему, где имеется деление на переменную, которая может оказаться равной нулю?
if ( i != 0 && 1/i > 1 )
j = i * i;
С++ не всегда оценивает проверяемые условия полностью. Эта частичная оценка происходит, когда член булева выражения превращает все выражение в false или true, независимо от значения других членов. В этом случае, если переменная i равна 0, исполняющая система не будет оценивать 1/i > 1, потому что член i != 0 есть false и обращает в false все выражение, независимо от значения второго члена. Это называется укороченной оценкой булевых выражений.
Действительно ли необходимо включать предложения else или default в многоальтернативные операторы if-else и switch?
Программисты настоятельно рекомендуют включение этих всеохватывающих предложений для гарантии того, что многоальтернативные операторы будут обрабатывать все возможные условия. Однако технически для компиляции программы это не является необходимым.
Как смоделировать цикл while циклом for?
Рассмотрим простой пример.
int i; int i = 1;
for (i=1; i<=10; i+=2) { while ( i <= 10) {