Merhaba, tekrar hoş geldiniz. Bu derste, sabit dizeler hakkında konuşmak istiyorum.
Dize değişmezlerinin veya bir dize sabitinin çift tırnak içinde olduğunu biliyoruz.
Peki ya değişkenin kendisi? Değişkenin bu değeri asla değiştiremeyeceğinden
nasıl emin olabilirsiniz?
Bu bir sabit olarak adlandırılır. Bu nedenle, değişkenlerinizin
değerlerinin hiç değişmesini istemediğiniz
programınızda bazen sabit dize gereklidir.
Örneğin, bir hesaplamanın çevresini oluşturuyorsak,
3 yaparız. 14159 kez çap.
3. 14159 bir sabittir. Hiç değişmez.
Pi sayısını temsil ediyor.
Bu nedenle, sihirli sayıyı kullanmak yerine bir değişken kullanabilsek ve bu
değişkenin asla değişmediğinden emin olabilsek gerçekten güzel olurdu.
Dolayısıyla, her seferinde sadece
sayı yazmak yerine sembolik bir sabit kullanmak için iyi nedenler vardır.
Öncelikle, bir isim size bir sayıdan çok daha fazlasını anlatır.
Borç 0'a eşittir. 015 çarpı ev değeri, borç
eşittir vergi oranı çarpı değerden çok daha az anlamlıdır.
Bu yüzden hiç değişmeyen sayıları temsil eden değişken adlarına
sahip olmak istiyoruz.
Eğer uzun bir programı okursanız, ikinci
vizyon versiyonunun anlamı çok daha açıktır.
Bu koda bakmak ve 0'ı anlamak çok daha kolay. 015 vergi oranını temsil eder.
Bir sabiti birkaç yerde kullandığınızı ve değerini
değiştirmeniz gerektiğini varsayalım,
sadece sabiti tanımladığınız tek bir noktada değiştirmek yerine gidip
programın her yerinde bu değeri değiştirmeniz gerekecektir.
Sihirli sayılar terimini kullanırken bundan daha önce bahsetmiştim.
İşte buna atıfta bulunuluyor.
Bir programda bir değişkende saklanmayan bir sayı kullanıldığını gördüğünüzde,
genellikle en iyisi bu sayıyı oluşturmak ve bir sabite koymaktır.
Çünkü birden fazla kez kullanırsanız ve bu değişken
değişirse, tek yapmanız gereken bir kez
değiştirmektir. Kullandığınız her yerde değiştirmek zorunda değilsiniz.
Bu yüzden sihirli sayılardan kaçının, sabitleri kullanın.
C'de sabit tanımlamanın bir yolu da önişlemci yönergesi
tanımlamaktır.
Yani bu önişlemci yönergesi sabitleri tanımlamanıza izin verir
ve aslında bunu birkaç programda kullandım. Şimdi bunu açıklamaya yardım etmeye çalışıyorum.
Yani bir vergi oranı yapmak istiyorsanız ve bu bir sabitse,
önüne pound işareti koyarak tanımla diyebilirsiniz.
Pound işareti nedeniyle bunun bir önişlemci yönergesi olduğunu biliyoruz
ve sonra adı ve ardından değeri söyleyeceğiz.
Programınız derlendiğinde, değer 0 olur. 015, vergi oranını kullandığınız
her yerde, tıpkı bir değişken gibi ikame edilecektir, ancak
aslında bir değişken değildir.
Buna başka bir değer atayamazsınız.
Bir değişken olsaydı, ona veri atayabilirdiniz,
ancak bu durumda değil çünkü bu bir önişlemci.
Yani önişlemci yönergesi veri atayamayacağınızı söyler ve siz
de bunu define ile belirtirsiniz.
Bunun için sözdizimine dikkat edin. Pound sembolünün ardından tanımlanmış anahtar kelime gelir.
Ondan sonra da isminiz geliyor.
Herhangi bir atama operatörü kullanmıyoruz.
Sadece adımız ve ardından boşluk ve ardından değerimiz var.
Dolayısıyla, bu tanıma bir değer atamak için tek ihtiyacınız olan bir boşluktur.
Sonunda noktalı virgül yok. Bu bir açıklama değil. Bu çok özel.
Yani burada olan şey, bu önişlemciler için derleme zamanı ikamelerinin
gerçekleşiyor olmasıdır. Önişlemci, derleyici hatırlamadan önce çalışır.
Önişlemci çalışacak ve bu tanımlanmış taşıma köklerini görecektir. Ve vergi oranı gördüğü her yere
0 yazacaktır. 015 derleyici için.
Tanımlanmış ifadeler programın herhangi bir yerinde görünebilir.
Yerel tanım diye bir şey yoktur. Bir kez tanımladığınızda, herkes
onu kullanabilir.
Şimdi en iyi uygulama veya gelenek genellikle tanımlanmış ifadeleri
programın başına veya birden fazla kaynak dosyada
paylaşmak istiyorsanız bir include dosyasının içine
koymaktır, ancak bunu yapmak zorunda değilsiniz.
Önişlemcide çalıştığı için herhangi
bir kapsamı yoktur, yerel veya global değildir.
İstediğiniz yere koyabilirsiniz. Ve programın herhangi bir yerinde, tanımlanmadan
önce kullanılıyor olsa bile bunu görebilirsiniz.
Tanımlı ifadeler de gerçekten iyidir çünkü programlarınızı daha taşınabilir hale getirmeye yardımcı olurlar.
Bazen tanımlanmış bir ifade kullanabilir ve bunu program çalışırken çalıştırdığınız belirli bir
bilgisayarla ilişkilendirebilirsiniz ve bu değeri alacaktır.
defined deyimi sadece sayılar için değil, karakterler ve dize sabitleri için
de kullanılabilir. Eğer böyle bir şey yapmak isteseydik, bu tamamen geçerli olurdu.
Tek karakterleri tek tırnak içine almanız yeterlidir.
Ve bir dizenin tamamını gerçek anlamda koymak istiyorsanız,
bunu çift tırnak içine alırsınız. Ve bu oops da bunu yapıyor.
Sabitleri oluşturmanın ve görmenin bir başka yolu da daha
yeni bir mekanizmadır. C90 temel olarak sabit değiştirici
sağlayan başka bir yol ekledi.
Bir değişken bildirimini bir sabit bildirimine dönüştürmek için constant anahtar sözcüğünü kullanabilirsiniz.
Bu da söz konusu değişkeni asla değiştirememenize olanak tanıyacaktır. Yani tek yapmanız gereken const demek ve ardından
veri türünü ve sonra da değişkenin adını söylemektir.
Ve bu örnekte bunun yaptığı şey, ayları 12 için sembolik bir sabit haline getirmek olacaktır.
Buna değişken demiyoruz çünkü bir değişken değişebilir, bu yüzden
değişken olarak adlandırılır.
Sabitleriniz veya değişkenleriniz
vardır ve aylardaki sabitler değişken değildir, değişmez.
Sabit, ayları salt okunur bir değer haline getirir.
Ayları görüntüleyebilir ve hesaplamalarda kullanabilirsiniz. Ayların değerini değiştiremezsiniz.
Bu nedenle, verilerin değişmesini istemiyorsanız sabitler önemlidir
ve ayrıca sihirli sayıların yerini alabilirler.
Const daha yeni bir yaklaşımdır ve define kullanmaktan daha esnektir.
Bir tür bildirmenizi sağlar.
Ayrıca, bir programın hangi bölümlerinin sabiti kullanabileceği
üzerinde daha iyi kontrole sahiptir.
Bu nedenle, mümkün olduğunca sabit kullanmalısınız, ancak ilk mekanizma
olduğu için tanımlanmış kullanan birçok program göreceksiniz.
Ayrıca, bir sabit oluşturmanın üçüncü bir yolu daha vardır
ve bu da enum kullanmaktır. Enumlar hakkında konuştuğumuzu hatırlayın.
Enum'lar, kendi değişken türünüzü oluşturmanın ve yalnızca
onunla ilişkili belirli verilere sahip olmanın bir yoludur. Enumların değerini değiştiremezsiniz.
Bir enum tanımladığınızda, bu değerlere sahip olması gerekir.
Farklı değerlere sahip olabilir, ancak yine
de sembolik bir sabit oluşturmanın bir yoludur, tam bir yol değildir, ancak bir tür yoldur.
Ayrıca, const ile bir karakter dizisini başlatabilir ve sabit olarak bildirebilirsiniz, bu
standart mesajları ele almak için iyi bir yoldur.
Yani const char message equals the end of the world is nigh derseniz,
bu mesajı bir sabit olarak bildirir ve programınız içinde açıkça
değiştirilmekten korunur. Str kopyalama yaparak mesajı değiştirmeye çalışmak
derleyiciden bir hata mesajıyla sonuçlanacaktır.
Ve şimdi bunu programın çeşitli bölümlerinde çıktı olarak görüntülenebilecek
standart bir mesaj için kullanabilirsiniz.
Standart mesajları tanımlama tekniği, bahsettiğim gibi birçok yerde
kullanılıyorsa özellikle kullanışlıdır.
Sihirli sayılarda olduğu gibi, bu tür sabitlerin programın diğer bölümlerinde yanlışlıkla
değiştirilmesini önler.
Yani sabitleri programınızda kullanmak istiyorsanız,
bunları kullanmanın temelde iki yolu vardır: define ve constant
anahtar sözcüğünü kullanmak.
Lütfen buna dikkat edin.
Bunu ilerideki bazı örneklerde görebilirsiniz.
Teşekkür ederim.