Reja:
Algoritmlarni yaratish va tahlil qilish, masaladan dasturga o‘tish.
Ma’lumot tushunchasi.
Ma’lumotlarni ifodalash bosqichlari va tarkibi.
Dasturlarni bajarilishi va bajarilish vaqtini hisoblash.
Ma’lumotlar tuzilmasini klassifikatsiya qilish.
Ma’lumotlarni asosiy abstrakt turlari.
Algoritmlarni yaratish va tahlil qilish, masaladan dasturga o‘tish. Kompyuter o‘z hisoblash kuchliligi bilan birga tezkor, ozoda, aniq va shu bilan birga “butunlay befahm bajaruvchi” hisoblanadi. Turli masalalarni yechishda undan foydalanganimizda kompyuter biror nimani o‘zi o‘ylab topadi degan fikrimiz xato, kompyuter ishlashi uchun aniq va to‘liq instruksiya kerak bo‘ladi. Bu yerda biz algoritmni aniqlash to‘plamidan biriga kelyapmiz. ALGORITM – so‘nggi natijani hosil qilish uchun kerakli bo‘lgan, biror harakatni amalga oshiruvchi qatiy o‘rnatilgan tartib. Bu g‘alati tuyulishi mumkin, lekin biz real hayotda algoritmga har doim duch kelamiz. Omadli telefon qo‘ng‘irog‘i uchun kerakli bo‘lgan amallar tartibini o‘z ichiga oluvchi telefon-avtomatdan foydalanish instruksiyasi. Maishiy texnikadan foydalanish qoidalari va boshqalar qisqa, tushunarli shaklda bizga u yoki bu holda nima qilishimiz kerakligini xabar qilib, harakatlarimiz algoritmini belgilab beradi. Tarixchi matematiklarning ta’kidlashicha, (H. Zemanek ishlariga qarang, Lecture Notes in Computer Sciece 122 (1981), 1-81), «algoritm» so‘zi buyuk ajdodimiz Abu Abdulloh Muhammad ibn Muso al-Xorazmiy ismidan kelib chiqqan, uning mashhur “Kitob al-jabr va al-muqobola” traktasi esa yana bir mashhur “algebra” atamasining vujudga kelishiga asos bo‘ldi. Kompyuter ishi jarayonida boshqariladigan instruksiyalarni ishlab chiqarishning asosi algoritm hisoblanadi. Biroq, biz algoritmdan o‘z yozuvlarimizni to‘g‘ridan-to‘g‘ri kompyuterga o‘tkaza olmaymiz, chunki ular kompyuter tushunmaydigan, faqatgina insonlar tushunadigan tilda yozilgan. Kompyuter algoritmni tushunishi uchun u mashina tiliga o‘giriladi, aynan shunday mashina tilida yozilgan algoritmlar dastur yoki kompyuter dasturi deb ataladi. Quyida biz bu tushunchani joriy kurs asosida yotuvchi algoritm tushunchasi yordamida aniqlashtirishga harakat qilamiz. Shuni ta’kidlash kerakki, adabiyotda umume’tirof etilgan algoritmni aniqlash tushunchasi yo‘q. Kompyuter texnologiyalari tushunchasiga adekvat bo‘lgan algoritm ifodasini beramiz:
Algoritm – bu masala yechimini hosil qilish uchun boshlang‘ich informatsiyada amalga oshirish kerak bo‘lgan aniq belgilangan amallar ketma-ketligi.
Ixtiyoriy algoritm muhim xossalarga ega:
Algoritmning aniqligi – har bir qadam bajarilishining bir qiymatliligi.
Diskretliligi – masalani yechish jarayonini bajarilish vaqtida kompyuter yoki insonga qiyinchilik tug‘dirmasligi uchun bir necha sodda bosqichlar (bajarilish qadamlari)ga bo‘lish.
Ommaviylik – belgilangan masalalar sinfini yechish uchun algoritmning foydaliligi. Natijaviylik – oxirgi qadamlarda dastlabki ma’lumotlarga ega bo‘lgan kerakli natijani olishga imkon beruvchi algoritmning harakatlar yakuni.Amaliyotda quyidagi algoritm turlari mavjud:
Chiziqli – amallar ketma-ket, biror-bir shart tekshirilmasdan bajariluvchi algoritm.
Tarmoqlanuvchi – belgilangan shartlarning o‘zgarishiga bog‘liq holda ko‘rsatmalarning variantlari oldindan mo‘ljallanadigan algoritm.
Sikllik – alohida jarayonlar yoki jarayonlar guruhi bir necha marta bajariladigan algoritm.
Informatsiya kompyuterda qayta ishlash uchun xom-ashyo sifatida xizmat qiladi, ya’ni metallurgik ishlab chiqarishda metall ruda xom-ashyo hisoblanishi kabi. Lekin, ixtiyoriy xom-ashyo qayta ishlovda samarali bo‘lishi uchun dastlabki tayyorgarlikka ega bo‘lishi kerak. Bu to‘laligicha informatsiyaga tegishli. Demak, bizda o‘rganish uchun hisoblash texnikasiga jalb etmoqchi bo‘lgan biror bir hodisa mavjud. Birinchi navbatda biz qiziqtirayotgan hodisa haqidagi informatsiyalarni yig‘amiz, so‘ng bu informatsiyani sistemalashtiramiz va sinflarga ajratamiz. Bundan keyin berilgan hodisani ifodalovchi modelni quramiz. Model so‘zi fransuzchadan kelib chiqqan bo‘lib, dastlabki ma’nosi bu – biror fizik obyekt yoki hodisaning aniq ko‘rinishini beruvchi namunadir. Biz fizik emas, balki informatsion modeldan foydalanamiz. U hodisani maxsus matematik apparat, grafik, diagrammalar yordamida ifodalaydi. Model hodisaning harakterli belgilari va asosiy tomonlarini ochib berish imkonini beradi. Matematik va imitatsion modellashtirish mavjud.Matematik modellashtirish – hodisa tadqiqoti va ifodasi uchun matematik apparatni qo‘llash. Aniq matematik model obyektning holatini kuzatish va uni tahlil qilish imkonini beradi.
Imitatsion modellashtirish – asosan sanoatda qo‘llaniladi, hisoblash texnikasi va maxsus programma ta’minoti yordamida real mavjud bo‘lmagan qurilmada bir qator tekshirishlar o‘tkazish imkonini beradi. Bunday modellashtirishni qo‘llash xom-ashyo ishlab chiqarishni tezlashtiradi, chunki qurish va tadqiq qilish jarayoni qisqaradi, xatolar miqdori va ularning bahosi kamayadi. Masalan, «Boing» firmasi uzoq yillar davomida qo‘llanib kelingan joyni rejalashtirishni ishlab chiqish, yo‘lovchilar o‘rindiqlarining joylashuvi, samolyot salonining natural modellarini yaratishdan bosh tortdi, ularni kompyuter modellariga almashdi. Bu millionlab dollarlarning tejalishi va samolyotlarning yangi modellarini ishlab chiqish muddatlarini qisqartirdi.Modelni qurib bo‘lgandan so‘ng unga mos algoritmni yaratish bosqichiga o‘tiladi. Hisoblash mashinasi tilida (mashina kodlarida) ketma-ket buyruqlar ko‘rinishida berilgan masala yechimining algoritmi mashinaviy dastur deb ataladi. Mashinaviy dastur buyrug‘i yoki mashinaviy buyruq–qo‘shimcha ko‘rsatma va tushunchalarsiz avtomatik holda bajariluvchi elementar mashina instruksiyasi. Dasturlash – dastur tuzish bilan bog‘liq bo‘lgan nazariy va amaliy faoliyat.Algoritmni mashina tiliga o‘girish jarayoni translyatsiya deb ataladi. Mashina tilini «odamiylashtirishning» birinchi qadami ramziy nomlarni mashina kodiga o‘tkazuvchi dasturlar tuzish bo‘ldi. So‘ng arifmetik ifodalarni o‘giruvchi dasturlar yaratildi va nihoyat, 1958 yilda dasturlash tilida keng foydalaniladigan Fortran translyatori kirib keldi. Shundan so‘ng ko‘plab dasturlash tillari yaratildi. Kompyuter mashinaviy dastur buyruqlarini boshqargan holda informatsiyaga ishlov beradi, buning uchun ish jarayonida turli berilganlardan foydalanadi. Foydalanilgan berilganlar quyidagilarga bo‘linadi: Kiruvchi – kompyuterga kiradi va masalani yechish uchun shart sifatida foydalaniladi. Joriy yoki ichki – dastur ichida informatsiyani saqlash va ishlov berish uchun ishlatiladi. Chiquvchi – informatsiyaga ishlov berish natijasida dasturda hosil bo‘lgan berilganlar. Matn, grafik, videotasvir va h. k. ko‘rinishda bo‘lishi mumkin. Hodisa tadqiqoti, masala yechimi uchun hisoblash texnikasi yordamida qabul qilish kerak bo‘lgan amallarning umumiy tartibini quyidagicha sxema sifatida tasvirlash mumkin:
Hodisa, jarayon, masala и modelиalgoritmиdasturиkompyuterиnatija. Ma’lumot tushunchasi. Ma’lumotlar tuzilmasi bu xotirada tashkil etiladigan elementlar yig’indisi bo’lib, ular ustida dastur yordamida amallar bajariladi. Ma’lumotlar tuzilmasi – bu bironta toifaga tegishli bo’lgan va o’zaro ma’lum munosabatga ega bo’lgan elementlar to’plamiga aytiladi. Ma’lumot – bironta qiymat yoki qiymatlar to’plami hisoblanadi.Misol uchun bu bironta eksperiment natijalari, yoki talabalarning imtixon ballari bo’lishi mumkin. Ma’lumotlar tuzilmasi elementi bu qiymatlar to’plamining bir bo’lagi hisoblanadi. Tuzilma elementi
– qiymatlar jamlanmasi bo’lib, misol uchuntalabalarning ismi, sharifi, yoshi har bir fandan olgan baxosi va x.k. larni keltirish mumkin. Elementlar 2 taga bo’linishi mumkin.
Element sifatida ma’lumotlar guruhi olib qaraladi. Bunda e;lementlar yana qism bo’lak;arga bo’linishi mumkin. Masalan, ota-onalar maydoni talabalarning ota va onalari xaqida ma’lumot saqlaydigan alohida maydonlardan tashkil topadi.
Elementar, ya’ni bo’linmas, bunda element qism bo’laklarga ajratilmaydi.
Ob’ekt – bu xususiyatlar va attributlariga ega bo’lgan va bu xususiyatlarga qiymat qabul qilishi mumkin bo’lgan tuzilma hisoblanadi. Masalan, talaba bu ob’ekt deb qaralishi mumkin tuzilma.
Maydon – bu ob’ektlarning attributlari yoki xususiyatlarini ifodalovchi tushuncha bo’lib, sonli yoki son bo’lmagan qiymatlarni o’zlashtirishi mumkin.
Yozuv – bu bironta ob’ektga tegishli turli toifadagi maydonlar to’plamidir.
Fayl - bu bir-biriga bog’liq bo’lgan yozuvlar to’plamidir. Masalan, barcha talabalar xaqidagi yozuvlarni o’z ichiga olishi mumkin,
Kalit – bu yozuvdagi maydon bo’lib, aynan shu yozuvni boshqa yozuvlardan ajratib turishga xizmat qiladi, uning qiymati boshqa yozuvlarda takrorlanmas hisoblanadi. Ba’zida bittadan ko’p maydonlar qiymatlari elementlararo betakror bo’lishi mumkin va bunga karrali kalit deyiladi. Ko’pincha asosiy kalit hisoblanadigan bitta maydon ma’lumoti ishlatiladi va u boshlang’ich kalit deyiladi, qolganlari esa alternativ kalit deyiladi. Ba’zida esa yozuvlaning yagona qiymatlatli kalit maydonni yo’qligi sababli kalit sifatida bir nechta maydonlar olinadi va ularga tarkibli kalit deyiladi. Eng yomon holatda, ba’zan shunaqa bo’lishi mumkinki, bironta maydon kalit bo’la olmasa, har bit elementga qo’shimcha, qiymati yagona bo’lgan kalit maydon kiritiladi.
Axborot.Ko’pincha ma’lumot va axborot tushunchalarini bir xil ma’noda ishlatishadi. Lekin aslida esa axborot bu ma’lumotga qaraganda kengroq tushunchadir.Axborot bu qayta ishlangan ma’lumotdir.Ma’lumot esa qiymatlar yig’indisidir, yani bironta yakuniy xulosa bermaydi.Qaror qabul qilishda xali foyda bermaydi. Ma’lum qoidalar asosida qayta ishlangach, yangi xosil qilingan ma’lumotlar axborotga aylanadi va qaror qabul qilishda foydali hisoblanadi.
Ma’lumotlar toifasi – qandaydir qiymatlar yig’indisi bo’lib, ular ustida ma’lum amallar o’rinli bo’ladi. Ma’lumotlar toifalari dasturda oldindan aniqlangan yoki foydalanuvchi tomonidan aniqlangan bo’lishi mumkin va quyidagi aspektlarni nazarda tutadi.
Ma’lumotlar turli yo’lar asosida tashkil etilishi mumkin, mantiqiy yoki matematik modelni tashkil etilishi ma’lumotlar tuzilmasi deyiladi. Konkret bir ma’lumotlar tuzilmasini tanlash quyidagilarga bog’liq:
Real voqe’likda elementlararo munosabatni yaqqol ifodalay olishi kerak;
U shunday soda tuzilishi kerakki, zarur bo’lganda ustida samarali amal bajarish mumkin bo’lsin.
Ma’lumotlar tuzilmasini o’rganish quyidagilardan iborat:
Tuzilmani mantiqiy ifodalash;
Tuzilmani fiizik amalga oshirish;
Tuzilmani sifatiy taxlili, ya’ni elementlarni saqlash uchun qancha xotira hajmi sarflanishini aniqlash (xotira sarfi) va qayta ishlashga ketadigan vaqtni (vaqt sarfi) hisoblash nazarda tutiladi.
Dasturlarni bajarilishi va bajarilish vaqtini hisoblash. Vaqt sarfi.Tuzilma ustida amal bajarish algoritmini bajarilish vaqtini hisoblash ko’zda tutiladi.Buni hisoblashdamashxur katta “O” notatsiya tushunchasi ishlatiladi. Xotira sarfi.Kirish ma’lumotlarini inobatga olmagan xolda, ishlatilayotgan algoritm uchun xotiradan talab qilinadigan qo’shimcha joy sarfi tushuniladi. Bunda xam katta “O” notatsiyasi qo‘llaniladi. Vaqt va xotira sarfini hisoblash uchun quyidagi yondashuvlar mavjud:
Katta O notatsiya. f(x)=O(g(n)) deb belgilanadi, faqat va faqat shunday musbat c va m konstanta mavjud bo’lib, f(n)<=c*g(n) tengsizlik o’rinli bo’lsa, barcha n, n>=m holatlarda.
Masalan, ushbu funksiyani 3n+2=O(n)deb olish mumkin,chunki 3n+2<=4n, n>=2 tengsizlik o’rinli. Ushbu funksiyani 6*2n+n2=O(2n) deb olish mumkin,chunki 6*2n+n2<=7*2nifoda o‘rinli,barcha n>=4 larda. O(1) deb hisoblash vaqti o’zgarmas bo’lgan holatni belgilaymiz. O(n2) ni kvadratik, O(n3) ni kubik, O(2n) ni eksponensial deb ataladi. Agar algoritmni bajarilish vaqti O(log n) bo‘lsa, O(n) ga qaraganda tezkor algoritm deb hisoblanadi.
Omega notatsiya. f(x) = Ω(g(n)) deb belgilanadi, faqat va faqat shunday musbat c va m konstanta mavjud bo’lib, f(n)<=c*g(n) tengsizlik o’rinli bo’lsa, barcha n, n>=m holatlarda.
Masalan, 3n+2=Ω(n) deb belgilash mumkin, chunki 3n+2>=3n, n>=1 tengsizlik o’rinli. 6*2n+n2=Ω (2n) deb olish mumkin, chunki 6*2n+n2>=6*2n ifoda o‘rinli, barcha n>=1 larda.
Teta notatsiya. f(x) = θ (g(n)) deb belgilanadi, faqat va faqat shunday musbat c va m konstanta mavjud bo’lib, c*g(n)<= f(n)<=c2*g(n) tengsizlik o’rinli bo’lsa, barcha n, n>=m holatlarda.
Masalan, 3n+2= θ (n) deb belgilash mumkin, chunki 3n+2>=3n, n>=1va 3n+2<=4nbarcha n>=2 da tengsizlik o’rinli. 6*2n+n2=θ (2n) deb olish mumkin,
Algoritmlar samaradorligini hisoblash. Algoritmlar samaradorligini hisoblashda kirish ma’lumotini qanday tanlash ko’rilayotgan algoritmni bajarilishiga yaxshigina ta’sir ko’rsatadi.Masalan, agar kirish ma’lumotlari allaqachon saralangan bo‘lsa, ba’zi saralash algoritmlari juda yaxshi ishlaydi, ayrimlari ancha past samaradorlik bilan ishlashi mumkin. Agar kirish ma’lumotlari saralanmagan, tartibsiz bo’lsa, buni aksi bo’lishi mumkin.Shuni e’tiborga olgan holda, algoritmlar taxlil qilinishi kerak.
Bunda kirish ma’lumotlari algoritm tez bajarilishi uchun qulay ko’rinishda bo‘ladi, ya’ni algoritm kam sonli amallar bilan bajariladi va kam vaqt talab qiladi. Misol uchun, agar tuzimadan qidirayotgan element tuzilmaning birinchi elementi bo’lib hisoblansa, uni qidirishga eng kam vaqt sarflanadi.Chunki tuzilmaning uzunligidan qat’iy nazar bitta solishtirish yetarli.Algoritmlarni eng yaxshi holatlarini taxlil qilishda odatda, bajarilish vaqti konstanta 1 ga teng bo‘lishi sababli ko’pincha taxlillarda bu vaziyat ko’rilmaydi.
Bunda kirish ma’lumotlari algoritm bajarilishi uchum eng yomon holatda bo’ladi va juda sekin bajariladi. Eng og’ir holat tahlilda muxim hisoblanadi, chunki bu algoritm bajarilishi uchun ketishi mumkin bo’lgan maksimal vaqtni tasavvur qilishimizga sabab bo‘ladi. Misol uchun, qidirilayotgan element tuzilmaning oxirgi elementi bo’lsa, uni toppish uchun barcha solishtirishlar amalga oshiriladi.
Bunda algoritmning o’rtacha ishlash imkoniyatini beruvchi kirish ma’lumotlari to’plami olib qaraladi.
Ma’lumotlar tuzilmalari ustida quyidagi amallarni bajarish mumkin:
Ko’rikdan o’tkazish (traversing) - tuzilma elementlariga 1 martadan murojaat qilish amali.
Kiritish – tuzilmaga yangi element kiritish amali.
O’chirish – tuzlmadan bironta elementni o’chirish amali. Bunda element shunday o’chirilishi kerakki, qolgan elementlar stabil holatda bo’lishi kerak, ya’ni ayrim tuzilmalarda nosozlik sezilishi kerak emas.
Qidirish – tuzilmadan bironta elementni joylashgan o’rnini aniqlash amali.
Saralash – elementlarni ma’lum bir tartibda joylashtirish amali.
Birlashtirish (merging) – ikkita tuzilmani birlashtirish amali.
Ma’lumotlar tuzilmasini klassifikatsiya qilish. Ma’lumotlar tuzilmasi (MT) – informatsion ob’ektning umumiy xossasi bo‘lib, mazkur xossa bilan biror bir dastur o‘zaro aloqador bo‘ladi. Ushbu umumiy xossa quyidagilar orqali tavsiflanadi:
1) mazkur tuzilmaning mumkin (qabul qilishi mumkin) bo‘lgan qiymatlari to‘plami;
2) mumkin bo‘lgan amallar (operatsiyalar) majmuasi;
3) tashkil etilganlik tasnifi.
Oddiy ma’lumotlar tuzilmasini ba’zan ma’lumotlar toifalari deb ham ataladi.
Odatda, ma’lumotlarni tasniflash quyidagi ko‘rinishdagi bosqichlarga ajratiladi:
1) abstrakt (matematik) bosqich;
2) mantiqiy bosqich;
3) fizik (jismoniy) bosqich.
Ma’lumki, ixtiyoriy ob’ekt, xodisa yoki biror bir jarayon tadqiq qilinayotganda uning modeli qurib olinadi. Model turlicha bo‘lishi mumkin, masalan, matematik model, fizik model va boshqa modellar. Ob’ekt, xodisa yoki biror bir jarayonni matematik model qurildi degani o‘sha qaralayotgan tizimni ma’lum bir matematik qonuniyatlar orqali, ya’ni matematik formulalar orqali ifodalanishidir.
Mantiqiy bosqichda ma’lumotlar tuzilmasini biror bir dasturlash tilida ifodalanishi tushuniladi.
Fizik(jismoniy) bosqichda esa informatsion ob’ektni mantiqiy tavsiflanishiga mos ravishda EXM xotirasida akslantirilish tushiniladi. EXM xotirasi chekli bo‘lganligi sababli, xotirani taqsimlash va uni boshqari muammosi yuzaga keladi.
Yuqoridan ko‘rinib turibdiki, mantiqiy bosqich bilan fizik bosqichlar bir biridan farq qiladi. Shu sababli, hisoblash tizimlarida mantiqiy bosqichni fizik bosqichga va aksincha, fizik bosqichni mantiqiy bosqichga akslantirish muamosi vujudga keladi. Bu yerda MMT – mantiqiy ma’lumotlar tuzilmasi; FMT – fizik ma’lumotlar tuzilmasi;
Ma’lumotlarni asosiy abstrakt turlari. Abstrakt bosqichda ixtiyoriy tuzilmani juftlik ko’rinishda ifodalash mumkin, bu yerda D – elementlarning chekli to’plami bo’lib, ular, ya’ni elementlar ma’lumotlar turlari yoki ma’lumotlar tuzilmasi bo’lishi mumkin, R – esa munosabatlar to’plami bo’lib, mazkur munosabatlar hususiyatlari abstrakt bosqichda ma’lumotlar tuzilmalarini turlarini aniqlaydi.
Ma’lumotlar tuzilmasini asosiy ko‘rinishlari (turlari):
1) To‘plam - munosabat to‘plami bo‘sh R=0 bo‘lgan elementlar majmuasi.
2) Ketma-ketlik – shunday abstrakt tuzilmaki, bunda R to‘plam faqatgina bitta chiziqli munosabatdan iborat (ya’ni, birinchi va oxirgi elementdan tashqari har bir element uchun o‘zidan oldin va keyin keladigan element mavjud.
3) Matritsa – shunday tuzilmaki, bunda R munosabatlar to‘plami ikkita chiziqli munosabatdan tashkil topgan bo‘ladi.
4) Daraxt – bunda R to‘plam iyerarxik tartibdagi bitta munosabatdan tashkil topgan bo‘ladi.
5)Graf – bunda R munosabatlar to‘plami faqatgina bitta binar tartibli munosabatdan tashkil topgan bo‘ladi.
6) Gipergraf – bu shunday ma’lumotlar tuzilmasiki, bunda R to‘plam ikki yoki undan ortiq turli tartibdagi munosabatlardan tashkil topgan bo‘ladi.
Foydalanuvchi dasturida va EHM hotirasida MT klassifikatsiya qilish
MT klassifikatsiya qilishda asosiy belgi bu ma’lumotlar tuzilmasini dastur
ishlashi mobaynida o‘zgarishi hisoblanadi. Masalan, agar dastur bajarilishi mobaynida elementlar soni va/yoki ular orasidagi munosabatlar o‘zgarsa, u holda bunday MT dinamik ma’lumotlar tuzilmasi, aks holda statistik ma’lumotlar tuzilmasi deyiladi.
Ma’lumotlar tuzilmasiga misollar:
Ma’lumki, matematikada o‘zgaruvchilarni, ularning ba’zi bir kerakli tavsiflariga mos ravishda klassifikatsiya qilish qabul qilingan. O‘zgaruvchilarga misol sifatida quyidagilarni keltirib o‘tish mumkin: haqiqiy o‘zgaruvchilar, kompleks o‘zgaruvchilar, mantiqiy o‘zgaruvchilar, bundan tashqari ba’zi bir qiymatlarni qabul qiluvchi o‘zgaruvchilar va boshqalar. Ma’lumotlarni qayta ishlashda ularni klassifikatsiya qilish ham katta ahamiyatga ega. Bu yerda ham klassifikatsiya qilinayotganda har bir konstanta, o‘zgaruvchi, ifoda yoki funksiya biror bir toifarga tegishli bo‘ladi degan tamoyilga asoslanadi.
Umuman olganda toifalar o‘zgaruvchi yoki ifoda qabul qilishi mumkin bo‘lgan qiymatlar to‘plami orqali tavsiflanadi.
Ko‘plab dasturlash tillarida ma’lumotlar standart va foydalanuvchi tomonidan beriladigan toifalarga ajratiladi. Ma’lumotlarni standart toifalariga quyidagi 5 ta tur o‘zgaruvchilari kiradi:
a) butun (INT);
b) haqiqiy (FLOAT) ;
c) mantiqiy (BOOL);
d) belgili (simvol) (CHAR);
e) ko‘rsatkichli (*).
Foydalanuvchi tomonidan aniqlanadigan toifalar esa:
a) sanaladigan;
b) diapazonli (oraliqli).
Ma’lumotlarning ixtiyoriy toifasi qiymatlar sohasi va ular ustida bajarilishi mumkin bo‘lgan amallar orqali tavsiflanadi.
Butun toifa – INT. Mazkur toifa butun sonlar to‘plamini qandaydir qism to‘plami bo‘lib, uning o‘lchami mashina, ya’ni EHM konfiguratsiyasiga bog‘liq ravishda o‘zgarib turadi. Agar butun sonni mashinada tasvirlash uchun p ta razryaddan foydalanilsa (bunda qo‘shimcha koddan foydalanilganda), u holda x butun sonning qiymat qabul qilish oralig‘i quyidagicha bo‘lishi zarur, ya’ni quyidagi shartni qanoatlantirishi lozim: -2 n-1<= x< 2 n-1.
Butun toifadagi ma’lumotlar ustida bajariladigan barcha amallar to‘g‘ri amalga oshiriladi deb hisoblanib, ushbu amallar arifmetikada qabul qilgan qoidalariga bo‘ysunadi. Agar ushbu toifada amallar bajarilganda natija ruxsat etilgan oraliqdan chiqib ketsa, u holda hisoblash to‘xtatiladi. Bunday hol to‘lib ketish deb ataladi.
Mazkur toifaga kiruvchi sonlar ikkitaga bo‘linadi: ishorali va ishorasiz. Ularning har bir uchun mos ravishda qiymat qabul qilish oralig‘i mavjud:
a) ishorasiz sonlar uchun (0..2n-1);
b) ishoralilar uchun (-2N-1.. 2N-1-1).
Sonlar mashinada qayta ishlanayotganda ularning ishorali ko‘rinishidan foydalaniladi. Agar mashina so‘zi yozuv, komandarani qayta ishlash va ko‘rsatkichlar uchun foydalanilayotgan bo‘lsa, u holda sonning ishorasiz ko‘rinishidan foydalaniladi.
Butun sonlar ustida – qo‘shish, ayrish, ko‘paytirish, butunsonli bo‘lish (qoldiqni tashlab yuborish orqali), berilgan modul bo‘yicha hisoblash (bo‘lishda qolgan qoldiqni hisoblash), berilgan sonlar to‘plamining eng katta va eng kichik elementini aniqlash, butun darajaga oshirish, sonning qiymatiga qarab o‘zidan oldingi yoki keyingi sonni aniqlash. Bu operatsiyalarning natijalari ham butun sonlar bo‘ladi.
Butun sonlar ustida ==,!=, <, <=, >, >= operatorlar bilan taqqoslash amallarni ham bajarish mumkin. Ammo bu operatsiyalarning natijalari INT toifasiga kirmaydi, ular BOOL toifasiga kiradi.
Haqiqiy toifa. Haqiqiy toifaga kasr qismlari bor chekli sonlar to‘plami kiradi. To‘plamni chekli bo‘lish sharti EXMda sonlarni ifodalash chegaralanganligi bilan bog‘liq. Haqiqiy sonlar ustida quyidagi amallarni bajarish mumkin: qo‘shish, ayrish, bo‘lish, ko‘paytirish, trigonometrik funksiyalarini hisoblash, darajaga oshirish, kvadrat ildiz chiqarish, logarifmlash, minimum va maksimum elementlarni topish va boshqalar. Bularning natijalari ham haqiqiy toifaga kiradi. Bu yerda ham binar amallarga nisbatan masalaning yechimlari mantiqiy toifaga tegishli bo‘ladi.
EHM xotirasida haqiqiy sonlar asosan qo‘zg‘aluvchan nuqta formatida saqlanadi. Bu formatda x haqiqiy son quyidagi ko‘rinishda ifodalanadi:
x = +/- M * q(+/-P) – soning yarim logarifmik shakldagi ifodalanishi quyidagi chizmada keltirilgan.
937,56 = 93756 * 10-2 = 0,93756 * 103
Mantiqiy toifa. Mazkur toifa mantiqiy mulohazalarni to‘g‘riligini aniqlash uchun, turli hil dasturlash tillarida turlicha ifodalaniladigan ifodalarni 2 ta true(1), false(0)ko‘rinishdaaniqlaydi. Mantiqiy ma’lumotlar ustida quyidagi mantiqiy operatsiyalarni bajarish mumkin: kon’yunksiya (va), diz’yunksiya (yoki) i inkor (yo‘q), hamda qiyinroq bo‘lgan ekvivalentlik, implikatsiya, chiqarib tashlash, yoki va boshqa operatsiyalar. Yuqorida keltirilgan ixtiyoriy operatsiyaning natijasi – mantiqiy qiymatga ega bo‘ladi. Mantiqiy qiymatni xotirada saqlash uchun bitta bit yetarli.
Asosiy mantiqiy funksiyalarning chinlik jadvali
Belgili toifa. Belgili toifaga belgilarning chekli to‘plami yoki liter, ularga lotin alifbosidagi harflar va unda yo‘q kirill harflar, o‘nlik raqamlar, matematik va maxsus belgilar kiradi. Belgili ma’lumotlar hisoblash texnikasi bilan inson o‘rtasidagi aloqani o‘rnatishda katta ahamiyatga ega. Ko‘pincha, dasturlashning har bir tizimida belgilar to‘plami fiksirlangan bo‘lib, ular turli tizimlarda turli hil bo‘lishi mumkin. Bundan tashqari ular tartiblangan bo‘lib, har bir uning elementiga aniq bir sonli kod mos qo‘yilib, u to‘plamdagi tartib raqamini aniqlaydi. Belgini sonli kodiga o‘tib, relyatsion operatorlardan foydalanib, simvollarni taqqoslash mumkin.Bunday taqqoslashlarning natijalari BOOL toifasiga kiradi.
C++ tilida belgili toifadan tashqari belgilar massividan tashkil topgan satrli toifalar bilan xam ishlash mumkin, ya’ni char []. Shu o‘rinda aytib o‘tish kerakki, satrlar bilan ishlashda belgilar massividan tashqari satrlar bilan ishlashga mo‘ljallangan maxsus kutubxona mavjud bo‘lib, String deb nomlanadi. Satr (qator, String) – bu qandaydir belgilar ketma-ketligi. Satr bitta, bo‘sh yoki bir nechta belgilar birlashmasidan iborat bo‘lishi mumkin. C++ tilida satr 0 dan to 255 tagacha uzunlikka ega bo‘lishi mumkin. Agar o‘zgaruvchi satr toifasiga tegishli bo‘lsa, u holda o‘zgaruvchi toifasi yozilayotganda 2 xil ko‘rinishda char [] yoki String deb aniqlanadi.
Belgili toifadagi amallar:
a) O‘zlashtirish;
b) Taqqoslash;
Ko‘rsatkichli toifa(Pointer). Ko‘rsatkichlitoifama’lumotlarni ko‘rsatkichlari yoki manzillari (adres) to‘plamini namoyon qiladi, ya’ni ko‘rsatkichlar ma’lumotlarni emas balki bu ma’lumotlar joylashgan xotiradagi manzilni o‘z ichiga oladi. Ko‘rsatkichlar xotirada bori yo‘g‘i 4 bayt joyni egallab, u ko‘rsatayotgan ma’lumotlar ancha katta joyni egallagan bo‘lishi mumkin. Pointer toifasi ma’lumoti ixtiyoriy boshqa biror ma’lumot yoki ma’lumotlar guruhiga yo‘naltirilgan bo‘ladi. Ko‘rsatkichga mumkin bo‘lgan u yoki bu qiymatni o‘zlashtirib, ushbu ko‘rsatkich orqali kerakli ma’lumotga murojatni amalga oshirish mumkin. Pointer toifasidagi ma’lumotlarni qiymatlar to‘plamida bitta maxsus qiymat bo‘lib, uni o‘zlashtirish hech qayerga yo‘naltirilmaganligini ko‘rsatadi, ya’ni nol yoki bo‘sh ko‘rsatkich hisoblanadi. Masalan, C++ tilida bunday qiymat sifatida NULLdan foydalaniladi.Ko‘rsatkichlar ustida amallar quyidagicha bo‘lishi mumkin: biror bir ko‘rsatkichga boshqa ko‘rsatkich qiymatini o‘zlashtirish mumkin yoki boshqa ma’lumot egallab turgan xotira sohasi adresini o‘zlashtirish mumkin. Ko‘rsatkichlar o‘zaro bog‘langan ma’lumotlar tuzilmasini yaratishda va qayta ishlashda katta ahamiyatga ega. Xotirada ko‘rsatkichlarni ifodalash uchun uchun asosan dasturlash tizimiga mos ravishda manzilni maksimal uzunligicha joy ajratiladi. Ko‘rsatkichlarni qiymati nomanfiy butun sonlar sifatida sohada bitlarni ketma-ketligi ko‘rinishida saqlanadi.C++ tilida ko‘rsatkichli o‘zgaruvchilarni e’lon qilish uchun ularning toifasini aniqlash kerak. Buning uchun ko‘rsatkich xotirada qanaqa toifadagi ma’lumotlarni ko‘rsatayotgan bo‘lsa, ko‘rsatkichli o‘zgaruvchiga xam xuddi shunday toifa beriladi.
int a=9;
int *p=&a;
float f=4.6;
float *d=&f;
FILE*f=fopen(“talaba.txt”,’r’);
Foydalanuvchi tomonidan aniqlanadigan toifalar
Sanaladigan toifalar. Qiymatlarning o‘zgaruvchan toifalari standartlardan farqliroq yangi toifalarni yaratishga imkon beradi. Bu guruhga sanaladigan va chegaralangan toifalar kiradi.
Qiymatlarning sanaladigan toifalarning bunday atalishiga sabab, ular qat’iy aniqlangan tartibda sanaladigan ko‘rinishda beriladi va xamma qiymatlarning soni qat’iy chegaralangan xamda ko‘rilayotgan toifadagi qiymatlarni qabul qilishi mumkin. Sanaladigan toifa yechilayotgan masalaga qarab foydalanuvchi tomonidan berilishi mumkin.
Sanaladigan toifa konstantalar ro‘yxatidan tashkil topadi.Bu toifadagi o‘zgaruvchilar ro‘yxatidagi ixtiyoriy qiymatni qabul qilishi mumkin. Sanaladigan toifaning umumiy yozilish shakli quyidagicha:
enum toifaning nomi {konstantalar ro‘yxati};
toifaning nomi o‘zgaruvchi nomi;
Buyerda konstanta tushunchasi foydalanuvchi tomonidan berilagan maxsus konstanta ko‘rinishi tushuniladi. Konstantalar ro‘yxati bir-biridan vergul bilan ajratiladi va ular oddiy qavslar ichiga olinadi.
Masalan:
enum Ranglar{oq, qora, qizil, yashil};
Ranglar rang;
Bu yerda Ranglar – sanaladigan toifaning nomi; oq, qora, qizil, yashil-konstantalar. Rang - o‘zgaruvchi nomi bo‘lib u yuqoridagi konstantalardan ixtiyoriysini qabul qilishi mumkin.
Har bir konstanta tartib raqamiga ega bo‘lib, hisobdan boshlanadi, ya’ni oq=0, qora=1, qizil=2, yashil=3 raqamlariga ega. Konstantalar tartiblangani uchun ularga solishtirish amallari <, <=,==,!=, >=, > shuningdek standart funksiyalarni qo‘llash mumkin.
Strukturalar. Strukturalar turli toifadagi maydonlardan tashkil topgan yozuv hisoblanadi.Strukturalarni e’lon qilish uchun struct kalit so‘zi ishlatiladi. Undan keyin toifaga nom beriladi va {} qavs ichida maydonlar toifalari va nomlari e’lon qilinadi.
|