1-sahifa 2-sahifa


7.4. IDLE-dan foydalanish


Download 363.98 Kb.
bet6/21
Sana06.06.2020
Hajmi363.98 Kb.
#115448
1   2   3   4   5   6   7   8   9   ...   21
Bog'liq
Python


7.4. IDLE-dan foydalanish

57

7.4. IDLE-dan foydalanish

Ushbu misolni IDLE-da sinab ko'rish yaxshi bo'lar edi (yoki ichida)

integratsiyalashgan REPL tarjimoniga ega eng sevimli muharririmiz).

IDLE REPL ni o'z ichiga olganligi sababli quyidagi kodni kiritishingiz mumkin.

va to'g'ridan-to'g'ri REPLda tahlil qiling. Biroq, siz ham qilishingiz mumkin

Kodni yozing, uni ishga tushiring va REPL-dan tahlil qiling. Sinab ko'rish uchun

bu xususiyat, yangi faylni oching va unda quyidagilarni qo'shing

kod:


name = "Matt"

birinchi = ism

yoshi = 1000

chop etish (id (yosh))

yosh = yosh + 1

chop etish (id (yosh))

ismlar = []

chop etish (id (ismlar))

names.append ("Fred")

chop etish (id (ismlar))

Kodni iden.py nomli faylda saqlang . Faylni ishga tushiring. IDLE da:

bu F5 tugmachasini bosishi kerak . To'rtta raqam REPL da aks etadi.

Birinchi ikkitasi boshqacha bo'ladi; bu butun son ekanligini ko'rsatadi

o'zgarmas. So'nggi ikki raqam bir xil. Bu bilan izohlanadi

ismlar ro'yxatining o'zgarishiga qaramay, identifikator o'zgarmaydi .

Umuman olganda, bu haqiqatan ham yangi narsa emas.

Endi eng qiziq narsa: agar siz Dir () buyrug'ini REPL-ga kiritsangiz , u chiqadi

o'zgaruvchilar ro'yxati. Siz ko'rasiz global o'zgaruvchilar iden.py

Hozir mavjud.

IDLE-dagi REPL barcha global o'zgaruvchilarga kirishni ta'minlaydi. Siz

Siz ism va ismlarni qidirishingiz va hatto qo'ng'iroq qilish funktsiyalari yoki usullarini topishingiz mumkin

dy - masalan, names.append ("Jorj") .

Kodni hozirgina bajarilgan natijalarini ko'rib chiqish imkoniyatiga ega bo'lib,

Siz kodni tezda tahlil qilishingiz va u bilan tajriba o'tkazishingiz mumkin.

Tajribali Python dasturchilari ko'pincha kodni REPL-da yozadilar, unga joylashtiradilar

faylga qaytadan ishga tushiring, yangi kodni REPL-ga yozing va davom eting

shu tarzda kod yozing.



58-sahifa

58

7-bob. Ob'ektlarning tafsilotlari

O'zgarmas butun sonlar

a = 1000 ga teng

Jamoa

1000


Id: 2f3b

Turi: butun son

Kompyuter nima qiladi

O'zgaruvchan ob'ektlar

O'zgaruvchan ob'ektlar

O'zgaruvchan ob'ektlar

a

a = a + 1



1: Python butun sonni yaratadi

1000


Id: 2f3b

Turi: butun son

a

2: Python sonini 1 ga ko'paytiradi va butun son hosil qiladi

1001


Id: 2f3f

Turi: butun son

a = a + 1

1000


Id: 2f3b

Turi: butun son

a

3: Python yangi ob'ekt bilan bog'laydi

va eski ob'ektni buzadi

1001


Id: 2f3f

Turi: butun son



Anjir. 7.2. Butun sonni o'zgartirishga urinish muqarrar natijalar beradi

yangi butun sonni yaratish. Butun sonlar o'zgarmasdir

va ularning qiymati qayta tiklanishi kerak



59-sahifa

7.4. IDLE-dan foydalanish

59

O'zgarishi mumkin bo'lgan ro'yxat

ismlar = []

[]

Id: 4f3b



Turi: Ro'yxat

ismlar


1-bosqich: Python bo'sh ro'yxatni yaratadi

names.append ("Fred")

[]

Id: 4f3b


Turi: Ro'yxat

ismlar


2-bosqich: Python satrli ob'ekt yaratadi

"Fred"


Id: 4f3f

Turi: String

names.append ("Fred")

[]

Id: 4f3b



Turi: Ro'yxat

ismlar


3-bosqich: Python qatorni qo'shadi

mavjud ro'yxatga

"Fred"


Id: 4f3f

Turi: String

Jamoa

Kompyuter nima qiladi



O'zgaruvchan ob'ektlar

O'zgaruvchan ob'ektlar

O'zgaruvchan ob'ektlar

Anjir. 7.3. Biror narsani ro'yxatga qo'shsangiz, ro'yxatning qiymati o'zgaradi.

Elementlarni qo'shish va o'chirishda ro'yxat identifikatori o'zgarmaydi





60-sahifa

60

7-bob. Ob'ektlarning tafsilotlari



Anjir. 7.4. IDLE da REPLda kodni bajarish va natijalarni tahlil qilish.

Agar siz IDLE-dan foydalanmasangiz, buni muharriringizda qanday qilishni bilib oling.



7.5. Xulosa

Pythonda ob'ektlardan boshqa narsa yo'q. Ob'ektlar uchta xususiyatga ega:

sstv:

❍ Type - ob'ekt uchun sinfni belgilaydi.



❍ Qiymat - ob'ekt tarkibidagi ma'lumotlar. Ikki ob'ektni tekshirish

tenglik uchun ( == ), siz ularning qiymatlarini taqqoslaysiz.

❍ Identifikator - ob'ekt uchun noyob identifikator. Versiyada

Da Python www.python.org identifikator aslida aniqlanadi

noyob bo'lgan xotirada ob'ektni joylashtiradi

qiymati. Siz identifikatsiya qilish uchun ikkita ob'ektni tekshirsangiz

(bilan bo'ladi bayonot ), siz ularning identifikatorlar mos yoki yo'qligini tekshiring.

Shuningdek, siz o'zgarishi mumkin bo'lgan ob'ektlar (ro'yxatlar kabi) mumkinligini bilib oldingiz

o'zgarishi mumkin bo'lgan narsalarning qiymatini o'zgartirish (masalan,

satrlar va ro'yxatlar) "joyida" o'zgartirilishi mumkin emas.





61-sahifa

7.6. Mashqlar

61

7.6. Mashqlar

1. Suzuvchi nuqta soniga ishora qiluvchi o'zgaruvchini yarating

nuqta. Buning identifikatorini, turini va qiymatini tahlil qiling

raqamlar. O'zgaruvchini 20 ga oshirish orqali uni yangilang.

Identifikatorni, turini va qiymatini aniqlang. Shaxsiyat o'zgarganmi?

katormi? Qiymat o'zgarganmi?

2. Bo'sh ro'yxatga ishora qiluvchi o'zgaruvchini yarating. Pro-

identifikator, ro'yxat turi va qiymatini tahlil qiling. Qo'shni

ro'yxatdagi raqam 300. Yana, identifikatorni tahlil qiling,

turi va qiymati. Identifikator o'zgarganmi? U o'zgarganmi?

qiymati?



62-sahifa

raqamlar

Ushbu bo'limda Python-dagi operatsiyalar haqida so'z boradi.

Python butun sonlarni (masalan, −1, 5 yoki 2000) va raqamlarni qo'llab-quvvatlaydi

suzuvchi nuqta (taxminiy kompyuter vakili

0.333, 0.5 yoki −1000 234) kabi raqamlar; ular bajarishni osonlashtiradi

sonli operatsiyalar. Dastlab Python qo'llab-quvvatladi

qo'shish, ayirish, ko'paytirish, bo'lish, eksponentatsiya radiolari,

qolganini hisoblash va boshqa ko'plab operatsiyalar!

Boshqa tillardan farqli o'laroq, Python-da faqat ob'ektlar mavjud - bu

raqamlarga tegishli. Integerlar int sinfiga tegishli :

>>> turi (1)



Suzuvchi nuqta raqamlari float sinfiga tegishli :

>>> turi (2.0)

Butun sonli bo'lmagan raqamlarning aniqligi cheklangan. Foydalanuvchi shart

uning hozirgi hisob-kitoblari uchun etarli yoki yo'qligini aniqlash uchun xotinlar. Ichida

Python-ning suzuvchi nuqta raqamlarining ichki vakili ishlatiladi

ikkilik vakillik (IEEE 754 uchun mos)

suzuvchi nuqta raqamlari). Suzuvchi nuqtali raqamlar mavjud

ma'lum bir aniqlik chegarasi, shuning uchun yaxlitlashda xato bo'lishi mumkin

Niya. Aslida, ishlab chiqaruvchi har doim hisoblashni kutishi kerak

yaxlitlash xatosi bilan amalga oshiriladi. (Agar sizga ko'proq kerak bo'lsa)



63-sahifa

8.1. Qo'shimcha

63

yuqori aniqlik, o'nlik modul aniqroq bo'lsa-da, beradi

va sekinroq amalga oshirish.)

Oddiy misol yordamida taqdimotning to'g'riligini ko'rib chiqing. Nima bo'ldi

Bir qarashda oddiy ayirish jarayonini bajarayotganda yurish kerakmi?

>>> chop etish (1.01 - .99)

0.020000000000000018

MASLAHAT

Agar siz suzuvchi raqamlar va ularning sonlari haqida ko'proq bilmoqchi bo'lsangiz

kompyuter xotirasiga joylashtirilsa, Vikipediya 1 batafsilroq ma'lumotga ega

mavzu bo'yicha ma'lumot.



8.1. Qo'shimcha

Python REPL oddiy kalkulyator sifatida ishlatilishi mumkin. Kimga

ikkita butun sonni qo'shing, ifoda kiriting:

>>> 2 + 6

8

ESLATMA

Ushbu misolda natija o'zgaruvchi bilan bog'liq emas. Natijani chiqarish uchun,

Buning terminalidagi oddiy hisoblash etarli bo'lishi mumkin. Agar

to'satdan sizga natija kerak bo'ladi, Python tarjimoni saqlaydi

_ nomli o'zgaruvchiga oxirgi natija :

>>> 2 + 6

8

>>> natija = _



>>> natija

8

Ikkita butun sonni qo'shganda butun son olinadi. O'xshash



Shu tarzda ikkita suzuvchi nuqta raqamini qo'shish mumkin:

>>> .4 + .01

0.41000000000000003

1

https://en.wikipedia.org/wiki/Float_Number





64-bet

64

8-bob. Raqamlar

Ushbu misol, suzuvchi nuqta raqamlari bilan ishlashda nima uchun yana bir bor ko'rsatib beradi

ehtiyot bo'lish kerak: operatsiyalar yo'qolishiga olib kelishi mumkin

aniqlik (hozirgi natija 0,41).

Va butun sonni suzuvchi nuqtaga qo'shganda nima bo'ladi

nuqta?

>>> 6 + .2



6.2

Python siz songa butun son qo'shganingiz sababli qaror qiladi

suzuvchi nuqta, siz arifmetik suzuvchi nuqtadan foydalanishingiz kerak

nuqta. Bunday holda, Python avtomatik ravishda 6-ni raqamga o'zgartiradi .

2 bilan katlamadan oldin suzuvchi nuqta . Python qaytadi

Natijani suzuvchi nuqta formatida ko'rsatadi.



ESLATMA

Agar operatsiya ikkita raqamli operandni ishlatsa, konversiya

odatda to'g'ri ishlaydi. Butunni o'z ichiga olgan operatsiyalar uchun

suzuvchi nuqta va raqam, butun format formatga o'tkaziladi

suzuvchi nuqta.

ESLATMA

Satrlar va raqamlar o'rtasidagi konversiyalar ko'pchilik uchun amalga oshirilmaydi

matematik operatsiyalar. Qoidada ikkita istisno mavjud: operator

satrni formatlash va ayirish operatori.

Foydalanganda % chap qismi (bir mag'lubiyatga bilan tark operand ) va har qanday

O'ng tomonida (ustida (sonlar, shu jumladan) ob'ekt o'ng obyekti Python amalga oshiradi bo'yicha)

formatlash jarayoni:

>>> chop etish ('num:% s'% 2)

num: 2

Agar chap operand torli bo'lsa, unda operatorni qo'llashda



zheniya * Python takrorlashni amalga oshiradi:

>>> "Python!" * 2

"Python! Python!"

>>> '4' * 2

'44'



65-sahifa

8.3. Ko'paytirish

65

ESLATMA

Int va float sinflarida aniq konversiyalar amalga oshirilishi mumkin (qaramay

tashqi o'xshashlik funktsiyalarga, aslida bu sinflar):

>>> int (2.3)

2

>>> suzib yurish (3)



3.0

8.2. Ajratish

Ajratish ko'paytirish bilan juda ko'p bog'liq. Ikkisini ajratganda

butun sonlar yoki ikkita suzuvchi nuqta raqamlari butun sonni oladi

mos ravishda raqam yoki suzuvchi nuqta raqami. Aralash uchun

ope konversiyasini ayirishdan oldin raqamli turlar

randalar:

>>> 2 - 6

-4

>>> .25 - 0,2



0.04999999999999999

>>> 6 - .2

5.8

8.3. Ko'paytirish

Ko'p dasturlash tillarida * (yulduzcha) belgisi ishlatiladi

ko'paytirish uchun. O'zingiz ehtimol qachon nima bo'lishini taxmin qilasiz

ikkita butun sonni ko'paytirish:

>>> 6 * 2

12

Agar diqqat bilan o'qib chiqsangiz, nima bo'lishini allaqachon bilasiz



ikki suzuvchi nuqta raqamlaridan:

>>> .25 * 12.0

3.0



66-sahifa

66

8-bob. Raqamlar

Va mahsulotdagi aralash turlar bilan natija olinadi

Nuqta:


>>> 4 * .3

1.2


Ushbu misollardagi suzuvchi nuqta natijasi to'g'ri ko'rinadi

kuchli. Shunga qaramay, ehtiyot bo'ling va muammolar haqida eslang.

vakillik xatosi bilan - siz doimo shunday deb o'ylamang

omadli bo'ladi.



8.4. Bo'linish

Pythonda (ko'p tillarda bo'lgani kabi) belgi / bo'linish degan ma'noni anglatadi:

>>> 12/4

3.0


Python 3 shuningdek oldingi versiyalarda mavjud bo'lgan muammoni hal qiladi

Ko'pchilik Pythonni nuqson deb hisoblagan. Ikki butun sonni bo'lish natijasi

suzuvchi nuqta raqami:

>>> 3/4


0,75

Python butun sonlarni bo'lish uchun foydalangan. Agar kerak bo'lsa

Bu aynan ayollarning xatti-harakati; // operatoridan foydalaning . Qaysi

Butun son Python-dan foydalanadimi? Kichikroq yaxlitlash natijasi



tomoni :

>>> 3 // 4

0

8.5. Qolganlari

% Operatori butun sonning bo'linishini hisoblab chiqadi. Masalan,

undan foydalanib, raqamni tengligini tekshirishingiz mumkin (yoki yo'qligini bilib olishingiz mumkin)

1000 ta ro'yxat elementlari qayta ishlanganmi):





67-sahifa

8.5. Qolganlari

67

# 4 ni 3 ga bo'lishning qolgan qismi

>>> 4% 3

1

>>> 3% 2 # g'alati, agar natija 1 bo'lsa



1

>>> 4% 2 # natija 0 bo'lsa ham

0

MASLAHAT

Salbiy bilan % operatoridan foydalanganda ehtiyot bo'ling

raqamlar bo'yicha. Operatorning xatti-harakati qaysi biriga qarab o'zgaradi

operandlar manfiy. Qarama-qarshi yo'nalishda hisoblashda aniq

balans ma'lum bir chastota bilan takrorlanishi kerak:

>>> 3% 3


0

>>> 2% 3


2

>>> 1% 3


1

>>> 0% 3


0

-1% 3 ni hisoblashda qanday natijaga erishish kerak ? Beri

hisob teskari yo'nalishda saqlanadi, natija yana 2 ga teng bo'lishi kerak:

>>> -1% 3

2

Ammo agar siz bo'linish belgisini o'zgartirsangiz, g'alati bir narsa yuz beradi:



>>> -1% -3

-1

Python natija belgisi bo'linuvchining (yoki.) Belgisiga mos kelishini ta'minlaydi



0 ga teng). Sizni butunlay chalkashtirish uchun yana bir misol:

>>> 1% -3

-2

Axloqiy: ehtimol qoldiqni salbiy bo'linish bilan hisoblamasligingiz kerak.



lem - agar siz haqiqatan ham kerakli ekaningizga qat'iy ishonch hosil qilsangiz

aynan shu.





68-sahifa

68

8-bob. Raqamlar



8.6. Eksponentlash

Python shuningdek eksponentatsiya operatorini qo'llab-quvvatlaydi ** (ikkita yulduz)

qizlari). Agar siz 4 kvadratga (4 - tayanch, 2 - hozircha -

daraja sohibi), u quyidagicha amalga oshiriladi:

