O’zbekiston respublikasi oliy va o’rta-maxsus ta’lim vazirligi samarqand davlat universiteti mexanika-matematika fakulteti amaliy matematika va informatika bo’limi



Yüklə 181,19 Kb.
Pdf görüntüsü
səhifə6/12
tarix11.12.2023
ölçüsü181,19 Kb.
#143754
1   2   3   4   5   6   7   8   9   ...   12
c dasturlash tilida hisoblash kalkulyatori yaratish

double
 va 
long double

C++ standart haqiqiy qiymatlarni: 
float, double
va 
long double
saqlash 
uchun ma’lumotlar uchta tipini aniqlaydi. 
Suzuvchi nuqtali ma’lumotlar tiplari butun sonli qiymatlarga nisbatan 
aksincha 
kompyuter 
xotirasida 
saqlanadi. 
IBM 
PC 
muvofiqlashgan 
kompyuterlarda 
float
tipidagi miqdorlar 4 baytni egallaydi, ulardan bitta ikkilik 
razryad mantiqiy ishorasiga ajratiladi, 8 razryatli tartibga va 23 tasi mantissaga 
ajratiladi. Mantissaning katta raqami 1 ga teng bo’lgani uchun u saqlanmaydi. 
8 bayt joy olgan 
double
tipidagi miqdorlar uchun tartib va mantissalar mos 
ravishda, 11 va 52 razryad ajratiladi. Manrissa uzunligi sonning aniqligi, tartib 
uzunligi – uning oralig’ini aniqlaydi. 1.4 – jadvaldan ko’rinadiki
float
va 
long int 
tipidagi miqdorlarga ajratilgan bir xil sondagi baytlarda ularning mumkin bo’lgan 
qiymatlar oraliqlari tasvirlashning ichki shakli tufayli juda katta farq qiladi.
long
maxsuslashtirgich 
double
tipi nomi oldiga qo’yilsa, miqdorga 10 bayt 
ajratilganini ko’rsatadi. 
Suzuvchi nuqtali konstantalar 
double
tipiga ega. Konstanta tipini 
F, f (float)
va 
L, l (long)
suffikslar yordamida oshkora ko’rsatish mumkin. Masalan, 2E+6L 
konstanta 
long double
tipiga ega, 1.82f konstanta – 
float
tipiga ega. 
Ma’lumotlar tipini keltirish (Data casting) 
Gohida bir turdagi o'zgaruvchining qiymatini boshqa tipdagi o'zgaruvchiga 
berish kerak bo'ladi. Bu amal ma'lumot tipini keltirish (data type casting) deyiladi. 


Ko'p hollarda bu amal avtomatik ravishda, kompilyator tarafidan bajariladi. 
Masalan ushbu parchani ko'raylik: 
char c = 33; 
int k; 
k = c; 
Bu yerda k ning sig'imi c nikidan kattaroqdir. Shuning uchun c ning qiymatini k 
ga berishda hech qanday muammo paydo bo'lmaydi. Quyidagi misolni ko'raylik: 
int i = 5; 
float f = 9.77; 
float result; 
result = f + i; 
C++ ning kompilyatori ikki turdagi o'zgaruvchilar bilan ishlay olmaydi. 
Shu sababli ifodadagi sig'imi kichik bo'lgan o'zgaruvchilar ifodadagi qatnashgan 
eng katta sig'imga o'tqaziladi. Bu ham avtomatik tarzda bajariladi. i o'zgaruvchimiz 
qiymati vaqtinchalik 
float
tipidagi o'zgaruvchiga beriladi. Bu vaqtinchalik 
o'zgaruvchi esa f ga qo'shiladi. Chiqqan javob result ga beriladi. Yuqorida ko'rib 
chiqqanlarimiz kompilyator tarafidan bajariladi. Bu kabi tip o'zgarishlarini 
avtomatik konversiya(implicit conversion) deymiz. Lekin gohida to'g'ri 
kelmaydigan tiplarni birga qo'llashga to'g'ri keladi. Masalan 
float
tipiga double 
tipni o'tqazish, char ga int va hokazo. Bu hollarda ochiq konversiya (explicit 
conversion) amalini bajarishimiz kerak. Buni bajarishning ikki uslubi bor. 
Birinchisi C da qo'llaniladigan yo'l, ikkinchisi C++ uslubi. C da tipni keltirish 
uchun o'zgaruvchi oldiga kerakli tipni () qavslar ichida yozamiz.
int k = 100; 
char s; 


 s = (char)k; 
Yuqorida k ning qiymatini char tipidagi vaqtinchalik o'zgaruvchiga berildi, keyin 
s ga ushbu o'zgaruvchi qiymatini berildi.Bu yerda etibor berilishi kerak bo'lgan 
narsa shuki, 100 char ga ham to'g'ri keladi. Agar k ning qiymati char oladigan 
qiymattan kattaroq/kichikroq bo'ladigan bo'lsa, bu hato olib keladi. Shu sababli C 
dagi tip keltirish nisbatan havfli hisoblanadi. Lekin albatta bilib qo'llanilsa katta 
yordam beradi. C++ da ma'lumotlar tipini keltirish uchun mahsus operatorlar 
kiritildi. C uslubidagi keltirish hamma sharoitda qo'llanilar edi. C++ ning keltirish 
operatorlari esa faqat o'ziga ajratilgan funksiyalarni bajaradi. Undan tashqari ular C 
dagi keltirishlardan ko'ra kuchsizroqdir. Shu sababli hato ehtimoli kamaytirildi. 
Yana bir afzallik tarafi shundaki, yangi stildagi keltirish operatorlari tip 
tekshirishlarini bajarishadi, agar noto'g'ri keltirish bajarilsa, bu sintaktik hatoga 
olib keladi. 
Ular quyida berilgan: 
static_cast 
dynamic_cast 
const_cast 
reinterpret_cast 
static_cast ni ko'rib chiqaylik. 
int k = 200; 
char h; 
h = static_cast(k); 

Yüklə 181,19 Kb.

Dostları ilə paylaş:
1   2   3   4   5   6   7   8   9   ...   12




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©www.genderi.org 2024
rəhbərliyinə müraciət

    Ana səhifə