{"id":4035,"date":"2024-09-04T10:18:16","date_gmt":"2024-09-04T05:18:16","guid":{"rendered":"https:\/\/yarat.uz\/?p=4035"},"modified":"2025-03-19T15:27:03","modified_gmt":"2025-03-19T10:27:03","slug":"massivlar-18","status":"publish","type":"post","link":"https:\/\/yarat.uz\/?p=4035","title":{"rendered":"Massivlar [18+]"},"content":{"rendered":"<p style=\"text-align: center;\"><strong>Massiv tushunchasi<\/strong><\/p>\n<p style=\"text-align: justify;\"><strong>Massiv<\/strong> (&#8220;array&#8221;) &#8211; bu bir xil qiymat turidagi o&#8217;zgaruvchilarning umumiy nom va indeksi (elementning massivdagi tartibi) bo&#8217;yicha murojaat qilish mumkin bo&#8217;lgan to&#8217;plami.<\/p>\n<p style=\"text-align: justify;\">Ya&#8217;ni, massiv bitta umumiy nom bilan nomlanadigan va mustaqil tartib raqamiga ega bo&#8217;lgan o&#8217;zgaruvchilar to&#8217;plami hisoblanadi.\u00a0Arduinoda massivni e&#8217;lon qilish uchun, uning nomidan keyin kvadrat qavslar ko&#8217;rsatilishi kerak.\u00a0Uni e&#8217;lon qilish tartibi quyidagicha:<\/p>\n<p style=\"text-align: justify;\"><strong>&lt;qiymat <\/strong><strong>turi&gt; &lt;massiv nomi&gt;[massiv o&#8217;lchami]; <\/strong>Masalan: byte raqam[256];<\/p>\n<p style=\"text-align: justify;\">Kompilyatorga massiv o&#8217;lchamini (elementlar sonini) 3 xil usulda ko&#8217;rsatish mumkin. <strong>1-usul:<\/strong> kvadrat qavsda elementlar soni aniq ko&#8217;rsatib qo&#8217;yiladi; <strong>2-usul:<\/strong> kvadrat qavsda o&#8217;lchami ko&#8217;rsatilmaydi, lekin barcha elementlar figurali qavsda aniq ko&#8217;rsatib qo&#8217;yiladi; <strong>3-usul<\/strong> (aralash usul): kvadrat qavsda o&#8217;lchami va figurali qavsda elementlari aniq ko&#8217;rsatiladi, bunda kvadrat qavsdagi raqam bilan figurali qavsdagi elementlar soni mos kelmasa, kvadrat qavsdagi raqam elementlar sonidan katta bo&#8217;lishi kerak.<\/p>\n<p style=\"text-align: justify;\">Global e&#8217;lon qilingan massiv o&#8217;lchami aniq ko&#8217;rsatilishi shart (o&#8217;zgaruvchan o&#8217;lchamga ega bo&#8217;la olmaydi). Massiv qiymat turi va nomidan oldin <strong>const<\/strong> yoki <strong>#define<\/strong> operatorlari yordamida e&#8217;lon qilinishi kerak. Lokal (bir funksiya ichida) e&#8217;lon qilingan massiv o&#8217;lchami o&#8217;zgaruvchan (o&#8217;zgaruvchi bilan e&#8217;lon qilingan) bo&#8217;lishi ham mumkin.<\/p>\n<p style=\"text-align: justify;\">Massiv e&#8217;lon qilinganidan keyin, uning elementlariga murojaat qilishda (qiymat o&#8217;zlashtirishda) ham kvadrat qavslardan foydalanish mumkin. Lekin elementning tartib raqami (indeksi) har doim 0 dan boshlab hisoblanadi!<\/p>\n<p style=\"text-align: justify;\">Ba&#8217;zida massiv o&#8217;lchamini aniqlashda <strong><em>sizeof()<\/em><\/strong> funksiyasidan ham foydalaniladi. Biroq bu funksiya massiv elementlari sonini emas, uning elementlarining xotiradan egallaydigan joyini &#8211; &#8220;<strong><em>og&#8217;irligini<\/em><\/strong>&#8221; anglatadi. Masalan, <em>bool, <\/em><em>byte<\/em> va <em>char<\/em> qiymat turlaridagi elementlar har biri 1 baytdan joy egallasa, <em>int, float<\/em> va boshqa qiymat turlari uchun 2 bayt va undan ko&#8217;proq joy talab qilinadi. Bunday vaziyatlarda, massiv elementlari sonini aniqlash uchun uning og&#8217;irligini 0-indeksli element og&#8217;irligiga bo&#8217;lish yetarli:\u00a0<em>sizeof(sonlar) \/ sizeof(sonlar[0]).<\/em><\/p>\n<p style=\"text-align: justify;\">Massivlar\u00a0bir o&#8217;lchovli yoki\u00a0ko&#8217;p o&#8217;lchovli bo&#8217;lishi mumkin. <strong>Ko&#8217;p o&#8217;lchovli massiv<\/strong> &#8211; ikki va undan ortiq o&#8217;lchovga bo&#8217;lgan massiv turi. Bunda, massiv elementiga murojaat qilish uchun, massivning har bir o&#8217;lchovi uchun o&#8217;zining indeksi ko&#8217;rsatiladi. Ko&#8217;p o&#8217;lchovli massivni e&#8217;lon qilish paytida kamida oxirgi 2 ta o&#8217;lchovning o&#8217;lchamlari (elementlari soni) aniq ko&#8217;rsatilishi kerak: <strong>sonlar[][2] <\/strong>yoki<strong> koordinata[][2][-4]<\/strong> kabi.<\/p>\n<p style=\"text-align: justify;\">Biz ko&#8217;p o&#8217;lchovli massivlardan 2 o&#8217;lchovli massivni ko&#8217;rib chiqamiz. 2 o&#8217;lchovli massiv elementlarini matritsa yoki jadval ko&#8217;rinishida e&#8217;lon qilish mumkin. Bunda, dastlab qatorlar, so&#8217;ng ustunlar ko&#8217;rsatiladi.<\/p>\n<p style=\"text-align: justify;\">2 o&#8217;lchovli massivni e&#8217;lon qilish tartibi quyidagicha bo&#8217;ladi: <strong>&lt;qiymat turi&gt; &lt;massiv nomi&gt;[qator][ustun];<\/strong><\/p>\n<p style=\"text-align: justify;\">Masalan: int sonlar[][4] = {<br \/>\n{0, 1, 2, 3},<br \/>\n{4, 5, 6, 7},<br \/>\n{8, 9, 10, 11},<br \/>\n};<\/p>\n<p>Xuddi shu massivni 1 ta qatorda ham ifodalash mumkin: int sonlar[][4] = {{0, 1, 2, 3}, {4, 5, 6, 7}, {8, 9, 10, 11}};<\/p>\n<p style=\"text-align: justify;\">Ya&#8217;ni, massiv elementiga murojaat qilish uchun dastlab uning qatori indeksini, keyin ustuni indeksini ko&#8217;rsatish zarur.<\/p>\n<p style=\"text-align: justify;\">Massiv elementlari bilan xuddi oddiy o&#8217;zgaruvchilar bilan ishlagandek amallarni bajarish mumkiin.<\/p>\n<p>Massiv bilan ishlashda quyidagi maxsus funksiyalardan keng foydalaniladi:<\/p>\n<p style=\"text-align: justify;\"><strong>memset(sonlar, son, uzunlik)<\/strong>\u00a0&#8211; <em>&#8220;sonlar&#8221; nomli, &#8220;uzunlik&#8221; o&#8217;lchovli massivni ko&#8217;rsatilgan son bilan to&#8217;ldirish.<\/em><\/p>\n<p style=\"text-align: justify;\"><strong>memcmp(sonlar1, sonlar2, uzunlik)<\/strong>\u00a0&#8211; <em>&#8220;sonlar1&#8221; va &#8220;sonlar2&#8221; nomli massivlarni o&#8217;lchamini &#8220;uzunlik&#8221; o&#8217;lchamigacha solishtirish. Agar elementlar bir xil bo&#8217;lsa, 0 qiymati ko&#8217;rsatiladi.<\/em><\/p>\n<p style=\"text-align: justify;\"><strong>memcpy(sonlar2, sonlar1, uzunlik)<\/strong>\u00a0&#8211; <em>&#8220;sonlar1&#8221; massivi elementlarini &#8220;uzunlik&#8221; o&#8217;lchovigacha &#8220;sonlar2&#8221; massiviga nusxalash.<\/em><\/p>\n<p style=\"text-align: justify;\">Misollar:<\/p>\n<p style=\"text-align: justify;\"><div class=\"su-spoiler su-spoiler-style-fancy su-spoiler-icon-plus su-spoiler-closed\" data-scroll-offset=\"0\" data-anchor-in-url=\"no\"><div class=\"su-spoiler-title\" tabindex=\"0\" role=\"button\"><span class=\"su-spoiler-icon\"><\/span>Massiv bilan ishlashga oid misollar<\/div><div class=\"su-spoiler-content su-u-clearfix su-u-trim\">\n<p style=\"text-align: justify;\"><strong>int sonlar1[10];<\/strong> &#8211; <em>int turiga mansub, 10 ta elementga (o&#8217;lchamga) ega bo&#8217;lgan massivni e&#8217;lon qilish. Elementlar oldindan ko&#8217;rsatib qo&#8217;yilmaydigan, 1-usul;<\/em><\/p>\n<p style=\"text-align: justify;\"><strong>byte sonlar2[] = {2, 3, 4, 5, };<\/strong> &#8211; <em>byte turiga mansub, elementlari oldindan ko&#8217;rsatib, e&#8217;lon qilingan massiv (2-usul). Bunda, oxirgi &#8220;,&#8221; (vergul) belgisidan keyingi element ko&#8217;rsatilmaganligi uchun, massiv o&#8217;lchami 4 ga teng deb qabul qilinadi;<\/em><\/p>\n<p style=\"text-align: justify;\"><strong>float sonlar3[4] = {0.8, -1.5, 3.0};<\/strong> &#8211; <em>float turiga mansub, o&#8217;lchami va elementlari oldindan ko&#8217;rsatib, e&#8217;lon qilingan massiv (3-usul). Bunda, 4-element ko&#8217;rsatilmaganligi sababli, uning qiymati &#8220;0.0&#8221; (nol) deb qabul qilinadi;<\/em><\/p>\n<p style=\"text-align: justify;\"><strong>char matn[20] = {&#8216;y&#8217;, &#8216;a&#8217;, &#8216;r&#8217;, &#8216;a&#8217;, &#8216;t&#8217;, &#8216;.&#8217;, &#8216;u&#8217;, &#8216;z&#8217;, &#8216;-&#8216;, &#8216;2&#8217;, &#8216;0&#8217;, &#8216;2&#8217;, &#8216;4&#8217;};<\/strong> &#8211; char <em>turiga mansub, o&#8217;lchami va elementlari oldindan ko&#8217;rsatib, e&#8217;lon qilingan massiv (3-usul). Bunda, 14-20-elementlari ko&#8217;rsatilmaganligi sababli, uning qiymati &#8221; (bo&#8217;shliq) deb qabul qilinadi;<\/em><\/p>\n<p style=\"text-align: justify;\"><strong>#define char matn[20] &#8211;<\/strong>\u00a0char <em>turiga mansub, o&#8217;lchami va elementlari oldindan ko&#8217;rsatib, global e&#8217;lon qilingan massiv;<\/em><\/p>\n<p><strong>byte len = 4;<\/strong> <em>\/\/ massiv o&#8217;lchamini o&#8217;zgaruvchiga o&#8217;zlashtirish<\/em><strong><br \/>\nint sonlar[len];<\/strong> <em>\/\/ massiv o&#8217;lchamini o&#8217;zgaruvchi yordamida ko&#8217;rsatish<\/em><\/p>\n<p><strong>int sonlar[0] = 5;<\/strong> <em>\/\/ massivning 0-indeksli elementiga qiymat o&#8217;zlashtirilmoqda<\/em><\/p>\n<p style=\"text-align: justify;\"><strong>int sonlar[1] = sonlar2[2];<\/strong> \/\/<em> massivning 1-indeksli elementiga boshqa massivning 2-indeksli elementi qiymati o&#8217;zlashtirilmoqda<\/em><\/p>\n<p style=\"text-align: justify;\"><strong>int element = sonlar[1][2];<\/strong> <em>\/\/ 2 o&#8217;lchovli massivning 2-qator (1 indeksli) 3-ustunidagi (2 indekli) qiymatini <strong>element<\/strong> o&#8217;zgaruvchisiga o&#8217;zlashtirish;<\/em><\/p>\n<p style=\"text-align: justify;\"><strong>int sonlar[1][2] = -4;<\/strong> <em>\/\/ 2 o&#8217;lchovli massivning 2-qator 3-ustuniga <b>-4 <\/b>qiymatini o&#8217;zlashtirish;<\/em><\/p>\n<p style=\"text-align: justify;\"><strong>byte sonlar1[5] = {1, 2, 3, 4, 5};<br \/>\nbyte sonlar2[5];<\/strong> \/\/ <em>bo&#8217;sh massivni e&#8217;lon qilish<\/em><br \/>\n<strong>memset(sonlar2, 123, 5);<\/strong> \/\/ <em>sonlar2 massivini 123 qiymatli elementlar bilan to&#8217;ldirish; (natija: <\/em>sonlar2 = {123, 123, 123, 123, 123}<em>)<br \/>\n<\/em><strong>Serial.println(memcmp(sonlar1, sonlar2, 5) == 0);<\/strong> <em>\/\/ sonlar1 va sonlar2 massivi elementlari bir xilligini taqqoslash va natijani port monitoriga chiqarish (natija: <\/em>false<em>, chunki qiymatlari bir xil emas).<br \/>\n<strong>memcpy(sonlar2, sonlar1, 5);<\/strong> \/\/ sonlar1 massivi barcha elementlarini sonlar2 massiviga nusxalash (natija: <\/em>sonlar2 = {1, 2, 3, 4, 5}<em>)<br \/>\n<strong>Serial.println(memcmp(sonlar1, sonlar2, 5) == 0);<\/strong> \/\/ sonlar1 va sonlar2 massivi elementlari bir xilligini taqqoslash va natijani port monitoriga chiqarish <\/em>(<em>natija: <\/em>true, chunki qiymatlari bir xil)<em>.<br \/>\n<\/em><\/p>\n<\/div><\/div>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify;\">\n","protected":false},"excerpt":{"rendered":"<p>Massiv tushunchasi Massiv (&#8220;array&#8221;) &#8211; bu bir xil qiymat turidagi o&#8217;zgaruvchilarning umumiy nom va indeksi (elementning massivdagi tartibi) bo&#8217;yicha murojaat qilish mumkin bo&#8217;lgan to&#8217;plami. Ya&#8217;ni, massiv bitta umumiy nom bilan nomlanadigan va mustaqil tartib raqamiga ega bo&#8217;lgan o&#8217;zgaruvchilar to&#8217;plami hisoblanadi.\u00a0Arduinoda massivni e&#8217;lon qilish uchun, uning nomidan keyin kvadrat qavslar ko&#8217;rsatilishi kerak.\u00a0Uni e&#8217;lon qilish tartibi quyidagicha: [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12],"tags":[],"class_list":["post-4035","post","type-post","status-publish","format-standard","hentry","category-qollanmalar"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/yarat.uz\/index.php?rest_route=\/wp\/v2\/posts\/4035","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/yarat.uz\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/yarat.uz\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/yarat.uz\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/yarat.uz\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=4035"}],"version-history":[{"count":7,"href":"https:\/\/yarat.uz\/index.php?rest_route=\/wp\/v2\/posts\/4035\/revisions"}],"predecessor-version":[{"id":4042,"href":"https:\/\/yarat.uz\/index.php?rest_route=\/wp\/v2\/posts\/4035\/revisions\/4042"}],"wp:attachment":[{"href":"https:\/\/yarat.uz\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=4035"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/yarat.uz\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=4035"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/yarat.uz\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=4035"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}