NTP C# Dersi 8: Rastgele Sayı Üretme

Merhaba arkadaşalar, şimdi sizlere bir classtan, rastgele sayı üreten bir classtan bahsedeceğim. Aralarda classlara dair bazı ipuçları vereceğim. Bu arada da classların yapısını pekiştirmiş olacağız. Bu classımızın adı Random.

Class Random

Evet, önceki derslerimizde bazı örnek kodlamalar yaptık ve kodlarımız arasında Convert ve Console classlarını kullandık. Ama Convert ve Console  static bir classtır. Random ise static olmayan bir class. Random gibi classlar için dinamik class tabirini kullanabiliriz. Fakat oluşturulurken static classlarda olduğu gibi dinamik ibaresi almıyorlar tabii ki, static değilseler dinamiklerdir diyebiliriz. Dinamik class oluşturmak için static komutunu kaldırmamız yeterlidir.

NTP C# Dersi 2’de dinamik classlardan bahsetmiştik. Hatırlayın dinamik classları, “iş yapan değişkenler barındıran çok boyutlu dev bir değişken” olarak tanımlamıştık. Bu tanımlama Random classı için de geçerlidir.

İş yapan değişkenlerden kasıt, clssın sahip olduğu metotlardır. Evet, metotlar bir değişken görevi görebilir, fonksiyon da… Veya bu, fonksiyonel bir değişken de olabilir. Metotlar çok fazla çeşidi olan yapılardır.

Random Türü Değişkeni Tanımlama

Random gibi bir class tanımlarken yerel değişken tanımlamada olduğu gibi classın adını yani türünü yazıyoruz. Bu uygulamada tür Random. Nasıl ki, değişkenleri programın ileriki safhalarında kullanabilmek için bir lakap/ özel-isim veriyoruz. Aynı şekilde tanımlayacağımız bu çok boyutlu değişkene de bir lakap/özel-isim veriyoruz.

Tanımlama işi kısmen bitti fakat tanımladığımız classı kullanabilmemiz için değişkenlerden farklı olarak; classların kurucu(constructor) metotları vardır ve bu kurucu metotları çağırmadan tam anlamıyla tanımlama işi bitmez.

Kurucular(Constructors)

Kurucular da bir metottur. Bütün class ve structlar kurucu metotlara sahip olmak zorundadır. Kurucu metotlar classları ile aynı isme sahiptirler. Parametreleri olabilir. Kurucular classı oluşturmadan önce bazı varsayılan değerleri, ayarları yapmamıza olanak tanır. Örneğin biz bir class oluşturacağız ve classımızı kullananlara tanımlama esnesında, class ile ilgili bazı değişiklik veya classın barındırdığı değişkenlere varsayılan bir değer yüklemesi, yapmasına izin vereceğiz. İşte bu ayarlamaları kurucu metotlar ile yapıyoruz.

Bahsettiğimiz ayarlamaları her kurucu yapmak zorunda değildir. Daha doğrusu her kurucu da iş yapmak zorunda değildir.  Ama kurucu iş yapsın yapmasın tanımlama yapabilmemiz ve classı kullanabilmemiz için kurucuları new komutu ile çağırmamız gerekiyor.

New Komutu

New komutu kullanım yerlerine göre farklı işlevleri vardır. Biz ise çağırma ya da oluşturma işlevinden yararlanacağız. New komutunun bir işlevi de nesnelerin kurucularını çağırmaktır. Random classımızı tanımlamaya devam edelim. Türü ve ismini belirlemiştik. Bir sonraki satırda tekrar ismini yazıp eşittir operatörü(“=”) ile new komutunu yazdıktan sonra kurucu metodu yazıyoruz. Şekille göstermek gerekirse:

 

Nesne(class, struct) tanımlama şekli:  
NesneAdi lakap; Random lakap;
lakap = new KurucuMetotAdi(); lakap = new Random();
 
Tek satırda nesne tanımlama:  
NesneAdi lakap = new KurucuMetotAdi(); Random lakap = new Random();

 

Aslına bakarsanız string gibi yerel değişkenler için de new komutu kullanılabilir. Tabi ki yerel değişkenler için classlar veya structlar da olduğu gibi zorunlu değildir.

Random İle Rastgele Sayı Üretme

Random ile rastgele sayı üretmek için bu işi yapan metodunu yani Random classının Next metodunu kullanacağız. Dinamik class ile static class metotlarını çağırma işi ufak bir fark dışında aynıdır. Static classta metodu çağırırken classın adını yazarken dinamik classta ise class taktığımız lakabı yazıyoruz.

Static classtan metot çağırma:
ClassAdi.MetotAdi();

Dinamik classtan metot çağırma:
lakap.MetotAdi();

Örneklere geçmeden önce Random classının/sınıfının metotlarına bir göz atalım. Microsoft Visual Studio kullanıyorsanız Random sınıfının üstüne tıklayıp, F12 ye basınız. Random sınıfının tüm metotlarını göreceksiniz.

Ama bizim üzerinde duracağımız metotlar;

public virtual int Next(); // [m1]
public virtual int Next(int maxValue); // [m2]
public virtual int Next(int minValue, int maxValue); // [m3]

Metotlarıdır.

Bu üç metot bize rastgele int türünde sayılar döndürecektir. Örnekler ile daha iyi kavrayacağız.

 

// [-I] : Rastgele sayı üreten program.
using System;
namespace yG_CS_Proje1
{
    class Program
    {
        static void Main(string[] args)
        {
            Random uretec = new Random(); // [01]
            int rSayi = uretec.Next(); // [02]
            Console.WriteLine(rSayi); // [03]
            Console.ReadKey(); // [04]
        }
    }
}
// [01]: “uretec” adında/lakabında Random türünde bir class(sınıf) değişken tanımladık. New komutu ile kurucu metodunu çağırdık ve Random sınıf değişkenini kurduk.
// [02]: “uretec” lakabını taktığımız dev değişkenimizin Next metodunu çağırdık. Next metodu rastgele bir sayı üretti. “rSayi” adında/lakabında int(tam sayı) türünde bir yerel değişken tanımladık. Rastgele üretilen sayıyı “rSayi” lakabındaki yerel değişkenine yükledik.
// [03]: “rSayi” değişkeninin sakladığı sayıyı ekrana yazdırdık.
// [04]: Konsol penceresinin hemen kaybolmasını engelledik.
 
Yukarıdaki örnekte [m1] metodunu çağırdık. [m1] metodu int değişkeninin saklayabileceği pozitif tüm tam sayıları rastgele döndürebilir. Next metoduna bir parametre atarsak [m2] metodunu çağırmış oluruz. [m2] metodu üst sınırı belirlememize olanak tanır yani üretilecek sayının en büyük kaç olacağını belirleye biliriz. [m3] metodunu çağırdığımızda ise üretilecek sayının aralığını belirleye biliriz. [m3] metodu ile negatif sayılar da üretmemiz mümkün.
 

Önerilen diğer yazılar:
NTP C# Dersi 7: Döngü (Do While ve For)

NTP C# Dersi 9: Dizi Değişkenler

 

Yorum Yap

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Şu HTML etiketlerini ve özelliklerini kullanabilirsiniz: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>