Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

BPR151 ALGORİTMA VE PROGRAMLAMA - I Öğr. Gör. Bayram AKGÜL

Benzer bir sunumlar


... konulu sunumlar: "BPR151 ALGORİTMA VE PROGRAMLAMA - I Öğr. Gör. Bayram AKGÜL"— Sunum transkripti:

1 BPR151 ALGORİTMA VE PROGRAMLAMA - I Öğr. Gör. Bayram AKGÜL

2 2 Tip Dönüştürme –Belirtmeden Tip Dönüştürme –Belirterek Tip Dönüştürme Convert sınıfı Parse(string) Metodu TryParse(string) Metodu Bugünkü konular

3 Tip Dönüştürme C#'ta düşük kapasiteli bir değişken, sabit ya da değişken ve sabitlerden oluşan matematiksel ifade daha yüksek kapasiteli bir değişkene atanabilir. Buna belirtmeden tip dönüşümü denir. Aşağıdaki tabloda belirtmeden otomatik tip dönüşümü ile ilgili ilişki verilmiştir. 3

4 Sayısal Veri Tipleri ve Özellikleri 4 Veri tipiboyutAralık sbyte1 byte-128 : 127 byte1 byte0 : 255 short2 byte : ushort2 byte0 : int4 byte : uint4 byte0 : long8 byte : ulong8 byte0 : float (7 basamak)4 byte e-38 : e+38 double (15-16 basamak)8 byte e-308 : e+308 decimal (28-29 basamak)8 byte

5 Değişken Tipi Kategorileri 5 Veri TipiKategoriSon Ek bool Boolean char İşaretsiz, Sayısal, Tam sayı byte İşaretsiz, Sayısal, Tam sayı sbyte İşaretli, Sayısal, Tam sayı short İşaretli, Sayısal, Tam sayı ushort İşaretsiz, Sayısal, Tam sayı int İşaretli, Sayısal, Tam sayı uint İşaretsiz, Sayısal, Tam sayı U veya u long İşaretli, Sayısal, Tam sayı L veya l ulong İşaretsiz, Sayısal, Tam sayı UL veya ul float Sayısal, virgüllü sayı F veya f double Sayısal, virgüllü sayı D veya d decimal Sayısal, decimal M veya m

6 Belirtmeden Tip Dönüştürme Tablosu 6 KaynakHedef sbyteshort, int, float, long, double, decimal byte short, ushort, int, uint, long, ulong, float, double, decimal shortint, long, float, double, decimal ushort int, uint, long, ulong, float, double, decimal intlong, float, double, decimal uintlong, ulong, float, double, decimal long, ulongfloat, double, decimal char ushort, int, uint, long, ulong, float, double, decimal floatdouble

7 Belirtmeden Tip Dönüştürme Matrisi  (a = b; tablosu) 7 HEDEF (a) KAYNAK (b) sbytebyteshort ushort char intuintlongulongfloatdoubledecimal sbyte byte short ushort char int uint long ulong float double decimal

8 Belirtmeden Tip Dönüştürme üzerine Notlar byte, sbyte, short ve ushort türündeki değişkenlerle yapılan matematiksel işlemlerde oluşan matematiksel ifade sonucu int leşir char türünü kendisinden daha kapasiteli bir sayısal türe belirtmeden dönüştürebiliriz. –Bu durumda ilgili karakterin Unicode karşılığı ilgili sayısal değişkene atanacaktır. double ve decimal belirtmeden hiçbir tipe dönüştürülemez! 8

9 Belirterek Tip Dönüştürme Belirterek tip dönüşümü genellikle derleyicinin izin vermediği durumlarda kullanılır. Belirterek tip dönüşümüyle küçük tipin büyük tipe dönüştürülmesi sağlanabilse de aslında bu gereksizdir, çünkü aynı şeyi belirtmeden tip dönüşümüyle de yapabilirdik Örnek: int a=5; byte b=(byte)a; // normal Örnek 2: int a=500; byte b=(byte)a; // ne olur ? 9

10 Tip dönüştürmede veri kaybı int a = ; // byte b = (byte)a; Console.WriteLine(b); Ekrana 8 yazacaktır. 10

11 Convert sınıfı System isim alanının altındaki Convert sınıfı içinde tür dönüşümü yapabileceğimiz birçok metot bulunur. Bu metotlarla hemen hemen her türü her türe dönüştürebiliriz. Bunun için değişken türlerinin sınıf karşılıklarını bilmeliyiz. Değişken türleri ve Sınıf isimlerinin karşılıkları aşağıdaki tabloda listelenmiştir. 11

12 12 Veri TipiSınıf İsmi boolBoolean byteByte sbyteSByte shortInt16 ushortUInt16 intInt32 uintUInt32 longInt64 ulongUInt64 floatSingle doubleDouble decimalDecimal charChar

13 Convert.ToXXX(x) Convert.ToBoolean(x) Convert.ToByte(x) Convert.ToSbyte(x) Convert.ToInt16(x) Convert.ToUInt16(x) Convert.ToInt32(x) Convert.ToUInt32(x) Convert.ToInt64(x) Convert.ToUInt64(x) Convert.ToSingle(x) Convert.ToDouble(x) Convert.ToDecimal(x) Convert.ToChar(x) XXX yerine herhangi bir veri tipi yazılabilir. Parantez içine de herhangi veri tipindeki bir değer yazılabilir. 13

14 Convert.ToBoolean(x) Burada parantez içindeki değerin sayısal değeri 0 ise sonuç false değilse true olur. Sayı haricindeki diğer değerler her zaman hata verecektir. bool b1 = Convert.ToBoolean(132); bool b2 = Convert.ToBoolean("-132"); bool b3 = Convert.ToBoolean(0); bool b4 = Convert.ToBoolean("a123"); bool b5 = Convert.ToBoolean("True"); bool b6 = Convert.ToBoolean("False"); bool b7 = Convert.ToBoolean("Deneme"); b1 ve b5’in değeri True b3 ve b6’nin değeri False b2, b4 ve b7 hata verir. (True veya False haricindeki tüm stringlerde hata verir.) 14

15 Convert.ToByte(x) Parantez içerisine girilen her hangi bir sayısal veya rakamlardan oluşmuş yazıyı byte tipine dönüştürür. Eğer sayısal değer byte sınırlarının dışında ise taşma hatası verir. Eğer dönüştürülemeyecek bir değer ise tip dönüştürme hatası verir. byte b1 = Convert.ToByte(123); byte b2 = Convert.ToByte(1234); byte b3 = Convert.ToByte("-123"); byte b4 = Convert.ToByte("123"); byte b5 = Convert.ToByte("123.12"); byte b6 = Convert.ToByte(123.12); byte b7 = Convert.ToByte(0); byte b8 = Convert.ToByte("sds"); b1 ve b4 ve b6’nın değerleri 123, b7’in değeri 0 diğerleri hata verir. 15

16 Convert.ToSByte(x) Parantez içerisine girilen her hangi bir sayısal veya rakamlardan oluşmuş yazıyı sbyte tipine dönüştürür. Eğer sayısal değer sbyte sınırlarının dışında ise taşma hatası verir. Eğer dönüştürülemeyecek bir değer ise tip dönüştürme hatası verir. sbyte b1 = Convert.ToSByte(123); sbyte b2 = Convert.ToSByte(1234); sbyte b3 = Convert.ToSByte("-123"); sbyte b4 = Convert.ToSByte("1234"); sbyte b5 = Convert.ToSByte(0); sbyte b6 = Convert.ToSByte("sds"); sbyte b7 = Convert.ToSByte("123.12"); sbyte b8 = Convert.ToSByte(123.12); b1 ve b8’in değerleri 123, b3’ün değeri -123, b5’in değeri 0 diğerleri hata verir. 16

17 Convert.ToInt16(x) Parantez içerisine girilen her hangi bir sayısal veya rakamlardan oluşmuş yazıyı short tipine dönüştürür. Eğer sayısal değer short sınırlarının dışında ise taşma hatası verir. Eğer dönüştürülemeyecek bir değer ise tip dönüştürme hatası verir. short b1 = Convert.ToInt16(123); short b2 = Convert.ToInt16(1234); short b3 = Convert.ToInt16("-123"); short b4 = Convert.ToInt16("1234"); short b5 = Convert.ToInt16(0); short b6 = Convert.ToInt16("sds"); short b7 = Convert.ToInt16(" "); short b8 = Convert.ToInt16("123.12"); short b9 = Convert.ToInt16(123.12); b6, b7 ve b8 hata verir, diğerlerinde sorun olmayacak. 17

18 Convert.ToUInt16(x) Parantez içerisine girilen her hangi bir sayısal veya rakamlardan oluşmuş yazıyı ushort tipine dönüştürür. Eğer sayısal değer ushort sınırlarının dışında ise taşma hatası verir. Eğer dönüştürülemeyecek bir değer ise tip dönüştürme hatası verir. ushort b1 = Convert.ToUInt16(123); ushort b2 = Convert.ToUInt16(1234); ushort b3 = Convert.ToUInt16("-123"); ushort b4 = Convert.ToUInt16("1234"); ushort b5 = Convert.ToUInt16(0); ushort b6 = Convert.ToUInt16("sds"); ushort b7 = Convert.ToUInt16(" "); ushort b8 = Convert.ToUInt16("123.12"); ushort b9 = Convert.ToUInt16(123.12); b3, b6, b7 ve b8 hata verir, diğerlerinde sorun olmayacak. 18

19 Convert.ToInt32(x) Parantez içerisine girilen her hangi bir sayısal veya rakamlardan oluşmuş yazıyı int tipine dönüştürür. Eğer sayısal değer int sınırlarının dışında ise taşma hatası verir. Eğer dönüştürülemeyecek bir değer ise tip dönüştürme hatası verir. int b1 = Convert.ToInt32(123); int b2 = Convert.ToInt32(1234); int b3 = Convert.ToInt32("-123"); int b4 = Convert.ToInt32("1234"); int b5 = Convert.ToInt32(0); int b6 = Convert.ToInt32("abc"); int b7 = Convert.ToInt32(" "); int b8 = Convert.ToInt32(123.4); int b9 = Convert.ToInt32("123.4"); b6, b7 ve b9 hata verir, diğerlerinde sorun olmayacak. 19

20 Convert.ToUInt32(x) Parantez içerisine girilen her hangi bir sayısal veya rakamlardan oluşmuş yazıyı uint tipine dönüştürür. Eğer sayısal değer uint sınırlarının dışında ise taşma hatası verir. Eğer dönüştürülemeyecek bir değer ise tip dönüştürme hatası verir. uint b1 = Convert.ToUInt32(123); uint b2 = Convert.ToUInt32(1234); uint b3 = Convert.ToUInt32("-123"); uint b4 = Convert.ToUInt32("1234"); uint b5 = Convert.ToUInt32(0); uint b6 = Convert.ToUInt32("abc"); uint b7 = Convert.ToUInt32(" "); uint b8 = Convert.ToUInt32(123.4); uint b9 = Convert.ToUInt32("123.4"); b3, b6, b7 ve b9 hata verir, diğerlerinde sorun olmayacak. 20

21 Convert.ToInt64(x) Parantez içerisine girilen her hangi bir sayısal veya rakamlardan oluşmuş yazıyı long tipine dönüştürür. Eğer sayısal değer long sınırlarının dışında ise taşma hatası verir. Eğer dönüştürülemeyecek bir değer ise tip dönüştürme hatası verir. long b1 = Convert.ToInt64(123); long b2 = Convert.ToInt64( ); long b3 = Convert.ToInt64("-123"); long b4 = Convert.ToInt64("1234"); long b5 = Convert.ToInt64(0); long b6 = Convert.ToInt64("abc"); long b7 = Convert.ToInt64(" "); long b8 = Convert.ToInt64(123.4); long b9 = Convert.ToInt64("123.4"); b2, b6, b7 ve b9 hata verir, diğerlerinde sorun olmayacak. 21

22 Convert.ToUInt64(x) Parantez içerisine girilen her hangi bir sayısal veya rakamlardan oluşmuş yazıyı ulong tipine dönüştürür. Eğer sayısal değer ulong sınırlarının dışında ise taşma hatası verir. Eğer dönüştürülemeyecek bir değer ise tip dönüştürme hatası verir. ulong b1 = Convert.ToUInt64(123); ulong b2 = Convert.ToUInt64( ); ulong b3 = Convert.ToUInt64("-123"); ulong b4 = Convert.ToUInt64("1234"); ulong b5 = Convert.ToUInt64(0); ulong b6 = Convert.ToUInt64("abc"); ulong b7 = Convert.ToUInt64(" "); ulong b8 = Convert.ToUInt64(123.42); ulong b9 = Convert.ToUInt64("123.4"); b2, b3, b6, b7 ve b9 hata verir, diğerlerinde sorun olmayacak. 22

23 Convert.ToSingle(x) Parantez içerisine girilen her hangi bir sayısal veya rakamlardan oluşmuş yazıyı float tipine dönüştürür. Eğer sayısal değer float sınırlarının dışında ise taşma hatası verir. Eğer dönüştürülemeyecek bir değer ise tip dönüştürme hatası verir. float b1 = Convert.ToSingle(123); float b2 = Convert.ToSingle( ); float b3 = Convert.ToSingle("-123"); float b4 = Convert.ToSingle("1234"); float b5 = Convert.ToSingle(0); float b6 = Convert.ToSingle("abc"); float b7 = Convert.ToSingle(" "); float b8 = Convert.ToSingle( ); float b9 = Convert.ToSingle(" "); b2, b6 ve b7 hata verir, diğerlerinde sorun olmayacak. 23

24 Convert.ToDouble(x) Parantez içerisine girilen her hangi bir sayısal veya rakamlardan oluşmuş yazıyı double tipine dönüştürür. Eğer sayısal değer double sınırlarının dışında ise taşma hatası verir. Eğer dönüştürülemeyecek bir değer ise tip dönüştürme hatası verir. double b1 = Convert.ToDouble(123); double b2 = Convert.ToDouble( ); double b3 = Convert.ToDouble("-123"); double b4 = Convert.ToDouble("1234"); double b5 = Convert.ToDouble(0); double b6 = Convert.ToDouble("abc"); double b7 = Convert.ToDouble(" "); double b8 = Convert.ToDouble( ); double b9 = Convert.ToDouble(" "); b2, b6 ve b7 hata verir, diğerlerinde sorun olmayacak. 24

25 Convert.ToDecimal(x) Parantez içerisine girilen her hangi bir sayısal veya rakamlardan oluşmuş yazıyı decimal tipine dönüştürür. Eğer sayısal değer decimal sınırlarının dışında ise taşma hatası verir. Eğer dönüştürülemeyecek bir değer ise tip dönüştürme hatası verir. decimal b1 = Convert.ToDecimal(123); decimal b2 = Convert.ToDecimal( ); decimal b3 = Convert.ToDecimal("-123"); decimal b4 = Convert.ToDecimal("1234"); decimal b5 = Convert.ToDecimal(0); decimal b6 = Convert.ToDecimal("abc"); decimal b7 = Convert.ToDecimal(" "); decimal b8 = Convert.ToDecimal( ); decimal b9 = Convert.ToDecimal(" "); b2, b6 ve b7 hata verir, diğerlerinde sorun olmayacak. 25

