C# 50 Baştan Sona Anlatım

HAMUŞ
Misafir Üye
Anlatım Volkan Aktaş'ın kitabından aldığım notlardan oluşacak ve sade bir şekilde olacaktır. Amacım wardom'da büyük bir C# dökümanı oluşturmak ve öğrenirken, öğretmektir. Kitabı almak isteyenler için: Her Yönüyle C# 5.0

2 yıl öncesinde python anlatımı yapmıştım. Konuya Buradan ulaşabilirsiniz. Ondada aynı şekilde öğrenirken öğretiyordum.

Python derslerini fazla ilgi görmemesi sebebiyle wardomda 13. konuda bırakıp, başka bir forumda bitirmiştim. İnş bu seferkinde wardom'da sonuna kadar gidebilirim.


Şimdi gelelim C# 5.0'a...

C# Programlama dili, TurboPascal, Delphi, J++ gibi dillerin gelişiminde öncülük etmiş olan Anders Hejlsberg'in başında bulunduğunu bir ekip tarafından geliştirilmiştir.

(Anders Hejlsberg)


C# 2002 de 1.0 sürümü ile .NET dilleri arasında yer almıştır. Orta düzeyli, Tam olarak nesne yönelimli, hata denetlemesi yüksek seviyede, xml desteği olan geniş bir programlama dilidir.

C# anlatımında Python anlatımından farklı olarak, tek tek konu açmak yerine bu konudan devam edeceğim.



Dersler:

1-) C# 5.0 Kurulum ve Çalışma Ortamına Genel Bakış

2-) Properties Penceresi

3-) Console Application 1 [Write-WriteLine, Read-ReadLine]

4-) Console Application 2 [BackgroundColor-ForegroundColor, ConsoleKeyInfo]

5-) SABİTLER [const, readonly]

6-) DEĞİŞKENLER [Hazırlanıyor...]

 
- Yönetici düzenlemesi: :
HAMUŞ
Misafir Üye
C# 5.0 Kurulum ve Çalışma Ortamına Genel Bakış

C# 5.0, Visual Studio 2012 versiyonunda yer almaktadır. Buradan Ultimate sürümünü iso dosyası şeklinde indirebilirsiniz. Ultimate sürümde bize 30 günlük deneme süresi, eğer kayıt olursak 90 gün deneme süresi veriyor. Kurulum aşamasına geçelim;

İndirdiğiniz iso dosyasını poweriso türü benzeri programlar ile açabilirsiniz. Basit bir kurulumu var ancak ben yinede resimli anlatım yapıcam;









Visual Studio yu açtığınızda size hangi programlama dilinde çalışacağınızı soracaktır. Önceden kurulum yaptığımdan bende sormadığı için resim koyamadım. Siz orda C#'ı seçersiniz.

Kurulum aşaması bitmiştir.


Kodlarla çalışmaya geçmeden önce çalışma ortamımıza genel bir bakış yapalım. Start Page Sayfası:




Start Bölümünden yeni proje veya varolan projeleri açabiliriz.

Recent bölümünde ise en son kullandığımız 10 proje sergilenir.


New Project:



Recent ile son kullanılan proje şablonları listelenir,

Installed ile c# a ait yüklü olan proje şablonları listelenir,

Online
ile internet ortamında mevcut olan proje şablonları listelenir.

Installed kısmındaki şablonları inceleyelim;

Windows Forms Applications: Windows Formlarının bulunduğu masaüstü programları geliştirmek amacı ile kullanılır.

WPF Application: Görsel açıdan zengin niteliklere sahip XAML tabanlı Windows Presentation Foundation uygulamaları geliştirilir.

Console Application: Windows formları bulunmayan komut satırı uygulamaları geliştirilir. (Kod yazma aşamasında derslerimiz bu uygulamadan başlayacaktır.)

ASP.NET Web Forms Application: İnternet ortamında çalışılacak ASP.NET uygulamarı ve web siteleri geliştirilir.

Class Library: Dll dosyalarından oluşan sınıflar geliştirmek için kullanılır.

Portable Class Library: Windows Phone 7, Silverlight, Microsoft .NET Framework ve Xbox 360 platformlarını aynı anda destekleyecek uygulamalar geliştirilir.

ASP.NET MVC 3-4 Web Application: Dinamik web siteleri, web uygulamarı ve web servisleri geliştirilir.

Silverlight Application: Silverlight internet uygulamaları geliştirilir.


Şimdi Windows Form Applicationu seçerek uygulamamızı açıp ortam bileşenlerini tanıyalım.


Menü Çubuğu


File: Yeni proje açma, varolan projeleri açma, proje kaydetme vb işlemler gerçekleşir.

Edit: Kesme, kopyalama, yapıştırma, arama, değiştirme vb işlemler gerçekleşir.

View: Pencere ekleme, kaldırma, düzenleme gibi işlemler gerçekleşir. (Hazır view sekmesinden bahsetmişken, View-Error List yolunu izleyip Error List'ide açmış bulunalım.)

Project: Proje ile ilgili çeşitli ayarlar, projeye bileşenler ve referans ekleme işlemleri gerçekleşir.

Build:
Proje derlenerek başka bilgisayarlarda kullanıma hazırlamak amacıyla kullanılan sekmedir.

Debug:
Üzerinde çalışılan uygulamayı çalıştırmak ve hataları ayıklamak için kullanılan sekmedir.

Format: Form ara yüzündeki nesneleri hizalama, yerleşim gibi düzenlemeler gerçekleşir.

Test: Kodları ve uygulamaları test etmek amacıyla kullanılan sekmedir.

Analyze: kod ve uygulamaları analiz etmek için kullanılan sekmedir.

Window: Visual Studio IDE'sindeki pencerelerin yerleşim şekilleri ile ilgili ayarlar yapılan sekmedir.

Araç Simgesi Çubuğu


Menülerde yer alan işlemleri araç çubuğundaki simgeler sayesinde daha kısa sürede gerçekleştirebileceğimiz bölümdür.


Solution Explorer


Projeleri bir çatı altında toplamak amacıyla oluşturulmuştur. İçerisinde bir ya da birden fazla projeler bulunabilir. Projede mevcut olan kontrol, sınıf, metod gibi proje bileşenleri görüntülenir.

ToolBox


Form üzerine ekleyebileceğimiz kontrolleri listeler.


Error List


Kod yazımında yaptığımız hataları ayrıntılı bir şekilde gösteren bölümdür. View-Error List bölümünden ulaşılır.

 
- Yönetici düzenlemesi: :
HAMUŞ
Misafir Üye
- Yönetici düzenlemesi: :
Snappy
Forum Kalfası
Şuan gerçekten çok büyük ve hayırlı bir iş yapıyorsunuz. Çok teşekkürler, ++++K :) Sürekli takip edeceğim inşallah..

Edit: Bunları toplu bir şekilde, paket halinde fln paylaşsanız ne harika olur. :)
 
- Yönetici düzenlemesi: :
HAMUŞ
Misafir Üye
Konuya bir post atmanız bile beni heveslendiriyor arkadaşlar. Python konusunda kendi kendime anlatıyordum nerdeyse.

Şuan gerçekten çok büyük ve hayırlı bir iş yapıyorsunuz. Çok teşekkürler, ++++K :) Sürekli takip edeceğim inşallah..

Edit: Bunları toplu bir şekilde, paket halinde fln paylaşsanız ne harika olur. :)
Konu biraz ilerlesin, pdf formatına çeviririz. Örneğin 10 tane konu anlatınca hepsini pdf olarak hazırlarız. bi 10 konuda tkrr pdf yaparız. Kendiliğinden paket haline döner zaten o :)


Daha yeni döndüm eve Properties konusu az sonra anlatıcam ;)
 
HAMUŞ
Misafir Üye
Properties Penceresi

Üzerinde çalıştığımız projelerin bazı özellerini ayarlamak için Properties Penceresini kullanacağız.

Bu Pencereye Project menüsünden [Proje Adı] Properties, Solution Explorer bölümünden Sağ tık-Properties veya Alt+Enter tuşları ile ulaşabiliriz.

Application Sekmesi:



Bu sekmede uygulama ile ilgili genel ayarlar gerçekleştirilir.

1-) Assembly name oluşturulacak olan exe dosyasının ismi, Default namespace ile varsayılan namespace ismi belirlenir.

2-) Target Framework ile projemizin framework versiyonunu değiştirebiliriz.

3-) Output Type proje tipini görüntüler. Üç çeşit değer alır; Windows Application, Console Application, Class Library.

4-) Startup object ile projenin başlangıcında hangi formun çalıştırılacağını belirleriz.

5-) Assembly Information ile proje ile ilgili açıklama, dil ve versiyon bilgilerini girebiliriz.

6-) Resources ile projede kullanılacak olan kaynaklarla (resin, simge, vb bilgiler) ilgili belirlemeler yapılır. Icon and Manifes bölümünde programımızın simgesini belirleyebiliriz. Resource File bölümünde ise projede kullanacağımız kaynakları bir resource dosyası içerisinde oluşturmuşsak, o dosyanın yolunu belirleriz.

Build Sekmesi:



Sınıfların derlenmesi ile ilgili genel ayarlar yapılır.

1-) Platform Target ile hanti tip işlemcilerde çalışacağı belirlenir. 3 değer alır; Any CPU, x86, x64

2-)Output Path Bölümünde, sınıfımızın derleneceği klasör yolu belirlenir.

3-) XML Documentation File ile sınıfımız içerisinde kullanacağımız XML yorum dosyasının yolu belirlenir.


Debug Sekmesi:


Proje derlenmesi ile ilgili genel ayarlar gerçekleştirilir.

1-) Start Project işaretli iken, herhangi bir işlem yapılmadan proje başlatılır.

2-) Start External Program işaretli iken, belirtilen program projenin başlatılması esnasında çalıştırılır.

3-) Start Browser with URL işaretli iken, belirtilen URL projenin başlatılması esnasında görüntülenir.

4-) Enable Native Code Debugging ile native debugging desteği sağlanır.

5-) Enable SQL Server Debugging ile SQL server uygulamaları için debugging desteği sağlanır.

6-) Enable the Visual Studio Hosting ile Visual Studio uygulamaları için debugging desteği sağlanır.


Resources Sekmesi: Proje içinde kullanacağımız yazı, resim gibi öğeleri saklayabileceğimiz resource dosyaları ile ilgili işlemleri gerçekleştirebiliriz.


Settings Sekmesi:


Basit ayarların yapıldığı sekmedir. Proje formlarının ekran koordinatları, çözünürlük, renk tercihi vb işlemler yapılır.

1-) Name: Kod içerisinde temsil edilen ismini belirtir. (değişken ismi)

2-) Type: Türünü belirtir. Örneğin renk ayarlanacaksa türünü System.Color olarak belirlemeliriz.

3-) Scope: Erişim şeklini belirtir. User(Kullanıcı) veya Application(Uygulama)

4-) Value: Ayar bilgisinin içerdiği değeri belirler.


Peference Paths Sekmesi ile projemiz içerisinde kullanacağımız dosyaların yolu belirlenir.

Signing Sekmesi: Sertifika dosyaları oluşturmak için kullanılır. Uygulama başka bilgisayarda çalıştırdığımızda sertifika hatası veriyorsa buradan sertifika dosyası oluşturacağız. Sing the Assembly seçeneğini işaretleyerek New seçeneğine tıklıyoruz;



Açılan pencerede sertifika ismimizi giriyoruz. Ardından istersek Protect my key file with a password seçeneğini tıklayarak sertifika dosyalarımıza şifre koyabiliriz:




Security sekmesinde proje ile ilgili güvenlik ayarları yapılır. This is a full trust application seçeneği işaretli iken uygulamanın tamamı güvenli olarak kabul edilir:




Publish Sekmesi:



Publish Sekmesinde, projenin yayınlanması, versiyon, online-offline çalışabilmesi gibi ayarlar yapılabilir.

1-) The application is avalaible online only seçili iken, uygulamamız sadece online olarak çalışır.

2-) The application is avalaible offline seçili iken, ugulama offline olarakta çalışabilir.

3-) Publish Version ile programın sürüm numaralarını belirleriz. Automatically increment revison with each publish seçeneği seçili ise programın her yayınlanışında sürüm numaraları otomatik olarak arttırılır.

4-) Uptades kısmında uygulamanın güncellenmesi ile ilgili ayarlar yapılır;


a-) After the application starts seçeneği ile güncelleme program çalıştırıldıktan sonra kontrol edilir.

b-) Before the application starts seçeneği ile güncelleme program çalıştırılması esnasında kontrol edilir.

c-) Check every kaç günde bir güncellemelerin kontrol edileceğini belirleriz.

d-) Specify a minimum required version for this applicaton seçeneği ile programın çalışması için en düşük versiyonu belirleriz.


 
HAMUŞ
Misafir Üye
Console Application 1 [Write-WriteLine, Read-ReadLine]

Console Application görsel özellikleri olmayan konsol ekranı uygulamalarıdır. Konsol ekranında kullanılan fonksiyonlar System.Console sınıfına ait olan fonksiyonlardır. Konsol Ekranındaki kod satırlarımız aşağıdaki gibidir;



Konsol ekranında yazırma işlemleri için Write ve WriteLine, okuma işlemleri için Read ve ReadLine metotlarını kullanacağız. Write ve WriteLine ile başlıyalım:

Write-WriteLine Metotları

Write metodu, kendisine gönderilen değeri aynı satırda yazdırmak için kullanılır.
WriteLine metodu ise kendisine gönderilen değeri satır sonu karakterinide ekleyerek bir alt satırdan itibaren yazdırmak için kullanılır.

Örneğin;



F5 yapıp çalıştırdığımızda konsol ekranındaki çıktı: "wardom.org" olacaktır ve imleç cümlenin sonunda belirecektir. İmleç olayıda şudur, write metodunu kullanırsak imleç cümle sonunda, writeline metodunu kullanırsak imleç bir alt satırda belirir.

Şimdi hem write hem writeline metodunu kullanalım;



wardom.
org

şeklinde bir çıktı alıcaz ve imlecimiz 2. satırın sonunda belirecektir. Sadece WriteLine metodunu kullanalım;



wardom.
org

Şeklinde bir çıktı alacağız ve imlecimiz 3. satırda belirecektir.

Kodların sonlarındaki Console.ReadKey() metodu kafanızı karıştırmasın. O konuya daha sonra gelicez, ancak Console.ReadKey() metodunu kodların sonuna eklemezseniz konsol ekranı açıldığı gibi kapanacaktır.

Read ve ReadLine metotlarına geçmeden önce Escape(kaçış) karakterlerini inceleyelim;

\ karakterinin ardından kullanılırak belli bir eylem getiren karakterlere Kaçış(Escape) Karakterleri denir. Başlıca kaçış karakterleri;

\a = Bip sesi çıkartır
\b = Backspace
\f = Sonraki Sayfa
\n = Alt Satıra İner
\r = Satır Başı
\t = Yatay Tab
\v = Dikey Tab
\' = Tek Tırnak
\" = Çift Tırnak
\\ = \ (Ters Bölü İşareti)
\? = ?(Soru İşareti)


Örneğin;

Console.Write("Wardom" + "\t" + "Org");

Kodlarımızın çıktısı: "Wardom (TAB) Org" şeklinde olacaktır.


Read-ReadLine Metotları


ReadLine metodu, konsol ekranında değer okumak için kullanılan metottur. Geriye string değişken türünden değer döndürdüğü için string değişken tiplerindeki değerleri okumak için kullanılır.

Read metodu ise ReadLine metodu gibi değer okumak için kullanılır. Ancak geriye int türünden değer döndürdüğü için, string değişken tipleri dışındaki değerleri okumak için kullanılır.

Not: int değişkeni hesaplanabilecek karakterler için kullanılır. string ise hesaplanamayan. örneğin string değişkenini kullanarak bir hesap makinesi uygulaması yapamazsınız. Biraz programlamayla ilgilenen arkadaşlar string ile int ayrımına aşinadır. Kafası karışanlar pek takmasın zamanla, örneklerle string ile int arasındaki fark anlaşılır.

Şimdi site adı ve kullanıcı adınızı ekrana yazdıran küçük bir uygulama yapalım;



Örneğimizde, ilk olarak string tipte forumadi ve kullaniciadi olmak üzere 2 değişken tanımladık.

2. satırda kullanıcadan Ekrana forum adını girmesini istedik.

Girilen değeri 3 satırda okutup forumadi değişkenine atadık.

4. satırda kullanıcıdan forum kullanıcı adını girmesini istedik.

5. satırda girilen değeri okutup kullaniciadi değişkenine atadık.

6. satırda konsol ekranını temizlememize yarayan Console.Clear() metodunu kullanarak konsol ekranımızı temizledik.

7. satırda kullanıcının girdiği değerleri atadığımız değişkenleri kullanarak Ekrana forumunu ve forum kullanıcı adını yazdırdık. Aralarında bir tablık boşluk olması için \t kaçış karakterini kullandık.

8. satırda konsol ekranımızın açılıp kapanmaması için Console.ReadKey() metodunu kullandık. (Daha öncede söylediğim gibi bu metoda ayrıntılarıyla değineceğiz.)

Uygulamayı çalıştırıp forumunuzu ve kullanıcı adınızı yazdığınızda alacağınız çıktı şu şekilde olacaktır:



Konsol Ekranında kullanacağımız başlıca 4 metoda değindik. Kod yazımı oturduğundan emin olana kadar bu metotlarla küçük küçük uygulamalar yaparsanız yararlı olur. Programlama sabır isteyen bir iştir. O yüzden adım adım yürümeyi tercih edelim. Tamamen oturana kadar örnekler yapmakta fayda var. Anlamadığınız yerleri konu altından sorabilirsiniz.

Dipnot: Kodlar forum üzerinde daha okunur olması için Notepad++ da düzenlenmiştir.

 
- Yönetici düzenlemesi: :
HAMUŞ
Misafir Üye
Console Application 2 [BackgroundColor-ForegroundColor, ConsoleKeyInfo]

BackgroundColor-ForegroundColor Metotları

BackgroundColor, konsol ekranında yazılan yazının arkaplanı renklerini biçimlendirmeye yarar.

ForegroundColor ise, yazı rengini değiştirmeye yarar.

Renk değiştirmek için ConsoleColor renk sabitlerini kullanacağız. Bazı renk değerleri şunlardır;



Küçük bir örnek yapalım;



1. Satırda arkaplan rengini ConsoleColor.Renkadi sabitiyle koyu mavi yaptık.

2. Satırda metin rengimizi sarı yaptık.

3. Satırda arkaplan rengimizin bütün konsol ekranını kaplaması için Console.Clear() metodunu kullandık. Eğer bu metodu kullanmasaydın sadece metin olan satırın arkaplanı koyu mavi olacaktı.

4. Satırda konsol ekranımıza metinimizi yazdırdık.


F5 yapıp programı çalıştırdığımızda;



Çıktısını alacağız.

Programımızın çalışma esnasında belli bi yerden sonra arkaplan ve yazı renginin varsayılan ayarlara geri dönmesi için Console.ResetColor() metodunu kullanabiliriz;




ConsoleKeyInfo Yapısı


Bildiğimiz gibi Read metodunu kullanarak basılan karakter okuyabiliyoruz. char metodunu kullanarakta hangi karaktere basıldığı bilgisine erişebiliriz. Read metodu basılan karakteri, mesela "a" karakterini ASCII karşığı olan 97 değerine çevirecektir. char metodu ise bu değeri tekrar "a" karakterine dönüştürecektir.

Ancak Read metodu ile basılan karakterleri okuyabilsek de Enter, F1, Spacebar gibi tuşları okuyamıyoruz. Bunun için ReadKey ve ConsoleKeyInfo yapısını kullanacağız.

ReadKey ile konsol ekranında basılan bir tuşu okuyup, ConsoleKeyInfo yapısı ile basılan tuşun bilgisini alcağız. ConsoleKeyInfo yapısı, System sınıfının altında bulunmaktadır. Yani System.ConsoleKeyInfo şeklinde kullanacağız.

Örneğin Enter, F1, Spacebar vb tuşlarından birine basıldığında, hangi tuşa basıldığını gösteren bir konsol uygulaması yapalım;



Enter, F1, Spacebar vb tuşlarından hangisine basarsak basalım çıktımız şu şekilde olacaktır;



Burada bize System.ConsoleKeyInfo tuşlarından birine basıldığını söylüyor. Bizim bunu string, yani metin tipine dönüştürmemiz gerekiyor. Onun için ToString metodunu kullanacağız;



Şimdi enter, F1 vb tuşlardan birine bastığımızda bize hangi tuşa bastığımızı söyleyecektir. Çıtkımız şu şekilde olacaktır;



Not: ToString metodunu kullandığımız kodlamada ToString yazmayıp Sadece KeyInfo.Key yazmış olsak da yine aynı çıktıyı alıcaz. ToString i kullanmamızdaki amaç işimizi garantiye almaktır. ToString veya ToInt32 metodunu kullanmaya kendinizi alıştırın. Büyük projelerde sorun çıkabilir bu 2 metodu kullanmazsak.

Şimdi yeni bir uygulama yapalım ve sonra kod satırlarını tek tek inceleyelim;



1. satırımızda kullaniciadi ve sifre olmak üzere 2 tane string tipinde değişken tanımladık.

2. satırımızda kullanıcı adının girilmesini istedik.

3. satırımızda girilen değeri okutup kullaniciadi değişkenine atadık.

4. satırımızda şifre girilmesini istedik.

5. satırımızda girilen değeri okutup sifre değişkenine atadık.

6. satırımızda ekranı temizledik.

7. satırımızda girilen değerleri yazdırmak için F2 tuşuna, çıkmak için ESC tuşuna basılmasını söyledik.

8. satırımızda ConsoleKeyInfo yapımızı kullandık.

9. 10. 11. ve 12. satırlarımız içinde if döngüsü yardımıyla eğer basılan tuş ESC(Escape) ise uygulamanın kapatılmasını programa öğrettik.

13. ve 18. satırlarımız arasında else if döngüsü yardımıyla eğer basılan tuş F2 ise ekranı temizleyip kullanıcı adı ve şifreyi ekrana yazdırması gerektiğini programa öğrettik.


Not: if ve else if döngüsüne daha sonra uzun uzun değineceğiz.

SetCursorPosition ve SetWindowSize METODU

SetCursorPosition metodu, imleci konsol ekranında belirtilen koordinata konumlandırmak amacı ile, "Console.SetCursorPosition( int tipinde yatay koodinat, int tipinde dikey koordinat);" şeklinde kullanılır.

SetWindowSize metodu, konsol ekranının genişlik ve yükseliğini ayarlamak amacı ile, "Console.SetWindowSize(int tipinde genişli, int tipinde yükseklik);" şeklinde kullanılır. Daha iyi kavramak için bir örnek yapalım;



1. satırda SetWindowSize metodunu kullanarak konsol ekranımızın genişliğini 40, yüksekliğini ise 20 olarak ayarladık.

2. satırda SetCursorPosition metodunu kullanarak imlecimizin nerde bilereceğini konumlandırdık. İmlecimizin tam ortada belirmesini istediğimiz için Console.WindowWidth ve Console.WindowHeight ile ekranın genişlik ve yükseklik değerlerini elde ederek 2 ye böldük.

3. satırda imlecimizin konumlandığı yerden WriteLine Metodu ile metinimizi yazdırdık.


Exit METODU

Konsol uygulamasında yapılan işlemler bitince, aksi belirletilmediği sürece uygulamalarımız kendiliğinde sonlanır. Ancak konsol uygulamamızda istediğimiz bir yerde uygulamayı sonlandırıp, konsol ekranı kapatmamız mümkündür. Bunun için Environment sınıfının Exit metodunu kullanacağız;


 
- Yönetici düzenlemesi: :
Snappy
Forum Kalfası
Konuya bir post atmanız bile beni heveslendiriyor arkadaşlar. Python konusunda kendi kendime anlatıyordum nerdeyse.



Konu biraz ilerlesin, pdf formatına çeviririz. Örneğin 10 tane konu anlatınca hepsini pdf olarak hazırlarız. bi 10 konuda tkrr pdf yaparız. Kendiliğinden paket haline döner zaten o :)