>>> 4 ** 2

o'n olti


Eksponentlash operatsiyasining natijalari odatda tez o'sadi

qadrlamoq Aytaylik, 10-chi kuchni 10 ga ko'tarmoqchisiz:

>>> 10 ** 100

10000000000000000000000000000000000000000

0000000000000000000000000000000000000000

0000000000000000000000000

Butun sonlarni saqlash uchun dasturlarga ma'lum miqdor kerak

xotira. Butun sonlar odatda nisbatan kichik bo'lganligi sababli Python

samarasiz qolmaslik uchun xotira xarajatlarini optimallashtiradi

sarflash. Ichki amalga oshirishda "tizimli" butun sonlar mumkin

katta sonlarni saqlash uchun uzun butun sonlarga aylantirilishi mumkin.

Python 3 buni avtomatik ravishda amalga oshiradi.

Bahorning og'irliklari hajmini tasavvur qiling. Agar siz har doim oz tortsangiz

buyumlar bo'lsa, siz qisqa shkala bilan o'lchovda qulay bo'lasiz. Agar savdo qilsangiz

qum, ehtimol qum osonlik bilan sumkalarga solinadi, shunda ular bilan birga bo'ladi

ishlash uchun qulayroq edi. Siz kichik sumkalarni qulay qilib saqlaysiz

ularni tortish uchun ishlatish. Ammo vaqti-vaqti bilan siz

qisqa o'lchov doirasidan tashqariga chiqadigan katta ob'ektlarni tortish kerak,

katta tarozi va katta sumka olishingiz kerak. Foydalanish mantiqiy bo'lmaydi

Ko'p mayda narsalar uchun katta sumka va katta tarozidan foydalaning.

Xuddi shu tarzda, Python butun xotirani saqlash uchun xotirani optimallashtirishga harakat qilmoqda

kichik o'lchamlarga e'tibor qaratgan holda raqamlar. Agar butun son bo'lmasa

kichik xotira blokida (sumkada) keshlash, Python uni katta hajmga o'zgartiradi

butun . Bu aslida istalgan xatti-harakatlar, chunki ba'zilarida

to'lib toshgan muhitda dastur ishdan chiqishiga olib keladi

biz (yoki PacMan 255 dan yuqori darajalarga borishni rad etadi, chunki)

darajadagi hisoblagich 8 bitli raqam sifatida saqlanishini).



69-sahifa

8.9. Xulosa

69

ESLATMA

Python asosiy matematik funktsiyalarga ega bo'lgan operator modulini o'z ichiga oladi

osmon operatsiyalari. Xususan, bundaylardan foydalanganda foydali bo'ladi

Lambda funktsiyalari yoki generatorlari kabi Python-ning kengaytirilgan xususiyatlari

ro'yxatlar :

>>> import operatori

>>> operator.add (2, 4) # 2 + 4 bilan bir xil

6

8.7. Amallarni bajarish tartibi

Matematik hisoblarni amalga oshirayotganda, barcha operatsiyalar emas

chapdan o'ngga to'ldiring. Masalan, qo'shish va ajratish operatsiyalari

ayirish va bo'linish operatsiyalaridan keyin amalga oshiriladi. Kompyuterlar

xuddi shu qoidalarga muvofiq ishlash. Agar siz qo'shimcha operatsiyalarni xohlasangiz

(yoki ajratish) avval bajarildi, dumaloq foydalaning

operatsiyalar tartibini ko'rsatish uchun Qavslar:

>>> 4 + 2 * 3

10

>>> (4 + 2) * 3



o'n sakkiz

Misollardan ko'rinib turibdiki, qavslar ichidagi ifoda baholanadi

birinchi navbatda.

8.8. Boshqa operatsiyalar

REPL ning yordam bo'limi juda foydali. Unda mavzu bor

NUMBERMETHODS barcha raqamli operatsiyalar ishlash qanday tushuntirib.

