Вход/Регистрация
Программирование на Objective-C 2.0
вернуться

Кочан Стивен

Шрифт:

Если поместить завершающий нуль-символ ('\0') в конце массива символов, то создастся символьная строка (characterstring). Если в программе 13.2 заменить инициализацию массива word па строку char word[] = {'Н', 'е', 'l', 'l', 'o', '!', '\0'};

то в дальнейшем можно выводить эту строку с помощью одного вызова NSLog, например, NSLog (@"%s", word);

Символы форматирования %s указывают NSLog, что вывод символов должен продолжаться до тех пор, пока не будет достигнут завершающий нуль-символ. А именно этот символ мы поставили в конце массива word. Многомерные массивы

Все массивы, рассмотренные выше, являются линейными, то есть имеют одну размерность. Язык Objective-C позволяет определять массивы любой размер-ности. В этом разделе описываются двумерные массивы.

Типичным примером двумерного массива являются матрицы. Рассмотрим матрицу 4x5. 10 5 -3 17 82 9 0 0 8 -7 32 20 1 0 14 0 0 8 7 6

В математике для указания элемента матрицы используют два индекса. Если назвать эту матрицу М, то обозначение М.. будет указывать элемент /-й строки, у-го столбца, где / изменяется от 1 до 4 и/ изменяется от 1 до 5. Обозначение М3 2 указывает значение 20, которое находится в третьей строке втором столбце этой матрицы. Аналогичным образом, Л/45 указывает элемент, который находится в четвертой строке пятом столбце (значение 6).

В Objective-C при обозначении элементов двумерной матрицы используются аналогичные обозначения. Но поскольку в Objective-C нумерация начинается с 0, первая строка матрицы имеет номер 0, и первый столбец матрицы тоже имеет номер 0. Поэтому приведенная выше матрица будет иметь следующие обозначения строк и столбцов. Строка (i) Столбец (j) 0 1 2 3 4 0 10 5 -3 17 82 1 9 0 0 8 -7 2 32 20 1 0 14 3 0 0 8 7 6

Применяемое в математике обозначение Mij. заменяется в Objective-C обозначением M[i][j]

Напомним, что первый индекс указывает номер строки, и второй индекс — номер столбца. Тем самым, sum = М[0][2] + M[2J[4];

означает сложение значения из строки 0 столбца 2 (-3) со значением из строки 2 столбца 4 (14) и присваивание результата (11) переменной sum.

Описание двумерных массивов выполняется так же, как для одномерных массивов; например, int М[4][5];

означает объявление массива М как двумерного массива, содержащего 4 строки и 5 столбцов (всего 20 элементов). Каждый элемент этого массива должен со-держать целое значение.

Двумерные массивы можно инициализировать аналогично одномерным. Перечисление элементов выполняется по строкам. Чтобы отделить инициали-зацию одной строки от другой, используются фигурные скобки. Таким образом, чтобы определить и инициализировать массив М с элементами из приведенной выше таблицы, можно использовать следующий оператор. int М[4][5] = { {10, 5, -3, 17, 82 }, { 9, 0, 0, 8, -7 }, {32,20, 1,0, 14}, { 0, 0, 8,7, 6 } };

Уделите особое внимание синтаксису этого оператора. Отметим, что после каждой закрывающей фигурной скобки (кроме последней) требуется запятая. Использование внутренних пар фигурных скобок не является обязательным. Если они не указаны, инициализация происходит по строкам, поэтому преды-дущий оператор можно было бы написать следующим образом. int М[4][5] = { 10, 5, -3, 17, 82, 9, 0, 0, 8, -7, 32, 20,1,0, 14, 0, 0, 8, 7,6};

Как и в случае одномерных массивов, можно инициализировать не весь мас-сив. Например, в следующем операторе инициализируются только первые три элемента каждой строки матрицы. int М[4][5] = { { 10, 5, -3}, { 9, 0, 0 }, { 32, 20, 1 }, { 0, 0, 8 } };

Остальным значениям присваивается значение 0. Отметим, что в данном случае для правильной инициализации необходимы внутренние пары фигурных скобок. Без таких скобок были бы инициализированы первые две строки и первые два элемента третьей строки. (Проверьте это сами.) 13.2. Функции

Процедура NSLog, которую мы использовали в каждой профамме этой книги, является примером функции. Каждая программа содержит функцию с именем main. Вернемся к нашей первой программе (программа 2.1), где на терминал выводилась фраза «Программировать на Objective-C интересно». #import <Foundation/Foundation.h> int main (int arge, char *argv[]) { NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; NSLog (@"Программировать интересно."); [pool drain]; return 0; }

Следующая функция с именем printMessage выводит тот же текст. void printMessage (void) { NSLog (@"Программировать интересно."); }

Единственным отличием между printMessage и функцией main из профаммы 2.1 является первая строка. В первой строке определения функции компилятору сообщаются четыре факта об этой функции.

Кто может вызывать ее.

Тип значения, которое она возвращает.

Ее имя.

Количество и тип аргументов, которые она принимает.

В первой строке определения функции printMessage компилятору сообщается, что имя функции printMessage и что она не возвращает никакого значения (первое применение ключевого слова void). В отличие от методов, тип возвращаемого значения функции не заключают в круглые скобки. Компилятор выдаст сообщение об ошибке, если вы сделаете это.

  • Читать дальше
  • 1
  • ...
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

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