Daris 5 (Java).ppt
- Количество слайдов: 17
Дәріс № 5. Массивтер Java тілінде массив сілтеу түріне жатады. Жазылуы үш қадамнан тұрады. Бірінші қадам — хабарлау (declaration). Бұл қадамда тек массивтегі сілтенген (reference) айнымалылар түрі анықталады. Бұл үшін массив элементтерінің түрінің аты жазылады, яғни квадрат жақшаға қарапайым айнымалы емес массив сілтеуі көрсетіледі және айнымалылар аттары тіркеледі, мысалы, double[] а, b;
Бұнда double түріндегі массивке сілтенген екі айнымалы а және ь анықталған. Квадрат жақшаларды аттан кейін қоюға да болады, бұл қарапайым айнымалыларды анықтау үшін қолданылады: int I = 0, ar[], k = -1;
Бұнда бүтін түрдегі екі айнымалы i және k анықталған және бүтін түрдегі аг массивіне сілтенген. Екінші қадам — анықтау (installation). Бұл қадамда массив элементтерінің саны көрсетіледі, жедел жадыдан массивке орын бөлінеді, сілтенген- айнымалы массив адресін алады. Бұлардың барлығы Java тілінің —new түр операциясы арқылы орындалады. Мысалы, а = new double[5]; b = new double[100]; ar = new int[50];
Массив индекстері 0 басталады. а массиві 5 айнымалыдан тұрады а[0], а[1], , а[4]. Массивте а[5] элементі болмайды. Индекстерді кез келген бүтін long түрінен басқа сандармен беруге болады, мысалы, a[i+j], a[i%5], a[++i]. Үшінші қадам — инициализация (initialization). Бұл қадамда массив элементтері бастапқы мәнді алады. Мысалы, а[0] = 0. 01; а[1] = -3. 4; а[2] = 2. 89; а[3] = 4. 5; а[4] = -6. 7; for (int i = 0; i < 100; i++) b[i] = 1. 0 /i; for (int i = 0; i < 50; i++) ar[i] = 2 * i + 1;
Алғашқы екі қадамды біріктіруге болады: doublet] a = new double[5], b = new double[100]; int i = 0, ar[] = new int[50], k = -1; Алғашқы мәндерін де бірден беруге болады ол үшін оларды тұрақты немесе тұрақты өрнек түрінде үтір арқылы жазып фигуралық жақшаға аламыз. Бұл жағдайда массив элементтерінің санын көрсету қажет емес себебі ол алғашқы мән санына тең болады;
double[] а = {0. 01, -3. 4, 2. 89, 4. 5, -6. 7}; Екінші және үшінші қадамдарды біріктіруге болады: а = new double[ ] {0. 1, 0. 2, -0. 3, 0. 45, -0. 02}; new операциясының нәтижесін қолданып атсыз массив құруға болады, мысалы, былай: System. out. println(new char[] {'H', 'e', ‘l', 'o'});
Көпөлшемді массивтер Java тілінде массивтер массивов элементтері бола алады. Былай беруге болады: char[ ] с; бұл эквивалентті char с[ ]; немесе char с[ ][ ];
Осыдан кейін сыртқы массивті анықтаймыз: с = new char[3][]; Бұл 3 массив элементтерінен тұратын массив. Енді оның массив-элементтерін анықтаймыз: с[0] = new char[2]; с[1] = new char[4]; с[2] = new char[3]; Осы анықтаудан кейін айнымалы с. length тең 3, с[0]. length тең 2, c[l]. length тең 4 және с[2 ]. length тең 3.
Бастапқы мәнін береміз с [0] = 'a', с[0][1] = 'r', с[1][0] = 'г', с[1][1] = 'а', с[1][2] = 'у' және т. с. с. Ескерту Java тілінде екі өлшемді массив тік төртбұрышты болуы міндетті емес. Түсініктемені былай қысқартып жазуға болады: int[] [] d = new int[3] [4]; Ал бастапқы мәндерін былай береміз: int[][] inds = {{I, 2, 3}, {4, 5, 6}};
Төмендегі листингте 1. 6 Паскаль үшбұрыштың алғашқы 10 жолын есептеу программасының мысалы келтірілген. Үшбұрышты массив түрінде берілген. Листинг 1. 6. Паскаль үшбұрышы class Pascal. Triangle{ public static final int LINES = 10; // Тұрақтының анықталуы public static void main(String[] args) { int[][] p = new int [LINES] []; p[0] = new int[1]; System, out. println (p [0] = 1);
p[l] = new int[2]; p[l][0] = p[l][1] = 1; System. out. println(p[1][0] + " " + p[l][l]); for (int i = 2; i < LINES; i++){ p[i] = new int[i+l]; System. out. print((p[i][0] = 1) + " "); for (int j = 1; j < i; j++) System. out. print ( (p[i] [j] =p[i-l][j-l] -bp[i-l][j]) + " "); System. out. println (p [ i] [i] = 1) } } }
java. utii пакетінің Arrays класында массивтермен жұмыс істеудің көптеген әдістері бар. Оларды 4 топқа бөлуге болады. Массивтерді 18 статикалық әдіс арқылы сұрыптауға болады. 8 қарапайым түрден тұрады static void sort(type[] a) мұндағы type мына түрлердің біреуінде болуы мүмкін byte, short, int, long, char, float, double немесе Object.
Осы түрлерден тұратын сегіз әдіс массив элементтерін from индексінен бастап to индексіне дейін сұрыптайды: static void sort(type[] a, int from, int to) Comparator интерфейсін таратушы екі әдіс массивті немесе object түріндегі элементтерді реттейді: static void sort(Object[] a, Comparator c) static void sort(Object[] a, int from, int to, Comparator c) Сұрыптаудан кейін іздеуге болады. static int binary. Search(type[] a, type element)
мұндағы type — сегіз түрдің біреуі болады. Тоғызыншы іздеу әдісі былай болады static int binary. Search(Object[] a, Object element, Comparator c). Ол массивтен с объектісімен берілген element атты элементті іздейді. Іздеу әдістері табылған элемент индексін көрсетеді. Егер элемент табылмаса, онда теріс сан қайтарылады, ол кері ретпен қойылған индекс ретінде беріледі. 18 статикалық әдістер массивті немесе массив бөлігін көрсетілген value мәнімен толтырады: static void fill(type[], type value) static void fill(type[], int from, int to, type value)
мұндағы type — 8 түрдің біреуі немесе object түрі. Тоғыз статикалық логикалық әдістер массивті салыстырады: static boolean equals(type[] al, type[] a 2) мұндағы type — 8 түрдің біреуі немесе object түрі. Массивтер бірдей болуы керек, егер массив элементтерінің ұзындығы мен индекстері бірдей болса true мәні қайтарылады.
Листинг 7. 1. Arrays класына әдістерді қолдану import java. utii. *; class Arrays. Test{ public static void main(String[] args){ int[] a = {34, -45, 12, 67, -24, 45, 36, -56}; Arrays. sort(a) ; for (int i = 0; i < a. length; i++) System. out. print (a[i]. + " "); System. out. println(); Arrays. fill(a, Arrays. binary. Search(a, 12), a. length, 0); for (int i = 6; i < a. length; i++) System. out. print(a[i] + " "); System. out. println(); } }


