Salam
Növbəti dərsimizə başlayaq.
Bu dərsdə biz keçən dərsimizdəki bəhsi davam etdirəcəyik. Dəyişənlərin tipləri və onların arasında əməliyyatlar.
Keçən dərsdə biz tam ədəd tipli dəyişənlərlə əmaliyyatlar etdik və nəticədə kəsr ədəd almağın yollarını müəyyən etdik. Müvəqqəti tip dəyişmə yolu yalnız əməliyyat olunan sətrdə təsiri qalır, sonra isə dəyişən yenə də əvvəlki vəziyyətinə qayıdır.
Belə kod yazaq:
Nəticə belə olacaq
Kodu dəyişək.
İndi isə nəticə belə olacaq.
Aha, deməli əməliyyat olunanlardan birinin kəsr ədəd olması kifayət edirmiş ki, nəticədə kəsr ədəd alaq. Gəlin dəyişənlərlə yoxlayaq.
int tEded = 10;
Nəticə eynidir.
Bəs belə olsa:
Belə etsək də, eyni cavabı alacayıq
Kəsr ədədi almaq üçün əməliyyat olunan ədələrdən birinin kəsr ədəd olması kifayətdir.
Bəs tərsinə olsa nə baş verər?
Yoxlayaq.
Üçüncü sətirin altından qırmızı dalğalı xətt çəkildi.
Proqramı işlətmək istəyəndə belə bir mesaj ekrana gəlir:
Mesaj pəncərəsində bizdən soruşurlar ki, səhv ola-ola proqramı işlətmək fikrimiz varmı? Təbii ki bunu eləmək məsləhət deyil, gərək əvvəl səhvləri tapıb həll edək. Biz "No" deyirik.
Bəs səhv nədədir. Visual Studio bizə aşağıda ERROR siyahısında bildirir. İkinci yol isə siçanın ox işarəsini dalğavari xəttin üstünə gətirəndə, ekranda səhvin mesajı yazılır.
Cannot implicitly convert type 'double' to 'int'. An explicit conversion exists (are you missing a cast?)
Yəni biz double tipli kəsr ədədi qeyri-müəyyən surətdə int tipli tam ədədə çevirə bimərik.
Yadımıza salaq C şarp necə hesablayır. Bəli, sağdan sola, yəni kəsr ədədi kəsr ədədə bölür, nəticədə kəsr ədədi alır, və sonra onu tam ədədli dəyişənə yazmaq istəyir. Bu isə adi halda olmaz. Niyə?
Burada C# bizi, yəni proqramçıları təsadüfi səhvlərdən qoruyur. Çün ki kəsr ədədi tam ədədə çevirəndə qiymət itkisi baş verə bilər. Yəni 3.24 tam ədədə çevirəndə 3 qalır, 0.24 itir. Bu da hesablamaların səhvinə gətirib çixarır.
Bəs nə etməli? Əgər bu əməliyyat tam ədədlə bitməlidirsə, və qiymət itkisi bizi maraqlandırmırsa, onda açıq surətdə bunu Cşarpa bildirmək lazımdır. Yəni mötərizədə bunu açıq işarə etməklə. Bu halda Cşarp anlayır ki, biz bunu bilərəkdən edirik və hesablamaların nəticəsində səhvdən xəbərdarıq.
Gəlin kodu yazaq:
Nəticə budur:
Gördüyünüz kimi tam ədədi aldıq.
5-ci dərsin sonu.
Növbəti dərsimizə başlayaq.
C# dərsləri. 5-ci dərs.
Bu dərsdə biz keçən dərsimizdəki bəhsi davam etdirəcəyik. Dəyişənlərin tipləri və onların arasında əməliyyatlar.
Keçən dərsdə biz tam ədəd tipli dəyişənlərlə əmaliyyatlar etdik və nəticədə kəsr ədəd almağın yollarını müəyyən etdik. Müvəqqəti tip dəyişmə yolu yalnız əməliyyat olunan sətrdə təsiri qalır, sonra isə dəyişən yenə də əvvəlki vəziyyətinə qayıdır.
Belə kod yazaq:
int tEded = 10;
double kEded = tEded / 4;
Console.WriteLine(kEded);
Console.ReadKey();
Kodu dəyişək.
int tEded = 10;
double kEded = tEded / 4.0;
Console.WriteLine(kEded);
Console.ReadKey();
İndi isə nəticə belə olacaq.
Aha, deməli əməliyyat olunanlardan birinin kəsr ədəd olması kifayət edirmiş ki, nəticədə kəsr ədəd alaq. Gəlin dəyişənlərlə yoxlayaq.
int tEded = 10;
double kEded1 = 4.5;
double kEded2 = tEded / kEded1;
Console.WriteLine(kEded2);
Console.ReadKey();
Nəticə eynidir.
Bəs belə olsa:
int tEded1 = 10;
int tEded2 = 3;
double kEded = tEded1 / (double)tEded2;
Console.WriteLine(kEded);
Console.ReadKey();
Belə etsək də, eyni cavabı alacayıq
int tEded1 = 10;
int tEded2 = 3;
double kEded = (double)tEded1 / tEded2;
Console.WriteLine(kEded);
Console.ReadKey();
Deməli bu nəticəyə gəldik:Kəsr ədədi almaq üçün əməliyyat olunan ədələrdən birinin kəsr ədəd olması kifayətdir.
Bəs tərsinə olsa nə baş verər?
Yoxlayaq.
double kEded1 = 10.5;
double kEded2 = 3.5;
int tEded = kEded1 / kEded2;
Console.WriteLine(tEded);
Console.ReadKey();
Üçüncü sətirin altından qırmızı dalğalı xətt çəkildi.
Proqramı işlətmək istəyəndə belə bir mesaj ekrana gəlir:
Mesaj pəncərəsində bizdən soruşurlar ki, səhv ola-ola proqramı işlətmək fikrimiz varmı? Təbii ki bunu eləmək məsləhət deyil, gərək əvvəl səhvləri tapıb həll edək. Biz "No" deyirik.
Bəs səhv nədədir. Visual Studio bizə aşağıda ERROR siyahısında bildirir. İkinci yol isə siçanın ox işarəsini dalğavari xəttin üstünə gətirəndə, ekranda səhvin mesajı yazılır.
Cannot implicitly convert type 'double' to 'int'. An explicit conversion exists (are you missing a cast?)
Yəni biz double tipli kəsr ədədi qeyri-müəyyən surətdə int tipli tam ədədə çevirə bimərik.
Yadımıza salaq C şarp necə hesablayır. Bəli, sağdan sola, yəni kəsr ədədi kəsr ədədə bölür, nəticədə kəsr ədədi alır, və sonra onu tam ədədli dəyişənə yazmaq istəyir. Bu isə adi halda olmaz. Niyə?
Burada C# bizi, yəni proqramçıları təsadüfi səhvlərdən qoruyur. Çün ki kəsr ədədi tam ədədə çevirəndə qiymət itkisi baş verə bilər. Yəni 3.24 tam ədədə çevirəndə 3 qalır, 0.24 itir. Bu da hesablamaların səhvinə gətirib çixarır.
Bəs nə etməli? Əgər bu əməliyyat tam ədədlə bitməlidirsə, və qiymət itkisi bizi maraqlandırmırsa, onda açıq surətdə bunu Cşarpa bildirmək lazımdır. Yəni mötərizədə bunu açıq işarə etməklə. Bu halda Cşarp anlayır ki, biz bunu bilərəkdən edirik və hesablamaların nəticəsində səhvdən xəbərdarıq.
Gəlin kodu yazaq:
double kEded1 = 10.5;
double kEded2 = 3.5;
int tEded = (int)(kEded1 / kEded2);
Console.WriteLine(tEded);
Console.ReadKey();
Nəticə budur:
Gördüyünüz kimi tam ədədi aldıq.
5-ci dərsin sonu.
Комментариев нет:
Отправить комментарий