8.9. Xulosa

Python asosiy matematik operatsiyalarni bajarish uchun o'rnatilgan yordamga ega.

yurish-turishlar. Albatta, til qo'shish, ayirish, ko'paytirishni qo'llab-quvvatlaydi

va bo'linish. Bundan tashqari, eksponentatsiya va hisoblash





70-bet

70

8-bob. Raqamlar

qolganlarning dangasasi. Agar ijro tartibini boshqarish kerak bo'lsa

operatsiyalar, avval bajarilishi kerak bo'lgan operatsiyani yakunlang,

Qavslar ichida. Agar siz oddiy hisob-kitoblarni bajarishingiz kerak bo'lsa, buning o'rniga

kalkulyator dasturini ishlatsangiz, ularni Python-da bajarishingiz mumkin. JSSV-

til imkoniyatlari ko'pgina vazifalar uchun etarli darajada ko'proq.

8.10. Mashqlar

1. Bu hafta siz 6.2, 7, 8, 5, 6.5, 7.1 va 8.5 soat uxladingiz. O'rtachani hisoblang

yalang'och uyqu soatlari.

2. 297 sonini 3 ga 3 ga bo'linish kerakmi?

3. 2-ni o'ninchi kuchga ko'tarish qanday natija beradi?

4. Vikipediyada 1 pog'onali yil quyidagicha aniqlanadi:

"... soni to'rtga ko'p bo'lgan, bir yil bo'lgan

Istisno 100 ga teng bo'lganlar uchun chiqarildi. Bunday yillar

ular 400 ga bo'lganda ham sakrashdi ... Shunday qilib,

1700, 1800 va 1900 yillari o'tish yillari emas, chunki ular ko'paymoqda

100 va 400 emas, balki 400 emas. 1600 va 2000 yillar - bu sakrash yillari. "

Papaning sakrashini aniqlaydigan Python kodini yozing

yillar 1800, 1900, 1903, 2000 va 2002 yillar.

1

https://en.wikipedia.org/wiki/ Leap Year





71-sahifa

qator

Simlar simni saqlash uchun o'zgarmas buyumlardir

bepul ma'lumotlar. Qator bitta belgi, so'z, keyin bo'lishi mumkin

so'zning amal qilish muddati, paragraf, bir nechta xatboshilar, garchi unda bo'lmasligi mumkin

bitta belgi emas.

Pythonda simlar ' (bitta qo'shtirnoq) orasiga joylashtirilgan ,

" (ikki marta tirnoq), " "" (uch marta qo'shtirnoq) yoki '' ' (uch marta tirnoq)

bitta tirnoq). Bir nechta misollar:

>>> belgilar = 'a'

>>> name = 'Matt'

>>> with_quote = "Men aytmayman"

>>> uzunroq = "" "Ushbu qator mavjud

... bir nechta qatorlar

... ichida "" "

>>> latin = '' 'Lorum ipsum

... Dolor '' '

>>> qochdi = 'Men ishonmayman'

>>> nol_chars = ''

>>> unicode_snake = "Men yaxshi ko'raman \ n {SNAKE}"

Eslatma: satrlar har doim tirnoq bilan boshlanadi va tugaydi

bitta tur. In_quote misolidan ko'rinib turibdiki , bitta tirnoq qo'yish mumkin

qo'shtirnoq ichidan topish mumkin va

og'iz. Bundan tashqari, agar siz satrga tirnoq kiritishingiz kerak bo'lsa

xuddi shu tipda , \ belgi (orqaga teskari chiziq) bilan qochib qutulish mumkin . Da

Qochib ketgan belgining chiqishi orqaga teskari chiziq tomonidan e'tiborsiz qoldiriladi.





72-bet

72

9-bob. Chiziqlar



ESLATMA

Kuzatuvchi o'quvchida savol paydo bo'lishi mumkin - uni qanday yoqish kerak

satrning teskari egri chizig'ida? Orqa teskari chiziqni yoqish uchun

oddiy chiziqdagi chiziq, undan qochish kerak ... ha, bu to'g'ri - baribir

bitta teskari chiziq:

>>> backslash = '\\'

>>> bosma (teskari chiziq)

\

ESLATMA

Python-dagi belgilardan qochishning ba'zi standart usullari:


Download 363.98 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7   8   9   ...   21




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling