Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

BPR151 ALGORİTMA VE PROGRAMLAMA - I

Benzer bir sunumlar


... konulu sunumlar: "BPR151 ALGORİTMA VE PROGRAMLAMA - I"— Sunum transkripti:

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

2 Bugünkü konular 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

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.

4 Sayısal Veri Tipleri ve Özellikleri
Veri tipi boyut Aralık sbyte 1 byte -128 : 127 byte 0 : 255 short 2 byte : 32767 ushort 0 : 65535 int 4 byte : uint 0 : long 8 byte : ulong 0 : float (7 basamak) e-38 : e+38 double (15-16 basamak) e-308 : e+308 decimal (28-29 basamak)

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

6 Belirtmeden Tip Dönüştürme Tablosu
Kaynak Hedef sbyte short, int, float, long, double, decimal byte short, ushort, int, uint, long, ulong, float, double, decimal short int, long, float, double, decimal ushort int, uint, long, ulong, float, double, decimal int long, float, double, decimal uint long, ulong, float, double, decimal long, ulong float, double, decimal char ushort, int, uint, long, ulong, float, double, decimal float double

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

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!

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 ?

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

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.

12 Veri Tipi Sınıf İsmi bool Boolean byte Byte sbyte SByte short Int16 ushort UInt16 int Int32 uint UInt32 long Int64 ulong UInt64 float Single double Double decimal Decimal char Char

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.

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.)

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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!

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!

28 Parse Örnek 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
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 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

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. 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: 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ÜL


"BPR151 ALGORİTMA VE PROGRAMLAMA - I" indir ppt

Benzer bir sunumlar


Google Reklamları