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.

Continue reading →

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.

Continue reading →

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.

Continue reading →

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. Continue reading →

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. Continue reading →

C# Dersleri – 2: Programciliga Giris

Önceki yazımda C# dilinin temelinde yer alan .NET çatısının yapısını incelemiş, 2000’li yıllardan sonraki tarihi süreci sizlere aktarmıştım. Söz dizimi C/C++ dillerine benzeyen C# özellikle bu dillerden birini veya JAVA kullanmış deneyimli programcılar için alışması çok kolay bir dil. Bu sebeple daha önceden farklı dillerde program yazmış okurlarımız söz dizimine alıştıktan sonra .NET çatısının bizlere sunduğu kütüphaneleri kullanarak farklı uygulamalar geliştirmeye kolayca başlayabilirler. Ancak biz yazı dizimizde programlama dünyasına yeni adım atacak okurlarımızı da düşünerek sayfalarımızda programlama dilinin detaylarına da değinmeye çalışacağız.

Continue reading →

C# Dersleri – 1: .Net Framework

Bill Gates, yaklaşık 20 yıl önce vizyonunu açıkladığında sektörün içinden ve dışından birçok insanın tepkisiyle karşılaşmıştı. Her eve bir bilgisayar gireceği ve kişisel bilgisayarların insan hayatında çok önemli bir yere sahip olacağını söyleyen bu genç girişimcinin sözleri, laptop bilgisayarların yaklaşık 1.5 ton civarı olduğu o yıllarda (!) fazla gerçekçi durmuyordu. Ancak geçen zaman, özellikle 90’lı yıllarda kişisel bilgisayarların atağa geçmesi, bu vizyonun ne kadar gerçekçi olduğunu ortaya koydu. Microsoft’un Windows işletim sistemleriyle katkıda bulunduğu bu vizyon, 2000’li yıllara gelindiğinde artık her evde birden fazla bilgisayar görülmeye başlanınca miyadını doldurmuş oldu. Kişisel bilgisayarların yayılması internetin kullanımını da arttırırken bilgi çağının başlangıcına da öncülük ettiler. Yeni milenyuma girdiğimizde artık internet hayatımızın bir parçası haline geldi ve bu gelişmeler esnasında, 2002 yılında gerçekleştirilen Microsoft’un lansmanında artık başarısını kanıtlayarak genç girişimci yıllarını geride bırakmış Gates kendisinin ve firmasının yeni vizyonunu açıkladı: Her zaman, her yerden, her cihazdan bilgiye ulaşmak! Kişisel bilgisayarların yayılmasında Windows işletim sistemleri büyük pay sahibi olarak karşımıza çıkarken, lansmanda bu yeni vizyonu gerçekleştirmek için daha dinamik bir altyapı bizleri karşılıyordu: “.NET”.

Bu yeni vizyon, beraberinde yepyeni bir programlama dilini birlikte getirdi. Okunuşunun kolay olmadığını kabul ediyorum, ancak C# (C Sharp: §İ – ∫a¦rp)  adını duyurduktan kısa bir süre sonra dünyada en çok kullanılan diller arasına girmeyi başardı. En köklü programlama dillerinden C/C++ yada Java gibi “süslü parantez” dilleri ailesinden gelen söz dizimi (syntax), nesne & bileşen tabanlı yapısı ve Visual Studio gibi başarılı bir geliştirme ortamında yazılması kolay öğrenilmesine neden oldu. Ayrıca ASP.NET ile web tabanlı uygulama geliştirmek için de kullanılması kolayca yayılmasını sağladı. Geliştirme ekibinin başında bulunan Anders Hejlsberg, zamanında Turbo Pascal gibi devrim yaratmış bir IDE’nin geliştiricisi ve Borland firmasında programlama dilleri üzerine uzun yıllar çalışmış biri olarak 1999 yılında çalışmalarına başladığı C#’ı birçok dilin avantajlarına sahip kapsamlı bir dil olarak geliştirdi. Günümüzde Java ve PHP ile kullanımı yükselen 3 dil arasında bulunan C# aslında bu dillerin en yenisi. Ülkemizdeki bilgisayar sektöründe de geniş kullanım alanı bulunan bu dili blogdaki yazılardan takip ederek, en başından başlayıp öğrenebilirsiniz! Eğitimimizde temel programcılık mantığını anlatırken bol bol örnek uygulamalar yapıp kendinizi geliştirmenize yardımcı olmayı amaçlıyoruz. Continue reading →

Web Sayfaniza Virtual Earth Haritalari Ekleyin

Eskiden sadece büyük atlaslarda veya belgesellerde görebildiğimiz uydu fotoğrafları, gelişen teknoloji ve internet sayesinde artık her bilgisayardan erişilebilir hale geldi. Yaklaşık üç yıl önce ücretsiz bir şekilde hayata geçen Google Maps, coğrafi bilgi sistemlerini hayatımızın bir parçası haline getirmekle kalmadı, tarayıcımızda bir masaüstü uygulaması gibi çalışarak belkide AJAX teknolojisinin bu kadar yayılmasında en büyük etkenlerden biri oldu. Özellikle büyük şehirlerin yüksek çözünürlüklü fotoğraflarını kullanıcıların hizmetine sunan Google ve Microsoft gibi firmalar, bilmediğimiz bir adrese giderken bizi kaybolmaktan kurtarıyorlar.