Daha yeni döndüm eve Properties konusu az sonra anlatıcam ;)
Bu emeğin mutlaka karşılığını alırsın umarım. Teşekkürler tekrar :)
 
HAMUŞ
Misafir Üye
SABİTLER [const, readonly]

SABİTLER

Sabitler, içeriği sabit olan değer ve ifadeleri saklanması amacıyla kullanılır. Const ya da readonly ifadelerini kullanarak tanımlanır.


Const

Sabit değerleri tanımlamada kullanılır ve değerleri tanımlandıkları anda verilir. Örneğin;

Kod:
const int sayı = 45;
Sabitler tanımlandıktan sonra değişmesi mümkün değildir. Örneğin Pi sayısı sabit bir değer alır, dairenin çevresini ve alanını gösteren bir örnek yapalım;



1. satırda Pi sayısı sabit olduğunu için const ile PI adlı sabit bir değişken tanımladık. Pi sayısı ondalık bir sayı olduğu için Double veri türünü kullandık.

2. satırda double cinsinden alan, cevre, yaricap olmak üzere 3 değişken tanımladık.

3. satırda kullanıcının yarıçapı girmesini istedik.

4. satırda girilen yarıçapı, yaricap değişkenine int tipine çevirerek atadık.

5. satırda çevre formülünü cevre değişkenine atadık.

6. satırda alan formülünü alan değişkenine atadık. Burada Math.Pow ifadesini kullandık. Bu ifade üslü sayılar için kullanılır. Kullanım şekli: Math.Pow(değer, üs)

7. ve 8. satırlarımızda dairenin çevresini ve alanını ekrana yazdırdık.


Readonly

Const gibi sabit değişken tanımlada kullanılır. Const'an ayrılan özellikleri; tanımlama anında değer verilebileceği gibi sonradan da değer verilebilir, çalışma esnasında değer verilebilir. Ayrıca "class Program" ile "static void Main(string[] args)" kodları arasında kullanılabilir;



yil değişkenimizi program içerisinde kullanmaya kalktığımızda hata verecektir. Bu hatayı önlemek için;

Kod:
readonly int yil = 2013;
olarak tanımladığımız değişkenimizi şu şekilde değiştiriyoruz;

Kod:
public static readonly int yil = 2013;
Burada kullandığımız public ve static ifadeleri erişim belirleyici olarak adlandırılır. Bir metot veya sınıf içerisindeki değişken ya da nesneye erişim biçimini belirlemek amacıyla kullanılır. Main metodu içerisindeki yil değişkenimize serbestçe erişebilmek için bu iki ifadeyi kullandık.

readonly ile tanımlanan değişkenlerimizin çalışma zamanında değer verilebilir özelliği olduğunu söylemiştik. Bunu daha net kavramak için bir önceki örneğimiz üzerinde değişiklikler yapalım;



Burada yil değişkenimizi public static ifadelerinin yardımıyla readonly sabit tanımlamasıyla tanımladık.

yil değişkenimizin değerinide DateTime.Now.Year olarak değiştirdik. DateTime.Now.Year içinde bulunduğumuz yılı gösterir. Kullanıcı yaptığımız programı 10 yıl sonra açsa yil değişkenimizin değeri 2023 olacaktır. Bu da readonly ile tanımlanan değişkenlerin çalışma esnasında değer alabileceklerini gösteriyor. Aynı şeyi const için söyleyemeyiz. Değişken tanımlamamızı;

Kod:
public static readonly int yil = DateTime.Now.Year
olarak değiştirirsek programımız hata verecektir. const ile tanımlanan değişkenlere çalışma esnasında değer ataması yapılamaz. Ancak derleme esnasında değer ataması yapabiliriz.


Not: Arkadaşlar bundan sonraki konumuz Değişkenler. Değişkenler konusu biraz uzundur ve daha iyi kavrayabilmek için daha fazla örnek yapıcaz.

Vaktim oldukça yazmaya çalışıyorum arkadaşlar. Yavaş yavaş ilerlermeyi tercih ediyorum. Örneklerdeki yabancı her kodu tek tek açıklamaya çalıştım, çalışıcam. Büyük bir döküman oluşturmak biraz vaktimizi alıcak.
 
Üst