Ma’ruza mashg`ulot uchun


Turlar. Turni o`zgartirish qonuniyati


Download 0.85 Mb.
bet16/49
Sana19.06.2023
Hajmi0.85 Mb.
#1600219
1   ...   12   13   14   15   16   17   18   19   ...   49
Bog'liq
1-semestr maruzalar

3.5. Turlar. Turni o`zgartirish qonuniyati .
O‘zgartirishlar
Qiymatlar tipini standart arifmetik o‘zgartirish
Ifodalarni arifmetik hisoblash jarayonida hisoblash natijasidan kelib chiqqan qiymat tipini o‘zgartirishga to‘g‘ri kelib qolishi mumkin. Agar operandlarning har ikkisi bir xil tipga tegishli bo‘lsa va bajariluvchi arifmetik amal shu tip uchun aniqlangan bo‘lsa u holda natija ham aynan shu tipli qiymat bo‘ladi. Tip uchun arifmetik amal aniqlangan deb, shu tip uchun yozilgan amalni bajarishga ruxsat etilishiga aytiladi.
Agar operandlar har xil tipli bo‘lsa va bu tiplar uchun arifmetik amal aniqlanmagan bo‘lsa, hisoblashdan avval kichikroq tipni uning qiymatini va aniqligini saqlagan xolda kattaroq tipga avtomatik o‘zgartirish bajariladi. Bunday o‘zgartirishni avtomatik yoki oshkor bo‘lmagan o‘zgartirish deyiladi.
Avtomatik o‘zgartirish qachonki qiymatni yo‘qotishga olib kelmaydigan holat bo‘lsa shundagina amalga oshadi. Aks xolda oshkor o‘zgartirishni amalga oshirishga to‘g‘ri keladi. Oshkor o‘zgartirish dasturchi tomonidan (tip)x amalini bajarish orqali amalga oshiriladi. Masalan: (int)a; Bunda qiymatni aniqliligi dasturchining qanday tip tanlashiga bog‘liq bo‘ladi.
Arifmetik amallar int tipidan kichik bo‘lgan tiplar uchun aniqlanmagan. Bu shuni bildiradiki agar ifodada sbyte, byte, short va ushort kabi tipli kattaliklar ishtirok etgan bo‘lsa, amalni bajarishdan oldin ular int tipiga avtomatik o‘zgartirib olinadi, so‘ngra amal bajariladi.
3.3 rasmda avtomatik o‘zgartirishni amalga oshishini ketma-ketligi keltirilgan. Unga ko‘ra ifodada operandlarning biri ikkinchisiga nisbatan kichikroq tipga tegishli bo‘lsa, hisoblash jarayoni davomida kichikroq tip kattarog‘iga avtomatik o‘zgartirib olinadi. Ushbu o‘zgartirish operandga ta’sir etmaydi. Agar tip chegaradan o‘tib ketsa yoki rasmdagi tartibga to‘g‘ri kelmasa kompilyatsiya jarayonida xatolik yuzaga keladi.
Ifodalarni hisoblash jarayonida turli xil xatoliklar yuzaga kelishi mumkin, masalan: 0 ga bo‘lish, xotiraning to‘lib ketish va sh.k.lar. Bunday xollarda barcha yuqori bosqichli algoritmik tillarda bo‘lgani kabi C# da ham xatoliklarni qayta ishlash mexanizmi mavjud bo‘lib, ushbu mexanizmdan foydalanib dasturning avariya xolati bilan yakunlanishining oldi olinadi. Bu mexanizm favqulod(istisno)li xolatlarni qayta ishlash mexanizmi deb yuritiladi.

3.3.-rasm Tiplarni oshkor bo‘lmagan arifmetik o‘zgartirish ketma-ketligi


Hisoblash jarayonida xatolik yuzaga kelsa, mexanizm bu xatolikka mos keluvchi maxsus qiymat generatsiya qiladi. Har bir tipning unga mos keluvchi o‘zining favqulod kodlari mavjud. Bu kodlar C# da, xatoliklarning umumiy ajdod sinfi Exception sinfi orqali taqdim etiladi. Masalan, 0 ga bo‘lishda DivideByZeroException xatolik kodi, xotira yetishmasligida esa OutOfMemoryException xatolik kodi qaytariladi. Dasturchi ushbu kodlarni istisnoli xolatlarni qayta ishlash bloki try..catch konstruksiyasi orqali “tutib” oladi va qayta ishlaydi. Istisnoli xolatlarni qayta ishlash mexanizmi to‘g‘risida keyinroq batafsil to‘xtalib o‘tamiz.


Download 0.85 Mb.

Do'stlaringiz bilan baham:
1   ...   12   13   14   15   16   17   18   19   ...   49




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling