SIDEBAR
»
S
I
D
E
B
A
R
«
Visual C# .NET İle Windows Tabanlı Programlama
Nis 2nd, 2010 by Özcan BAYĞUŞ

Windows tabanlı uygulamalar, Windows işletim sistemi üzerinde çalışan uygulamalardır. Windows uygulamaları Windows formları ve kontrollerinden oluşur. Visual Studio bu formların ve üzerindeki kontrollerin tasarımını, kodların yazılımını büyük ölçüde kolaylaştırarak uygulama geliştirme sürecini daha hızlı ve kolay hale getirir.
Bu modülü tamamladıktan sonra:

  • Windows tabanlı programlamada kullanılan kontrolleri tanıyacak,
  • Kontrollerin özellik, metot ve olay kavramlarını öğrenecek,
  • Visual C# .NET dilinde değişken, sabit tanımlamayı öğrenecek,
  • Veri tiplerini tanıyacak,
  • Operatörleri kullanabileceksiniz.
Search (Arama)
Mar 16th, 2010 by Özcan BAYĞUŞ

MSDN kütüphanelerinde arama yapılan paneldir. Look for metin kutusuna, aranacak anahtar kelimeler girilir. Filtreleme (Filtered by) ile arama sonuçları belli konulara göre sınırlanır ve istenmeyen seçeneklerin gösterilmesi engellenir.
Search panelinde, Search in titles only, Match related words, Search in previous results, Highlight search hits arama seçenekleri bulunur:
Search in titles only: Sadece konu başlıklarında arama yapar, içerik kısmına bakmaz
Match related words: Kelimeleri yazıldığı gibi arar, benzer yazımlı kelimeleri aramaz.
Search in previous results: İlk aramadan sonra aktif olan bu seçenek ile kelimeler, bir önceki aramada bulunan sonuçlar arasına bakılır.
Highlight search hits: Bulunan yardım sayfalarında, aranan kelimelerin seçili olmasını sağlar.

MSDN kütüphanelerinde arama yapılan paneldir. Look for metin kutusuna, aranacak anahtar kelimeler girilir. Filtreleme (Filtered by) ile arama sonuçları belli konulara göre sınırlanır ve istenmeyen seçeneklerin gösterilmesi engellenir.Search panelinde, Search in titles only, Match related words, Search in previous results, Highlight search hits arama seçenekleri bulunur:Search in titles only: Sadece konu başlıklarında arama yapar, içerik kısmına bakmazMatch related words: Kelimeleri yazıldığı gibi arar, benzer yazımlı kelimeleri aramaz.Search in previous results: İlk aramadan sonra aktif olan bu seçenek ile kelimeler, bir önceki aramada bulunan sonuçlar arasına bakılır.Highlight search hits: Bulunan yardım sayfalarında, aranan kelimelerin seçili olmasını sağlar.

Bulunan sonuçlar Search Results (Arama Sonuçları) panelinde gösterilir. Bu panelde

  • Title, konunun başlığını
  • Location, MSDN kütüphanelerinde hangi başlık altında bulunduğunu
  • Rank, konunun, aranılan kelimeye olan yakınlık derecesini ifade eder.
C# tan MVC ye geçiş
Şub 20th, 2010 by Özcan BAYĞUŞ

MVC model view controller a c# tan geçiş hakkında makalemi çok kısa bir süre sonra buraya yazacağım.

Start Page
Oca 23rd, 2010 by Özcan BAYĞUŞ

