logo

C++ dasturlash tilida elementar matematik funksiyalar grafiklari bilan ishlash dasturiy tizimini yaratish

Загружено в:

12.08.2023

Скачано:

0

Размер:

133.6279296875 KB
MAVZU:  C++ dasturlash tilida elementar matematik 
funksiyalar grafiklari bilan ishlash dasturiy tizimini yaratish
Reja:
.KirishⅠ
 II. Asosiy qism
I. Bob   C++ Dasturlash tilida elementar matematik funksiyalar
 1.1   C++ da funksiyalar .
 1.2     C++ da funksiya turlari  
1.3  Elementar matematik funksiyalar
II. Bob  Funksiyalar grafiklari bilan ishlash dasturiy tizimini yaratish
 2.1  Funksiya grafiklari .
 2.2  Dasturiy tizimlar
 2.3  Strukturalar massivi.
 III. Xulosa
IV. Foydalanilgan adabiyotlar.   Kirish
C++   tilini   80   yillarda   AT&T   Bell   Labs   korxonasi   ishchisi   Byarnom
Straustrup   tuzgan.  Avtorning  aytishicha,  bu  tilni   tuzishda   u  hech  qanday  qog'ozlarni
qoralamagan   va   hamma   ishni   yo'l   yo'lakay,   ketma-ketlikda   tuzib   chiqqan.   Uning
asosiy maqsadi, o'zi va do'stlari uchun qulay dasturlash tili yaratishdan iborat edi. C+
+   dasturlash   tilining   asosi   C   hisoblanadi   va   shu   tilni(C)   misolida   C++   tilini   tuzib
chiqdi.   C   dasturlash   tilini   mukammalashtirgan   eng   asosiy   narsa   bu   –   ob'yektga
mo'ljallangan dasturlashni  olib kirgani hisoblanadi. Chunki dasturlashda, tez, qulay ,
tartibli   va   ixcham   yozish   uchun   ob'yektga   mo'ljallangan   dasturlash   tillaridan
foydalanish lozim bo'ladi. Dastlabki C++ dasturlash tilidan foydalanganlar, bu albatta
Bell Labs korxonasi hodimlari hisoblanadi.
1993   yilda   bu   til   ommaga   taqdim   etildi   va   C++   nomini   oldi.   Dastlabki   C++   ga   oid
kitob   " The   C++   Programming   Language (Addison-Wesley,   1985)"   nomi   bilan
mashhur bo'ldi va bu kitob 1991 yil " Язык программирование C++ " tarjimasi bilan
rus tiliga tarjima qilindi va bu til(С++) rivojlanishi boshlanib ketdi.
ANSI-ISO (ANSI X3J16; ISO WG21/N0836)   birlashmasi 1989 yilda, birlashga holda
ish   boshladi.   Bu   korxonaning   dastlabki   ishi   C++   dasturlash   tiliga   va   uning
kutubxonasiga standart ishlab chiqishdan boshlandi. Buning uchun 1990 yildagi C++
tili asos qilib olindi.
1990   yilda   C++   standarti   ishlab   chiqildi   va   bu   standart   hozir   ANSI   C   nomi   bilan
mashxur.   Bu   til   juda   kengayib   ketdi   va   hozirgi   kunda   bu   tilning   hamma   detallarini
biladigan dasturchi bo'lmasa kerak.
C++ funksiya va ob'yektlarning boy kutubxonasiga ega. Bundan kelib chiqadiki C++
dasturlash tilini o'rganish 2 qismga bo'linadi: dastlab, C++ tili sintaksisi o'rganiladi vv
shundan   so'ng   uning   asosiy   kutubxonalari   birma-bir   ko'rib   chiqib,   yodlash   lozim
bo'ladi. Bundan ko'rinib turibdiki, bu til juda katta hajmni o'z qamroviga oladi. C++   tilining   egasi   yo'q   u   hech   kimga   tegishli   emas.   Bu   til   С   tilidan   kelib   chiqgani
uchun bosh harf   С ,   ++   esa bu tildagi qiymatni bittaga ko'tarish belgisi hisoblanadi va
bu belgi C++ dasturlash tilida paydo bo'ldi.
C++ dasturlash tili kompilyatsiya qilinadigan til hisoblanadi bu degani yozilgan kod
oldin mashina tiliga o'giriladi va keyin ishga tushiriladi.
Hozirgi   vaqtda   axborot-kommunikasiya   vositalari   barcha   turdagi   tashkilot   va
muassasalarga   shiddat   bilan   kirib   kelmoqda.   Hozirgi   davrda   axborotlarning   haddan
tashqari   ko’pligi   bu   axborotlarni   saqlashda,   qayta   ishlashda,   hamda   har   xil   turdagi
tizimlarni   yaratish,   ulardan   keng   foydalanishni   va   axborot   tizimlari   yaratishni   talab
qiladi.   O’zbekiston   Respublikasi   Prezidentining   2012   yil   21   martdagi   ―Zamonaviy
axborot-kommunikasiya   texnologiyalarini   yanada   joriy   etish   va   rivojlantirish   chora-
tadbirlari   to’g‘risida gi   PQ-1730   Qarori   hamda   ―O’zbekiston   Respublikasida‖
―Elektron   ta‘lim   milliy   tarmog‘ini   yaratish   investision   loyihasini   amalga   oshirish	
‖
chora-tadbirlari   to’g‘risida   gi   PQ-1740   Qarori   va   me‘yoriy   hujjatlar   asosida	
‖
algoritmiy   ta‘minot   ishlab   chiqish   va   joriy   etish   keng   ko’lamli   hisoblanadi.   Barcha
tashkilot   va   muassasalarda   avtomatlashtirilgan   tizimlar   yaratish   ulardan   keng
ko’lamda   foydalanish   uchun   algoritmlash   tillarini   o’rni   katta   hisoblanadi.   Axborot
tizimlari   axborotni   to’plash,   saqlash   va   qayta   ishlash   uchun,   keng   imkoniyatli
maqsadlarda   samarali   foydalanish   uchun   xizmat   qiladi.  Zamonaviy  axborotlashtirish
tizimi,   ma‘lumotlar   integratsiyasi   konsepsiyasiga   asoslangan   katta   hajmdagi
ma‘lumotlarni   saqlash   bilan   tavsiflanadi   va   ko’p   sondagi   foydalanuvchilarning   turli
xildagi   talablariga   javob   berishi   kerak   bo’ladi.   Axborot   tizimi   va   axborot
texnologiyalarining   avtomatlashtirilgan   elementlarini   qo’llash   va   avtomatlashtirish
asosida   yangi   axborot   texnologiyasini   yaratish   avtomatlashtirish   tizimlarini
loyihalashtiruvchilarning   asosiy   vazifalaridan   biri   hisoblanadi.   Avtomatlashtirilgan
tizimlarni  yaratish uchun  albatta birinchi  navbatda  muommo obektini  infologik yoki
diskretli   modelini   qurish   dolzarb   hisoblanadi.   Infologik   yoki   diskretli   modelni muommo  obektiga  qarab   algoritmlash   tillarini   qaysi  biri   asosida  yaratish  kerakligini
tanlab   olinish   kerak.   Elektron   hisoblash   mashinalarini   birinchi   avlodlari   yaratilishi
bilan   algoritmlash   tillarini   rivojlanishi   ham   boshlandi.   Avval   algoritm   tuzuvchi
mutaxassislar   eng   sodda   mashina   tilini   o’zida   ifodalovchi   kompyuter   komandalari
bilan   ishlaganlar.   Bu   komandalar   nol   va   birlardan   iborat   uzun   qatorlardan   tashkil
topgan   edi.   Keyinchalik   insonlar   uchun   tushunarli   bo’lgan   mashina   komandalarini
o’zida   saqlovchi   assembler   tili   yaratildi.   Shu   vaqtlarda   BASIC   va   COBOL   singari
yuqori   sathli   tillar   ham   paydo   bo’ldiki,   bu   tillar   yordamida   so’z   va   gaplarning
mantiqiy   konstruksiyasidan   foydalanib   algoritmlash   imkoniyati   yaratildi.   Ular
komandalarni   mashina   tiliga   interpretatorlar   va   kompilyatorlar   yordamida   o’tkazar
edi. Algoritmlash tillari yaratilishi bo’yicha uchta turga ajratiladi: -quyi darajadagi; -
o’rta darajadagi; -yo’qori darajadagi. 7 Bizga ma‘lumki, ma‘lum bir masalani yechish
uchun   buyruqlar   ketma-   ketligi   ya‘ni   algoritmni   algoritmlash   tilida   yozilishida
kamroq   komandalardan   foydalanilsa,   bunday   tillar   darajasi   yuqoriroq   hisoblanadi.
Quyi   darajadagi   algoritmlash   tillari   bevosita   kompyuter   qurilmalari   bilan   bog‘liq
bo’lib buyruqlar ularning kodlari bilan yoziladi. Bu kabi buyruqlardan tashkil topgan
algoritmlar   katta   hajmli   bo’lib,   ularni   taxrirlash   mushkul   hisoblanadi.   Dastlabki
kompyuterlar(ENIAK,   MESM   va   boshqalar)   ana   shunday   tillarda   ishlardi.   O’rta
darajadagi   algoritmlash   tillari   buyruqlarida   faqat   raqamlar   emas,   balki   insonlar
tushunadigan   bazi   so’zlar   ishlatila   boshlandi(Assemblaer).   Yuqori   darajadagi
algoritmlash   tillari   quyidagicha   bosqichlarga   bo’linadi:   Algoritmik(Basic,   Pascal,   C
va b.) Mantiqiy(Prolog, Lisp va b.) Obe‘ktga mo’ljallangan(Object Pascal, C++, Java
va   b.)   Algoritmlash   tillarida   yaratilgan   algoritmlar   mashina   tiliga   Translyatorlar
yordamida   o’tkaziladi.   Translyator(translator-tarjimon)   biror   bir   algoritmlash   tilida
yozilgan algoritmni  mashina  tiliga tarjima qiladi. Translyatorlar  ikki  turda bo’ladi:  -
Kompilyatorlar(compiler-yig'uvchi)   biror   bir   algoritmlash   tilida   yozilgan   algoritmni
mashina   tiliga   to’liq   o’qib   olib   tarjima   qiladi.   -Interpretatorlar(interpreter   —
izohlovchi, og‘zaki tarjimon) biror bir algoritmlash tilida yozilgan algoritmni mashina tiliga satrma satr tarjima qiladi. Translyatorlarni bu ikkala turi bir biridan farq qiladi.
Komplyatsiya   qilingan   algoritmlar   bir   muncha   kam   vaqt   talab   etadi,   ya‘ni   tezroq
ishlaydi, lekin interpretatsiya qilingan algoritmlarni o’zgartirish osonroq hisoblanadi.
                 1.1.  C++ da funksiyalar
Dasturlash   mobaynida   bir   xil   ifodalarni,   hisoblash   jarayonlarini   qayta   –   qayta
hisoblashga to`g`ri keladi. Dasturlash tillarida, kompyuter hotirasini va dasturchining
vaqtini tejash maqsadida,  bunday takkorlanuvchi  jarayonlarni  dasturda ajratib yozib,
unga asosiy daturdan, boshqa funksiyalardan murojaat qilish imkoniyatlari keltirilgan.
Dasturning istalgan qismidan murojaat qilib, bir necha bor ishlatish mumkin bo`lgan
operatorlar guruhiga funksiya deyiladi. C++ funksiyalar tili deyiladi. Chunki dasturda
kamida   bitta   main   funksiyasi   bo'ladi.   Asosiy   dastur,   asosiy   funksiya   deganda   aynan
manashu   main   funksiyasini   tushunamiz.   Asosiy   dasturdan   (yoki   chaqiruvchi
funksiyadan)   xech   qanday   parameter   qabul   qilib   olmaydigan   funksiyalarga,
parametrsiz funksiyalar deyiladi
Parametrsiz   funksiyaga   murojaat   qilishda   dastur   tanasida   funksiya   nomi   yoziladi.
Dasturda   funksiya   nomi   operatorlar   kabi   ishlatiladi.   Parametrsiz   funksiyada   asosiy
dasturning   barcha   global   o`zgaruvchilaridan   foydalanish   mumkin.   Global
o`zgaruvchilar   Ham   asosiy   dasturda,   ham   funksiyada   ishlatish   mumkin   bo'lgan
o`zgaruvchilar   global   o'zgaruvchilar   deyiladi.   Global   o'zgaruvchilar   asosiy   dasturda
e`lon  qilishi   kerak.   Lokal  o`zgaruvchilar  Faqat  funksiyada   ishlatish   mumkin  bo'lgan
o'zgaruvchilarga   local   o'zgaruvchilar   deyiladi.   Ular   funksiyada   e`lon   qilinadi.
Funksiyada   yana   bir   nechta   ichki   funksiyalardan   foydalanish   mumkin.   Blok   ichida
e'lon   qilingan   o'zgaruvchilar,   shu   blok   uchun   lokal   o'zgaruvchilar   hisoblanadi.   Bu
o'zgaruvchilardan   faqat   blok   ichida   foydalanish   mumkin.   Parametrli   funksiyalar
Asosiy   dasturdan   (funksiyadan)   chaqiriluvchi   funksiyaga   uzatilgan   parametrlarni
qabul   qilib   qayta   ishlovchi   funksiyalar   parametrli   funksiyalar   deyiladi.   Qiymat
parametrlar   –   asosiy   dasturdan   funksiyaga   uzatiladigan   o'zgaruvchilar   qiymatlarni qabul qilib oluvchi parametrlar. Funksiyaga murojaat qilinganida qiymat parametrlari
uchun   xotiradan   joy   ajratiladi.   Funksiya   tugaganida   qiymat   parametrlari   uchun
ajratilgan   xotira   bo'shatiladi.   Ko'rsatkich   parametrlar   -   asosiy   dasturdan   funksiyaga
uzatiladigan   o'zgaruvchilarning   xotiradagi   adresini   qabul   qilib   oluvchi   parametrlar.
Ko'rsatkich   parametrlari   ustida   bajarilgan   har   qanday   o'zgarish,   asosiy   dasturdagi
o'zgaruchilarning   xotira   adresida   sodir   bo'ladi.   (Ya'ni   asosiy   dasturdagi   o'zgaruvchi
qiymati   o'zgaradi)   Eslatma:   Qiymat   parametrlari   va   ko'rsatkich   parametrlar   toifasi,
asosiy   dasturdagi   qiymati   uzatilayotgan   o`zgaruvchilar   toifasi   bilan   bir   xil   bo`lishi
lozim.   Funksiyadan   chiqish   Ixtiyoriy   funksiyadan   chiqish   uchun   return   xizmatchi
so'zi ishlatiladi. 
2-Reja Misol 1: To'g'ri burchakli uchburchakning katetlari berilgan.
 (3, 4), (6, 8), (12, 5) bo'lgan xollar uchun uchburchak gipotenuzasini hisoblovchi 
dastur tuzilsin.
 1) Parametrli funksiya 
#include #include // funksiya prototipi float hisobla(float , float );
 int main() { float c; 
c = hisobla(3, 4);
 cout << c << endl; 
c = hisobla(6, 8); 
cout << c << endl; 
c = hisobla(12, 5); 
cout << c << endl; 
system ("pause");
 return 0; }  float hisobla(float a, float b) 
{ //lokal o'zgaruvchi float natija; natija = sqrtf(a*a + b*b); return natija;  } 
2) void toifasidagi parametrli funksiya 
#include #include // funksiya prototipi void hisobla(float , float ); 
int main() 
{ hisobla(3, 4); hisobla(6, 8); 
hisobla(12, 5); 
system ("pause"); 
return 0; }
 void hisobla(float a, float b)
 { float c; c = sqrtf(a*a + b*b); 
cout << c << endl; }  
                             1.2. C++ da funksiya turlari
Parametrsiz funksiyaning o'zi ham 2 xil bo'lishi mumkin: 1) Asosiy dasturga (yoki
chaqiruvchi funksiyaga)  natijani qaytaruvchi. 2) void turidagi  funksiya bo'lib, asosiy
dasturdan (yoki chaqiruvchi funksiyadan) xech qanday parametr qabul qilib olmaydi
xam,   asosiy   dasturga   xech   qanday   natija   qaytarmaydi   ham.   Parametrsiz   funksiyaga
murojaat   qilishda   dastur   tanasida   funksiya   nomi   yoziladi.   Dasturda   funksiya   nomi
operatorlar   kabi   ishlatiladi.   Parametrsiz   funksiyada   asosiy   dasturning   barcha   global
o`zgaruvchilaridan foydalanish mumkin. Global o`zgaruvchilar Ham asosiy dasturda,
ham   funksiyada   ishlatish   mumkin   bo'lgan   o`zgaruvchilar   global   o'zgaruvchilar
deyiladi.   Global   o'zgaruvchilar   asosiy   dasturda   e`lon   qilishi   kerak.   Lokal o`zgaruvchilar   Faqat   funksiyada   ishlatish   mumkin   bo'lgan   o'zgaruvchilarga   local
o'zgaruvchilar   deyiladi.   Ular   funksiyada   e`lon   qilinadi.   Funksiyada   yana   bir   nechta
ichki   funksiyalardan   foydalanish   mumkin.   Blok   ichida   e'lon   qilingan   o'zgaruvchilar,
shu   blok   uchun   lokal   o'zgaruvchilar   hisoblanadi.   Bu   o'zgaruvchilardan   faqat   blok
ichida   foydalanish   mumkin.   Parametrli   funksiyalar   Asosiy   dasturdan   (funksiyadan)
chaqiriluvchi   funksiyaga   uzatilgan   parametrlarni   qabul   qilib   qayta   ishlovchi
funksiyalar   parametrli   funksiyalar   deyiladi.   Qiymat   parametrlar   –   asosiy   dasturdan
funksiyaga   uzatiladigan   o'zgaruvchilar   qiymatlarni   qabul   qilib   oluvchi   parametrlar.
Funksiyaga   murojaat   qilinganida   qiymat   parametrlari   uchun   xotiradan   joy   ajratiladi.
Funksiya   tugaganida   qiymat   parametrlari   uchun   ajratilgan   xotira   bo'shatiladi.
Ko'rsatkich parametrlar - asosiy dasturdan funksiyaga uzatiladigan o'zgaruvchilarning
xotiradagi   adresini   qabul   qilib   oluvchi   parametrlar.   Ko'rsatkich   parametrlari   ustida
bajarilgan   har   qanday   o'zgarish,   asosiy   dasturdagi   o'zgaruchilarning   xotira   adresida
sodir bo'ladi. (Ya'ni asosiy dasturdagi o'zgaruvchi qiymati o'zgaradi) Eslatma: Qiymat
parametrlari   va   ko'rsatkich   parametrlar   toifasi,   asosiy   dasturdagi   qiymati
uzatilayotgan   o`zgaruvchilar   toifasi   bilan   bir   xil   bo`lishi   lozim.   S i z   k o' p   m a r t a
f un ks i y an i   u sh bu   da r s ga ch a   i s hl at i b   k el di ng i z .   m ai n( )   ha m   bi r   f u nk si ya
hi so bl an ad i .   d as t u r   i s hg a   t u sh ga n   va qt i d a   b i r i nc hi   bo 'l i b   us hb u   f u nk si ya
i s hl ay di .   Bu   s t a nd ar t   f u nk si ya   bo 'l i b   si z   ha m   s hu   k ab i   f u nk si ya l a r
ya r a t i sh i n gi z  m u m k i n .
Fu nk si ya   yar at i s h   u ch un   bi r i n ch i   f un ks i y a   q ay t a r a di ga n   t i p   yo ki   f u nk si ya
t ur i   ke yi n   no m i   v a   ( )   oc hi l a di .   qa vs   i ch i d a   si z   m a' l u m o t l ar   y a' ni
pa r a m e t r l ar n i   qa bu l   qi l a si z.
Fu nk t s i y a   en g   y uq or i   qi ym at i n i   t o pi sh   u ch un   f o yd al an i s h
m u m k i n   X   va   y   : m ax( x , y )
cout  << max( 13 ,  15 );
Va   f un kt si ya   x   va   y   ni ng   e ng   p as t   q i y m a t i ni   t op i s h   u ch un   i sh l a t i l i sh i
m u m k i n   : m i n( x , y ) cout  << min( 5 ,  10 );
C ++   <cmath>   Kutubxonasi.
sq rt ( Kv ad r a t   i l di z) ,   ro und ( s on ni   a yl an t i r ad i )   v a   l o g   ( na t u r a l
l o gar i f m )   ka bi   b os hq a   f un kt si ya l a r n i     < cm at h>   ku t u bx on as i d a   t op i s h
m u m k i n   :
# include   <iostream>
# include   <cmath>
using   namespace  std;
int   main ()   {
    cout <<  sqrt ( 64 ) <<  "\n" ;
    cout <<  round ( 2.6 ) <<  "\n" ;
    cout <<  log ( 2 ) <<  "\n" ;
    return   0 ;
}
8
3
0.693147
Boshqa matematik vazifalar .
Bo sh qa   M at h   f un kt s i y al ar i   (   <c m a t h > ku t u bx on as i d a)   r o' yx at i n i   qu yi da gi
j a dv al da   t o pi s h  m um ki n: C++   da   funksiya   unga   murojaat   qilingan   funksiyadan   oldin   aniqlangan   bo’lishi
kerak.   Agar kub hajmini topishdagi        volume_cube   funksiyasi main funksiyasidan dan
keyin yozilgan bo’lsa hatolik bo’ladi.
Funksiya   prototipi   deb   funksiyaning   tanasini   yozmasdan   uni   e’lon   qilishga   aytiladi.
Prototip   funksiya   qaytaradigan   tipi,   nomi   va   parametrlar   ro’yxatidan   iborat   bo’ladi.
Funksiya tanasini undan so’ng yozishimiz mumkin.
#include
#include
using   namespace   std;
double   volume_cube ( double   r); //funksiya   prototipi
int   main () {
double   r1, r2;
cin>>r1>>r2;
double   v1 = volume_cube(r1);
double   v2 = volume_cube(r2);
cout<<"v1="<<v1<< endl<<"v2="<
}
double   volume_cube(double   r) { return   4 / 3.0 * M_PI * r * r * r;
}
Funksiya prototipi nuqtali vergul bilan yakunlanadi.
Blok sxema
n! ni hisoblaydigan funksiya tuzamiz.   n !=1•2•3•…• n ;
A sosiy dasturda
orqali qism dasturga(fumsiyaga) murojaat qilamiz.
C++   da   dasturlashning   asosiy   bloklaridan   biri   funksiyalardir.   Funksiyalar   dasturchi
ishini   juda   yengillashtiradi.   Funksiyalar   yordamida   programma   modullashadi , qismlarga bo'linadi. Bu esa keyinchalik dasturni rivojlantirishni osonlashtiradi. Bunda
dasturchi yozgan funksiyalar C++ ning standart kutubhonasi va boshqa kutubhonalar
ichidagi   funksiyalar   bilan   birlashtiriladi.   Bu   esa   ishni   osonlashtiradi.   Ko'p   holda
dasturda takroran bajariladigan amalni funksiya sifatida yozish va kerakli joyda ushbu
funksiyani   chaqirish   mumkin.   Dastur   yozilish   davrida   hatolarni   topishni
yengillashtiradi.
Bu funksiya   void   (bo’sh, hech narsasiz) tipidagi qiymatni qaytaradi. Boshqacha qilib
aytganda qaytargan qiymati bo’sh to’plamdir. Lekin funksiya hech narsa qaytarmaydi
deya   olmaymiz.   Chunki   hech   narsa   qaytarmaydigan   mahsus   funksiyalar   ham   bor.
Ularning qaytish qiymati belgilanadigan joyga hech narsa yozilmaydi.
Biz   unday   funksiyalarni   keyinroq   ko’rib   chiqamiz.   Bu   yerda   bir   nuqta   shuki,   agar
funksiya   mahsus   bo’lmasa,   lekin   oldida   qaytish   qiymati   tipi   ko’rsatilmagan   bo'lsa,
qaytish qiymati   int   tipiga ega deb qabul qilinadi.
void   qaytish   tipli   funksiyalardan   chiqish   uchun   return;   deb   yozsak   yetarlidir.
Yoki   return   ni qoldirib ketsak ham bo’ladi.
Funksiyaning qismlari bajaradan vazifasiga ko’ra turlicha nomlanadi. Yuqorida korib
chiqqanimiz   funksiya   aniqlanishi   (function   definition)   deyiladi ,   chunki   biz   bunda
funksiyaning   bajaradigan   amallarini   funksiya   nomidan   keyin,   {}   qavslar   ichida
aniqlab   yozib   chiqyapmiz.   Funksiya   aniqlanishida   {}   qavslardan   oldin   nuqta-vergul
(;)   qo'yish   hatodir.   Bundan   tashqari   funksiya   e’loni,   prototipi   yoki   deklaratsiyasi
(function prototype) tushunchasi qo'llaniladi.
Bunda funksiyaning nomidan keyin hamon nuqta-vergul qo'yiladi, funksiya tanasi esa
berilmaydi.   C++   da   funksiya   qo’llanilishidan   oldin   uning   aniqlanishi   yoki   hech
bo'lmaganda   e’loni   kompilyatorga   uchragan   bo'lishi   kerak.   Agar   funksiya   e’loni
boshqa funksiyalar aniqlanishidan tashqarida berilgan bo'lsa, uning kuchi ushbu fayl
ohirigacha boradi. Biror bir funksiya ichida berilgan bo'lsa kuchi faqat o'cha funksiya ichida   tarqaladi.   E’lon   fayllarda   aynan   shu   funksiya   e’lonlari   berilgan   bo’ladi.
Funksiya e’loni va funksiya aniqlanishi bir-biriga mos tushishi kerak.
Funksiya   e’lonlarda   kirish   parametrlarining   faqat   tipi   yozish   kifoya,   huddi   square()
funksiyasidek. Yoki kiruvchi parametrlarning nomi ham berilishi mumkin, bu nomlar
kompilyator   tarafidan   etiborga   olinmaydi,   biroq   dasturning   o'qilishini   ancha
osonlashtiradi.
Bulardan   tashqari   C++   da   funksiya   imzosi   (function   signature)   tushunchasi   bor.
Funksiya   imzosiga   funksiya   nomi,   kiruvchi   parametrlar   tipi ,   soni,   ketma-ketligi
kiradi. Funksiyadan qaytuvchi qiymat tipi imzoga kirmaydi.
                                 1.3.Elementar matematik funksiyalar
