Программирование на языке C#


  Объявление и инициализация одномерных массивов


Download 1.19 Mb.
Pdf ko'rish
bet33/66
Sana23.10.2023
Hajmi1.19 Mb.
#1717181
1   ...   29   30   31   32   33   34   35   36   ...   66
Bog'liq
Программирование на языке C#

9.2. 
Объявление и инициализация одномерных массивов
Массивы представляют собой ссылочную структуру, поэтому создание 
массива состоит из двух этапов: 
1) Объявление ссылки на массив; 
2) Инициализация ссылки/создание массива. 
Синтаксис объявления ссылки выглядит следующим образом 
тип данных [] ИмяМассива
По умолчанию ссылка ИмяМассива принимает значение 
null
. На 
втором этапе выполняется инициализация ссылки, т.е. создание 
массива в памяти с заданным количеством элементов. Создание 
массива выполняется с помощью оператора 
new
, для которого 
необходимо задать типДанных, и с помощью спецификатора 
размерности 
[ ]
задать нужное количество ячеек.
Массив можно проинициализировать в момент создания, для этого 
необходимо задать явные значения для каждой из его ячеек в 
фигурных скобках после спецификатора размерности. В общем случае 
инициализация может быть опущена. Синтаксическая конструкция 
создания массива выглядит следующим образом: 
ИмяМассива = 
new
типДанных [Количество Ячеек
{
инициализация}
Например, создадим массив целых чисел из 
N=5
элементов. В 
соответствии с рассмотренным синтаксисом: 
int N=5; 
int [] tmpArray; 
Array = new int [N]; //создан массив из 5-ти элементов 
значения которых равно 0 
В некоторых случаях, когда размерность массива известна, можно 
создавать массив в момент его объявления, что позволяет объединить 
два этапа в один, причем, также допускается инициализация элементов 
массива. Рассмотрим примеры. 
1. Объявление и инициализация массива, состоящего из 5 элементов, 
без оператора 
new
.
int [] Array = {1, 2, 3, 4, 5}; 
2.Варианты объявления и создания массива с заданным количеством 
элементов N с их инициализацией. 
int N = 5; 
49 


int [] Array = new int[N]{10, 20, 30, 40, 50}; 
В следующем примере создаем массив, но инициализируем всего 
две ячейки из десяти, что неверно, будет сгенерирована ошибка
поскольку нужно инициализировать все ячейки. 
int N = 10; 
int [] Array = new int[N]{10,20};
Далее, создаём массив из пяти элементов, но инициализация 
выполняется для шести, что не верно, будет сгенерирована ошибка, 
так как шестой ячейки нет.
int N = 5; 
int [] Array = new int[N]{10,20,30,40,50,60}; 
Инициализацию массивов можно выполнять по-разному
рассмотрим простейшие варианты на примере целочисленного 
массива. Можно организовать ввод элементов с консоли (листинг 4) 
или заполнить массив случайными числами (листинг 5). Рассмотрим 
реализации этих способов. 
Например, рассмотрим вариант заполнения элементов массива с 
консоли. Реализация представлена на листинге 4.
public static void Main (string[] args) 
{
try{ 
int size = 100; 
string input=""; 
int [] Array = new int[size]; 
for(int index=0;index < 100;index++){ 
input = Console.ReadLine(); 
Array [index] = int.Parse (input); 


catch(System.FormatException ){ 
Console.WriteLine("Неверный формат данных"); 


Листинг 4. 
Например, рассмотрим заполнение массива случайными числами 
public static void Main (string[] args){
int size = 100; 
int [] Array = new int[size]; 
50 


Random Rnd = new Random(); 
for(int index=0;index < 100;index++){
Array [index] = Rnd.Next(10,234); 


Листинг 5. 
Решая задачи с использованием массивов, нужно избегать 
ситуации, провоцирующие возникновения исключений, которые могут 
возникнуть в результате неправильного использования массива. К 
таким ситуациям можно отнести выход значения рабочего индекса за 
границы массива. Например, создадим массив, состоящий из трех 
элементов, 
int[] tmpArray = new int[3]; 
допустимые номера ячеек для tmpArray это номера 
0

1, 2,
следовательно обращение к ячейке под любым другим номером 
приведет 
к 
генерации 
исключения 
типа 
System.IndexOutOfRangeException. 
Следующий вариант исключительной ситуации заключается в 
работе с пустым массивом, т. е. объявленным, но не созданным. 
Например, после объявления ссылки на массив
int[] tmpArray = null; 
выполняется попытка обращения к какому либо элементу, например 
tmpArray[0] = 12; 
Такое обращение приводит к генерации исключения типа 
System.NullReferenceException

Заметим, что такие ошибки не 
обнаруживаются на этапе компиляции, так как с точки зрения 
синтаксиса все записано верно, возникают они на этапе выполнения 
программы, следовательно при реализации программ с участием 
массивов это нужно учитывать и не допускать.
В качестве примера вычислим сумму элементов массива с четными 
номерами (листинг 6).
public static void Main (string[] args) 
{
int size = 100; 
int Sum = 0; 
int [] tmpArray = new int[size]; 
Random Rnd = new Random(); 
for(int index=0;index < 100;index++){
tmpArray [index] = Rnd.Next(10,234); 
51 



for(int i=0;i < size - 2; i += 2){ 
Sum = Sum + tmpArray[i] 


Листинг 6. 
В первых четырех строках листинга 6 программы происходит 
объявление и инициализация переменных 
size
и 
sum

массива 
tmpArray 
размерности 
size
, и создание объекта 
Rnd типа Random. 
Первый цик
л for 
предназначен для заполнения массива случайными 
числами, полученные методом
Next объекта Rnd в диапазоне от 10 до 
234. 
Второй цикл 
for 
служит
для подсчета суммы элементов массива. 
Здесь индекс

меняет свои значения в диапазоне от 

до
size-2

шагом
i=i+2 
для перебора значений с четными номерами. Граница, 
заданная выражением 
size-2

Download 1.19 Mb.

Do'stlaringiz bilan baham:
1   ...   29   30   31   32   33   34   35   36   ...   66




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling