Jadval kattaliklar (massivlar)
Ikki o’lchovli jadval kattaliklar. Matritsalar bilan ishlash
Download 119 Kb.
|
16-Mavzu
3. Ikki o’lchovli jadval kattaliklar. Matritsalar bilan ishlash
Dasturlashda to’g’ri to’rtburchak shaklidagi jadval ko’rinishidagi ma’lumotlarni saqlash va qayta ishlashga to’g’ri keladi. Bunday ko’rinishdagi jadvallar matritsalar yoki ikki o’lchovli massivlar (jadvallar) deyiladi. Jadvalda n ta satr va m ta ustun elementlari bo’lsa, bunday jadvallar nm o’lchovli matritsa deyiladi. A = Jadvallarni lotin alifbosi xarflari orqali belgilanadi. Jadval elementlari aij ko’rinishda belgilanib, bunda i - satr tartib nomerini j – ustun tartib nomerini bildiradi. Agar matritsada satrlar soni ustunlar soniga teng bo’lsa, bunday matritsa kvadrat matritsa deyiladi, aks holda to’g’ri to’rtburchakli matritsa deyiladi. Jadal elementlarining tipi turlicha bo’lishi mumkin. Python dasturlash tilida bunday ko’rinishdagi jadvallarni massivlar deb ham yuritiladi. Python tilida massivlar uchun aniq bichim, tuzilma berilmagan, chunki bunday vazifani ro’yxat (list) orqali bajarish mumkin. Ro’yxatda ham ro’yxat elementlari bilan turli ko’rinishdagi amallarni bajarish mumkinlini ko’rib o’tganmiz. Ro’yxatdagi elemenilarni ustun shaklida tasavvur qilsak, har bir ustun elementini yana ro’yxat shaklida shaklida tashkil qilish mumkin. Bu holda biz matritsa ko’rinishidani elementlarni yaratgan bo’lamiz. Shuning uchun ham Python tilida massivlar uchun alohida tuzilma berilmagan. Ma’lumki massivlar bir xil tipli elementlardan tashkil topishi kerak, Python tilidagi ro’yxat esa turli tipdagi elementlardan tashkil topgan bo’lishi ham mukin. Massivlarni n ta elementdan tashkil topgan ro’yxat (satr) va ularning har biri m ta elementdan tashkil topgan ro’yxat (ustun) sifatida tushunish mumkin. Shunday qilib massivlarni satr ko’rinishidagi ro’yxatlar shaklida tasavvur qilish mumkin. Bunda ro’yxatdagi har bir element ham ro’yxat ko’rinishida bo’lishi mumkin. Python tilida matritsani barcha elementlari aniq berilgan bo’lsa, ularni bevosita yozish mumkin. Misol sifatida elementlari butun sonlardan iborat bo’lgan ikki satr va uchta ustunli quyidagi A = matritsani olaylik. Ushbu matritsa Python tilida quyidagicha yoziladi: A = [ [5, 7, 2], [3, 5, 8] ] Matritsa elementlariga murojaat qilish uchun matritsa nomi va kvadrat qavslar ichida satr va ustun tartib raqamlari orqali yozish kerak bo’ladi. Masalan, A[i][j] – i satr va j ustun kesishmasidagi elementni bildiradi Bunda A[0] birinchi satr bo’lib, uning elementlari [5, 7, 2] sonlar ro’yxatidan, A[1] ikkinchi satr bo’lib uning elementlari [3, 5, 8] sonlar ro’yxatidan iborat. Jadvalda A[0][0] = 5 ga, A[0][1] = 7 ga, ... , A[1][2] = 8 ga teng bo’ladi. Ikki o’lchovli massivlar bilan ishlashda ikkita ichma – ich joylashgan sikllardan foydalaniladi. Birinchi sikl satr raqamlari bo’yicha, ikkinchi sikl satrdagi elementlar soni bo’yicha ochiladi, ya’ni: A = [ [5, 7, 2], [3, 5, 8] ] for i in range(len(A)): for j in range(A[i]): print(A[i][j]) Natija:
7 2 3 5 8 Ushbu dasturning birinchi satrida A massiv o’zining elementlari bilan berilgan. Ikkinchi satrda tashqi sikl ochilib, satrlar bo’yicha, uchinchi satr ichki sikl bo’lib, ustunlar bo’yicha massiv elementlariga murojaat qiladi. Ikkinchi satrdan boshlab avvalo tashqi sikl parametri i = 0 ga teng bo’ladi, i = 0 < 2 shart bajarilganligi uchun boshqarish tashqi sikl tarkibiga kirgan uchinchi satrga beriladi. Uchinchi satrda ichki sikl parametri j = 0 qiymatni qabul qiladi. j = 0 < 3 shart bajarilganligi uchun ichki sikl tarkibiga kirgan print(A[i][j]) operatori bajariladi va oynaga A[0][0] ning qiymati 5 soni chiqariladi. Boshqarish yana ichki sikl parametriga uzatiladi. Ichki sikl parametri j bir soniga orttiriladi (j = j + 1 = 1), ya’ni j = 1 ga teng bo’ladi va siklning oxirgi qiymati 3 bilan solishtiriladi. j = 1 < 3 shart bajarilganligi uchun ichki sikl tarkibiga kirgan print(A[i][j]) operatori bajariladi va oynaga A[0][1] ning qiymati 7 soni chiqariladi. Boshqarish yana ichki sikl parametriga uzatiladi. Ichki sikl parametri j bir soniga orttiriladi (j = j + 1 = 2), ya’ni j = 2 ga teng bo’ladi va siklning oxirgi qiymati 3 bilan solishtiriladi. j = 2 < 3 shart bajarilganligi uchun ichki sikl tarkibiga kirgan print(A[i][j]) operatori bajariladi va oynaga A[0][2] ning qiymati 2 soni chiqariladi. Boshqarish yana ichki sikl parametriga uzatiladi. Ichki sikl parametri j bir soniga orttiriladi (j = j + 1 = 3), ya’ni j = 3 ga teng bo’ladi va siklning oxirgi qiymati 3 bilan solishtiriladi. j = 3 < 3 shart bajarilmaganligi uchun boshqarish tashqi sikl parametriga uzatiladi. Shu tariqa tashqi sikl parametrining i = 0 ga teng bo’lib, bir marta bajarilganda ichki sikl 3 marta takrorlanadi. Tashqi sikl parametri 1 soniga orttiriladi va i = i + 1 = 1 qiymatni qabul qiladi. i = 1 < 2 shart bajarilganligi uchun boshqarish yana tashqi sikl tarkibiga kiruvchi ichki siklga uzatiladi. Ichki siklga yangidan murojaat bo’lganligi uchun ichki sikl (uchinchi satr) parametri yana j = 0 qiymatni qabul qiladi. j = 0 < 3 shart bajarilganligi uchun ichki sikl tarkibiga kirgan print(A[i][j]) operatori bajariladi va oynaga A[1][0] ning qiymati 3 soni chiqariladi. Ushbu jarayon davom ettirilib, A[1][1] va A[1][2] elementlarning qiymatlari oynaga chiqariladi. So’ngra ichki sikl parametri j = 3 qiymatini qabul qiladi. j < 3 shart bajarilmaganligi uchun boshqarish yana bir bor tashqi sikl parametriga uzatiladi. Tashqi sikl parametri 1 soniga orttiriladi va i = i + 1 = 2 qiymatni qabul qiladi. i = 2 < 2 shart bajarilmaganligi uchun sikl ishi to’xtatiladi va boshqarish tashqi sikldan keyingi satrga uzatiladi. Bizning dasturimizda tashqi sikldan keyingi satr bo’lmaganligi uchun dastur ishi tugatiladi. Yuqoridagi dasturimizda dastur natijasi alohida satrlarda chiqarilgan. Natijani bitta satrda, har bir satr orasiga probellar qo’yilgan holda oynada ifodalash uchun print() operatorining end = ' ' parametridan foydalanishimiz mumkin. Dasturimizning to’rtinchi satriga print(A[i][j], end = ' ') ko’rinishidagi o’zgartirish kiritamiz va 5 7 2 3 5 8 qo’rinishidagi natijaga ega bo’lamiz. Agar natijaning har bir satri aloxida satrlarda, probellar bilan ajratib chiqarilishi, ya’ni ko’rinish jihatidan qulay bo’lishi uchun sikllar orasiga print() operatorini qo’shish yordamida ko’rsatish mumkin. Daturning to’la ko’rinishi quyidagicha bo’ladi: A = [[5, 7, 2], [3, 5, 8]] for i in range(len(A)): # Satrlar soni bo'yicha for j in range(len(A[i])): # Satrdagi ustunlar soni bo'yicha print(A[i][j], end = ' ') print() Natija:
3 5 8 Yuqoridagi masalani matritsa indekslar bo’yicha emas, balki ro’yxat elementlari bo’yicha ham xal qilish mumkin: A = [[5, 7, 2], [3, 5, 8]] for satr in A: for element in satr: print(element, end = ' ') print() Natija: 5 7 2 3 5 8 Natija bir xil. Ushbu dasturning birinchi satrida A matritsa elementlari kiritilgan. Ikkinchi satrida, ya’ni birinchi sikldagi satr o’zgaruvchisi birinchi bor siklga murojaat qilganligi uchun A matritsaning A[0] qiymati [5, 7, 2] ga teng bo’ldi. Uchinchi satrda, ichki sikl ishga tushib element o’zgaruvchisi satr qiymatiga [5, 7, 2] ga tenglashtirilmoqda. To’rtinchi satrda element qiymati (5 7 2) oynaga chiqarilmoqda. Beshinchi satr bitta bo’sh satrni chiqaradi va boshqarish yana uchinchi ichki satrga uzatiladi. Ichki sikl oxirgi qiymati faqat bitta qiymatga satr = [5, 7, 2] ga ega bo’lganligi uchun ichki sikl to’xtaliladi va boshqarish tashqi siklga uzatiladi. Tashqi sikl parametri satr o’zining navbatdagi A[1] = [3, 5, 8] qiymatiga teng bo’ladi. Boshqarish uchinchi satrga, ichki sikl parametri element ga uzatilib, uning qiymati satr qiymatiga tenglashtiriladi, ya’ni element = [3, 5, 8] ga tenglashtiriladi. Shart bajarilganligi uchun boshqarish 4 satrga uzatilib, oynaga element ning qiymatlari bo’lgan 3 5 8 ro’yxat chiqariladi. Boshqarish yana ichki siklga, so’ngra tashqi siklga uzatiladi. A matritsaning boshqa qiymatlari qolmaganligi uchun sikl o’z ishini to’xtatadi. Download 119 Kb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling