Chiziqli algoritmlar - Alisher ismailov shakirovich algoritmlash va dasturlash asoslari (1-qism)

Chiziqli algoritmlar
Faqat ketma-ket bajariladigan jarayonlardan tashkil topgan algoritmlarga chiziqli algoritmlar deb ataladi. Bunday algoritmni ifodalash uchun ketma-ketlik strukturasi ishlatiladi. Strukturada bajariladigan amal mos keluvchi shakl bilan ko‘rsatiladi. Chiziqli algoritmlar blok-sxemasining umumiy strukturasi quyidagi ko‘rinishda bo‘lishi mumkin:
Chiziqli algoritmlar blok-sxemasining strukturasi
Tarmoqlanuvchi algoritmlar
Agar algoritm jarayoni berilgan shartning natijasiga qarab turli tarmoqlar bo‘yicha davom ettirilsa va hisoblash jarayonida har bir tarmoq faqat bir marta bajarilsa, bunday hisoblash jarayonlariga tarmoqlanuvchi algoritmlar deb ataladi. Tarmoqlanuvchi algoritmlar uchun ayri strukturasi ishlatiladi. Tarmoqlanuvchi strukturasi berilgan shartning bajarilishiga qarab ko‘rsatilgan tarmoqdan faqat bittasining bajarilishini ta’minlaydi. Tarmoqlanuvchi algoritmning shart bajaradigan jarayon blok-sxemada romb figurasi bilan ifodalanadi. Quyidagi suratda shart bajarilishi blok-sxemasi keltirilgan.
Tarmoqlanish algortimining strukturasi
Berilgan shart romb geometrik figura orqali ifodalanadi, a > b - berilgan shart. Agar shart to‘g‘ri bo‘lsa, "ha" tarmoq bo‘yicha a-jarayon bajariladi, shart noto‘g‘ri bo‘lsa "yo‘q" tarmoq bo‘yicha b-jarayon bajariladi.
Tarmoqlanuvchi algoritmga misol sifatida quyidagi sodda misolni ko‘raylik.
1- Misol: Berilgan a ning qiytmatiga bog‘liq holda, agar a qiymati 100 dan katta bo‘lsa «ha» tarmoq bo‘yicha ‘100 dan katta son’ xabarini chop etsin, agar shart noto‘g‘ri bo‘lsa ‘100 dan kichik son’ xabarini chop etsin.
Ko‘pgina masalalarni yechishda, shart asosida tarmoqlanuvchi algoritmlarning ikkita tarmog‘idan bittasini, ya’ni “ha” yoki “yo‘q” tarmoqlarining bajarilishi yetarli bo‘ladi.
Takrorlanuvchi yoki Sikllik algoritmlar
Agar tarmoqlanuvchi algoritm holatiga qarab takrorlansa tarmoqlanuvchi algoritmning xususiy holi sifatida aylanish strukturasi deb ham atash mumkin. Aylanish strukturasi quyidagi ko‘rinishga ega:
Aylanish strukturasining ko‘rinishi
Agar masalani yechish uchun tuzilgan buyruqlar ketma-ketligi takrorlansa bunday algoritm takrorlanuvchi algoritm yoki sikllik algoritmlar ham deb ataladi. Takrorlanuvchi algoritmlarga misol sifatida 1 dan 100 gacha bo‘lgan sonlarni chop etish yoki ‘Dasturlash’ xabarini n-marta chop etishlarni keltirish mumkin. Quyidagi misolda ‘C++ ga xush kelibsiz!’ xabari 100 marta ekranga chop etiladi.
Bu masalani bajarish uchun i=0 da maks=100 qiymatda deb olamiz va i 100 ga teng bo‘lmaguncha xabarni ekranga chop etamiz. Buni matnli algoritm sifatida quyidagidek yozish mumkin:
Boshlash
i=0 berilsin,
maks=100 berilsin,
i=i+1 hisoblansin,
i tekshirilsin va bu shart to‘g‘ri bo‘lsa, “C++ ga xush kelibsiz” xabari chop etilsin va 4-qatorga qaytilsin, aks holda keying qatorga o‘tilsin.
Tugatish
‘C++ ga xush kelibsiz!’ xabarini 100 marta ekranga chop etuvchi algoritm
Yuqorida keltirilgan algoritm va blok-sxemadan ko‘rinib turibdiki buyqurlarlar ketma-ketligining ma’lum qismi parametr i ga nisbatan maks marta takrorlanayapti.
‘C++ ga xush kelibsiz!’ xabarini 100 marta chop etuvchi algoritm
Amaliy mashgulotlar
Choy damlash algoritmini tuzish
Matnli algoritm
Boshlash
Idishga suvni quying
Gazni yoqing
Suv idishini gazga qo‘ying
Suv qaynagandan so‘ng, choyni damlang
Tugatish
Blok-sxemasi
Farangeyt darajani selsius darajasiga o‘tkazish algoritmi
Matnli algoritm
Boshlash
Farangeyt darajasini kiriting
Farangeyt darajani selsius darajasiga o‘tkazing (hisoblang)
Selsius darajani ekranga chop eting
Tugatish
Blok-sxemasi
Mashina svetoforga kelganda harakatlanish algoritmi
Matnli algoritm
Boshlash
Mashinani yurgizing
Agar svetofor qizil chirogi yoniq bo`lsa to`xtang, aks holda mashinani yurgizing
Tugatish
Blok-sxemasi
2 ta sonni o‘rtacha qiymatini aniqlash algoritmini yozing.
Matnli algoritm
Boshlash
A sonini kiriting
B sonini kiriting
Hisoblang – ikkala sonlarni o‘rtachasini aniqlang
Natija ekranga chop eting
Tugatish
Blok-sxemasi
C++ ga xush kelibsiz xabarini 5 marta ekran chop etish algoritmi
Matnli algoritm
Boshlash
Sanoqni 0 ga teng qilib belgilang
Agar ssnoq 5 dan kichik bo‘lsa “C++ ga xush kelibsiz” xabarini chop eting, aks holda keying jarayonga o‘ting
Tugatish
Algoritmlarni ishlab chiqish va taqdim etish usullari
3-mavzu
Matnli algoritm
Sxematik(grafik) algoritmlar
Algoritmni tahlil qilish
Algoritmni dasturlashga bog‘lash
Algoritmning afzalliklari va dasturlashdagi ahamiyati
Amaliy mashg‘ulotlar
Algoritmlarni ishlab chiqish va tahlil qilish. Algoritmlarni taqdim etish usullari. Algoritmni dasturlashga bog‘lash usullari.
Algoritmlarning ishlab chiqishning amaliyotda ikkita asosiy usullari mavjud:
matnli algoritmlar
sxematik(grafik) algoritmlar
Matnli algoritm
Matnli algoritm bu muammoni qadam va qadam yechimi va har qadam oddiy inson tushunadigan matn bilan ifodalanadi. Matnli algoritmning asosiy yutug‘i bu uning soddaligi hisoblanadi. Ya’ni dasrtuchi yoki informatik bo‘lmagan inson ham matnli algoritmni o‘qib masala yechimini tushunishi mumkin. Matnli algortimlar odatda sodda masalalar uchun qo‘llaniladi. Matnli algoritmning har bir qadami raqamlab boriladi. Esda saqlash kerak bo‘lgan qoida bu algoritmning birinchi qadami doim ‘boshlash’ va oxirgi qadami ‘tugatish, yaakunlash’ bo‘lishi kerak. Agar algoritm qadamlarini oxiri ‘tugash’ bilan yakunlamasa bunday algoritm, algoritm deb tan olinmaydi. Mantli algoritmni dasturchi kodga o‘zgartishi juda oson hisoblanadi. Matnli algoritmga misol qilib kundalik hayotimizdagi vazifalarni keltirish ham mumkin. Masalan piyodalar o‘tish joyidan yo‘lni narigi tomoniga o‘tish algoritmi mana bunday ifodalanishi mumkin:
Matnli algoritm piyodalar o‘tish joyidan yo‘lini kesib o‘tish:
boshlash
chapga qarang
agar mashina yo‘q bo‘lsa, yo‘lni o‘rtasigacha yuring va to‘xtang
o‘ngga qarang
agar mashina yo‘q bo‘lsa, yuring
tugatish
Sxematik(grafik) algoritmlar
Aytib o‘tilganimizdek matnli algoritmlar murakkab masalalarni yechishda tushunmovchiliklar keltirib chiqaradi. Murakkab masalalarni yechish uchun grafik algoritmlar qo‘llaniladi. Bunday algoritmlar blok-sxemali algoritmlar deb ham ataladi. Blok-sxemali algoritmlar geometrik figuralar orqali ifodalanadi (2-mavzuda keltirilgan). Blok-sxemali algoritmlarda har bir geometrik figuraning o‘z vazifasi bor. Bu vazifalarni dasturchi bilishi shart hisoblanadi aks holda katta hajmdagi dastur tuzilishida uzulishlar va bu dastur muddatidan kechga qolib tayyorlanishiga olib keladi. Blok-sxemali algoritmlar masalani aniq yechimini taqdim etadi va bu dasturchiga ancha vaqt tejalishini ta’limlaydi. Matnli algoritmda aytib o‘tkanimizdek har bir algoritmning boshlash va tugash qadamlari shart bo‘lgan qadamlar hisoblanadi. Blok-sxemali algoritmda boshlash va tugatish buyruqlarini qovunsimon dumolaq figura ifodalaydi. Oddiy misol sifatida grafik algoritmga 2 ta butun sonni ko‘paytmasini topishni keltirishimiz mumkin.
1-qadam. Boshlash. Algoritmning boshlanishini ifodalaydi.
2-qadam. Kiritish ma’lumoti, bu yerda son kiritilyapti.
3-qadam. Kiritish ma’lumoti, bu yerda son kiritilyapti.
4-qadam.Hisoblash. a va b sonlarini ko‘paytmasini hisoblayapti.
5-qadam. Chop etish. Natijani ya’ni a va b sonlarni ko‘paytmasi natijasini ekranga chop etadi.
6-qadam. Tugash. Algoritmni yakuniga yetganini ifodalaydi.
Algoritm tahlili aniq hisoblash muammosini hal qilish uchun algoritmning zarur resurslarini nazariy baholashni ta’minlaydi. Ko‘pgina algoritmlar ixtiyoriy uzunlikdagi kirishlar bilan ishlash uchun mo‘ljallangan. Algoritmlarni tahlil qilish - uni bajarish uchun zarur bo‘lgan vaqt va xotiradigi joy resurslari miqdorini aniqlash jarayoni hisoblanadi.
Odatda, algoritmning samaradorligi ishlash vaqti, kirish ma’lumotlari ko‘pligi bilan baholanadi.
Algoritmlar ko‘pincha bir-biridan juda farq qiladi, ammo bir nechta algoritm bir xil natija taqdim etish uchun yaratilgan bo‘lishi ham mumkin. Masalan, raqamlar to‘plamini turli xil algoritmlar yordamida tartiblash mumkin. 2 ta algoritm bir xil natija berganda, dasturchi sifatida bulardan qaysi biri samaraliroq ekanligini aniqlab o‘sha algoritmdan foydalanish maqsadga muvofiq hisoblanadi. Algortimning samaradorligi uning qancha vaqt sarflashi va qancha xotiradan joy talab etishi bilan baholanadi. Agar algoritm tez va xotirada oz joy talab etsa shu algortim samarador deb hisoblanadi.
Algoritm tahlil turlari quyidagilardan iborat:
Eng yomon holat - har qanday misolda bajarilgan qadamlarning soni maksimal darajada bo‘lishi
Eng yaxshi holat - har qanday misolda bajarilgan qadamlarning soni minimal darajada bo‘lishi
O‘rtacha holat - Har qanday misolda bajarilgan qadamlarning soni o‘rtacha darajada bo‘lishi
Algoritmni dasturlashga bog‘lash
Har bir yaratilgan algoritm dasturlashda ifodalanishi mumkin. Eng muhimi algoritm dasturlash tili tanlamaydi. Ya’ni algoritm yaratilganidan keyin uni xoxlasangiz C++ dasturlash tilida, xoxlasangiz Piton (Python) dasturlash tilida dastur sifatida ifodalashingiz mumkin bo‘ladi. Algortim qadamlarini ifodalash uchun har bir dasturlash tilida maxsus jarayonlar mavjud. Masalan yuqoridagi misolda a va b sonlarini kiritish degan qadam bor. Ma’lumot kiritishni C++ dasturlash tilida cin>> orqali amalga oshirish mumkin. Yoki 5-qadamda natijani ekranga chop etish jarayoni mavjud, buni C++dasturlash tilida cout<< funksiyasi orqali amalga oshirish mumkin. Demak, yaratilayotgan algoritmlarni dasturiy ifodasini sizga ma’qul bo‘lgan dasturlash tilida amalga oshirish mumkin. Ushbu kitobda biz dasturlash tili sifatida C++ tilini o‘rganamiz. Dasturlashda nima uchun algoritmlardan foydalanishimiz kerakligi haqida gapirganda, kompyuter dasturlari protsessor va xotiraga ega kompyuter uskunasida ishlaydigan turli xil algoritmlarni qabul qiladi va bu komponentlar cheklovlarga ega hisoblanadi. Protsessor cheklangan resurslar iborat. Ulardan oqilona foydalanish kerak va vaqt nuqtai nazaridan samarali bo‘lgan yaxshi algoritm buni amalga oshirishga yordam beradi. Dasturlashda masalani yechishning turli usullari mavjud. Biroq, mavjud usullar samaradorligi bilan farq qiladi. Ba’zi usullar boshqalarga qaraganda aniqroq javob berish uchun juda mos keladi. Algoritmlar muammoni hal qilishning eng yaxshi usulini topish uchun ishlatiladi. Algortimlar dastur samaradorligini ham oshiradi.
Dastur samaradorligi turlicha talqin qilinishi mumkin. Ulardan biri dasturiy ta’minotning aniqligi hisoblanadi. Eng yaxshi algoritm bilan kompyuter dasturi juda aniq natijalarni berishi mumkin bo‘ladi.
Dasturiy ta’minot samaradorligini ko‘rishning yana bir usuli - bu dasturning tezligi hisoblanadi. Dasturning masalani bajarish tezligini oshirish uchun algoritmdan foydalanish mumkin. Yaxshi algoritm muammoni hal qilish uchun dastur vaqtini qisqartirish imkoniyatiga ega hisoblanadi.
Algoritmning afzalliklari va dasturlashdagi ahamiyati
Algoritmlar dasturchiga berilgan muammoni hal qilish mumkinmi yoki yo‘qligini aniqlashga yordam beradi. Agar muammoni hal qilish mumkin bo‘lsa, qanday qilib, qanchalik tez va qanchalik aniq hal qilish mumkinligi haqida to‘liq ma’lumot beradi. Agar muammoni hal qilish mumkin bo‘lmasa, algoritm muammoni bir qismini hal qila oladimi yoki yo‘q degan savolga javob topishga yordam beradi.
Foydalanuvchi manzilini kiritsin va kiritilgan ma’lumotni ekranga chop etsin.
Matnli algoritm
1-qadam. Boshlash
2-qadam. Foydalanuvchidan manzilini kiritishni so‘rang
3-qadam. Foydalanuvchi kiritgan ma’lumotni ekranga chop eting
4-qadam. Tugatish
Foydalanuvchi ism va familyasini kiritsin va foydalanuvchi kiritgan ma’lumotlarni ekranga chop eting.
Matnli algoritm
1-qadam. Boshlash
2-qadam. Foydalanuvchidan ismini kiritishni so‘rang
3-qadam. Foydalanuvchidan familyasini kiritishni so‘rang
4-qadam. Foydalanuvchi kiritgan ma’lumotlarni ekranga chop eting
5-qadam. Tugatish
Foydalnuvchi 3 ta butun sonlarni kiritsin va kiritilgan sonlarni yig‘indisini hisoblab ekranga chop etsin.
Matnli algoritm
1-qadam. Boshlash
2-qadam. Foydalanuvchidan birinchi butun sonni kiritishni so‘rang
3-qadam. Foydalanuvchidan ikkinchi butun sonni kiritishni so‘rang
4-qadam. Foydalanuvchidan uchinschi butun sonni kiritishni so‘rang
5-qadam. Foydalanuvchi kiritgan sonlarni yig‘indisini hisoblang
6-qadam. Yig‘indini ekranga chop eting
7-qadam. Tugatish
Foydalanuvchi tug‘ilgan yilini kiritsin va hozirgi yildan tug‘ilgan yilni ayirib foydalanuvchini yoshini toping, foydalanuvchi yoshini ekranga chop eting.
Matnli algoritm
1-qadam. Boshlash
2-qadam. Foydalanuvchidan yoshini kiritishni so‘rang
3-qadam. Hozirgi yildan foydalanuvchi kiritgan yilni ayirib hisoblang
4-qadam. Foydalanuvchi yoshini ekranga chop eting
5-qadam. Tugatish
Soatbay ishlaydigan insonni kunlik ish haqini hisoblab ekranga chop eting.
Matnli algoritm
1-qadam. Boshlash
2-qadam. Foydalanuvchidan necha soat ishlaganini so‘rang
3-qadam. Foydalanuvchidan soatiga qancha maosh olishini so‘rang
4-qadam. Foydalanuvchi necha soat ishlaganini, foydalanuvchi soatiga oladigan maoshga ko‘paytirib ish haqini hisoblang
5-qadam. Foydalanuvchi ish haqisini ekranga chop eting
6-qadam. Tugatish
Ushbu mavzuda bajargan barcha grafik algoritmlarimiz chiziqli algoritm hisoblanadi. Keyingi mavzuda tarmoqlanuvchi algoritmlarni o‘rganamiz.
Tarmoqlanuvchi va takrorlanuvchi algoritmlar
4-mavzu
Tarmoqlanuvchi algoritm
Takrorlanuvchi (sikl) algoritm
Amaliy mashg‘ulotlar
Elementar asosiy boshqaruv tuzilmalari: ketma-ketlik, tarmoqlanish, turli halqalar (old shartli, keyingi shartli, parametrik). Tuzilgan dasturlashning asosiy dasturlash tuzilmalari: chiziqli, tarmoqli, siklik.
Yuqoridagi mavzularda grafik algoritmning faqat chiziqli turini ko‘rib chiqdik. Bu mavzuda grafik algoritmning tarmoqlanuvchi va takrorlanuvchi turlarini o‘rganamiz.
Tarmoqlanuvchi algoritm - algoritm qaror qabul qilish funksiya mavjud bo‘lsa shu algoritm tarmoqlanuvchi algoritm deb ataladi. Masalan, kundalik hayotimizda uchraydigan qarorlarni misol keltrishimiz mumkin: agar qornim ochsa ovqatlanaman, agar yomg‘ir yog‘sa sayobon ishlataman, agar kasal bo‘lsam doktorga boraman. Qaror qabul qilish jarayoni tarmoqlanuvchi algoritmning asosiy xususiyati hisoblanadi. Blok-sxema yaratishda qaror qabul qilish romb geometrik figurasi orqali ifodalanadi.
Qaror qabul qilish jaroyoni dasturchilar tili bilan ta’riflasak, agar nimadur bo‘lsa bunday ishni amalga oshiraman, aks holda bunday ishni amalga oshiraman jarayoni hisoblanadi.
Tarmoqlanuvchi algoritmning qaror qabul qilish jarayonidan faqat ikkita natija chiqishi mumkin: (True/False) To‘g‘ri yoki Noto‘g‘ri.
Ushbu natijalarga bog‘liq holda algoritm keyingi jarayonni hal qiladi. Masalan, agar telefonim zaryadi 10% dan oz qolgan bo‘lsa zaryadkaga ulayman, aks holda zaryadkaga ulashim shart emas. Blok-sxema ko‘rinishi quyidagidek ifodalanadi.
Demak tarmoqlanuvchi algoritm qaror qabul qilish orqali keyingi jarayonni belgilaydi. Yuqoridagi misolda agar telefon zaryadi 10% foizdan oz qolgan bo‘lsa 1-holatdagi jarayon amalga oshiriladi, aks holda (agar telefon zaryadi 10%dan yuqori bo‘lsa) 2-holatdagi jarayon amalga oshiriladi.
Takrorlanuvchi (sikl) algoritm
Takrorlanuvchi algoritm – qayta-qayta bajariladigan amallar ketma keltligini amalga oshiruvchi algoritmga aytiladi. Masalan, ismingizni ekranga 100 marta chop eting topshirig‘i berilgan bo‘lsa, chiziqli alogritmdan foydalansangiz ekranga chop etish amali 100 marta yozilishi kerak bo‘ladi. Bu algortimni murakkablashtiradi. Buning yechimini algoritmda takrorlanuvchi amali orqali bajarish mumkin. Tarmoqlanuvchi algoritmda shart beriladi va shart noto‘g‘ri bo‘lmguncha jarayon takrorlanadi. Bunga qaytish strelkasi orqali erishish mumkin:
To‘liq blok-sxema quyidagidek ifodalanadi.
Amaliy mashg‘ulotlar
Tarmoqlanuvchi algoritmlarga amaliy mashg‘ulotlar
N sonining juft yoki toq son ekanligini ekanligini aniqlang.
Matnli algoritm.
1-qadam. Boshlash
2-qadam: N raqamini foydalanuvchi kiritsin
3-qadam: N raqamni 2ga modulini chiqaring (% opearati orqali).
4-qadam: Agar qoldiq 0 ga teng bo‘lsa, N soni juft, aks holda N soni toq son hisoblanadi
5-qadam: Natijani ekranga chop eting
6-qadam. Tugatish
Blok-sxemali algoritm (tarmoqlanuvchi).
Ob-havo muzlash nuqtasidan past yoki undan yuqori ekanligini aniqlang.
Matnli algoritm
1-qadam. Boshlash
2-qadam: Hozirgi ob-havo darajasini kiriting.
3-qadam: Agar ob-havo darajasi 0 gradusdan past bo‘lsa, "muzlaydi" xabarini ekranga chop eting,aks holda "muzlamaydi" xabarini ekranga chop eting.
4-qadam. Tugatish
Blok-sxema
Talaba o‘qishga kirganmi yoki yo‘qligini bali orqali aniqlang.
Matnli algoritm
1-qadam. Boshlash
2-qadam. Imtihon natijasini kiriting
3-qadam. Agar baho 56 dan past bo‘lsa, "Talabalik safiga tavsiya etilmadi" xabarini ekranga chop eting, aks holda " Talabalik safiga tavsiya etildi" xabarini ekranga chop eting.
4-qadam. Tugatish
Blok-sxema
Kiritilgan ikkita sonlar orasidagi eng katta sonni aniqlang.
Matnli algoritm
1-qadam. Boshlash
2-qadam: A sonini kiriting.
3-qadam: B sonini kiriting.
4-qadam: Agar B soni A sonidan katta bo‘lsa, B sonini ekranga chop eting, aks holda A sonini ekranga chop eting
5-qadam. Tugatish
Blok-sxema
Hafta kuni nomerini kiritsa hafta kuni nomini chop etish algoritmi
Matnli algoritm
1-qadam. Boshlash
2-qadam. Hafta kuni nomerini kiriting
3-qadam. Hafta kuni nomerini solishtiring
4-qadam. Hafta nomeri mos keladigan kunni nomini ekranga chop eting
5-qadam. Tugatish
Blok-sxemasi
Takrorlanuvchi algoritmlarga amaliy mashg‘ulotlar
1 dan 50 gacha bo‘lgan sonlarni ekranga chop eting
Matnli algortim
1-qadam. Boshlash
2-qadam. A sonni qiymatini 1 ga teng qilib belgilang
3-qadam. Agar A soni 50 dan kichik bo‘lsa A sonini ekranga chop eting, aks holda algortim yakunlansin
4-qadam. A soni qiymatiga 1 qo‘shing (1 ga oshiring)
5-qadam. Tugatish
Blok-sxemasi
4 ga bo‘linadigan 1 dan 100 gacha bo‘lgan barcha raqamlarni toping.
Matnli algoritm
1-qadam: Boshlash
2-qadam: i sonini 0 ga teng qilib belgilang
3-qadam: agar i soni 100 dan kichik bo‘lsa keyingi qadamga o‘tsin, aks holda algoritm tugatilsin
4-qadam: Hisoblang: agar i soni 4 bo‘linsa, i sonini ekranga chop eting, aks holda keyingi qadamga o‘tilsin
5-qadam: i soni qiymatini 1 ga oshiring
6-qadam: Tugatish
Blok-sxema
Foydalanuvchi kiritgan ma’lumotni, foydalanuvchi xoxlagancha ekranga chop eting.
Matnli algoritm
1-qadam. Boshlash
2-qadam. i sonini 0 ga qilib belgilang
3-qadam. Foydalanuvchi ma’lumotini kiritsin
4-qadam. Foydalanuvchi necha marta chop etishini kiritsin
5-qadam. Agar i soni foydalanuvchi kiritgan sondan kichik bo‘lsa, foydalanuvchi ma’lumotini ekranga chop eting, aks holda algoritm yakunlansin.
6-qadam. i soni qiymatini 1 ga oshiring
7-qadam. Tugatish
Blok-sxemasi
Masalalarni yechish bosqichlari: masalani qo‘yish, model yaratish, algoritm, algoritmni kodlash, natijalarni tahlil qilish
5-mavzu
SDLC (Software development life cycle)
SDLC ahamiyati
SDLC bosqichlari
Amaliy mashg‘ulotlar
Loyihadan oldingi tadqiqot va predmet va muammoli sohalarni tahlil qilish. Dasturiy ta’minot talablarini ishlab chiqish: yondashuvlar va vositalar. Spetsifikatsiya tushunchasi va uning mazmuni.
Kichik dasturiy masala yoki muammolarni yechish ancha sodda. Lekin katta dasturlar yaratilganda ularni talablarini o‘rganish, masalaga yechim topish, algoritmlar ishlab chiqish katta jamoa va ko‘p vaqt talab etadi. Bugungi kunda katta dasturlar yaratishda dasturlarni o‘z muddatida topshirish uchun tizim yaratilgan. Ushbu tizim SDLC (Software development life cycle) Dastur yaratish hayot sikli deb ataladi.
SDLC (Software development life cycle)
SDLC - dasturiy ta’minotni yaratish uchun tizimli jarayon bo‘lib, u yaratilgan dasturiy ta’minotning sifati va to‘g‘riligini ta’minlaydi. SDLCning maqsadi mijozlar talablariga javob beradigan yuqori sifatli dasturiy ta’minotni ishlab chiqarishga qaratilgan. Tizimni ishlab chiqish oldindan belgilangan vaqt va belgilangan narx doirasida tugallanishi kerak. SDLC batafsil rejadan iborat hisoblanadi, u aniq dasturiy ta’minotni rejalashtirish, yaratish va saqlashni tushuntiradi. SDLC hayotiy siklining har bir bosqichi o‘z jarayoni va keyingi bosqichga o‘tadigan natijalarga ega bo‘ladi.
SDLC ahamiyati
SDLC dasturiy ta’minot tizimini ishlab chiqish uchun muhim bo‘lgan asosiy sabablar quyidagilardan iborat.
SDLC loyihani rejalashtirish va baholash uchun asosni beradi
Standart faoliyat va natijalar to‘plami uchun asosni taqdim etadi
SDLC loyihani kuzatish va nazorat qilish mexanizmi hisoblanadi
Loyihani rejalashtirish jarayonining barcha manfaatdor tomonlari uchun ko‘rinishini oshiradi
Dasturni ishlab chiqish tezligini oshiradi
Mijoz va dasturchi aloqalarini muntazamligini ta’minlaydi
Loyihani boshqarish rejasini qo‘shimcha harajatlarini kamaytirishga yordam beradi
SDLC bosqichlari
1-bosqich: Texnik talablarni o‘rganib chiqish va tahlil qilish
2-bosqich: Texnik-iqtisodiy asoslarni ishlab chiqish (Loyihaning (dastur) umumiy byudjeti aniqlanadi)
3-bosqich: Dizayn (algoritm yaratish)
4-bosqich: Kodlash
5-bosqich: Sinov (har bir funksiya to‘g‘ri ishlayotgani tekshiriladi)
6-bosqich: O‘rnatish (dasturni mijozning qurilmasiga yoki hostingga o‘rnatish jarayoni)
7-bosqich: Texnik xizmat ko‘rsatish (dasturga kelajakdagi o‘zgartirishlar kiritish xizmatlari)
1-bosqich: Dastur talablarini yig‘ish va tahlil qilish
Talablarni aniqlash - SDLC jarayonining birinchi bosqichi hisoblanadi. U barcha manfaatdor tomonlar va soha mutaxassislarining ma’lumotlari bilan olib boriladi. Ushbu bosqichda dasturning har bir talabi (requirement) ni o‘rganib chiqish va rejalashtirish amalga oshiriladi. Ushbu bosqich butun loyihaning ko‘lami va loyihani ishga tushirganda kutilayotgan muammolar, imkoniyatlar va ko‘rsatmalar haqida aniqroq tasavvur beradi. Talablarni yig‘ish bosqichida batafsil va aniq talablarni olish uchun jamoa kerak bo‘ladi. Bu kompaniyalarga yaratilayotgan yangi dasturiy loyihani ishini tugatish uchun kerakli bo‘lgan vaqt muddatini tashkil etishga yordam beradi.
2-bosqich: Texnik-iqtisodiy asoslash
Talablarni tahlil qilish bosqichi tugallangandan so‘ng, keyingi SDLC bosqichi dasturiy ta’minot ehtiyojlarini aniqlash va hujjatlashtirish hisoblanadi. Ushbu jarayon "SRS" hujjati sifatida ham tanilgan, "Dasturiy ta’minot talablari spetsifikatsiyasi" hujjati yordamida amalga oshiriladi. U loyihaning hayot sikli davomida ishlab chiqilishi kerak bo‘lgan barcha narsalarni o‘z ichiga oladi. Ushbu bosqichnig asosiy foydasi bu ishlab chiqilishi rejalashtirilgan dasturning amalga oshira olamizmi degan savolga javob berishi hisoblanadi. Bu fizibiliti deb ham ataladi.
Fizibiliti tekshiruvlarining asosan besh turi mavjud:
Iqtisodiy: Loyihani byudjet doirasida yakunlay olamizmi yoki yo‘qmi?
Yuridik: Biz ushbu loyihani kiber qonun va boshqa me’yoriy-huquqiy ba’za/muvofiqliklar sifatida ko‘rib chiqa olamizmi?`
Operatsion fizibiliti: Biz mijoz kutgan operatsiyalarni yarata olamizmi?
Texnik: joriy qurilma tizimi dasturiy ta’minotni qo‘llab-quvvatlay oladimi yoki yo‘qligini tekshirish kerak
Vaqt muddati: Loyihani belgilangan vaqt muddatida bajarish mumkin yoki yo‘qligini aniqlash.
3-bosqich: Dizayn
Ushbu uchinchi bosqichda tizim va dasturiy ta’minotni loyihalash hujjatlari talabning spetsifikatsiya hujjatiga muvofiq tayyorlanadi. Bu umumiy tizim arxitekturasini aniqlashga yordam beradi. Dizayn bosqichi modelning keyingi bosqichi uchun kirish bo‘lib xizmat qiladi. Dizayn bosqichida algoritmlar ham yaratiladi. Ushbu bosqichda ishlab chiqilgan ikki turdagi dizayn hujjatlari mavjud bo‘lishi kerak:
Yuqori darajadagi dizayn (HLD)
Har bir modulning qisqacha tavsifi va nomi
Har bir modulning funksionalligi haqida qisqacha ma’lumot
Interfeys aloqasi va modullar orasidagi bog‘liqliklar
Ma’lumotlar ba’zasi jadvallari va ularning asosiy elementlari
To‘liq arxitektura diagrammalari va texnologiya tafsilotlari
Quyi darajadagi dizayn (LLD)
Modullarning funksional mantiqi
Turi va hajmini o‘z ichiga olgan ma’lumotlar ba’zasi jadvallari
Interfeysning to‘liq tafsilotlari
Xato xabarlari ro‘yxati
Har bir modul uchun to‘liq kirish va chiqish ma’lumotlari
4-bosqich: Kod yozish
Tizimni loyihalash bosqichi tugagach, keyingi bosqich kod yozish hisoblanadi. Ushbu bosqichda ishlab chiquvchilar tanlangan dasturlash tilidan foydalangan holda kod yozish orqali butun tizimni (dasturni) qurishni boshlaydilar. Kodlash bosqichida vazifalar birliklarga yoki modullarga bo‘linadi va turli ishlab chiquvchilarga beriladi. Bu dasturiy ta’minotni ishlab chiqishning hayot sikli jarayonining eng uzun bosqichi hisbolanadi. Ushbu bosqichda dasturchi 1-2-3-bosqichlarda aniqlab tayyorlangan ko‘rsatmalariga amal qilishi kerak. Shuningdek, ular kodni yaratish va amalga oshirish uchun kompilyator, tarjimon, tuzatuvchi kabi dasturlash vositalaridan foydalanishlari ham kerak bo‘ladi.
5-bosqich: Sinov
Dastur kodlari yozilib tayyor bo‘lgandan so‘ng, u sinov bosqichida tekshiriladi. Odatda sinov alohida firma/kompaniya xizmati yordamida amalga oshiriladi. Sinov o‘tkazish guruhi yangi yaratilgan butun dasturning funksionalligini sinab ko‘rishni boshlaydi. Bu butun dastur mijoz talabiga muvofiq ishlashini tekshirish uchun amalga oshiriladi. Ushbu bosqichda QA va sinov guruhi ishlab chiquvchilarga (dasturchilarga) xabar beradigan ba’zi xatolar/nuqsonlarni topishi mumkin. Ishlab chiqish guruhi xatoni tuzatadi va qayta sinovdan o‘tkazish uchun QAga yuboradi. Bu jarayon yaratilgan dastur xatosiz, barqaror va ushbu tizimning biznes ehtiyojlariga muvofiq ishlamaguncha davom etadi.
6-bosqich: O‘rnatish/joylashtirish
Dasturni sinovdan o‘tkazish bosqichi tugagach va tizimda hech qanday xato qolmaganidan so‘ng, yakuniy joylashtirish jarayoni boshlanadi. Loyiha menejeri tomonidan berilgan fikr-mulohazalar asosida yakuniy dastur versiyasi joylashtirish bilan bog‘liq muammolar tekshiriladi. Agar desktop dastur yaratilgan bo‘lsa mijozning qurilmasiga o‘rnatib beriladi. Agar yaratilgan dastur internetda ishlaydigan bo‘lsa server (hosting)ga joylashtiriladi va mijozga topshiriladi. Ushbu bosqichda ishlab chiquvchi dasturchilarning shartnomaga doir ishlari yakunlangani belgilanadi. Va agar mijoz ishlab chiquvchiga yangi o‘zgartirshlar uchun xizmat qilishni taklif qilsa keyingi bosqich ham ishlab chiquvchiga tegishli hisoblanadi.
7-bosqich: Texnik xizmat ko‘rsatish
Yaratilgan dastur o‘rnatilgach va mijozlar ishlab chiqilgan tizimdan foydalanishni boshlagandan so‘ng, quyidagi 3 ta harakat sodir bo‘ladi.
Xatolarni tuzatish – xatoliklar haqida umuman tekshirilmagan ayrim senariylar tufayli xabar qilinadi
Yangilash - dasturni yangi versiyalariga yangilash
Yaxshilash - mavjud dasturiy ta’minotga ba’zi yangi xususiyatlarni qo‘shish
Ushbu SDLC bosqichining asosiy yo‘nalishi ehtiyojlarni qondirishda davom etishini va dastur birinchi bosqichda aytib o‘tilgan spetsifikatsiyaga muvofiq ishlashini ta’minlashdan iborat hisoblanadi.
Xulosa
Dasturiy ta’minotni ishlab chiqish hayot sikli (SDLC) dasturiy ta’minotni yaratish uchun tizimli jarayon bo‘lib, u yaratilgan dasturiy ta’minotning sifati va to‘g‘riligini ta’minlaydi. Dasturiy ta’minot injiniringidagi SDLC standart faoliyat va natijalar to‘plami uchun asos yaratadi. Yetti xil SDLC bosqichlari: 1) Talablarni yig‘ish va tahlil qilish 2) Texnik-iqtisodiy asoslash 3) Dizayn 4) Kodlash 5) Sinov 6) O‘rnatish / Joylashtirish va 7) Texnik xizmat ko‘rsatishdan iboratdir.
Amaliy mashg‘ulotlar
Dasturiy ta’minotni ishlab chiqish hayotiy sikli ko‘p bosqichli jarayon bo‘lib, talablarni spetsifikatsiya qilish, tahlil qilish, loyihalash, amalga oshirish, sinovdan o‘tkazish, joylashtirish va texnik xizmat ko‘rsatishni o‘z ichiga oladi. Dasturiy mahsulotni ishlab chiqish muhandislik jarayoni hisoblanadi. Dasturiy ta’minot mahsulotlari, qanchalik katta yoki qanchalik kichik bo‘lishidan qat’iy nazar, bir xil hayot sikliga ega, talablarni spetsifikatsiya qilish, tahlil qilish, loyihalash, amalga oshirish, sinovdan o‘tkazish, joylashtirish va texnik xizmat ko‘rsatish.
Talablar spetsifikatsiyasi
Talablar spetsifikatsiyasi dasturiy ta’minot hal qiladigan muammoni tushunishga va dasturiy ta’minot tizimi nima qilishi kerakligini batafsil hujjatlashtirishga qaratilgan rasmiy jarayon hisoblanadi. Ushbu bosqich foydalanuvchilar va ishlab chiquvchilar o‘rtasidagi yaqin aloqani o‘z ichiga oladi. Ushbu kitobdagi misollarning aksariyati oddiy va ularning talablari aniq bayon etilgan. Katta dasturlar yaratilyotganda esa muammolar har doim ham aniq belgilanmagan bo‘ladi. Ishlab chiquvchilar o‘z mijozlari (dasturiy ta’minotdan foydalanadigan shaxslar yoki tashkilotlar) bilan yaqindan ishlashlari va dasturiy ta’minot nima qilishi kerakligini aniqlash uchun muammoni diqqat bilan o‘rganishlari kerak.
Tizim tahlili
Tizim tahlili ma’lumotlar oqimini tahlil qilishga va tizimning kirish va chiqish ma’lumotlarini aniqlashga yordam beradi. Tahlil birinchi navbatda natija (chiqish) nima ekanligini aniqlashga yordam beradi va keyin natijani (chiqishni) ishlab chiqarish uchun qanday kirish ma’lumotlari kerakligini aniqlashga yordam beradi.
Tizim dizayni
Ushbu bosqich muammoni boshqariladigan komponentlarga ajratish va har bir komponentni amalga oshirish uchun dizayn strategiyalarini ishlab chiqish uchun ko‘p darajadagi mavhumlikdan foydalanishni o‘z ichiga oladi. Har bir komponentni tizimning ma’lum bir funksiyasini bajaradigan quyi tizim sifatida ko‘rish mumkin. Tizim tahlili va loyihalashning mohiyati kirish, jarayon va chiqish hisoblanadi.
Kodlash (Implementation)
Kodash dastur dizaynidan kelib chiqib kod yozib chiqish jarayonini o‘z ichiga oladi. Har bir komponent uchun alohida dasturlar yoziladi va keyin birgalikda ishlash uchun birlashtiriladi. Ushbu bosqich qaysidur dasturlash tilidan foydalanishni talab qiladi masalan C++ kabi dasturlash tilidan. Kodlash - sinab ko‘rish va xatolarni tuzatishni o‘z ichiga oladi (ya’ni kodda xato deb ataladigan xatolarni topish va tuzatish).
Sinov
Sinov kodning talablarga javob berishini va xatolarni yo‘q qilishini ta’minlaydi. Mahsulotni loyihalash va amalga oshirishda ishtirok etmaydigan mustaqil dasturiy ta’minot muhandislari guruhi odatda bunday sinovlarni o‘tkazadi.
O‘rnatish
Joylashtirish dasturiy ta’minotni foydalanish uchun mavjud qiladi. Dastur turiga qarab, u har bir foydalanuvchining qurilmasiga (kompyuter/telefon va boshqalar) o‘rnatilishi yoki internetda mavjud bo‘lgan serverga o‘rnatilishi mumkin.
Texnik xizmat ko‘rsatish
Xizmat yangilash va takomillashtirish bilan bog‘liq jarayon hisoblanadi. Dasturiy ta’minot mahsuloti doimiy rivojlanayotgan muhitda ishlashda va takomillashtirishda davom etishi kerak. Bu yangi topilgan xatolarni tuzatish va o‘zgarishlarni kiritish uchun mahsulotni davriy yangilashni talab qiladi.
Dasturiy ta’minotni ishlab chiqish jarayonini ko‘rish uchun valyuta konvertatsiya hisoblaydigan dastur yaratamiz. Masalan, dollarni o‘zbek so‘m birligiga o‘tkazish jarayoni. Biz talablarni spetsifikatsiya qilish, tahlil qilish, loyihalash, amalga oshirish va sinovdan o‘tkazishga e’tibor qaratamiz.
Dastur dollar pul birligini o‘zbek so‘m birligiga o‘tkazish
1-bosqich: Talablar spetsifikatsiyasi
Dastur quyidagi talablarga javob berishi kerak:
Foydalanuvchi konvertatsiya qilmoqchi bo‘lgan dollar miqdorini kiritishiga ruxsat bering
Joriy o‘zbek so‘mini 1 dollarga nisbatan kursini aniqlang
Foydalanuvchi kiritgan dollar miqdorini o‘zbek so‘mini 1 dollarga nisbatan kursiga ko‘paytirib hisoblang.
2-bosqich: Tizim tahlili
Natija – dollar pul birligini o‘zbek so‘m birligiga konvertatsiya qilish uchun quyidagi formula yordamida olish mumkin:
1 dollar = 11000 so‘m (2022 yil)
Konvertatsiya = dollar Miqdori * 11000 (1 dollarni o‘zbek so‘m miqdori)
3-bosqich: Tizim dizayni
Tizimni loyihalashda siz dasturdagi qadamlarni aniqlaysiz.
Foydalanuvchiga konvertatsiya qilmoqchi dollar valyutasi miqdorini kiritishni so‘rang.
1 dollarni o‘zbek so‘miga qancha ekanligini aniqlang
Hisoblang: konverstatsiya = dollarMiqdori * (1 dollarni o‘zbek so‘midagi qiymati)
Summa ekranga chop eting.
Blok-sxema
4-bosqich: Amalga oshirish(kodlash)
#include
using namespace std;
int main(){
//o`zgaruvchilarni dekleratsiya qilish
int dollarMiqodri, birDollarSom, konvertatsiya;
//foydalanuvchidan malumot kiritishi so`rash
cout<<"Konvertatsiya qilmoqchi bo`lgan dollar miqdorini kiriting: ";
cin>>dollarMiqodri;
//1 dollarni o`zbek so`miga nisbatan kursi
birDollarSom = 11000;
//hisoblash
konvertatsiya = dollarMiqodri * birDollarSom;
//matijani chop etish
cout<
return 0;
}
*Eslatma: kod yozishni keyingi mavzularda o`rganamiz. Yuqoridagi misol jarayonni tushuntirish uchun berilgan.
5-bosqich: Sinov
Dastur kodlari yozilgandan so`ng, uni bir nechta namunaviy kirish ma’lumotlari bilan sinab ko‘ring va natijaning to‘g‘riligini tekshiring.
Dasturlash tillari. Dasturlash paradigmasi
6-mavzu
Dasturiy ta’minot
Muhandislik
Dasturiy ta’minot muhandisligi
Dasturiy ta’minot xususiyatlari
Funkionallik
Foydalanish imkoniyati (user-friendly)
Samaradorlik
Moslashuvchanlik
Ishonchlilik
Texnik xizmat ko‘rsatish
Portativlik (Portability)
Imperativ dasturlash usuli
Deklarativ dasturlash usuli
Tizimli dasturlash
Obyektga yoʻnaltirilgan dasturlash
Obyektga yo‘naltirilgan dasturlashning tuzilishi
OOPning asosiy tamoyillari
Funksional dasturlash
Mantiqiy dasturlash
Amaliy mashg‘ulotlar
Dasturlarning ta’rifi va xususiyatlari. Dasturlash uslublari: imperativ va deklarativ. Dasturlash paradigmalari: tizimli va obyektga yoʻnaltirilgan, funksional va mantiqiy.
"Dasturiy ta’minot muhandisligi" atamasi birinchi marta 1968 yilda NATOning dasturiy ta’minot muhandisligi konferensiyasida ishlatilgan. Vaqt o‘tishi bilan u yuqori sifatli dasturiy ta’minotni arzon, tez va texnik xizmat ko‘rsatish bilan ishlab chiqarish mumkin bo‘lgan biznes modeliga aylandi.
Dasturiy ta’minot
Umuman olganda, dasturiy ta’minot ma’lum bir vazifani bajaradigan va muayyan talabni bajaradigan dasturlash kodlari, protseduralari, qoidalari, hujjatlari va ma’lumotlari to‘plami hisoblanadi. Dasturiy ta’minot hech qachon tugamaydi yoki eskirmaydi. Kompyuter tizimida dasturiy ta’minot qurilma (kompyuter) komponentlarini boshqaradi va birlashtiradi.
Muhandislik
Bu ilg‘or tajribalar, tamoyillar va usullardan foydalangan holda biror narsani (masalan, mashinalar, tuzilmalar, dasturiy ta’minot va boshqalar) loyihalash va ishlab chiqish jarayoni hisoblanadi. Muhandis dasturiy mahsulotlarni loyihalash, qurish va tahlil qilish uchun axborot va standartlardan (tamoyillardan) foydalanadi.
Dasturiy ta’minot muhandisligi
Dasturiy ta’minot muhandisligi - bu mijozlar va biznes talablarini tahlil qilish va keyin ushbu talablarga javob beradigan dasturiy ta’minot ilovalarini (dasturlarini) loyihalash, ishlab chiqish, va sinovdan o‘tkazish jarayoni hisoblanadi. Jarayon ilmiy standartlar, uslublar va usullardan foydalangan holda dasturiy mahsulotlarni loyihalash, ishlab chiqish va takomillashtirishga qaratilgan. Natijada samarali va mustahkam dasturlash elementlari yoki mahsulotlari paydo bo‘ladi. Dastlabki kunlarda dasturiy ta’minotni ishlab chiqish nisbatan sodda edi, shuning uchun dasturiy ta’minotni ishlab chiqish oddiy jarayon hisoblangan, lekin texnologiya takomillashgani sari dasturiy ta’minot ham murakkablashdi va loyihalar ham yanada murakkablashdi. Batafsil rejalar va dizaynlarni tayyorlash, ularni sinab ko‘rish, intuitiv foydalanuvchi interfeyslarini ishlab chiqish va hamma narsani tizimga integratsiyalash uchun ishlab chiquvchi guruh hozir bo‘lishi kerak.
Dasturiy ta’minot muhandisligi dasturiy ta’minot tizimidagi murakkablik bilan kurashish usullarini taqdim etadi, bu esa samaradorlikni maksimal darajada oshiradigan mustahkam dasturiy ta’minot tizimlarini ishlab chiqishga imkon beradi.
U nafaqat dasturiy ta’minotni ishlab chiqishning texnik jihatlarini, balki jamoani boshqarish, byudjetlashtirish, jadvallarni tuzish va hokazolarni o‘z ichiga olgan boshqaruv faoliyatini ham qamrab oladi. Dasturiy ta’minot muhandisligi vositalari va usullari keng ko‘lamli ilovalarga muvaffaqiyatli qo‘llaniladi.
Dasturiy ta’minot xususiyatlari
Dasturiy ta’minot xususiyatlari haqida gapirishdan oldin, keling, har qanday dasturiy ta’minotdan nimani kutish mumkinligini ko‘rib chiqaylik. Avvalo, dasturiy mahsulot yakuniy foydalanuvchi va biznes ehtiyojlarini qondirishi kerak. Bundan tashqari, dasturiy ta’minotni ishlab chiqish va texnik xizmat ko‘rsatish arzon bo‘lishi kerak. Dasturiy ta’minotni ishlab chiqish belgilangan vaqt oralig‘ida bajarilishi kerak. Bugungi kunda bozorda turli sohalarga xizmat qiluvchi ko‘plab dasturiy mahsulotlar mavjud.
Dasturiy ta’minot mahsulotining sifati u nimani taklif qilishi va undan qanchalik oson foydalanishi bilan belgilanadi. Dasturiy ta’minot turli odamlar tomonidan turli asoslarda baholanadi. Masalan, mijozlar o‘zlarining maxsus ehtiyojlarini qondiradigan dasturiy ta’minotni xoxlashadi. Xuddi shunday, dasturiy ta’minotni loyihalash, kodlash va texnik xizmat ko‘rsatish bilan shug‘ullanadigan ishlab chiquvchilar dasturiy ta’minot sifatini uning ichki xususiyatlarini baholash orqali aniqlaydilar.
Funkionallik
Dasturiy ta’minotning funksionalligi uning dizayn spesifikatsiyasiga muvofiq bajarish va ishlash qobiliyatini anglatadi. Oddiy qilib aytganda, dasturiy ta’minot tizimlari to‘g‘ri ishlashi kerak, ya’ni ular ishlab chiqilgan barcha funksiyalarni bajarishi kerak. Funksiyalar foydalanuvchi va biznes tizimdan asosiy vositalar sifatida kutadigan xususiyatlarga ishora qiladi. Ushbu funksiyalarning barchasi tizimga birlashtirilgan bo‘lishi kerak. Eng yaxshi dasturiy mahsulotga o‘xshab ko‘rinishi uchun u aniq ko‘rinishga, tarkibiy qismlarga va funksiyalarga ega bo‘lishi kerak.
Foydalanish imkoniyati (user-friendly)
Dasturiy ta’minotning foydalanuvchilar uchun qulayligi foydalanish qulayligi bilan tavsiflanadi. Dasturiy ta’minotdan qanday foydalanishni o‘rganish kamroq kuch yoki vaqt talab qilishi kerak. Dasturiy ta’minotni navigatsiya qilish juda muhim, chunki u foydalanuvchining dasturiy ta’minot ichini o‘rganishga yordam beradi. Agar dastur veb-dastur bo‘lsa, foydalanish imkoniyati qulayligi tashrif buyuruvchilarning veb-saytingizda qolishi va ijobiy tajribaga ega bo‘lishini ta’minlash uchun juda muhim, bu esa savdo va brendga sodiqlikning oshishiga olib keladi. Yaxshi dasturiy ta’minotning muhim ko‘rsatkichi uning foydalanuvchi interfeysi, ya’ni dizaynining oson va soddaligidadir. Ajoyib UI (foydalanuvchi interfeysi) dizayniga ega bo‘lgan mahsulot ko‘proq e’tiborga olinadi. Agar dastur foydalanuvchi uchun qulay bo‘lmasa, foydalanuvchilar dasturni boshqarishda va uning ba’zi xususiyatlaridan foydalanishda muammolarga duch kelishlari mumkin. Dasturiy ta’minotni o‘rganish uchun kamroq vaqt yoki kuch talab qilinishi kerak. Ideal holda, dasturiy ta’minot IT tajribasiga ega bo‘lmagan odamlar tomonidan ham foydalanish uchun qulay bo‘lishi kerak.
Samaradorlik
Asosan, bu dasturiy ta’minotning vaqt, kuch, protsessor, xotira, hisoblash quvvati, tarmoq o‘tkazish qobiliyati, fayllar, ma’lumotlar ba’zalari va boshqalar kabi inson va tizim resurslaridan iloji boricha samarali foydalanish qobiliyatini anglatadi. Dasturiy ta’minot loyihasi muvaffaqiyatli bo‘lishi uchun samaradorlik juda muhim hisoblanadi. Dasturiy ta’minot yaratilgan ehtiyojlarni qondirishdan tashqari foydalanuvchilarga o‘z vazifalarini tezroq bajarishda yordam berish uchun mo‘ljallangan ajoyib xususiyatlarni ham taqdim etishi kerak. Dasturiy ta’minot saqlash joyidan samarali (xotira) foydalanishi va vaqt talablariga muvofiq buyruqlarni bajarishi kerak. Samarali bo‘lishi uchun dasturiy ta’minot foydalanuvchilarga vaqt va moliyaviy jihatdan munosib qiymat taklif qilishi kerak. Bozor turli sohalarga xizmat ko‘rsatadigan mahsulotlar bilan to‘ldirilgan, ammo faqat bir nechta mahsulot jismoniy shaxslar va korxonalar uchun foydali hisoblanadi. Masalan, Open Practice Solutions taqdim etadigan tibbiy hisob-kitob dasturi mijozlar uchun hisob-kitob jarayonlarini boshqa kompaniyalar taklif qilganlarga qaraganda ancha samaraliroq bajaradi.
Moslashuvchanlik
Dasturiy ta’minotning moslashuvchanligi dasturiy ta’minot yechimining uning talablaridagi potensial yoki kelajakdagi o‘zgarishlarga moslashish qobiliyatini anglatadi. Dasturiy ta’minotning moslashuvchanligini baholashda, joriy operatsiyaga halaqit bermasdan xususiyatlarni qo‘shish, o‘zgartirish yoki o‘chirish qanchalik sodda ekanligini ko‘rib chiqish kerak. Tez o‘zgarib turadigan bozorlar, texnologiyalar va mijozlar ehtiyojlariga moslashish juda muhim hisoblanadi. Dasturiy ta’minotni ishlab chiqishda o‘zgarishlar muqarrar hisoblanadi. U rivojlanish jarayonining o‘zi yoki kelajakdagi talablar natijasida paydo bo‘lishi mumkin. Shuning uchun moslashuvchanlik yuqori baholanadi. Har qanday dasturiy mahsulot kengaytiriladigan, moslashuvchan va kelajakdagi texnologiyaga osongina moslasha oladigan bo‘lishi kerak. Dasturiy ta’minot mahsulotini loyihalash yoki kod yozishda, muqarrar ravishda sodir bo‘ladigan o‘zgarishlarni rejalashtirishni unutmaslik kerak. Komponentlarni o‘chirmasdan yangilash moslashuvchan tizimlarni yaratishning kaliti hisoblanadi.
Ishonchlilik
Dasturiy ta’minot mahsulotining ishonchliligi uning ma’lum bir sharoitda ma’lum vaqt oralig‘ida ishlamay qolishi ehtimolini tavsiflaydi. Bu dasturiy ta’minotning ma’lum vaqt davomida ma’lum sharoitlarda ishlash darajasini saqlab qolish (kerakli funksionallikni ta’minlash) qobiliyatini aniqlaydi. Umuman olganda, dasturiy ta’minotning ishonchliligi dasturiy ta’minotning mavjudligi sifatida o‘lchanadi. Ishonchlilikni tekshirishda maqsad mukammallik emas, balki dasturiy mahsulot xaridorlarga chiqarilishidan oldin qabul qilinadigan ishonchlilik darajasiga erishish hisoblanadi. Bu funksionallik, samaradorlik, texnik xizmat ko‘rsatish va boshqalar bilan bir qatorda dasturiy ta’minot sifatining eng muhim sifat jihatlaridan biri sifatida qaraladi. Dasturiy ta’minot murakkab bo‘lganligi sababli, dasturiy ta’minot ishonchliligiga erishish qiyin jarayon hisoblanadi.
Texnik xizmat ko‘rsatish
Xizmat ko‘rsatish qobiliyati dasturiy ta’minot kodini qanchalik oson tuzatishingiz, takomillashtirishingiz va tushunishingiz mumkinligini anglatadi. Texnik xizmat ko‘rsatish xatolarni o‘zgartirish va dasturiy ta’minot kodiga kichik o‘zgartirishlar kiritish bilan shug‘ullanadi, moslashuvchanlik esa asosiy funksional kengaytmalariga qaratilgan. Shuningdek, u dasturiy ta’minotning xizmatlari va funksionalligini saqlashni o‘z ichiga oladi.
Portativlik (Portability)
Dasturiy ta’minotning bir qurilmadan boshqa qurilmaga ko‘chishi muhim omil bo‘lib, uni e’tiborsiz qoldirib bo‘lmaydi. Portativlik dasturiy ta’minotni turli muhitlarda ishlatish qobiliyatini anglatadi. Bu dasturiy ta’minotni bir platformadan ikkinchisiga o‘zgartirishlarsiz o‘tkazish va shunga o‘xshash natijalarni olishning qulayligi hisoblanadi. Qanchalik sodda bo‘lmasin, bu dasturiy ta’minotning har qanday o‘zgartirishlarsiz turli xil kompyuter platformalarida ishlash qobiliyatini anglatadi. Bundan tashqari, dasturiy ta’minotni yangi muhitga ko‘chirish noldan ekvivalent dasturni ishlab chiqishdan ko‘ra nisbatan arzonroq hisoblanadi. Portativlik rivojlanish harajatlarini kamaytirishning hal qiluvchi jihati ekanligiga shubha yo‘q.
Dasturlash usullari: imperativ va deklarativ
Imperativ dasturlash usuli
Imperativ va deklarativ dasturlash usullari dasturiy ta’minotni ishlab chiqishda eng mashhur dasturlash paradigmalaridan ikkitasi hisoblanadi. Dasturlash paradigmalari - bu dasturlash tillarini qo‘llab-quvvatlaydigan texnik va xususiyatlar asosida tasniflash yoki tasniflash uchun ishlatiladigan yondashuvlar hisoblanadi.
4-mavzuda shunday algoritm yaratgan edik.
4 ga bo‘linadigan 1 dan 100 gacha bo‘lgan barcha raqamlarni topish.
Matnli algoritm
1-qadam: Boshlash
2-qadam: i sonini 0 ga teng qilib belgilang
3-qadam: agar i soni 100 dan kichik bo‘lsa keyingi qadamga o‘tsin, aks holda algoritm tugatilsin
4-qadam: Hisoblang: agar i soni 4 bo‘linsa, i sonini ekranga chop eting, aks holda keyingi qadamga o‘tilsin
5-qadam: i soni qiymatini 1 ga oshiring
6-qadam: Tugatish
Yuqoridagi algoritm imperative dasturlash usuli hisoblanadi. Ushbu oddiy misolda, imperativ ko‘rsatmalar dastur nima qilishi kerakligini, uni qachon va qanday bajarishini belgilaydi. Ushbu matnli algoritmni imperativ dasturlash bilan solishtirish mumkin, uning yordamida siz ma’lum bir tartibda sikl (loop) operatorlari, chaqiruv funksiyalari va hokazolar orqali dastur mantig‘ini yarata olasiz.
Imperativ dasturlash tillariga misollar:
Java
C
Pascal
Python
Ruby
Fortran
PHP
Deklarativ dasturlash usuli
Imperativ dasturlash usulidan farqli o‘laroq, deklarativ dasturlash usuli dastur qanday ishlashini emas, balki nimaga erishmoqchi ekanini tavsiflaydi. Deklarativ dasturlash usuli doirasida dasturni boshqarish jarayonini tasvirlamasdan turib, erishmoqchi bo‘lgan natijalarni aniqlash mumkin. Oxir oqibat, dasturlash tilini amalga oshirish va natijalarga qanday erishish mumkinligini kompilyator aniqlashi kerak. Bu ijro jarayoniga emas, balki natijalarga va ularning umumiy maqsadi bilan bog‘liqligiga urg‘u beradi. Deklarativ kodni yozish sizni birinchi navbatda dasturingizdan nimani xohlayotganingizni so‘rashga majbur qiladi. Buni aniqlash sizga yanada ifodali va aniq kodni ishlab chiqishga yordam beradi.
Deklarativ dasturlash tillariga misollar:
SQL
Miranda
Prolog
Lisp
Many markup languages (HTML)
Tizimli dasturlash
Tizimlar qurilma va dasturiy komponentlardan iborat hisoblanadi. Tizimlarni dasturlash ushbu komponentlarni, ularning interfeyslarini va umumiy arxitekturasini amalga oshirishdan iborat. Alohida tarkibiy qismlar o‘zlarining belgilangan funksiyalarini bajaradilar va bir vaqtning o‘zida barqaror va samarali tizimni shakllantirish uchun birgalikda ishlaydilar.
Tizimli dasturlash amaliy dasturlashdan farq qiladi. Tizim dasturlari boshqa dasturlarga xizmat ko‘rsatadi. Abstraksiyalar orqali ular ilovalarni ishlab chiqishni soddalashtirish uchun APIni ochib beradi. Ular ko‘pincha quyi darajadagi mashina arxitekturasiga optimallashtirilgan bo‘ladi. Amaliy dasturiy ta’minotdan farqli o'laroq, aksariyat tizim dasturlari foydalanuvchilar tomonidan bevosita foydalanilmaydi.
Assembly va C dasturlash tili tarixan tizimli dasturlash uchun ishlatilgan. Go, Rust, Swift va WebAssembly tizimli dasturlash uchun mos keladigan yangi dasturlash tillaridir.
Obyektga yoʻnaltirilgan dasturlash
Obyektga yo‘naltirilgan dasturlash (OOP) - bu kompyuter dasturlash modeli bo‘lib, u ma’lumotlar yoki obyektlar atrofida dasturiy ta’minot dizaynini tashkil qiladi. Obyektni noyob atributlar va xatti-harakatlarga ega bo‘lgan ma’lumotlar maydoni sifatida aniqlash mumkin.
OOP asosiy e’tiborni ishlab chiquvchilar ularni manipulyatsiya qilish uchun zarur bo‘lgan mantiqqa emas, balki boshqarmoqchi bo‘lgan obyektlarga qaratadi. Dasturlashning bunday yondashuvi katta, murakkab va faol yangilanadigan yoki saqlanuvchi dasturlar uchun juda mos keladi. Bunga ishlab chiqarish va dizayn dasturlari, shuningdek, mobil ilovalar ham kiradi; masalan, OOP tizimi simulyatsiya dasturlarini ishlab chiqarish uchun ishlatilishi mumkin.
Obyektga yo‘naltirilgan dasturni tashkil etish, shuningdek, loyihalar guruhlarga bo‘lingan holda hamkorlikda ishlab chiqish uchun usulni foydali qiladi. OOP ning qo‘shimcha afzalliklariga kodning qayta ishlatilishi, kengaytirilishi va samaradorligi ham kiradi.
OOPda birinchi qadam dasturchi manipulyatsiya qilmoqchi bo‘lgan barcha obyektlarni to‘plash va ularning bir-biri bilan qanday bog‘liqligini aniqlash hisoblanadi. Bu jarayon ma’lumotlarni modellashtirish deb ham ataladi.
Obyektga misollar ism va manzil kabi xususiyatlar bilan tavsiflangan inson kabi jismoniy shaxslardan tortib, vidjetlar kabi kichik kompyuter dasturlarigacha bo‘lishi mumkin.
Obyektga yo‘naltirilgan dasturlashning tuzilishi
Sinflar(class) - bu foydalanuvchi tomonidan belgilangan ma’lumotlar turlari bo‘lib, ular alohida obyektlar, atributlar va funksiyalar uchun loyiha sifatida ishlaydi.
Obyektlar - bu maxsus belgilangan ma’lumotlar bilan yaratilgan sinf(class) namunalari. Obyektlar real dunyo obyektlariga yoki mavhum obyektga mos kelishi mumkin. Sinf (class) dastlab aniqlanganda, tavsif belgilangan yagona obyekt hisoblanadi.
Metodlar(funskiyalar) - bu obyektning xatti-harakatlarini tavsiflovchi sinf(class) ichida belgilangan funksiyalar hisoblanadi. Sinf (class) ta’riflarida mavjud bo‘lgan har bir funksiya misol obyektiga havoladan boshlanadi. Dasturchilar qayta foydalanish yoki funksionallikni bir vaqtning o‘zida bitta obyekt ichida saqlash funksiyalaridan foydalanadilar.
Atributlar sinf(class) shablonida aniqlanadi va obyekt holatini ifodalaydi. Obyektlar atributlar maydonida saqlanadigan ma’lumotlarga ega bo‘ladi. Sinf(class) atributlari sinfning o‘ziga tegishlidir.
OOPning asosiy tamoyillari
Obyektga yo‘naltirilgan dasturlash quyidagi xususiyatlarga asoslanadi:
Inkapsulyatsiya. Ushbu xususiyat barcha muhim ma’lumotlar obyekt ichida joylashganligini va faqat tanlangan ma’lumotlarning ochiqligini bildiradi. Har bir obyektning amalga oshirilishi va holati ma’lum bir sinf ichida private (shaxsiy) holatda saqlanadi. Boshqa obyektlar ushbu sinfga(class) kirish huquqiga yoki o‘zgartirishlar kiritish huquqiga ega bo‘lmaydi. Ular faqat sinf(class) funksiyalari yoki funksiyalari ro‘yxatini chaqirishlari mumkin. Ma'lumotlarni yashirishning bu xususiyati dastur xavfsizligini ta’minlaydi va ma’lumotlarning noto‘g‘ri buzilishining oldini oladi.
Abstraktsiya. Obyektlar faqat boshqa obyektlardan foydalanish uchun tegishli bo‘lgan ichki mexanizmlarni ochib beradi, keraksiz amalga oshirish kodini yashiradi. Olingan sinf (class) o‘zining funksional imkoniyatlariga ega bo‘lishi mumkin. Ushbu kontseptsiya ishlab chiquvchilarga vaqt o‘tishi bilan qo‘shimcha o‘zgartirishlar yoki qo‘shimchalar kiritishga yordam beradi.
Inheritence. Sinflar boshqa sinflardagi kodlarni qayta ishlatishi mumkin. Obyektlar o‘rtasidagi munosabatlar va kichik sinflar tayinlanishi mumkin, bu esa ishlab chiquvchilarga yagona arxitekturani saqlab qolgan holda umumiy mantiqni qayta ishlatishga imkon beradi. OOP ning bu xususiyati ma’lumotlarni chuqurroq tahlil qilishga majbur qiladi, ishlab chiqish vaqtini qisqartiradi va yuqori darajadagi aniqlikni ta’minlaydi.
Polimorfizm. Obyektlar xatti-harakatlarni almashish uchun mo‘ljallangan va ular bir nechta shaklga ega bo‘lishi mumkin. Dastur (parent-class)ota-sinfdan ushbu obyektning har bir funksiyadan foydalanish zarurligini aniqlaydi va kodni takrorlash zaruratini kamaytiradi. Keyin (parent-class) ota-sinfning funksionalligini kengaytiradigan (child-class)bola sinfi yaratiladi. Polimorfizm har xil turdagi obyektlarning bir xil interfeys orqali o‘tishiga imkon beradi.
OOP uchun moʻljallangan dasturlash tillariga quyidagilar kiradi:
Java
Python
C++
Funksional dasturlash
Funksional dasturlash - bu yana bir dasturlash paradigmasi bo‘lib, unda biz hamma narsani sof matematik funksiyalar uslubida bog‘lashga harakat qilamiz. Bu dasturlash uslubining deklarativ turi hisoblanadi. Qiymat ishlab chiqarish uchun ifoda baholanadi, o‘zgaruvchilarni tayinlash uchun esa bayonot bajariladi. Ushbu funksiyalar quyida muhokama qilinadigan ba’zi maxsus xususiyatlarga ega.
Funksional dasturlash Lambda hisobiga asoslangan:
Lambda - bu funksiyalar bilan hisoblashni o‘rganish uchun ishlab chiqilgan. Uni dunyodagi eng kichik dasturlash tili deb ham atash mumkin. Hisoblash mumkin bo‘lgan narsaning ta’rifini beradi. Lambda hisobi bilan hisoblanishi mumkin bo‘lgan har qanday muammoni hisoblash mumkin. Hisoblash qobiliyati bo‘yicha Tyuring mashinasiga teng. U funksiyalarni tavsiflash va ularni baholash uchun nazariy asosni taqdim etadi. U deyarli barcha amaldagi funksional dasturlash tillarining asosini tashkil qiladi.
Funktional dasturlashni qo‘llab-quvvatlaydigan dasturlash tillari: Haskell, JavaScript, Python, Scala, Erlang, Lisp, ML, Clojure, OCaml, Common Lisp, Racket.
Mantiqiy dasturlash
Bu yana bir kompyuter dasturlash paradigmasi bo‘lib, unda dastur bayonotlari rasmiy mantiq tizimidagi muammolar haqidagi faktlar va qoidalarni ifodalaydi. Qoidalar bosh va tana bilan mantiqiy bandlar sifatida yoziladi; masalan, "B1, B2 va B3 to‘g‘ri bo‘lsa". Faktlar qoidalarga o‘xshash, lekin tanasiz ifodalangan; masalan, "to‘g‘ri bo‘lsa".
Datalog va ASP (Answer Set Programming) kabi ba’zi mantiqiy dasturlash tillari sof deklarativ dasturlash tilidir. Ular dastur nimaga erishishi kerakligi haqidagi bayonotlarga ruxsat beradi, buni qanday qilish bo‘yicha aniq bosqichma-bosqich ko‘rsatmalar mavjud bo‘lmaydi.
Mantiqiy dasturlash uchun ishlatiladigan tillar:
Absys
ALF (algebraic logic functional programming language).
Algorithmic program debugging
Alice
Alma-0
ASP (Answer Set Programming)
CHIP
Ciao
CLACL
CycL
Datalog
Datomic
DLV
ECLiPSe
F-logic
Flora-2
Fril
FuzzyCLIPS
Gödel
HiLog
Janus
ΛProlog
Logtalk
Maude system
Mercury
MetaL
Mozart Programming System
Oz
Parlog
Planner
PROGOL
Prolog
Prolog++
Prova
.QL
Rebeca Modeling Language
ROOP
SICStus Prolog
SWI-Prolog
ToonTalk
Transaction logic
Twelf
Visual Prolog
XSB
Amaliy mashg‘ulotlar
Dasturiy ta’minot nima ? ta’riflang ?
Muhandislik nima ta’riflang ?
Dasturiy ta’minot muhandisligini ta’riflang ?
Dasturiy ta’minot xususiyatlari sanang va ta’riflang
Imperativ dasturlash usulida ishlaydigan dsaturlash tillarini sanab o‘ting
Deklarativ dasturlash usuli ishlaydigan dsaturlash tillarini sanab o‘ting
Tizimli dasturlashni ta’riflang
Obyektga yo‘naltirilgan dasturlash nima ? ta’riflang
OOPning asosiy tamoyillari nimalardan iborat ?
Funksional dasturlashni ta’riflang
Mantiqiy dasturlashni ta’riflang
C++ dasturlash tili asoslari. C++ dastur tuzilishi
7-mavzu
Kompyuter asoslari, dasturlari va operatsion tizimlarini tushunish
Kompyuter jismoniy komponentlari va ularning vazifalari.
Bitlar va baytlar
Mashina tili
C++ dasturlash tili tarixi
C++ dasturlash tilining kompilyatori
Vazifa (kalit) soʻzlari
C++ dasturlash tilidagi maxsus belgilar
C++ dasturiga misol
Amaliy mashg‘ulotlar
Tilning tarkibi: alifbo, leksema, aniqlovchi va vazifa soʻzlari. Strukturaviy modellashtirish va dasturiy ta’minotni loyihalash. C++ dasturlash tilining kompilyatori.
Kompyuter asoslari, dasturlari va operatsion tizimlarini tushunish
Kompyuter jismoniy qismlar va dasturiy ta’minotni o‘z ichiga oladi. Umuman olganda, jismoniy jihozlar ko‘rinadigan narsalarni o‘z ichiga oladi. Dasturiy ta’minot qurilma (kompyuter) va uni muayyan vazifalarni bajarishga imkon beradi. Dasturlash tilini o‘rganish uchun kompyuter jihozlarini bilish muhim emas, lekin bu sizga dastur ko‘rsatmalarining kompyuter va uning tarkibiy qismlariga ta’sirini tushunishga yordam beradi. Ushbu bo‘lim kompyuter bilan tanishtiraadi.
Kompyuter jismoniy komponentlari va ularning vazifalari.
Kompyuter quyidagi asosiy komponentlardan iborat:
Markaziy protsessor (CPU)
Xotira (asosiy xotira)
Saqlash qurilmalari (disklar va kompakt disklar kabi)
Kirish qurilmalari (masalan, sichqoncha va klaviatura)
Chiqish qurilmalari (monitorlar va printerlar kabi)
Aloqa qurilmalari (modemlar va tarmoq interfeysi kartalari kabi).
Bitlar va baytlar
Xotirani muhokama qilishdan oldin, ma’lumotlar kompyuterda qanday saqlanishini ko‘rib chiqaylik. Kompyuter aslida bir qator kalitlardan iborat hisoblanadi. Har bir kalit ikki holatda bo‘lishi mumkin: yoqilgan yoki o‘chirilgan holatlarda. Kompyuterda ma’lumotni saqlash shunchaki kalitlarni yoqish yoki o‘chirish ketma-ketligini o‘rnatishdan iborat. Agar kalit yoqilgan bo‘lsa, uning qiymati 1. Agar o‘chirilgan bo‘lsa, uning qiymati 0ga teng bo‘ladi. Bu 0 va 1 lar ikkilik sanoq sistemasida raqamlar sifatida talqin qilinadi va bit (ikkilik raqamlar) deb ataladi. Kompyuterdagi minimal xotira birligi baytdir. Bir bayt sakkiz bitdan iborat. 3 kabi kichik raqam bitta bayt sifatida saqlanishi mumkin. Bitta baytga sig‘maydigan raqamni saqlash uchun kompyuter bir necha baytdan foydalanadi. Raqamlar va belgilar kabi har xil turdagi ma’lumotlar baytlar qatori sifatida kodlangan. Dasturchi sifatida siz kompyuter tizimini kodlash sxemasi asosida avtomatik ravishda bajaradigan ma’lumotlarni kodlash va dekodlash haqida tashvishlanishingizga hojat yo‘q. Kodlash sxemasi - kompyuterning belgilar, raqamlar va belgilarni kompyuterning aslida ishlashi mumkin bo‘lgan ma’lumotlarga qanday tarjima qilishini boshqaradigan qoidalar to‘plami hisoblanadi. Aksariyat sxemalar har bir belgini oldindan belgilangan bitlar qatoriga aylantiradi. Mashhur ASCII kodlash sxemasida, masalan, C belgisi bir bayt 01000011 sifatida ifodalanadi.
Mashina tili
Mashina tili - ikkilik sanoq tizimidan iboratdir, ya’ni 0 va 1 dan. Masalan, ikkita raqamni qo‘shish uchun sizda bo‘lishi mumkin ko‘rsatmani ikkilik kodda quyidagicha yozish mumkin:
1101101010011010
C++ dasturlash tili tarixi
C, C++, Java va C# o‘zaro bog‘liq dasturlash tillari hisoblanadi. C++ dasturlash tili C dasturlash tilidan kelib chiqib rivojlangan. Java dasturlash tili C++ dan keyin modellashtirilgan. C# - bu C++ dasturlash tilining quyi to‘plami bo‘lib, ba’zi xususiyatlari Java dasturlash tiliga o‘xshash. Agar siz ushbu tillardan birini bilsangiz, boshqa tillarni o‘rganish oson bo‘ladi.
C dasturlash tili B dasturlash tilidan, BCPL (Basic Combined Programming Language) paydo bo‘lgan. Martin Richards 1960-yillarning o‘rtalarida operatsion tizimlar va kompilyatorlarni yozish uchun BCPLni ishlab chiqdi. Ken Tompson o‘zining B dasturlash tilida BCPL ning ko‘plab xususiyatlarini o‘z ichiga oldi va undan 1970 yilda Bell Laboratoriyasida DEC PDP-7 kompyuterida UNIX operatsion tizimining dastlabki versiyalarini yaratish uchun foydalangan.
Dennis Ritchie 1971 yilda DEC PDP-11 kompyuterida UNIX operatsion tizimini ishlab chiqish uchun ma’lumot turlari va boshqa xususiyatlarni qo‘shish orqali B dasturlash tilini kengaytirdi. Bugungi kunda C dasturlash tili portativ va qurilmadan mustaqil dasturlash tili hisoblanadi. U operatsion tizimlarni ishlab chiqishda keng qo‘llaniladi.
C++ bu C dastulash tilining kengaytmasi boʻlib, 1983–1985 yillarda Bell Laboratoriyasida Bjarne Stroustrup tomonidan ishlab chiqilgan. C++ dasturlash tili C dasturlash tilini yaxshilagan bir qator xususiyatlarni qo‘shdi. Eng muhimi, u obyektga yo‘naltirilgan dasturlash uchun class(sinf)lardan foydalanishni qo‘llab-quvvatladi.
Obyektga yo‘naltirilgan dasturlash, dasturlarni qayta ishlatishni va texnik xizmat ko‘rsatishni osonlashtirishi mumkin. C++ dasturlash tilini C dasturlash tilining yuqori to‘plami deb hisoblash ham mumkin. C dasturlash tilining xususiyatlari C++ dasturlash tili tomonidan qo‘llab-quvvatlanadi.
C dasturlarini C++ kompilyatorlari yordamida kompilyatsiya qilish mumkin. C++ dasturlash tilini o‘rganganingizdan so‘ng siz C dasturlarini o‘qiy olasiz va tushunasiz. C++ dasturlash tili uchun xalqaro standart, C++98 nomi bilan tanilgan, 1998 yilda Xalqaro Standartlar Tashkiloti (ISO) tomonidan yaratilgan.
ISO standarti C++ dasturlash tilining portativ boʻlishini taʼminlashga urinishdir, yaʼni bitta sotuvchining kompilyatori yordamida tuzilgan dasturlar istalgan platformadagi boshqa sotuvchining kompilyatoridan xatosiz kompilyatsiya qilinishi mumkin. Standart bir muncha vaqtdan beri mavjud bo‘lganligi sababli, barcha yirik sotuvchilar endi ISO standartini qo‘llab-quvvatlamoqda. Shunga qaramay, C++ kompilyator sotuvchilari kompilyatorga xususiyatlarni qo‘shishlari mumkin. Shunday qilib, sizning dasturingiz bitta kompilyator tomonidan yaxshi kompilyatsiya qilinishi mumkin, ammo boshqa kompilyator tomonidan kompilyatsiya qilinishi uchun o‘zgartirish kerak bo‘lishi ham mumkin.
C++ 11 deb nomlanuvchi yangi standart 2011 yilda ISO tomonidan tasdiqlangan. C++ 11 asosiy dasturlash tili va standart kutubxonaga yangi xususiyatlarni qo‘shdi. Ushbu yangi xususiyatlar ilg‘or C++ dasturlash tili uchun juda foydali. C++ dasturlash tili umumiy maqsadli dasturlash tili boʻlib, C++ dasturlash tilidan istalgan dasturlash vazifasi uchun kod yozishingiz mumkin. C++ obyektga yo‘naltirilgan dasturlash (OOP) tili.
Obyektga yo‘naltirilgan dasturlash qayta foydalanish mumkin bo‘lgan dasturiy ta’minotni ishlab chiqish uchun kuchli vosita hisoblanadi.
C++ dasturlash tilining kompilyatori
Kompyuterlar faqat bitta tilni, ya’ni mashina tilini tushunadilar. Mashina tili ikkilik bitlardan yoki 0 va 1 lardan iborat.
Kompyuter arxitekturasi faqat ikkilik 1 va 0 lar bilan ishlay oladigan elektron kalitlar va kabellardan tashkil topganligi sababli, kodingizni yuqori darajadagi C++ dasturlash tilidan protsessor tushunadigan mashina tiliga tarjima qilish uchun kompilyator kerak bo‘ladi.
Kompilyatorlar dastur kodini mashina tiliga o‘zgartidigan fayllarga aylantiradigan yordamchi dasturlar hisoblanadi.
Vazifa (kalit) soʻzlari
asm: Kod bloki assemblerga uzatilishi kerakligini e’lon qiladi.
auto: Blokdagi obyektlarni aniqlash uchun foydalaniladigan saqlash sinf(class)i spetsifikatsiyasi.
break: switch operatori yoki siklni to‘xtatadi.
case: Ko‘chirma ifodasi uchun moslikni belgilash uchun maxsus o‘tish iborasida ishlatiladi.
catch: istisno sodir bo‘lganda bajariladigan harakatlarni belgilaydi.
char: Belgilar obyektlarini belgilaydigan asosiy ma’lumotlar turi.
class: Ma’lumotlar yoki funksiyalarini qamrab oluvchi foydalanuvchi fayl.
const: Dasturning ishlash muddati davomida qiymati o‘zgarmaydigan obyektlarni saqlaydi.
continue: - Boshqaruvni sikl boshiga o‘tkazadi.
default: - switch bayonotida ish bo‘yicha ishlanmaydigan ifoda qiymatlarini boshqaradi.
delete: Xotirani ajratish operatori.
do: ifodaning qiymati mantiqiy-noto‘g‘ri bo‘lgunga bayonotlarni qayta-qayta bajariladigan do-while operatorining boshlanishini ifodalaydi.
double: kasrli raqamni aniqlash uchun ishlatiladigan asosiy ma’lumotlar turi.
else: if-else ifodasida maxsus ishlatiladi.
enum: Foydalanuvchi tomonidan belgilangan ma’lumotlar turini e’lon qilish uchun foydalaniladi.
extern: extern sifatida belgilangan identifikator blok kodi bilan tashqi aloqaga ega.
float: - kasrli son uchun ishlatiladigan asosiy ma’lumotlar turi.
for: sikl uchun ishlatiladi.
goto: Boshqaruvni belgilangan yorliqga o‘tkazish.
if: Tanlangan boshqaruvga erishish uchun if iborasining boshlanishini ko‘rsatadi.
inline: Kompilyatorga funksiya blokining ichki o‘rnini odatdagi funksiya chaqiruvi amalga oshirishdan afzal ko‘rish kerakligini ko‘rsatadigan funksiya spetsifikatsiyasi.
int: Butun sonli obyektlarni brlgilash uchun ishlatiladigan asosiy ma’lumotlar turi.
long: 32-bitli int yoki doublni belgilaydigan ma’lumotlar turi
new: Xotirani ajratish operatori.
operator: C++ operatorini yangi deklaratsiya bilan yuklaydi.
private: sinfdan tashqarida ko‘rinmaydigan sinf a’zolarini e’lon qiladi.
protected: olingan sinflardan tashqari private bo‘lgan sinf a’zolarini e’lon qiladi
public: sinfdan tashqarida ko‘rinadigan sinf a’zolarini e’lon qiladi.
registr: Avtomatik belgilovchi, lekin kompilyatorga obyekt tez-tez ishlatilishini va shuning uchun registrda saqlanishi kerakligini ko‘rsatadigan saqlash sinfi spetsifikatsiyasi.
return: Obyektni funksiya chaqiruvchisiga qaytaradi.
short: 16 bitli int raqamini belgilaydigan ma’lumotlar turi.
signed: Obyekt belgisini ko‘rsatadigan ma’lumotlar turi o‘zgartiruvchisi yuqori tartibli bitda saqlanishi kerak.
sizeof: Obyekt hajmini baytlarda qaytaradi.
switch: Ushbu kalit so‘z "Switch" holatini yaratishda ishlatiladi.
template: parametrlangan turi hisoblanadi.
this: Sinf ko‘rsatkichi sinfning obyektiga yoki namunasiga ishora qiladi.
throw: istisno yaratish.
try: istisno ishlov beruvchilar blokining boshlanishini ko‘rsatadi.
typedef: boshqa integral yoki foydalanuvchi tomonidan belgilangan turning sinonimi.
union: tuzilmaga o‘xshaydi, chunki u har xil turdagi ma’lumotlarni saqlashi mumkin, lekin birlashma ma’lum bir vaqtda o‘z a’zolaridan faqat bittasini ushlab turishi mumkin.
unsigned: Obyekt uchun yuqori tartibli bitni ko‘rsatadigan ma’lumotlar turi o‘zgartirgichidan foydalanish kerak.
virtual: Olingan sinf tomonidan qayta aniqlanadigan sinfning a’zo funksiyasini e’lon qiladigan funksiya spetsifikatsiyasi.
void: Tur yoki funksiya parametrlari roʻyxati yoʻq bo‘ladi.
volatile: Qiymati kompilyator tomonidan aniqlanmaydigan tarzda o‘zgarishi mumkin bo‘lgan obyektni aniqlaydi.
while: while sikli va do-while sikli uchun ishlatiladi.
C++ dasturlash tilidagi maxsus belgilar
|