1 / 32

BPR151 ALGORİTMA VE PROGRAMLAMA - I

BPR151 ALGORİTMA VE PROGRAMLAMA - I. Öğr . Gör. Bayram AKGÜL bayramakgul@bartin.edu.tr http://bmyo.bartin.edu.tr/akgul. 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.

geoff
Download Presentation

BPR151 ALGORİTMA VE PROGRAMLAMA - I

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. BPR151 ALGORİTMA VE PROGRAMLAMA - I Öğr. Gör. Bayram AKGÜL bayramakgul@bartin.edu.tr http://bmyo.bartin.edu.tr/akgul

  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

  5. Değişken Tipi Kategorileri

  6. Belirtmeden Tip Dönüştürme Tablosu

  7. Belirtmeden Tip Dönüştürme Matrisi (a = b; tablosu)

  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 intleş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 =16909320; // 00000001 00000010 00000100 00001000 byte b = (byte)a; Console.WriteLine(b); • Ekrana 8 yazacaktır.

  11. Convert sınıfı • System isimalanınınaltındaki Convert sınıfıiçindetürdönüşümüyapabileceğimizbirçokmetotbulunur. • Bu metotlarlahemenhemen her türü her türedönüştürebiliriz. • Bununiçindeğişkentürlerininsınıf karşılıklarınıbilmeliyiz. • DeğişkentürleriveSınıf isimlerinin karşılıklarıaşağıdakitablodalistelenmiştir.

  12. 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. 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ümstringlerde hata verir.)

  14. 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. 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. 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("12323434"); shortb8 = Convert.ToInt16("123.12"); short b9 = Convert.ToInt16(123.12); • b6, b7 ve b8 hata verir, diğerlerinde sorun olmayacak.

  17. 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("12323434"); ushortb8 = Convert.ToUInt16("123.12"); ushort b9 = Convert.ToUInt16(123.12); • b3, b6, b7 ve b8 hata verir, diğerlerinde sorun olmayacak.

  18. 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("123234342344323"); int b8 = Convert.ToInt32(123.4); int b9 = Convert.ToInt32("123.4"); • b6, b7 ve b9 hata verir, diğerlerinde sorun olmayacak.

  19. 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("123234345645642344323"); uint b8 = Convert.ToUInt32(123.4); uint b9 = Convert.ToUInt32("123.4"); • b3, b6, b7 ve b9 hata verir, diğerlerinde sorun olmayacak.

  20. 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(123423423423423423445456234234433); long b3 = Convert.ToInt64("-123"); long b4 = Convert.ToInt64("1234"); long b5 = Convert.ToInt64(0); long b6 = Convert.ToInt64("abc"); long b7 = Convert.ToInt64("12323434234432334455344565465464"); long b8 = Convert.ToInt64(123.4); long b9 = Convert.ToInt64("123.4"); • b2, b6, b7 ve b9 hata verir, diğerlerinde sorun olmayacak.

  21. 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(123423423423423423423456232344433); ulong b3 = Convert.ToUInt64("-123"); ulong b4 = Convert.ToUInt64("1234"); ulong b5 = Convert.ToUInt64(0); ulong b6 = Convert.ToUInt64("abc"); ulong b7 = Convert.ToUInt64("12323434234432334534523443465464"); 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. 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(123423423423423423423454566234433); float b3 = Convert.ToSingle("-123"); float b4 = Convert.ToSingle("1234"); float b5 = Convert.ToSingle(0); float b6 = Convert.ToSingle("abc"); float b7 = Convert.ToSingle("12323434234432334534545643465464"); float b8 = Convert.ToSingle(123423.423); float b9 = Convert.ToSingle("123234.342"); • b2, b6 ve b7 hata verir, diğerlerinde sorun olmayacak.

  23. 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); doubleb2 = Convert.ToDouble(1234234234234234234245543456234433); doubleb3 = Convert.ToDouble("-123"); doubleb4 = Convert.ToDouble("1234"); doubleb5 = Convert.ToDouble(0); doubleb6 = Convert.ToDouble("abc"); doubleb7 = Convert.ToDouble("12323434234432334534543465443535464"); doubleb8 = Convert.ToDouble(123423.423); doubleb9 = Convert.ToDouble("123234.342"); • b2, b6 ve b7 hata verir, diğerlerinde sorun olmayacak.

  24. 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(12342342342342342342345623443345); decimal b3 = Convert.ToDecimal("-123"); decimal b4 = Convert.ToDecimal("1234"); decimal b5 = Convert.ToDecimal(0); decimal b6 = Convert.ToDecimal("abc"); decimal b7 = Convert.ToDecimal("123423423423423423423456234433435"); decimal b8 = Convert.ToDecimal(123423.423); decimal b9 = Convert.ToDecimal("123234.342"); • b2, b6 ve b7 hata verir, diğerlerinde sorun olmayacak.

  25. 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 (0-65535) 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(123423423); char b3 = Convert.ToChar("1234"); char b4 = Convert.ToChar(0); char b5 = Convert.ToChar("abc"); char b6 = Convert.ToChar("a"); char b7 = Convert.ToChar(1234.423); char b8 = Convert.ToChar("12.3"); • b1, b4 ve b6 geçerli, diğerleri hata verir!

  26. 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. Parse Örnek usingSystem; classProgram { /* inch’i santimetreye dönüştürme */ staticvoidMain() { doubleinch; 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); } }

  28. 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 • Console.Write("inch gir: "); • string değer =Console.ReadLine(); // girilen değeri okuyor • doubleinch=double.Parse(değer); // tip dönüştürülüyor

  29. 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. • doubleinch; • Console.Write("inch gir: "); • string değer =Console.ReadLine(); // girilen değeri okuyor • double.TryParse(değer, outinch); // tip dönüştürülüyor

  30. TryParse örnek: usingSystem; classProgram { /* inch’i santimetreye dönüştürme */ staticvoidMain() { doubleinch; double santimetre; string değer; Console.Write("inch gir: "); değer =Console.ReadLine(); // girilen değeri okuyor double.TryParse(değer, outinch); // tip dönüştürülüyor santimetre =inch*2.54; Console.WriteLine("{0} inch {1} santimetre eder" ,inch, santimetre); } }

  31. Dinlediğiniz için teşekkürler… Öğr. Gör. Bayram AKGÜL

More Related