Существуют ли еще какие-нибудь ошибочные значения, которые мы можем присвоить переменным startи stop? Можно было бы, конечно, попробовать присвоить переменной startзначение больше чем MAXLENGTH. Может ли этот вариант успешно пройти тест? Нет, хотя наличие подобной ошибки мы и не проверяем непосредственно.
Предположим, что величина startбольше константы MAXLENGTH. Тогда либо значение stopтоже превышает величину MAXLENGTH, что обязательно приведет к обнаружению ошибки, либо stopокажется меньшей или равной MAXLENGTH. Тогда ее значение должно быть меньше величины start, что приведет к обнаружению этой ошибки первым тестом. Другая вероятно ошибка может состоять в том, что значение stopокажется левее 1. Мы оставляем читателям в качeстве самостоятельного упражнения проверку того, что данная ошибка также не останется не замеченной.
В нашей программе контроль ошибок выглядит весьма простым. Если вы проектируете программу для серьезных целей, вы должны обратить на этот больше внимания, чем мы. Например, выводимые сообщения об ошибках могли бы указывать какие величины неверны и почему; кроме того, вы могли бы прибавить в сообщения что-то от себя и придать им большую эмоциональную окраску.
Приведем несколько примеров:
Указаное вами значение stop- 897654 превышает ширину экрана.
Вот это да! У вас STARTбольше, чем STOP.
Попробуйте, пожалуйста, еще раз.
ВЕЛИЧИНА START ДОЛЖНА БЫТЬ БОЛЬШЕ 0, ИНДЮК.
В языке Си имеется короткий способ записи одного из видов оператора if-else. Он называется "условным выражением" и использует операцию условия - ?:. Эта операция состоит из двух частей и содержит три операнда. Ниже приводится пример оператора с помощью которого находится абсолютное значение числа:
x = (y < 0 )? -y : y;
Все, что находится между знаком =и символом "точка с занятой" представляет собой условное выражение. Смысл этого оператора заключается в следующем: если уменьше 0, то х = - у; в противном случае х = у. В терминах оператора if-elseданный оператор мог выглядеть так:
if(у < 0) x = (y < 0 )? -y : y;
х = -у;
else
х = у;
В общем виде условное выражение можно записать следующим образом:
выражение1 ? выражение2 : выражение3
Если выражение1 истинно (больше нуля), то значением всего условного выражения является величина выражения2 ;
если выражение1 ложно (равно 0), то значение всего условного выражения - величина выражения3 .
Условное выражение удобно использовать в тех случаях, когда имеется некоторая переменная, которой можно присвоить одно из двух возможных значений. Типичным примером является присваивание переменной значения большей из двух величин:
mах = (а > b)? а : b;
Вообще говоря, использование условных выражений не являетcя обязательным, поскольку тех же результатов можно достичь при помощи операторов if-else. Однако условные выражения более компактны, и их применение обычно приводит к получению более компактного машинного кода.
I. Операция условия: ?:
В этой операции имеются три операнда, каждый из которых является выражением, причем вся запись выглядит следующим образом:
выражение1 ? выражение2 : выражение3 .
Значение всего выражения равно величине выражения2 , если выражение1 истинно, и величине выражения3 в противном случае.
II. ПРИМЕРЫ:
Выражение: (5 > 3) ? 1 : 2 имеет значение 1
Выражение: (3 > 5) ? 1 : 2 имеет значение 2
Выражение: (а > b) ? a : b имеет значение большей из величин аи b.
МНОЖЕСТВЕННЫЙ ВЫБОР: ОПЕРАТОРЫ switch И break
Операция условия и конструкция if-elseоблегчают написание программ, в которых осуществляется выбор между двумя вариантами. Однако иногда в программе необходимо произвести выбор одного из нескольких вариантов. Мы можем сделать это используя конструкцию if-else if - ... - else, но во многих случаях оказывается более удобным использовать оператор switch. Ниже приводится пример, иллюстрирующий его работу. Программа читает с терминала букву, затем выводит на печать название животного начинеющееся с этой буквы.
/*животные*/
Читать дальше