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

Кочан Стивен

Шрифт:

присваивает переменной g значение, содержащееся в элементе с номером i массива grades.

Чтобы сохранить значение в элементе массива, нужно указать этот элемент массива слева от знака равенства. В операторе grades[ 100] = 95;

значение 95 сохраняется в элементе с номером 100 массива grades.

Для перебора элементов массива нужно изменять значение переменной, которая используется как индекс массива. Например, в цикле for (i = 0; i < 100; ++i) sum += grades[i];

выполняется перебор первых 100 элементов массива grades (элементы 0-99), и значение каждой оценки (grade) добавляется к переменной sum. По окончании цикла for переменная sum будет содержать сумму первых 100 значений массива grades (если sum присвоено значение 0 до начала цикла).

Как и с другими типами переменных, необходимо объявить массив, прежде чем использовать его. Объявление массива — это объявление типа элементов, содержащихся в массиве (например, int, float или объект) и максимального числа элементов в массиве.

Определение Fraction *fracts [100];

объявляет tracts как массив, содержащий 100 дробей (fraction). Для обозначения элементов этого массива нужно использовать индексы от 0 до 99. Выражение fracts[2] = [fracts[Q] add: fracts[1]];

представляет вызов метода add: класса Fraction для сложения первых двух дробей из массива tracts и сохранения результата в третьем элементе массива.

В программе 13.1 создается таблица из первых 15 чисел Фибоначчи. Попытайтесь предсказать ее результаты. Какая связь существует между числами этой таблицы? // Программа генерации первых 15 чисел Фибоначчи #import <Foundation/Foundation.h> int main (int arge, char *argv[]) { NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; int Fibonacci [15], i; Fibonacci [0] = 0; /* by definition */ Fibonacci[1] = 1; /* ditto 7 for ( i = 2; i < 15; ++i) Fibonacci[i] = Fibonacci[i-2] + Fibonacci [i-1]; for ( i = 0; i < 15; ++i) NSLog (@"%i", Fibonacci^]); [pool drain]; return 0; }

Вывод программы 13.1 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377

Первые два числа Фибоначчи, которые мы назовем F0 и F, определяются соответственно как 0 и 1. Затем каждое следующее число Фибоначчи F определяется как сумма двух предыдущих чисел Фибоначчи F 2 и F,. Например, F2 вычисляется как сумма значений F0 и F, В приведенной профамме это соответствует вычислению Fibonacci[2] путем сложения значений Fibonacci[0] и Fibonacci[1]. Вычисление выполняется внутри цикла for для значений F0-F14 (то есть от Fibonacci[2] до Fibonacci[14]). Инициализация элементов массива

Элементам массива можно назначать начальные значения точно так же, как переменным при их объявлении. Для этого нужно просто перечислить начальные значения массива, начиная с первого элемента. Значения в списке разделяются запятыми, и весь список заключается в фигурные скобки.

В операторе int integers[5] = { 0, 1, 2, 3, 4 };

элементу integers[0] присваивается значение 1, integers[1] — значение 1, integers[2] — значение 2, и т.д. Массивы символов инициализируются аналогичным образом. Например, в операторе char letters[5] = {'а', 'b', 'с', 'd', 'е'};

определяется массив символов, и пяти элементам этого массива присваиваются соответственно значения 'a', 'b', 'с', 'd' и 'е'.

Вы не обязаны полностью инициализировать весь массив. Если указано меньшее количество начальных значений, инициализируется соответствующее количество элементов; остальные значения задаются равными нулю. Например, в объявлении float sample_data[500] = { 100.0, 300.0, 500.5 };

инициализируются первые три значения массива sample_data (соответственно 100.0,300.0 и 500.5), а остальным 497 элементам присваивается значение 0. Заключая номер элемента в прямоугольные скобки, можно инициализировать определенные элементы массива в любом порядке. Например, в строках, int x = 1233; int а[] = {[9] = х + 1, [2] = 3, [1] = 2, [0] = 1 };

определяется массив а из 10 элементов (по максимальному указанному индексу) и для последнего элемента задается значение х + 1 (1234). Кроме того, происходит инициализация первых трех элементов (значения 1,2 и 3 соответственно). Массивы символов

В программе 13.2 показано, как использовать массив символов. Однако здесь есть одна особенность, требующая обсуждения. Вы уже видите ее? #import <Foundation/Foundation.h> int main (int arge, char *argv[]) { NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; char word[] = {'H', 'e', 'l', 'l', 'o', '!'}; int i; for ( i = 0; i < 6; ++i) NSLog word[i]); [pool drain]; return 0; }

Вывод программы 13.2 H e l l о !

Наиболее примечательной особенностью этой программы является объявление массива символов word без указания числа элементов. При определении массива без указания числа элементов размер массива определяется автоматически по числу инициализируемых элементов. Поскольку в программе 13.2 для массива word инициализируются шесть значений, язык Objective-C по умолчанию определяет, что данный массив содержит шесть элементов.

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

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

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

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

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

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