Günümüzde yoğun ilgi gören harita uygulamaları artık üç boyutlu görüntülenebilen, trafik yoğunluğunu bildiren, afet bölgelerindeki hasarı gösterebilen, Microsoft Live Local gibi servislerle bazı şehirlerde gezinmeye imkan veren özelliklere kavuştular. Hatta Dünya’da dolaşmaktan sıkıldıysanız, Google Sky veya bu ay incelediğimiz Microsoft Virtual Telescope gibi uygulamalar ile uzayı keşfetmeye başlayabilirsiniz. Gelişim süreci devam ederken firmalar web programcılarını da unutmuyor; SDK ve API’leri sürekli güncelleyerek uygulamaların başka sayfalara kolayca entegre edilebilmesi için uğraş veriyorlar. Bizde şimdi kullanımı giderek artan Microsoft Virtual Earth kütüphanelerinin yardımıyla web sitemiz için bir harita uygulaması hazırlayacağız.

Continue reading →

Ajax Extender nesnelerinin kullanimi

Web programcılarının en çok vaktini çalan unsur, hiç şüphesiz sayfalarda ki küçük ayrıntılarla uğraşmaktır. Ancak detaylara verdiğiniz önem, web sitenizin kullanım kolaylığını arttırırken kullanıcıların sitenizi tercih etme sebebi de olabilir. Hatırlarsanız, geçtiğimiz aylarda projelerimizde kullandığımız “Ajax Control Toolkit” araçları, değişik alanlarda bünyesinde bulundurduğu öğeler ile bizleri büyük bir zaman kaybından kurtarıyordu. Ajax ile entegre gelen Visual Studio 2008 ise Control Toolkit araçlarının kullanımını daha da kolaylaştırarak sayfamızdaki ASP.NET nesnelerini doğrudan bu araçlara bağlamamıza imkan veriyor.
Bizde şimdi Ajax tabanlı bir web sitesi kayıt formu hazırlayarak, hem bu araçları öğrenmeye devam edeceğiz hem de yeni platformun bizlere sağladığı kolaylıkları tanıma fırsatı bulacağız. Continue reading →

ASP.NET Ajax kullanarak iletisim formu hazirlamak

Ziyaretçilerinizin web sitenizi önemsemesini istiyorsanız, siz de onlara önem verdiğinizi göstermelisiniz. Birçok sitede bulunan iletişim formları, kullanıcıların öneri, istek  ve şikayetlerini hızlı bir şekilde ilgililere iletebilmesine imkan tanır. Bizde bu ay ASP.NET Ajax’ın yeteneklerinden faydalanarak şık ve hızlı çalışan bir iletişim formu oluşturacağız. Genel olarak kullanıcıların yazdıklarını belirlenen bir kişiye mail atarak ulaştıran iletişim formları, bizim yapacağımız örnekte bir adım öteye giderek bu işlemin hatasız bir biçimde sonlanmasını sağlayacak.

Senaryoyu biraz daha genişletip, iletişime geçilecek insan sayısını arttırmak da mümkün. Biz örneğimizde dergimiz yazarlarının listesine sahip bir formda kullanıcının istediği yazara hitap edebileceği bir uygulama dizayn edeceğiz. Buradaki problem yazarların aldığı eleştirilere cevap verebilmesi için mesajı yazan kullanıcının iletişim bilgilerinin de iletilmesi gerekliliği. Mesaj göndermek isteyen kullanıcının kendisine cevap verilebilmesi için adı, soyadı ve e-mail adresi gibi bilgilerinin mutlaka girilmesini bekliyoruz. ASP.NET’in formlardaki alanları kontrol edip geçerliliğini onaylayan bazı “Validator” nesneleri bu konuda bize yardım edebilirler.  Bu nesneler bir yazı kutusunun (text-box) boş bırakılmaması gerektiğini, yada girilen e-mail adresinin formata uymadığını kullanıcıya hoş bir dille hatırlatıp iletişim problemleri yaşanmasını engelliyorlar.

Blogumu takip eden yada Ajax ile ilgilenen biriyseniz, salt ASP.NET formlarının ne kadar can sıkıcı olduğunu  düşünebilirsiniz. Özellikle alanların hatalarını kontrol eden bir form olduğu için, böyle durumlarda sayfanın yenilenmesi ve bilgilerin kaybolması gibi sorunlar sizinle iletişime geçmek isteyen kullanıcınız için iyi bir deneyim olmayacaktır. Ajax ile klasik formları daha interaktif hale getirmek için yapmanız gereken ilk iş kullandığınız Visual Studio 2005 yada Web Developer Express Edition’a gereken http://ajax.asp.net adresindeki “Ajax Extensions” paketini indirerek kurmak. Eğer VS 2008 versiyonuna terfi ettiyseniz, ilgili kütüphaneler hazır geldiği için bir sonraki adıma geçebilirsiniz.

Continue reading →