C#'ta döngüler [FOR - FOREACH]

Merhaba arkadaşlar, konumuz bildiğiniz üzere döngüler, geçen yazıda while ve do while döngülerini incelemiştik.Bu yazıda ise for ve foreach döngülerine bir göz atacağız.

For döngüsü

For döngüsü en çok kullanacağınız döngü diyebilirim.Mantığı diğer döngülerle aynıdır; bir sayaç değişkeni vardır, döngü şartı vardır, ve döngü her döndürüldüğünde sayaç artırılıp şart kontrol edilir.Unutmadan söyleyeyim; Visual Studio'daki güzel özelliklerden bir tanesi de, mesela for yazıp iki kere TAB tuşuna basarsanız otomatik olarak for döngüsünün şablonunu oluşturur.If- Else ve While vb. aynı şekildedir.
Döngünün temel yapısı aşağıdaki gibidir;


Aslında pek zor sayılmaz, ama yinede biraz karmaşık görünmüş olabilir, açıkladıkça anlaşılacaktır.Döngü değişkeni kısmında döngünün sayacı olmak üzere bir değişken tanımlayacağız(örn. int i).Şart kısmında bildiğiniz üzere döngünün hangi durumlarda çalıştırılacağını belirteceğiz.Sayacın artırılma kısmıda, sayaç değişkenimizi yapacağımız işleme göre artırmaktır ki genelde birer birer artırılır(i++).Kodlar bölümünde döngünün her dönüşünde icra etmesini istediğimiz kodları yazarız.Yani basit bir örnek vermek gerekirse;


Yukarıdaki program anladığınız üzere i değişkenini 100 defa ekrana yazacaktır.Fakat her defasında 1 artırıldığı için 1,2,3 diye artarak yazılacaktır.En son i değişkeni 101 olduğunda yani "i <= 100" şartı sağlanmadığında döngü duracak ve program sonlanacaktır.Daha doğrusu sonlanmak için bizim bir tuşa basmamızı bekleyecektir.Buradaki adreste for döngüsünün işleyişi hakkında bir flash animasyon bulunuyor.Eğer görüntülemede problem yaşıyorsanız Adobe Flash Player'ı yüklemelisiniz.
Daha öncede söylediğim gibi "break" komutu döngüden çıkmamıza yarar.İsterseniz bununla ilgili bir örnek kod hazırlayalım;


Yukarıdaki kodda ise program aslında bir önceki kodla hemen hemen aynı, burada sadece döngümüzün içindeki kodlara bir yenisini ekledik; if kontrolü "i" değişkeninin 70'e eşit olup olmadığını kontrol ederek eşitlendiğinde break komutu ile döngüden çıkmasını sağlayacaktır.Bu nedenlede program ekrana 100'e kadar değil 70'e kadar yazdıracaktır.
MSDN'deki for döngüsü(for loop) örneği ise şu şekilde;


Yeri gelmişken şunuda belirteyim; kodların karmaşıklaşmasını önlemek için içlerine açıklama satırları koyabiliriz.Açıklama satırları derleyici(compiler) tarafından işlenilmeyen, sadece sizin gördüğünüz satırlardır programa hiçbir etkisi yoktur.Eğer açıklama satırınız tek satır olacaksa başına "//"(iki tane slash '/') koymanız yeterlidir.Örneğin; " a = 5; // a değerine 5 ver ".Fakat açıklama satırınız birden fazla ise başına; "/*" ve sonuna "*/" koymalısınız.Örneğin; "/* umut coşkun */"(tırnaklar olmadan).
İsterseniz şimdi while döngüsü ile yaptığımız faktoriyel programını şimdide for döngüsü kullanarak yapalım;


Hazır açıklama satırlarından bahsetmişken kodları da bu şekilde yapayım dedim.While döngüsü ile aynı mantık sadece değişkenlerin yerleri değişik.
Sanırım for döngüsü için bu kadar açıklama yeter.Şimdide foreach döngüsüne bir göz atalım.

Foreach döngüsü

Foreach döngüsü genellikle bir dizinin tüm elemanlarına erişmek için kullanılır.
Temel yapı aşağıdaki gibidir;


Bu şekilde biraz boşta kalabilir, mesela bir dizinin içindeki tüm elemanları toplayan bir döngü yazalım;


Buradaki örnekte, sayilar dizisindeki tüm elemanları toplyarak "+=" ifadesi ile teker teker toplam değişkenine attık, en son olarak da toplam değişkenini ekrana yazdırdık.
Dizi Nedir? [Eklenecek]
Foreach döngüsü sadece dizilerle kullanılacak diye bir kural yoktur, mesela bir string değişkenin içindeki harfleri teker teker alabiliriz.Mesela istediğiniz bir stringi yukarıdan aşağıya yazdıralım;


Sanırım yeterince anlaşılır oldu.Genel olarak foreach döngüsü bir yapının tüm elemanlarına ulaşmaya yarar.İşte buda MSDN'in foreach için verdiği örnek kod;


İşte Foreach hakkında bir iki örnek kod;






For ve Foreach döngüleri için yazacaklarım bu kadar.Bir sonraki yazıda görüşmek üzere, İyi Günler.
Umut Coşkun

C#'ta döngüler [WHILE - DO WHILE]

Arkadaşlar kod yazarken sık sık bir işlemi tekrarlatma ihtiyacı duyabilirsiniz.Mesela en basitinden kullanıcıdan giriş yapmasını isteyip parolayı yanlış girdikçe tekrarlanan bir yapı oluşturacaksınız, aynı kodu tekrar tekrar yazmanı çok saçma olacaktır, bunun yerine hemen bir döngü ile işi kısadan bitirebiliriz.Bu yazıda C#'taki döngülerden While döngüsünü inceleyeceğiz.

While döngüsü

Arkadaşlar pogramımızın sonsuz döngüye girmemesi için her zaman döngüye durmasını sağlayacak birşeyler koymalıyız, yani diğer bir deyişle sayaç değişkenleri.While döngüsünün temel kullanımı aşağıdaki gibidir;


While döngüsünün temel mantığı; ilk olarak parantez içindeki şartınızı kontrol eder, eğer şart doğru ise yani true değer döndürüyorsa küme parantezleri ("{ ve }") arasındaki kod bloğunu işleyip tekrar başa döner, tekrar şartı kontrol eder doğru ise yine kodu işler tekrar başa döner ve bu şekilde devam eder, taki parantezler arası şart yanlış olana kadar.Eğer parantezler arasına hiç yanlış olmayacak yani değeri sürekli olarak true döndürecek bir şart yazılırsa program sonsuz döngü(infinite loop)'ye girer ve programın kapanması gerekir.
İsterseniz daha iyi anlaşılması için bir program yapalım.Mesela 0'dan başlayarak 100'e kadar ekrana yazdıran bir program yapabiliriz;


Gördüğünüz gibi çok basit bir işlemde bile bir while döngüsü bizi 200 satır yazı yazmaktan kurtardı.Fazla anlatmaya gerek yok sanırım yeterince basit bir yapısı var; "şart sağlandığı sürece tekrarla".
Daha iyi anlaşılması için işe yarar birşey yapabiliriz, mesela girilen sayının faktoriyelini bulan program yapalım;


Switch-Case'i anlatırsanız hatırlarsanız break komutunun döngüden çıkmak için kullanıldığını söylemiştim.Şimdi biraz önce 100'e kadar sayıp ekrana yazan programda break kullanarak 50'de döngüden çıkmasını sağlayalım;


Sanırım while için bu kadar yeter şimdide do while'a bi göz atalım;

Do - While döngüsü

Do while döngüsü while ile aynı mantık ile çalışır, tek mantığı while döngüsünde ilk olarak şart kontrol edilir doğru ise işlemler yapılır, Do-While döngüsünde ise ilk işlemler yapılır, sonra şart kontrol edilir eğer şart doğru ise işlemler bir daha yapılır ve bu şekilde sürüp gider.Yapısı temel olarak şu şekildedir;


Buradada görebileceğiniz gibi diğer döngülerden farklı olarak do while döngüsünde şartınız doğru olsada olmasada kodlarınız her halükarda en az bir kere icra edilir.Eğer şartınız doğru ise yanlış olana kadar döndürülür.Şimdi isterseniz do while ile ilgili bir örnek yapalım, bir parola belirleyelim ve kullanıcı parolayı doğru girene kadar tekrar parola isteyelim.


Şimdide yazdığımız kodu açıklayalım, ilk olarak "pass" ve "parola" adında string türünde iki tane değişken oluşturduk.Pass değişkenine "umut" değerini verdik bu bizim parolamız olacak.Parola değişkenine ise kullanıcının girdiği yazıyı atıp karşılaştırma için kullanacağız.Program do bölümündeki kodları icra edecek yani ekrana "Parolayı girin:" yazdırıp girilen veriyi parola değişkenine atacak, while bölümünde ikisinin birbirine eşit olup olmadığını kontol edecek.Eğer iki değişken birbirine eşit ise döngü duracak.Eğer eşit değilse, eşit olana kadar döngü devam edecek.While ve Do While döngüsü bu kadar, İyi Günler.
Umut Coşkun

