C++ dasturlash tilida elementar matematik funksiyalar grafiklari bilan ishlash dasturiy tizimini yaratish
![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.](/data/documents/ce01b03f-0887-490f-9b2b-dfa477a716d4/page_1.png)
![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.](/data/documents/ce01b03f-0887-490f-9b2b-dfa477a716d4/page_2.png)
![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](/data/documents/ce01b03f-0887-490f-9b2b-dfa477a716d4/page_3.png)
![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](/data/documents/ce01b03f-0887-490f-9b2b-dfa477a716d4/page_4.png)
![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](/data/documents/ce01b03f-0887-490f-9b2b-dfa477a716d4/page_5.png)
![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; }](/data/documents/ce01b03f-0887-490f-9b2b-dfa477a716d4/page_6.png)
![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](/data/documents/ce01b03f-0887-490f-9b2b-dfa477a716d4/page_7.png)
![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 )](/data/documents/ce01b03f-0887-490f-9b2b-dfa477a716d4/page_8.png)
![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:](/data/documents/ce01b03f-0887-490f-9b2b-dfa477a716d4/page_9.png)
![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) {](/data/documents/ce01b03f-0887-490f-9b2b-dfa477a716d4/page_10.png)
![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 ,](/data/documents/ce01b03f-0887-490f-9b2b-dfa477a716d4/page_11.png)
![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](/data/documents/ce01b03f-0887-490f-9b2b-dfa477a716d4/page_12.png)
![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.](/data/documents/ce01b03f-0887-490f-9b2b-dfa477a716d4/page_13.png)
![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;](/data/documents/ce01b03f-0887-490f-9b2b-dfa477a716d4/page_14.png)
![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;
}](/data/documents/ce01b03f-0887-490f-9b2b-dfa477a716d4/page_15.png)
![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;](/data/documents/ce01b03f-0887-490f-9b2b-dfa477a716d4/page_16.png)
![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;](/data/documents/ce01b03f-0887-490f-9b2b-dfa477a716d4/page_17.png)
![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;
}](/data/documents/ce01b03f-0887-490f-9b2b-dfa477a716d4/page_18.png)
![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а](/data/documents/ce01b03f-0887-490f-9b2b-dfa477a716d4/page_19.png)
![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](/data/documents/ce01b03f-0887-490f-9b2b-dfa477a716d4/page_20.png)
![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](/data/documents/ce01b03f-0887-490f-9b2b-dfa477a716d4/page_21.png)
![х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 {}](/data/documents/ce01b03f-0887-490f-9b2b-dfa477a716d4/page_22.png)
![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.](/data/documents/ce01b03f-0887-490f-9b2b-dfa477a716d4/page_23.png)
![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 :](/data/documents/ce01b03f-0887-490f-9b2b-dfa477a716d4/page_24.png)
![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](/data/documents/ce01b03f-0887-490f-9b2b-dfa477a716d4/page_25.png)
![// 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 .](/data/documents/ce01b03f-0887-490f-9b2b-dfa477a716d4/page_26.png)
![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);](/data/documents/ce01b03f-0887-490f-9b2b-dfa477a716d4/page_27.png)
![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](/data/documents/ce01b03f-0887-490f-9b2b-dfa477a716d4/page_28.png)
![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](/data/documents/ce01b03f-0887-490f-9b2b-dfa477a716d4/page_29.png)
![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](/data/documents/ce01b03f-0887-490f-9b2b-dfa477a716d4/page_30.png)
![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](/data/documents/ce01b03f-0887-490f-9b2b-dfa477a716d4/page_31.png)
![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,](/data/documents/ce01b03f-0887-490f-9b2b-dfa477a716d4/page_32.png)
![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](/data/documents/ce01b03f-0887-490f-9b2b-dfa477a716d4/page_33.png)
![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](/data/documents/ce01b03f-0887-490f-9b2b-dfa477a716d4/page_34.png)
![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](/data/documents/ce01b03f-0887-490f-9b2b-dfa477a716d4/page_35.png)
![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
{](/data/documents/ce01b03f-0887-490f-9b2b-dfa477a716d4/page_36.png)
![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;](/data/documents/ce01b03f-0887-490f-9b2b-dfa477a716d4/page_37.png)
![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.](/data/documents/ce01b03f-0887-490f-9b2b-dfa477a716d4/page_38.png)
![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.](/data/documents/ce01b03f-0887-490f-9b2b-dfa477a716d4/page_39.png)
![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](/data/documents/ce01b03f-0887-490f-9b2b-dfa477a716d4/page_40.png)
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