RSS
 

Archive for the ‘C#’ Category

Windows 7 Uyumluluk Kontrolü

11 Feb

Merhaba,

Windows 7′yi beta sürecinden beri takip ediyorum ve beğenerek kullanıyorum. Win7 çıkmadan önce geliştirmiş olduğumuz C#.NET uygulamalarınıza Win7 uyumluluk kontrolü eklemek için aşağıdaki kodu kullanabilirsiniz.

-

if (Environment.OSVersion.Version < new Version(6, 1))
{
       MessageBox.Show("Windows 7 İşletim Sistemi Gerekmektedir.",
              "Uyumsuz İşletim Sistemi", MessageBoxButtons.OK,
              MessageBoxIcon.Error);
       return;
}

Version(5,1) olarak değiştirirsenizde Windows XP sürümünü denetleyebilirsiniz.

İyi Çalışmalar.

 
No Comments

Posted in C#

 

C#.NET ve TypeOf Operatörü

07 May

Merhaba ,

Garip şekilde bu konuda 3-4 kişisen istek geldi. :) Basit bir konu ama yinede anlatayım. Gerçi neyini anlatıcam tam bilemiyorumda ama kısaca TypeOf Nedir? dersek.

TypeOf; Run Time’da her hangi bir türe ilişkin Type Class’ı türünden bir object üretir. Daha iyi anlamanız açısından küçük bir örnek yazıyım.

using System;
using System.Collections.Generic;
using System.Text;

namespace TypeOf
{
    class Program
    {
        static void Main(string[] args)
        {
            Tipler tip = new Tipler();
            tip.myMain();

            string s = "\n Programı sonlandırmak için enter'a basınız....";
            Console.WriteLine(s);
            Console.ReadLine();

        }
    }

    class Tipler
    {
        public void myMain()
        {
            Type tip = typeof(Tipler);
            Tipler yeniTip = new Tipler();
            Type tipTuru = yeniTip.GetType();

            Console.WriteLine(yeniTip.ToString());
            Console.WriteLine(tip.ToString());
        }
    }
}

Sanırım yeteri kadar açık oldu. Daha başka nasıl anlatabilirim bilmiyorum. :) Bildiğiniz gibi yinede takıldığınız bir yer olursa yorum olarak yazabilirsiniz. Ozan’cım bu senin içinde geçerli :D

İyi Çalışmalar.

 
No Comments

Posted in C#

 

Google 23 Nisan’da MEB’in Sitesini Hackledi :)

23 Apr

childrensday_tr09

Merhaba,
Tam Google’ın 23 Nisan logosuna sevinecekken, bir bakıyım dedim resme tıklayınca ilk hangi site çıkıyor , tahmin ettiğim gibi MEB çıktı. Peki, MEB’in sitesine baktığımda ne çıktı? Service Unavailable yazısı. :D

Demek ki MEB’in alt yapısı henüz 1/2 milyon hit’i kaldırabilecek bir seviyede değil. Biz buna halk arasında IMECE DDOS Diyoruz. :) El birliği ile Google’ın da yardımlarıyla MEB’in sitesini servis dışı bıraktık. Hacked By TÜRKİYE :D

ORACLE’a her ay ödeyecek bütçe buluyorlar da bir 2Gbps Hat ile 4 server almayı bilmiyorlar. :)

Burası Türkiye.

İyi Çalışmalar.

 

C# İle Mobile Programlama ve .NETCF

24 Dec

.NET CF Mobile ProgrammingNew Mobile Phones

Merhaba,

Bu yazı dizisinde sizlere .NET Compact Framework ve Mobile programlamayı anlatacağım. Örneklerde tahmin edeceğiniz üzere C# kullanacağım. VB’ciler için VB.NET ile de anlatmak isterdim ama VB’ye bir türlü ısınamadım. C# olduğu sürecede ısınabileceğimi pek düşünmüyorum. :) Neyse konumuza dönelim.

Bildiğiniz üzere ülkemizde bilgisayardan çok cep telefonu kullanılmaktadır. Hazır önümüz 3G ve 4G iken mobile programlamada gelişen telefonlarla beraber popüler olacaktır. Bence Türkiye mobile yazılım alanda atılımlar yapmak için güzel bir yer ve şuan sektöründe bu atılımlara ihtiyacı var.

Kısaca şöyle bir mutfağamıza bakacak olursak;

Elimizde bir adet Visual Studio.NET 2008 var. Bunun yanında bolca C# ve .NETCF var. Şimdi bunları kullanarak güzel mobile uygulamalar çıkartacağız.

İlk olarak Yeni bir proje oluştur diyoruz ve açılan menüden Visual C# > Smart Device > Smart Device Project yolu ile yeni bir proje oluşturuyoruz.