Visual Studio Çalışma ortamını açtığımız zaman karşımıza ilk gelen başlangıç sayfasıdır. Bu sayfa üç bölümden oluşur.
• Projects
O ana kadar çalıştığınız projeleri gösterir. Bu menüden son projelerinizi açabilirsiniz. Son projelerde gözükmeyen bir proje (Open Project) veya yeni bir proje (New Project) açabilirsiniz.
• Online Resources
Bu bölümde örnek uygulamalar (Find Samples) ipuçları bulabilir, en yeni teknolojileri, güncellemeleri veya en son eklenen haberleri takip edebilir, MSDN kütüphanelerinde kod örnekleri, makaleler araştırabilirsiniz.
• My Profile
Bu bölümde çalışma şeklinize göre bir profil seçebilirsiniz. Profiller; kullanılan kısa yollara, panellerin yerlerine ve görünümlerine, Visual Studio yardımını kullanırken yapılan filtrelemeye göre değişir.
Örneğin, profili Visual C# Developer olarak ayarlarsak Dynamic Help paneli, sayfaların sağ tarafında çivili olarak durur. Yardım panelinde bir arama yapmak istediğimizde ise, sonuçlar Visual C# filtresin

Visual Studio Çalışma ortamını açtığımız zaman karşımıza ilk gelen başlangıç sayfasıdır. Bu sayfa üç bölümden oluşur.• ProjectsO ana kadar çalıştığınız projeleri gösterir. Bu menüden son projelerinizi açabilirsiniz. Son projelerde gözükmeyen bir proje (Open Project) veya yeni bir proje (New Project) açabilirsiniz.• Online ResourcesBu bölümde örnek uygulamalar (Find Samples) ipuçları bulabilir, en yeni teknolojileri, güncellemeleri veya en son eklenen haberleri takip edebilir, MSDN kütüphanelerinde kod örnekleri, makaleler araştırabilirsiniz.• My ProfileBu bölümde çalışma şeklinize göre bir profil seçebilirsiniz. Profiller; kullanılan kısa yollara, panellerin yerlerine ve görünümlerine, Visual Studio yardımını kullanırken yapılan filtrelemeye göre değişir.Örneğin, profili Visual C# Developer olarak ayarlarsak Dynamic Help paneli, sayfaların sağ tarafında çivili olarak durur. Yardım panelinde bir arama yapmak istediğimizde ise, sonuçlar Visual C# filtresin Görünüm, kısa yollar ve yardım filtresi birbirinden bağımsız olarak da ayarlanabilir. Bu durumda seçilen profil, custom (özel) olarak gözükecektir.

At Startup seçeneklerinden, Visual Studio açılırken hangi pencerenin gözükeceğini belirleyebilirsiniz. Örneğin, başlangıçta en son çalıştığınız projenin açılmasını istiyorsanız, “Load last loaded solution” seçeneğini tercih etmelisiniz.

İPUCU: Giriş sayfasını kapattıktan sonra, Help menüsünden Show Start Page seçeneğine tıklayarak açabilirsiniz.

Programlama Dilleri
Oca 23rd, 2010 by Özcan BAYĞUŞ

Programcı ile bilgisayarın haberleşmesini sağlar

Programlar 1 ve 0 sayılarından oluşan makine diline çevrildikten sonra çalıştırılır

Programlama Dilinin özellikleri:

Sözdizimi (Syntax)

Gramer

Semantik

2500’den fazla programlama dili mevcuttur.

Dünyada konuşulan her dilin amacı iletişim sağlamaktır. Farklı kültürlerden insanların anlaşabilmesi için ortak konuştukları bir dil gerekir. Programla dillerinin amacı da bilgisayar ile programcının haberleşmesidir. Programcı, bilgisayara hangi komutların çalıştırması gerektiğini bilgisayarın anlayacağı dilden konuşarak söyler.
Bilgisayarda, programlar makine diline çevrildikten sonra çalışır. 1 ve 0 sayılarından oluşan bu makine dili, en alt seviye dildir. Dolayısıyla programların bu dilde yazılması oldukça zordur. Programcılar konuşma diline daha yakın, kolay anlaşılabilecek diller kullanmaktadır. Bu dillere yüksek seviye programla dilleri denir. Programlama dillerinin seviyeleri makine diline yakın olup olmaması ile ölçülür.

Dünyada konuşulan her dilin amacı iletişim sağlamaktır. Farklı kültürlerden insanların anlaşabilmesi için ortak konuştukları bir dil gerekir. Programla dillerinin amacı da bilgisayar ile programcının haberleşmesidir. Programcı, bilgisayara hangi komutların çalıştırması gerektiğini bilgisayarın anlayacağı dilden konuşarak söyler.Bilgisayarda, programlar makine diline çevrildikten sonra çalışır. 1 ve 0 sayılarından oluşan bu makine dili, en alt seviye dildir. Dolayısıyla programların bu dilde yazılması oldukça zordur. Programcılar konuşma diline daha yakın, kolay anlaşılabilecek diller kullanmaktadır. Bu dillere yüksek seviye programla dilleri denir. Programlama dillerinin seviyeleri makine diline yakın olup olmaması ile ölçülür.

Bir programlama dili şu unsurlardan oluşur:

• Söz dizimi (Syntax)

Bir dil, kendine ait kelimeler ile konuşulur. Programlama dillerinin de benzer bir davranışı vardır. Programlama dillerindeki bu kelimeler, programlama dilinin anahtar kelimeleridir – komutlarıdır.

• Gramer

Programlama dillerini kullanmak için sadece kelimeleri bilmek yeterli değildir. Eğer anlamlı bir şekilde bir araya getirilemiyorsa, bu kelimeler hiçbir anlam ifade etmez.

• Semantik (anlamsal)

Bir dili, kelimeleri doğru bir gramer kullanımı ile bir araya getirerek kullanabiliriz. Ancak konuşulan kelimelerin ne için kullanıldığı da önemlidir. Bir programlama dilinin özelliklerinin nasıl ve ne için kullanıldığı da, bu dilin semantiğidir.

Örneğin bir finans programı, Yeni Türk Lirası cinsinden bir miktarı dolara çevirecektir. Yapılacak işlem o andaki parite değerini merkez bankasından çektikten sonra, girilen miktarı bu değerle çarpıp kullanıcıya göstermektir. Kullanılan programlama dili ÇARP, GÖSTER, EŞİTLE komutları ile bu işlemi gerçekleştirecektir.

ÇARP EŞİTLE GÖSTER miktar parite sonuç

Bu şekilde yazılan program söz dizimi açısından doğrudur. Girilen veriler ve komutlar dışında, programlama dilinin anlamayacağı bir kelime kullanılmamıştır. Ancak komutlar yanlış sırada kullanılmıştır. ÇARP komutu hangi sayıları çarpması gerektiğini bilemeyecektir.

parite EŞİTLE sonuç ÇARP miktar

GÖSTER parite

Komutları ve değişkenleri, programlama dilinin gramerine göre doğru yerlerde kullanmamız gerekir. Bu şekilde kullanılan komutlar doğru bir şekilde çalışır. Fakat GÖSTER komutunun ne için kullanıldığı yani semantiği de önemlidir. İstenilen, miktar ile pariteyi çarpmak, sonuca eşitlemek ve sonucu göstermektir.

sonuç EŞİTLE miktar ÇARP parite

GÖSTER sonuç

Bunlardan bazıları Pascal, Basic, C, C++, Java, Javascript, Cobol, Perl, Python, Ada, Fortran, Visual Basic .NET, Microsoft Visual C# programlama dilleridir.

Yüksek seviye programlama dillerine Visual Basic .NET, Microsoft Visual C++ dillerini örnek verebiliriz. C ile işletim sistemi yazılabilindiğinden daha alt seviye bir dil olarak değerlendirilir.

String Dönüşümleri
Ara 24th, 2009 by Özcan BAYĞUŞ

Bilgisayar ile insan iletişimi genelde yazı ile oluyor. Bilgisayarın çıktıları genellikle yazı olarak vermesini isteriz. Eğer sayıları göstermesi gerekiyorsa ekranda, göstereceği sayıyı yazıya dönüştürerek yapar.
Meselâ, 45 sayısını 32-bit tamsayı olarak saklar. Bellekteki bitler aşağıdaki gibidir.
0000-0000-0000-0000-0000-0000-0010-1101
Buna sayının ikili gösterimi denir. Bir sayının ekranda gösterilebilmesi için onun Unicode karaktere dönüşmüş olması gerekir. Unicode karakterin gerçek değeri sayının genliğine eşittir. Meselâ 45 sayısı 4 ve 5 karakterlerinden oluşur. Yani iki tane 16-bit koddan oluşur.
0000-0000-0011-0100 ve 0000-0000-0011-0101
Bildiğiniz gibi, Console.Write ve Console.WriteLine yöntemleri ekranda gösterebilmek için otomatik olarak tamsayıları string haline dönüştürürler. Bazen string veriyi tamsayıya, tamsayıyı stringe dönüştürmek istersiniz. Bir string ifadeyi tamsayıya dönüştürmek için string ifade sadece rakamlardan oluşmalıdır, eksi işareti de içerebilir.
Şimdi bir tane tamsayı bir tane de string değişken tanımlayarak işe başlayalım.
int I = 45;
string S;
Basit bir şekilde bir tamsayıyı string ifadeye dönüştüremezsiniz.
S = I; // Bu şekilde olmaz.
Eğer yukarıdaki ifadeyi denerseniz aşağıdaki gibi bir hata mesajı alırsınız.
Cannot implicitly convert type ‘int’ to ‘string’
(int türünde bir sayıyı string türüne kapalı dönüşümle dönüştüremezsiniz.)
Aşağıdaki gibi casting yapmak da mümkün değildir.
S = (string)I; // Bu şekilde de olmaz.
Eğer yukarıdaki ifadeyi denerseniz aşağıdaki gibi bir hata mesajı alırsınız.
Cannot convert type ‘int’ to ‘string’
(int türünü string türüne dönüştüremedi.)
C# tip güvenli bir dildir yani farklı türlerin kapalı dönüşüm ya da açık dönüşüm ile dönüştürülmesinde bir takım kurallar ve kısıtlamalar söz konusudur.
Ama buna rağmen bazı durumlarda tamsayı bir türün string bir türe dönüştürülmesi sahne arkasında meydana gelir, meselâ Console.WriteLine yöntemi böyledir.
Bir tamsayıyı string ifadeye dönüştürmenin bir yolu, onu boş bir string ile birleştirmektir.
S = "" + I;
ya da
S = I + "";

Her iki durumda da C# tamsayıları string bir ifade ile birleştirebilmek için dönüştürme işlemini yapar. Tamsayı ile birleştirilmek istenen string boş olduğuna göre sonucu etkilemez, neticede tamsayı bir ifade string bir ifadeye dönüşmüş olur. Mesela I değişkeni 45 sayısına eşit olsa dönüştürme işleminden sonra ‘4’ ve ‘5’ karakterlerinden meydana gelen bir yazı olur. Hala dönüştürme işlemi sahne arkasında yapıldı. Biraz da hile yaptık. Ama açık bir şekilde bir tamsayıyı string ifadeye dönüştürmek için ToString isminde bir yöntem kullanabiliriz. Herhangi bir değişkeni string ifadeye dönüştürür.
S = I.ToString(); // Dönüştürme işlemi başarılı.
Bu işlem sonucunda S string ifadesi “45” olan iki karakterli bir yazı oldu.
ToString bir yöntemdir. her zaman yöntemleri isminin sonunda parantez aç ve parantez kapa işaretleri ile birlikte kullanırız. Yöntemi tanımlarken de, kullanırken de bu böyledir. Yukarıdaki ifadede geçen ToString yöntemi hiç argümana sahip değildir ama dönen değeri bir string ifadedir.
Console ve WriteLine arasında noktaya ihityaç duyduğumuz gibi, tamsayı değişkenimiz ve ToString arasında da noktaya ihtiyaç duyduk. Hatta ToString yöntemini bir tamsayı ifadenin önünde kullanabilirsiniz.
S = 279.ToString();
Fark ettiğiniz gibi ToString yöntemi çok sık ihtiyaç duyulan bir yöntemdir. Bu yöntemi her nesne ve tür ile kullanırsınız ve nesnelerin yazıya dönüşmüş hallerini elde edersiniz.
Şimdi string bir ifadeyi tamsayıya dönüştürelim. Önce string bir değişken tanımlayalım ve rakamlardan oluşan bir değer atayalım.
S = "57";
Şimdi bu string ifadeyi tamsayıya dönüştürmek istiyoruz. Şansımıza, string ifademiz de sadece rakamlardan oluşuyor. Burada da söylemek gerekirse atama işlemini yine kullanamayız.
int I = S; // İşe yaramaz.
Hemen derleme hatasını görürsünüz.
Cannot implicitly convert type ‘string’ to ‘int’
(string ifadeyi tamsayı bir ifadeye kapalı dönüştürme ile dönüştüremezsiniz.)
Şimdi casting yapalım.
int I = (int)S; // Hala işe yaramadı.
Aşağıdaki derleme hatası oluştu.
Cannot convert type ‘string’ to ‘int’
(string türünü int türüne dönüştüremezsiniz.)
Hemen aklımıza bir yöntem olabileceği geliyor. ToString bi bir yöntem olsa da dönüştürme işlemini yapsak.
I = S.ToInt(); // Ama böyle bir yöntem yok.
Yok ama doğru yoldasınız. int Türü System.Int32 yapısının bir aliasıdır. Bu yapının Parse diye bir dönüşüm işi yapan bir yöntemi var.
I = Int32.Parse(S);
Int32.Parse yönteminin dönen değeri bir tamsayıdır. Parse yöntemine geçeceğimiz string rakamlardan oluşmalıdır ama eksi işaretine sahip olabilir. Sağında solunda boşluk olabilir. Mesela aşağıda doğru yazılmış bir ifade var.
I = Int32.Parse(" -572 ");
Eğer string, sayısal olmayan karakterler içeriyorsa ya da eksi işareti ile sayı arasında boşluk varsa Parse yöntemi bir istisna ortaya çıkaracaktır. Sayının int sınırlarının dışında olması da Parse yönteminin istisna ortaya çıkarmasına neden olur.
Şimdi her iki dönüşümü yapan yöntemleri bir karşılaştıralım, benzer ya da farklı yanlarına bakalım.
S = I.ToString();
I = Int32.Parse(S);

Her iki yöntem de System.Int32 yapısının elemanıdır. Aralarında temel bir fark var. ToString yönteminin sol tarafına bakalım. Bir tamsayı değişken var. ToString yöntemi belirli bir tamsayı var ve ona uygulanıyor. Fakat Parse yönteminin sol tarafında bir değişken yok. Int32 yapısının ismi var. Parse yöntemi belirli bir tamsayıya uygulanmıyor. Bir tamsayı oluşturuyor.
Aralarındaki temel fark ise ToString bir instance (örnek) yöntemdir, Parse ise static (durağan) bir yöntemdir. ToString bir örnek yöntemdir, dolayısıyla belirli bir tamsayıya uygulanır, diğer bir deyişle Int32 yapısının bir örneğine uygulanır. Bir tamsayıya ya bir tamsayı değişkene ya da Int32 yapısının bir örneğini yani tamsayı döndüren bir yönteme sahip olasınız ki ToString kullanabilesiniz.
Int32.Parse static bir yöntemdir. Yöntemin soluna Int32 yapısının adını yazdıktan sonra kullanırsınız. Int32.Parse yöntemini çağıracak belirli bir tamsayıya sahip olmanıza gerek yok. Yöntemin kendisi bir tamsayı oluşturur.
Başka durağan yöntemler de biliyoruz. Console.Write ve Console.WriteLine yöntemleri, Main yöntemi de durağan yöntemlerdir. MinValue ve MaxValue (field) alanları ise Int32 yapısının durağan alanlarıdır. Bu yöntemlerin önüne yapıların adını yazmak gerekiyor. String sınıfının Length yöntemi bir örnek alandır. Belirli bir string ifadeye uygulayabilirsiniz.
Bildiğiniz gibi int veri türü System.Int32 yapısının bir aliasıdır. Bu durumda System.Int32 yerine int yazabilirsiniz hatta using direktifi ile System isim uzayını deklare etmişseniz sadece Int32 de yazabilirsiniz.
I = Int32.Parse(S);
Ya da aşağıdaki gibi olabilir.
I = int.Parse(S);
Her iki kullanım da aynı işi yapar ama gerçek sınıfın ya da yapının adını kullanmayı tercih edebilirsiniz. Bütün tamsayı türleri ToString ve Parse yöntemine sahiptirler. Meselâ:
ushort US = UInt16.Parse(S);
ya da
ushort US = ushort.Parse(S);
Parse yöntemini işaretsiz tamsayılarla kullanırken eksi işareti kullanmak bir istisna ortaya çıkaracaktır. Yöntem çağrılarının işlem önceliği vardır. Peki aynı ifade içerisinde 2 tane yöntemi yan yana çağırırsak ne olacak?
string S2 = Int32.Parse(S).ToString();
Aynı önceliğe sahip 2 tane yöntem var. Bu tür durumlarda öncelik sırası soldan sağa doğrudur. Öncelikle Int32.Parse yöntemi çalışır. Bu durağan yöntemin çalışması sonucunda bir tamsayı oluşur. O zaman ifade aşağıdaki şekle dönüşür.
string S2 = 45.ToString();
Artık kolay. ToString yöntemi örnek yöntemdir. 45 sayısını ‘4’ ve ‘5’ şeklinde 2 tane karakterden oluşan S2 string ifadesine dönüştürür.
Şimdi tersini yapalım. Önce bir tamsayıyı string ifadeye dönüştürelim, sonra bu string ifadeyi tekrar tamsayıya dönüştürelim ve tamsayı bir değişkende tutalım.
int I2 = Int32.Parse(I.ToString());
Bu iç içe yöntem çağırmadır. Bir yöntem diğer bir yönteme argüman olarak yazılmış. Bu durumda görünüşe bakılırsa Parse yöntemi önce çalışacak gibi ama değil. Öncelikle argüman gerekiyor. Bunun için de ToString yönteminin çalışması gerekiyor. Çalışınca ifade aşağıdaki şekle dönüşür.
int I2 = Int32.Parse("45");
Daha sonrası zaten kolay. Parse yöntemi çalışır ve bir tamsayı döndürür.
System isim uzayı Covert diye de bir sınıf barındırır. Çok güzel bir sınıftır. Bütün temel türleri diğerlerine dönüştürebilecek durağan yöntemlere sahiptir. Şimdi aşağıda gördüğünüz örnek bir string ifadeyi tamsayıya dönüştürmek için alternatif yol sunar.
I = Convert.ToInt32(S);
Covert sınıfının dokümanları incelendiğinde Int32.Parse kullandığı görülür. Onun için olan bütün kurallar ve kısıtlamalar Convert için de geçerlidir.
Aşağıdaki örnek de ToString örnek yöntemine durağan bir alternatiftir.
S = Convert.ToString(I);
Convert sınıfı aynı zamanda bu yöntemlerin aşırı yüklenmiş şekillerine de sahiptir. Sayı tabanları ile çalışmaya da izin verir. Bu aşırı yüklenmiş yöntemler virgülle ayrılmış 2 tane argümana ihtiyaç duyarlar. Meselâ:
I = Convert.ToInt32(S, 16);
Bu örnekte S değişkenindeki string ifadenin hexadesimal rakamlar içerdiğini varsayar. Yöntemin ikinci argümanı sadece 16 değil 2, 8, 10, 16 olabilir. Her durumda ilgili string ifade o tabanda geçerli olacak rakamlara sahip olmalıdır. Meselâ eğer ikinci argman 2 ise string ifade sadece 0 ve 1 rakamlarını içermelidir.
Benzer şekilde aşağıdaki ifade de tamsayıyı hexadesimale çevirir. Aşağıdaki gibi bir ifadede de yine ikinci argüman 2, 8, 10, 16 olabilir.
S = Convert.ToString(I, 16);
Parse yönteminin de aşırı yüklenmiş sürümleri var. Yöntemlerin aşırı yüklenmesi meselesini de başka bir yazıda ele alacağız.


»  Substance:WordPress   »  Style:Ahren Ahimsa