26 Ekim 2009 Pazartesi

.NET Framework 4.0 ile gelen Karmaşık Sayı Desteği

Merhabalar,
Geçtiğimiz günlerde Visual Studio 2010 ve .NET Framework 4.0'ın Beta 2'sinin yayınlanmasıyla beraber gerek Framework tarafında gerekse programlama dilleri tarafında gelen yenilikler daha sık dillendirilmeye başlandı.
Bu yazımızda ise .NET Framework'e 4.0 versiyonu itibariyle dahil olacak olan System.Numerics isim uzayının bir üyesi olan Complex sınıfını inceleyeceğiz. Complex sınıfı herhangi bir karmaşık sayıyı ifade etmek için kullanılır ve karmaşık sayılar üzerinde çeşitli artimetik işlemler yapılmasına olanak sağlar.
Complex sınıfının constructor metotlarına baktığımızda :
  • Complex() => 0 (0,0) değerinde bir karmaşık sayı oluşturur.
  • Complex (double real, double imaginary) => Verilen real ve imaginary parametrelerine uygun karmaşık sayı oluşturulur. Karmaşık sayıların x+iy şeklinde ifade edildiklerini düşünürsek x real kısım y ise imaginary kısım olacaktır. Yaratılan kompleks sayının formu ise (real,imaginary) olacaktır.
Complex bir sınıfa doğrudan double yada integer değer de atayabiliriz. Atadığımız değer doğrudan kompleks sayının real kısmına atanmaktadır.
Öncelikle gelin beraber birkaç kompleks sayı oluşturalım ve bunları görüntüleyelim.

Complex sınıfı ile çalışabilmemiz için öncelikle projemize System.Numerics dll'ini referans etmemiz gerekmektedir.

Complex z1 = new Complex();

Complex z2 = new Complex(3, 5);

Console.WriteLine("z1={0}\nz2={1}", z1, z2);

z1 = 5;

Console.WriteLine("z1 son durum = {0}", z1);

Console.ReadLine();




z1'e yaptığımız atamayı z2'ye de yapmış olsaydık z2 karmaşık sayısı yine (5,0)olacaktı.Yani bu atamalarda imaginary kısım korunmamakta.


Ayrıca Complex sınıfı içerisinde karmaşık sayılar üzerinde gerek artimetik gerekse trigonometrik işlemler yapmak üzere tanımlanmış pekçok statik metot bulunmakta. Bu metotları kullanarak karmaşık sayılar üzerinde istediğimiz işlemleri yapabilmekteyiz.



Complex sınıfı içerisinde doğrudan real kısmı 1 olan karmaşık sayıyı döndüren One,real kısmı 0 olan karmaşık sayıyı döndüren Zero, imaginary kısmı 0 olan karmaşık sayıyı döndüren imaginaryZero fieldları bulunmakta.


Gördüğümüz gibi karmaşık sayılarla işlemler yapmanın artık integer veya double bir sayıyla işlem yapmaktan bir farkı kalmadı.

Bir sonraki yazıda görüşmek üzere :)

0 yorum: