Suzib yuruvchi nuktali ma’lumotlar tipi 1 bobda aytilganidek suzib yuruvchi nuktali ma’lumotlar tipida kasr kismi mavjud bulgan sonlar kursatiladi. S# da suzib yuruvchi nuktali ikki tip mavjud, float va double, mos ravishda birlamchi va ikkilangan aniklikdagi sonlarni kursatadi. float tipiga 1.5E-45 dan 3.4EQ38 gacha bulgan 32 bit ajratiladi. double tipiga ishlatilishi mumkin bulgan sonlar oraligini 5E-324 dan 1.7EQ308 gacha kengaytiruvchi 64 bit ajratiladi. Kuprok double tipi ishlatiladi. Buning sabablaridan biri S# kutubxonasidagi matematik funksiyalar double tipiga ega bulgan kiymatlarning ishlatishidir. Masalan System. Math. standart sinfida aniklangan Sqrt() usuli double kiymatli argumentni uning kvadrat ildizini xam double kiymatiga kaytaradi. Kuyida misol tarikasida ikki katet uzunligi bilan berilgan gipotinuza uzunligini xisoblash uchun Sqrt() usuli kullangan.
G’* Dasturda gipotenuza uzunligini ikki katet uzunligi orkali topish imkonini
beruvchi Pifagor teoremasidan foydalanilgan
*G’
Using system;
class Hypot {
public static void Main {}{
double x, y, z;
Sqrt() усулининг чакирилишига этибор беринг. Усул номи у тегишли булган номдан нукта билан ажратилган.
xq3;
yq4;
zqMath.Sqrt(x*xQy*y)
Console. WriteLine(“Gipotinuza uzunligi ” Q z);
}
}
YUkoridagi dastur natijasi :
Gipotinuza uzunligi 5
Bu dasturning yana bir tomonini aytib utish kerak. YUkorida aytilganidek Sqrt() usuli Math. Sinfiga mansub. Usul nomi u tegishli bulgan nomdan nukta bilan ajratilganligiga etibor bering. Bu kabi yozuvni WriteLine() usulidan oldin Console sinfining nukta bilan ajratilganda kurgan edik. Barcha usullarni xam oldin ular tegishli bulgan sinf nomini kursatgan xolda chakirilishi shiart emas, lekin bazilariga aynan shunday murojat kilish shart.
Decimal tipi
S# ning eng kizikarli sonli tipi pul xisob-kitobida ishlatiladigan decimal tipi bulsa kerak. Decimal tipida 1E-28 dan 7.9EQ28 gacha bulgan oralikdagi kiymatlarga 128 bit ajratiladi. Suzib yuruvchi nutali sonlar ustidan arifmetik xisoblash olib borilganda kiymatlarni birnecha marta yaxlitlash uncha anik bulmagan natijani beradi. Decimal tipi yaxlitlashdagi xatoliklarni tugirlaydi, va sonlarni unning 28 darajasi aniklikda kursatadi. Unlik xonalarni yaxlitlashda bexato kursatish imkoniyati ayniksa iktisodiy xisoblashlarda kul keladi.
Misol tarikasida pul xisob-kitobida decimal tipidan foydalangan dasturni kurib chikamiz. Dastur foizlar utkazilganidan sung balans xisobini oladi.
Mutaxassis javoblari!
Savol: Oldinlari kupkina tillar bilan ishlaganman, lekin xech kaysi birida Decimal tipini uchratmaganman. Bu tip fakat S# ga xosmi?
Javob: Xa, bu tip fakat S#ga xos bulib SQQ,S yoki Java tillarida mavjud emas.
Shu urinda Decimal tipidagi uzgarmaslardan sung m yoki M kushimcha tarzda yozilishi kerak. Aks xolda ular Decimal tipiga tugri kelmaydigan suzib yuruvchi nuktali uzgarmaslar deb kabul kilinadi.
Belgilar
Boshka dasturlash tillaridan farkli ravishda (SQQ kabi, belgilarni e’lon kilishda 8 bit ajratiladi, bu esa 255 belgi bilan ishlash imkonini beradi.) S# da butun Dunyu tillarida ishlatiladigan belgilar tuplami kiritilgan Unicode belgilarning standart majmui ishlatiladi. S# da char- 16 bit ajratiladigan belgisiz tip, bu esa 0 dan 65535 gacha bulgan oralikdagi kiymatlar bilan ishlash imkonini beradi(ya’ni, 65535 belgi bilan ishlash). 8 bitli ASCII belgilar majmui Unicode ning tarkibini tashkil kiladi va 0 dan 127 gacha bulgan oralikda joylashgan. Shunday kilib ASCII belgilari Unicode da xam saklanib kolgan.
Belgili kiymatni uzgaruvchiga uzlashtirish uchun uzlashtirish operatoridan ungda turgan belgini bittalik kushtirnok ichiga olish kerak. Kuyida ch uzgaruvchiga x kiymat uzlashtirish bajariladigan operatorlar sintaksisi berilgan.
Char ch;
Ch q ‘x’;
Elgili kiymatni chikarish uchun Console.WriteLine() operatoridan foydalaniladi. Keyingi kator ch uzgaruvchining kiymatini chikaradi.
Console.WriteLine(“ch uzgaruvchining kiymati - ” Q ch);
Butun sonli tipdan shar ga avtmatik ravishda utish mvjud bulmagani uchun, S#da butunsonli tip deb aniklangan shar tipi sonlarni e’lon kilish uchun ishlatiladigan boshka butunsonli tiplar bilan uzaro moslashmaydi.
Masalan, kodning keyingi kismi bajarilmaydi:
Char ch;
Ch q 10;G’G’ kod kismi xato yozilgan
Buning sababi 10 butun son va Char tipiga avtomatik ravishda utkazilmaydi. Shundan kelib chikadiki, ushbu jarayonda tiplar uzaro moslashmaydi. Ushbu kodni kompilyatsiya kilganda kompilyator xato deb kursatadi.
Keyinchalik shu bobda bu cheklovni kanday xal kilishni kurib utamiz.
Mutaxassis javoblari!
Savol: Nima uchun S# da Unicode dan foydalaniladi?
Javob: S# ni yaratishda ishlab chikaruvchilar uz oldiga butun dunyoda ishlatilishi mumkin bulgan kompyuter tilini yaratishni maksad kilib kuygan. Shuning uchun ishlab chikaruvchilar dunyoning barcha tillari kiritilgan belgilarning standart majmuasi Unicode dan foydalanishgan. Tugri bu tilning ishlatilishi belgilari 8bitda kursatilishi mumkin bulgan ingliz, fransuz, olmon yoki ispan tillarida ishlatilishi uncha samarali emas, lekin bu dasturlarning global mikyosda utishi uchun tulanadigan xak.
Bul tipi
S#da bool – bul tipi uchun ikki kiymat aniklangan true va false (rost va yolgon)
Demak bool tipidagi uzgaruvchi yoki mantikiy masala bu ikki kiymatdan biriga teng buladi. Bundan tashkari bool tipi kiymatlarini butunsonli tipga utkazishning imkoni yuk. Masalan 1 kiymati true yoki 0 kiymati false tarzida shakllana olmaydi.
Bool tipi ishlatilishi kursatilgan dastur namunasini keltiramiz:
G’G’ dastur bool tipi ishlatilishini kursatad
Kuyida ushbu dastur natijasi keltirilgan
b uzgaruvchisining kiymati false
b uzgaruvchisining kiymati true
(10>9) bu true
Bul uzgaruchisining bazi bir xususiyatlariga etibor bering. Birinchidan, bool uzgaruvchisi WriteLine() orkali chikarilganda ekranda true yoki false suzlari chikarilmokda. Ikkinchidan, bool uzgaruvisini ishlatish bilan if operatorini boshkarish mumkin. Agar if operatori bajarilish sharti rostlik bulsa, unda if operatorini kuyidagicha yozish shart emas:
if(b – true)
Kiskarok yozish xam mumkin
if (b)
Uchinchidan < kabi takkoslash operatorlari natijasi bool tipi kiymatiga ega buladi. Shuning uchun xam 10>9 takkoslanishda ekranga true chikarilmokda. 10>9 yozilgan kushimcha kavuslar juftligi Q operatorining > operatoridan muximrok bulgani uchun kuyilgan.
Minutli amaliyot!
Unicode nima?
bool tipi uzgaruvchisi kanday kiymatlarga ega bula oladi?
Char tipi ma’lumotlarining bitlardagi ulchovi kancha?
Chikarishlarni formatlash.
Ma’lumotlarning keyingi tipini kurib chikishdan oldin kichik tuxtash kilamiz. Shu paytgacha biz chikarilayotgan ma’lumotlar ruyxati kismlarini Q belgisi bilan aeratib kelardik:
Console. WriteLine(“Gipotinuza uzunligi ” Q z);
Bu kulay, lekin sonli ma’lumotlarni chikarishning bunday usuli ma’lumotlarning ekranda paydo bulishini nazorat kilishga imkon bermaydi. Masalan, suzuvchi nuktali kiymatlar unlik darajalarini nazorat kilish imkonini bermaydi. Keyingi operatorni kurip chikaylik:
Console. WriteLine(“10G’3 ” Q100G’30);
Mars bilan suhbat
Mars bilan yer orasidagi masofa kamida 34 mlion mil. Biz bilan so’zlashish uchun marsga inson joulashtiramiz, maQsad shu masofada so’zlashish uchun Qancha vaQt ketishini bilish dasturini tuzish.yorug’lik tezligi 186000 milG’sek , tqsG’v signalni Qancha vaQtda yetib kelishini aniQlash uchun masofani yorug’lik tezligiga nisbatini olish kerak. VaQt birligi sekund va minutlarda hisoblanadi.
Qadamli Qo’llanma
yangi fayl tuzing va nomlang.Vfrs. cs.
vaQt xabarini Qancha vaQtda kelishini aniQlang
double distance;
double lightspeed;
double delay;
double delay in min;
boshlang’ich o’zgaruvchi Qiymatini distance ba lightspeed bering
distance q 34000000; G’G’34000000mil
lightspeed q 186000; G’G’186000milG’sek
xabarning Qancha vaQtda kelganini bilish uchun distanceG’1-ghtspeed ni olish kerak.
Delay q distance G’ lightspeed;
Console. Writelene (Er bilan Mars orasidagi masofa n” Q delayQ “ sekund)
Agar natija minutlarda olingan bo’lsa sekundga aylantiring, Quyidagi kod orQali natijani ekranga chiQaring
Delay_in_min q delayG’60;
Console. Writelene (“Qdelay_in_min ”);
Quyida Mars.cs. dasturining to’liQ Qismi keltirilgan
G’* Using System;
Class Mfrs {
Public static void Main ( ) {
Double distance;
Double lightspeed;
Double delay;
Double delay_in_min;
distance q 34000000; G’G’34000000 mil
lightspeed q 186000; G’G’186000 milG’sek
Delay q distance G’ lightspeed;
Console. Writelene (Er bilan Mars orasidagi masofa n” Q delayQ “ sekund)
Delay_in_min q delayG’60;
Console. Writelene (“Qdelay_in_min ”);
}
}
65-bet.
6-7-8 noaniQ o’Qib bo’lmadi.
66-bet
16-birliklar
Ba’zi dasturlarda o’nlik sanoQ tizimining o’rnida o’n oltilik tizimi, ya’ni 0 dan 9 va A da F gacha raQamlarni foydalanish Qulaydir. Bunda F va F gacha harfiy belgilaga mos ravishda 10 dan 15 gacha sonli Qiymat Qabul Qiladi. M: o’n oltilikdagi 10 soni o’nlikda 16 ga teng bo’ladi. O’n oltilik sonlarning ko’p ishlatilishini hisobga olgan holda, S# da o’n oltilik sonlarni ustun sonli formasida ishlaydi. O’n oltilik literallari OX velgisidan boshlanishi lozim.
Misollarda ko’gib chiQamiz.
Count – 0xFF; G’G’ 255 O’nlik sanoQ tizimida
Incr – 0xla; G’G’ 26 O’nlikda.
Belgili escape – ketma-ketliklar
S# dagi ko’pchilik kiritiluvchi usuldagi o’zgaruvchilar Qavs ichiga olinadi.
Ammo ayrim belgilarni Qo’llashda muammoli bo’ladi. Bundan tashQari belgi Qismi S# da maxsus Qiymatli bo’ladi. Qruning uchun ularni to’g’ridan- to’g’ri ishlatib bo’lmaydi. Ana shunday sabablarga ko’ra S# da shunday muammolarni hal Qilish uchun 2.2 jadvalda keltirilgan escape – ketma – ketliklar ishlatiladi. Bu ketma-ketliklar ajratilgan belgilar o’rnida Qo’llaniladi. M: tabulyatsiya belgisi Quyidagi o’zgaruvchilar yordamida o’zlashtiriladi.
Ch-‘g’t’;
Shu urda Ch- o’zgaruvchisi -‘g’t’ , birlik Qo’shtirnoQ ichiga olinadi.
2.1 jadavl. escape – ketma-ketliklar
g’a ogohlantirish (Qo’ng’iroQ)
g’b bir o’ringa Qaytish (backspace)
g’t yangi sahifaga o’tish (formfeed)
g’n yangi Qatorga o’tish(linefeed)
g’r karetkani Qaytarish(enter)
g’t gorizontal tabulyatsiya
g’v vertikal tabulyatsiya
g’0 nol
g’’ birlik Qo’shtirnoQ
g’” ikkilik Qo’shtirnoQ
g’g’ teskari QiyshiQ chiziQ
Matnli literallar
S# da yana bir turli literallar- integrali, ya’ni ikkili Qo’shtirnoQ olinadi. Quyuda ularga misollar keltiramiz;
“kichik tekshiruv matn”
Siz bundau ko’rinishdagi satrli (matinli) WriteLine ( ) byrug’ida ko’rib chiQQansiz.
Bundan tashQari matnli literallar bir va birnecha escape – ketma-ketliklardan iborat bo’lishi mumkin.
Using System;
Class StrDemo
Public stat_c vo_d Na n ( )
Console WriteLine (Birinchi Qator , Ikkinchi Qator)
Console WriteLine (“Ag’Bg’C”);
Console WriteLine (“Dg’Eg’U”);
}
}
Ushbu dastur Quyidagi matn satrlarni chiQaradi.