Читаем C# 4.0: полное руководство полностью

sample[5]: 5

sample[6]: 6

sample[7]: 7

sample[8]: 8

sample[9]: 9


Схематически массив sample можно представить таким образом.


Массивы часто применяются в программировании потому, что они дают возможность легко обращаться с большим числом взаимосвязанных переменных. Например, в приведенной ниже программе выявляется среднее арифметическое ряда значений, хранящихся в массиве nums, который циклически опрашивается с помощью оператора цикла for.


// Вычислить среднее арифметическое ряда значений.

using System;

class Average {

  static void Main() {

    int[] nums = new int[10];

    int avg = 0;


    nums[0] = 99;

    nums[1] = 10;

    nums[2] = 100;

    nums[3] = 18;

    nums[4] = 78;

    nums[5] = 23;

    nums[6] = 63;

    nums[7] = 9;

    nums[8] = 87;

    nums[9] = 49;


    for (int i=0; i < 10; i++) avg = avg + nums[i];

    avg = avg / 10;


    Console.WriteLine("Среднее: " + avg);

  }

}


Результат выполнения этой программы выглядит следующим образом.


Среднее: 53


Инициализация массива

В приведенной выше программе первоначальные значения были заданы для элементов массива nums вручную в десяти отдельных операторах присваивания. Конечно, такая инициализация массива совершенно правильна, но то же самое можно сделать намного проще. Ведь массивы могут инициализироваться, когда они создаются. Ниже приведена общая форма инициализации одномерного массива:


тип[] имя_массива = {val1, val2, val3, ..., valN) ;


где val1 -valN обозначают первоначальные значения, которые присваиваются по очереди, слева направо и по порядку индексирования. Для хранения инициализаторов массива в C# автоматически распределяется достаточный объем памяти. А необходимость пользоваться оператором new явным образом отпадает сама собой. В качестве примера ниже приведен улучшенный вариант программы, вычисляющей среднее арифметическое.


// Вычислить среднее арифметическое ряда значений.

using System;

class Average {

  static void Main() {

    int[] nums = { 99, 10, 100, 18, 78, 23,

            63, 9, 87, 49 };

    int avg = 0;


    for(int i=0; i < 10; i++) avg = avg + nums[i];

    avg = avg /10;


    Console.WriteLine("Среднее: " + avg);

  }

}


Любопытно, что при инициализации массива можно также воспользоваться оператором new, хотя особой надобности в этом нет. Например, приведенный ниже фрагмент кода считается верным, но избыточным для инициализации массива nums в упомянутой выше программе.


int[] nums = new int[] { 99, 10, 100, 18, 78, 23,

63, 9, 87, 49 };


Несмотря на свою избыточность, форма инициализации массива с оператором new оказывается полезной в том случае, если новый массив присваивается уже существующей переменной ссылки на массив. Например:


int[] nums;

nums = new int[] {99,10,100,18,78, 23,

63, 9, 87, 49 };


В данном случае переменная nums объявляется в первом операторе и инициализируется во втором.

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


int[] nums = new int[10] {99, 10, 100, 18, 78, 23,

63, 9, 87, 49 };


В этом объявлении размер массива nums задается равным 10 явно.


Соблюдение границ массива

Границы массива в C# строго соблюдаются. Если границы массива не достигаются или же превышаются, то возникает ошибка при выполнении. Для того чтобы убедиться в этом, попробуйте выполнить приведенную ниже программу, в которой намеренно превышаются границы массива.


// Продемонстрировать превышение границ массива.

using System;

class ArrayErr {

  static void Main() {

    int[] sample = new int[10];

    int i;

    // Воссоздать превышение границ массива.

    for(i =0; i < 100; i = i+1)

      sample[i] = i;

  }

}


Как только значение переменной i достигает 10, возникнет исключительная ситуация типа IndexOutOfRangeException, связанная с выходом за пределы индексирования массива, и программа преждевременно завершится. (Подробнее об исключительных ситуациях и их обработке речь пойдет в главе 13.)


Перейти на страницу:

Похожие книги

1001 совет по обустройству компьютера
1001 совет по обустройству компьютера

В книге собраны и обобщены советы по решению различных проблем, которые рано или поздно возникают при эксплуатации как экономичных нетбуков, так и современных настольных моделей. Все приведенные рецепты опробованы на практике и разбиты по темам: аппаратные средства персональных компьютеров, компьютерные сети и подключение к Интернету, установка, настройка и ремонт ОС Windows, работа в Интернете, защита от вирусов. Рассмотрены не только готовые решения внезапно возникающих проблем, но и ответы на многие вопросы, которые возникают еще до покупки компьютера. Приведен необходимый минимум технических сведений, позволяющий принять осознанное решение.Компакт-диск прилагается только к печатному изданию книги.

Юрий Всеволодович Ревич

Программирование, программы, базы данных / Интернет / Компьютерное «железо» / ОС и Сети / Программное обеспечение / Книги по IT
Разработка приложений в среде Linux. Второе издание
Разработка приложений в среде Linux. Второе издание

Книга известных профессионалов в области разработки коммерческих приложений в Linux представляет СЃРѕР±РѕР№ отличный справочник для широкого круга программистов в Linux, а также тех разработчиков на языке С, которые перешли в среду Linux из РґСЂСѓРіРёС… операционных систем. РџРѕРґСЂРѕР±но рассматриваются концепции, лежащие в основе процесса создания системных приложений, а также разнообразные доступные инструменты и библиотеки. Среди рассматриваемых в книге вопросов можно выделить анализ особенностей применения лицензий GNU, использование СЃРІРѕР±одно распространяемых компиляторов и библиотек, системное программирование для Linux, а также написание и отладка собственных переносимых библиотек. Р

Майкл К. Джонсон , Эрик В. Троан

Программирование, программы, базы данных