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

Шрифт
Фон

Вы уже видели, как действует оператор else при проверке двух возможных условий. Однако решения, которые приходится реализовать в программировании, не всегда ограничиваются выбором между двумя вариантами. Рассмотрим программу, которая выводит -1, если пользователь вводит отрицательное число; О, если число равно нулю; и 1, если число больше нуля. (Это реализация функции sign.) Очевидно, что в этом случае нужны три проверки: для отрицательных чисел, чисел, равных нулю, и положительных чисел. Простая конструкция if-else в данном случае не подходит. Конечно, мы могли бы прибегнуть здесь к трем отдельным операторам if, но это решение не всегда можно реализовать, особенно если проверки не являются взаимоисключающими. Чтобы справиться с этой ситуацией, можно добавить оператор if к предложению else. Мы уже говорили, что после предложения else может следовать любой допустимый программный оператор Objective-C, так почему не использовать еще один if? if (выражение 1 ) программный оператор 1 else if (выражение 2) программный оператор 2 else программный оператор 3 В результате оператор if расширяется вместо логического решения с двумя значениями мы получаем логическое решение с тремя значениями. Вы можете продолжить добавление операторов if к предложениям else в том же стиле, чтобы получить логическое решение с п значениями. Эта конструкция так часто используется, что обычно ее называют конструкцией else if и форматируют так. if (выражение 1 ) программный оператор 1 else if (выражение 2 ) программный оператор 2 else программный оператор 3 Это способ делает чтение оператора более удобным. В следующей программе показано использование конструкции else if с реализацией описанной выше функции sign. Программа 6.6 // Реализация функции sign import

int main (int argc, char argv[]) { NSAutoreleasePool pool = [[NSAutoreleasePool alloc] init]; int number, sign; NSLog (@"Please type in a number:"); scant («%i», &number); if ( number < 0 ) sign = -1; else if ( number == 0 ) sign = 0; else // Положительное число sign = 1; NSLog (@"Sign = %i", sign); [pool drain]; return 0; } Вывод программы 6.6 Please

type in a number: (Введите число) 1121 Sign = 1 Вывод программы 6.6 (повторный запуск) Please type in a number: -158 Sign = -1 Вывод программы 6.6 (повторный запуск) Please type in a number: О Sign = О Если введенное число меньше нуля, переменной sign присваивается значение -1; если число равно нулю, sign присваивается значение 0; в противном случае число больше нуля, поэтому sign присваивается значение 1. В следующей программе символ, введенный с терминала, анализируется и классифицируется как алфавитный символ (a-z или A-Z), как цифровой символ (0-9) или как специальный символ (все остальные символы). Для чтения одного символа с терминала при вызове scant используются символы форматирования %с. Программа 6.7 // Эта программа классифицирует символ, // введенный с клавиатуры import

int main (int argc, char argv[]) { NSAutoreleasePool pool = [[NSAutoreleasePool alloc] init]; char c; NSLog (@"Enter a single character:"); scant («%c», &c); it ( (c >= a' && c <= 'z') || (c >= A' && c <= 7')) NSLog (@"lts an alphabetic character."); else it ( c >= O && c <= 9 ) NSLog ((gilt's a digit."); else NSLog (@"lts a special character."); [pool drain]; return 0; } Вывод программы 6.7 Enter a single character: (Введите один символ) & Its a special character. (Это специальный символ) Вывод программы 6.7 (повторный запуск) Enter a single character: 8 Its a digit. (Это цифра) Вывод программы 6.7 (повторный запуск) Enter a single character: В Its an alphabetic character. (Это алфавитный символ) В первой проверке после чтения символа мы определяем, является ли этот символ алфавитным (в переменной с типа char). Сначала проверяется, попадает ли этот символ в диапазон строчных букв: ( с >= 'а' && с <= 'z ') Это выражение имеет значение TRUE, если с находится в диапазоне символов от а до У (с строчная латинская буква). Вторая проверка выполняется с помощью следующего выражения: ( с >= А && с <= Z" ) Это выражение имеет значение TRUE, если с находится в диапазоне символов от 'А' до 'Т (с прописная латинская буква). Эти проверки подходят для символов в кодировке ASCII. Если переменная с содержит алфавитный символ, проверка проходит успешно и выводится сообщение «Its an alphabetic character» (Это алфавитный символ). В противном случае выполняется предложение else if. Оно определяет, является ли данный символ цифрой. Отметим, что выполняется сравнение с символами от '0' до 9, а нес цифрами от 0 до 9. Дело в том, что с терминала читается символ, а запись символов от '0' до '9' в компьютере отличается от чисел 0-9. В кодировке ASCII символ 0' представляется во внутренней записи числом 48, символ Т числом 49, и т.д. Если с символ цифры, то выводится фраза «Its a digit» (Это цифра). В противном случае (если с не является алфавитным символом или символом цифры) выполняется последнее предложение else, и на терминале выводится фраза «Its a special character» (Это специальный символ). Затем выполнение программы завершается. Хотя в данном случае scant используется для чтения только одного символа, вы все равно должны нажать клавишу Enter после ввода символа, чтобы результат ввода был передан в программу. Обычно при чтении данных с терминала программа «не видит» введенных данных, пока не нажата клавиша Enter. В следующем примере напишем программу, которая позволяет ввести простое выражение в следующей форме: число оператор число Программа выполнит оценку выражения и выведет результаты на терминал. Операторы, которые нужно распознавать, это обычные оператор сложения, вычитания, умножения и деления. Мы будем использовать класс Calculator из программы 4.6 главы 4. Каждое выражение будет передаваться этому калькулятору для вычислений. В следующей программе используется довольно большой оператор if с несколькими предложениями else if, определяющими, какая операция должна быть выполнена. Примечание. Чтобы избежать проблем с внутреннм представлением, лучше использовать процедуры из стандартной библиотеки islower и isupper. Для этого включите в программу строку #import . Программа 6.8 // Программа вычисления простых выражений в форме // число оператор число // Реализация класса Calculator import

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

0
Шрифт
Фон

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