int[ ][ ] а = { new int [5], new int [3], new int [4]};
Сатылы жиым элементтерін жазу кезінде әр өлшем бір тік жақшалар ішінде орналасады:
а[1][2] a[i][j] a[j][i]
System.Array класы
С# жиымдарының барлығы да Array атты базалық класс негізінде құрылған, оның қол-данушыға пайдалы бірнеше тәсілдері мен қасиеттері бар, солардың бірсыпырасын қа-рап шығайық.
Элементі
Түрі
Сипатталуы
Length
Қасиет
Жиым элементтерінің саны (барлық өлшемдері бойынша)
Length қасиеті әртүрлі ұзындықтағы жиым-дарды өңдеу алгоритмін жүзеге асырады, мысалы, сатылы жиымдарды өңдеу. Жиым өлшемін беру орнына осыны қолдану жиым шегінен шығып кетуді болдырмайды.
Келесі программада бір өлшемді жиыммен жұмыс істеу кезіндегі Array класы элемент-терін қолдану мысалы көрсетілген.
using System;
namespace Listing6_3
{ class Classl
{
static void Main()
{
int[ ] a = {24, 50, 18, 3, 16, -7, 9, -1 };
PrintArray( "Исходный массив:", a );
Console.WriteLine( Array.IndexOf( a, 18 ) );
Array.Sort(a);
PrintArray( "Упорядоченный массив:“,a);
Console.WriteLine(Array.BinarySearch(a, 18) );
}
public static void PrintArray( string header, int[] a )
{
Console.WriteLine( header );
for ( int i = 0; i < a.Length; ++i )
Console.Write( "\t" + a[i] );
Console.WriteLine( );
}
}
}
Sort, IndexOf және BinarySearch тәсілде-рі статикалық тәсіл болып табылады, сол себепті оларды класс атын (экземпляр атын емес) көрсету арқылы пайдаланамыз да, жиым атын да береміз. Екілік іздеу тек рет-телген жиымға ғана қолданылады, ол IndexOf тәсіліндегі сызықтық іздеуден жылдам орындалады.
Программада 18-ге тең мәні бар жиым элементін осы екі тәсілмен де іздеу жүргізіледі.
Class1 класында қосымша PrintArray статикалық тәсілі сипатталған, ол жиымды экранға шығару үшін қолданылады. Оған екі параметр беріледі: header тақырып жолы және жиым. Жиым элементтерінің саны тәсіл ішінде Length қасиеті арқылы анықта-лады.
Сонымен, бұл тәсілді кез келген бір өлшемді жиымды экранға шығару үшін пайдалануға болады екен.
PrintArray тәсілін бір өлшемдіден басқа жиымдарға қолдану үшін оның екінші Array параметрін сипаттау керек, бірақ мұнда жиым элементінің мәнін GetValue тәсілі көмегімен алу қажет, өйткені Array класы үшін индекс арқылы элементті анықтау ісі қарастырыл-маған.
Жалпы түрде жиымды экранға шығару әрекеті былай атқарылады.
public static void PrintArray( string header.Array a )
{ Console.WriteLine( header );
for ( int i = 0; i < a.Length; ++i )
Console.Write( "\t" + a.GetValue(i) );
Console.WriteLine();
}
Келесі программада Array класы элементтері сатылы жиым үшін қолданылған.
using System;
namespace ConsoleApplication1
{
class Classl
{
static void Main( )
{
int[ ][ ] a = new int[3][ ];
a[0] = new int[5] { 24, 50, 18, 3, 16 };
a[1] = new int[3] { 7, 9, -1 };
a[2] = new int[4] { 6, 15, 3, 1 };
Console.WriteLine("Исходный массив:");
for (int i = 0; i < a.Length; ++i)
{
for (int j = 0; j < a[i].Length; ++j)
Console.Write("\t" + a[i][j]);
Console.WriteLine();
}
Console.WriteLine(Array.IndexOf(a[0], 18));
}
}
}
Цикл ішінде жолдар бойынша әрбір жиым ұзын-дығының қалай анықталғанына назар аудару керек.
Foreach циклі ( әрбірі үшін)
Бұл оператор топталған мәліметтер элементтерін бір-бірден қарастыру үшін керек. Мұндай топқа жиым (массив) жатады. Foreach операторының қолайлылығы – жиым элементінің санын анықтап, оның индексін бір-бірден арттырып отырмаймыз, тек жиымның барлық элементтерін қарастыру қажеттілігін көрсетеміз. Оператордың жазылуы:
foreach ( типі аты in өрнек ) { операторлар }
Мұндағы аты циклдің жергілікті айнымалысын көрсетеді, ол өрнек түрінде аты берілген жиымның барлық элементтерінің мәнін біртіндеп қабылдай-ды. Цикл ішінде оның айнымалысымен амалдар орындалады.
Мысалы, мынадай жиым берілген болсын:
int[] a = {24, 50, 18, 3, 16, -7, 9, -1};
Жиым элементтерін экранға шығару былай орындалады:
foreach ( int x in a )
{ Console.WriteLine( x ); }
Мұнда цикл ішінде орындалатын жалғыз оператор-ды жүйелі жақшаға алмаса да болады.
Енді бір өлшемді жиымды өңдейтін программаны қарастырайық, онда жиымның теріс элементтерінің қосындысы, саны және ең үлкен элементі анықта-лады.