Чтение онлайн

на главную - закладки

Жанры

Программирование на Objective-C 2.0
Шрифт:

В таблице 5.1 приводится список всех операторов отношения Objective-C.

Табл. 5.1. Операторы отношения Оператор Описание Пример == Равно count == 10 != Не равно flag != DONE < Меньше, чем а < b <= Меньше или равно low <= high > Больше, чем points > POINT_MAX >= Больше или равно j>=0

Операторы отношения имеют меньший приоритет, чем все арифметические операторы. Выражение а < b-с

выполняется так: а < (b + с)

Оно истинно (TRUE), если значение а меньше, чем значение b + с, и ложно (FALSE) в противном случае.

Обратите внимание

на оператор «равно» (==); его не следует путать с опе-ратором присваивания (=). Выражение а == 2

проверяет, равно ли значение а значению 2* а выражение а = 2

присваивает значение 2 переменной а.

Выбор оператора отношения зависит от типа проверки и от ваших предпочтений. Например, выражение отношения n <= 200

эквивалентно n < 201

В приведенном выше примере выполнение программного оператора, кото-рый образует тело цикла for (triangularNumber += п;), повторяется до тех пор, пока результат проверки выражения отношения равен TRUE (в данном случае — пока значение п меньше или равно 200). В этом операторе значение п прибавляется к значению переменной triangularNumber.

Если условие_цикла не выполнено, то программа продолжает выполняться со следующего оператора. В этой программе выполнение продолжается с оператора NSLog.

Последний компонент оператора for содержит выражение, которое вычис-ляется каждый раз после выполнения тела цикла. В программе 5.2 выражение_- цикла к значению п прибавляется 1. Значение п увеличивается на 1 каждый раз после прибавления этого значения к значению triangularNumber, и п изменяется от 1 до 201.

Последнее значение п (201) не прибавляется к значению triangularNumber, по-скольку цикл заканчивается, как только перестает выполняться условие цикла (п становится равным 201).

Итак, оператор for выполняется следующим образом.

Сначала вычисляется начальное выражение. В этом выражении обычно за-дается (инициализируется) переменная, используемая внутри цикла, которую называют индексной переменной. Ей присваивается некоторое начальное значение (например, 0 или 1).

Проверяется условие цикла. Если это условие не удовлетворяется (выражение имеет значение FALSE), то цикл немедленно прекращается, и выполнение продолжается с оператора, расположенного непосредственно после цикла.

Выполняется программный оператор, содержащий тело цикла.

Вычисляется выражение цикла. Это выражение обычно используется, чтобы изменить значение индексной переменной. Довольно часто это прибавление к переменной 1 или вычитание из нее 1.

Возврат к шагу 2.

Условие цикла проверяется сразу после входа в цикл, до первого выполнения тела цикла. Нельзя ставить символ «точка с запятой» после закрывающей круглой скобки, поскольку это сразу прекращает цикл.

Программа 5.2 генерирует все 200 первых треугольных чисел. Создадим таб-лицу этих чисел. Для экономии места мы выведем таблицу, содержащую только первые 10 треугольных чисел. Эта задача выполняется в программе 5.3. // Программа, генерирующая таблицу треугольных чисел #import <Foundation/Foundation.h> int main (int argc, char *argv[]) { NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; int n, triangularNumber; NSLog (@"TABLE OF TRIANGULAR NUMBERS"); NSLog (@" n Sum from 1 to n"); NSLog (@"-- ------"); triangularNumber = 0; for ( n = 1; n <= 10; ++n ) { triangularNumber += n; NSLog (@H %i %i", n, triangularNumber); } [pool drain]; return 0; }

Вывод

программы 5.3 TABLE OF TRIANGULAR NUMBERS (Таблица треугольных чисел) n Сумма от 1 до n - ------------ 1 1 2 3 3 6 4 10 5 15 6 21 7 28 8 36 9 45 10 55

В программе 5.3 первые три оператора NSLog выводят заголовок и названий колонок вывода.

После это вычисляются первые 10 треугольных чисел. Переменная п используется, чтобы определить текущий номер, для которого вычисляется сумма от 1 до п, в переменной triangularNumber сохраняется значение n-го треугольного числа.

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

В программе 5.3 тело цикла состоит из выражения, в котором значение п добавляется к значению triangularNumber, и следующего за ним оператора NSLog. Обратите внимание, что эти операторы расположены с отступом, поскольку они образуют часть цикла for. Существуют разные стили программирования; неко-торые из них записывают цикл так, чтобы открывающая фигурная скобка рас-полагалась в отдельной строке после for. for ( n = 1; n <= 10; ++n ) { triangularNumber += n; NSLog (@" %i %i", n, triangularNumber); }

