Kirish Roʻyxatdan oʻtish

Docx

  • Referatlar
  • Diplom ishlar
  • Boshqa
    • Slaydlar
    • Referatlar
    • Kurs ishlari
    • Diplom ishlar
    • Dissertatsiyalar
    • Dars ishlanmalar
    • Infografika
    • Kitoblar
    • Testlar

Dokument ma'lumotlari

Narxi 30000UZS
Hajmi 172.7KB
Xaridlar 0
Yuklab olingan sana 30 Noyabr 2023
Kengaytma docx
Bo'lim Kurs ishlari
Fan Informatika va AT

Sotuvchi

Saidmuhammadalixon Ataullayev

Ro'yxatga olish sanasi 29 Noyabr 2023

138 Sotish

Turlarni dinamik ta’rifi

Sotib olish
                                           
Mavzu:  Turlarni dinamik  ta’rifi
Reja:
Kirish
I. Nazariy qism
1.1. Turlarni  tarfi  haqida tushuncha
1.2. T urlarni almashtirish  
II. Loyixa qism
      2.1.  C++ Builderda MySQL ma’lumotlar bazasi bilan ishlash   
      2.2.  Dasturda  bajarilgan ishlar 
Xulosa
Foydalanilgan adabiyotlar
Ilova                                                 KIRISH
        Elektron mashinalarda masalalarni yechish hamda ularda har xil aqliy mehnat
turlarini bajarish nazariyasi va usullarini ishlab chiqish bilan shug ullanadigan fan;ʻ
algoritmlar   nazariyasining   amaliy   bo limi;   insonning   mashina   bilan   aloqa   qilish	
ʻ
vositasi.   Asosiy   vazifalaridan   biri   elektron   mashinalar   uchun  programma   (dastur)
tuzish   usullari,   ularni   tekshirish   va   takomillashtirishdan   iborat.   Yechilishi   lozim
bo lgan masala algoritmi Dasturlashda „mashina tili“ga o tkaziladi.	
ʻ ʻ
Dasturlash   —   bevosita   dasturlash   va   avtomatik   dasturlashga   bo linadi.   Bevosita	
ʻ
Dasturlashda   programmaning   umumiy   sxemasini   ishlab   chiqishdan   kodlash   va
mashinaga   kiritishgacha   bo lgan   barcha   ishni   programmachi   bajaradi.   Avtomatik	
ʻ
dasturlashda   esa   programmachi   faqat   programma   sxemasini   tuzib,   uni
qisqartirilgan   simvolik   kurinishda   yozadi,   programma   tuzish   va   uni   kodlash   kabi
texnikaviy   ishlarni   esa   mashinaning   o zi   maxsus   dasturlash   programmasi	
ʻ
yordamida bajaradi.
Dasturlash   jarayoni,   odatda,   quyidagi   bosqichlarga   bo linadi:   masalaning	
ʻ
qo yilishi;   masalaning   algoritmik   tavsifini   tuzish;   masalani   yuqori   darajadagi	
ʻ
programma   tilida   Dasturlash;   masalani   taxminiymashina   tilida   Dasturlash;
masalani mashina tilida Dasturlash
Dasturlash   tili   programmalar   tuzishning   asosiy   vositasidir.   Bu   tillar   konkret
mashina   komandalari   sistemasiga   bog liq   bo lmasligi   va   iboralar   strukturasi	
ʻ ʻ
jihatidan   umumiy   xususiyatga   ega   bo lishi   bilan   boshqa   tabiiy   tillarga   o xshab
ʻ ʻ
ketadi. Iboralar ikki turga   — operatorlar hamda tavsiflarga bo linadi, ularning bir-	
ʻ
biri   bilan   bog liqligi   qavslar   bilan,   alohidaligi   nuqtali   vergul   bilan   ajratiladi.	
ʻ
Operator tilning amal birligi bo lib, o z navbatida, o zgaruvchan kattalikka qiymat	
ʻ ʻ ʻ
beruvchi   operatorlar,   shartga   muvofiq   tegishli   hisoblash   tarmog ini   tanlovchi	
ʻ
(shartli)   operator   va   takroriy   hisobni   amalga   oshiruvchi   sikl   operatorlariga
bo linadi. Tavsifda o zgaruvchan kattalik va boshqa belgilar xususiyatlari yoziladi.	
ʻ ʻ
Biror   xususiy   masalani   yechish   uchun   tuzilgan   programmani   simvolik   ravishda
funksional   belgilash   mumkin.   Bunday   belgilash   va   tavsif   birgalikda   kichik programma deb yuritiladi. Yangi programmalar tuzishda kichik programmalardan
tayyor holda foydalanish mumkin.
Juda ko p dasturlash tillari (algol-60, q.ʻ   Algol ), muhandislik va ilmiy masalalarni
yechish   uchun   fortran,   iqtisodiy   hisoblashlar   uchun   kobol,   matematik   modellar
uchun   si   mula,   tako-millashgan   algol-68,   PL/I   yaratildi.   Ularning   har   biri   uchun
shu   tillarda   ifodalangan   masalalarga   qarab   mashina   programmasini   avtomatik
tarzda   qaytatuzuvchi   translyatorlar   mavjud.   Taxminiy   mashina   tili   ikkilik
sistemadan   ko ra   yanada   qulayroq   simvollarda   ifodalangan   mashina   komandalari	
ʻ
terminlaridagi programmalar bo lib, bunda ko pincha, yuqori darajadagi til sifatida	
ʻ ʻ
blok sxemalardan foydalaniladi.          I.Nazariy qism
1.1.Turlarni tarfi  haqida tushuncha
Dasturlashning   programma   tuzilgandan   keyingi   yana   bir   asosiy   bosqichi
„tekshirish“   (otladka)   bo lib,   bunda   yo l   qo yilgan   xatolar   topiladi   va   tuzatiladi.ʻ ʻ ʻ
Programmalar   kodlanadi   va   mashinaga   maxsus   qurilma   yordamida   kiritiladi.
Amaliyotda   Dasturlashning   yangi   va   tezkor   usullari   bor   (2004);   2)   matematik
dasturlash   —   amaliy   matematikaning   bir   bo limi;   umumiy   ma noda	
ʻ ʼ   —   biron-bir
funksiya   fo   (x)   ning   ekstremumini   (qarang   Ekstremum )   topish   masalasi
tushuniladi.
Turlarni dinamik tarifi C++ dasturlash tilida alohida tur klasslari orqali yaratiladi.
Klasslar   orqali   tur   obyektlari   yasab,   ularning   xususiyatlariga   murojat   qilish,
ularning qiymatlarini o'zgartirish va obyektlar orasida aloqa yaratish mumkin.
Bu kodda "Student" klassining obyekti  uchun xotira ajratish uchun new operatori
foydalaniladi.   Xususiyatlar   esa   ->   operatori   arqali   yoziladi.   Klass   obyektining
xususiyatlari   dastur   bajarilishida   aniqlanmaydi,   chunki   klass   o'zining
xususiyatlarini aniqlash unvoniga ega.
Turlarni almashtirish operatorlari
Turlarni dinamik tarifi C++ dasturlash tilida alohida tur klasslari orqali yaratiladi.
Klasslar   orqali   tur   obyektlari   yasab,   ularning   xususiyatlariga   murojat   qilish,
ularning qiymatlarini o'zgartirish va obyektlar orasida aloqa yaratish mumkin.
Quyidagi misol C++ dasturlash tili yordamida tur klassi yaratishni ko'rsatadi:
- = - almashtirish operatori
- += - qo'shishga almashtirish operatori
- -= - ayirishga almashtirish operatori
- *= - ko'paytirishga almashtirish operatori
- /= - bo'lishga almashtirish operatori - %= - qoldiqni hisoblashga almashtirish operatori
- <<= - bitni chapga surishga almashtirish operatori
- >>= - bitni o'ngga surishga almashtirish operatori
- &= - bit ko'paytirish va yig'ishga almashtirish operatori
- ^= - bit xor operatoriga almashtirish operatori
- |= - bit yig'ish va ko'paytirishga almashtirish operatori
Quyidagi misol kod almashtirish operatorlarini ko'rsatadi:
int main () {
   int a = 10, b = 4;
   a += b;
   cout << "a += b: " << a << endl;
   a -= b;
   cout << "a -= b: " << a << endl;
   a *= b;
   cout << "a *= b: " << a << endl;
   a /= b;
   cout << "a /= b: " << a << endl;
   a %= b;
   cout << "a %= b: " << a << endl;
   return 0;
}
Bu   misolda,   a   va   b   nomli   o'zgaruvchilar   yaratilgan.   a   va   bning   qiymatlari
belgilangan,   keyinchalik   aga   bni   qo'shish   uchun   +=   operatori   ishlatilgan.   So'ng adan   bni   ayirish   uchun   -=   operatori   foydalanilgan.   *=   operatori   ko'paytirish
amalini bajaradi, /= operatori bo'lish amalini bajaradi va %= operatori esa qoldiqni
hisoblash uchun ishlatiladi.
Shuningdek, boshqa almashtirish operatorlari ham shu usul bilan foydalaniladi.
 yangi nomlar fazosi uchun joy yaratish
Nomlar fazosi 
Ma’lumki, programmaga qo‘shilgan sarlavha fayllarida e’lon  
qilingan identifikator va o‘zgarmaslar kompilyator tomonidan yagona  
global nomlar fazosiga kiritiladi. Agar programma ko‘p miqdordagi  
sarlavha fayllami ishlatsa va undagi identifikatorlar (funksiya nomlari va  
o‘zgaruvchilar nomlari, sinflar nomlari va hakozalar) va o‘zgarmaslar  
nomlari turli programma tuzuvchilar tomonidan mustaqil ravishda  
aniqlangan bo4sa, bir xil nomlami ishlatish bilan bog‘liq muammolar  
yuzaga kelish ehtimoli katta bo4adi. Nomlar fazosi tushunchasini kiritilishi  
mazkur muammoni ma’lum bir ma’noda hal qilishga yordam beradi. Agar  
programmada yangi identifikatomi aniqlash kerak bo‘lsa va xuddi shu  
nomni boshqa modullarda yoki kutubxonalarda ishlatishi xavfi boMadigan  
boMsa, bu identifikatorlar uchun o‘zining shaxsiy nomlar fazosini aniqlash  
mumkin. Bunga namespace kalit so‘zidan foydalanilgan holda erishiladi: 
namespace <nomlar fazosining nomi> 
{ 
// e’lonlar  
}  Nomlar fazosi ichida e’lon qilingan identifikatorlar faqat <nomlar  
fazosining nomi> ko‘rinish sohasida bo'ladi va yuzaga kelishi mumkin  
bo‘lgan kelishmovchiliklaming oldi olinadi. 
Misol tariqasida quyidagi nomlar fazosini yarataylik:  
namespace Shaxsiy_nomlar 
{ 
int x,y,z; 
void Mening_funksiyam(char belgi); 
} 
Kompilyatorga konkret nomlar fazosidagi nomlami ishlatish  
kerakligini ko‘rsatish uchun ko‘rinish sohasiga ruxsat berish amalidan  
foydalanish mumkin: 
Shaxsiy_nomlar::x =5;
#include <iostream>
#include <vector>
using namespace std;
int main() {
   vector<string> names;
   names.push_back("John");
   names.push_back("Jane");
   names.push_back("Alice");
   names.push_back("Bob");    for (auto name : names) {
      cout << name << endl;
   }
   return 0;
Bu kod yordamida, std::cout obyektiga "Bu xat konsoldan chiqadi." matni kiritiladi
va   std::cerr   obyektiga   esa   "Bu   xat   konsoldan   xatoliklar   uchun   chiqadi."   matni
kiritiladi.   std::cout   obyektidan   chiqarish   avtomatik   ravishda   amalga   oshiriladi,
lekin   std::cerr   obyektidan   chiqarish   ishlatilgan   qurilma   xatolariga   qarshi   xabar
berish uchun ishlatiladi.
Buferlashtirilgan   kiritish   va   chiqarishni   o'chirish   uchun,   quyidagi   kod   yordamida
std::ios::sync_with_stdio(false)   va   std::cin.tie(nullptr)   funksiyalari   ishlatiladi:stl
kutubxonalari
STL   (Standard   Template   Library)   C++   dasturlash   tilining   standart
kutubxonalaridan   biridir.   Bu   kutubxonada,   qo'shimcha   ko'p   qatlamli   ma'lumot
tuzilmalari, algoritmik operatsiyalar va moslashuvchanlik qurilmalari mavjud.
STL   kutubxonasi   qo'shimcha   biznes   loyihalari   va   yuqori   darajadagi   to'lovli
dasturlar yaratishda keng qo'llaniladi. Bu kutubxonada odatda, quyidagi to'plamlar
mavjud:
Containers   (Tuzilma   toplamlari):   STL   kutubxonalarida   ko'p   qatlamli   to'plamlar,
masalan,   vector,   list,   deque,   set,   map   va   boshqalar,   kiritish   va   chiqarish   uchun
mo'ljallangan.
Algorithms   (Algoritmik   operatsiyalar):   STL   kutubxonalarida   ko'p   qatlamli
ma'lumotlar uchun algoritmik operatsiyalar, masalan, sorting, searching, shuffling
va boshqalar, mavjud.
Iterators   (Tartibga   solish):   STL   kutubxonalarida,   tuzilma   to'plamlari   bilan
ishlashda, tartibga solish uchun iteratorlar ishlatiladi. Functors   (Funksiyalar):   STL   kutubxonalarida   funksiyalar   va   obyektlar,   ko'p
qatlamli   ma'lumotlar   uchun   ishlatiladi.   Bu   funksiyalar,   algoritmik   operatsiyalarni
amalga oshirish uchun ishlatiladi.
Adapters (Moslashuvchanlik qurilmalari): STL kutubxonalarida, moslashuvchanlik
qurilmalari, masalan, stack, queue va priority_queue, mavjud.
Quyidagi   misolda,   std::vector   kutubxonasi   va   std::sort   algoritmi   yordamida
o'lchamlari va tartiblari berilgan sonlar to'plamini tartibga solish keltirilgan:
Bu kod yordamida, std::vector kutubxonasi yordamida numbers nomli o'lchamlari
va   tartiblari   berilgan   sonlar   to'plami   yaratiladi.   std::sort   algoritmi   yordamida,
numbers   to'plami   tartibga   solinadi.   Keyin,   to'plamda   bo'lgan   sonlar   for   sikli
yordamida chiqariladi.
1.2. T urlarni almashtirish
Quyidagi   kodda   std :: map   va   std :: pair   kutubxonalaridan   foydalanilgan :   Bu   kod
yordamida ,   std :: map   kutubxonasi   yordamida ,   ismi   va   yoshi   berilgan   insonlarning
ma ' lumotlari   tuzilgan .  std :: pair   kutubxonasi   yordamida ,  insonning   ismi   va   yoshi   bir
xil   juftlikda   saqlanadi .   ages . insert   yordamida ,   ma ' lumotlar   mapga   saqlanadi .   for
sikli   yordamida ,  mapdagi   ma ' lumotlar   chiqariladi .
STL   kutubxonalarini   o ' rganish ,   dasturlashda   ishlatishda   va   yuqori   darajadagi
dasturlar   yaratishda   juda   muhimdir .
Dasturlash   jarayonini   tushunish   uchun   kompyuterni   tashkil   etgan   qurilma
bloklarini   tushunishingiz   kerak .   Shaxsiy   kompyuterni   ko ’ rib   chiqsak .   Katta
kompyuterlarni   boshqa   kompyuterlarnikidek   dizayndagi   ammo   tezroq ,   kattaroq ,
yoki   kuchliroq   qislmari   mavjud .  Kompyuterning yuragi Markaziy Protsessor(CPU)
Markaziy   Protsessor   yagona   chipdan   yoki   kichik   birlikdagi   chiplardan   iborat.
Kompyuter   chipi   metal   yoki   plastik   komponentli   korpusdan,metal   ulagichlardan
iborat, uzatkichlar ichki  qismi  esa kremniydan iborat. Protsessor ichki  qismi  juda
murakkab   tuzilgan.   MISOl   uchun,   Pentium   chipi   (qo’llanma   yozilayotgan   vaqtda
shaxsiy   kompyuterlar   uchun   mashxur   protsessor   sanalgan)   bir   qancha   millionli tranzistor   deb   nomlanadigan   tuzilma   elementlaridan   tashkil   topgan.   Markaziy
Protsessor dastur nazorat  qilinadi va ma’lumot qayta ishlanadi. Bunda kompyuter
dastur   nazoratini   amalga   oshiradi   va   turgan   o’rnini   aniqlaydi;   u   yana   qoshish,
ayirish,  ko’paytirish  va  bo’lish  kabi  arifmetik  amallar  ham   bajaradi;  tashqi  xotira
yoki   qurilmadagi   ma’lumotlarni   orqaga   qaytarib   yozib   saqlay   oladi.   Kompyuter
ma’lumot va dasturlarni saqlaydi. Ikki xil turdagi xotira mavjud. Xotira chiplaridan
iborat,   elektr   quvvati   bilan   ta’minlangan   o’zida   ma’lumot   saqlay   oladigan   elekr
zanjirdan   iborat   xotira   Birlamchi   xotira   deyiladi.   Qoshimcha   xotira   esa,   kamroq
qiymatga   ega   elekts   sarflamaydigan   Qattiq   diskdir.   Qatti   disk   aylanuvchi
plastinkaan  iborat, magnit   material   bilan qoplangan,  plastinka  oqimini  aniqlab  va
o’zgartira   oladigan   o’quvchi/yozuvchi   muhim   qismlardan   iborat   (1.02   rasmga
qarang).   1.01-rasm.   Markaziy   prosessor.   1.02-rasm.   Qattiq   disk.   Dasturlar   va
ma’lumotlar   odatda   qattiq   diskda   saqlanadi   va   dastur   ishga   tushganda   xotiradan
olinadi.   Dastur   xotiraagi   ma’lumotlarni   yangilangandan   so’ng   o’zgartirilgan
ma’lumotlar   qayta   qattiq   diskka   yoziladi.   Insonlar   bilan   muloqotga   kirihganda
kompyuter   qo’shimcha   qurilmalarni   talab   qiladi.Kompyuter   insonga   ma’lumotni
ekran, ovoz qurilmasi  va printer  orqali  uzatadi. Inson ma’lumotni  klaviatura yoki
ko’rsatuvchi qurilma sichqoncha bilan kiritadi. Ayrim kompyuterlar qismlari o’zida
tashkil   topgan,   qolganlari   bo’lsa   tarmoq   bilan   bog’langan.   Tarmoq   kabellari
sababli,  komyuter  markaziy  xotiradan   dastur   va  ma’lumotlarni  o’qiydi  va   boshqa
kompyuterlarga   jo’nata   oladi.  Tarmoqqa   ulangan   komyuter   foydalanuvchisi   qaysi
ma’lumot kompyuterda o’zi bo’lgani va qaysi biri tarmoqdan olingani aniq bo’ladi.
1.03-rasm.   Shaxsiy   kompyuterning   sxematik   tuzilishi   1.03-rasmda   shaxsiy
kompyuterning   sxematik   ko’rinish   arxitekturasi   berilgan.   Dastur   ko’rsatmalari   va
ma’lumotlari (matn, son, audio va videolar) qattiq diskda, optik disk DVD da yoki
tarmoqning   boshqa   biror   joyida   saqlanadi.   Dastur   ishga   tushganda   u   xotiradan
olinadi   va   Markaziy   protsessor   uni   o’qiydi.   Markaziy   Protsessor   bir   vaqtda   bitta
dastur   ko’rsatmasini   o’qiydi.   Shu   ko’rsatmaga   binoan,   Markaziy   Protsessor
ma’lumotni   o’qiyd,   qayta   ishlaydi   va   saqlaydi.   Ayrim   dastur   ko’rsatmalari
Markaziy Protsesorga ekranda qayerga nuqta qo’yishni, bosib chiqarishni va ovoz qurilmasini  ishga tushirishga buyruq beradi. Bu holatlar  ko’p marotaba va yuqori
tezlikda amalga oshgani sababli inson faqatgina ovoz va rasmlarni anglaydi. Ayrim
dastur   ko’rsatmalari   klaviatura   va   sichqoncha   orqali   kiritilgan   ma’lumot   orqali
o’qilinad. Dastur bu kiritilgan ko’rsatmalarni tahlil qiladi va kerakli ko’rsatmalarni
amalga   oshiradi.   Tasodifiy   Fakt   1.1.   ENIAK   va   hisoblashlar   ibtidosi   ENIAK
(yelektron   nomerlovchi   nomerlovchi   integrator   va   kompyuter)   birinchi   elektron
kompyuterlar   bo’lgan.   U   J.Presper   va   Jon   Mauchliy   tomonidan   Pensilvaniya
Universitetida   1946   yil   tranzistorlar   kashf   qilinishidan   2   yil   oldin   kashf   qilingan.
Kompyuter   katta   honaga   joylashtirilgan   va   18000   ga   yaqin   vakuumdan   tashkil
topgan kichkina shkaflardan tashkil topgan.(1.02 rasmga qarang) Vakuum trubalar
kuniga   bir   nechtalab   yonib   ketgan.   Maxsus   shaxs   trubalar   to’ldirilgan   idish   bilan
ishdan   chiqqan   trubalarni   almashtirib   turgan.   1.04-rasm.   ENIAK   Kompyuter
panellardagi birlashtiruvchi simlar  bilan dasturlangan. Xar  bir  sim konfiguratsiasi
tegishli   kompyuter   muammosi   uchun   o’rnatilgan.   Kompyuter   turli   xil   muammlor
ustida ishlashi  uchun simlar  qayta  ulangan. Qo’shma Shtatlar  Armiyasi  ENIAKni
ballistik jadvallar hisobi uchun,shamolga qarshi tezlik trayektoriyasi va atmosfera
holatini aniqlab berishda foydalangan. Trayektoriyani hisoblash uchun ma’lum bir
differensial   tenglaman   raqamli   yechimini   topish   shart   edi.   Shu   sababli   ham
“raqamli   integrator”   deb   nomlangan.   ENIAK   kabi   mashinalar   ixtiro   qilinmasdan
avval insonlar bu ishlarni qilishgan va 1950 yilgacha “kompyuter” so’zi ular uchun
ishlatilgan.   ENIAK   keyinchali   tinchlik   yo’lida,   Qo’shma   Shtatlarda   aholini
ro’yxatga   olishda   ishlatilgan.   Tasodifiy   Fakt   1.2   standardlovchi   Tashkilotlar   2   ta
standardlovchi   tashkilotlar   Amerika   Milliy   Standardlash   Instituti   (ANSI)   va
Xalqaro   Standardlovchi   Tashkilot   (ISO)   hamkorlikda   C++   tili   uchun   eng   to’g’ri
standard   vujudga   keltirishdi.   Nima   uchun   standard   kerak?   Siz   standardlashni
foydasi   bilan   har   kuni   to’qnash   kelasiz.   Lampochka   sotib   olayotganda   u
uyingizdagi lampochka chanog’iga mos kelishini bilasiz. Fakt shuki, siz qachondir
nostandard   fonar,   lampochkalarini   xarid   qilsangiz   standardlash   qanchalik
muhimligini   bilib   olasiz.   Fonar   Lampochkalarni   qayta   almashtirish   qiyin   va
qimmat   bo’lishi   mumkin.   ANSI   and   ISO   standardlash   tashkilotlari   mashina balonlari   va   kredit   kartalari   shaklidan   to   C++   dasturlash   tiligacha   xamma
narsalarni   standardlashni   yo’lga   qo’ygan   ishlab   chiqarish   mutaxassislari
birlashmasidir. Bu  siz bir  sistemada  o’rnatgan dasturni  boshqa ishlab  chiqaruvchi
to’plamidagi boshqa dasturga qo’yganingizda u ishlashiga amin bo’lishingizdir. 1.3
Dasturlash  muhiti  bilan tanishish Ko’p studentlar  dasturchilarga  kerak  bo’ladigan
qurilmalar   ularga   tanish   bo’lgan   dasturiy   taminot   qurilmalaridan   faqr   qilishini
bilishadi.   Siz   alohida   vaqt   ajratib   dasturiy   muhit   bilan   tanishib   chiqing.   Chunki
kompyuter   tizimi   keng   farqlanadi,   bu   kitob   sizga   amal   qilishingiz   kerak   bo’lgan
bosqichlar   yo’riqnomasini   beradi.Amaliy   labaratoriya   ishlarida   qatnashish   yoki
bilimga ega do’stingiz yo’rig’ini tinglash ham samaralidir. 1-bosqich. C++ yaralish
muhitini   boshlang.   Kompyuter   tizimlari   bu   borada   katta   farq   qiladi.   Ko’p
kompyuterlarda   yozish   va   dasturlarni   sinash   mumkin   bo’lgan   bir   integratsiya
ishlab   chiqish   muhiti   bor.   Boshqa   kompyuterlarda   esa   C++   yo’riqnomalarini
kiritish   uchun   avval   so’z   muharririni   ishga   tushirish   lozim,   keyin   esa   konsol
oynasi-  ni  ochish va  bajarilishi  kerak  bo’lgan buyruqni  kirgizishingiz kerak. Suiz
muhit bilan ishlashni o’rganishingiz lozim. 2-bosqich. Oddiy dastur yozing. Yangi
dasturlash tilini yaratishdagi ilk dasturda ekranda oddiy salomlashuv so’zi “Hello,
World!”.   Keling,   bu   an’ana   amal   qilaylik.   Bu   erda   C++   “Hello,  World!”   dasturi:
#include   using   namespace   std;   int   main()   {   cout   <<   "Hwllo,   World!"   <<   endl;
return 0; } Biz keyingi bo’limda ushbu dasturni ko’rib chiqamiz. Qanday dasturiy
muhitdan foydalanmang, dastur holatini muharrir oynasiga kiritishdan boshlaysiz.
Yangi   fayl   oching   va   uni   hyello.cpp,   deb   nomlang,   yo’riqnomangiz   uchun   zarur
bosqichlardan   foydalaning.   (Agar   sizning   muhitingiz   loyiha   nomini   fayl   nomiga
qo’shib   yozishni   talab   qilsa   u   holda   siz   hyello   so’zini   loyiha   nomi   deb   olinng.)
Dastur   buyruqlarini   tepada   berilgandek   aniq   kirg’izing.   Shu   bilan   bir   qatoda,
dasturdagi manbaa fayllarini elektron nusxasini toping va muharriringizga qo’ying.
Siz shu dasturni yozar ekansiz, turli belgilarga yaxshilab e’tibor bering, C++ nozik
ish   sanaladi.   Siz   xarflarni   dastur   satrida   ko’ringanidek   bosh   va   kichik   xarflarda
kirg’izishingiz shart. main yoki endl yoza olmaysiz. Agar siz e’tiborli bo’lmasangiz
xatoga yo’l qo’yasiz. 3-bosqich. Kompilyatsialash va dasturni ishga tushirish. C++ dasturini   yaratish   va   ishga   tushirish   jarayoni   sizning   dasturlash   muhitingizga
bog’liq.   Ayrim   kompleks   rivojlantirish   muhitida,   siz   oddiygina   tugmachani
bosasiz. Boshqa muhitda esa, siz buyruqlar kirg’izishingiz lozim. Siz dasturingizni
sinovdan o’tkazishda Hello world! ekranni qaysi joyidadir paydo bo’ladi (1.05 va
1.06 rasmga qarang). 1.05-rasm. hello dasturini ishga tushirish jarayoni 1.06-rasm.
hello   dasturini   window   oynasida   kompilyasiyalash   va   ishga   tushirish   Dasturingiz
tuzilayotganda   uning   negizida   nima   borligi   muhimdir.   Birinchidan,   First,
kompilyator   C++   manbaa   kodini   (siz   kiritgan   so’zlar)   mashina   ko’rsatmalariga
o’girib   beradi.   Mashina   kodi   siz   yozgan   so’zni   kodga   o’girib   berilgan   shaklidir.
Dasturni   faqatgina   ishga   tushirish   yetarli   bo’lmaydi.   Kompyuter   oynasida   bir
tizimni ko’rinishi uchunham, kam darajada bo’lsa ham faollik muhim. C++ rivoj-
lantirihs muhiti amaliyotchilari cout va uning vazifalarini o’z ichiga olgan kutub-
xona   bilan   ta’minlab   beradi.   Kutubxona   bu   bowqa   bir   inson   tomonidan   dastur-
langan   va   tarjima   qilingan,   siz   qo’llashingiz   uchun   tayyor   dastur   kodlar   va
jamlanmasidir. (Qo’shimcha murakkab dasturlar 1 dan ortiq mashina kodi fayli va
ku-   tubxonadan   iborat)   Birlashtirgich   nomli   dastur   mashina   kodini   va   C++
kutubxonasidan   kerakli   qismlarni   birlashtirib   amalga   oshgan   faylni   yuzaga
keltiradi.   (1.07-rasmda   bu   boshqichlarni   ko’rinishi   tsvirlangan)   Amalga   oshgan
fayl  kompyuter tizimiga bog’liq ravishda hyello.yexe yoki hyello deb nomlanadi.
Siz amalga oshgan faylni C++ rivojlantirish dasturidan chiqib ketganingizda ham
ishga   tushirishingiz   mumkin.   4-bosqich.   Ishingizni   tashkillashtiring.   Dasturchi
sifatida,   siz   dastur   tuzasiz,   sinaysiz   va   takomillashtirasiz   Siz   dasturlaringizni
fayllarda   saqlaysiz.   Fayllarni   nomlari   va   qonuniy   nomlari   qoidalar   tizimi   biri
ikkinchisidan farq qiladi. Ayrim tizimlar fayl nomlari orasida bo’sh joy qoldirishga
ruxsat   beradi   ayrimlari   esa   yo’q.  Ayrimlarida   kat-   ta   va   kichik   harflar   farqlanadi,
ayrimlarida esa yo’q. Ko’p C++ kompilyatorlar C++ fayllari .cpp, .cxx, .cc, yoki .c
bilan tugashi talab qilinadi, masalan test.cpp. Papkalar o’z ichiga fayllarni oladi va
yana ichida fayllar va papkalar bor boshqa fayllarni ham saqlay oladi. (1.08-rasm)
Bu   iyerarxia   katta   bo’lishi   mumkin,   va   siz   uning   barcha   bo’limlari   bilan   tanish
bo’lmasligingiz   mumkin.   1.07-rasm.  Amalga   oshgan   fayl   manba   kodi.   Biroq   siz ishingizni   tashkil   qilishingiz   uchun   papkalar   yaratishingiz   mumkin.   Har   bir
dasturlash   darsi   uchun   alohida   papka   ochish   to’g’ri   fikrdir.   Papka   ichida   esa,   xar
bir   topshiriq   uchun   alohida   papka   oching.   Ayrim   dasturlash   muhiti   papkani
o’zingiz   joylashtirmasangiz   standart   manzilga   saqlaydi.   U   holda   siz   papka
joylashgan   joyini   aniqlashingiz   kerak   bo’ladi.   Iyerarxia   papkasida   faylingiz
qayerga joylashganini  bilishingizga ishonch hosil  qiling. Bu ma’lumot  papkalarni
guruhlayotganingizda   va   zahira   nusxa   olayotganingizda   muhimdir.   1.08-rasm.
Ierarxiya   fayli   1.4   Ilk   dasturingiz   tahlili   Bu   bo’limda   ilk   C++   dasturini   batafsil
tahlil   qilamiz.   Quyida   yana   manbaa   kodi:   ch01/hello.cpp   #include   using
namespace   std;   int   main()   {   cout   <<   "Hello,  World!"   <<   endl;   return   0;   }   using
namespace   std;   kompilyatorga   "standart   nomlanish   joyi"   ishlatish   kerakligini
aytadi. Nomlanish joyi katta dasturlarda nomlanishdagi nizolarni bartaraf etadi. Siz
nomlanish   joyidan  xavotir   olmasangiz   ham   bo'ladi.   Bu   kitobda  ishlab   chiqadigan
dasturingiz   uchun   standart   nom   qo'yasiz.   xar   bir   yzadigan   dasturingiz   boshiga
using   namespace   std;   ni   yozing   va   oxirida   esa   #include   ko'rsatmasini   yozing.
Tuzilishi int main() { ... return 0; } main deb nomlanuvchi funksiasi butun sonni 0
qiymatda   qaytaradi   (bunda   C++   int   da   deb   nomlanuvchi   bo'laklanmagan   butun
son)   Bu   qiymat   dastur   muvaffaqiyatli   yakunlanganini   ifodalaydi.   Funksia   bu
belgilangan  vazifani   bajaruvchi   dasturlash   yo'riqnomasidir.   Har   bir  C++  dasturini
asosiy funksiasi bor. Ko'p C++ dasturlari dan tashqari boshqa funksilarga ham ega
buni keyinroq 5 Bobda funsialar va qiymatlarda ko'rib chiqamiz. Xozir esa, oddiy
dastur   yozish   uchun   kerak   bo'ladigan   qismlarni   tahlil   qilsak   to'g'ri   bo'ladi.   Kodni
amalga oshirmoqchi bo'lgan main funksiasiga kiriting. Qiymatni ekranda ko'rsatish
uchun   cout   nomli   asos   va   <<   operator(ayrim   paytlarda   o'rnatilgan   operator))   dan
foydalanishingiz mumkin. Masalan, cout << 39 + 3; 42 soni ekranda ko'rinadi. 1.5
Xatolar   Dasturlash   tili   juda   ham   muhim   konvensialarga   asoslanadi.   Siz   bir   inson
bilan muloqot qilayotganingizda 1 yoki 2 so'zni o'tkazib yuborsangiz yoki tushirib
qoldirsangiz   siz   bilan   muloqotdagi   inson   nima   demoqchi   ekanligingizni   tushuna
oladi.   Ammo   C++   da   xatoga   yo'l   qo'ysangiz   kompilyator   noto'g'ri   tushunchani
qabul   qilmaydi.   (Bu   xasqiqatda   yaxshi   narss,   agar   kompilyator   noto'g'ri tushunchani   qabul   qilganda,   u   natijani   ham   noto'gri   taqdim   qilar   edi.   Bu   esa
falokatli   oqibatlarga   olib   kelar   edi.)   Bu   bo'limda   siz   dasturingizdagi   xatolarni
qanday   bartaraf   etishni   o'rganasiz.   hello.cpp   dasturi   bilan   tajriba   qilamiz.   Biz
quyidagi xatolarga yo'l qo'ysak nima sodir bo'lar edi. cout << "Hello, World!" <<
endl;   cout   <<   "Hello,  World!   <<   endl;   cout   <<   "Hollo,  World!"<<   endl;   Birinchi
holatda, kompilyator orqali nimani nazarda tutayotganingizni tushunmaganligidan
arz qiladi. Yo'l  qo'yilgan xatolikning aniq ta'rifi kompilyatorga bog'liq bo'ladi. Bu
“Undefined   symbol   cot”   kabi   ko'rinishda   ham   bo'lishi   mumkin.   Bu   COMPILE
TIME   xatolik   yoki   sintaksis   xatolik   sanaladi.   Imlo   qoidasiga   yo'l   qo'yilsa   ham
kompilyator   uni   topadi.  Agar   kompilyator   1   yoki   undan   ko'p   xatolikni   topsa,   u
holda dasturni texnika tiliga o'girmaydi va natijada ishga tushiriladigan dastur ham
yaratilmaydi. Siz xatolikni  bartaraf  eti  uni  boshqatdan to'plashingiz kerak bo'ladi.
Odatda   ilk   muvaffaqiyatli   kompilyatisaga   erishishdan   oldin   COPMILE   TIME
xatoliknibartaraf   etishdagi   bir   qancha   jarayonlardan   o'tiladi.   Agar   kompilyator
xatolikni aniqlasa u osonlikcha to'xtamaydi va rad etmaydi. U aniqlagan xatolikni
hammasini   ko'rsatadi,   siz   bunda   hamma   xatolikni   bittada   to'g'irlab   olishingiz
mumkin. Ayrim paytlarda bitta xatoni o'zi ham dasturni ishdan chiqarishi mumkin.
Bunday   xatolik   ikkinchi   satrda   ham   uchrashi   mumkin.   Dasturchi   yopuvchi   qavs
belgisini ishdan chiqarsa kompilyator satr oxirini qidirishda davom etadi. Bunday
holatlarda   kompilyator   qo'shni   qatorlarda   soxta   xatolikni   ko'rsatadi.   Siz   kerakli
qatorlardagi   xatolikni   to'g'irlab   so'ng   qaytadan   kompilyatsialashingiz   kerak.   Bu
RUN TIME ERROR hisoblanadi. Dastur gap tuzilishi jihatdan xatolikni topadi va
nimadir   bajaradi,   ammo   taxmin   qilingan   ishni   bajarmaydi.   Kompilyator   xatolikni
topa olmaydi, ammo dastur ishga tushganda uni tozalashga majbur, uni tekshiradi
va   chiqarilishiga   yaxshilab   e'tibor   beradi.   RUN-TIME   ERROR   sabali   dastur
mantiqiy nuqson aniqlaydi va bu nuqsonlar mantiqiy xatolik deyiladi. Ayrim RUN
TIME ERROR xatoliklari jiddiy hisoblanadiki ayrim istisnolar keltirib chiqarishga
ham sababchi bo'ladi. Protsessordagi xabar xato xabar sababli dasturni tugatilishiga
olib   keladi.Misol   uchun   dasturingiz   cout   <<   1   /   0;   bo'lsa   "nol   bilan   ajratish"
istisnosi bilan tugatilinadi. 1.6 Muammo yechimi: Algoritm konstruksiyasi Siz tez kunda   hisoblarni   va   qaror   qabul   qilishni   С ++da   qanday   dasturlashni
o’rganasiz.Biroq   keyingi   bobdagi   hisoblarni   amalda   qo’llash   mexanizmini   ko’rib
chiqishdan   oldin   keling,   ijrodan   keyin   keladigan   rejalashtirish   jarayonini   ko’rib
chiqamiz.Balki   sizga   mos   umr   yo’ldosh   topib   beruvchi   kmpyuterlashagn   xizmat
uchun sizni undaydigan e’longa duch kelgandirsiz. U qanday ishlashi mumkinligi
to’g’risida   o’ylab   ko’ring.Siz   anketa   to’ldirasiz   va   uni   jo’natasiz.   Boshqalar   ham
shunday qiladilar. Ma’lumotlar kompyuter tomonidan ishlab chiqiladi. Kompyuter
sizga   eng   mos   shaxsni   topish   vazifasini   uddalay   oladi   deb   o’ylash   to’g’rimi?
Deylik kompyuter emas ukangizda barcha anketlar bor.Unga qanday ko’rsatmalar
bera   olardingiz.siz   unga   "Konkida   uchishni   va   internetda   o’tirishni   yoqtiradigan
juda   chiroyli   bo’lgan   qarama-qarshi   jinsdagi   shaxsni   top"   ,   deb   aytolmaysiz.
Go’zal  chehra borasida obyektiv standart yo’q va ukangizning fikri (yoki raqamli
rasmni   tahlil   qilgan   kompyuterning   dasturining   fikri)siznikidan   farqli   bo’lishi
mumkin. Agar siz biror kimsaga muammoniu hal etish chun yozma ko’rsatma bera
olmasangiz, kompyuter ham buni hyech qanday sehr yordamida yecha olmasligini
iloji yo’q.Kompyuter faqatgina unga nima qilishni aysangiz shuni  bajara oladi. U
zerikmasdan yoki charchamasdan vazifani tezroq bajaradi. Endi quyidagi sarmoya
borasidagi   muammoni   ko’rib   chiqamiz:Siz   bank   hisob   raqamingizga   yiliga   5%
foyda   qiladigan   $10,000   miqdordagi   pulni   qo’ydingiz.   Dastlabki   miqdor   ikki
baravar   ko’payishi   uchun   hisob   balansi   uchun   qancha   yil   talab   etiladi?   Ushbu
muammoni   qo’llar   yordamida   yecha   olasizmi?  Albatta,   siz   balansni   quyidagicha
hisoblaysiz:   yil   foyda   balans   Balans   kamida  $20,000   miqdoriga   yetmaguncha   siz
hisobni   davom   ettirasiz.Yil   ustunidagi   oxirgi   raqam   javob   bo’ladi.   Albatta,   bu
xisoblashni   amalga   oshirish   siz   va   ukangiz   uchun   juda   zerikarlidir.   Lekin
kompyuterlar   takrorlanuvchi   hisoblarni   tez   va   mukammal   bajarishda   ustasi
farangdrlar.Kompyuter   uchun   muhimi   bu   yechimni   topishda   bosqichlarning
tavsifidir.Har qaysi qadam tahmindan uzoqda aniq va lo’nda bo’lishi shart.
C#   dasturlash   tilida   kompyuter   xotirasiga   bir   o’zgaruvchi   yordamida   bir   nechta
qiymatlarda   foydalanishga   to’g’ri   keladi.  Bir   o’zgaruvchi  bilan  bir   nechta  qiymat
ustida   amallar   bajarish   uchun   berilgan   ma’lumotlar   bir   turga   mansub   bo’lishi kerak.   C#   dasturlash   tilida   bir   o’zgaruvchi   yordamida   bir   nechta   qiymatlardan
foydalanish uchun massiv degan turdan foydalaniladi. Dasturlash tillarida ro’yxat
yoki   jadval   ko’rinishidagi   ma’lumotlarni   massiv   deb   atashadi.   Massiv   so’zining
ma’nosi   o’lcham,   o’lchov   demakdir.   Massivning   barcha   elementlari   bitta   turga
mansub   bo’lib,   ular   bitta   nom   bilan   nomlanadi   va   bir-birlaridan   nomerlari
(indekslari) bilan farq qiladi.
II. Loyixa qism
2.1.  C++ Builderda MySQL ma’lumotlar bazasi bilan ishlash
                        Endi   dasturdagi   ma’lumot   strukturalari   bilan   tanishishni   boshlaymiz.
Dasturda   ikki   asosiy   tur   ma’lumot   strukturalari   mavjuddir.   Birinchisi   statik,
ikkinchisi   dinamikdir.   Statik   deganimizda   xotirada   egallagan   joyi   o’zgarmas,
dastur   boshida   beriladigan   strukturalarni   nazarda   tutamiz.   Statik   massivlar
elementlar   soni   oldindan   ma’lum   bo’lgan   va   initsializatsiyalangan   (qiymat
belgilangan) massivlar hisoblanadi. Dinamik ma’lumot tiplari dastur davomida o’z
hajmini,   egallagan   xotirasini   o’zgartirishi   mumkin.   Dinamik   massivlar   esa
elementlari   soni   oldindan   ma’lum   bo’lishi   va   uni   initsializatsiyalash   (qiymat
belgilash)   shart   emas.   Statik   massivlarning   kamchiliki   shundaki,   agar   ularning
o’lchamini oldindan juda katta olinsa-yu, uning ko’p qismi keraksiz qolib ketsa, u
holda xotira behuda sarflanishiga olib keladi. Shu muammoni hal qilish maqsadida
massivlar   C#   tilida   asosan   dinamik   tarzda   e’lon   qilinadi.   Massivlar   dasturlashda
eng   ko’p   qo’laniladigan   ma’lumot   tiplaridir.   Massivlar   hotirada   ketma-ket
joylashgan,   bir   tipdagi   o’zgaruvchilar   guruhidir.   Alohida   bir   o’zgaruvchini
ko’rsatish uchun massiv nomi va kerakli o’zgaruvchi indeksini yoziladi.
Ta’rif:   Bir   turga   mansub   bo’lgan   yagona   nom   bilan   saqlanuvchi   tartiblangan
ma’lumotlar majmuasi massiv deyiladi.
Massivlar   yagona   o’zgaruvchi   bilan   kompyuter   xotirasiga   saqlanadi,   uning
elementlari   ma’lum   bir   indekslar   bilan   tartiblab   joylashtiriladi.   Massivlar   yagona
nom bilan bir nechta qiymatni o’zida mujassamlashtiradi, bularga matematikadagi vektorlarni misol keltirish mumkin. Vektor ham yagona nom bilan saqlanib uning
tarkibida bir nechta qiymatni o’zida mujassamlashadi. Vektorning ham elementlari
bir turga mansub va tartiblangan bo’ladi.
Bir o’lchovli massivlar 
Odatda   massivlar   zarurat,   katta   hajmdagi   tartiblangan,   lekin   chekli   elementlarga
oid   masalalarni   hal   etishda   yuzaga   keladi.   Dastur   ishlatilishi   davomida   massivlar
aniq nomga ega bo’lishi va uning elementlari ma’lum bir turda bo’lishi kerak.   Bir
o’lchovli massivlar kompyuter xotirasiga quyidagi shaklda saqlanadi
Massiv   tarkibida   elementlar   mavjud   bo’ladi.   Massivning   eng   ko’pi   bilan   ketishi
mumkin bo’lgan elementlar  soni  uning o’lchamini  bildiradi. Massivning elementi
turgan   o’rni   uning   indeksi   deyiladi.   Massivning   elementiga   uning   indeksi   orqali
murojaat  qilinadi. Massivning indeksi  sifatida butun sonlar  xizmat  qiladi. Har bir
massiv   o’zining   individual   nomiga   ega   bo’lishi   kerak,   ya’ni   bir   xil   nomdagi
massivlar  bo’lmaydi. Ularning nomi  oldin e’lon qilingan oddiy o’zgaruvchi  nomi
bilan ustma-ust tushmasligi kerak.
Statik massivlarni e’lon qilishning umumiy ko’rinishi quyidagicha:
<tip> []<massiv_nomi>={boshlang’ich qiymatlar}
Bunda {boshlang’ich qiymatlar} albatta bo’lishi kerak. Misollar:
int []A={1,4,3,1};
string[] B = { “olma”, “gilos”, “anor”};
double[] C = { 0.005, 1.234, 12.5, 13.5, 10.6 }; Yuqoridagi   massivlarda   massivning   o’lchami   uning   initsializatsiya   qismida
qatnashgan elementlar soni bilan aniqlanadi. C# tilida xuddi C++ da bo’lgani kabi
element   indeksi   0 dan  boshlanadi. A[0]   indeksli   element   1 ga  teng, B[1]  indeksli
element esa “gilos” ga teng va h.
Aytib o’tganimizdek, C# tilida massivlar xotiradan unumli foydalanish maqsadida
massivlarni   dinamik   tarzda   e’lon   qilishga   kelishib   olingan.   Dinamik   tarzda
massivni e’lon qilishning umumiy ko’rinishi quyidagicha:
<tip> [] <massiv_nomi>=new <tip>[o’lcham] 
Bu yerda new operatori <o’lcham>ga mos ravishda xotiradan joy ajratadi. Dinamik
massivlarni e’lon qilishga doir misollar:
n = Convert.ToInt32(Console.ReadLine());
int[] M1 = new int[10];
float[] M2 = new float[100];
double[] M3 = new double[n];
M1 va M2 nomli massivlarning elementlari uchun 10 va 100 ta joy ajratilgan. Ular
ham dinamik massiv hisoblanadi. M3 massiv uchun xotiradan qancha joy ajratish
foydalanuvchining   o’ziga   havola   qilingan,   ya’ni   n   o’zgaruvchisi   klaviaturadan
kiritiladi, bu o’zgaruvchi qiymati esa M3 massiv o’lchami sifatida qabul qilinadi.
M3 massiv dinamik massivga yorqin misoldir.
Dinamik massiv o’lchami ham statik massiv kabi aniqlanishi lozim, faqat bunda u
dastur ishlashi davomida anqlanishi bilan static massivdan farq qiladi.
Indekslar massiv elementlariga murojat qilish uchun ishlatiladi. Indeks massivdagi
element sonini bildiradi .Massivdagi to’rtinchi elementga murojat qilish uchun biz
3 indeksidan foydalanishimiz kerak. Misol uchun :num[3]. Massiv elementlarining
qiymatlarini olish va o’rnatish uchun indekslardan foydalanamiz.
int[] nums=new int [4]; nums[0]=1; 
nums[1]=2;
nums[2]=3;
nums[3]=5;
Console.ReadLine(nums[3]); //5
Va   bizda   faqat   4   ta   element   uchun   belgilangan   massiv   mavjud   bo’lgani   uchun   ,
masalan   oltinchi   elementni   qo’llay  olmaymiz   nums[5]=5;.  Agar   biz   buni   qilishga
harakat qilsak biz IndexOutOfRangeException-ni olamiz.
Statik massivlar elementlar oldindan aniqlanadi. Buning uchun sikl operatorlariga
murojaat   qilamiz.   Masalan,   quyidagi   misolda   dinamik   massivga   qiymat   berish
hamda uning elementlarini chop etish amallar ko’rsatilgan. Biz massiv elementlari
bilan   ishlashimiz   uchun   for   sikl   operatori   kerak   buladi.   Bu   haqida   yetarlicha
bilimga   ega   bo’lmasayiz   quyidagi   link   orqali   o’tsangiz   Starter   bulimida   Suxrob
Xayitmurodov   yetarlicha   malumot   bergan.   Agar   for   sikl   operatori   haqida
malumotga ega bulsayiz davom etamiz.
using System;
internal class ArrayExample
{
private static void Main()
{
int[] A = new int[10];
int i;
for (i = 0; i < 10; i = i + 1)
A[i] = i;
for (i = 0; i < 10; i = i + 1) Console.WriteLine(‘A[‘ + i + ’]: ’ + A[i]);
}
}
Bu dasturda A massivning elementlari sifatida i ning qiymatlari kelmoqda. Xuddi
shunday   massiv   elementlarini   klaviatura   orqali   ham   kiritish   mumkin.   Buning
uchun quyidagi kodni ko’raylik:
using System;
internal class ArrayExample
{
private static void Main()
{
int[] A = new int[10];
int i;
for (i = 0; i < 10; i = i + 1)
A[i] = Convert.ToInt32(Console.ReadLine());
for (i = 0; i < 10; i = i + 1)
Console.WriteLine(‘A[‘ + i + ’]: ’ + A[i]);
}
}
Massiv   elementlari   qiymatlaridan   foydalanishga   doir   quyidagi   sodda   misolni
ko’rib chiqaylik.
Men   Shahbozga   judayam   qiziqarli   matematik   masala   berdim.   Masala   sharti
quyidagicha:   Men   unga   10   ta   son   aytaman   ularning   yig’indisini   topib   10   ga bo’lishi   kerak   buladi.   Keyin   Shahboz   menga   shu   kodni   yozib   berdi.   Sizham   bu
kodni o’z kompyuteringizda tekshirib kuring.
using System;
internal class Average
{
private static void Main()
{
int[] A = new int[10];
int i;
double S = 0;
Console.WriteLine("Sonlarni kiriting");
for (i = 0; i < 10; i = i + 1)
A[i] = Convert.ToInt32(Console.ReadLine());
for (i = 0; i < 10; i++)
S += A[i];
S = S / 10;
Console.WriteLine(S);
}
}
Massivlar   bilan   ishlaganda   uning   o’lchami   chegarasidan   chiqib   ketmaslik   lozim.
Agar   bu   holat   yuz   bersa   C#   kompilyatori   IndexOutOfRangeException   xatoligi
haqida   xabar   beradi.   Bu   xatolikni   siz   ham   sinab   kurmoqchi   bulsangiz   quyidagi
kodni kiritib , ishlatib kuring:
using System; internal class ArrayErr
{
private static void Main()
{
int[] sample = new int[10];
int i;
// Chegaradan chiqish holati yuz bermoqda 
for (i = 0; i < 100; i = i + 1)
sample[i] = i;
Hozir biz siz bilan funksiyalarda massivlardan foydalanishning bir nechta hollarini
ko’rib chiqamiz.
1.Keling   Python   dasturlash   tilidagi   range()   funksiyasiga   o’xshash   funksiyani   biz
C#   dasturash   tilida   tuzib   ko’ramiz.   Izoh:   range()   –   asosan   ikkita   argument   qabul
qiladi aytaylik n va m, ushbu funksiyaning vazifasi n dan m gacha bo’lgan butun
sonli array ni qaytaradi(m kirmaydi).
static int[] Range(int n, int m) 
{ 
int[] range = new int[m - n]; 
int k = 0; 
for(int i=n; i<m; i++) 
range[k++] = i; 
return range; 
}  Bu   yerda   biz   Range   funksiyasining   type   sifatida  int[]   massiv   typeni   berdik.   Endi
ushbu   funksiyadan   foydalanib   n   dan   m   gacha   bo’lgan   butun   sonlar   yig’indisini
hisoblaymiz:
using C=System.Console; 
using System.Linq; 
public class Program 
{ 
public static int[] Range(int n, int m) 
{ 
int[] range = new int[m - n]; 
int k = 0; 
for(int i=n; i<m; i++) 
range[k++] = i; 
return range; 
} 
public static void Main(string[] args) 
{ 
int n,m; 
C.Write("n="); 
n = int.Parse(C.ReadLine()); 
C.Write("m="); 
m = int.Parse(C.ReadLine()); 
C.WriteLine($"{n} dan {m} gacha bo'lgan yig'indi={Range(n,m+1).Sum()}");  } 
} 
1.
Endi   funksiyaning   argumentlariga   massivlardan   foydalanishni   ko’rsak.
Funksiyaning   argumentiga   massiv   ham   xuddi   o’zgaruvchidek   ishlatiladi   Misol
uchun: <type> funksiyaNomi(int[] x, string[] y){}
Keling   biz   System   nomlar   fazosidagi  Array   classining   Sort()   metodiga   o’xshash
funksiya   yaratib   ko’ramiz.   Izoh:   Array.Sort   metodinig   argumentiga   massivni
bersak ushbu metod bizga bergan massiv elementlarini o’sish tartibida tartiblaydi.
Biz faqat int typedagi massivni sort qiladigan funksiya yozamiz!
static void Sort(ref int[] massiv) 
{ 
int x; 
for(int i=0; i<massiv.Length-1; i++) 
for(int j=i+1; j<massiv.Length; j++) 
{ 
if (massiv[j] < massiv[i]) 
{ 
x = massiv[i]; 
massiv[i] = massiv[j]; 
massiv[j] = x; 
} 
} 
}  Xop bu funksiyani endi ishlatib ko’ramiz:
static void Main(string[] args) 
{ 
int[] mas = { 5, 4, 2, 1, 7, 45, 41, 6, 3, 4 }; 
Sort(ref mas); 
foreach (int x in mas) 
Console.Write(x+", "); 
} 
Natija: 1, 2, 3, 4, 4, 5, 6, 7, 41, 45,
Endi biz ushbu funksiya yordamida massivdagi eng katta va eng kichik elementni
ham topishimiz mumkin:
static void Main(string[] args) 
{ 
int[] mas = { 5, 4, 2, 1, 7, 45, 41, 6, 3, 4 }; 
Sort(ref mas); 
Console.WriteLine($"eng kichigi: {mas[0]}, eng kattasi: {mas[mas.Length - 1]}");
} 
Natija: eng kichigi: 1, eng kattasi: 45
Demak   biz   funksiyalarning   type   va   ularning   argumentlarida   bemalol   massiv
typelaridan foydalana olar ekanmiz.
Massivlar daraja yoki o'lchovlar soni kabi tushuncha bilan tavsiflanadi. Massivlar
1, 2, 3 yoki n o’lchamli bo’lishi mumkin. Ko’p o’lchmali massivlarni 2 o’lchamli
massivlar misolida ko’rib boramiz Bir o’lchovli massivlarni bitta gorizontal qator
kabi tasavvur qilishimiz mumkin, misol uchun: int[] nums1 = new int[] { 0, 1, 2, 3, 4};
Vizual ko’rinishda bu massiv:
image
Endi esa 2 o’lchamli massivga misol ko’ramiz:
int[,] nums2 = { { 0, 1, 2 }, { 3, 4, 5 } };
Vizual ko’rinishda bu massiv:
image
Ko’p o’lchamli massivlarni e’lon qilish uchun kvadrat qavs ichiga vergul qo’yiladi,
yani [,] ikki o’lchamli massiv, [,,] uch o’lchamli massiv va hokazo.
int[,] arr2d; // ikki o’lchamli massiv
int[,,] arr3d; // uch o’lchamli massiv
int[,,,] arr4d; // to’rt o’lchamli massiv
int[,,,,] arr5d; // besh o’lchamli massiv
C# 32 o’lchovgacha bo’lgan massivlarni qo’llab quvvatlaydi.
32 o’lchovgacha Karl, 32!
Odatda   1,2   yoki   3   o’lchamli   massivlar   ko’p   ishlatiladi.   2   o’lchamli   massivlar
shuningdek   matritsa   deb   ham   ataladi.   Ko’p   o’lchamli   massivlarni   ham   bir
o’lchamli massivlar kabi turli hil yo’l bilan e’lon qilishimiz mumkin: int[,] nums1;
int[,] nums2 = new int[2, 3];
int[,] nums3 = new int[2, 3] { { 0, 1, 2 }, { 3, 4, 5 } };
int[,] nums4 = new int[,] { { 0, 1, 2 }, { 3, 4, 5 } };
int[,] nums5 = new[,] { { 0, 1, 2 }, { 3, 4, 5 } };
int[,] nums6 = { { 0, 1, 2 }, { 3, 4, 5 } };
Ko’p o’lchamli massivlarning elementlarini massiv elon qilingan paytda:
int[,] nums3 = new int[2, 3] { { 0, 1, 2 }, { 3, 4, 5 } };
kabi aniqlashimiz yoki sikl yordamida elon qilishimiz mumkin:
int[,] myArr = new int[4, 5];
Random rand = new Random();
for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 5; j++)
{
myArr[i, j] = rand.Next(1, 30);
Console.Write("{0}\t", myArr[i, j]);
}
Console.WriteLine();
}
Bu yerda Random sinfidan foydalanildi. Shuningdek massivning har bir elementini
alohidadan aniqlashimiz mumkin:
int[,] nums2 = new int[2, 3]; nums2[0, 0] = 0;
nums2[0, 1] = 1;
…
nums2[2, 3] = 5;
Ikki o’lchamli massivlarda [2, 3] masivning qatorlar va ustunlar sonini belgilaydi
yani 2 qatorlar soni va 3 ustunlar soni, quyida bunga misol ko’rishingiz mumkin:
int[,] nums3 = new int[2, 3] { { 0, 1, 2 }, { 3, 4, 5 } };
image
Keling   endi   2   o’lchamli   massivga   misol   ko’ramiz.   Sinfxonada   3   qator   partalar
joylashgan,   har   bir   qatorda   4tadan   parta   bor,   bir   partaga   1ta   bola   o’tiradi,   oddiy
hisob   kitob   bilan   bu   honada   3*4=12   ta   parta   borligi   va   12ta   o’quvchi   sig’ishini
hisoblay   olamiz,   endi   masalaga   o’tamiz,   matematika   fanidan   imtihonda   barcha
o’quvchilar 3,4 yoki 5 baholarini olishdi, savol sinfning o’rtacha bahosi necha?
using System;
class Program
{
static void Main(string[] args)
{
//3 qator 4 ustunlik 2 o'lchamli massiv elon qilamiz
int[,] myArr = new int[3, 4]; Random rand = new Random();
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 4; j++)
{
// random yordamida bolalarning baholarini aniqlaymiz
// (3,6) bu oraliqni bildiradi va 3,4,5 sonlarini o'z ichiga oladi
myArr[i, j] = rand.Next(3, 6); 
Console.Write("{0}\t", myArr[i, j]);
}
Console.WriteLine();
}
int sum = 0; //sinfning umumiy bahosi
double average = 0.0D; //sinfnig o'rtacha bahosi
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 4; j++)
{
sum += myArr[i, j];
}
}
average = Convert.ToDouble(sum) / 12;
Console.WriteLine($"Sinfning umumiy bahosi: {sum}"); Console.WriteLine($"Sinfning o'rtacha bahosi: {average}");
}
}
Natija:
5 3 5 4
4 3 5 4
3 3 3 3
Sinfning umumiy bahosi: 45
Sinfning o'rtacha bahosi: 3,75
Massivlarning asosiy hususiyatlari:
O’lchovi(rank): massivning o’lchovini bildiradi
Massiv uzunligi(array lenght): massivning barcha elementlari soni
o'lchov uzunligi(dimension length): bir alohida o’lchovining uzunligi
Biz ko’pincha metodlarda cheklangan miqdordagi  argumentlardan foydalanamiz .
Agar dasturdagi metodda argumentlar soni kopaysa kodning korinishini xiralashadi
yani   xunuklashadi.   params   kalit   so’zi   orqali   biz   cheksiz   argumentlarni   massiv
korinishida   kirgazishimiz   va   kodni   ancha   ixchamlashtirishimiz   mumkin.   params
Parametrli metodlarni chaqirganimizda , biz quyidagilarni kiritishimiz mumkin:
• Massiv elementlari turiga oid argumentlarning vergul bilan ajratilgan ro'yxati:
int yigindi = Sum(19, 9, 7, 17, 39, 47);
• Belgilangan turdagi argumentlar massivi:
object[] obj = new object[] { "hamroliyev", 'a', 19, 9, 12.8 };
//Add metodini chaqiramiz.
Add(obj); • Hech qanday  argumentsiz. Hech  qanday argument  yubormasak,  params ro'yxati
uzunligi nolga teng boladi.
Sum();
params   kalit   so’zi   dasturchi   metodda   foydalaniladigan   parametrlar   soni   haqida
oldindan ma'lumotga ega bo'lmagan hollarda foydali bo'ladi. Metod konstruktorida
params kalit  sozidan  faqat  bir  marta foydalanishimiz mumkin. params ga tegishli
argumentdan keyin qoshimcha argument berish mumkin emas.
params kalit so’zidan foydalanishga oddiy misol:
using System;
namespace dot_net_uz
{
class Program
{
// params parametrni o'z ichiga olgan metod
public static int Sum(params int[] sonlarRoyxati)
{
int sum = 0;
foreach (int i in sonlarRoyxati)
{
sum += i;
}
return sum;
}
static void Main(string[] args) {
//Sum metodini chaqiramiz.
int [] yigindi = Sum(19, 9, 7, 17, 39, 47);
Console.WriteLine($"yigindi : {yigindi}");
Console.ReadKey();
} 
}
}
Output:
yigindi : 138
yigindi : 138
0
Sizda   "params   kalit   so'zidan   foydalanmasdan   ham   metodlarda   massivdan
foydalanish   mumkinku,   params   ni   nima   keragi   bor?"   degan   savol   tug'ilishi
mumkin.   Javob   shunday:   params   kalit   so'zi   metoddan   foydalanishni   ancha
qulaylashtiradi: #include <iostream>
int main() {
    // Sonni oling
    int kelganSon;
    std::cout << "Iltimos, bir hafta kunini kiriting (1 dan 7 gacha): ";
    std::cin >> kelganSon;
    // Hafta kunlarini tekshirish
    if (kelganSon >= 1 && kelganSon <= 7) {
        // Hafta kunini aniqlash
        switch (kelganSon) {
            case 1:
                std::cout << "Dushanba" << std::endl;
                break;
            case 2:
                std::cout << "Seshanba" << std::endl;
                break;
            case 3:
                std::cout << "Chorshanba" << std::endl;
                break;
            case 4:                 std::cout << "Payshanba" << std::endl;
                break;
            case 5:
                std::cout << "Juma" << std::endl;
                break;
            case 6:
                std::cout << "Shanba" << std::endl;
                break;
            case 7:
                std::cout << "Yakshanba" << std::endl;
                break;
        }
    } else {
        // To'g'ri hafta kunini kiritmagan bo'lsa
        std::cout << "none" << std::endl;
    }
    return 0;
}   2.2.  Dasturda  bajarilgan ishlar
Berilgan son hafta kunining qaysi kuniga to'g'ri keladi. Agar kelgan son 1 ga teng
bo'lsa   "Dushanba   "   ni   konsulga   chiqaring,   Agar   kelgan   son   2   ga   teng   bo'lsa
"Seshanba"   ni   konsulga   chiqaring,   hafta   kunlari   1   dan   7   gacha   joylashsin,   agar
raqam haftasiga to'g'ri kelmasa konsulga "none" so'zi chiqsin. 1-To’g’ri javob quyidagicha chiqadi:
2-Noto’g’ri javob quyidagicha bo’ladi:
Oddiy   usullardan   tashqari   sinflarda   konstruktor   deb   nomlangan   maxsus   usullar
ham   qo'llaniladi   .   Ushbu   sinfning   yangi   ob'ekti   yaratilganda   konstruktorlar
chaqiriladi.   Konstruktorlar   ob'ektni   ishga   tushirishni   amalga   oshiradilar.   Ushbu
sinfning   yangi   ob’ekti   yaratilganda   konstruktorlar   chaqiriladi.   Konstruktorlar
ob’ektni   ishga   tushirishni   amalga   oshiradilar   va   sinflarni   initsializatsiyalashga
imkoniyat   beradi,   sinfning   obyektini   hosil   qilganimizda,   u   xotiradan   joy   ajratadi.
Ya’ni konstruktor – bu oddiy (struktura bo’yicha) funksiya, kirish ma’lumotlarini
olib,   sinf   maydonlarini   o’zlashtiradi.   Konstrukto   hosil   qilingan   har   qaysi   obyekt uni chaqiradi. Konstruktorlar biz biladigan metodlardan bir farqli jihati bor ekan bu
esa hech qanday qiymat qaytarmaydi: na int tipi, na float tipi, na double tipini va
hattoki void tipini ham.Shunaqa metod ham bularkanmi mana bularkanu. C# tilida
biz agar  konstruktor  yozish  esimizdan  chiqib qoladigan bulsa o’zi  jimlik buyicha
sinf   bitta   konstruktorni   yaratadi   ammo   u   bizga   kurinmaydi.Bunday
konstruktorlarni   standart   konstruktorlar   ham   deb   atashadi.   Bunday
konstruktorning parametrlari va tanasi yo‘q. Buni kurishingiz uchun oddiy misolni
siz uchun tayorlab quydim:
using System;
namespace HelloApp
{
public class Talaba
{
public string ismi ;
public int yoshi ;
} 
class Program
{
static void Main(string[] args)
{
Talaba Shohruh=new Talaba();
}
}
}
Kurdingizmi   qanday   aqlli   tilni   o’rganayapsiz.   Konstruktorni   asosiy   qoidalaridan
biri bu konstruktorning nomi sinf nomi bilan bir xil buladi. Konstruktorlarni asosiy
qolipi bir xil bulgani bilan ular parametrlarining turlar bilan( int, string) farq qilishi
mumkin. Talaba nomli class yaratamiz va uning ob’ekttini hosil qilamiz.
using System;
namespace Hello {
public class Talaba
{
public string ismi ;
public int yoshi ;
} 
class Program
{
static void Main(string[] args)
{
Talaba a = new Talaba();
a.ismi = "Shohruh";
a.yoshi = 24;
Console.ReadKey();
}
}
}
Talaba   ob’ektini   yaratish   uchun   new   Talaba()   ishlatiladi.   new   operator   Talaba
ob'ekti   uchun   xotiradan   joy   ajratadi.   Va   keyin   sinfda   mavjud   bulgan   xossalar
chaqirilib,   ularga   qiymatlar   berilmoqda.   a   o'zgaruvchisi   yaratilgan   ob'ektga   mos
qiymatlarni   xossalarga   qiymatlar   biriktiriladi.   Agar   biz   ularga   qiymat   bermasak
nima buladi degan savol tug’ilishi mumkin. Bu holat uchun ham C# bizga yechim
topgan   bundan   havotir   olmasak   ham   buladi.Agar   xossalarimiz   raqamli   turda
buladigan   bulsa   0   ni   oladi,   satrlilar   uchun   esa   null(yani   hech   qanday   qiymat
mavjud emas) ni oladi. Endi konstruktorlarni o’zimiz ham yaratib kuraylikchi. Shu
bilan   birga   bir   biridan   farq   qiladigan   konstruktorlani   ham   kursatib   o’tib
ketaman.Unda   keying   misolga   etibor   bilan   qarang.Yuqorida   ,   ob’ektni   ishga
tushirish uchun standart  konstruktor ishlatilgan . Biroq, biz o’zimiz konstruktorni
aniqlaymiz.
class Person {
public string name;
public int age;
public Person() { name = "Nomalum"; age = 18; } // 1-konstruktor
public Person(string n) { name = n; age = 18; } // 2 -konstruktor
public Person(string n, int a) { name = n; age = a; } // 3 -konstruktor
public void GetInfo()
{
Console.WriteLine($"Name: {name} Age: {age}");
}
}
Endi sinf 3 ta konstruktorni aniqlaydi, ularning har biri har xil parametrlarni qabul
qiladi  vas  inf  maydonlarining qiymatlarini  belgilaydi.   Endi   shu  konstruktorlardan
foydalanib kuraylikchi nima bularkan.
static void Main(string[] args)
{
Person Ali = new Person(); // 1-konstruktor chaqirilyapdi
Person Vali = new Person("Vali"); //2-konstruktor chaqirilyapdi 
Person Gani = new Person("G’ani", 25); // 3-konstruktor chaqirilyapdi 
Ali.GetInfo(); // Name: Nomalum Age: 18
Vali.GetInfo(); // Name: Vali Age: 18
Gani.GetInfo(); // Name: G’ani Age: 25
Yana bir qoidamiz bor, agar sinfda konstruktorlar yaratilgan bulsa , ulardan birini
aniq ishlatishimiz kerak ekan. Menimcha C# mehnatni qadrlaydigan til menimcha
shuncha   konstruktor   yaratganingdan   keyin   hech   bulmasa   bittasini   ishlatgin
demoqchi   shekilli.   Sizlarga   bir   yangilikni   ham   aytib   utmoqchiman   C#   9.0   dan
boshlab biz konstruktor chaqirayotganimizda new dan sung sinf nomini yozishimiz
shart emas ekan. Masalan mana bunday qilib:
Person Ali=new (); // Person Ali = new Person(); degani
Person Vali=new(“Vali”); // Person Vali = new Person("Vali");  Person G’ani =new (“G’ani”, 25); // Person G’ani = new Person("G’ani", 25);
Xulosa
Ayrim dastur ko’rsatmalari Markaziy Protsesorga ekranda qayerga nuqta qo’yishni,
bosib chiqarishni va ovoz qurilmasini ishga tushirishga buyruq beradi. Bu holatlar
ko’p marotaba va yuqori tezlikda amalga oshgani sababli inson faqatgina ovoz va
rasmlarni   anglaydi.   Ayrim   dastur   ko’rsatmalari   klaviatura   va   sichqoncha   orqali
kiritilgan ma’lumot  orqali  o’qilinad.  Bir  turga  mansub bo’lgan yagona nom  bilan
saqlanuvchi tartiblangan ma’lumotlar majmuasi massiv deyiladi.Massivlar yagona
o’zgaruvchi   bilan   kompyuter   xotirasiga   saqlanadi,   uning   elementlari   ma’lum   bir
indekslar   bilan   tartiblab   joylashtiriladi.   Massivlar   yagona   nom   bilan   bir   nechta
qiymatni   o’zida   mujassamlashtiradi,   bularga   matematikadagi   vektorlarni   misol
keltirish   mumkin.   Vektor   ham   yagona   nom   bilan   saqlanib   uning   tarkibida   bir
nechta   qiymatni   o’zida   mujassamlashadi.   Vektorning   ham   elementlari   bir   turga
mansub va tartiblangan bo’ladi.
                                 Foydalanilgan adabiyotlar
1.   Bjarne   Stroustrup.   Programming:   Principles   and   Practice   Using   C++   (2nd
Edition). Person Education, Inc. 2014. second printing, January 2015. 
2.   Harry   Hariom   Choudhary,   Bjarne   M   Stroustrup.   C++   Programming
Professional.: Sixth Best Selling Edition for Beginner's & Expert's 2014.
  3.   Bjarne   Stroustrup.The   C++   Programming   Language,   4th   Edition.   Person
Education, Inc. 2013. Third printing, April 2014. 
4. Nazirov Sh.A., Qobulov R.V., Bobojanov M.R., Raxmanov Q.S.   С   va   С ++ tili.
“Voris-nashriyot” MCHJ, Toshkent 2013. 488 b.
 5. Horstmann, Cay S. C++ for everyone / Cay S. Horstmann. Printed in the United
States of America - 2nd ed. 2010. – P. 562.

Turlarni dinamik  ta’rifi

Sotib olish
  • O'xshash dokumentlar

  • Axborot boshqarish tizimlarida bulutli texnologiyalari
  • Hamkorlikda o’qitish texnologiyasi asosida 8-sinf algebrani o’qitish metodikasi
  • Acrylic WiFI Professional v3.05770.30583 simsiz tarmoqni boshqarish va tahlil qilish
  • Photoshopda matnlar va konturlar
  • Adobe Photoshop dasturida rasmlar bilan ishlash jarayonida filtrlar va effektlardan foydalanishning ahamiyati

Xaridni tasdiqlang

Ha Yo'q

© Copyright 2019-2025. Created by Foreach.Soft

  • Balansdan chiqarish bo'yicha ko'rsatmalar
  • Biz bilan aloqa
  • Saytdan foydalanish yuriqnomasi
  • Fayl yuklash yuriqnomasi
  • Русский