Yeni bir Smart Device Projesi Oluşturma

(Resmin üzerine tıklayarak büyük halini görebilirsiniz.)

Biz Pocket PC 2003 üzerinden geliştirme yapacağımızdan onu seçiyoruz.

Pocket Pc 2003 Projesi Oluşturma

Resimde de gördüğünüz gibi Device Application seçeneğinide seçip okey diyerek yolumuza devam ediyoruz. Diğerlerinin ne olduğunu açıklamama gerek yok sanırım. :) Hepiniz bir C# programcısı olarak biliyorsunuzdur. Ama yorumlardan istekte bulunursanız makaleyi düzenleyip onlarıda yazarım.

Daha sonra karşımıza şu şekilde bir ekran geliyor ve başlıyoruz artık kodlamaya…

Proje oluşturulduktan sonraki ilk ekran

Hemen Hello Bill diyerek standartları bozmayalım :)

Bir adet Button koyalım ve bir tanede textbox koyalım butonun click event’ne de Hello Bill string’ini bağlayalım.

Butona tıkladığımızda textbox’ın içine Hello Bill yazdıralım.

Hello World Kodlamamız

Daha sonra F5 dediğimizde bize bu programımızın hangi tür sistem üzerine deploy olacağını soruyor. Biz baştan Pocket PC 2003 seçtiğimizden burada da Pocket PC 2003 SE Emulator’u seçerek Deploy diyoruz.

Emulator Seçimi

Ardından projemizde şu adımlar gerçekleştirdi: Save,build,compile ve deploy. Karşımıza önce aşağıdaki şekilde bir ekran gelecek bu ekranda bir yere tıklamanıza gerek yok. Bilgisayarınızın hızına göre projenin deploy olarak sanal emulatöre yüklenmesi biraz zaman alabilir. Çünkü, siz her run ettiğinizde sanal emulatöre o program yüklenmekte ve ardından çalıştırılmaktadır. Pocket Pc’nin Task list’inden bakarsanız Form1′in çalıştığını görebilirsiniz.

Virtual Pocket Pc 2003 Ekranı

Yazdığımız program sanal pocket pc’mize yüklendikten sonra direk yazdığımız program gelecektir. Ekran görüntüsü şu şekildedir. Tabii bu arada Tıklat butonuna tıkladım :) ve Hello Bill Yazısı textbox1′in text’ine setlendi.

Programımızın çalışır hali

Yeri geldikçe size bu emulatör ile ilgili ayarları ve mobile programlamayla ilgili bazı maddeleri söyleyeceğim. Karşımızdaki 4GB ram’li bir Mac olmadığından programlarımızıda ona göre düzenleyeceğiz. Kısıtlı ram ve işlemci gücümüz olduğunu unutmamak gerek. Şimdi programımızı kapatmayla ilgili bir kaç bilgi vermem gerekiyor.

Kapat dediğimizde bize bir seçim penceresi çıkartıyor burada oturumu kaydetmek isteyip, istemediğimizi soruyor. O pencereye No diyerek devam ediyoruz ve bir tane pencere daha çıkarak bağlantımızın koptuğunu bildiren.

Oturumu kaydetmek isteyip istemediğimizi soran pencere?

Aşağıdaki pencereyede Okey diyerek programımızı kapatıyoruz.

Bağlantımızın koptuğunu bildiren pencere

Son olarak Windows Form Designer generated code’dan formumuzun yani programımızın title’nı değiştiriyoruz. Böylece Pocket Pc’deki programımızın ismide değişecektir. Form1′den verdiğimiz ada göre değişecektir. Bunun için Form1.Designer.cs dosyasını açıyoruz ve tüm region’ları açık şekle getiriyoruz. Ardından aşağıdaki gibi form1′in text’ini değiştiriyoruz.

Program adını değiştirme

Programımızın son hali aşağıda gözüktüğü gibidir. Ben ekstradan bir de bir image ekledim. Alt taraftan projeyi indirerek kendi bilgisayarınızda çalıştırabilirsiniz.

Programımızın son hali

Bu ilk dersimizde basit bir giriş yaptık. İleriki derslerde daha gelişmiş programlar yazacağız.

Proje Dosyalarını indirmek için tıklayınız.

İyi Çalışmalar,

Hakan DAMAR

 
7 Comments

Posted in .NET, C#, Mobile

 

Visual C#.NET | Ders 1

14 Aug

1.0 Visual C#.NET’e Giriş;

Hepiniz daha önceden C ve C++ üzerine programlama yaptığınızdan, ilk bilgi olarak sizlere editör seçimi, derleme v.s. gibi temel konuları aktarmayacağım. Bildiğinizi kabul ederek devam ediyorum.

