Шаг 49.
Язык программирования C#. Начала
Массивы. Одномерные массивы (продолжение)

    На этом шаге мы рассмотрим простой пример использования одномерного массива.

    Как пример создания и использования массива рассмотрим приведенную ниже программу. Там создается массив целых чисел, а затем этот массив заполняется числами, которые при делении на 3 в остатке дают 1 (то есть речь о числах 1, 4, 7, 10, 13, 16 и так далее).

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace pr49_1
{
    class Program
    {
        static void Main()
        {
            // Создание массива из 12 чисел: 
            int[] nums = new int[12];
            // Перебор элементов массива: 
            for(int k=0; k<nums.Length; k++){
                // Присваивание значения элементу массива: 
                nums[k] = 3 * k + 1;
                // Отображение значения элемента массива:
                Console.Write("| " + nums[k] + " ");
            }
            Console.WriteLine("|");
            // Задержка:
            Console.ReadLine();
        }
    }
}
Архив проекта можно взять здесь.

    Результат выполнения программы такой, как показано ниже.


Рис.1. Результат выполнения программы

    Программа очень проста. В теле главного метода командой

  int[] nums = new int[12]; 
создается массив, состоящий из 12 целочисленных элементов. Ссылка на массив записывается в переменную массива nums. После создания массива его элементы существуют, но им необходимо присвоить значения. Для этого мы запускаем цикл, в котором индексная переменная k принимает начальное значение 0. Это значение индекса первого (начального) элемента в массиве.


Индексная переменная k объявлена в первом блоке конструкции цикла for. Поэтому переменная k доступна только в цикле, но не за его пределами. Напомним общее правило, определяющее область доступности переменной: оно гласит, что переменная доступна в пределах того блока, в котором она объявлена. Для переменной k таким "блоком" является цикл.

    За каждую итерацию переменная k увеличивает свое значение на единицу (благодаря команде k++ в третьем блоке конструкции цикла for). Цикл продолжает работу, пока истинно условие k<nums.Length. Оно означает, что значение индексной переменной k не должно превышать значение выражения nums.Length. Значение выражения nums.Length - это размер массива. Учитывая, что переменная k принимает только целочисленные значения, легко догадаться, что последнее значение переменной k, при котором еще будут выполняться команды в теле цикла, равно nums.Length-1. Это значение на единицу меньше размера массива и совпадает со значением индекса последнего элемента в массиве nums (напомним, что индекс последнего элемента в одномерном массиве всегда на единицу меньше размера этого массива). Таким образом, переменная k последовательно пробегает значения всех элементов массива nums.

    За каждую итерацию в теле цикла выполняются такие команды. Сначала командой

  nums[k] = 3*k + l
элементу с индексом k присваивается значение 3*k+1. Здесь мы учли, что для чисел, которые при делении на 3 в остатке дают 1, может быть использована формула 3k+1, где целое число k может принимать значения 0, 1,2 и так далее. Легко проверить, что, используя эту формулу, последовательно получаем числа 1, 4, 7, 10 и так далее.


Числа, которые при делении на число А дают в остатке число В, рассчитываются по формуле Аk + B, где параметр k может принимать значения 0, 1, 2 и так далее.

    После того как значение очередному элементу массива присвоено, элемент (его значение) отображается в консольном окне. Для этого использована команда

  Console.Write("| " + nums[k] + " ");
в теле цикла. В консольное окно выводится вертикальная черта, пробел, значение элемента и еще один пробел. Причем, поскольку использован метод Write() , все сообщения выводятся в одну строку. В результате в консольном окне в одной строке появится последовательность значений элементов массива. Значения разделяются пробелами и вертикальными разделителями. Но после последнего элемента (и пробела) вертикальной черты не будет. Она добавляется командой
  Console.WriteLine("|");
уже после завершения конструкции цикла.

    На следующем шаге мы закончим изучение этого вопроса.




Предыдущий шаг Содержание Следующий шаг