Следующее треугольное число вычисляется путем добавления значения п к предыдущему треугольному числу. При первом входе в цикл треугольное число равно 0, поэтому новое значение triangularNumber при п, равном 1, равно 1. Затем выводятся значения п и triangularNumber с соответствующим числом пробелов, вставляемых в строку формата, чтобы значения этих переменных были выров-нены под заголовками соответствующих колонок.

После выполнения тела цикла вычисляется выражение цикла. Но это выра-жение в данном операторе for выглядит странно: ++n

Однако ++n — это вполне допустимое выражение Objective-C. Оно представляет новый оператор Objective-C: оператор приращения, или увеличения (increment operator). Этот оператор добавляет 1 к своему операнду. Приращение на 1 весьма распространено, и для этой цели существует специальный оператор. Выражение ++п эквивалентно выражению n = п + 1.

Конечно, ни один язык программирования, содержащий оператор прибав-ления 1, не будет полным без соответствующего оператора вычитания 1. Этот оператор называется оператором уменьшения (decrement operator), и для него используется двойной знак «минус». Выражение bean counter = bean_counter - 1

эквивалентно выражению --bean_counter

Некоторые программисты любят помещать ++ или — после имени пере-менной, как в n++ или bean_counter-.

Вероятно, вы обратили внимание, что последняя строка вывода программы 5.3 не выровнена. Вы можете устранить это небольшое несоответствие, заменив соответствующий оператор программы 5.3 следующим оператором NSLog: NSLog ("%2i %i", n, triangularNumber);

Ниже приводится вывод модифицированной программы (назовем ее про-граммой 5.ЗА).

Вывод программы 5.ЗА TABLE OF TRIANGULAR NUMBERS n Sum from 1 to n - --------------- 1 1 2 3 3 6 4 10 5 15 6 21 7 28 8 36 9 45 10 55

Поделиться:
Популярные книги

Первый среди равных. Книга VII

Бор Жорж
7. Первый среди Равных
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Первый среди равных. Книга VII

На границе империй. Том 6

INDIGO
6. Фортуна дама переменчивая
Фантастика:
боевая фантастика
космическая фантастика
попаданцы
5.31
рейтинг книги
На границе империй. Том 6

Сирийский рубеж 3

Дорин Михаил
7. Рубеж
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Сирийский рубеж 3

Убийца

Бубела Олег Николаевич
3. Совсем не герой
Фантастика:
фэнтези
попаданцы
9.26
рейтинг книги
Убийца

Третий Генерал: Том IV

Зот Бакалавр
3. Третий Генерал
Фантастика:
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
Третий Генерал: Том IV

Идеальный мир для Лекаря 19

Сапфир Олег
19. Лекарь
Фантастика:
юмористическое фэнтези
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 19

Газлайтер. Том 28

Володин Григорий Григорьевич
28. История Телепата
Фантастика:
боевая фантастика
аниме
попаданцы
5.00
рейтинг книги
Газлайтер. Том 28

Идеальный мир для Лекаря 7

Сапфир Олег
7. Лекарь
Фантастика:
юмористическая фантастика
попаданцы
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 7

В лапах зверя

Зайцева Мария
1. Звериные повадки Симоновых
Любовные романы:
остросюжетные любовные романы
эро литература
5.00
рейтинг книги
В лапах зверя

Курсант: назад в СССР 2

Дамиров Рафаэль
2. Курсант
Фантастика:
попаданцы
альтернативная история
6.33
рейтинг книги
Курсант: назад в СССР 2

Возвращение Безумного Бога

Тесленок Кирилл Геннадьевич
1. Возвращение Безумного Бога
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Возвращение Безумного Бога

Кай из рода красных драконов 3

Бэд Кристиан
3. Красная кость
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Кай из рода красных драконов 3

Японская война 1904. Книга третья

Емельянов Антон Дмитриевич
3. Второй Сибирский
Фантастика:
попаданцы
альтернативная история
фэнтези
5.00
рейтинг книги
Японская война 1904. Книга третья

Третий Генерал: Том VIII

Зот Бакалавр
7. Третий Генерал
Фантастика:
городское фэнтези
аниме
сказочная фантастика
попаданцы
5.00
рейтинг книги
Третий Генерал: Том VIII