26 Convert.ToChar(x) Parantez içerisine girilen her hangi bir sayısal veya rakamlardan oluşmuş yazıyı char tipine dönüştürür. Eğer sayısal değer char ( ) sınırlarının dışında ise taşma hatası verir. Eğer dönüştürülemeyecek bir değer ise tip dönüştürme hatası verir. char b1 = Convert.ToChar(123); char b2 = Convert.ToChar( ); char b3 = Convert.ToChar("1234"); char b4 = Convert.ToChar(0); char b5 = Convert.ToChar("abc"); char b6 = Convert.ToChar("a"); char b7 = Convert.ToChar( ); char b8 = Convert.ToChar("12.3"); b1, b4 ve b6 geçerli, diğerleri hata verir! 26

27 Tip.Parse(string) String tipini parse metodunu kullanarak herhangi bir tipe dönüştürebiliriz. Örnek: –int a = int.Parse(“123”); –uint a = uint.Parse(“123”); –double b = double.Parse(“123.12”); Burada dikkat edilmesi gerekenler: – parantez içindeki string in dönüştürülmek istenen tipe uygun yazılmış olmasıdır. –Tam sayılar için sayı virgüllü olmamalıdır! –İşaretsiz sayılar için sayı negatif olmamalıdır! –Rakamların başında veya sonunda boşluk olabilir, fakat aralarında boşluk olmamalıdır! 27

28 Parse Örnek 28 using System; class Program { /* inch ’ i santimetreye d ö n ü şt ü rme */ static void Main() { double inch; double santimetre; string değer; Console.Write("inch gir: "); değer = Console.ReadLine(); // girilen değeri okuyor inch = double.Parse(değer); // tip d ö n ü şt ü r ü l ü yor santimetre = inch * 2.54; Console.WriteLine("{0} inch {1} santimetre eder",inch, santimetre); }

29 Tip Dönüştürme Üzerine Nolar Yukarıdaki kod ile kullanıcıdan inch girilmesi isteniyor. –Kullanıcının uygun bir sayı gireceği varsayılıyor. –Peki ya kullanıcı rakamlar yerine harf girerse ne olacak? –veya girilen sayı double sınırları dışında ise ne olacak? –Çok Basit: Hata verecek 29 Console.Write("inch gir: "); string değer = Console.ReadLine(); // girilen değeri okuyor double inch = double.Parse(değer); // tip d ö n ü şt ü r ü l ü yor

30 tip.TryParse() TryParse() metodunu kullanın! Bu durumda girilmiş yazı double tipine dönüştürülebilirse, dönüştürülüp inch değişkenine atanmış olacak. Eğer dönüştürülemeyecek ise, yani geçersiz bir sayı veya sınırlar dışında ise inch değişkeni 0 olarak kalacaktır. TryParse diğer tüm tipler için de geçerlidir. TryParse metodu tipi dönüştürmeye başlamadan önce geçerli olup olmadığını kontrol eder. 30 double inch; Console.Write("inch gir: "); string değer = Console.ReadLine(); // girilen değeri okuyor double.TryParse(değer, out inch); // tip d ö n ü şt ü r ü l ü yor

31 TryParse örnek: 31 using System; class Program { /* inch ’ i santimetreye d ö n ü şt ü rme */ static void Main() { double inch; double santimetre; string değer; Console.Write("inch gir: "); değer = Console.ReadLine(); // girilen değeri okuyor double.TryParse(değer, out inch); // tip d ö n ü şt ü r ü l ü yor santimetre = inch * 2.54; Console.WriteLine("{0} inch {1} santimetre eder", inch, santimetre); }

32 DINLEDIĞINIZ IÇIN TEŞEKKÜRLER… Öğr. Gör. Bayram AKGÜL32


"BPR151 ALGORİTMA VE PROGRAMLAMA - I Öğr. Gör. Bayram AKGÜL" indir ppt

Benzer bir sunumlar


Google Reklamları