Кочан Стивен - Программирование на Objective-C 2.0 стр 14.

Шрифт
Фон

remainder = number_to_test % 2; if ( remainder == 0 ) NSLog (@"The number is even."); if ( remainder != 0 ) NSLog (@"The number is odd."); [pool drain]; return 0; }

Вывод программы 6.3 Enter your number to be tested: (Введите ваше число для проверки) 2455 The number is odd. (Число является нечетным)

Вывод программы 6.3 (повторный запуск) Enter your number to be tested: 1210 The number is even. (Число является четным)

После ввода числа вычисляется остаток отделения на 2. Первый оператор if проверяет, равно ли нулю значение этого остатка. Если да, то выводится сообщение «The number is even.» (Число является четным).

Второй оператор if проверяет значение этого остатка на неравенство нулю. Если да, то выводится сообщение, что число является нечетным.

Если выполняется первый оператор if, то второй оператор не должен выполняться, и наоборот. При написании программ концепция «иначе» («else») требуется настолько часто, что почти во всех современных языках программирования введена специальная конструкция для этой ситуации. В Objective-C это конструкция if-else, которая имеет следующий формат. if (выражение) программный оператор 1 else программный оператор 2

На самом деле if-else является просто расширением общего формата оператора if. Если результатом оценки выражения является значение TRUE, то выполняется программный оператор /; иначе выполняется программный оператор 2. Во всех случаях выполняется программный оператор 1 или программный оператор 2, но не оба оператора.

Оператор if-else можно вставить в предыдущую программу, заменив два оператора if на один оператор if-else. Эта новая конструкция в некоторой степени упрощает программу и делает ее более удобной для чтения. // Программа, определяющая, является ли число четным или нечетным (Версия 2) #import <Foundation/Foundation.h> int main (int argc, char *argv[]) { NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; int number_to_test, remainder; NSLog (@"Enter your number to be tested:"); scanf ("%i", &number_to_test); remainder = number_to_test % 2; if ( remainder == 0 ) NSLog (@"The number is even."); else NSLog (@"The number is odd."); [pool drain]; return 0; }

Вывод программы 6.4 Enter your number to be tested: (Введите ваше число для проверки) 1234 The number is even. (Число является нечетным)

Вывод программы 6.4 (повторный запуск) Enter your number to be tested: 6551 The number is odd. (Число является четным)

He забывайте, что двойной знак равенства (==) это проверка на равенство, а одинарный знак равенства это оператор присваивания. Если случайно использовать оператор присваивания внутри оператора if, то может возникнуть множество проблем. Составные операции сравнения

До сих пор в операторах if использовались простые операции сравнения между двумя числами. В программе 6.1 сравнивалось значение числа с нулем, а в программе 6.2 выполнялось сравнение с нулем знаменателя дроби. Иногда необходимы более сложные проверки. Предположим, что нужно вычислить количество экзаменационных оценок в диапазоне от 70 по 79. В данном случае нужно сравнить значение оценки не с одним пределом, а с двумя (70 и 79), чтобы проверить, попадает ли она в указанный диапазон. В Objective-C имеется механизм для составных операторов сравнения этого типа. Составная операция сравнения (compound relational test) это несколько операций сравнения, объединенных логическим оператором AND или 0R. Эти операторы представлены парой символов && или || (два вертикальных штриха). Н апример, следующий оператор увеличивает значение переменной grades_70_to_79 (оценки от 70 по 79), только если значение grade (оценка) больше или равно 70 и меньше или равно 79). if ( grade >= 70 && grade <= 79 ) ++grades_70_to_79; А следующий оператор вызывает выполнение оператора NSLog, если index меньше 0 или больше 99. if ( index < 0 || index > 99 ) NSLog (@"Error index out of range"); (Ошибка индекс вне диапазона) Составные операторы можно использовать в Objective-C для формирования очень сложных выражений. Не злоупотребляйте этим. Более простые выражения всегда проще читать и отлаживать.При формировании составных выражений сравнения можно неограниченно использовать круглые скобки, чтобы повысить удобство чтения выражений и избежать осложнений из-за ошибочных предположений о старшинстве операторов в выражении. (Оператор && имеет более низкий приоритет, чем любой арифметический оператор или оператор отношения, но более высокий приоритет, чем оператор ||.) Пробелы также

повышают удобочитаемость выражения. Дополнительные пробелы вокруг операторов && и || визуально отделяют эти операторы от выражений, которые они связывают. Чтобы показать использование составных операций сравнения на конкретном примере, мы напишем программу, которая проверяет, является ли определенный год високосным, если он делится на 4 без остатка. Год, который делится на 100, не является високосным годом, если он не делится также на 400. Необходимо продумать, как проверять эти условия. Во-первых, можно сосчитать остатки (remainder) отделения года на 4, 100 и 400 и присвоить эти значения соответствующим переменным, например, rem_4, remJOO и rem_400. Затем можно проверить эти переменные, чтобы выяснить, отвечают ли эти остатки критериям високосного года. Можно сказать, что год является високосным, если он делится без остатка на 4 и не делится на 100, либо он делится без остатка на 400. На всякий случай убедитесь, что это определение эквивалентно предыдущему определению. Теперь, когда мы переформулировали определение, его реализация в виде программного оператора становится достаточно простой. if ( (rem_4 == 0 && remJOO != 0) || rem_400 == 0 ) NSLog (@"lts a leap year."); ("Это високосный год") Круглые скобки вокруг следующего подвыражения не обязательны. rem_4 == 0 && remJOO != О Оно будет оцениваться в таком порядке в любом случае, поскольку оператор && имеет более высокий приоритет, чем ||. В этом примере подходит и следующая проверка. if ( rem_4 == 0 && ( remJOO != О || remJOO == 0 )) Можно добавить перед этим оператором if несколько операторов объявления переменных и ввод пользователем значения года с терминала. Это программа 6.5, которая определяет, является ли год високосным. Программа 6.5 // Эта программа определяет, является ли год високосным import

Ваша оценка очень важна

0
Шрифт
Фон

Помогите Вашим друзьям узнать о библиотеке