Amaliy matematika va informatika
Download 1.32 Mb. Pdf ko'rish
|
s tilining kutubxonalari va ularning programma tuzishdagi ahamiyati
iswalpha belgilar massivini alifbo harflaridan iboratligini tekshiradi. iswblank belgilar massivini belgining son ekanligini tekshiradi iswcntrl belgilar massivini belgining haraktorli belgilaridan biri ekanligini tekshiradi
40
iswdigit belgilar massivini belgining o‘nlik sanoq sistemasidagi raqam ekanligini bildiradi
belgilar massivini belgining grafik tasvir harakteriga ega ekanligini bildiradi
belgilar massivini belgining kichik harf ekanligini tekshiradi iswprini belgilar massivini belgining bosmalanuvchanlik haraktorini tekshiradi
belgilar massivini belgining punkitnatsiya belgilaridan biri ekanligini tekshiradi
belgilar massivini belgining bo‘sh joy ekanligini tekshiradi iswupper belgilar massivini belgining katta harf ekanligini tekshiradi iswxdigit belgilar massivini belgining o‘n oltilik sanoq tizimidagi son ekanligini tekshiradi
belgilar massivini bosh harflarni kichik harflarga almashtiradi. towupper belgilar massivini kichik harflarni bosh harflarga almashtiradi Kengaytirilgan sinflash va akslantirish funksiyasi: iswctype belgilar massivining kengaytirilgan formatda ekanligini tekshirish.
akslantirishdan foydalanib konvertasiya qilish. wctrans belgining akslantirilgan qiymatini qaytarish. wctype belgining kamaytirilgan formatini qaytaradi. Turlar: wctrans_t belgilar massivini akslantirish turi. wctype_t belgining kamaytirilgan formatini qaytaradi. wint_t belgilar massivining butun turi. O’zgarmaslar: 41
WEOF Uzun fayl oxiri.
C++ tilidan foydalanuvchiar bu kutubxonadan juda keng foydalanadilar. math.h kutubxonasi turli matematik funksiyalar, makrokonstantalar va matematik turlar bilan boyitilgan. Quyida biz ularning tavsifini keltiramiz:
Radianga tеng bo‘lgan burchakning kosinusini qaytaradi sin Radianga tеng bo‘lgan burchakning sinusini qaytaradi tan Radianga tеng bo‘lgan burchakning tangensini qaytaradi acos Radianda bеrilgan argumеntning arkkosinus qiymatini qaytaradi
Radianda bеrilgan argumеntning arksinus qiymatini qaytaradi
Radianda bеrilgan argumеntning arktangens qiymatini qaytaradi
Radianda bеrilgan x/y argumеntning arktangens qiymatini qaytaradi
Radianda bеrilgan burchakning giperbolik kosinusini qaytaradi
Radianda bеrilgan burchakning gipеrbolik sinusini qaytaradi
Radianda bеrilgan burchakning gipеrbolik tangensini qaytaradi
Radianda bеrilgan burchakning gipеrbolik arkkosinusini qaytaradi
Radianda bеrilgan burchakning gipеrbolik arksinusini qaytaradi
42
atanh Radianda bеrilgan burchakning gipеrbolik arktangensini qaytaradi
е x qiymatni qaytaradi frexp Sonning mantissasini va darajasining qiymatini ajratib, mantissa qiymatini qaytaradi va darajasini ko‘rsatilgan adrеsga joylashtiradi ldexp(x) x*2
еxp qiymatni qaytaradi log Sonning natural logarifmini qaytaradi log10 Sonning 10 asosli logarifmini qaytaradi modf Haqiqiy sonning butun va haqiqiy qismalarini ajratish exp2 Funksiyaning ikkilik ko‘rsatkichini aniqlash expm1 -1 ko‘rsatkich bilan hisoblah ilogb Ikkita predmetdan iborat nabordagi butun son logarifmi log1p Logarifmni +1 ko‘rsatkich bilan hisoblash log2 Ikkilik logarifmni hisoblash logb Logarifmni suzuvchu vergulli son asosida hisoblash Darajaga ko’tarish funksiyalari pow Darajaga ko‘taradi pow10 10
sonining darajasini hisoblaydi sqrt Sondan kvadrat ildiz chiqaradi cbrt Sondan kub ildiz chiqaradi hypot to‘g‘ri burchakli uchburchakning katеtlari bo‘yicha gipotеnuzasini hisoblaydi
Xatolik funksiyasini hisoblash erfc Qo‘shimcha xatolik funksiyasini hisoblash tgamma Gamma funksiyani hisoblash lgamma Ro‘yxatdan o‘tkazuvchi gamma funksiyani hisoblash 43
Yaxlitlash va qoldiqni hisoblash funksiyalari: ceil haqiqiy qiymatni unga eng yaqin katta butun songacha aylantiradi va uni haqiqiy ko‘rinishini qaytaradi
haqiqiy qiymatni eng yaqin kichik songa aylantiradi va uni haqiqiy son ko‘rinishida qaytaradi
Ikkita sonni bo‘lish natijasidagi qoldiqni qaytaradi. % amaliga o‘xshagan, faqat haqiqiy son qaytaradi
Sonni yaxlitlash round Sonni yaqin butun songa yaxlitlash lround Uzun sonni yaxlitlash llround Ikkilik uzun sonni yaxlitlash rint Butun songa yaxlitlash lrint Uzun butun songa yaxlitlash llrint Ikkilik uzun butun songa yaxlitlash nearbyint Butun songa yaqin bo‘lgan qiymat bilan yaxlitlah remainder Qoldiqni hisoblash remquo Qoldiqni va faktorni hisoblash Absolyut qiymatni hisoblash funksiyalari abs Sonning absolyut qiymatini qaytaradi fabs Haqiqiy sonning absolyut qiymatini qaytaradi labs Uzun butun sonning absolyut qiymatini qaytaradi Turlar double_t Haqiqiy sonlar turi float_t Haqiqiy sonlar turi
Vaqt va sana bilan bog’liq kutubxonalar 44
Bu kutubxona vaqt va sanaga bog‘liq bo‘lgan ma‘lumotlarni olish va ularni boshqarish funksiyalariga ega. C++tilining turlar mavjud: clock_t, time_t va tm. clock_t va time_t turlari yil taqvimi bo‘yicha vaqt va sananing butun turdagi qiymatlari majmuasini saqlaydi. tm strukturasi esa bir qator komponentalarga ajraladi va quyidagicha aniqlanadi:
int tm_sec; /*sekundlar, 0-59*/ int tm_min; /*minutlar, 0-59*/ int tm_hour; /*soatlar, 0-23*/ int tm_day; /*oy kunlari, 1-31*/ int tm_mon; /*oylar, 0-11 */ int tm_year; /*yillar, 1900 yildan boshlanadi*/ int tm_wday; /*hafta kunlari, 0-6*/ int tm_yday; /*yil kunlari, 0-365*/ int tm_isdst; /*yozgi vaqt indekatori*/ } Bu strukturadagi yozgi vaqt indekatori yozgi sanalar uchun noldan farqli, aks holda nol qiymatiga ega bo‘ladi. Bundan tashqari CLOCKS_PER_SEC makrosi aniqlangan bo‘lib, tizim soatining sekundlardagi taktlar sonini qaytaradi. Quyida bu kutubxonaning standart funksiyalari tavsifini keltiramiz: Funksiya Bajaradigan amali clock soat dasturi difftime ikkita turli vaqtlar oralig‘ini qaytaradi. mktime vaqtni tm strukturasidan time_t turiga o‘tkazadi. time joriy vaqtni qaytaradi. Akslantirish funksiyalari: asctime vaqtni tm strukturasidan satr turiga o‘tkazadi. 45
ctime time_t turidagi qiymatni satr turiga o‘tkazadi. gmtime vaqtning tm_t turini xuddi UTS ko‘rinishida kabi tm strukturasiga o‘tadi.
vaqtning tm_t turidan mahalliy vaqt ko‘rinishidagi tm satrga o‘tadi.
vaqt formatini satr ko‘rinishida ifodalaydi. Makro o’zgarmaslar: CLOKCS PER SEC soatni sekundlarda ifodalash. NULL bo‘sh ko‘rsatkich. Turlari: clock_t soat turi size_t ishorasiz butun tur. time_t vaqt turi struct_tm vaqt strukturasi. 46
III BOB. DASTURIY VOSITALAR QURISHDA C++ TILI KUTUBXONALARIDAN FOYDALANISH 3.1. Belgilar va satrlar bilan ishlovchi kutubxonalardan foydalanish Ushbu paragrafda C va C++ dasturlash tillarida mavjud yoritish ya‘ni belgi va satrlarga bog‘liq masalalar uchun dasturlar qurishda bu kutubxonalardan foydalanish qaraladi.Bizga ma‘lumki C++ tilida tuzilgan har qanday dasturda foydalaniladigan kutubxonalar #include kalit so‘zi bilan chaqirilishi shart. Shundagina chaqirilgan kutubxonalar imkoniyatlaridan foydalanish mumkin bo‘ladi. C++ tilida belgi va satrlarga turli ishlov berish jarayonlari muhim qo‘llanmalarga ega bo‘lganligi sababli ularni batafsil o‘rganish ahamiyatli hisoblanadi. Keltirilgan kutubxonalarda mavjud funksiyalardan foydalanib berilgan satrdagi harflar, raqamlarga bog‘liq masalalar uchun dasturlar tuzish imkoniyati tug‘iladi.Ko‘p hollarda satrlar bilan ishlash uchun foydalanish ham maqsadga muvofiq. Har ikkala kutubxonaga tegishli bo‘lgan bir qator funksiyalar mavjud. Endi bu funksiyalar yordamida dasturlanadigan masalalardan bir misol keltiramiz. Masala. Berilgan satrdagi kichik va katta lotin harflarining va raqamlarning miqdorini hisoblab beruvchi dastur qurisin. #pragma hdrstop #include #include #include #include
//--------------------------------------------------------------------------- 47
#pragma argsused int main(int argc, char **argv) { string s; int l,i,n1=0,n2=0,n3=0; cin>>s;
l=s.length(); for (i=0;i {
if(isdigit(s[i])) n1+=1; if (isupper(s[i])) n3+=1; } cout<<"Satrdagi raqamlar miqdori "< cout<<"Satrdagi katta harflar soni"< cin>>"\n";
return 0; }
Salom maktab! Satrdagi raqamlar miqdori 0 ta
48
Satrdagi kichik harflar miqdori 10 ta Satrdagi katta harflar miqdori 1 ta
Yuqorida keltirilgan kabi masalalarni yechish matnlarga ishlov berish jarayonini yanada takomillashtirish hamda axborotlar himoyasi sohasida mavjud dolzarb masalalarni hal etishda o’zining muhim tatbiqlariga ega. 3.2. Dasturlashda math.h kutubxonasining imkoniyatlaridan foydalanish C++ tilining math.h kutubxonasi yordamida matematik masalalarni dasturlash jarayonini ko‘rib chiqamiz. Bu kutubxonadagi mavjud matematik funksiyalarni quyidagi to‘rt guruhga bo‘lishimiz mumkin: Trigonometrik funksiyalar Giperbolik funksiyalar Eksponensial va logarifmik funksiyalar Boshqa turdagi matematik funksiyalar. math.h kutubxonasidan foydalanishni namoyish etish uchun quyidagi dasturni keltiramiz.
quyidagicha hisoblansin:
. , 0 ; ' 4 ), lg( ; ' 3 ), arccos( ; ' 2 ), ( ; ' 1 , 2 hollarda boshqa lsa bo n agar a lsa bo n agar a lsa bo n agar a th lsa bo n agar a y
#pragma hdrstop #include #include 49
#include
//--------------------------------------------------------------------------- #pragma argsused int main(int argc, char **argv) { int n;
float a,x; cin>>a>>n; switch (n) { case 1: x=pow(a,2); break; case 2: x=tanh(a); break; case 3: x=acos(a); break; case 4: x=log10(a); break; default: x=0; } cout< return 0; }
50
Misol 1: Misol 2: Misol 3: 67 4 45 1 34 3 1.82607 2025 acos: DOMAIN error nan
Yuqorida keltirilgan dastur yordamida ko‘rsatilgan funksiyaga mos qiymatni hisoblash imkoniyati tug‘iladi. Dasturlash tilidagi bunday imkoniyat aniq va tabiiy fanlarning turli yo‘nalishlarida o‘z sohasiga bog‘liq funksiyalarni hisoblash uchun foydalanuvchilarga o‘zining funksiyalar kutubxonasini hosil qilish imkoniyatini beradi .
Bir qator dasturiy vositalar qurishda vaqt va sanaga bog‘liq ma‘lumotlar bilan ishlashga to‘g‘ri keladi.
Kutubxona imkoniyatlarininamoyish etish maqsadida quyida keltirilgan masala uchun dasturiy vasita quramiz.
Algoritmning samarali ishlashini aniqlash uchun unga sarflanadigan mashina vaqtini bilish muhim faktorlardan hisoblanadi. Ma‘lumki C++ tilida dasturlar bir necha funksiyalar majmuasidan iborat bo‘lganligi sababli yaxlit dasturga emas, balki funksiyalarning bajarilishiga ketadigan vaqtni aniqlash yetarli bo‘ladi. Yuqorida qo‘yilgan masala shu maqsadda keltirilgan.
Qo‘yilgan masalaga oydinlik kiritish uchun N musbat butun sonning barcha butun bo‘luvchilarini aniqlash masalasiga tuzilgan 2 xil algoritmdagi funksiyani taqqoslaymiz. #pragma hdrstop #include #include 51
#include //--------------------------------------------------------------------------- #pragma argsused int Buluvchi_1(unsigned int k) { int m=0; for (int i=1;i<=k;i++) if (k%i==0) m+=1; return m; } int Buluvchi_2(unsigned int k) { unsigned int i,m=1, n=0; if (k%2) m=2; for (i=1;i<=k/2;i=i+m) if (k%i==0) n+=1; return n+1; }
int main(int argc, char **argv) { time_t t,t0,t1,t2; unsigned int N,i,m; cin>>N;
t0=time(&t); m=Buluvchi_1(N); t1=time(&t); 52
cout<<"N sonining bo'luvchilari soni "< m=Buluvchi_2(N); t2=time(&t); cout<<"N sonining bo'luvchilari soni "< cout<<"2-algoritmning bajarilishiga ketgan vaqt "< cin>>"\n"; return 0;
} 345
N sonining bo'luvchilari soni 8 ta 1-algoritmning bajarilishiga ketgan vaqt: 22
Keltirilgan dasturdagi funksiyalarning bajrilishiga ketgan vaqt bo‘luvchilari ega bo‘ladi. 2-funksiya 1-funksiyaga qaraganda ancha kam vaqt sarflaydi. Chunki unda bajariladigan amallar soni kam. Keltirilgan masala ancha sodda bo‘lganligi
sababli uni oq quti usuliga asoslanib tekshirish mumkin. quyidagicha: Ishtirokchi 2 ta toshni tashlaydi. Har bir tosh 6 ta tomondan iborat va ular 1,2,3,4,5 va 6 qiymatlaridan biriga ega. Toshlar tushgandan so‘ng ularning
yuqori qismlarining qiymatlari yig‘indisi hisoblanadi. Agar birinchi otishdan so‘ng yig‘indi 7 yoki 11 ga teng bo‘lsa, ishtirokchi yutgan hisoblanadi. Agar birinchi
otishda yig‘indi 2,3 yoki 12 ga teng bo‘lsa, ishtirokchi yutqazgan hisoblanadi. Agar birinchi otishda yig‘indi 4,5,6,8,9 va 10 qiymatlaridan biriga teng bo‘lsa, bu
qiymat ―Ochko‖ hisoblanadi. Yutish uchun ishtirokchi toshlarni o‘zi yiqqan 53
ochkolari qiymatiga teng son chiqmaguncha tashlaydi. Agar bu otishlar vaqtida toshlar yig‘indisi 7 ga teng holat sodir bo‘lsa, ishtirokchi yutqazadi.
Quyida ushbu o‘yinning dasturiy vositasini keltiramiz: #include #pragma hdrstop #include #include #include //---------------------------------------------------------------------------
#pragma argsused int rollDiece(void); int main(int argc, char* argv[]) { enum Status {CONTINUE,WON,LOST }; int sum, myPoint; Status gameStatus; srand(time(NULL)); sum=rollDiece(); switch(sum) { case 7,11: gameStatus=WON; break; case 2,3,12: gameStatus=LOST; break;
54
default: gameStatus=CONTINUE; myPoint=sum; cout<<"Ochkolar: "< break;
while (gameStatus==CONTINUE) { sum=rollDiece();
if (sum==myPoint) gameStatus=WON;
else if (sum==7) gameStatus=LOST;
} if (gameStatus==WON)
cout<<"Ishtirokchi yutdi"< else cout<<"Ishtirokchi yutqazdi"< cin>>"\n"; return 0;
}
int rollDiece(void){ diel=1+rand()%6; diel2=1+rand()%6;
55
worksum=diel+diel2; cout<<"Ishtirokchi tashladi "< return worksum;
}
Ishtirokchi tashladi 6 + 2 = 8
Ochkolar: 8 Ishtirokchi tashladi 3 + 2 = 5
Ishtirokchi tashladi 4 + 2 = 6 Ishtirokchi tashladi 2 + 3 = 5
Ishtirokchi tashladi 6 + 6 = 12 Ishtirokchi tashladi 1 + 6 = 7
Ishtirokchi yutqazdi ……………………………………………………
Ishtirokchi tashladi 3 + 1 = 4 Ochkolar: 4
Ishtirokchi tashladi 3 + 1 = 4 Ishtirokchi yutdi
……………………………………………………. Ishtirokchi tashladi 6 + 5 = 11
Ishtirokchi yutdi …………………………………….
Bu kabi murakkab algoritmlar asosida quriladigan masalalar uchun algoritmning bajarilish vaqtini hisoblash ya‘ni qora quti usulini qo‘llash yaxshi
samara beradigan usuldir. C++ tilining vaqtga bog‘liq bo‘lgan yuqoridagi kabi masalalarni samarali hal etish imkoniyatini
beradi. 56
XULOSA
Ushbu bitiruv ishida qaralgan C++ tilining kutubxonalari va ularning programma tuzishdagi ahamiyati mavzusi ostida qo‘yilgan masalalarni o‘rganish bo‘yicha quyidagilar bajarildi: 1. C++ dasturlash tilining imkoniyatlari o‘rganib chiqilib, ishga aloqador va ishga muhim deb hisoblanganlari ish tarkibiga kiritildi. 2. C++ tilining bir qator kutubxonalari va ularda mavjud imkoniyatlar batafsil o‘rganib chiqildi va ish tarkibiga kiritildi. 3. Amaliy dasturlar qurish yo‘li bilan C++ tilining ko‘rsatib berildi. Ushbu ishda keltirilgan ma‘lumotlardan C++ tilining kutubxonalariga bog‘liq imkoniyatlarini qo‘llashni yo‘lga qo‘yishni , ya‘ni kengroq o‘rganishni istovchilarning faydalanishlari yaxshi natija beradi deb hisoblaymiz.
57
FOYDALANILGAN ADABIYOTLAR VA INTERNET RESURSLARI 1. I. A. Karimov ―Yuksak ma‘naviyat yengilmas kuch.‖ T. Ma‘naviyat, 2010 y. 173 s. 2. I. A. Karimov ―O‘zbekiston mustaqillikka erishish ostonasida‖ T.O‘zbekiston 2011 y. 432 s. 3. Г.Шилдт –―Полный справочник по C++‖ – М-2006., 801 стр. 4.Р.Седжвик – ―Фундаментальные алгоритмы на С++‖ – М 2001., 687 стр. 5. Ш.Ф.Мадрахимов, С.М.Гайназаров ―С++ тилида программалаш асослари‖ – Тошкент-2009 й., 196 6. М.Э.Абрамян ―Электронный задачник по программированию‖ Ростов - на - Дону 2005 г. 182 стр. 7. A.A.Xaldjigitov, Sh.F.Madraximov, U.E.Adambayev, E.A Eshboyev, Informatika va dasturlash. T.:O‗zMU, 2005 y, -148 s. 8. Н.Н.Непейвода- Стили и методы программирования. Интернет университет информационных технологий. INTUIT.ru, 2005 г., 320 стр. 9. O.M.Shukurov, E.A.Eshboyev, B.H.Shovaliyev – ―Delphi va C++ algoritmik tillarida dasturlash‖ – Qarshi-2012 y., 228 s. 10.www.cplusplus.com 11.www.acm.timus.ru 12.www.codeforces.ru 13.www.cyberforum.ru 14.www.cybern.ru 15.www.delphisources.ru 16.ziyonet.uz Download 1.32 Mb. Do'stlaringiz bilan baham: |
ma'muriyatiga murojaat qiling