Նախկինում ուսումնասիրել ենք C#-ում տվյալների պահպանման համար նախատեսված գործիքակազմը՝ ի դեմս պարզագույն տիպերի փոփոխականների։ Այժմ ժամանակն է ծանոթանալ ինֆորմատիկայի մեջ լայն կիրառություն ունեցող մեկ այլ գործիքի՝ զանգվածների։
Զանգվածն (array) իրենից ներկայացնում է նույն անվան տակ խմբավորված փոփոխականների հավաքածու։ Այն հնարավորություն է տալիս հիշողության մեջ պահել նույն տիպի ցանկացած քանակի փոփոխական՝ դրանք հասցեավորելով հերթական համարներով։
Եթե մեզ հարկավոր է պահել տասը անուն, հնարավոր է հայտարարել տասը արանձին փոփոխական և դրանց տալ համապատասխան արժեքներ՝
string str1 = "Alpha"; string str2 = "Bravo"; string str3 = "Charlie"; string str4 = "Delta"; // և այլն․․․
Սակայն այս մեթոդն այնքան էլ արդյունավետ չէ՝ որոշ դեպքերում մեզ կարող են պետք գալ շատ մեծ թվով կամ նույնիսկ անհայտ քանակով փոփոխականներ։ Զանգվածների կիրառմամբ նույն խնդրի լուծումը կունենա հետևյալ տեսքը՝
// Զանգվածի հայտարարումը նման է փոփոխականի հայտարարմանը // Ավելացվում է միայն [] փակագծերի զույգը // int number - Integer տիպի մեկ փոփոխական // int number[] - Integer տիպի փոփոխականների զանգված string words[] = {"Alpha", "Bravo", "Charlie", "Delta", "Echo"} // և այլն․․․ // Զանգվածի կոնկրետ փոփոխական կարդալու կամ փոփոխելու համար // օգտագործվում է դրա հերթական համարը (index) // Հերթական համարները ինֆորմատիկայում սովորաբար սկսվում են 0֊ից words[0] // Alpha words[1] // Bravo words[2] = "New name" // words[] = {"Alpha", "Bravo", "New Name", "Delta", "Echo"} words[3] = words[2]; // words[] = {"Alpha", "Bravo", "New Name", "New Name", "Echo"}
Զանգված հայտարարելիս ձևավոր փակագծերի ներսում արժեքների նշումը կոչվում է զանգվածի սկզբնական արժեվորում (initialization)։ Եթե մեզ դեռևս հայտնի չեն սկզբնական արժեքները, կարելի է փոխարենը զանգվածը հայտարարել միայն տիպը և չափը նշելով։
float numbers[] = new float[10]; string names[] = new string[100];
Զանգվածը կարելի է հայտարարել նաև նշելով և՛ երկարությունը, և՛ տարրերը։
int numbers[] = new int[5] {0, 13, -4, 24, 6};
Կոնկրետ չափով զանգված ստեղծելիս հարկավոր է հաշվի առնել, որ քանակը հաշվվում է 1-ից, իսկ հերթական համարները՝ 0-ից։ Այսինքն, int numbers[] = new int[10];
հրամանով ստեղծված զանգվածը սկսվում է numbers[0]
-ից և ավարտվում numbers[9]
-ով (տարրերի ընդհանուր քանակը՝ 10)։
Զանգվածի սահմաններից դուրս գտնվող հերթական համար օգտագործելու դեպքում ծրագիրը կհանգի IndexOutOfRangeException
կոչվող սխալի (Exception-ներին և դրանց տեսակներին կանդրադառնանք ավելի ուշ)։
Բազմաչափ զանգվածներ
Որոշ խնդիրների լուծման ժամանակ անհրաժեշտ է լինում օգտվել հերթական համարներով տվյալներ հայթայթելու և պահպանելու հարմարությունից, սակայն մեկ չափանի զանգվածները չեն բավականացնում։ Այս պարագայում օգտագործվում են բազմաչափ զանգվածներ (multi-dimensional array)։
Նման խնդրի օրինակ կարող է հանդիսանալ շախմատի տախտակի մոդելավորումը ծրագրի մեջ՝ 64 առանձին փոփոխական հայտարարելն ընդհանրապես էֆեկտիվ չէ, 8 տարր պարունակող 8 տարբեր զանգված հայտարարելը նույնպես։ Փոխարենը կարող ենք օգտագործել երկչափանի զանգված՝
// Բազմաչափ զանգված հայտարարելիս քառակուսի փակագծերում ներառվում է ստորակետ // Ստորակետների քանակը մեկով պակաս է զանգվածի չափումների քանակից // string[] - 1D array // string[,] - 2D array // string[,,] - 3D array string[ , ] board = new string[8, 8]; board[0, 0] = "HOOK"; board[0, 1] = "KNIGHT"; board[0, 2] = "BISHOP";
Հարկ է նշել, որ բազմաչափ զանգվածները լինում են երկու տեսակի՝
- Ուղղանկյուն զանգվածներ (rectangular array)
- Անհարթ զանգվածներ (jagged array)
Այս տեսակների տարբերությունը կայանում է հետևյալում, ուղղանկյունաձև զանգվածի շարքերը պարունակում են հավասար թվով տարրեր, մինչդեռ անհարթ զանգվածն իրենից ներկայացնում է զանգվածներով լի զանգված (այսինքն, զանգված, որի տարրերը նույնպես զանգվածներ են)։ Ընդ որում, ամեն շարք ներկայացնող զանգվածները կարող են ունենալ տարբեր թվով տարրեր։
Կախված տեսակից, փոխվում է հայտարարման գրելաձևը՝
int[,] rectNumbers = new int[5,3]; // Ուղղանկյունաձև int[][] jaggedNumbers = new int[5][3]; // Անհարթ // Անհարթ զանգված հայտարարելիս հնարավոր է դատարկ թողնել երկրորդ չափման երկարությունը int [][] newJaggedArray = new int[4][]; newJaggedArray[0] = new int[1]; newJaggedArray[1] = new int[5]; newJaggedArray[2] = new int[3]; newJaggedArray[3] = new int[4]; /* Մեր անհարթ զանգվածն ունի հետևյալ տեսքը (X-ով նշված են int տիպի տարրերը) X X X X X X X X X X X X X */ // Անհարթ եռաչափ զանգված ստանալու համար հնարավոր է համատեղել անհարթ և ուղղանկյուն զանգվածներ int [][,] 3dArray= new int[3][,] { new int[,] { {5, 2}, {0, -1} }, new int[,] { {11, 133 , 5}, {6, 7, 5} }, new int[,] { {90}, {5} } }
Զանգվածների հիմնական հատկություններից մեզ հաճախ հետարքրքում է նրա երկարությունը (տարողունակությունը), որը պահվում է զանգվածի Length
դաշտում (թե ինչ է օբյեկտի դաշտը, կտեսնենք օբյեկտ-կողմնորոշված ծրագրավորում և կլասսներ ուսումնասիրելիս)։
int[] numbers = new int[5]; // numbers.Length արտահայտությունը կվերադարձնի 5 int[,] numbers = new int[3, 4]; // numbers.Length-ը կվերադարձնի 12
Ամփոփում
Այս անգամ ծանոթացանք զանգվածների հետ։
- Հասկացանք դրանց կիրառությունը
- Աշխատեցինք միաչափ և բազմաչափ զանգվածների հետ
- Սովորեցինք դրանց հայտարարման և սկզբնական արժեվորման հնարավոր գրելաձևերը
- Հասկացանք բազմաչափ զանգվածների տեսակները և դրանց տարբերությունը
Top comments (0)