Murakkab turlar massivlar, bir o‘lchovli massivlarni dasturlash tilida ifodalanishi asosida dastur yaratish
Murakkab turlar massivlar, bir o‘lchovli massivlarni dasturlash tilida ifodalanishi asosida dastur yaratish Reja. 1. Massiv haqida tushuncha va uning qo’llanish holatlari 2. Bir o’lchamli massivlar va ularni e’lon qilish 3. Massivlardan foydalanish va initsializatsiyalash
Xotirada ketm a - ke t (re g ulyar) joylashgan bir xil turdagi qiymatlarga m a s s iv deyi l adi. Odatda mas s ivlarga zarura t , katta h ajmdagi, lekin cheklangan miqdordagi va tartibla n gan qiymatlarni qayta ishlash b i lan bo g’ liq masalalarni yechishda yuzaga keladi. F a r az qila y lik, talabalar guruhining reyting ballari bilan ish l ash masala s i qo’yilgan. Unda guruhning o’rtacha rey t ingini aniqlash, rey t inglarni kamayishi bo’yicha tartiblash, konkret talabaning reytingi haqida ma’l u mot berish va boshqa m a sa l a os t ilarini yech i sh zarur bo’lsi n . Qa y d etilg a n masalalarni yechish uchun beril g anlarning (reytin g larnin g ) tartib-lang a n ketma - ket l igi zar u r bo’ladi. B u yerda t artiblang a nlik ma’n o si shundaki, ketma-ketlikning har b i r qiymati o’z o’rniga ega bo’ladi (birinchi talabaning reytingi massivda b irinchi o’rinda, ikkinchi talabaniki - i k k i nchi o’rinda va hakoza). Berilga n lar ketma-ket-ligini ik k i xil usulda hosil qilish mumkin. Bir i nchi yo’l - har bir reyting uchun alohida o’zgaruvchi aniqlash: Reyting1, …,Reyt i ngN. Lekin, guruhdagi talabalar soni ye t arlicha katta bo’l g anda, bu o’zgar u v-chilar qatnashgan programmani tuzish katta qiyinchiliklarni yu z aga keltiradi. Ikkinchi yo’l - berilg a nlar ketma-ke t lig i ni yagona n om bilan aniqlab, u n ing qiymatla r iga murojaatni, shu qiymatlar n ing ket m a- ketlikda joylashgan o’rnining nomeri (i n de k si) orqali ama l ga oshirishdir. Re y t inglar ketma-ketligini Reyting de b nomlab, unda g i qiymatlariga Reyt i ng 1 ,…,Reyting N ko’rinishida murojaat qil i sh mumkin. Odatda berilganl a rning bunday k o’rini sh iga massivlar deyiladi. Massivlarni matematikadagi sonlar vektoriga o’xshatish mumkin, chunki vektor h am o’z i ning individual nom i ga ega va u fiksirla n gan miqdordagi bir tur d agi qiymatlardan - son l ardan iboratdir. Demak, mas s iv - b u fiksi r langan miqdord a gi ayr i m qiymatlarning (mas s iv elementl a rinin g ) tartibla n gan majmuasidir. Ba r cha elementlar bir
x il turda bo’l i shi kerak va bu tur ele me nt turi yoki massiv uchun t a ya nch tur deb nomlanadi. Yu qoridagi keltirilgan misolda Reyti n g - haqiqiy turdagi vektor deb nomlanadi. Programmada i sh latiladigan har bir konkret ma s siv o’zining individual n o m iga ega bo’ l ishi kerak. Bu n o mni t o’liq o’ zgaruvchi deyiladi, chunki uni n g qiymati ma s sivn i ng o’ z i bo’ladi. Massivning har bir elementi massiv nomi, hamda kva d rat qav s ga olingan va element selektori deb nomlanuvchi indeksni ko’rsatish orqali oshkor ravishda belgilanadi. Murojaat sintaksisi: <massiv n o mi >[<i nde ks>] Bu ko’rinishga xususiy o’ zgaruvchi deyiladi, chunki uning qiymati mas- sivni n g alohida elementidir. Bizning misolda Reyti n g massi v ining alohida komponentalariga Reyting[1],…,Reyting[N] x ususiy o’zg a ruv-chilar orqali murojaat qi l ish mumk i n. Boshqacha bu o’zgaruvchilar indeksli o’zgaruvchilar deyiladi. Massiv indeksi sifatida butun son qo’llanilad i . Umuman olganda indeks sifatida butun son qiymatini qabul qil a dig a n ixtiyoriy ifoda i sh latil i shi mumkin va uning qiymati massiv elementi nomerini ani q laydi. Ifoda sifatida o’zgaru v chi ham olinishi mumkinki, o’zgaruvchining qiymati o’zgarishi bilan murojaat qilinayotgan massiv elementi n i aniqlovchi indeks ham o’zgarad i . Shunday qil i b, programmadagi bitta indeksli o’zgar u vchi orqali massivning barcha ele me ntla r ini belgilash (aniqlash) mumkin bo’ladi. Masalan, Reyting[i] o’zgar u vchisi orqali i o’zgaruvch i ning qiymatiga bog’l i q ravishda Reyting massivining ixtiyoriy elementiga murojaat qilish mavjud. Umuman olganda massiv quyidagi xususiyatlari keltirilgan. Massiv - bu elementlar to'plamidir.
Massivdagi barcha elementlar bir xil turda bo’ladi. Bunday to'plam to'liq to'plamni tashkil qiladi. C++ da massivlar ma'lum turdagi ma'lumotlar elementlarini xotirada ketma-ketlikda saqlashga imkon beradi. Massivlarning ishlatilish sababi. Siz dasturni yozyapsiz, unda foydalanuvchi beshta butun sonni kiritishi va ularni ekranga chiqarishi mumkin. Ushbu vaziyatni hal qilishning usullaridan biri dasturda beshta alohida butun o'zgaruvchini e'lon qilish va ularda ko'rsatilgan qiymatlarni saqlashdir. Bunday e’lon qilish quyidagicha bo’lishi mumkin: int firstNumber = 0; int secondNumber = 0; int thirdNuinber = 0; int fourthNumber = 0; int fifthNumber = 0; Ammo agar foydalanuvchi 500 va undan ortiq sonlarni saqlashi va aks ettirishi kerak bo'lsa, u holda yuqoridagi tizim yordamida 500 ta shunday butun o'zgaruvchini e'lon qilishi kerak edi. Buni amalga oshirish uchun ko'p mehnat va sabr-toqat kerak. Agar foydalanuvchi 5 o'rniga 500 000 butun sonni so'rasa nima bo'ladi? Har biri nolga tenglashtiriladigan beshta butun sonli qatorni e'lon qilish to'g'riroq: int myNumbers[5] = {0}; Shunday qilib, agar 500000 ta butun sonni berishni so'rashgan bo'lsa, unda massivni muammosiz oshirish mumkin:
int manyNumbers[500000] = {0}; Besh belgidan iborat massivni quyidagicha aniqlash mumkin: char myCharacters[5]; Bunday massivlar statik massivlar deb ataladi, chunki ular tarkibidagi elementlarning soni, shuningdek ularga ajratilgan xotira hajmi kompilyatsiya vaqtida o'zgarmaydi. Dinamik massivlar haqida kursimizning keyingi mavzularida tanishamiz. Statik massivlarni e'lon qilish va initsializatsiyalash. Yuqoridagi kod satrlarida biz 0 qiymat bilan initsializatsiyalangan beshta int elementni (ya'ni butun sonlarni) o'z ichiga olgan myNumbers deb nomlangan massivini e'lon qildik. Shunday qilib, C++ da massivni e'lon qilish uchun sintaksis quyidagicha: element_tipi Massiv_nomi [Elementlar_miqdori] = {Boshlang’ich_qiymatlar-majburiy emas} Massivni e'lon qilish bilan bir qatorda shu zahoti uning barcha elementlari initsializatsiyalash mumkin. Shunday qilib, beshta butun sonli qatorni besh xil butun sonli qiymatlar bilan initsializatsiyalash mumkin: int myNumbers[5] = {34, 56, -21, 5002, 365}; Massivning barcha elementlari nol bo’lishi ham mumkin (standart qiymat kompilyator tomonidan taqdim etiladi):