Kurs ishi mavzu: Turlarni almashtirish operatorlari. Toshkent-2023
Download 192.85 Kb.
|
Miraxmedov
- Bu sahifa navigatsiya:
- Xulosa
begin M:=5; k:=M-2.7; L4: end. Ayrim paytlarda, bahzi bir operatorlarga bir nechta metka bilan murojaat qilishga to`g`ri kelganda bo`sh operatordan foydalanish qo`l keladi. S5:; S6:; S7: x:=0.5; C # Math.Round usuli Ushbu C # misol dasturlari .NET Framework-dan Math.Round usulini ko'rsatadi. MidpointRounding qoplanadi.Math.Round raqamlarni eng yaqin qiymatga aylantiradi. U kerakli sonli raqamlarni oladi. Ushbu statik usul ikki va o'nli turlarni yaxlitlashning aniq usulini beradi. Bu xatolar xavfini kamaytiradi. Statik usul Misol. Birinchidan, Math.Round bir nechta ortiqcha yuklarga va MidpointRounding sanab o'tilgan doimiylarda aniqlangan ikkita yaxlitlash rejimiga ega. Bu erda biz ikkita va o'nlik turlarga misol keltiramiz. Math.Round nima turli xil argumentlar bilan qaytishini ko'ramiz.Haddan tashqari yuklash IkkilikDecimals Math.Round ishlatadigan C # dasturi tizim yordamida; sinf dasturi Convert sinfining usullari turlar orasidagi konversiyani amalga oshirishning umumiy usulini qo'llab-quvvatlaydi. Convert sinfi To using System; class Program{ static void Main(){ // Round double type in three ways. double before1 = 123.45; Double .after1=Math.Round(before1, 1, MidpointRounding.AwayFromZero); // Rounds "up" double after2 = Math.Round(before1, 1, MidpointRounding.ToEven); // Rounds to evendouble after3 = Math.Round(before1); Console.WriteLine(before1); // Original Console.WriteLine(after1); Console.WriteLine(after2); Console.WriteLine(after3); // Round decimal type. decimal before2 = 125.101M; decimal after4 = Math.Round(before2); decimal after5 = Math.Round(before2, 1); Console.WriteLine(before2); // Original Console.WriteLine(after4); Console.WriteLine(after5); }} Output MidpointRounding.AwayFromZero MidpointRounding.ToEven Haddan tashqari yukni hisobga olgan holda, ushbu sinfning usullaridan foydalangan holda siz biron biridan ikkinchisiga mumkin bo'lgan konversiyalarni bajarishingiz mumkin. C # Math.Round usuli Ushbu C # misol dasturlari .NET Framework-dan Math.Round usulini ko'rsatadi. MidpointRounding qoplanadi. Math.Round raqamlarni eng yaqin qiymatga aylantiradi. U kerakli sonli raqamlarni oladi. Ushbu statik usul ikki va o'nli turlarni yaxlitlashning aniq usulini beradi. Bu xatolar xavfini kamaytiradi. Statik usul Misol. Birinchidan, Math.Round bir nechta ortiqcha yuklarga va MidpointRounding sanab o'tilgan doimiylarda aniqlangan ikkita yaxlitlash rejimiga ega. Bu erda biz ikkita va o'nlik turlarga misol keltiramiz. Math.Round nima turli xil argumentlar bilan qaytishini ko'ramiz. Haddan tashqari yuklash IkkilikDecimals Math.Round ishlatadigan C # dasturi tizim yordamida; sinf dasturi { statik bo'shliq Asosiy () { // // Uch usulda dumaloq juftlik turi. // bundan oldin ikki barobar1 = 123,45; double after1 = Math.Round (oldin1, 1, MidpointRounding.AwayFromZero); // "yuqoriga" aylanadi double after2 = Math.Round (oldin1, 1, MidpointRounding.ToEven); // Juftga aylanadi double after3 = Math.Round (oldin1); Console.WriteLine (oldin1); // Original Console.WriteLine (after1); Console.WriteLine (after2); Console.WriteLine (after3); // // Dumaloq o'nlik turi. // o‘nlikdan oldin2 = 125.101M; o'nlikdan keyin4 = Math.Round (oldin2); o'nlikdan keyin 5 = Math.Round (oldin2, 1); Console.WriteLine (oldin2); // Original Console.WriteLine (after4); Console.WriteLine (after5); } } Chiqish 123.45 123.5 <- MidpointRounding.AwayFromZero 123.4 <- MidpointRounding.ToEven 123 125.101 125 125.1 Math.Round usuli bir necha marta chaqiriladi. .NET Framework o'nlik va ikkilamchi turlarni ajratib turishi sababli, eng yaxshi ortiqcha yuklanishlar avtomatik ravishda tanlanadi. Siz Math.Round-ga bitta-uchta argument bilan qo'ng'iroq qilishingiz mumkin. Barcha usullar tekshiriladigan konversiyani amalga oshiradi va konversiyani amalga oshirish mumkin bo'lmaganda yoki konversiyani amalga oshirishda aniqlik yo'qolganda istisno qo'yadi. Mana bir misol: /// /// Convert sinfining sinov usullari /// ommaviy bekor ConvertTest (){ string s; bayt b; int n; er-xotin x; bool bayrog'i; char sim; DateTime dt; sym = '7'; s = Convert.ToString (sim); x = Convert.ToDouble (lar); n = Convert.ToInt32 (x); b = Convert.ToByte (n); flag = Convert.ToBoolean (b); x = Convert.ToDouble (bayroq); s = Convert.ToString (bayroq); // sym = Convert.ToChar (bayroq); s = "300"; n = Convert.ToInt32 (s); // b = Convert.ToByte (lar); s = "14.09"; // bayroq = Convert.ToBoolean (lar); // x = Convert.ToDouble (lar); s = "14.09.2008"; dt = Convert.ToDateTime (lar);} Ushbu misol turlarning turli xil konversiyalarini namoyish etadi. Ushbu konversiyalarning barchasi xavfli bo'lib, ular Convert sinfining usullari yordamida aniq amalga oshiriladi. Dastlab, belgilar turidagi ma'lumotlar satrga aylantiriladi. Keyin ushbu ma'lumotlar haqiqiy turga aylantiriladi, so'ngra konversiyalar arifmetik tur ichida turni ikki martadan baytgacha kamaytirish bilan amalga oshiriladi. So'nggi konvertatsiya misoli - string ma'lumotlarini DateTime-ga aylantirish. Bir turdan ikkinchisiga xavfli konversiyalar ba'zi ma'lumotlarda muvaffaqiyatli bajarilishi va boshqa ma'lumotlar bilan xatolikka olib kelishi mumkin. Bizning misolimizda ish vaqtidagi xatolarga olib keladigan bayonotlar izohlanadi. Birinchi xato ma'lumotni mantiqiy turdan belgi turiga o'tkazishga urinishda paydo bo'ladi, chunki qiymatni ba'zi bir belgiga (masalan, T) haqiqiy qiymatga aylantiradigan konversiya mavjud emas. Oldingi bayonotlarda xuddi shu ma'lumotlar mag'lubiyatga va arifmetik turlarga muvaffaqiyatli o'tkazilganligiga e'tibor bering. Quyidagi xato, 300 qiymatli mag'lubiyatni bayt yozish uchun o'zgartirishga urinayotganda paydo bo'ladi. Tegishli usul mag'lubiyatga yozilgan qiymat konversiya maqsadini ko'rsatadigan tur uchun juda katta ekanligini tan oladi.Mantiqiy va soxta mantiqiy konstantalardan tashqari boshqa qatorni mantiqiy turga o'tkazishga urinayotganda yana bir xato yuz beradi. Ushbu misoldagi so'nggi xato amalda juda keng tarqalgan. Bu raqamning kasr qismini ajratish uchun vergul o'rniga nuqta noto'g'ri ishlatilganligi bilan bog'liq.Qanday xulosalar qilish kerak? Convert sinfining usullari bilan amalga oshiriladigan xavfli konversiyalar haqiqatan ham xavfli. Shu sababli, ular har doim qo'riqlanadigan blokga joylashtirilishi va mumkin bo'lgan istisnoga qarshi bloklar yaratilishi kerak. Vaziyatni ko'rib chiquvchi ikkita muhim vazifani bajarishi kerak. Ulardan birinchisi informatsion bo'lib, unda yuzaga kelgan xato tavsifi bilan etarlicha batafsil ma'lumot berilishi kerak. Ikkinchi vazifa ham bir xil darajada muhimdir. Dasturchi normal ishlashni davom ettirishi uchun ishlov beruvchi vaziyatni to'g'rilashga harakat qilishi kerak. Bu, masalan, foydalanuvchiga noto'g'ri ko'rsatilgan ma'lumotlarni qayta kiritishga, vaziyatni to'g'irlash uchun qo'shimcha modulni chaqirishga imkon berishi kerak. Har holda, ishni tiklash bo'yicha choralar boshqacha bo'lishi mumkin. Asosiy turlarga va undan qaytishga o'tishKonvertatsiya qilish usuli har bir asosiy turni har qanday boshqa asosiy turga aylantirish uchun mavjud. Shu bilan birga, ma'lum bir konversiya uslubiga haqiqiy qo'ng'iroq, ish vaqtidagi asosiy turdagi qiymat va maqsadli tayanch turiga qarab, beshta natijadan birini keltirib chiqarishi mumkin. Ushbu beshta natijalar:Konvertatsiya qilinmaydi. Bu turdan o'ziga o'girishga harakat qilinganida sodir bo'ladi (masalan, Convert.ToInt32 (Int32) ni Int32 turidagi argument bilan chaqirish orqali). Bunday holda, usul oddiy turdagi asl nusxani qaytaradi.InvalidCastException. Bu ma'lum bir konversiyani qo'llab-quvvatlamaganda sodir bo'ladi. InvalidCastException quyidagi konversiyalar uchun tashlanadi: Char dan Boolean, Single, Double, Decimal yoki DateTime-ga o'tkazish. Boolean, Single, Double, Decimal yoki DateTime-dan Char-ga o'tkazish.DateTime-dan String-dan tashqari har qanday boshqa turga o'tkazish.Stringdan tashqari har qanday boshqa turdagi DateTime-ga o'tkazish.FormatException. Bu satr qiymatini boshqa har qanday asosiy turga aylantirish urinishi muvaffaqiyatsiz tugaganda sodir bo'ladi, chunki satr to'g'ri formatda emas. Istisno quyidagi konversiyalar uchun belgilanadi:Mantiqiy qiymatga o'tkaziladigan satr Boolean.TrueString yoki Boolean.FalseString ga teng bo'lmaydi.Char qiymatiga o'tkaziladigan qator bir nechta belgidan iborat.Har qanday raqamli turga o'tkaziladigan satr haqiqiy raqam sifatida tan olinmaydi. DateTime-ga o'tkaziladigan satr haqiqiy sana va vaqt qiymati sifatida tan olinmaydi. Muvaffaqiyatli konvertatsiya. Oldingi natijalarda ko'rsatilmagan ikki xil bazaviy turdagi konversiyalar uchun barcha kengaytirilgan konversiyalar va shuningdek, ma'lumotlarning yo'qolishiga olib kelmaydigan barcha toraytirilgan konversiyalar muvaffaqiyatli bo'ladi va usul maqsadli tayanch turining qiymatini qaytaradi. OverflowException. Bu toraytirilgan konvertatsiya ma'lumotlarning yo'qolishiga olib keladigan bo'lsa sodir bo'ladi. Masalan, qiymati 10000 bo'lgan Int32 nusxasini bayt turiga aylantirishga urinish OverflowExceptionni tashlaydi, chunki 10000 bayt ma'lumotlar turi doirasidan tashqarida. Turli konversiyalarni aniqlash usullaridan tashqari, Convert klassida boshqa usullar mavjud, masalan, Unicode belgilaridan bitta baytli ASCII ga o'tkazish, massivlar bilan bog'liq konversiyalar va boshqa usullar. Tafsilotlarni yordam tizimida topishingiz mumkin.Convert sinfining usullari turlar orasidagi konversiyani amalga oshirishning umumiy usulini qo'llab-quvvatlaydi. Convert sinfi To /// /// Convert sinfining sinov usullari /// ommaviy bekor ConvertTest (){ string s; bayt b; int n; bool bayrog'i; char sim; DateTime dt; sym = '7'; s = Convert.ToString (sim); x = Convert.ToDouble (lar); n = Convert.ToInt32 (x); b = Convert.ToByte (n); flag = Convert.ToBoolean (b); x = Convert.ToDouble (bayroq); s = Convert.ToString (bayroq); // sym = Convert.ToChar (bayroq); s = "300"; n = Convert.ToInt32 (s); // b = Convert.ToByte (lar); s = "14.09"; // bayroq = Convert.ToBoolean (lar); // x = Convert.ToDouble (lar); s = "14.09.2008"; dt = Convert.ToDateTime (lar); } Ushbu misol turlarning turli xil konversiyalarini namoyish etadi. Ushbu konversiyalarning barchasi xavfli bo'lib, ular Convert sinfining usullari yordamida aniq amalga oshiriladi. Dastlab, belgilar turidagi ma'lumotlar satrga aylantiriladi. Keyin ushbu ma'lumotlar haqiqiy turga aylantiriladi, so'ngra konversiyalar arifmetik tur ichida turni ikki martadan baytgacha kamaytirish bilan amalga oshiriladi. So'nggi konvertatsiya misoli - string ma'lumotlarini DateTime-ga aylantirish.Bir turdan ikkinchisiga xavfli konversiyalar ba'zi ma'lumotlarda muvaffaqiyatli bajarilishi va boshqa ma'lumotlar bilan xatolikka olib kelishi mumkin. Bizning misolimizda ish vaqtidagi xatolarga olib keladigan bayonotlar izohlanadi. Birinchi xato ma'lumotni mantiqiy turdan belgi turiga o'tkazishga urinishda paydo bo'ladi, chunki qiymatni ba'zi bir belgiga (masalan, T) haqiqiy qiymatga aylantiradigan konversiya mavjud emas. Oldingi bayonotlarda xuddi shu ma'lumotlar mag'lubiyatga va arifmetik turlarga muvaffaqiyatli o'tkazilganligiga e'tibor bering. Quyidagi xato, 300 qiymatli mag'lubiyatni bayt yozish uchun o'zgartirishga urinayotganda paydo bo'ladi. Tegishli usul mag'lubiyatga yozilgan qiymat konversiya maqsadini ko'rsatadigan tur uchun juda katta ekanligini tan oladi.Mantiqiy va soxta mantiqiy konstantalardan tashqari boshqa qatorni mantiqiy turga o'tkazishga urinayotganda yana bir xato yuz beradi. Ushbu misoldagi so'nggi xato amalda juda keng tarqalgan. Bu raqamning kasr qismini ajratish uchun vergul o'rniga nuqta noto'g'ri ishlatilganligi bilan bog'liq.Qanday xulosalar qilish kerak? Convert sinfining usullari bilan amalga oshiriladigan xavfli konversiyalar haqiqatan ham xavfli. Shu sababli, ular har doim qo'riqlanadigan blokga joylashtirilishi va mumkin bo'lgan istisnoga qarshi bloklar yaratilishi kerak. Vaziyatni ko'rib chiquvchi ikkita muhim vazifani bajarishi kerak. Ulardan birinchisi informatsion bo'lib, unda yuzaga kelgan xato tavsifi bilan etarlicha batafsil ma'lumot berilishi kerak. Ikkinchi vazifa ham bir xil darajada muhimdir. XulosaHozirgi kunda C# dasturlash tili yuqori bosqichli dasturlash tillari ichida eng samarali dasturlash tillaridan hisoblanadi. C# dasturlash tilida dastur tuzish uchun Visual Studio 2010 muhitidan foydalanamiz. C# dasturlash tili obektga mo’ljallangan . Birinchi bob 3 ta bo’limdan iborat. Birinchi bo’limda arifmetik turlarni almashtirish haqida ma’lumotlar keltirilgan. Ikkinchi bo’limda C# tilida Convert sinfi haqida ma’lumotlar keltirilgan. Convert sinfiga misollar keltirilgan. Convert sinfida ishlash unda dasturchiga qulay usullari haqida tushuntirib berilgan. Bundan tashqari har bir operatorning funksional imkoniyatlari misollar orqali tushuntirib berilgan.Ushbu kurs ishimda Convert sinfi va uning metodlari haqida ma‘lumot berib o‘tilgan.Convert sinfi metodlari turlari ularning foydalanishi tartibi haqida yuqoridagi aytib o‘tilgan. Xulosa qilib shuni aytib o‘tish mumkinki Convert sinfi va uning metodlari har bir dasturlash muhitida katta rol o‘ynaydi.Ushbu ishda keltirilgan ma‘lumotlardan C# tilida Convert sinfi va matodlariga bog‘liq imkoniyatlarini qo‘llashni yo‘lga qo‘yishni , ya‘ni kengroq o‘rganishni istovchilarning faydalanishlari yaxshi natija beradi deb hisoblaymiz. Download 192.85 Kb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling