Posts Tagged ‘switch’

C# Dersleri – 7: Windows Forms Uygulamalari

Uzun süredir devam eden C# derslerimizde geçtiğimiz yazida temel programlama konularını geride bıraktık ve artık siyah beyaz konsol pencerelerinden kurtulup Windows Forms uygulamalarının renkli dünyasına adım atmaya hazırız. Grafiksel kullanıcı arabirimi (GUI) diye tabir edilen arayüzler farklı programlama dillerinin işletim sistemleriyle entegre olarak kullanıcıları metin tabanlı programların sıkıcı ve monoton yapısından kurtarırlar. Özellikle konsol uygulamaları için Visual Studio kullanmayı tercih etmemiş olabilirsiniz ancak Windows Forms tarafında uygulama geliştirmek istiyorsanız bu alışkanlığınızdan hemen vazgeçmenizi öneririm. Windows Forms uygulamaları geliştirmek için yine Visual Studio’nun ücretsiz Express sürümlerini kullanabilirsiniz.

GUI kütüphanelerinin desteklediği farklı öğeleri kullanarak uygulamalarımıza farklı özellikler kazandırmak da oldukça kolaydır. Butonlar, metin kutuları, ikon ve sekmeler gibi kullanıcıların aşina olduğu bu öğeler ile C# uygulamalarımız hem göze hitap edecek hem de daha işlevsel olacaklar. Yazının başında Windows Forms konusuna değineceğimizi belirtsek de burada yapacağımız örnekleri Linux altında Mono kullanarak da yapabilmeniz mümkün. Bildiğiniz gibi platformdan bağımsız olarak çalışan .NET uygulamaları Linux altında Mono Projesi kapsamında çalışıyor ve Mono çok güçlü GUI araçlarına sahip.

C# Dersleri – 6: Fonksiyonlar ve Sinif Yapilari

İlk derslerimizden itibaren hazırladığımız konsol uygulamaları ile C# temel yapılarını inceliyoruz. Bu dersimizde daha önce değinme fırsatı bulamadığımız fonksiyon, sınıf ve obje yapılarını inceleyerek eğitimimizin C# temellerine dair bölümünü tamamlayacağız. Önümüzdeki eğitimler içerisinde Visual Studio altında Windows Forms uygulamaları geliştirerek her ay farklı bir alanda uygulama geliştirme fırsatı yakalayacağız ve siyah komut satırı ekranına veda edeceğiz.

Veri yönetim biçimleri her programlama dilinde farklıdır. Nesne tabanlı programlama dillerinde ise çalışma sırasında bütün veriler nesnelere dönüşür ve referans ya da doğrudan bağlantıyla program akışı içerisinde kullanılırlar. C# altında da bütün veri tipleri ikiye ayrılır: temel tipteki nesneler ve sınıf referansı nesneleri. Temel tipteki nesneler önceki örneklerimizde bolca kullandığımız, byte, sayı, karakter veya metin değeri alan int, char veya string gibi C# içerisindeki dahili tiplerdir. Diğer veri tipleri ise bizim yazdığımız sınıflar (class) kullanılarak üretilen nesnelerdir.. Sınıflar nesne yönelimli programlamanın çekirdeğini oluşturan en küçük yapılar olarak projenizin sürdürülebilirliği, geliştirilebilir ve güvenliğine katkıda bulunur.

Ancak sınıf yapısına geçmeden önce, sınıfları oluşturan diğer bir önemli unsur olan fonksiyonlara değinmeliyiz. Programlama dillerinin en çok kullanılan özelliklerinden biri olan fonksiyonlar, belirli parametreler alarak çalışan ve kendi içinde belirlenen hesaplamayı yaparak cevabı çağrıldığı yere döndürebilen yapılardır. Özellikle uygulamamızın kodlarında birbirini tekrar eden yerler olduğunda veya birçok yerde kullanacağımız bir fonksiyonu defalarca yazmamız gerektiğinde fonksiyonlar yardımımıza koşar. ayrıca fonksiyon kullanmak, bu çok tekrar eden kodlarda herhangi bir değişiklik yapmamız gerekirse tek yerden bu değişikliği bütün uygulama çerçevesinde gerçekleştirmemize olanak verir.

C# Dersleri – 5: Diziler

Derslerimizin ilk konularından biri olan değişkenlerin programlarımızın bazı değerleri hafızasında tutmak istediği zaman kullanıldığını biliyoruz. Farklı tiplerde String, int gibi sayı veya metin değerleriyle oluşturduğumuz değişkenlerin yanı sıra, kendi yarattığımız nesnelerin de değişkenler vasıtasıyla bellekte saklanabildiğine de önceki aylarda şahit olmuştuk. Ancak hazırladığımız uygulamalardaki verileri tek tek işlemek genel olarak uzun zaman alan ve bu verilerin sayısı arttığında kontrol etmesi güç bir görev. Bu yazımda temel programcılık öğelerinden biri olan diziler konusuna değinerek birçok değeri bir değişken içerisinde kullanabilmeye değineceğim.

Programlama dillerinde dizileri kullanmak bizi birçok satırda yazacağımız kod satırlarından ve birçok değişkenin yarattığı karışıklıktan kurtararırken, aynı işlemleri tek satır bir koda dönüştürerek daha basite indirgenmiş anlaşılır bir hale getirir. Örneğin 10 tane değişkenle işlem yapabilen bir uygulamayı yazmak çok zor değildir, ancak binlerce sayı kullanarak hesaplama yapmamız gerektiğinde bütün değerler için yeni bir isim bularak yeni değişkenler yaratmamız tamamen bir vakit kaybıdır. Dizilerin kullanımı bize zamandan kazanç sağlar ve daha sağlıklı kodlar üretmemize olanak tanır. Temelde sıralı olmayan elemanların bir araya gelmesiyle oluşan diziler, belirli bir sayıda veriyi bir değişkene bağlar ve bu değişken üzerinden döngü yapılarıyla bütün verilere çok hızlı bir biçimde arama, sıralama, değiştirme gibi işlemleri uygulamanıza imkân verir. Dizi tipindeki bir değişken içerisinde istediğimiz kadar veri tutmamız mümkündür, ancak burada önemli nokta bütün verilerin tiplerinin aynı olması gerektiğidir.

C# Dersleri – 4: Döngü Yapilari

Programlamanın temellerini oluşturan if/else kontrol yapısını önceki yazımızda incelemiştik. Buraya kadar öğrendiklerimizle artık yazdığımız programın istediğimiz akışı takip edebilmesini ve belirlediğimiz koşullara göre farklı işlemler yapabilmesini sağlayabiliriz. Ancak bu koşullar bazen gerçekten fazla olabilir ve biz aynı kodu birçok kez çalıştırmak zorunda kalabiliriz. Bunun yanında birden fazla yapılacak işlem olduğunda aynı kod bloğunu sürekli tekrar yazmak programcıların çok tercih ettiği bir yöntem değildir. Tekrar edilen kodlar yazdığınız programı ileride modifiye etmenizi zorlaştırırken, karışık bir görüntü oluşturarak kodların okunaklığını azaltır. Örneğin 30 kişilik bir sınıfın notlarını girdiğiniz ve size not ortalamasını çıkaran bir programda, kullanıcıdan her notu almak için kod tekrarı yapmamız oldukça büyük zaman kaybına neden olur.

Üstelik karekök hesaplayan algoritmalarda olduğu gibi bazı durumlarda yapmamız gereken işin ne zaman tamamlanacağını önceden kestirmemiz de imkansızdır. İşte bu tip uzun tekrarlar ya da iştediğimiz şart oluşana kadar aynı işlemin yapılmasını istediğimiz durumlarda döngüleri kullanıyoruz. Önceki yazılarımızda bahsettiğimiz gibi, normalde uygulamamız çalışırken kodlar yukarıdan aşağıya satır satır işlenir ve son satır işlendikten sonra program sonlandırılır. Bizim kullanacağımız döngüler ise süslü parantezler kullanarak oluşturduğumuz kod bloğunun, belirli bir koşul sağlanmışken sürekli kendini başa alarak tekrar işlenmesine imkan tanıyor. C# içerisinde farklı tip döngüler olsa da bunların hepsi barındırdığı koşul sağlandıkça içerisindeki kod bloğunu çalıştırırlar ve koşul yanlış olduğunda sonlanırlar. Şimdi isterseniz bu döngü tiplerinin kullanımını örnekler ile inceleyelim.

C# Dersleri – 3: Program Kontrolleri

C# dilinin yapıtaşlarından sayılan değişkenlere önceki yazımızda değinmiştik. Farklı kullanımlar için çeşitli tipleri bulunan değişkenleri inceledikten sonra, yazdığımız programın akışına yön verecek karar verme mekanizmalarından bahsetmenin zamanı geldi. Program kodları yorumlanmaya başladıktan sonra düz bir akışı takip ederek satır satır işlenirler. Ancak programın gerektirdiği bazı kararlar, girdiler ve mantıksal nedenlerden ötürü bu akışın dallara ayrılarak farklı yönlere gitmesini sağlamak isteyebiliriz. Bu durumda program yürütülürken önceki satırlara geri dönebilir veya ilerideki kod parçalarını çalıştırabilir.

Öncelikle şunu söylemek gerekir ki program akışının yön değiştirmesini sağlayan karar ve kontrol mekanizmaları olmasaydı, bilgisayarların pahalı bir metal yığınından farkı kalmazdı. Programların çeşitli koşullara göre farklı işlemler yapabilmesi, insanların gerçek hayatta farklı koşullar altında farklı davranışlar göstermesi gibidir. Gerçekleştireceği bir eylemde birçok seçenek arasından bulunduğu koşula uygun olanını seçerek tamamlamasına neden olur. Örneğin sabah uyandığınızda nasıl kıyafet seçtiğimizi düşünelim. Dolabımızda birçok çeşit kıyafet olabilir, ancak biz dışarıdaki hava durumuna bakıp karar verir, güneşli ve sıcak bir günde kazak ya da yağmurluk yerine ince bir t-shirt giymeyi tercih ederiz. Bilgisayar programları da amacı doğrultusunda değişik koşulları göz önünde bulundurarak çalışmasını sürdürür.

Karar verme mekanizmalarının çalışması, belli bir koşulun mantık değeri olarak doğru veya yanlış olarak değerlendirilmesiyle ilgili kod bloğunun işlenmesine dayanır. Mantıksal ifadelerin koşul içerisinde değerlendirilmesi, önceki yazımızda bahsettiğimiz mantıksal (boolean) değişkenler kullanılarak yapılır. Hatırlatmak gerekirse, doğru (true) veya yanlış (false) olabilen bu ifade türleri, koşullarını durumunu belirlemek için kullanılır. Bir ifadenin doğru veya yanlış olduğu, programcılar tarafından tanımlanan boolean değişkenler ile belirlenebildiği gibi, mantık öğeleri veya ilişkisel operatörler kullanılarak da belirlenebilir