BİL107U
Ünite 4: C# Program Yapısı
PROGRAMLAMA I
Giriş Programlama, problemlere çözüm aramadır. Bir programın uzun ömürlü olması da probleme ve olası sorunlara geniş bir çözüm kümesi sunmak üzere dizayn edilmesinden geçmektedir. Nesne yönelimli programlamanın temel amaçlarından biri tüm işlemlerin küçük parçalara ayrılması, kod tekrarının önlenerek modüllerin her yerde kullanılmasına imkân sağlamaktır. Geliştireceğimiz programlarda, kodları küçük modüller ve metotlara ayırarak çalışmamız bizlere kazanç olarak dönecektir. Metotlar Belirli görevleri yerine getirmek amacıyla tasarlanmış kod bloklarına metot ya da fonksiyon denir. Metotlar kod içerisinden çağırılır; bu yüzden belirli kurallara uygun yazılmaları gerekmektedir. Metotlar, kod içerisinde tekrar eden işlemlerin her seferinde tekrar yazılmasının önüne geçmesi açısından önemlidir. Metotlar, bir kere yazıldıktan sonra kod içerisinde istenilen yerde ve istenildiği kadar çağrılabilir. Yerine getireceği işlemler için parametre alacak bir yapıda hazırlanabilir. Böylece benzer işi yapan ortak kodlar bir araya getirilerek daha genel amaçlı kod blokları geliştirilebilir. Yaptıkları işlemlere göre bir sonuç döndürebilirler veya void türde tanımlanarak herhangi bir sonuç döndürmeyen metotlar da hazırlanabilir. C# dilinde, metotlar mutlaka bir struct (yapı) veya class (sınıf) içerisinde tanımlı olmalıdır. Programların çalıştırılabilmesi için bir başlangıç noktasına ihtiyaçları vardır. C# dilinde de bu başlangıç noktası Main metodudur. Main metodu, programın bütün işlevlerinden sorumlu, onları çalıştıran hatta başka sınıflar ile iletişim kuran ana metoddur. Her programda sadece bir tane ana metot işlevi taşıyan Main() metodu olabilir. Metot Tanımlama C# programlama dilinde, metotların tanımlandıkları sınıf içerisinde birtakım kurallara uymaları gerekmektedir;
• Metot isimleri de değişken isimleri kurallarına uygun şekilde verilmelidir.
• Metotların erişim belirleyicisi belirtilmelidir, aksi hâlde “private” olarak kabul edilir.
• Her zaman için bir sınıf yapısı içinde tanımlanmalıdır.
• Her metodun geri döndürdüğü değerin türü belirtilmelidir. Geri değer döndürmüyorsa da dönüş tipi olarak “void” tanımlanmalıdır. Döndürülecek değer, “return” anahtar kelimesi kullanılarak döndürülür.
• Parametre alan bir metot tanımlandıysa, birden fazla parametresi varsa aralarına virgül “,” koyarak ayrılmalıdır.
Metot Çağırma Hazırlanan metotlar, Main() metodu içinden ya da başka metotlardan çağrılabilir. Metotları çağırırken erişim belirleyicileri, varsa aldıkları parametreler ve bunların türlerine uygun bir şekilde çağrılmalı ve belirtilmiş ise geri dönüş tiplerine uygun bir şekilde de değişkenlere atama yapılmalıdır. Bir metot, Main metodu içinden direk çağrılmak isteniyorsa, static bir metod içinden yine bir static metot çağrılabilir kuralı gereğince metodun static olması gerekmektedir. Bunun yanında, parametre almayan ve bir değer döndürmeyen metotlar da tanımlanabilmektedir. Özyinelemeli (Recursive) Metotlar Bu özel metot türü, içine eklenen bir kontrol durumu gerçekleşene kadar kendini çağırarak istenilen işi yapan fonksiyonlardır. Bu metotlar doğrudan ya da dolaylı olarak kendilerini çağırarak görevlerini yaparlar. Yazımı ve kullanımı tıpkı diğer metotlar gibidir. Matematikten hatırlayacağımız faktöriyel hesaplama metodunun yazımını inceleyelim. Faktöriyel, bir tam sayının 0’dan büyük değerler ile, her adımda 1 azaltılarak kendisiyle çarpımıdır. Yani 6! = 6*5*4*3*2*1 şeklinde hesaplanır. Metotların Aşırı Yüklenmesi (Method Overloading) Sınıfımızın içinde kullanmakta olduğumuz bir metodumuz olsun. Fakat aynı işi farklı bir parametre ile yapan aynı isimde bir metoda daha ihtiyacımız olduğunu düşünün. İşte tam da bu noktada metotların aşırı yüklenmesi devreye girer. Metotları aşırı yüklerken dikkat etmemiz gereken iki nokta vardır.
• Metotların dönüş tiplerinin aynı olması
• Metotların farklı tipte parametre alması Matematik Sınıfı C# dilinde, matematiksel işlemlerin daha kolay yapılabilmesi amacıyla, bazı işlemler “System.Math” sınıfı içinde toplanmıştır. Bir sayının karesini alma, karekökünü bulma, n’inci dereceden kuvvetini alma, alt ve üste yuvarlama, Sin/Cos.. gibi trigonometrik işlemler, logaritmik işlemler, sayı karşılaştırma gibi işlemleri desteklemektedir. Ayrıca sıklıkla kullanılan Pi sayısı ve Euler değeri de bu sınıf içerisinde birer sabit olarak tanımlanmıştır. Matematik Sınıfının Metotları Math sınıfında hazırlanmış tüm metotlar static’tir ve bu sınıf mühürlüdür (sealed). Yani Math sınıfından kalıtım yapılamaz. Math sınıfının bir nesnesi de yaratılamaz. Bu yüzden, Math sınıfındaki metotlar “Math.Abs()” şeklinde sınıf adı ile birlikte kullanılmalıdır. Math sınıfında çok kullanılan metodları inceleyelim. Math.Abs ( sayı ): Mutlak değer hesaplama fonksiyonudur. Parametre olarak herhangi bir sayısal
değer verilebilir. Zaten sadece pozitif değerler alabilen uint, ulong ve ushort türünden sayısal değerleri alamaz. Math.Min ( sayı1, sayı2 ), Math.Max( sayı1, sayı2 ): İki sayı arasında karşılaştırma yapmak için kullanılır. Min ile küçük sayı, Max ile de büyük sayı eşitlikteki değişkene atanır. Karşılaştırmak için de herhangi bir sayısal değer alabilirler. Math.Sign ( sayı ): Parametre olarak girilen “unsigned” olmayan herhangi bir sayının işaretini bulmak için kullanılır. Pozitif sayılar için +1, negatif için -1 ve sıfır için 0 olarak bir int değer döndürür. Math.BigMul ( sayı1, sayı2 ): Parametre olarak iki tane int türünde sayı almaktadır. Bu iki sayının çarpımlarının sonucunu, kendi türlerinden daha fazla veri alabilen “long” türünde döndürmektedir. Çünkü aynı türdeki değişkenlerin çarpımının sonucu, yüksek olasılıkla kendi türlerinin desteklediği sayı limitlerini geçecektir. Math.DivRem ( bölünen, bölen, out kalan ): % operatörü ile kalan hesaplanabilirken bu fonksiyon ile iki tam sayının bölüm sonucu ve kalanı hesaplanabilmektedir. Dönen sonuç ve parametreleri int veya long türünde olabilir. Math.Floor ( sayı ): Yuvarlama fonksiyonlarındandır. Sayıyı aşağı doğru yuvarlamak için kullanılır. Parametre olarak aldığı sayı double, decimal veya bunlara dönüştürülebilir olmalıdır. Math.Ceiling ( sayı ): Yuvarlama fonksiyonlarındandır. Sayıyı yukarı doğru yuvarlamak için kullanılır. Parametre olarak aldığı sayı double, decimal veya bunlara dönüştürülebilir olmalıdır. Math.Round ( sayı ): Yuvarlama fonksiyonlarındandır. Sayıyı en yakın tam sayıya çevirmek için kullanılır. Parametre olarak aldığı sayı double, decimal veya bunlara dönüştürülebilir olmalıdır. Math.Round ( sayı , basamak_sayısı ): Yuvarlama fonksiyonlarındandır. Virgülden sonra kaç basamağa yuvarlanacağı belirtilebilir. Parametre olarak aldığı sayı double, decimal veya bunlara dönüştürülebilir olmalıdır. Math.Truncate( sayı ): Sayının tam kısmını döndürür, ondalıklı kısmını siler. Parametre olarak aldığı sayı double, decimal veya float gibi ondalıklı sayılar olabilir. Math.Log10( sayı ): Parametre olarak alınan sayının 10 tabanına göre logaritmasını hesaplamaktadır. Sayı, double veya double türüne dönüştürülebilir olmalıdır. Math.Log( sayı ): Taban değeri belirtilmediği için, sonuç sayı değerinin “e” tabanındaki logaritması olacaktır. Sayı, double veya double türüne dönüştürülebilir olmalıdır. Math.Log( sayı, taban ): Parametre olarak verilen sayıyı, istenilen tabandaki algoritması hesaplanarak sonuç elde edilir. Sayı ve taban, double veya double türüne dönüştürülebilir olmalıdır.
Math.Pow( sayı, üs ): Parametre olarak verilen sayının belirtilen kuvvetini hesaplamak için kullanılır. Sayı ve üs, double veya double türüne dönüştürülebilir olmalıdır. Math.Sqrt( sayı ): Parametre olarak alınan sayının karekökünü hesaplayan fonksiyondur. Sayı, double veya double türüne dönüştürülebilir olmalıdır. Math.Exp( üs ): Parametre olarak verilen “üs” değerine göre “e” sayısının kuvvetini hesaplar. Üs, double veya double türüne dönüştürülebilir olmalıdır. Math.Sin( açı ), Math.Cos( açı ), Math.Tan( açı ): Parametre olarak verilen “açı” değerinin Sinus, Cosinus ve Tanjant değerlerini hesaplayan fonksiyondur. Açı, double veya double türüne dönüştürülebilir ve radyan cinsinden olmalıdır. Math.Asin( değer ),Math.Acos( değer )Math.Atan(değer ): Matematikte ters trigonometrik fonksiyonlar, tanım kümesinde bulunan trigonometrik fonksiyonların ters fonksiyonudur. arcsin, arccos, arctan sırasıyla sin-1, cos-1, tan-1 olarak gösterilir. Sinus, cosinus ve tanjant değerleri belli olan açıların hesaplanmasında kullanılır. Hesaplanan açı radyan cinsinden olduğundan, açıya dönüştürmek için 180 ile çarpılması gerekmektedir. Değer, double veya double türüne dönüştürülebilir ve ( -1 ? değer ? 1) aralıklarında olmalıdır. Math.Sinh( açı ), Math.Cosh( açı ), Math.Tanh( açı ): Parametre olarak verilen açıların hiperbolik sinus, cosinus ve tanjant değerlerini hesaplanmasında kullanılır. Hesaplanan açı radyan cinsinden olduğundan, açıya dönüştürmek için 180 ile çarpılması gerekmektedir. Açı, double veya double türüne dönüştürülebilir ve radyan cinsinden olmalıdır. Random Sınıfı C# programlama dilinde program geliştirirken kimi zaman rastgele değerlere ihtiyaç duyabiliriz. Bu ihtiyaca yönelik Random sınıfı geliştirilmiştir. Random sınıfı, sistem zamanına (tarih-saat) göre rastgele bir değer oluşturur. Kullanabilmek için bu sınıftan yeni bir nesne oluşturulması gerekmektedir. Collection Sınıfı C# programlama dilinde koleksiyonlar, nesneleri gruplamayı sağlayan sınıflardır. Klasik dizi (array) yapısından çok daha fazla özelliği olan, System.Collections altında tanımlı bir veri türüdür. IEnumerable arayüzü koleksiyon sınıflarının tümüne uygulanmıştır. Böylece tüm koleksiyon nesneleri foreach döngüsü ile kullanılabilir. Koleksiyonlar, nesnelerden oluşmuş, çok sayıda verinin tutulduğu türlerdir. Diziler ile arasındaki fark ise diziler sabit boyutlara sahip iken, koleksiyon yapılarının boyutları dinamik olarak artmaya ve azalmaya imkân sunar. Bunun yanında koleksiyondaki elemanları numaralamak, sıralamak, yeni eleman eklemek, eleman çıkartmak, koleksiyonda eleman aramak gibi özellikleri destekleyen
bir yapıdır. Farklı durumlar için oluşturulmuş çeşitli koleksiyon yapıları mevcuttur. Kullanım özelliklerine göre özelleşmiş koleksiyon yapıları mevcuttur.
• ArrayList: Nesnelerden oluşan dizi yapısıdır. 0’dan başlayan bir indis ile elemanlarına erişilebilir.
• Hashtable: Bu liste türünde indis kullanılmaz. Elemanlarına anahtar ve buna karşılık gelen değerler şeklinde erişilebilir.
• Queue: İlk girenin ilk çıktığı bir kuyruk yapısıdır. Bu kuyruğun sonuna bir eleman eklemek için Enqueue(), başından bir eleman çekmek için de Dequeue() metotları kullanılır.
• Stack: Son girenin ilk çıktığı bir yığın yapısıdır. En üste yeni eleman eklemek için Push(), en üstten bir eleman çekmek için de Pop() metotları kullanılır.
• Dictionary: Hashtable’ın özelleşmiş bir türüdür. Elemanları anahtar ve değer şeklinde eklenmektedir. Ayrıca kullanıcıların da kendi koleksiyonlarını oluşturmalarına izin vermektedir. String Sınıfı System.String sınıfını temsil etmektedir. String, günlük hayattaki metinleri, bilgisayar ortamında ise art arda gelen karakter dizilerini simgeler. String veri türü her ne kadar değer tipi kabul edilse de referans tipinde bir veri türüdür. String sınıfının çeşitli metotları vardır, bunlardan en sık kullanılanları şunlardır:
• Length: Metnin uzunluğunu yani kaç karakterden oluştuğu bilgisini vermektedir. int türünde değer döndürür.
• ToLower: String türünde tanımlanmış değişkendeki metnin tümünü küçük harfe çevirir.
• ToUpper: String türünde tanımlanmış değişkendeki metnin tümünü büyük harfe çevirir.
• Compare: Metin karşılaştırma işlemi yapmak için kullanılır. String ifadeleri karakter karakter karşılaştırarak sonucu int bir değer olarak döndürür.
• Concat: Bu metot, string ifadeleri birleştirmek için kullanılır. Verilen metinleri art arda ekler ve yine string türünden bir değer döndürmektedir.
• Copy: Metni başka bir değişkene kopyalamak için kullanılır.
• Format: Verilen string bir ifadeyi istenilen formata uygun şekilde düzenleyerek yine geriye string bir değer döndürür.
• IsNullOrEmpty: Parametre olarak verilen string değişkenin boş olup olmadığını kontrol etmek için kullanılır. Sonucu boolean olarak döndürmektedir.
• Contains: Bu metot, bir string değer içinde karakter ya da metin aramak için kullanılmaktadır. Boolean bir değer döndürür.
True ise aranan metin, string değerin içinde vardır, false ise bulunamamıştır.
• CopyTo: Bu metot ile, string bir değişken içinden belirtilen konumdan bir char dizisine kopyalama yapar. String değişkenin başlangıç indeksi seçilir, char dizisinin kopyalama yapılacağı başlangıç indeksi ve kopyalanacak karakter sayısı verilerek kopyalama yapılır.
• EndsWith: String bir değişkenin sonunun verilen bir char veya string türündeki değere eşit olup olmadığını kontrol eder.
• IndexOf: String bir değişken veya değer içinde karakter ya da string bir ifadeyi aramak için kullanılır. Aranan değer bulunur ise ilk bulduğu metnin indeks değerini döndürür. Bulamazsa -1 döndürür.
• Insert: Verilen string bir değer içerisine, belirtilen başlangıç pozisyonundan itibaren araya yeni metin ilave edilir. Geriye metnin ilave edilmiş hâlini döndürür.
• LastIndexOf: IndexOf metoduna benzerdir ve benzer bir kullanımı vardır. IndexOf aranan metnin bulduğu ilk indeksini verirken, LastIndexOf ise aranan metnin bulunduğu son konumu int türünde vermektedir. Aranan metin bulunamazsa yine -1 değerini döndürür.
• PadLeft: İki çeşit kullanımı vardır. - PadLeft(int bosluk_sayisi): Metnin sol başına verilen boşluk sayısı kadar “ ” boşluk karakteri ekler. - PadRight(int bosluk_sayisi): Metnin sağına verilen boşluk sayısı kadar “ ” boşluk karakteri ekler.
• Remove: Bu metodun da iki farklı kullanımı vardır: - Remove( int baslangıç_konumu ): String ifadenin verilen konumundan sonuna kadar silmek için kullanılır. - Remove( int baslangıç_konumu, int kaç_adet_silineceği ): String ifadenin verilen başlangıç konumundan belirtilen adet kadar karakter silmek için kullanılır.
• Replace: Verilen metin içerisindeki bir metin arar ve bunu yeni metin ile değiştirir.
• Split: String bir değişkenin değerini belirtilen koşullara göre parçalara ayırmaya yarar. İçerisinde nokta “.” geçen bir paragraf metnini, cümlelerden oluşan bir string dizisine çevirebilir.
• StartsWith: Bir metnin verilen bir karakter ya da bir metin ile başlayıp başlamadığını kontrol etmektedir. Boolean bir değer döndürür. True ise verilen metin ile başlamış, False ise verilen metin ile başlamamıştır.
• Substring: Bir metnin içinden istenilen yerden, istenildiği kadar metin almak için kullanılır.
• Metot isimleri de değişken isimleri kurallarına uygun şekilde verilmelidir.
• Metotların erişim belirleyicisi belirtilmelidir, aksi hâlde “private” olarak kabul edilir.
• Her zaman için bir sınıf yapısı içinde tanımlanmalıdır.
• Her metodun geri döndürdüğü değerin türü belirtilmelidir. Geri değer döndürmüyorsa da dönüş tipi olarak “void” tanımlanmalıdır. Döndürülecek değer, “return” anahtar kelimesi kullanılarak döndürülür.
• Parametre alan bir metot tanımlandıysa, birden fazla parametresi varsa aralarına virgül “,” koyarak ayrılmalıdır.
Metot Çağırma Hazırlanan metotlar, Main() metodu içinden ya da başka metotlardan çağrılabilir. Metotları çağırırken erişim belirleyicileri, varsa aldıkları parametreler ve bunların türlerine uygun bir şekilde çağrılmalı ve belirtilmiş ise geri dönüş tiplerine uygun bir şekilde de değişkenlere atama yapılmalıdır. Bir metot, Main metodu içinden direk çağrılmak isteniyorsa, static bir metod içinden yine bir static metot çağrılabilir kuralı gereğince metodun static olması gerekmektedir. Bunun yanında, parametre almayan ve bir değer döndürmeyen metotlar da tanımlanabilmektedir. Özyinelemeli (Recursive) Metotlar Bu özel metot türü, içine eklenen bir kontrol durumu gerçekleşene kadar kendini çağırarak istenilen işi yapan fonksiyonlardır. Bu metotlar doğrudan ya da dolaylı olarak kendilerini çağırarak görevlerini yaparlar. Yazımı ve kullanımı tıpkı diğer metotlar gibidir. Matematikten hatırlayacağımız faktöriyel hesaplama metodunun yazımını inceleyelim. Faktöriyel, bir tam sayının 0’dan büyük değerler ile, her adımda 1 azaltılarak kendisiyle çarpımıdır. Yani 6! = 6*5*4*3*2*1 şeklinde hesaplanır. Metotların Aşırı Yüklenmesi (Method Overloading) Sınıfımızın içinde kullanmakta olduğumuz bir metodumuz olsun. Fakat aynı işi farklı bir parametre ile yapan aynı isimde bir metoda daha ihtiyacımız olduğunu düşünün. İşte tam da bu noktada metotların aşırı yüklenmesi devreye girer. Metotları aşırı yüklerken dikkat etmemiz gereken iki nokta vardır.
• Metotların dönüş tiplerinin aynı olması
• Metotların farklı tipte parametre alması Matematik Sınıfı C# dilinde, matematiksel işlemlerin daha kolay yapılabilmesi amacıyla, bazı işlemler “System.Math” sınıfı içinde toplanmıştır. Bir sayının karesini alma, karekökünü bulma, n’inci dereceden kuvvetini alma, alt ve üste yuvarlama, Sin/Cos.. gibi trigonometrik işlemler, logaritmik işlemler, sayı karşılaştırma gibi işlemleri desteklemektedir. Ayrıca sıklıkla kullanılan Pi sayısı ve Euler değeri de bu sınıf içerisinde birer sabit olarak tanımlanmıştır. Matematik Sınıfının Metotları Math sınıfında hazırlanmış tüm metotlar static’tir ve bu sınıf mühürlüdür (sealed). Yani Math sınıfından kalıtım yapılamaz. Math sınıfının bir nesnesi de yaratılamaz. Bu yüzden, Math sınıfındaki metotlar “Math.Abs()” şeklinde sınıf adı ile birlikte kullanılmalıdır. Math sınıfında çok kullanılan metodları inceleyelim. Math.Abs ( sayı ): Mutlak değer hesaplama fonksiyonudur. Parametre olarak herhangi bir sayısal
değer verilebilir. Zaten sadece pozitif değerler alabilen uint, ulong ve ushort türünden sayısal değerleri alamaz. Math.Min ( sayı1, sayı2 ), Math.Max( sayı1, sayı2 ): İki sayı arasında karşılaştırma yapmak için kullanılır. Min ile küçük sayı, Max ile de büyük sayı eşitlikteki değişkene atanır. Karşılaştırmak için de herhangi bir sayısal değer alabilirler. Math.Sign ( sayı ): Parametre olarak girilen “unsigned” olmayan herhangi bir sayının işaretini bulmak için kullanılır. Pozitif sayılar için +1, negatif için -1 ve sıfır için 0 olarak bir int değer döndürür. Math.BigMul ( sayı1, sayı2 ): Parametre olarak iki tane int türünde sayı almaktadır. Bu iki sayının çarpımlarının sonucunu, kendi türlerinden daha fazla veri alabilen “long” türünde döndürmektedir. Çünkü aynı türdeki değişkenlerin çarpımının sonucu, yüksek olasılıkla kendi türlerinin desteklediği sayı limitlerini geçecektir. Math.DivRem ( bölünen, bölen, out kalan ): % operatörü ile kalan hesaplanabilirken bu fonksiyon ile iki tam sayının bölüm sonucu ve kalanı hesaplanabilmektedir. Dönen sonuç ve parametreleri int veya long türünde olabilir. Math.Floor ( sayı ): Yuvarlama fonksiyonlarındandır. Sayıyı aşağı doğru yuvarlamak için kullanılır. Parametre olarak aldığı sayı double, decimal veya bunlara dönüştürülebilir olmalıdır. Math.Ceiling ( sayı ): Yuvarlama fonksiyonlarındandır. Sayıyı yukarı doğru yuvarlamak için kullanılır. Parametre olarak aldığı sayı double, decimal veya bunlara dönüştürülebilir olmalıdır. Math.Round ( sayı ): Yuvarlama fonksiyonlarındandır. Sayıyı en yakın tam sayıya çevirmek için kullanılır. Parametre olarak aldığı sayı double, decimal veya bunlara dönüştürülebilir olmalıdır. Math.Round ( sayı , basamak_sayısı ): Yuvarlama fonksiyonlarındandır. Virgülden sonra kaç basamağa yuvarlanacağı belirtilebilir. Parametre olarak aldığı sayı double, decimal veya bunlara dönüştürülebilir olmalıdır. Math.Truncate( sayı ): Sayının tam kısmını döndürür, ondalıklı kısmını siler. Parametre olarak aldığı sayı double, decimal veya float gibi ondalıklı sayılar olabilir. Math.Log10( sayı ): Parametre olarak alınan sayının 10 tabanına göre logaritmasını hesaplamaktadır. Sayı, double veya double türüne dönüştürülebilir olmalıdır. Math.Log( sayı ): Taban değeri belirtilmediği için, sonuç sayı değerinin “e” tabanındaki logaritması olacaktır. Sayı, double veya double türüne dönüştürülebilir olmalıdır. Math.Log( sayı, taban ): Parametre olarak verilen sayıyı, istenilen tabandaki algoritması hesaplanarak sonuç elde edilir. Sayı ve taban, double veya double türüne dönüştürülebilir olmalıdır.
Math.Pow( sayı, üs ): Parametre olarak verilen sayının belirtilen kuvvetini hesaplamak için kullanılır. Sayı ve üs, double veya double türüne dönüştürülebilir olmalıdır. Math.Sqrt( sayı ): Parametre olarak alınan sayının karekökünü hesaplayan fonksiyondur. Sayı, double veya double türüne dönüştürülebilir olmalıdır. Math.Exp( üs ): Parametre olarak verilen “üs” değerine göre “e” sayısının kuvvetini hesaplar. Üs, double veya double türüne dönüştürülebilir olmalıdır. Math.Sin( açı ), Math.Cos( açı ), Math.Tan( açı ): Parametre olarak verilen “açı” değerinin Sinus, Cosinus ve Tanjant değerlerini hesaplayan fonksiyondur. Açı, double veya double türüne dönüştürülebilir ve radyan cinsinden olmalıdır. Math.Asin( değer ),Math.Acos( değer )Math.Atan(değer ): Matematikte ters trigonometrik fonksiyonlar, tanım kümesinde bulunan trigonometrik fonksiyonların ters fonksiyonudur. arcsin, arccos, arctan sırasıyla sin-1, cos-1, tan-1 olarak gösterilir. Sinus, cosinus ve tanjant değerleri belli olan açıların hesaplanmasında kullanılır. Hesaplanan açı radyan cinsinden olduğundan, açıya dönüştürmek için 180 ile çarpılması gerekmektedir. Değer, double veya double türüne dönüştürülebilir ve ( -1 ? değer ? 1) aralıklarında olmalıdır. Math.Sinh( açı ), Math.Cosh( açı ), Math.Tanh( açı ): Parametre olarak verilen açıların hiperbolik sinus, cosinus ve tanjant değerlerini hesaplanmasında kullanılır. Hesaplanan açı radyan cinsinden olduğundan, açıya dönüştürmek için 180 ile çarpılması gerekmektedir. Açı, double veya double türüne dönüştürülebilir ve radyan cinsinden olmalıdır. Random Sınıfı C# programlama dilinde program geliştirirken kimi zaman rastgele değerlere ihtiyaç duyabiliriz. Bu ihtiyaca yönelik Random sınıfı geliştirilmiştir. Random sınıfı, sistem zamanına (tarih-saat) göre rastgele bir değer oluşturur. Kullanabilmek için bu sınıftan yeni bir nesne oluşturulması gerekmektedir. Collection Sınıfı C# programlama dilinde koleksiyonlar, nesneleri gruplamayı sağlayan sınıflardır. Klasik dizi (array) yapısından çok daha fazla özelliği olan, System.Collections altında tanımlı bir veri türüdür. IEnumerable arayüzü koleksiyon sınıflarının tümüne uygulanmıştır. Böylece tüm koleksiyon nesneleri foreach döngüsü ile kullanılabilir. Koleksiyonlar, nesnelerden oluşmuş, çok sayıda verinin tutulduğu türlerdir. Diziler ile arasındaki fark ise diziler sabit boyutlara sahip iken, koleksiyon yapılarının boyutları dinamik olarak artmaya ve azalmaya imkân sunar. Bunun yanında koleksiyondaki elemanları numaralamak, sıralamak, yeni eleman eklemek, eleman çıkartmak, koleksiyonda eleman aramak gibi özellikleri destekleyen
bir yapıdır. Farklı durumlar için oluşturulmuş çeşitli koleksiyon yapıları mevcuttur. Kullanım özelliklerine göre özelleşmiş koleksiyon yapıları mevcuttur.
• ArrayList: Nesnelerden oluşan dizi yapısıdır. 0’dan başlayan bir indis ile elemanlarına erişilebilir.
• Hashtable: Bu liste türünde indis kullanılmaz. Elemanlarına anahtar ve buna karşılık gelen değerler şeklinde erişilebilir.
• Queue: İlk girenin ilk çıktığı bir kuyruk yapısıdır. Bu kuyruğun sonuna bir eleman eklemek için Enqueue(), başından bir eleman çekmek için de Dequeue() metotları kullanılır.
• Stack: Son girenin ilk çıktığı bir yığın yapısıdır. En üste yeni eleman eklemek için Push(), en üstten bir eleman çekmek için de Pop() metotları kullanılır.
• Dictionary: Hashtable’ın özelleşmiş bir türüdür. Elemanları anahtar ve değer şeklinde eklenmektedir. Ayrıca kullanıcıların da kendi koleksiyonlarını oluşturmalarına izin vermektedir. String Sınıfı System.String sınıfını temsil etmektedir. String, günlük hayattaki metinleri, bilgisayar ortamında ise art arda gelen karakter dizilerini simgeler. String veri türü her ne kadar değer tipi kabul edilse de referans tipinde bir veri türüdür. String sınıfının çeşitli metotları vardır, bunlardan en sık kullanılanları şunlardır:
• Length: Metnin uzunluğunu yani kaç karakterden oluştuğu bilgisini vermektedir. int türünde değer döndürür.
• ToLower: String türünde tanımlanmış değişkendeki metnin tümünü küçük harfe çevirir.
• ToUpper: String türünde tanımlanmış değişkendeki metnin tümünü büyük harfe çevirir.
• Compare: Metin karşılaştırma işlemi yapmak için kullanılır. String ifadeleri karakter karakter karşılaştırarak sonucu int bir değer olarak döndürür.
• Concat: Bu metot, string ifadeleri birleştirmek için kullanılır. Verilen metinleri art arda ekler ve yine string türünden bir değer döndürmektedir.
• Copy: Metni başka bir değişkene kopyalamak için kullanılır.
• Format: Verilen string bir ifadeyi istenilen formata uygun şekilde düzenleyerek yine geriye string bir değer döndürür.
• IsNullOrEmpty: Parametre olarak verilen string değişkenin boş olup olmadığını kontrol etmek için kullanılır. Sonucu boolean olarak döndürmektedir.
• Contains: Bu metot, bir string değer içinde karakter ya da metin aramak için kullanılmaktadır. Boolean bir değer döndürür.
True ise aranan metin, string değerin içinde vardır, false ise bulunamamıştır.
• CopyTo: Bu metot ile, string bir değişken içinden belirtilen konumdan bir char dizisine kopyalama yapar. String değişkenin başlangıç indeksi seçilir, char dizisinin kopyalama yapılacağı başlangıç indeksi ve kopyalanacak karakter sayısı verilerek kopyalama yapılır.
• EndsWith: String bir değişkenin sonunun verilen bir char veya string türündeki değere eşit olup olmadığını kontrol eder.
• IndexOf: String bir değişken veya değer içinde karakter ya da string bir ifadeyi aramak için kullanılır. Aranan değer bulunur ise ilk bulduğu metnin indeks değerini döndürür. Bulamazsa -1 döndürür.
• Insert: Verilen string bir değer içerisine, belirtilen başlangıç pozisyonundan itibaren araya yeni metin ilave edilir. Geriye metnin ilave edilmiş hâlini döndürür.
• LastIndexOf: IndexOf metoduna benzerdir ve benzer bir kullanımı vardır. IndexOf aranan metnin bulduğu ilk indeksini verirken, LastIndexOf ise aranan metnin bulunduğu son konumu int türünde vermektedir. Aranan metin bulunamazsa yine -1 değerini döndürür.
• PadLeft: İki çeşit kullanımı vardır. - PadLeft(int bosluk_sayisi): Metnin sol başına verilen boşluk sayısı kadar “ ” boşluk karakteri ekler. - PadRight(int bosluk_sayisi): Metnin sağına verilen boşluk sayısı kadar “ ” boşluk karakteri ekler.
• Remove: Bu metodun da iki farklı kullanımı vardır: - Remove( int baslangıç_konumu ): String ifadenin verilen konumundan sonuna kadar silmek için kullanılır. - Remove( int baslangıç_konumu, int kaç_adet_silineceği ): String ifadenin verilen başlangıç konumundan belirtilen adet kadar karakter silmek için kullanılır.
• Replace: Verilen metin içerisindeki bir metin arar ve bunu yeni metin ile değiştirir.
• Split: String bir değişkenin değerini belirtilen koşullara göre parçalara ayırmaya yarar. İçerisinde nokta “.” geçen bir paragraf metnini, cümlelerden oluşan bir string dizisine çevirebilir.
• StartsWith: Bir metnin verilen bir karakter ya da bir metin ile başlayıp başlamadığını kontrol etmektedir. Boolean bir değer döndürür. True ise verilen metin ile başlamış, False ise verilen metin ile başlamamıştır.
• Substring: Bir metnin içinden istenilen yerden, istenildiği kadar metin almak için kullanılır.