Dasturlash   mobaynida   bir   xil   ifodalarni,   hisoblash   jarayonlarini   qayta   –   qayta
hisoblashga to`g`ri keladi. Dasturlash tillarida, kompyuter hotirasini va dasturchining
vaqtini tejash maqsadida,  bunday takkorlanuvchi  jarayonlarni  dasturda ajratib yozib,
unga   asosiy   daturdan,   boshqa   funksiyalardan   murojaat   qilish   imkoniyatlari  
keltirilgan.
C++   funksiyalar   tili   deyiladi.   Chunki   dasturda   kamida   bitta  main   funksiyasi   bo'ladi.
Asosiy   dastur,   asosiy   funksiya   deganda   aynan   manashu   main   funksiyasini
tushunamiz.
Asosiy dasturdan (yoki chaqiruvchi funksiyadan) xech qanday parameter qabul qilib
olmaydigan   funksiyalarga,     parametrsiz   funksiyalar   deyiladi.
Parametrsiz     funksiyaning     o'zi   ham   2   xil     bo'lishi   mumkin:
1)   Asosiy   dasturga   (yoki   chaqiruvchi     funksiyaga)     natijani   qaytaruvchi.
2) void turidagi funksiya bo'lib, asosiy dasturdan (yoki chaqiruvchi funksiyadan) xech
qanday   parametr   qabul   qilib   olmaydi   xam,   asosiy   dasturga   xech   qanday   natija  
qaytarmaydi    ham. Parametrsiz funksiyaga murojaat qilishda dastur tanasida funksiya
nomi   yoziladi.   Dasturda   funksiya   nomi   operatorlar   kabi   ishlatiladi. Global   o'zgaruvchilar   asosiy   dasturda   e`lon   qilishi   kerak.
  Ular   funksiyada   e`lon   qilinadi.   Funksiyada   yana   bir   nechta   ichki   funksiyalardan    
foydalanish   mumkin.
Blok   ichida   e'lon   qilingan   o'zgaruvchilar,   shu   blok   uchun   lokal   o'zgaruvchilar
hisoblanadi.   Bu   o'zgaruvchilardan     faqat   blok   ichida   foydalanish   mumkin.
Qiymat   parametrlar   –   asosiy   dasturdan   funksiyaga   uzatiladigan   o'zgaruvchilar
qiymatlarni qabul qilib oluvchi parametrlar. Funksiyaga murojaat qilinganida qiymat
parametrlari uchun xotiradan joy ajratiladi. Funksiya tugaganida qiymat parametrlari
uchun   ajratilgan     xotira     bo'shatiladi.
Ko'rsatkich   parametrlar   -     asosiy   dasturdan   funksiyaga   uzatiladigan
o'zgaruvchilarning   xotiradagi   adresini   qabul   qilib   oluvchi   parametrlar.
Ko'rsatkich   parametrlari   ustida   bajarilgan   har   qanday   o'zgarish,   asosiy   dasturdagi
o'zgaruchilarning   xotira   adresida   sodir   bo'ladiEslatma:   Qiymat   parametrlari   va
ko'rsatkich   parametrlar   toifasi,   asosiy   dasturdagi   qiymati     uzatilayotgan  
o`zgaruvchilar    toifasi bilan bir xil    bo`lishi lozim.
Misol   1 :   To'g'ri   burchakli   uchburchakning   katetlari   berilgan.   (3,   4),   (6,   8),   (12,   5)
bo'lgan   xollar     uchun   uchburchak   gipotenuzasini     hisoblovchi   dastur   tuzilsin.
1) Parametrli funksiya
#include <iostream.h>
#include <math.h>
// funksiya prototipi
float hisobla(float , float );
int main()
{
float c;
c = hisobla(3, 4);
cout << c << endl; c = hisobla(6, 8);
cout << c << endl;
c = hisobla(12, 5);
cout << c << endl;
system ("pause");
return 0;
}
float hisobla(float a, float b)
{
//lokal o'zgaruvchi
float natija;
natija = sqrtf(a*a + b*b);
return natija;
}
2) void toifasidagi parametrli funksiya
#include <iostream.h>
#include <math.h>
// funksiya prototipi
void hisobla(float , float );
int main()
{
hisobla(3, 4);
hisobla(6, 8);
hisobla(12, 5);
system ("pause");
return 0;
} void hisobla(float a, float b)
{
float c;
c = sqrtf(a*a + b*b);
cout << c << endl;
}
Misol 2:   Global va lokal o'zgaruvchilarga murojaatni    o'rganish
#include <iostream.h>
int x = 5; // global o'zgaruvchi
int main()
{
int x = 9; // lokal o'zgaruvchi
std::cout << "lokal    x=" <<      x << std::endl;
std::cout << "global x=" << ::x << std::endl;
system ("pause");
return 0;
}
Misol 3:   Kiritilgan    n sonini 3 - darajasini hisoblovchi funksiya    tuzilsin
#include <iostream.h>
void kub (int *);
int main()
{
int n;
cout << "n="; cin >> n;
kub (&n);
cout << "n ning qiymati =" << n << endl; system ("pause");
return 0;
}
void kub (int *nPtr)
{
*nPtr = *nPtr * *nPtr * *nPtr;
}
Misol 4:   Ikkita son yig'indisini    funksiya orqali hisoblovchi dastur tuzilsin
#include <iostream.h>
// funksiya prototipi
int    sum(int , int);
void sum(int , int, int *);
int    sum(int *, int *);
void sum(int *, int *, int *);
int main()
{
int a, b, c;
cout << "a="; cin >> a;
cout << "b="; cin >> b;
c = sum(a, b);
cout << "1-sul natijasi=" << c << endl;
sum(a, b, &c);
cout << "2-sul natijasi=" << c << endl;
c = sum(&a, &b);
cout << "3-usul natijasi=" << c << endl;
sum(&a, &b, &c);
cout << "4-usul natijasi=" << c << endl; system ("pause");
return 0;
}
// 1 - usul
int sum(int son1, int son2)
{
int natija;
natija = son1 + son2;
return natija;
}
// 2 - usul
void sum(int son1, int son2,int *natija)
{
*natija = son1 + son2;
}
// 3 - usul
int sum(int *son1, int *son2)
{
int natija;
natija = *son1 + *son2;
return natija;
}
// 4 - usul
void sum(int *son1, int *son2,int *natija)
{
*natija = *son1 + *son2;
} Standart kutubhonaning matematik funksiyalari ko’pgina amallarni bajarishga imkon
beradi.   Biz   bu   kutubhona   misolida   funksiyalar   bilan   ishlashni   ko’rib   chiqamiz.
Masalan bizning dasturimizda quyidagi satr bor bo'lsin: double = k; int m = 123; k =
sin(m); Kompilyator ushbu satrni ko'rganida, standart kutubhonadan sin funksiyasini
chaqiradi.   Kirish   qiymati   sifatida   m   ni   berdik.   Javob,   ya’ni   funksiyadan   qaytgan
qiymat   k   ga   berildi.   Funksiya   agumentlari   o’zgarmas   sonlar   (const),   o'zgaruvchilar,
ifodalar   va   boshqa   mos   keluvchi   qiymat   qaytaradigan   funksiyalar   bo'lishi   mumkin.
Masalan: int g = 49, k = 100; cout << "4900 ning ildizi -> "<< sqrt( g * k ); Ekranda:
4900   ning   ildizi   ->   70;   Matematik   funksiyalar   aksariyat   hollarda   double   tipidagi
qiymat   qaytarishadi.   Kiruvchi   argumentning   tipi   sifatida   esa   double   ga   keltirilishi
mumkin   bo’lgan   tip   beriladi.   Bu   funksiyalarni   ishlatish   uchun   math.h   (yangi
ko'rinishda   cmath)   e’lon   faylini   include   bilan   asosiy   dastur   tanasiga   kiritish   kerak.
Quyida   matematik   funksiyalar   kutubhonasining   bazi   bir   a'zolarini   beraylik.   x   va   y
o'zgaruvchilari double tipiga ega. Matematik funksiyalar Funksiya Aniqlanishi Misol
ceil(x)   x   ni   x   dan   katta   yoki   unga   teng   b-n   eng   kichik   butun   songacha   yahlitlaydi
ceil(12.6)   =   13.0   ceil(-2.4)   =   -2.0   cos(x)   x   ning   trigonometrik   kosinusi   (x   radianda)
cos(0.0)   =   1.0   exp(x)   e   ning   x   chi   darajasi   (eskponetsial   f-ya)   exp(1.0)   =   2.71828
exp(2.0) = 7.38906 fabs(x) x ning absolut qiymati x>0 => abs(x) = x x=0 => abs(x) =
0.0   x   abs(x)   =   -x   floor(x)   x   ni   x   dan   kichik   bo'lgan   eng   katta   butun   songacha
yahlitlaydi floor(4.8) = 4.0 floor(-15.9) = -16.0 fmod(x,y) x/y ning qoldig'ini kasr son
tipida   beradi   fmod(7.3,1.7)   =   0.5   log(x)   x   ning   natural   lagorifmi   (e   asosiga   ko'ra)
log(2.718282)=   1.0   log10(x)   x   ning   10   asosiga   ko'ra   lagorifmi   log10(1000.0)=3.0
pow(x,y) x ning y chi darajasini beradi pow(3,4)= 81.0 pow(16,0.25) = 2 sin(x) x ning
trigonometrik   sinusi   (x   radianda)   sin(0.0)=   0.0   sqrt(x)   x   ning   kvadrat   ildizi
sqrt(625.0)=  25.0  tan(x)  x  ning  trigonometrik  tangensi   (x  radianda)   tan(0.0)  =  0  4.3
Algoritm   kutubxonasi   funksiyalari   Hаr   bir   funksiya   –   funksiyalаr   shаblоni   yoki
funksiyalаr shаblоni to’plаmi yordаmidа ifоdаlаnаdi. SHundаy qilib, funksiya hаr хil
tipdаgi   qiymаtlаrgа   egа   bo’lgаn   hаr   хil   kоntеynеrlаr   bilаn   ishlаy   оlаdi.   Bаrchа funksiyalаrni   аrgumеntlаri   (begin,   end)   yarim   оrаliqlаr   bo’lаdi.     O’zgаrtirmаydigаn
funksiyalаr 
1. Оrаliqdаgi elеmеntlаrni o’zgаrtirmаydigаn funksiya. for_earch() оrаliqning хаr bir
elеmеnti   uchun   оpеrаtsiyalаrni   bаjаrаdi   find()   qiymаtni   оrаliqdаgi   birinchi   kirishini
tоpаdi   find_if()   оrаliqdа   prеdikаtgа   birinchi   mоslаshuvini   tоpаdi   count()   qiymаtni
kеtmа-kеtlikkа   kirishini   хisоblаydi   count_if()   оrаliqdа   prеdikаtni   bаjаrilishini
хisоblаydi min_element() оrаliqdаgi eng kichik qiymаt max_element() оrаliqdаgi eng
kаttа qiymаt 
2.  Оrаliqdаgi   elеmеntlаrni  bоshqа  оrаliqgа  nusхаsini   оlib  o’tish   funksiyalаri.  copy()
birinchi   elеmеntdаn   bоshlаb   оrаliqni   nusхаsini   оlаdi   copy_bacwards()   охirgi
elеmеntdаn   bоshlаb   оrаliqni   nusхаsini   оlаdi   replace_copy()   ko’rsаtilgаn   qiymаtgа
egаbo’lgаn   elеmеntlаrni   аlmаshtirib   nusхаsini   оlаdi.   replace_copy_if()   prеdikаtni
bаjаrish   jаrаyonidа   elеmеntlаrni   аlmаshtirgаn   хоldа   оrаliqni   nusхаsini   оlаdi
remove_copy()   ko’rsаtilgаn   qiymаtgа   egа   bo’lgаn   elеmеntlаrni   o’chirgаn   хоldа
оrаliqni nusхаsini оlаdi remove_copy_if() prеdikаtni bаjаrish jаrаyonidа elеmеntlаrni
o’chirgаn   хоldа   оrаliqni   nusхаsini   оlаdi   unique_copy()   tеng   bo’lgаn   qоshni
elеmеntlаrni   o’chirgаn   хоldа   оrаliqni   nusхаsini   оlаdi   rotate_copy()   nusхаsini   оlish
jаrаyonidа elеmеntlаrni sikl bo’yichа surаdi 
3. ikkitа оrаliqni sоlishtirish funksiyalаri search() оrаliqni birinchi kiritilishini tоpаdi
find_end() оrаliqni охirgi kiritilishini tоpаdi equal ikkitа оrаliqni tеngligini tеkshirаdi
mismatch   ikkitа   оrаliqdаgi   fаrqlаnаdigаn   birinchi   elеmеntni   qаytаrаdi
lexicographical_compare() ikkitа оrаliqni lеksikоgrаfik sоlishtirilishi 
4. Sаrаlаngаn оrаliqdа tоpish funksiyalаr lower_bound() sаrаlаngаn оrаliqdа qiymаtni
birinchi kirishini tоpаdi upper_bound() ko’rsаtilgаn qiymаtdаn kаttа bo’lgаn birinchi
elеmеntni   tоpаdi   binary_search()   sаrаlаngаn   оrаliqdа   ko’rsаtilgаn   elеmеnt
mаvjudligini аniqlаydi  5.   ikkitа   sаrаlаgаn   оrаliqni   sоlishtirish   funksiyai   includes()   bittа   оrаliqni   ikkinchi
оrаliqgа tеgishliligini (kirishini) tеkshirish. 
6.   ikkitа   sаrаlаngаn   оrаliq   ustidаgi   funksiyalаr   set_union()   оrаliqlаrni   birlаshtirish
set_intersection()   оrаliqlаrni   o’zаrо   kеsishi   set_difference()   оrаliqlаrni   аyirmаsi
set_symmetric_difference()   оrаtiqlаrni   simmеtrik   аyirmаsi   merge()   ikkitа   оrаliqni
birlаshtirish O’zgаrtiruvchi funksiyalаr 
1.   Оrаliqdа   elеmеntlаrni   аlmаshtirish   funksiyalаri     ko’rsаtilgаn   qiymаtdаgi   bаrchа
elеmеntlаrni   аlmаshtirаdi   replace()   ko’rsаtilgаn   qiymаtli   elеmеntlаrni   аlmаshtirаdi
replace_if() prеdikаt bаjаrilgаndа elеmеntlаrni аlmаshtirаdi 
2.   Оrаliqdа   elеmеntlаrni   o’chirish   funksiyalаri   remove()   ko’rsаtilgаn   qiymаtdаgi
bаrchа   elеmеntlаrni   o’chirаdi   remove_if()   prеdikаt   bаjаrilgаndа   elеmеntlаrni
o’chirаdi   unique()   tеng   bo’lgаn   qo’shni   elеmеntlаrni   o’chirаdi   3.   Оrаliqdа
elеmеntlаrni   jоyini   аlmаshtirish   funksiyalаri   reverse()   elеmеntlаrni   kеtmа-kеtlik
tаrtibini tеskаrisigа аlmаshtirаdi rotate() sikl bo’yichа elеmеntlаrni siljitаdi partition()
elеmеntlаr tаrtibini o’zgаrtirаdi, bundа kritеriyagа jаvоb bеrаdigаn elеmеntlаr оldidа
bo’lаdi partition_stable() partition() gа o’хshаsh, lеkin kritеriyagа jаvоb bеrаdigаn vа
jаvоb   bеrmаydigаn   elеmеntlаrni   kеtmа-kеtlik   tаrtibini   sаqlаydi   next_permutation()
lеksikоgrаfik tаrtibdаgi kеyingi аlmаshuv prev_permutation() l еksikоgrаfik tаrtibdаgi
оldingi   аlmаshuv   .   Оrаliqdаgi   elеmеntlаrni   sаrаlаsh   funksiyalаri.   sort()   оrаliqni
sаrаlаydi   partial_sort()   оrаliqning   qismini   sаrаlаydi   stable_sort()   tеng   elеmеntlаrni
kеtmа-kеtlik   tаrtibini   sаqlаgаn   хоldа   оrаliqni   sаrаlаydi   .   ikkitа   оrаliqlаr   uchun
o’zgаrituvchi   funksiyalаr   transform()   elеmеntlаrni   mоdifikаtsiyalаydi   (vа   nusхаsini
оlаdi), хаmdа ikkitа оrаliqdаgi elеmеntlаrni birlаshtirаdi swap_ranges ikkitа оrаliqni
jоyini   аlmаshtirаdi   .   Intеrvаl   uchun   sоnli   funksiyalаr.   elеmеntlаrning   bаrchа
qiymаtlаrini birlаshtirаdi (yig’indini, ko’pаytmаni vа х.k. хisоblаydi) inner_product()
ikkitа оrаliqdаgi bаrchа elеmеntlаrni birlаshtirish (skаlyar ko’pаytmаsini vа х.k.lаrni хisоblаydi)   adjacent_difference()   хаr   bir   elеmеntni   uni   оldingi   qiymаti   bilаn
birlаshtirish   (аyirmаsi   vа   х.k.lаrni   хisоblаydi.)   partial_sum()   хаr   bir   elеmеntni
ulаrning   оldingi   qiymаtlаri   bilаn   birlаshtirаdi   (   bаrchа   хususiy   yig’indilаrni   vа   х.k.
хisоblаydi)   Bu   qismda   dasturdagi   ma’lumot   strukturalari   bilan   tanishishni
boshlaymiz.   Dasturda   ikki   asosiy   tur   ma'lumot   strukturalari   mavjuddir.   Birinchisi
statik,   ikkinchisi   dinamikdir.   Statik   deganimizda   hotirada   egallagan   joyi   o’zgarmas,
dastur   boshida   beriladigan   strukturalarni   nazarda   tutamiz.   Dinamik   ma’lumot   tiplari
dastur   davomida   o’z   hajmini,   egallagan   hotirasini   o’zgartirishi   mumkin.   Agar
struktura   bir   hil   kattalikdagi   tiplardan   tuzilgan   bo'lsa,   uning   nomi   massiv   (array)
deyiladi.   Massivlar   dasturlashda   eng   ko'p   qo'laniladigan   ma’lumot   tiplaridir.
Massivlar   hotirada   ketma-ket   joylashgan,   bir   tipdagi   o'zgaruvchilar   guruhidir.   70
Ko’rib   turganimizdek,   elementga   murojaat   qilish   uchun   massiv   nomi   va   []   qavslar
ichida   element   indeksi   yoziladi.   Bu   yerda   birinchi   element   qiymati   4,   ikkinchi
element   -   1   nomerli   indeksda   -44   qiymatlari   bor   ekan.   Ohirgi   element   indeksi   n-1
bo'ladi (n - massiv elementlari soni). [] qavslar ichidagi indeks butun son yoki butun
songa olib keluvchi ifoda bo'lmog'i lozim. Masalan: int k = 4, l = 2; m[ k-l ] = 77; //
m[2] = 77 m[3]  *= 2;  // m[3]  = 46 double d = m[0]  * 6;  //  d = 24 cout  << m[1];  //
Ekranda:   -44   Massivlarni   ishlatish   uchun   ularni   e’lon   qilish   va   kerak   bo'lsa   massiv
elementlarini   initsalizatsiya   qilish   kerak.   Massiv   e’lon   qilinganda   kompilyator
elementlar   soniga   teng   hajmda   hotira   ajratadi.   Masalan   yuqorida   qo’llanilgan   char
tipidagi   m   massivini   e’lon   qilaylik.   char   m[4];   Bu   yerdagi   4   soni   massivdagi
elementlar   miqdorini   bildiradi.   Bir   necha   massivni   e'londa   bersak   ham   bo'ladi:   int
m1[4], m2[99], k, l = 0; Massiv elementlari dastur davomida initsalizatsiya qilishimiz
mumkin,  yoki  boshlang’ich   qiymatlarni  e’lon  vaqtida,  {}  qavslar   ichida  ham   bersak
bo’ladi. {} qavslardagagi qiymatlar massiv initsalizaytsiya ro’yhati deyiladi. int n[5]
= {3, 5, -33, 5, 90}; Yuqorida birinchi elementning qiymati 3, ikkinchiniki 5 ... ohirgi
beshinchi element  qiymati esa 90 bo’ldi. Misol:  double array[10] = {0.0, 0.4, 3.55};
Bu yerdagi massiv tipi double bo'ldi. Ushbu massiv 10 ta elementdan iboratdir. 71 {} qavslar ichida esa faqat boshlangich uchta element qiymatlari berildi. Bunday holda,
qolgan   elementlar   avtomatik   tarzda   nolga   tenglashtiriladi.   Bu   yerda   aytib   o'tishimiz
kerakki, {} qavslar ichida berilgan boshlangish qiymatlar soni massivdagi elementlar
sonidan katta bo'lsa, sintaksis hatosi vujudga keladi. Masalan: char k[3] = {3, 4, 6, -
66,   34,   90};   //   Hato!   Uch   elementdan   iborat   massivga   6   dona   boshlangich   qiymat
berilyapti,   bu   hatodir.   Boshqa   misolni   ko'rib   chiqaylik:   int   w[]   =   {3,   7,   90,   78};   w
nomli   massiv   e’lon   qilindi,   lekin   []   qavslar   ichida   massivdagi   elementlar   soni
berilmadi.   Bunday   holda   necha   elementga   joy   ajratishni   kompilyator   {}   qavslar
ichidagi boshlangich qiymatlar miqdoriga qarab biladi. Demak, yuqoridagi misolda w
massivimiz   4   dona   elementdan   iborat   bo'ladi.   E’lon   davridagi   massiv   initsalizatsiya
ro'yhati   dastur   ijrosi   vaqtidagi   initsalizatsiyadan   ko'ra   tezroq   ishlaydigan   mashina
kodini vujudga keltiradi. 
                           2.1.Funksiya grafiklari
Grafik ma'lumotlar strukturasi bo'lib, quyidagi ikkita komponentdan iborat:
1. Cho'qqilarning chekli to'plami tugunlar deb ham ataladi.
2.   (u,   v)   ko'rinishdagi   tartiblangan   juftlikning   chekli   to'plami   chekka   deb   ataladi.
Juftlik tartiblangan, chunki (u, v) yo'naltirilgan grafik (di-graf) holatida (v, u) bilan bir
xil emas. Shakl juftligi (u, v) cho'qqi u dan v cho'qqigacha chekka borligini bildiradi.
Qirralarda og'irlik/qiymat/narx bo'lishi mumkin.
Grafiklar   ko'plab   real   hayot   ilovalarini   ko'rsatish   uchun   ishlatiladi:   Grafiklar
tarmoqlarni  ifodalash  uchun  ishlatiladi.  Tarmoqlar  shahar   yoki  telefon  tarmog'i   yoki
elektron tarmoqdagi yo'llarni o'z ichiga olishi mumkin. Grafiklar linkedIn, Facebook
kabi ijtimoiy tarmoqlarda ham qo'llaniladi. Masalan, Facebook-da har bir shaxs tepa
(yoki tugun) bilan ifodalanadi. Har bir tugun tuzilma bo'lib, shaxs identifikatori, ismi,
jinsi   va   mahalliy   til   kabi   ma'lumotlarni   o'z   ichiga   oladi.   Grafikning   qo'shimcha
ilovalari uchun buni ko'ring. Quyida 5 ta burchakli yo'naltirilmagan grafik misoli keltirilgan.
 
Quyidagi ikkitasi grafikning eng ko'p ishlatiladigan tasvirlari.
1. Qo‘shnilik matritsasi
2. Qo'shnilar ro'yxati
Insidans   matritsasi   va   Insidans   List   kabi   boshqa   ko'rinishlar   ham   mavjud.   Grafik
tasvirni   tanlash   vaziyatga   xosdir.   Bu   butunlay   bajariladigan   operatsiyalar   turiga   va
foydalanish qulayligiga bog'liq.
Qo'shnilik matritsasi:
Qo'shnilik   matritsasi   -   bu   V   x   V   o'lchamdagi   2D   massiv,   bu   erda   V   -   grafikdagi
cho'qqilar   soni.   2D   massiv   adj[][]   bo‘lsin,   slot   adj[i][j]   =   1   i   cho‘qqidan   j
cho‘qqigacha   chekka   borligini   bildiradi.   Yo'naltirilmagan   grafik   uchun   qo'shnilik
matritsasi   har   doim   simmetrikdir.   Qo'shnilik   matritsasi   vaznli   grafiklarni   ko'rsatish
uchun ham ishlatiladi. Agar adj[i][j] = w bo'lsa, u holda i cho'qqidan j cho'qqigacha w
og'irlikdagi chekka mavjud.
Yuqoridagi misol grafik uchun qo'shnilik matritsasi :   Taroziga   soling:   vakillikni   amalga   oshirish   va
kuzatish   osonroq.   Chetni   olib   tashlash   O   (1)   vaqtni   oladi.   “u”   cho‘qqisidan   “v”
cho‘qqisiga chekka bor-yo‘qligi kabi so‘rovlar samarali va O(1) ni bajarish mumkin.
Kamchiliklari:   O(V^2)   ko'proq   joy   sarflaydi.   Grafik   siyrak   bo'lsa   ham   (kamroq
chekkalarni   o'z   ichiga   oladi),   u   bir   xil   joyni   egallaydi.   Cho'qqi   qo'shilishi   O(V   ^   2)
vaqtidir.  Bir  cho'qqining  barcha  qo'shnilarini  hisoblash   O (V)  vaqtni   oladi  (samarali
emas).
Iltimos, qo'shnilik matritsasining Python ilovasi namunasi uchun buni ko'ring.
Qo'shni matritsa uchun kirishni amalga oshirish
#include <iostream>
using   namespace   std;
 
int   main()
{
        // n is the number of vertices         // m is the number of edges
        int   n, m;
        cin >> n >> m ;
        int   adjMat[n + 1][n + 1];
        for ( int   i = 0; i < m; i++){
                int   u , v ;
                cin >> u >> v ;
                adjMat[u][v] = 1 ;
                    adjMat[v][u] = 1 ;
        }
         
         
        return   0;
}
Qo'shnilar ro'yxati:
Ro'yxatlar   massivi   ishlatiladi.   Massivning   o'lchami   uchlari   soniga   teng.   Massiv   []
massiv   bo‘lsin.   Kirish   massivi[i]   i-chi   cho'qqiga   qo'shni   cho'qqilar   ro'yxatini
ifodalaydi.   Bu   tasvirdan   vaznli   grafikni   ifodalash   uchun   ham   foydalanish   mumkin.
Qirralarning   og'irliklari   juftliklar   ro'yxati   sifatida   ifodalanishi   mumkin.   Quyida
yuqoridagi grafikning qo'shnilik ro'yxati ko'rsatilgan . E'tibor bering, quyida keltirilgan dasturda biz bog'langan ro'yxat o'rniga qo'shni 
ro'yxatlarni ko'rsatish uchun dinamik massivlardan (Java'da C++/ArrayList'dagi 
vektor) foydalanamiz. Vektorni amalga oshirish kesh qulayligining afzalliklariga ega.
// A simple representation of graph using STL
#include <bits/stdc++.h>
using   namespace   std;
 
// A utility function to add an edge in an
// undirected graph.
void   addEdge(vector< int > adj[],  int   u,  int   v)
{
        adj[u].push_back(v);
        adj[v].push_back(u);
}
 
// A utility function to print the adjacency list
// representation of graph
void   printGraph(vector< int > adj[],  int   V)
{
        for   ( int   v = 0; v < V; ++v) {
                cout <<  "\n Adjacency list of vertex "   << v
                          <<  "\n head " ;
                for   ( auto   x : adj[v])
                        cout <<  "-> "   << x;
                printf ( "\n" );
        }
}
int   main()
{
        int   V = 5;
        vector< int > adj[V];
        addEdge(adj, 0, 1);
        addEdge(adj, 0, 4);         addEdge(adj, 1, 2);
        addEdge(adj, 1, 3);
        addEdge(adj, 1, 4);
        addEdge(adj, 2, 3);
        addEdge(adj, 3, 4);
        printGraph(adj, V);
        return   0;
}
Taroziga   soling:   joyni   tejaydi   O(|V|+|E|)   .   Eng   yomon   holatda,   grafikda   C(V,   2)
chekka  soni   bo'lishi   mumkin,  shuning  uchun  O(V  ^  2)  bo'sh  joy  sarflanadi.  Cho'qqi
qo'shish osonroq. Bir cho'qqining barcha qo'shnilarini hisoblash optimal vaqtni oladi.
Kamchiliklari:   U   cho'qqidan   v   cho'qqigacha   chekka   bor-yo'qligi   kabi   so'rovlar
samarali emas va O(V) ni bajarish mumkin.
  Hayotiy   masalalarda   grafiklar   siyrak   (|E|   <<|V|2).   Shuning   uchun   qo'shni   ro'yxatlar
Ma'lumotlar   strukturasi   odatda   grafiklarni   saqlash   uchun   ishlatiladi.   Qo'shnilik
matritsasi   bunday   algoritmlar   uchun   vaqtga   bog'liq   murakkablikni   (|V|2)   amalga
oshiradi.
                                  2.2.Dasturiy tizimlar
texnikasi uchun yaratilgan barcha dastiriy ta'minotlarda vaqt o'tishi bilan eskirish yuz
berishini   ta'kidlash   kerak.   Avvalgi   dasturiy   ta'minotlar   -   operatsion   tizim,
translyatorlar,   amaliy   dasturlar   paketIari   hozirgi   kunga   kelib   ma'lum   miqdorda
o'zgardi.   DT   avlodlari,   operatsion   tizim   yangilanib   borilmoqda,   hatto   mayda
dasturlaming ham   bir   qancha  turlari   yaratildi.  Ular   ko'payib  borishi  bilan  dastuming
imkoniyatlari, hajmi, qulayliklari oshirilib borildi. Dasturlarga bo'lgan talablar tez va
jadal   oshib   bormoqda.   Kecha   o'rnatilgan   dastur   ertasiga   bir   oz   qulaylik   bilan   yangi
ko'rinish olmoqda. Hattoki operatsion tizimlar ham yildan-yilga o'z ichiga chuqurroq
manoga   ega   bo'lgan   funksiyalarni   olgan   holda   ishlab   chiqarilmoqda.   Bu   borada texnika   inson   aql-zakovati   va   ftkrlash   darajasiga   yaqinlashib   bormoqda.   Hozirgi
kunda "aynan manashu  yaratilgan dastur  bizga mangu xizmat  qiladi" deb aytishimiz
noo'rin   hisoblanadi.   Chunki   kelajak   bunday   noananaviy   so'zni   qabul   qila   olmaydi.
Bugungi   kunda   shuni   aytishimiz   mumkin-ki,   dasturiy   ta'minotlar   bir   oz
murakkablashdi:   operatsion   tizimlar   va   qobiqlar;   •   dasturiy   tizimlar   (translyatorlar,
dastur   osti   kutubxonalari,   otladchiklar   va   h.,k.);   •   uskunaviy   tizimlar;   •   dastur
paketlarining   integratsiyalashganligi;   •   dinamik   elektron   jadvallar;   •   mashinaviy
grafik tizimlari; • ma'lumotIar bazasini boshqarish tizimlari (mbbt); • amaliy dasturiy
ta'minot. Bu kalassifikatsiyalarni tugab borayotgan manbalar deb atashimiz mutlaqo 4
noo'rin   bo'ladi,   lekin   u   kamroq   yoki   ko'proq   YO'nalishlami   qamrab   oldi   va   dasturiy
ta'minot  rivojlanishini   ko'rsatib  berdi.  Tizimli  dasturiy  ta'minot   bu dasturlar  to'plami
bo'lib (mikroprotsessor, bir-biri bilan aloqada bo'lgan va periferiyali qurilmalar), ishga
layoqatli va funksiyalashtirishni ta'minlovchi, butun tizimga tegishli bo'lgan hisoblash
tizimining   barcha   komponentlarini   boshqaradi.   Ularning   ko'pchiligi   bevosita
nazoratni ta'minlashi va hisoblash tizimini turli xiI apparat qurilmalarini bir-biri bilan
butun   qilib   bog'lab   beradi.   Tizimli   dasturiy   ta'minot   amaliy   dasturiy   ta'minot   bilan
taqqoslanadi,   chunki   uning   asosiy   tomoni   foydalanuvchi   muammolarini   to'g'ridan   -
to'g'ri   hal   etadi.   TDT   ikkita   komponentni   o'zida   mujassam   etgan:   a)   operatsion
tizimlar;   6)   tizimli   dasturlar.   OT   -   bu   dasturlarning   kompleks   muhiti   bo'lib,   barcha
tizimlarning   ishlash   boshqaruvi   funksiyalarini   bajaradi,   dastlabki   yuklanishni
ta'minlaydi, tizimni tiklash va konfiguratsiyalash, shu bilan birga foydalanuvchi bilan
yonma-yon   harakatlanuvchi   interfeysni   namoyish   etadi.   TD   -   dasturiy   modellar
kompleksi  bo'lib, apparat  tizimlari  muhitini  va interfeys orasida  birgalikdagi  aloqani
ta'minlaydi.   Tizimli   dasturlar:   I.   Mashinaga-mo'ljallangan   translyatorlar
(assemblerlar);   2.   Dasturga-mo'ljallangan   translyatorlar   (kompilyatorlar,
interpretatorlar); 3. Ko'maklashuvchi (otladchiklar, utilitalar, makroprotsessor).
DT tizimlari - markaziy protsessor, xotiralar kirish - chiqishida kompyuter resurslarini
boshqarish uchun xizmat qiladi. Bu dasturlar foydalanuvchilar uchun umumiy tarzda ishlab   chiqilgan.   Tizimli   dasturlar   amaliy   dasturlarni   samarali   bajarilishi   uchun
xizmat   qiladi.   Bazali   DT   kompyuterga   o'rnatilgan   barcha   dasturlami   boshqarishni
ta'minlovchi   dasturlardir.   Operatsion   tizim   tarkibida   o'n   minglab   tizimli   dasturlar
muhiti qamrab olgan bo'lib, ular kompyuter resurslarini boshqarish bilan foydalanish
samaradorligini   oshiradi,   foydalanuvchi   bilan   muloqot   yaratadi,   boshqa   dasturlar
ishga tushishini  ta'minlaydi. 5 Zamonaviy operatsion tizim foydalanuvchi  va boshqa
dasturlar orasida qulay muloqotni ta'minlaydi (interfeys). Dastlabki opetarsion tizim -
DOS (Disk Operation System) 1981 yili Microsoft firmasi tomonidan chiqarilgan. 16
razryadga ega bo'lgan operatsion tizim foydalanuvchi «buyruqlar satri» bilan muloqot
qilgan   va   hech   qanday   grafik   interfeysga   ega   bo'lmagan.   Hozirda   ushbu   operatsion
tizim  kompyuterlarga o'rnatilmaydi. Hattoki  IBM firmasi  tomonidan chiqarilayotgan
PC-DOS 2000 modifikatsiyalangan rusumlari ham. 80-yillar ohirida yangilik olamida
dastlabki Windows 3.x grafik mUhitga ega bo'igan operatsion tizimlar chiqa boshladi.
Windows 95 (yoki boshqacha nomlanishi Chicago) barcha kompyuter industriyasida
yangi   bosqichni   vujudga   keltirdi.   Bugungi   kunda   kompyuterlarga   asosan   Microsoft
firmasining operatsion tizimlari o'matilmoqda. Ular Windows 98, Memphis, Windows
2000,   Windows   Millennium   Edition,   Windows   NT,   Windows   XP,   Windows   Vista,
Windows   7.   Ba'zi   foydalanuvchilar   boshqa   firma   tomonidan   ishlab   chiqilgan
alternative   sanalgan   Linux,   Unix,   OS/2   kabi   operatsion   tizimlarni   ishlatadi.
Operatsion   qobiq   hozirgi   kompyuterlarga   Norton   Commander,   Volkov   Commander,
PowerDesk,   DOS   Navigator,   Disco   Commander,   Far,   Windows   Commander,   Total
Commander   va   boshqa   qobiqlar   o'rnatilmoqda.   Ular   nafaqat   qulaylik   yaratib
berishadi, balki kompyuter bilan to'g'ridan-to'g'ri muloqot qilishga moslashgan bo'lib,
yangi   imkoniyatlarni   dasturlar   ishlashi   uchun   grafik   interfeys,   multidasturlash   va
dasturlar   orasida   axborot   almashish   uchun   muhitni   kengaytirib   beradi.   Tarmoq
operatsion   tizimlari   -   lokal   tarmoqlarda   kompyuter   ishlarini   boshqarishda   asosiy
vazifani   bajarishadi.   Ular   local   tarmoqga   mansub   bo'igan   boshqa   kompyuterlarni
dispatcher   boshqaruvi   uchun   xizmat   qiladi.   Tarmoq   OTlari   serverdan   ruxsat   olgan administratorlaming   tarmog'ini   yoki   foydalanuvchini   tartibga   solib   turadi.   Bunday
OTlarga   Microsoft   Windows   NT,   Novell   Net   Ware,   LAN   WorkPlace   Windows
Server   2003,   Windows   Server   2008   va   boshqalami   kiritishimiz   mumkin.   Tizim
dasturlari amaliy dasturlar bilan birga bajariladi va kompyuteming kiritish-chiqarish,
hotiralar,   markaziy   protsessor   resurslarini   boshqarish   uchun   xizmat   qiladi.   Bu
dasturlar   kompyuteming   barcha   foydalanuvchilari   uchun   birdek   xizmat   ko'rsatadi.
Tizimli   dasturiy   ta'minot   amaliy   dasturlaming   samarali   va   muvaffaqiyatli   ishlashini
ta'minlaydi. Muhim tizimli dasturlar sinfiga yordamchi dasturlar - utilitalar qO'shiladi
(lot.   Utilites   -   foyda,   nat).   Utilitalar   OTning   komponentlarini   6   kengaytiradi   va
to'ldiradi   yoki   kompyuterga   va   boshqa   dasturlarga   xizmat   kO'rsatishda   muhim
masalalami   hal   etadi.   Ba'zi   utilitalaming   ko'Tinishlari:   •   Tekshirish   dasturlari,
teslovchi va diagnostika - foydalanish jarayonida nosozliklami bartaraf etish uchun va
kompyuter   qurilmalarining   funksionalligini,   to'g'riligini   tekshirish   uchun   xizmat
qiladi. • Drayver dasturlari - kiritish-chiqarish qurilmalarini tezkor xotira va h.k.lami
boshqarishda operatsion tizimning imkoniyatlarini kengaytiradi. Har qanday ulangan
qurilma   uchun   drayver   dasturlari   mavjud.   •   Ixchamlovchi   dasturlar   (arxivatorlar)   -
diskka   ma'lumotlarni   yozishda,   saqlashda   bir-qancha   yaxlitlikka   erishiladi   va
qisqartirilgan holati vujudga keladi. • ntivirus dasturlari - zararli kompyuter viruslarini
oldindan   bartaraf   etish   va   ular   ustida   ish   olib   borish,   tizirnni   nazorat   qilish   kabi
vazifalami bajaradi. • Optimallashtiruvchi va disklar aro o'zoro munosabatlarda sifatli
interfeysni   nazotar   qiluvchi   dasturlar.   •   Axborotlami   qayta   tiklovchi,   formatlovchi,
himoyalovchi   dasturlar.   •  Kommunikatsiya   (aloqa)   dasturlari,  kompyuterlar   o'rtasida
ma'lumotlar   almashuvini   ta'minlaydi.   •   Hotirani   boshqaruvchi   dasturlar,   tezkor
xotiraning   yengil   tarzda   epchillik   bilan   foydalanilishini   ta'minlaydi.   •   Disk
yurituvchilar   (CD-ROM;   CD-R;   CD-RW;   DVD-ROM;   CDR   W+DVD;   DVD-R;
DVD-RW)   va   boshqa   ko'plab   dasturlar   uchun.   Utilitalarning   bir   qismi   operatsion
tizim  tarkibiga kiradi, boshqa  biT  qismi  esa  funksional  mustaqil  ravishda  ajralib chi
qadi. Birlashgan yoki avtonom holatda bo'ladi. U1arga Chukit, Norton Utilities, Sisoft Sandra,   Nuts&Bolts,   TuneUp   Utilities   dasturlari   kiradi.   Utilitlar   -   yordamchi
dasturlar.   Unga   nusxa   olish   uchun   ishlatiladigan   antivirus,   arxivator,   himoya   va
shunga   o'xshash   yordamchi   funksiyalami   bajaruvchi   programmalar   kiradi.   Utilitlar   -
ma'lumotlami   qayta   ishlashda   qO'shimcha   operatsiyalami   bajarishga   yoki
kompyuterga   xizmat   kO'rsatishga   tashxis,   apparat   va   dasturiy   vositalami   testlash,
diskdan   foydalanishni   optimallashtirishga   mo'ljaUangan   dasturlardir.   Ba'zan   utilitlar
majmualarga birlashib ketadi. kompyuterning va kompyuterlar tannog'ining ishonchli
va   samarali   ishlashini   ta'minlash;   kompyuter   va   kompyuterlar   tarmog'i   apparat
qismining ishini tashkil qilish va profilaktika ishlarini bajarish. Utilita turlari: - qattiq
disk utilitalari; qattiq diskni defragmentatsiya qiluvchi dasturlar; - diskni tekshirish -
har-xil   fayl   yo'llarida   va   disk   hududlarida   zararlangan   yoki   noto'g'ri   yozilgan   va
undagi   bo'sh   joylarni   hosil   qilish   maqsadida   so'nggi   marotaba   samarali   tarzda
fayllarni   o'chirib   tashlash;   diskni   tozalash   -   vaqtinchalik   fayllarni   o'chirish,   keraksiz
fayllar, «savatchani» tozalash; diskni belgilash - mantiqiy disklarni disklarga ajratish
bo'lib,   fayl   tizimlarini   turli   hil   holatlarga   egaligida   va   OTni   bir   nechta   har   xiI
disklarda   qabul   qilish;   -   rezervli   nusxalash   -   butun   diskning   rezervli   va   alohida
fayllarning   nusxasini   yaratish,   hosil   bo'lgan   fayllarni   qayta   tiklash;   -   diskni
ixchamlash   -   qattiq   disklarda   fayllarni   qabul   qishish   hajmini   kattalashtirish   uchun
axborotlarni diskda ixchamlash;
reestrlar   bilan   ishlovchi   utilitalar;   qurilmalarda   monitoring   o'tkazuvchi   utilitalari;
qurilmalarni   tekshiruvchi.   Shuni   yodda   saqlash   kerak-ki,   utilitalarning   bir   qismi
OTning   tarkibiga   kiradi,   boshqa   qismi   esa   avtonom   vazifalarni   bajaradi.   TDTning
katta qismi OT tarkibiga kiradi. DTning umumiy qismi  esa kompyuterning tarkibiga
kiradi   OTning   dasturlar   qismi   va   nazoratli   testlovchi   dasturlar   DXQ   yoki   DDXQ
(dasturlangan   doimiy   xotira   qurilmasi)da   yozilgan   bo'lib,   tizimli   plataga   o'rnatilgan.
DTning   umumiy   qismi   avtonom   dasturlarni   tashkil   etadi   va   alohida   o'ringa   ega.
Tizimli   va   dasturiy   ta'minotni   kompyuterda   ishlab   chiqish   uchun   uskunaviy   muhit
yordami   bilan   yuzaga   keladi:   yuqori   darajali   translyatorlar   tilli;   tahrirlash   muhiti, yuklovchi va komponovka dasturlari; assemblerlar va makroassemblerlar (mashinaga
mo'ljallangan   tillar)   9   -   otladchik   mashina   dasturlari;   -   dasturlash   tizimlari;
Translyatorlar   mash   ina   tili   dasturlarida,   dasturlarni   qaytadan   o'zgartirish   uchun
oldindan belgilangan dasturlash tillarida yozilgan. Dasturlar, chiquvchi modullar deb
nomlanuvchi   dasturlash   tillarida   tayyorlanadi.   Sifat   jihatidan   kiruvchi   ma'lumotlami
translyatorlar chiquvchi modullarni o'zgartiradi va ob'ektlar moduli ishini o'z natijasi
bilan takomillashtiradi, muharrir  aloqalari  uchun kiruvchi  ma'iumotlarga ega bo'ladi.
Ob'ektlar moduli mashina tilidagi  dasturlar matnini va qO'shimcha ma'lumotlami o'z
ichiga   oladi.   Boshqa   mustaqil   modullarni   uning   yuklovchi   joyidagi   modul   sozlovini
ta'minlashda va bu modul bilan boshqa translyatsiyalangan yagona dasturlar modulini
birlashtirtadi.   Dasturlar   yagona   yoki   bir   nechta   chiquvchi   modullarga   ega   bo'ladi.
Yani   bir   yoki   bir   nechta   dasturlash   tillarida   yozilgan   bo'ladi.   Translyatorlar   ikkita
sinfga   bo'linadi:   komilyatorlar   va   interpretatorlar.   Kompilyatorlar   barcha   chiquvchi
modulni  mashina tiliga o'tkazadi.  Interpretator  ketma-ket  mashina  tiliga  o'tkazadi  va
chiquvchi   operatorlarni   bajaradi.   Interpretatoming   kamchiligi   shundaki,
interpretatsiyalanayotgan   dasturlar   ishlash   tezligi   pastligida.   Interpretatoming
kompilyatordan   ustunligi   -   foydalanuvchi   dasturi   bir   marotaba   matn   ko'rinishida
tasvirlanishga ega bo'ladi. Ya'ni bajarilayotgan fayl ko'rinishida va matn ko'rinishida.
Interpretator - bu maxsus tuzilgan dastur bo'lib, dasturlash tilidagi matnni buyruqma-
buyruq   mashina   tiliga   tatjima   qiladi,   lekin   dastur   bajarilish   vaqtini   uzaytiradi.
Interpretatorlar odatda kompyuter xotirasida doimiy saqlanadi. Har qanday dasturlash
tili kompilyatsiyalanuvchi hamda interpretatsiyalanuvchi bo'lishi mumkin. Paskal, Si,
Fortran,   Kobol   tillari   asosan   kompilyatsiyalanuvchi,   Logo,   Fort,   Beysik   tillari   esa
ko'proq   interpretatsiyalanuvchi   hisoblanadi.   Kompilyatsiyalash   interpretatsiyalashga
nisbatan   tayyor   dasturlami   bajarish   tezligi   yuqoriligi   bilan   farq   qiladi.
Interpretatsiyalanuvchi   til   esa,   shaxsiy   kompyuterlari   bilan   muloqot   tartibida   ishlash
uchun   qulay   imkoniyatga   ega   bo'lib,   dastuming   bajarilishida   hosil   bo'ladigan
xatoliklami   shu   vaqtning   o'zida   to'g'rilash   imkoniyati   mavjud   bo'ladi.   Buning   uchun matnni   tahrirlash   dasturiga   qaytish   va   uni   yana   kompilyatsiyalash   shart   bo'lmaydi.
Universal   maqsadlarga   mo'ljallangan   kompyuterlar   uchun   ko'proq
kompiliyatsiyalovchi   transilyator   -   dasturlar   qo'llaniladi.   Shaxsiy   10   kompyuterlar
muloqot   tartibida   ishlashga   mo'ljallangan   bo'lganligi   uchun   ularda   asosan
interpretatsiyalanuvchi   tillardan   foydalaniladi.   Aloqa   muharrirlari   tizimni   qayta
ishlovchi   dastur   bo'lib,   dasturlar   moduli   bajarilishiga   tayyor,   yagona   yuklovchi,
translyator   ishlarining   olingan   natijalari   asosida   ob'ektlar   modulini   bog'laydi   va
tahrirlaydi.   Yuklovchi   modul   operatsion   tizim   asosiy   xotirasida   joylashadi   va
bajariladi.   Yuklovchi   modul   bitta   yoki   bir   necha   dasturiy   seksiyalarda   birlashadi   -
dasturlaming   qismlarini   boshqa   joyga   o'zgartiradi.   Muharrir   aloqalari   oqimiga
kiruvchi   har-bir   ob'ektlar   moduli,   boshqa   modullarda   dasturlar   seksiyalarida
ko'rsatkichlarga ega bo'ishlari  mumkin. Bunday  ko'rsatkichlar  tashqi  deb nomlanadi.
Tashqi kO'rsatkichlarga ega ko'rsatkich belgilari tashqi nomli deb ataladi. Muharrirga
o'matilgan   mos   keluvchi   aloqalar   tashqi   aloqalar   va   tashqi   nomlar,   ruxsat   etuvchi
ko'rsatkichlar   deb   nomlanadi.   Kompilyator   -   inglizcha   so'z   bo'lib,   (komponovshik,
sostavitel)   so'zidan   olingan   bo'lib,   boshlang'ich   dasturlar   asosida   ob'yektning
dasturlarini tashkil qiladi, ya'ni boshlang'ich dastumi unga ekvivalent bo'lgan ob'yekt
dasturini mashina tiliga tatjima qiladi. Kompilyatoming translyatordan farqi shundaki,
kompilyatordagi   dastuming   natijasi   doimo   mashina   kodida   bo'lishi   kerak.
Translyatorda   esa   dastuming   natijasi   umumiy  hollarda   turli   tillarda  yozilgan   bo'lishi
kerak.   Masalan,   Paskal   tilidagi   translyator   dasturi   Si   tilida.   Demak,   har   qanday
kompilyator   translyator   bo'lishi   mumkin,   lekin   har   qanday   translyator   kompilyator
bo'la olmaydi. Kompilyator boshlang'ich dasturlar asosida dastur ob'yektlaridan iborat
bo'lishi   mumkin.   Kompilyator   dasturining   natijasi   "dasturiy   ob'yekt"   yoki   "ob'yekt
kodi"   deyiladi.   Natijaviy   dastur   yozilgan   fayl   "ob'yekt   faylidir."   Dastuming   natijasi,
mash   ina   buyruqlari   tilida   yozilgan   bo'lishiga   qaramay   ob'yekt   fayli   va   bajariluvchi
(.exe),   (.com)   fayl   o'rtasida   ma'lum   farq   bor.   Kompilyator   tuzgan   ob'yekt   fayli
(dasturi)   o'zo'zidan   bajarilmaydi,   chunki   bu   dastuming   kodi   va   ma'lumotlari xotiraning   aniq   bir   sohasiga   bog'lanmagan   bo'ladi.   Demak,   kompilyatorlar   kirishida
yuqori   daraja   tilida   yozilgan   dastur   matni,   chiqishida   mashina   kodlaridagi   aloqa
muharririga   yoki   yuklovchiga   uzatiladigan   dastur   hisoblanar   ekan.   YukJovchi   -
tizimni qayta ishlovchi dastur bo'lib, aloqaJi muharrir funksiyalari asoslarini bog'laydi
va   dasturlami   yagona   topshiriq   punktiga   joylaydi.   Otladchik   dasturlar   bajarilishi
jarayonini   boshqaradi.   Dasturlardagi   xatolami   qidiradi   va   bartaraf   etish   ishlarini
bajaradi.   Otladchiklaming   umumiy   funksiyasiga:   dastuming   qadamba-qadam
bajarilishi,   aniqlangan   nuqtada   tasodifiy   to'xtashi,   ba'zi   shartlar   bajarilishida
dasturiaming   turli   11   joylarida   to'xtab   qolishi,   tasvir   va   o'zgarishlar   birligining
o'zgaruvchiligi kiradi. Assembler tili - mashinaga mo'ljallangan tillar sinfiga mansub.
Dasturlash   tillarining   mashinaga   mo'ljallangan   tillar   -   kompyuter   arxitekturalarining
tuzilishini   nomoyon   etuvchi   va   kompyuter   arxitekturasiga   mos   keluvchi   assembler
dasturlar   abstraksiyasi   darajasiga   xos   bo'lgan   til   hisoblanadi.   Har   bir   buyruq
kompyuterning   mashinaga   mo'ljallangan   tillar   buyruqlariga   mos   tushadi,   yani:   -
ma'lumotlar tiplari; - dasturlardagi ma'lumotlarining manzillash yo'llari; - kompyuter
bajarayotgan operatsiyalar ko'pJigi; - kompyuter ishida boshqarish yo'llari. Dasturlash
tizimi   -   bu   tizim   aniq   dasturlash   tillaridagi   yangi   dasturlar   uchun   ish   lab   chiqilgan.
Zamonaviy   dasturlash   tizimlari   foydalanuvchi   uchun   aniq   va   qulay   dasturlash
muhitini   ishlab   chiqadi.   Ularga:   -   kompilyator   yoki   interpretatorlar;   -
integratsiyalashtirilgan   ishlab   chiqarish   muhiti;   -   dastur   matnlarini   muharrirlash   va
muhitni   yaratish;   -  standart  dasturlarning  keng ko'lamli   kutubhonasi   va  funksiyalari;
otladkali   dasturlar   va   h.k.,   dasturlar,   yordamchilarni   topish   va   dasturdagi   hatolarni
bartaraf   etish;   -   dialog   muhitida   foydalanuvchi   bilan   "do'stlashish";   -   ko'p   oynali
ishlash   tizimi;   kuchli   grafik   kutubhona;   -   kutubhona   bilan   ishlash   uchun   utilitalar;   -
o'zgannas assembler; - o'zgarmas ma'lumot birlashmasi; Asosiy dasturlash tizimlariga
- Turbo Basic, Quick Basic, Turbo Pascal, Turbo C tillarini kiritish mumkin                                            2.3.Strukturalar massivi
Ma'lumki, biror  prеdmеt  sohasidagi  masalani  yеchishda   undagi obyеktlar  bir  nеchta ,
har   xil   turdaga   paramеtrlar   bilan   aniqlanishi   mumkin.   Masalan,   tеkislikdagi   nuqta
haqiqiy turdagi  x-  absissa  va y-  ordinata juftligi  -  (x,y)  ko’rinishida  bеriladi. Talaba
haqidagi   ma'lumotlar:   satr   turidagi   talaba   familiya,   ismi   va   sharifi,   mutaxassislik
yo’nalish, talaba yashash adrеsi, butun turdagi tug’ilgan yili, o’quv bosqichi,   haqiqiy
turdagi rеyting bali , mantiqiy turdagi talaba jinsi haqidagi ma'lumot va boshqalardan
shakllanadi.
Programmada   holat   yoki   tushunchani   tavsiflovchi   har   bir   bеrilganlar   uchun   alohida
o’zgaruvchi   aniqlab   masalani   yеchish   mumkin.   Lеkin   bu   holda   obyеkt   haqidagi
ma'lumotlar «tarqoq» bo’ladi, ularni qayta ishlash murakkablashadi, obyеkt haqidagi
bеrilganlarni yaxlit holda ko’rish qiyinlashadi.
Strukturalar funksiya argumеnti sifatida ishlatilishi mumkin. Buning uchun funksiya 
prototipida struktura turi ko’rsatilishi kеrak bo’ladi. Masalan, talaba haqidagi 
bеrilganlarni o’z ichiga oluvchi Talaba strukturasi turidagi bеrilganlarni 
Talaba_Manzili() funksiyasiga paramеtr sifatida bеrish uchun funksiya prototipi 
quyidagi ko’rinishda bo’lishi kеrak:
void Talaba_Manzili(Talaba);
Funksiyaga strukturani argumеnt sifatida uzatishga misol sifatidagi programmaning 
matni:
#include
#include
struct Talaba
{ char FISh[30];
unsigned int Tug_yil;
unsigned int Kurs;
char Yunalish[50];
float Reyting;
unsigned char Jinsi[5];
char Manzil[50];
bool status;
};
void Talaba_Manzili(Talaba);
int main(int argc,char* argv[])
{
Talaba talaba;
talaba.Kurs=2;
talaba.tug_yil=1988;
strcpy(talaba.FISh,”Abdullayev A.A.”);
strcpy(talaba.Yunalish,
“Informatika va Axborot texnologiyalari”);
strcpy(talaba.Jins,”Erk”);
strcpy(talaba.Manzil,
“Toshkent, Yunusobod 6-3-8, tel: 244-55-58”);
talaba.Reyting=123.52; Talaba_Manzili(talaba);
return 0;
}
void Talaba_Manzili(Talaba t);
{
cout<<”Talaba FIO: “<<t.fio<<end1;< p=""></t.fio<<end1;<>
cout<<”Manzili: “<<t.manzil<<="" p=""></t.manzil<
}
Programma   bosh   funksiyasida   talaba   strukturasi   aniklanib,   uning   maydonlariga
qiymatlar   bеriladi.   Kеyin   talaba   strukturasi   Talaba_Manzili()   funksiyasiga   argumеnt
sifatida   uzatiladi.   Programma   ishlashi   natijasida   ekranga   quyidagi   ma'lumotlar   chop
etiladi.
                                                XULOSA
Bu  kurs  ishimizda  C++  da  elementar  matematik  funksiyalar  bn  ishlashlarni   berilishi
va elon qilinishini kurib chiqdik buda qanday elon qilinishi qanday qiymat berganda
qanday qiymat qaytarishlri hammasini kurib chiqdik
Bu gu n   s i z   bi l a n   m a t e m a t i k   f un ks i y al ar   ha qi da   g ap l a sh am i z .   C+ +   da st ur l a sh
t i l i d a   r aq am l a r d a   m at em at i k   va zi f a l a r ni   ba j a r i sh   i m k oni ya t i ni   be r a di ga n
ko 'p gi na   f un ks i y al ar  m av j u d. C++ da turli xil funksiyalardan iboratligini bilib oldim va ularning qollanishini kodlar
orqali   aniqladik   va   bir   qancha   misollar   keltirdim.   C++   da   matematik   funksiyalar
bizning   biror   bir   obektni   tanlaganimizda   u   bilan   turli   xil   matematik   funksiyalar
qollashimiz   mumkin   ekan.   Bu   kurs   ishi   davomida   juda   koplab   yangi   bilimlar   va
konikmalar hosil qildim va kop narsalarni o’rgandim.
                           
                                
                                 Foydalanilgan adabiyotlar
1. Sidiqova D. Boshlang'ich sinflarda interfaol ta'lim va loyihalash texnologiyasi 
//ЦЕНТР НАУЧНЫХ ПУБЛИКАЦИЙ (buxdu. uz). – 2020. – Т.
 2. – №. 4. 4. Sidikova S. D. Theoretical and didactic principles of distance 
learning //ACADEMICIA: AN INTERNATIONAL MULTIDISCIPLINARY 
RESEARCH JOURNAL. – 2021. – Т. 11. – №. 1. – С. 541-548.  3. Shavkatovna S. D. THE IMPORTANCE OF DISTANCE LEARNING IN THE 
TEACHING OF" METHODS OF TEACHING MATHEMATICS". – 2021. 4. M. 
Ochilov, N. Ochilova ―Oliy maktab pedagogikasi  Toshkent-2008, 260 bet‖
 4. M.Azimjanova,T.Muradova, M.Pazilova ―Informatika va axborot 
texnologiyalari  O‗quv qo‗llanma Toshkent, ―O‗zbekiston faylasuflari milliy 	
‖
jamiyati , 2013.	
‖
 5. Tog'ayeva U. SCIENTIFIC-THEORETICAL BASES OF USE OF 
PEDAGOGICAL TECHNOLOGIES IN TEACHING METHODS OF MOTHER 
TONGUE //ЦЕНТР НАУЧНЫХ ПУБЛИКАЦИЙ (buxdu. uz). – 2020. – Т. 2. – №. 
2.
6.Texnoman.uz
7.  https://www.texnoman.uz/post/c-haqida-va-uning-tarixi.html
8.  https://uzbekdevs.uz/darsliklar/cpp/cpp-da-kirish

MAVZU: C++ dasturlash tilida elementar matematik funksiyalar grafiklari bilan ishlash dasturiy tizimini yaratish Reja: .KirishⅠ II. Asosiy qism I. Bob C++ Dasturlash tilida elementar matematik funksiyalar 1.1 C++ da funksiyalar . 1.2 C++ da funksiya turlari 1.3 Elementar matematik funksiyalar II. Bob Funksiyalar grafiklari bilan ishlash dasturiy tizimini yaratish 2.1 Funksiya grafiklari . 2.2 Dasturiy tizimlar 2.3 Strukturalar massivi. III. Xulosa IV. Foydalanilgan adabiyotlar.

Kirish C++ tilini 80 yillarda AT&T Bell Labs korxonasi ishchisi Byarnom Straustrup tuzgan. Avtorning aytishicha, bu tilni tuzishda u hech qanday qog'ozlarni qoralamagan va hamma ishni yo'l yo'lakay, ketma-ketlikda tuzib chiqqan. Uning asosiy maqsadi, o'zi va do'stlari uchun qulay dasturlash tili yaratishdan iborat edi. C+ + dasturlash tilining asosi C hisoblanadi va shu tilni(C) misolida C++ tilini tuzib chiqdi. C dasturlash tilini mukammalashtirgan eng asosiy narsa bu – ob'yektga mo'ljallangan dasturlashni olib kirgani hisoblanadi. Chunki dasturlashda, tez, qulay , tartibli va ixcham yozish uchun ob'yektga mo'ljallangan dasturlash tillaridan foydalanish lozim bo'ladi. Dastlabki C++ dasturlash tilidan foydalanganlar, bu albatta Bell Labs korxonasi hodimlari hisoblanadi. 1993 yilda bu til ommaga taqdim etildi va C++ nomini oldi. Dastlabki C++ ga oid kitob " The C++ Programming Language (Addison-Wesley, 1985)" nomi bilan mashhur bo'ldi va bu kitob 1991 yil " Язык программирование C++ " tarjimasi bilan rus tiliga tarjima qilindi va bu til(С++) rivojlanishi boshlanib ketdi. ANSI-ISO (ANSI X3J16; ISO WG21/N0836) birlashmasi 1989 yilda, birlashga holda ish boshladi. Bu korxonaning dastlabki ishi C++ dasturlash tiliga va uning kutubxonasiga standart ishlab chiqishdan boshlandi. Buning uchun 1990 yildagi C++ tili asos qilib olindi. 1990 yilda C++ standarti ishlab chiqildi va bu standart hozir ANSI C nomi bilan mashxur. Bu til juda kengayib ketdi va hozirgi kunda bu tilning hamma detallarini biladigan dasturchi bo'lmasa kerak. C++ funksiya va ob'yektlarning boy kutubxonasiga ega. Bundan kelib chiqadiki C++ dasturlash tilini o'rganish 2 qismga bo'linadi: dastlab, C++ tili sintaksisi o'rganiladi vv shundan so'ng uning asosiy kutubxonalari birma-bir ko'rib chiqib, yodlash lozim bo'ladi. Bundan ko'rinib turibdiki, bu til juda katta hajmni o'z qamroviga oladi.

C++ tilining egasi yo'q u hech kimga tegishli emas. Bu til С tilidan kelib chiqgani uchun bosh harf С , ++ esa bu tildagi qiymatni bittaga ko'tarish belgisi hisoblanadi va bu belgi C++ dasturlash tilida paydo bo'ldi. C++ dasturlash tili kompilyatsiya qilinadigan til hisoblanadi bu degani yozilgan kod oldin mashina tiliga o'giriladi va keyin ishga tushiriladi. Hozirgi vaqtda axborot-kommunikasiya vositalari barcha turdagi tashkilot va muassasalarga shiddat bilan kirib kelmoqda. Hozirgi davrda axborotlarning haddan tashqari ko’pligi bu axborotlarni saqlashda, qayta ishlashda, hamda har xil turdagi tizimlarni yaratish, ulardan keng foydalanishni va axborot tizimlari yaratishni talab qiladi. O’zbekiston Respublikasi Prezidentining 2012 yil 21 martdagi ―Zamonaviy axborot-kommunikasiya texnologiyalarini yanada joriy etish va rivojlantirish chora- tadbirlari to’g‘risida gi PQ-1730 Qarori hamda ―O’zbekiston Respublikasida‖ ―Elektron ta‘lim milliy tarmog‘ini yaratish investision loyihasini amalga oshirish ‖ chora-tadbirlari to’g‘risida gi PQ-1740 Qarori va me‘yoriy hujjatlar asosida ‖ algoritmiy ta‘minot ishlab chiqish va joriy etish keng ko’lamli hisoblanadi. Barcha tashkilot va muassasalarda avtomatlashtirilgan tizimlar yaratish ulardan keng ko’lamda foydalanish uchun algoritmlash tillarini o’rni katta hisoblanadi. Axborot tizimlari axborotni to’plash, saqlash va qayta ishlash uchun, keng imkoniyatli maqsadlarda samarali foydalanish uchun xizmat qiladi. Zamonaviy axborotlashtirish tizimi, ma‘lumotlar integratsiyasi konsepsiyasiga asoslangan katta hajmdagi ma‘lumotlarni saqlash bilan tavsiflanadi va ko’p sondagi foydalanuvchilarning turli xildagi talablariga javob berishi kerak bo’ladi. Axborot tizimi va axborot texnologiyalarining avtomatlashtirilgan elementlarini qo’llash va avtomatlashtirish asosida yangi axborot texnologiyasini yaratish avtomatlashtirish tizimlarini loyihalashtiruvchilarning asosiy vazifalaridan biri hisoblanadi. Avtomatlashtirilgan tizimlarni yaratish uchun albatta birinchi navbatda muommo obektini infologik yoki diskretli modelini qurish dolzarb hisoblanadi. Infologik yoki diskretli modelni

muommo obektiga qarab algoritmlash tillarini qaysi biri asosida yaratish kerakligini tanlab olinish kerak. Elektron hisoblash mashinalarini birinchi avlodlari yaratilishi bilan algoritmlash tillarini rivojlanishi ham boshlandi. Avval algoritm tuzuvchi mutaxassislar eng sodda mashina tilini o’zida ifodalovchi kompyuter komandalari bilan ishlaganlar. Bu komandalar nol va birlardan iborat uzun qatorlardan tashkil topgan edi. Keyinchalik insonlar uchun tushunarli bo’lgan mashina komandalarini o’zida saqlovchi assembler tili yaratildi. Shu vaqtlarda BASIC va COBOL singari yuqori sathli tillar ham paydo bo’ldiki, bu tillar yordamida so’z va gaplarning mantiqiy konstruksiyasidan foydalanib algoritmlash imkoniyati yaratildi. Ular komandalarni mashina tiliga interpretatorlar va kompilyatorlar yordamida o’tkazar edi. Algoritmlash tillari yaratilishi bo’yicha uchta turga ajratiladi: -quyi darajadagi; - o’rta darajadagi; -yo’qori darajadagi. 7 Bizga ma‘lumki, ma‘lum bir masalani yechish uchun buyruqlar ketma- ketligi ya‘ni algoritmni algoritmlash tilida yozilishida kamroq komandalardan foydalanilsa, bunday tillar darajasi yuqoriroq hisoblanadi. Quyi darajadagi algoritmlash tillari bevosita kompyuter qurilmalari bilan bog‘liq bo’lib buyruqlar ularning kodlari bilan yoziladi. Bu kabi buyruqlardan tashkil topgan algoritmlar katta hajmli bo’lib, ularni taxrirlash mushkul hisoblanadi. Dastlabki kompyuterlar(ENIAK, MESM va boshqalar) ana shunday tillarda ishlardi. O’rta darajadagi algoritmlash tillari buyruqlarida faqat raqamlar emas, balki insonlar tushunadigan bazi so’zlar ishlatila boshlandi(Assemblaer). Yuqori darajadagi algoritmlash tillari quyidagicha bosqichlarga bo’linadi: Algoritmik(Basic, Pascal, C va b.) Mantiqiy(Prolog, Lisp va b.) Obe‘ktga mo’ljallangan(Object Pascal, C++, Java va b.) Algoritmlash tillarida yaratilgan algoritmlar mashina tiliga Translyatorlar yordamida o’tkaziladi. Translyator(translator-tarjimon) biror bir algoritmlash tilida yozilgan algoritmni mashina tiliga tarjima qiladi. Translyatorlar ikki turda bo’ladi: - Kompilyatorlar(compiler-yig'uvchi) biror bir algoritmlash tilida yozilgan algoritmni mashina tiliga to’liq o’qib olib tarjima qiladi. -Interpretatorlar(interpreter — izohlovchi, og‘zaki tarjimon) biror bir algoritmlash tilida yozilgan algoritmni mashina

tiliga satrma satr tarjima qiladi. Translyatorlarni bu ikkala turi bir biridan farq qiladi. Komplyatsiya qilingan algoritmlar bir muncha kam vaqt talab etadi, ya‘ni tezroq ishlaydi, lekin interpretatsiya qilingan algoritmlarni o’zgartirish osonroq hisoblanadi. 1.1. C++ da funksiyalar Dasturlash mobaynida bir xil ifodalarni, hisoblash jarayonlarini qayta – qayta hisoblashga to`g`ri keladi. Dasturlash tillarida, kompyuter hotirasini va dasturchining vaqtini tejash maqsadida, bunday takkorlanuvchi jarayonlarni dasturda ajratib yozib, unga asosiy daturdan, boshqa funksiyalardan murojaat qilish imkoniyatlari keltirilgan. Dasturning istalgan qismidan murojaat qilib, bir necha bor ishlatish mumkin bo`lgan operatorlar guruhiga funksiya deyiladi. C++ funksiyalar tili deyiladi. Chunki dasturda kamida bitta main funksiyasi bo'ladi. Asosiy dastur, asosiy funksiya deganda aynan manashu main funksiyasini tushunamiz. Asosiy dasturdan (yoki chaqiruvchi funksiyadan) xech qanday parameter qabul qilib olmaydigan funksiyalarga, parametrsiz funksiyalar deyiladi Parametrsiz funksiyaga murojaat qilishda dastur tanasida funksiya nomi yoziladi. Dasturda funksiya nomi operatorlar kabi ishlatiladi. Parametrsiz funksiyada asosiy dasturning barcha global o`zgaruvchilaridan foydalanish mumkin. Global o`zgaruvchilar Ham asosiy dasturda, ham funksiyada ishlatish mumkin bo'lgan o`zgaruvchilar global o'zgaruvchilar deyiladi. Global o'zgaruvchilar asosiy dasturda e`lon qilishi kerak. Lokal o`zgaruvchilar Faqat funksiyada ishlatish mumkin bo'lgan o'zgaruvchilarga local o'zgaruvchilar deyiladi. Ular funksiyada e`lon qilinadi. Funksiyada yana bir nechta ichki funksiyalardan foydalanish mumkin. Blok ichida e'lon qilingan o'zgaruvchilar, shu blok uchun lokal o'zgaruvchilar hisoblanadi. Bu o'zgaruvchilardan faqat blok ichida foydalanish mumkin. Parametrli funksiyalar Asosiy dasturdan (funksiyadan) chaqiriluvchi funksiyaga uzatilgan parametrlarni qabul qilib qayta ishlovchi funksiyalar parametrli funksiyalar deyiladi. Qiymat parametrlar – asosiy dasturdan funksiyaga uzatiladigan o'zgaruvchilar qiymatlarni