Книга: Язык программирования Си. Издание 3-е, исправленное
3.3 Конструкция else-if
3.3 Конструкция else-if
Конструкция
if (выражение)
инструкция
else if (выражение)
инструкция
else if (выражение)
инструкция
else if (выражение)
инструкция
else
инструкция
встречается так часто, что о ней стоит поговорить особо. Приведенная последовательность инструкций if - самый общий способ описания многоступенчатого принятия решения. Выражения вычисляются по порядку; как только встречается выражение со значением "истина", выполняется соответствующая ему инструкция, на этом последовательность проверок завершается. Здесь под словом инструкция имеется в виду либо одна инструкция, либо группа инструкций в фигурных скобках.
Последняя else-часть срабатывает, если не выполняются все предыдущие условия. Иногда в последней части не требуется производить никаких действий, в этом случае фрагмент
else
инструкция
можно опустить или использовать для фиксации ошибочной ("невозможной") ситуации.
В качестве иллюстрации трехпутевого ветвления рассмотрим функцию бинарного поиска значения x в массиве v. Предполагается, что элементы v упорядочены по возрастанию. Функция выдает положение x в v (число в пределах от 0 до n-1), если x там встречается, и -1, если его нет.
При бинарном поиске значение x сначала сравнивается с элементом, занимающим серединное положение в массиве v. Если x меньше, чем это значение, то областью поиска становится "верхняя" половина массива v, в противном случае - "нижняя". В любом случае следующий шаг - это сравнение с серединным элементом отобранной половины. Процесс "уполовинивания" диапазона продолжается до тех пор, пока либо не будет найдено значение, либо не станет пустым диапазон поиска. Запишем функцию бинарного поиска:
/* binsearch: найти x в v[0] ‹= v[1] ‹=… ‹= v[n-1] */
int binsearch(int х, int v[], int n)
{
int low, high, mid;
low = 0;
high = n-1;
while (low ‹=high) {
mid = (low + high) / 2;
if (х ‹ v[mid])
high = mid - 1;
else if (х › v[mid])
low = mid+1;
else /* совпадение найдено */
return mid;
}
return -1; /* совпадения нет */
}
Основное действие, выполняемое на каждой шаге поиска, - сравнение значения x (меньше, больше или равно) с элементом v[mid]; это сравнение естественно поручить конструкции else-if.
Упражнение 3.1. В нашей программе бинарного поиска внутри цикла осуществляются две проверки, хотя могла быть только одна (при увеличении числа проверок вне цикла). Напишите программу, предусмотрев в ней одну проверку внутри цикла. Оцените разницу во времени выполнения.
- Конструкция repeat-until
- 6.1.3 IF-THEN-ELSE-ENDIF
- if-else Statement
- Условный оператор if
- Оператор if
- Объединение операторов if и else
- 5.4.2. Инструкция else if
- 3.2 Конструкция if-else
- Конструкция if...else в Python:
- Множественный выбор: конструкция else-if
- Выбор: конструкция if-else
- 6.1.5 REPEAT-UNTIL