Henüz daha yeni başlıyorken sizlere bir öneride bulunmak istiyorum. Sanki C++ bilmiyormuş gibi C#’ı kavramaya çalışın. Çünkü arasındaki farklılıklar kafanızı karıştırabilir. Ondan hiçbir konuyu zaten ben C++’tan biliyorum diye atlamayınız.

Bir bilgilendirme daha, ilk aşamada sadece kodlara ve mantığa yoğunlaşmamız için Console Application(Konsol Uygulaması) yazdıracağım. İlerleyen zamanlarda Windows Application(Windows Uygulaması)’da değineceğiz. Ondan dolayı VS.NET’ten New Project oluştururken Console Application’ı seçmeyi unutmayınız.

Şimdi ilk programımızı yazalım ve açıklamamızı yapalım.

[C#]

class program1

{

Static void Main() // EnterPoint

{

System.Console.Write(“Bende C# Öğreniyorum.”);

}

}

[/C#]

Şimdi yukarıdaki kodları açıklayalım. Burada bir hatırlatma yapmak istiyorum. Elimden geldiğince tüm terimler, kodlar, adlar v.s. hepsini İngilizce olarak yazacağım. Çünkü ileride karşınıza bunlar %90 İngilizce olarak çıkacaktır. Bu yüzden ilk defa anlattığım bir kelimenin parantez içerisinde Türkçe karşılığını da yazacağım.

Hatırlatmamızı da yaptıktan sonra şimdi açıklamamıza geçebiliriz. İlk olarak bir class(Sınıf) tanımladık. Çünkü C#’ta yazdığımız programlarda en az bir sınıf olmak zorundadır. Sınıf tanımlamadığımız programlar derlenmezler ve derleme aşamasında hata üretirler.

Buraya değinmişken en basit şekilde class tanımlamayı da göstereyim. Aşağıdaki şekilde C#’ta basitçe bir sınıf tanımlayabilirsiniz.

[C#]

class Sinif_ismi

{

… // İçerisine yazacağımız kodlar v.s.

}

[/C#]

Bunu da kavradıktan sonra class içerisindeki ilk kod satırımıza bakıyoruz ve bir yorum satırı yazdığımı görüyoruz. Enterpoint(Giriş Noktası) olarak açıklama yapmışım. C++’tanda bilirsiniz programların bir Main() fonksiyonu programın çalışmaya başladığı noktadır. Eğer belirtmezseniz yine hata alırsınız. Çünkü program nereden başlayarak kodları yorumlayacağını bilemez. C++’a biraz daha değinecek olursak. C++’ta main function(Fonksiyon)’ı asla bir class içerisinde olmamıştır. Ama daha öncede belirttiğim gibi C#’ta yazdığımız bir programda mutlaka bir class olmak zorundadır.

C#’ta tüm satırlar az bir istisna ile “;” ile sonlanır. PHP geliştirici arkadaşlarımızın da aşina olduğu bir işarettir. Şimdi C# ile PHP’yi nasıl ilişkilendirdin diyeceksiniz. Aslında PHP bir web geliştirme dili fakat PHP 5 ile birlikte Java’nın özelliklerini almıştır. Bu Java != JavaScript. İkisi çok farklıdır. Bir biri yerine yazan çok kişi olduğunu gördüğümden belirtmek istedim. Buda bize şu sinyali veriyor. Java’da ileride ASP.NET gibi farklı diller ile geliştirilebilecek. Neyse ikisi çok farklı diller. Syntax’taki ilişkiyi belirtmek istedim sadece.

Sonraki satırdaki kodlarımıza baktığımızda bir takım namespaces(İsim Alanı) içerisine girerek bir ifadeyi kullandığımızı görüyoruz. Bunu biraz açıklayalım. Gerçi .NET geliştiricileri olarak aşinasınıdır ama bir kez daha anlatalım.

System Sınıfı Altında Console class’nın Write Özelliğini kullandık. C#’ta her şey bir sınıf olduğundan. Daha class’lar ile işimiz çok. Bildiğiniz üzere nokta “.” ‘da bir operatördür ve bize sınıflar arası erişim için dallanma kolaylığını sağlar.

Yazdığımız kodu bir kez daha yazarak şimdi inceleyelim ve havada kalan bilgimiz varsa kavrayalım.

[C#]

System.Console.Write(“Tam OOP’e Geçiyoruz.”);

// Bunu şu şekilde de yazabilirdik.

System.Console.WriteLine(“Tam OOP’e Geçiyoruz.”);

[/C#]

Aralarındaki fark ise biri verdiğinizi, o satıra yazar ve işlemini tamamlayarak durur. Diğeri ise WriteLine(Satır Yaz) dediğimizde, Satıra verdiğimiz değeri yazar ve “\n” yapar yani bir alt satıra geçer.

Peki, biz şimdi her ekrana bir şey yazdırmak istediğimizde her seferinde bu kadar uzun bir kod mu yazacağız?

[C#]

System.Console.WriteLine(“SanalKurs.NET”);

[/C#]

Hayır. Bunun yerine isim alanlarını programımızın en üstüne ekleyerek altındaki tüm class’lara erişim hakkını kazanmış olacağız.

Bizim buradaki NameSpaces(İsim Alanları)’imiz System olduğuna göre o zaman programımızın en üstüne System namespaces’ini ekleyeceğiz. Programımızda bu değişikliğe göre şu şekilde değişlecektir.

[C#]

Using System; // System isim alanını ekledik.

// Artık Altındaki tüm class’lara erişebiliriz.

Class Program1

{

Static void Main()

{

Console.WriteLine(“HakanDAMAR.Com”);

}

}

[/C#]

Console class’ı System namespaces’i içerisinde olduğundan ve System namespaces’ini programımızın en üstüne eklediğimizden artık başına System yazmamıza gerek kalmıyor. Tüm class’larına erişim hakkını kazanmıştık zaten.

Artık ekrana bir şey yazdırmak istediğimizde;

[C#]

Console.Write(“Ne Yapabileceğini Göster!”);

[/C#]

Şeklinde kullanabilirsiniz.

Artık ekrana yazı yazdırmayı öğrendik. Peki, kullanıcılar ekrana nasıl yazı girecekler? Bu sefer yine System namespaces’i altındaki Console class’ı bize bu konuda yardımcı oluyor. Console class’nın ReadLine(Satır Oku) üye elamanı bize bu konuda yardımcı olacaktır.

Ekrandan bir değer alacağımızdan ve bu değerinde her şey olabileceğinden dolayı ReadLine() ReadLine(“Değer”) gibi her hangi bir parametre almaz. Bu yüzden kullanımı en basit olarak şu şekildedir.

[C#]

using System;

class program2

{

satatic void Main()

{

Console.ReadLine();

}

}

[/C#]

Ekrana veri girilmek üzere cursor’ü bırakır ve veri girişini bekler. Şimdi öğrendiklerimizi toplu bir örnekte kullanarak pekiştirelim.

[C#]

using System;

class program3

{

static void Main()

{

Console.Write(“Veri Giriniz: “);

Console.ReadLine();

Console.WriteLine(“Veri Girişi Yaptınız!”);

}

}

[/C#]

Şimdi klavyeden ismimizi yazıp enter’a bastığımızda “Veri Girişi Yaptınız!” Mesajı ile karşılaşmamız gerekmektedir.

Bu makalemde Visual C#.NET’e bir giriş yaptık ve bir takım bilgiler öğrendik. Bir sonraki makalemde Veri Türleri’ne giriş yapacağız.

Hepinize Başarılar Diliyorum.

Hakan DAMAR

 
No Comments

Posted in C#

 

Visual C#.NET Giriş

14 Aug

Merhaba Sevgili Okurlar,

Bu eğitim serimde sizlere gelecekte daha da yıldızı parlayacak olan bir programlama dilini anlatacağım. 2010 gibi artık her tarafta C#’ı görmemiz kaçınılmaz olacaktır. Bu yüzden şimdiden C#.NET eğitiminizi sağlam alarak geleceğe dönük yatırım yapabilirsiniz.

Öncelikle belirtmek isterim ki Visual C#.NET zorlu bir yoldur. ASP veya PHP gibi 1 ayda öğrenmeniz çok zordur. Eğer daha önceden bir programlama dilinde nesnel kodlama yapmadıysanız tabi. %100 nesne tabanlı programlama imkânı sunan C#.NET’i çok seveceğinizi, öğrenirken de eğleneceğinizi düşünüyorum. C# ile nesnel programcı olmak istiyorsanız sabırlı ve birazda çalışkan olmanız gerekmektedir.

Eğitim serisi ile ilgili daha öncede açıklama yapmıştım fakat bir kez de burada yenileyeyim. Bu eğitim içeriği C veya C++ ta programlama yapmış kişilere yöneliktir. Ana kitle ise C ve C++’ı bitirmiş ve C#’ı öğrenmek isteyen kişilerdir. Tabi sadece C++ bilgisi olanlar anlar diye bir şey yok. Eğer daha önceden Java ve benzeri bir programlama dilinde nesnel programlama yaptıysanız, C#’ı anlamakta pek zorlanmayacaksınızdır. Bu ilk set olduğundan yazılımcılar için C#’ı anlatacağım. Daha sonra genişleterek daha alt seviyedeki kişilerinde anlayacağı duruma getireceğim.

Hepinize Başarılar Diliyorum.

Hakan DAMAR

 
No Comments

Posted in C#