C#'ta karar yapıları [SWITCH - CASE]

Arkadaşlar geçen yazıda if else'i görmüştük.Bu yazıda yine kontrol yapılarından olan Switch - Case'i anlatacağım.İşleyişi nasıldır? Bu da bir tür if - else'dir diyebiliriz, aynı zamanda switch case ile yaptığınız tüm işlemlerinizi if kontrolü ile de yapabilirsiniz.Sadece zaman kazanmak açısından daha avantajlıdır.Switch case'e bir değişken belirlenir ve şartlarına değişken değerleri yazılır.Programda sıra switch case'inizin bulunduğu satıra gelindiğinde; belirlediğiniz değişkenin değeri hangi seçeneğe uyarsa o işlenir, eğer hiçbiri uymazsa default özelliği işlenir, yani bir nevi "else" diyebiliriz.

Switch - Case Yapısı

If - else konusunda yaptığım gibi bundada ilk olarak yapının daha iyi anlaşılması için türkçeleştirip yazacağım.Temel yapı aşağıdaki gibidir;


Sanırsam bu şekilde tam olarak anlaşılamadı.Daha iyi anlaşılabilmesi için kullanıcı notunu girdiğinde (örn. 3) yazı ile gösterelim;


Arkadaşlar programda ilk olarak gördüğünüz gibi kullanıcıdan notunu alıyoruz.Daha sonra "switch(not)" kodu ile switch-case'imizin değişkenini not yapıyoruz.Kodumuzda 1'den 5'e kadar case'ler var.Case'lerin kodunu yazdıktan sonra bitirmek için "break" kodu kullanılır.Aynı zamanda break, döngülerden çıkmak için kullanılır.Neyde konuyu dağıtmadan devam edelim.Nasıl işler? mesela "case 1:" yazmışız eğer not değişkeninin değeri 1 ise burayı işleyecektir.Bunu istediğiniz gibi değiştirebilirsiniz.Mesela string bir değişken içinde yapılabilir.Default ise; eğer değişkenin değeri hiçbir şarta uymuyorsa işlenecek olan kodlardır.Burada da gördüğünüz gibi zaten 1'den 5'e kadar notlar için case oluşturmuşuz, mesela kullanıcı 6 girerse default bölümünü işleyecektir.
MSDN'in sitesinde örnek bir kod buldum birde bunu inceleyebilirsiniz, kahve makinesi için yapılmış bir program, kahvenin boyunu seçtiğinizde kaç para ödemeniz gerektiğini söylüyor;


Bu kod normalde ingilizcedir türkçeye çevirisini ben yaptım eğer hata varsa bildirebilirsiniz.Orjinal kod
Switch-Case yapısı oldukça basit bir yapıdır o yüzden fazla laf kalabalığı yapmak istemiyorum sanırım yeterince açık oldu, yinede merak ettiğiniz bir yer varsa yorum bölümünden sorabilirsiniz.İyi Günler
Umut Coşkun

C#'ta karar yapıları [IF-ELSE]

Geçen yazıda değişkenler'i öğrenmiştik.Bu yazıda da karar yapılarından olan If - Else'den bahsedeğiz.Karar yapıları nedir? Gerektiği yerde programın akışını istediğiniz gibi değiştirmenize yarayan yapılardır.Adı üstünde karar yapısı, "X" durumunda ne yapılacağına karar verilir.

If - Else Yapısı

If - Else yapısı programlama hayatınızda en çok kullanacağınız yapılardan biridir.Mantığı ve yazımı ise en basit haliyle aşağıdaki gibidir;


Hemen örnek bir kod yazarak daha iyi anlaşılmasını sağlayabiliriz.Buda yaptıkça alışılacak cinsten bir koddur :)


Yukarı kod sınavdan aldığınız notu girdiğinizde geçip/kaldığınızı hesaplayan bir programdır.Kodda 3 kod hariç diğerlerini önceki yazılarda açıkladık zaten, tekrar yazmaya gerek yok geri dönüp bakabilirsiniz.
KOD 1: Console.ReadLine();
Bildiğiniz gibi bir programın program olabilmesi için mutlaka karşı taraftan veri alması gerekmektedir.Biz şuanda bu veri alışını bu kodla yapıyoruz.Daha önce bu kodun klavyeden girdi almaya yaradığını söylemiştim."Console" sınıfının altında "ReadLine" nesnesi, adı da zaten satır okumak anlamına gelir.Kullanırken hiçbir veri gönderilmez, yani kodu yazdığınızda yanındaki parantezlerin içine birşey yazmazsınız, ama tabiki bunları koymak zorundasınız.
KOD 2: Convert.ToInt32();
Önceki yazıda da dediğim gibi, C#'ta alınan bir veri her zaman string olarak alınır, yani kullanıcı klavyeden 5 girse bile C# bunu string yani 'metin' olarak alır ve bunun sayısal hiçbir değeri yoktur, dolayısıyla matematiksel işlemler yapılamaz.
Kullanımı "Convert.ToInt32();" şeklindedir ve çevrilmek istenen veri parantezler arasına yazılarak gönderilir.Biz burada "Convert.ToInt32(Console.ReadLine());" şeklinde kullandık yani ilk önce Convert.ToInt32(); bölümünde parantez içindeki işlemi yapacak, bu da klavyeden okuma işlemimiz.Klavyeden okuduktan sonra, aldığımız string tipindeki veriyi int tipine çevirerek "not" değişkenine verecek.Peki bizim bu veriyi int tipine dönüştürmek istediğimizi nereden biliyor? Convert.ToInt32(); kısmında "ToInt32" Int tipi veri demek, diğer türleri ise; ToInt16, ToInt64, ToByte, ToChar, ToString'tir. Int16 ve Int64'ün isminde int geçtiğine bakmayın.Int16 = Byte tipi, Int64 = Long tipidir. Buradaki Int; int tipi değişken değil integer(tamsayı)'ın kısaltılmışıdır.
Peki veriyi istediğimiz türe çevirebiliyorsak diğer tiplere ne gerek var demiş olabilirsiniz.Aslında tam olarak böyle değil mesela "umut" kelimesinin sayısal bir değeri yoktur ne yaparsanız yapın int'e çeviremezsiniz.Ama şu yapılabilir; eğer char bir değişkeni byte int yada long tipine dönüştürürseniz char tipi verinin ASCII KOD karşılığını bulursunuz.
KOD 3: IF - ELSE
Gelelim şimdi asıl konumuza, yazının ilk başında gösterdiğim mantıkla yazılmış olduğunu göreceksiniz."Eğer not değişkeni 45'e eşit yada büyük ise ekrana 'Geçtiniz !' yaz değilse 'Kaldınız :(' yaz".Kullanımı ve anlaşılması oldukça basittir.
(not >= 45) kısmındaki ">=" operatör, "not" ve "45" operand'lardır.Mantıksal karşılaştırmalarınızı yapabileceğiniz bazı operatörler ise şunlardır;
== : Eşit
> : Büyük
< : Küçük
>= : Büyük ya da eşit
<= : Küçük ya da eşit
! : Anlamı terse çevirir (!= : Eşit Değil, !>: büyük değil vb.)

IF - IF - ELSE

Arkadaşlar yaptığınız bir kontrolde sadece bir tane if ve bir tanede else koymak zorunda değilsiniz.İstediğiniz kadar if koyabilirsiniz.Bu şekilde çokça kontrol koyduğunuzda dikkat etmeniz nokta şudur; ilk "if"deki şart kontrol edildikten sonra diğer ifleri de kontrol eder.Eğer hepsi şarta uyuyorsa hepsini yazar.Mesela aşağıdaki kod buna bir örnek olabilir;


Şimdi kodumuzu açıklayalım, gördüğünüz gibi %90 oranında bir önceki kodla aynı.Sadece kontrolümüzün içine bir "if" daha ekledik.Bu şartımızla kullanıcının girdiği notun 85'den fazla olup olmadığınız kontrol edeceğiz.Eğer not 85'den yüksekse kullanıcıya çok iyi bir puanla geçtiğiniz söyleyeceğiz.Mesela kullanıcı 55 girdi.Ekranda sadece geçtiniz yazacak çünkü 55 notu 85'den büyük değil, ama eğer kullanıcı 90 girerse bakılacak; not 45'den büyük mü? evet, o halde Geçtiniz yazdırılacak.Sıra diğer kontrole geldiğinde bakılacak; not 85'den büyük mü? evet, o halde çok iyi bir notla geçtiniz yazdırılacak.Böyle bit not girişinde If'lerden herhangi birisi işlendiği için else bölümünü hiç görmeden atlayacaktır.
Eğer yazdığınız kodda şartınızla ilk uyuşma sağlandığında diğerlerini kontrol etmemesini istiyorsanız "Else-If" kullanabilirsiniz.

IF - ELSE IF - ELSE

Kontrolünüzde "Else If" kullandıysanız, ilk olarak if'i kontrol eder, eğer şart doğru ise işlemlerini yapar ve diğer kontrolleri atlar.If kontrolü doğru değilse "Else - If"leri tek tek kontrol eder taki doğru sonuç bulana kadar.Hiç biri doğru değilse else bölümündeki kodu işleyecektir.Tabi varsa, isterseniz bu bölümü koymayabilirsiniz.Buradaki "doğru ise"den kastım; mesela "if(a == b)" kodunda şart bölümündeki ifade eğer doğru ise true değer döndürür yanlış ise false değeri döndürür.Başka bir deyişle, if kontrolünün değeri true ise.
Şimdi isterseniz konunun daha iyi anlaşılabilmesi için bir örnek yapalım ve sınav puanını giren kullanıcının notunun kaç olduğunu bulalım;


Şimdide kodları açıklayalım; diğer bütün kodları bildiğiniz için şuanda sadece if kontrolünü açıklayacağım.
"Kullanıcı notunu 100 girerse buradaki şartların hepsi doğru olur hepsini ekrana yazdırır" diye düşünmüş olabilirsiniz.Hatırlarsanız Else-If kullandığımızda bir kontrol doğru çıktığında diğer kontrolleri hiç görmeden direk atlar demiştim.Burada da işleyiş tam olarak böyle, ama tabiki eğer buradaki kontrollerimizi "else - if" ile değilde sadece if ile yapsaydık kullanıcı 100 girdiğinde hepsini tek tek yazdıracaktı.
Mesela kullanıcımız yaptığımız programa 65 girsin;
Puan(65) 24'den küçük mü? hayır. | Puan 45'ten küçük mü? hayır. | Puan 55'ten küçük mü? hayır. | Puan 70'den küçük mü? evet. O halde notumuz 3 hemen ekrana yazdıralım.
Siz başka notlar deneyerek daha iyi anlayabilirsiniz.Rakamlar kafanızı karıştırmasın, mesela "Kontrole 85 yazmışız ama notu 4 yazdırıyoruz" gibi.Konrolde kullandığımız operatör "<=" (küçük eşit) olsaydı dediğiniz doğru olurdu ama sadece "<" (küçük) kullandığımız için bir birim küçüğünü kontrol eder.Daha fazla kafa karıştırmasam daha iyi olacak sanırım :) İyi Günler.
Umut Coşkun

C# dilinde değişkenler

Arkadaşlar geçen yazıda C#'a kısaca giriş yaparak temel yapısını incelemiştik.Bu yazıda değişken nedir, türleri ve kullanım alanlarını inceleyeceğiz.

Değişken nedir?

Değişken, üzerinde çeşitli değerler tutabileceğimiz, bellekte yerleri belli olan birer yapıdır diyebiliriz.En azından ben böyle anlatabildim :).Değişken'lerin değerleri ister program yazımı sırasında ister programın çalışma anında(Runtime) değiştirilebilir.Değişkenlerin değerleri istenildiği anda değiştirilebilir.Zaten adı üstünde değişken.Bazı dillerin aksine C#'ta bir değişkende sadece bir tür veri saklayabilirsiniz.C#'ta tür güvenliği had safhadadır.Peki nedir bu veri türleri?

Değişken türleri

Arkadaşlar şimdi bütün türleri buraya yazmayacağım kafa karıştırmasın, en temel ve en çok kullanılanları yazacağım.Birde veri tipi rakam olanların belli sınırları vardır, onlarıda aklımda olanları yazarım.
BYTE : 255'e kadar tam sayı alır. INT : Buda tam sayı alır zaten integer'ın kısaltılmışıdır. LONG: 40 basamaklı tam sayıları alır.Zaten pek gerekli olmaz.FLOAT / DOUBLE: Float yada Double, ondalıklı sayılar içindir.CHAR : Tek karakterlik veri tutan değişkendir.STRING: Buda metinler içindir.Diğer türlerin aksıne string'te hiçbir sınır yoktur.Birkaç tane daha var ama zaten sembolik gibi birşey pek kullanılmaz.O yüzden şimdilik bunlar yeter.

Değişken tanımlama

Programda değişken kullanmak için ilk önce o değişkenlerin var olduğunu belirtmelisiniz.Bu işlemede "Değişken tanımlama" denir.Peki nasıl tanımlanır?
veritipi değişkenadı = varsa değer(yoksa eşittir de koymayın); Şeklindedir, eğer bir örnek vermek gerekirse; "int umut;" şuanda int(tam sayı) tipinde umut adın bir değişken oluşturduk, değeri şuanda "NULL" yani boş, bu yanlış anlaşılmasın 0 değiş boş.Eğer int umut = 5; şeklinde yaparsak değeri 5 yapmış oluruz.Tabi bu şekilde değer atama sadece değişken ilk tanımladığında geçerlidir.Daha sonra program çalışırken değeri değiştirmek için "umut = 10;" değiklinde yaparız.Yani başa değişken türünü yazmayız.

Kesme, biçme, ekleme, çıkarma işlemleri

Yazdığınız programın işe yaraması için illa ki değişkenleri program içinde değiştireceksiniz.Aşağıda yapılabilecek bazı işlemleri verdim.
+: toplama, -: çıkarma, *: çarpma, /: bölme, +=: ekleme, ++:bir artırma, --: bir eksiltme.C#'ta değer atamaları "umut = 10;" şeklinde yapılır "=" ifadesi; eşitliğin sağ tarafındaki değerin sol taraf'a aktarılacağını belirtir.Örneğin; "umut = 10" umut değişkeninin değerini 10 yapar, "umut = umut + 10" umut değişkenine 10 ekleyerek, yeni değeri umut değişkenine verir, ya da kısaca umut değişkenini 10 artırır.Aynı işlemi "umut += 10" şeklindede yapabiliriz.İstediğiniz gibi yapın seçim sizin."umut++" umut değişkeni bir artırıldı."umut--" bir eksiltildi."umut = 5 * umut" umut değişkenine kendisinin 5 katı verildi."umut = umut/2" değişkene kendisinin yarı değeri verildi.Örnekler bu şekilde çoğaltılabilir.Diğer kaynakları inceleyerek ve kod yazarak zamanla daha aşina olunabilir.
İsterseniz şimdi belirlediğiniz iki sayıyı toplayıp ekrana yazdıran bir uygulama yazalım.Kodları bir inceleyip çalıştırın.Aşağıda açıkladım kodları.



Gördüğünüz gibi, int tipinde "a,b,c" diye 3 tane değişkenimiz var."a" değişkeninin değeri daha değişken tanımlanırken 10 olarak belirlenmiş."b" aynı şekilde 15 verilmiş."c" değişkenine ise "a + b" denilmiş.Yani a ve b değişkenlerini toplayıp sonucu c ye verilmesi söylenmiş.Sonucu yazdırırken bir önceki yazıda Console.WriteLine(); şeklinde kullanmıştık, burda ise Console.Write(); ne farkı var derseniz.WriteLine ile yaptığınızda program yazacağını yazar ve enter tuşuna basar, yani alt satıra iner.Write'da ise imleç hala aynı satırın sonunda olur.İsterseniz örnektekini WriteLine ve Write olarak ayrı ayrı değiştirip deneyin.Sonucu göreceksiniz.Parantezler arasında ("Sonuç: " + c) yazıyor.Dikkat ettiyseniz Sonuç tırnaklar arasında, ama c değil, ve arada + var.Hatırlarsanız ilk yazıda size tırnak koymamın sebebinin derleyicinin ona özel bir anlam yüklemesini önlemek için olduğunu söylemiştim.Tırnaklar içinde bir yazı gördüğünde onu direk ekrana yazar.Ama c de tırnak yok.Bu yüzden derleyici tırnak görmediği için buna bir anlam vermeye çalışıyor ve tabiki ekrana c yazmak yerine c değişkeninin değerini yazıyor.Yani şuanda 25, siz dilediğiniz gibi değiştirebilirsiniz.Gördüğünüz gibi bir de arada + işareti var."+" işareti int tipi değişkenlerde toplama yaparken stringlerde birleştirme işlevi görür.Ama c string değilki int diyor olabilirsiniz.Ekrana basarken stringe çevrildiği için böyle yapıyoruz.Eğer çevrilmeseydi yarı string yarı int değişik birşey olurdu :) Mesela kullanıcıdan değer istediğimiz programlarda yazacağız ordada adamdan sayı alırken aldığımız sayıyı int'e çevireceğiz çünkü adamın girdiği değer sayı olmasına rağmen string'dir.Yani kafanızda sayılar int, harfler string diye bir düşünce oluşmasın.
"Console.ReadKey();" satırı da bildiğiniz gibi ekranı bizim görebilmemiz için bekletmeye yarar.Sanırım bu konu için bu kadar açıklama yeter.Dediğim gibi, daha çok örnekler yaparak ve kendinizi biraz zorlayarak daha iyi sonuçlar elde edebilirsiniz, teorik bilgi de bir yere kadar işe yarıyor :) İyi Günler.
Umut Coşkun

C# programlama diline giriş

Arkadaşlar bu yazıda C#'a giriş yaparak kısaca değişkenlere değineceğiz.
Programlarımızı geliştirirken görsel açıdan iki seçeneğimiz vardır.Bunlardan birisi Konsol uygulamasıdır. Bu; Başlat > Çalıştır > CMD yaptığınızda karşınıza çıkan siyah ekrandır.Önceleri, yani windows işletim sistemi daha yokken DOS vardı.Yani bu siyah ekran, tüm bilgisayarlar böyleydi.İkinci seçeneğimiz ise Windows Formlarıdır.Buda mesela bir MSN Messenger programını açdığınızda gördüğünüz butonlar, yazı kutuları, menüler vb. görsel nesneleri kullanacağımız seçenektir.
Ama biz programlama işine yeni girdiğimiz için Konsol uygulaması yazarak başlayacağız.İsterseniz direkt windows formlarındanda başlayabilirsiniz ama bu pek sağlıklı olmaz.Biz yazılımlarımızı geliştirirken Microsoftun Visual Studio 2008 programını kullanacağız.Eğer şuanda bilgisayarınızda yoksa Microsoft'un download sayfasından indirebilirsiniz.Hazırsanız başlayalım;

Proje Oluşturma

Eğer sizde Visual Studio 2008 programı varsa ilk açtığınızda bir karşılama penceresi gelecek ve sizden bir tema seçmenizi isteyecektir.Tahmin edeceğiniz gibi bu bölümde Visual C# seçeneğini seçiyoruz ve tamam diyoruz.Eğer sadece Visual C# Express programı varsa zaten size böyle bir pencere gelmeyecek otomatik olarak C# teması açılacaktır.
Programı açtıktan sonra karşınıza Start Page adında bir pencere gelmiştir.Recent Projects bölümü son çalıştığınız projelerini göstermektedir.İlk defa açtıysanız boş olması normaldir.MSDN: Visual C# HeadLines bölümü MSDN yani "Microsoft Developer Network" yani "Microsoftun yazılım geliştiricileri birliği"nden başlıklardır.Konuları değişkendir.Ama genellikle güncellemeler ile ilgili olur.Okumanıza hiç gerek yoktur.Getting Started bölümünde yardımcı linkleri bulabilirsiniz.Eğer ingilizce biliyorsanız işinize yarayabilir.Ayrıca msdn.microsoft.com da size yardımcı olabilir.
Sıra geldi projemizi oluşturmaya; Menüden File > New > Project yolunu izleyerek yeni bir proje oluşturabilirsiniz.
Açılan pencerede Visual C# sekmesinden Windows seçeneğini seçin ve Templates bölümünden Console Application seçeneğini seçin.Name kısmı projenin adı,Location kısmı proje dosyalarınızın nereye kaydedileceğidir.Solution Name kısmı Solution'un adıdır.Solution Nedir? Solution, birden fazla projenizi aynı yerde tutmanızı sağlar.Biraz saçma bi açıklama oldu ama başka türlü tarif edemedim :) Herşey tamam ise "OK" butonuna basarak projemizi oluşturalım.
Karşınıza gelen kodlar ya aşağıdaki gibi yada çok benzeri olmalıdır;



Buradaki using ile başlayan satırlar birer namespace'dir.Kullanım nedeninden kısaca bahsedersek eğer; .Net FrameWork içinden kullanacağımız nesneleri,sınıfları vs. çağırmaya yarar.Mesela siz projenizde giriş çıkış işlemlerini kullanmak istiyorsanız (Mesela text dosyası yazma) System.IO namespace'ini projenize eklemelisiniz (using System.IO; şeklinde).Niye tektek çağırıyoruzki otomatik olarak hepsi projeye eklensin istediğimiz gibi dertsiz tasasız kullanalım demiş olabilirsiniz.Olabilirdi ama onunda şöyle bir devantajı olurdu, mesela en basitinden ekrana adınızı yazan bir program bile yazsanız kafadan 50 mb yer kaplardı.
C# dilinde tüm satırların sonunda "; (noktalı virgül)" olur.Satırın bittiği burdan anlaşılır.Siz bir program kodda yazsanız eğer sonuna ";" koymadıysanız program onu tek satır olarak görecektir.Bu tüm dillerde böyle değildir.Mesela Basic dilinde buna gerek yoktur.
Koddaki "{ ve } (küme parantezleri)" bir kodun etki alanını gösterir.Mesela ileride mantıksal operatörleri göreceğiz."Eğer böylese şunu yap" tarzında açıklamak gerekirse "{" ve "}" arasına yazdığımız kodlar "şunu yap" kısmındaki kodlar olacaktır.Tabi örneklerle açıkladığımızda daah iyi anlaşılacaktır.
"namespace consoleApp" ifadesi programımızda bir namespace olduğunu ve bunun adının "consoleApp" olduğunu belirtmiş.Hatırlarsanız bizde üstte programımıza namespace'ler eklemiştik.Tamam biz .Net framework'ün sınıflarını vs. çağırmak için koyuyoruz.Peki neden programımızda namespace oluşturduk ki? Mesela iki sayıyı toplayan bir program yazdınız, ve başka bir programda 2 sayıyı toplamanız gerekti.Aynı kodları tekrar yazmak yerine hemen üst bölümde eklediğiniz namespace'lerin arasına "using consoleApp" şeklinde ekleyip kullanabilirsiniz.
Hemen alt satırdaki "class Program" ifadesinde ise; "Program" adında bir class yani sınıf oluşturmuş.Bunun sebebi hiyerarşik bir düzen olması içindir.Bakım mesela yukarıda namespace'lerimizin arasında "using System.Collections.Generic" diye bir satır var.Burda "System"in içindeki "Collections"un içindeki "Generic"i çağırmış.Bir üst satırda söylediğim gibi, zaman zaman yazdığınız bir programdan daha önce yazdığınız bir programı çağırmanız gerekebilir.Mesela tüm programı değilde, sadece "Program" adlı sınıfı çağıracaksınız.O zaman; "using consoleApp.Program;" dersiniz olur biter.Anlaşılmamış olabilir ama şuanda bizim konumuz class değil onun için fazla irdelememek lazım :)
"static void Main(string[] args)" ifadesi ise programınız ana bölümüdür.Başındaki static ifadeside hafızada statik olduğunu gösterir.Konsol Uygulaması (Console Application) yazarken burdan başka bir yere kod yazmayacağız.

İlk Kodumuzu Yazalım

Hemen kodlarımızı yazmaya başlayalım.Kodlarımızı aşağıdaki "static void Main(string[] args)" bölümündeki "{" ve "}" arasına yazacağız.



İlk olarak ekrana yazı yazdırmayı görelim.Bunun için "Console.WriteLine();" kodunu kullanacağız.Dikkat ederseniz Console'dan sonra "." nokta var.Yani daha öncede söylediğimiz gibi Console sınıfının içindeki WriteLine prosedür'ünü kullacağız.
Kullanımı "Console.WriteLine("Burada Yazı");" şeklindedir.Ekrana yazdırmak istediğiniz yazıyı parantezler arasına tırnaklar arasında yazın.Tırnaklar içinde yazmamızın sebebi derleyici (Visual Studio)'nin buna özel bir anlam yüklememesi içindir.
Fazla uzatmadan hemen kodumuzu yazalım.Console.WriteLine("Burada Yazı"); "Burada Yazı" kısmına istediğiniz bir yazı yazın.Kodlarımız son olarak aşağıdaki gibi oldu;


Kodlarımızı yazdık.Şimdi çalıştırmak için Menüdeki Debug > Start Debugging diyebilir yada kısaca F5 tuşuna basabilirsiniz.Aynı işlevi görecektir.
Yaptığımız bu işleme "Debug" - "De - Bug", bug kelimesi böcek demektir.Hatalı kod satırlarına bilişinm camiasında bug denir.Debug'da böcek ayıklama, yani hatalı satırları bulma işlemine denir.
Debug yaptığınızda (F5), siyah pencere gelip hemen gitmiştir.Bunun sebebi programın işleyiş şeklidir.Bir program işini yapar(tüm kodları çalıştırır) ve kapanır.Normali de budur zaten, ama biz istiyoruzki ekrana yazdırdığımız yazıyı görebilmemiz için program bir süre ekranda kalsın.
Bunun için kodumuzun altına "Console.ReadKey();" komutunu ekleyelim.Normalde bu kod kullanıcıdan bir girdi almaya yarar, bu kodu yazdığınızda bir tuşa basılana kadar bekler.Bizde bu şekilde programı bekletip yazdırdığımız yazıyı göreceğiz.En son olarak kodlar aşağıdaki gibi olacaktır;



Bu kodlarımızı çalıştırdığınızda alacağınız çıktı aşağıdaki gibi olacaktır;

Buraya Yazı

Arkadaşlar ilk yazı bu kadar, bir sonraki yazıda değişkenlere giriş yapacağız.
Umut Coşkun