bilgiz.org

Çalıştırmak için neye ihtiyacımız var programlama dili seçerek kodlamaya değil mi?




Sayfa4/5
Tarih02.07.2017
Büyüklüğü425.5 Kb.

Indir 425.5 Kb.
1   2   3   4   5

Menülerin altına çizgi eklemek: Bir alt menüye geçilir. Mouse sağ menüden “insert-Separator” seçeneği seçilir

  • Menülere check işareti eklemek: Menü seçilir properties penceresinden “checked” özelliği true yapılır. Eğer menünün kendine tıklandığında işaretinin kaldırılması ya da tekrar işaretlenmesi ve aynı zamanda da bir işin gerçekleşmesi isteniyorsa; ilgili menünün click olayında aşağıdaki örnekte olduğu gibi kod yazılır. Örnek: deneme2 name’li “Buton aç” textli menü tıklandığında form üzerindeki button1 görünsün, bu menü tekrar tıklandığında buton kaybolsun ve menünün işareti de kapansın isteniyorsa;

  • Menü Komutlarını Aktif ve Pasif Yapma: Tıpkı kontroller gibi menü seçeneklerinin enabled ve visible özellikleri properties den true ya da false yapılır, ayrıca kod içinde de bu özellikleri true ya da false yapılır



    private void Deneme2_Click(object sender, EventArgs e)

    {

    if (Deneme2.Checked == true)

    {

    Deneme2.Checked = false;

    button1.Visible = false;

    }

    else

    {

    Deneme2.Checked = true;

    button1.Visible = true;

    }

    }

    • Menü adlarında bir karakterin altının çizili olması ve o karaktere basıldığında da ilgili olayın gerçekleşmesi Menü seçilir, properties penceresinde text özelliğinde yazılı ifadenin en başına (&) işareti konur. Böylece menünün işlevini o tuşa basıldığında da gerçekleştirmiş olursunuz.

    • Menülerde olay (event) oluşturmak: “Kontroller için Olay Yönlendirici (Event Handler) Oluşturmak” başlığı ile anlatılan konudaki gibi olay oluşturulur. Örnek: deneme2 menü başlığı üzerine Mouse ile gelindiğinde adımız yazdıralım

    private void Deneme2_MouseMove(object sender, MouseEventArgs e)

    {

    MessageBox.Show("Gülcay");

    }
    İçerik Menüsü (Context Menu) Oluşturma

    İçerik menüleri genellikle, öğe üzerinde sağ tık yapıldığında açılan menüler için kullanılır. İçerik menüleri, Araç kutusundaki ContextMenuStrip öğesi (component) kullanılarak eklenir. Bu öğeler, MenuStrip (ana menü) oluşturmada izlenen yöntemler gibi uygulanabilir.

    İçerik menüleri, ana menünün birçok özelliğini gösterir. Bunlar için kısa yol tuşları atayabilirsiniz ama ana menüde olduğu gibi erişim tuşu veremezsiniz. Bir formdaki kontrolü içerik menüsü ile ilişkilendirmek için kontrolün özellikler penceresindeki ContextMenuStrip anahtarını kullanmalısınız. ContextMenu oluşturmak için:

    Araç kutusundaki ContextMenuStrip öğesine çift tıklayınız ya da formun üstüne



    sürükleyiniz. ContextMenuStrip öğesi formun üst kenarına yerleşir.

    Menü içerisinde olması gereken öğeleri, ana menüdeki gibi ekleyiniz.

    Eğer gerekiyorsa özellikler menüsünden bir olayı (event) seçiniz.

    İçerik menüsüyle ilişkilendireceğiniz kontrolü seçiniz. Özellikler



    penceresindeki ContextMenuStrip anahtarının sağında bulunan açılır liste kutusundan ilgili içerik menüsü öğesini seçiniz. Artık uygulamanızın çalışma anında (RunTime) ilgili kontrole sağ tık yaptığınızda hazırlamış olduğunuz

    içerik menüsü görünecektir.

    Kontroller için Olay Yönlendirici (Event Handler) Oluşturmak:

    Her kontrolün kullanıcı etkileşimine uygun bir olayı mevcuttur. En iyi bilinen örnek butonun click (tıklama)

    olayıdır. Butona tıklandığında program Buton.Click olayını çalıştırır ve hangi metodun uygulanacağına karar verir. Şayet birden fazla metot varsa bunlar çalıştırılır. Bu metotlar Event Handlers (Olay Yönlendiriciler) olarak isimlendirilir.

    Her kontrolün varsayılan bir olayı (event) vardır. Örneğin butonun

    varsayılan olayı Click iken CheckBox (seçme kutusu)’ın varsayılan olayı CheckChanged’dir. Kontroller değişik amaçlar için kullanılabilecek başka olaylara da sahiptir. Bu olayları oluşturmak için;

    • Tasarım ekranında Event Handler oluşturacağınız kontrolü seçiniz.

    • Özellikler ekranındaki Events butonuna tıklayınız. Mevcut Event’ler karşınıza gelecektir.

    • Hangi handler (yönlendirici)’ı uygulayacaksanız ona çift tıklayınız.

    • Code ekranında Handler eklemek için kontrolden sonra noktaya basarsanız karşınıza mevcut olaylar (şimşek ikonu bulunan seçenekler) listelenir. İlgili olayı buradan seçebilirsiniz.

    Örnek: textbox1 e veri girip tab tuşuyla ayrıldığımızda bir mesaj versin

    private void textBox1_Leave (object sender, LayoutEventArgs e)

    {

    MessageBox.Show("Textbox1 den ayrılıyorum");
    } Burada textbox nesnesinin “Leave” olayı yukarıda anlatılan şekilde oluşturuldu

    18.8.2015

    9.çekim

    ******************

    Tür dönüşümleri

    Daha önceki örneklerimizde de gördüğümüz gibi c# da çoğunlukla işlemler yapılırken tür dönüşümleri gerekiyor. Mesela neler yaptık;

    Textbox içindeki sayısal veriler üzerinde matematiksel işlemler yaparken veriyi sayısala dönüştürdük. Neden, çünkü textbox içindeki değerler string türden alınır demiştik. Ya da yine sayısal bir sonucu label’a yazdırırken string türe çevirdik.

    İşte bunlar gibi çoğu kez tür dönüşümleri yaptık ve bu dönüşümleri convert komutu ile yaptık. O halde bu ve bunun gibi tür dönüşüm yöntemlerine bi bakalım.

    • Convert metodu ile: örnek : Bir ürün satın aldık. Bu ürüne %10 kar payı koyarak. Satacağız. Ürünün yeni fiyatını hesaplatıp, Label’a yazdıran programı hazırlayınız

    Double fiyat, yeni_fiyat;

    fiyat = Convert.ToDouble(TxtFiyat.Text);

    yeni_fiyat = fiyat + (fiyat * 0.10);

    LblFiyat.Text = "Yeni Fiyat :" + yeni_fiyat;


    • Değişkenlerin tür metodları ile örnek:



    • Pars metodu ile: örnek




    HATA AYIKLAMA ARAÇLARI
    HATA TÜRLERİ

    1- Yazım hataları: Program içinde kullanılan fonksiyon adları, değişken adları, yapı isimleri ve

    komutların karakterlerinin yanlış yazımından meydana gelen hatalardır.

    Örneğin, MessageBox.Show yazılması gerekirken MessageBoxShow yazılırsa yazım

    hatası oluşur. Oluşan bu hata görev listesi (ErrorList) penceresinde görüntülenir.

    1. Çalışma zamanı hataları: Uygulamanın çalışması sırasında oluşan hatalardır.

    Örneğin, sıfıra bölme hatası bu tür hatalara bir örnektir.

    1. Mantıksal hatalar: Bu hatalar uygulama derlenirken ve yürütülürken oluşur.

    Bu durumda program çalışsa bile yanlış sonuç üretir. Örneğin, yaş bilgisi girilmesi istenen bir alana negatif değer girilemez ya da bir işçinin maaşı hesaplanırken haftada 50 saat yazılması gereken yere 150 saat yazılırsa program çalışır ancak sonuç doğru olmaz. Bu hata bir mantık hatasıdır.

    Breakpoint ve Breakpoints Penceresi

    Programın işleyişini istediğiniz bir noktada durdurmak ve değişkenlerin aldığı değerleri görmek için kod satırına Breakpoint

    (kesme noktası) ekleyebilirsiniz. Böylece program sizin işaret ettiğiniz kesme noktasında kod penceresine dönecek ve adım adım çalışacaktır

    Bir kod satırına Breakpoint eklemek için F9 kısayol tuşu ya da kod sayfasının en solundaki bölüme tıklanır Programın çalışmasını satır satır devam ettirmek için step over (F10) tuşu tuşlanır


    Output Penceresi

    Programın derlenmesi aşamalarının gösterildiği penceredir. Kısayol tuşu

    Ctrl+Alt+O’dur.

    Output penceresinde bulunan açılır liste kutusunda iki seçenek vardır. Bunlar Build ve

    Debug’dır.

    Açılır liste kutusundan Build seçildiğinde derlemeyle ilgili bilgiler görüntülenir.

    Debug seçildiğinde ise programı EXE haline dönüştürürken kullanılan dosyalar

    görüntülenir.
    Sayısal ve tarihsel kontrolleri TryPars ile gerçekleşitrmek


    1. Sayısal kontrol örneği:

    private void TxtTc_Leave(object sender, EventArgs e)

    {

    double result;

    if (double.TryParse(TxtTc.Text, out result))

    {

    //Eğer Textbox’un içinde sayısal bir değer varsa sonuç true dönecek ve işlem buraya düşecek, yoksa else den sonrası gerçekleşecek

    }

    else

    {

    MessageBox.Show("Lütfen sayısal bir değer giriniz");

    TxtTc.Text = "";

    TxtTc.Focus();
    }

    }



    1. Tarihsel kontol örneği:

    private void TxtDt_Leave(object sender, EventArgs e)

    {

    DateTime result;

    if (DateTime.TryParse(TxtDt.Text, out result))

    {

    //şart sağlandığında bir işlem gerçekleşmiyor

    }

    else

    {

    MessageBox.Show("Lütfen tarihsel bir değer giriniz");

    TxtTc.Text = "";

    TxtTc.Focus();
    }

    }


    Try-Catch Kullanımı

    En sık kullanılan hata ayıklama kod bloğudur. Oluşabilecek hatalar try bloğunda, hata

    durumunda işletilecek kodlar ise catch bloğunda yazılır. Hata olmaması durumunda catch

    bloğundaki kodlar çalıştırılmaz. Hata olması durumunda ise, hata oluşan kod satırından catch

    bloğuna kadar olan kod satırları işletilmez. Catch bloğundaki kod satırları işletilir.
    Try-Catch bloğu kullanım şekli şöyledir;

    Try

    {

    // Hata oluşturabilecek olan kodlar

    }

    catch

    {

    // Hata oluşursa işleyen kodlar

    }
    Örnek

    Bir öğrencinin üç notu text kutularından girilerek ortalaması hesaplanıp label’e

    yazdırılmak istenmektedir. Ancak kullanıcının not girişlerinde rakam yerine metin

    girmesi hataya sebep olmaktadır.

    private void button2_Click(object sender, System.EventArgs e)

    {

    int nt1,nt2,nt3;

    double ort;

    try

    {

    nt1=int.Parse(textBox1.Text);

    nt2=int.Parse(textBox2.Text);

    nt3=int.Parse(textBox3.Text);

    ort=(nt1+nt2+nt3)/3;

    LblOrt.Text=ort.ToString();
    }

    catch(Exception hata)

    {

    MessageBox.Show("Hata Meydana geldi\n"+hata.Message,"Dikkat");

    }

    }
    NOT: Not girişleri try bloğunda yapılmaktadır. Rakam yerine harf olarak not girildiğinde

    catch bloğu devreye girecektir. Catch bloğunda Exception sınıfının ürettiği hata mesajı

    hata” isimli bir değişkende tutulmaktadır. Oluşan hata MessageBox ile kullanıcıya



    gösterilecektir.

    Veri girişinde notlar düzgün olarak girildiğinde hata meydana gelmez

    Ancak rakam yerine yazıyla not girişi yapılırsa hata oluşacaktır. Mesaj kutusundaki

    ikinci satır sistemin hata mesajıdır

    Oluşabilecek birden fazla hata için farklı tipte catch bloğu kullanılabilir. Eğer hata

    herhangi bir catch bloğunda yakalanırsa diğer catch blokları işletilmez.
    Catch hata yakalama çeşitleri

    1. System.Exception Genel hata yakalama




    1. System.OutOfMemoryException Programın çalışması için yeterli bellek kalmadıysa fırlatılır.


    2. System.StackOverflowException Stack bellek bölgesinin birden fazla metot için kullanılması durumunda fırlatılır. Genellikle kendini çağıran metotların hatalı kullanılmasıyla meydana gelir.



    3. System.NullReferenceException Bellekte yer ayrılmamış bir nesne üzerinden sınıfın üye elemanlarına erişmeye çalışırken fırlatılır.



    4. System.OverflowException Bir veri türüne kapasitesinden fazla veri yüklemeye çalışılırken fırlatılır.



    5. System.InvalidCastException Tür dönüştürme operatörüyle geçersiz tür dönüşümü yapılmaya çalışıldığında fırlatılır.



    6. System.IndexOutOfRangeException Bir dizinin olmayan elemanına erişilmeye çalışılırken fırlatılır.



    7. System.ArrayTypeMismatchException Bir dizinin elemanına yanlış türde veri atanmaya çalışılırken fırlatılır.



    8. System.DividedByZero
      Sıfıra bölme yapıldığı zaman fırlatılır.



    9. System.ArithmeticException DividedByZero ve OverflowException bu sınıftan türemiştir. Hemen hemen matematikle ilgili tüm istisnaları yakalayabilir.



    10. System.FormatException Metotlara yanlış formatta parametre verildiğinde fırlatılır.



    Finally Kullanımı

    Hata oluşması durumunda işletilecek kod satırları yoksa programın kırılmasını

    engellemek için finally bloğu kullanılmalıdır. Finally bloğu hata olsada olmasa da çalışan bir

    bloktur.

    Finally bloğunun kullanım şekli şöyledir;

    Try

    {

    // Hata oluşturabilecek olan kodlar

    }

    finally

    {

    // Her koşulda çalışacak kodlar

    }
    Örnek

    Bir işçinin bir günde çalıştığı toplam saat ve bir saatlik ücreti text kutularından

    girilerek alacağı parayı hesaplatan program
    private void button3_Click(object sender, System.EventArgs e)

    {

    int toplam_saat,saat_ucreti;

    try

    {

    toplam_saat=int.Parse(textBox1.Text);

    saat_ucreti=int.Parse(textBox2.Text);

    textBox3.Text=Convert.ToString(toplam_saat*saat_ucreti);
    }

    finally

    {

    textBox1.Text="";

    textBox2.Text="";

    textBox1.Focus();


    }

    }

    Throw Kullanımı

    Throw hatayı fırlatma anlamına gelir. Bazı durumlarda hatalar bilerek oluşturulmak

    istenebilir. Bunun için, “throw” komutu kullanılır. “throw” ifadesinin kullanıldığı noktada

    program durarak istenilen istisnayı üretir.
    Örnek

    Tasarlanan formdaki tüm text kutularının zorunlu olarak doldurulması gerektiğiyle

    ilgili bir uygulamanız olsun. Tamam düğmesine tıklanınca tüm text kutularının doldurulup

    doldurulmadığı test edilsin. İlgili düğmenin Click() metodu aşağıdaki gibidir.
    private void button4_Click(object sender, System.EventArgs e)

    {

    string TcNo,Ads,VergiNo;

    TcNo=textBox1.Text;

    Ads=textBox2.Text;

    VergiNo=textBox3.Text;

    if ((TcNo=="") || (Ads=="") || (VergiNo==""))

    {

    try
    {

    throw new Exception();
    }
    catch (Exception)

    {

    MessageBox.Show("Bilgilerin tamamını girmelisiniz","Dikkat");

    }

    }
    else

    {

    MessageBox.Show("Bilgilerin tamamını girildi");

    }

    }

    For Döngüsü

    Bir işin birden fazla yapılması durumunda kullanılan döngü komutudur. Kullanımı
    For (Döngü başlangıç değeri; devam şartı ; artış değeri)

    {

    Şart sağlandığında yapılacaklar…..
    }

    Örnek1: 0-10 arası çift sayıların toplamını veren prg.

    int i;

    double tp=0;

    for (i = 0; i <=10; i+=2 )

    {

    tp+= i;
    }
    label1.Text = "sonuç : " + tp;

    Örnek2:29-1 arası tek sayıları listeletme

    int j;

    for (j = 29; j >= 1; j += -2)

    {

    lst1.Items.Add(j);
    }
    Diziler


    • Dizi tanımlama: int[] say = new int[10];  10 elemanlı bir dizi

    • Diziye değer aktarma (inputbox ile ve hata kontrolü ile)


    private void button3_Click(object sender, EventArgs e)

    {
    int k;

    int[] say = new int[10];
    for (k = 0; k < 10; k++)

    {

    int result;

    string ara;

    ara = (Microsoft.VisualBasic.Interaction.InputBox("dizinin " + (k + 1) + " . elemanı", "Bilgi girişi", "", 20, 20));

    if (int.TryParse(ara, out result))

    {

    say[k] = Convert.ToInt32(ara);
    }

    else

    {

    MessageBox.Show("Sayısal ifade girmediğiniz için program iptal edildi");
    break;


    }

    }

    Not: VisualBasic Metotlarını kullanmak için; “Project-Add Reference” menüsünden Microsoft.VisualBasic class ını projeye almak gerekir. Alınan bu class Solution Explorer da “References” listesinde görüntülenir

    Diziler tanımlanırken ilk değer aktarma: örnek:


    Çift Boyutlu Diziler:

    Tanımlama:

    public int[,] dizi1=new int [5,5];
    değer aktarma: çift boyutlu, ve 25 elemanlı yukarıdaki diziye, içteki döngünün değeri büyükse içteki, değilse dıştaki döngünün değerini aktaran prg. Parçacığı;
    private void Form1_Load(object sender, System.EventArgs e)

    {

    int i,j;

    for (i=0;i<5;i++)

    {

    for (j=0;j<5;j++)

    {

    if (j>i)

    dizi1[i,j]=j;

    else

    dizi1[i,j]=i;

    }

    }

    }

    Yazdırma : Yukarıda değer aktarılan dizi elemanlarını multiline özelliği true yapılan bir textbox a aktaran prg. Parçacığı;
    private void button1_Click(object sender, System.EventArgs e)

    {

    int i,j;

    for (i=0;i<5;i++)

    {

    for (j=0;j<5;j++)

    {
    textBox1.Text=textBox1.Text + (dizi1[i,j]);

    }

    textBox1.Text=textBox1.Text + "\r\n";
    \\ yukarıdaki satırda textbox içine yazılanların bir alt satırdan devam etmesi sağlanmıştır
    }
    }

    Module V konusu
    Class (Sınıf) Oluşturma

    1. Aynı form içinde yazılıp, çağrılması. (örnek: Açılan bir formun kod kısmında class yazmak)




      1. önce class ımızı yazarız;


    class deneme

    {

    public void mesaj()

    {

    MessageBox.Show("Gülcay KORKMAZ");
    }

    }



      1. Şimdi aynı form üzerine bir buton alıyoruz ve click event tan çağırıyoruz;

    private void button1_Click(object sender, System.EventArgs e)

    {

    deneme dn=new deneme();

    dn.mesaj();


    }

    NOT: yeni oluşturulan class’tan türetilen Nesne, class seviyesinde oluşturulsa bu class a bağlı tüm alt programlardan kendine bağlı olan alt programlar çağrılabilir. Örnek:

    public partial class Form1 : Form

    {

    mesaj_yazdir myy = new mesaj_yazdir();

    public Form1()

    Yukarıdaki myy nesnesi form1 üzerindeki tüm alt programlardan çağrılır.


    1. Bir formda yazılıp, Farklı formdan çağrılması( örnek form1 de yazılan deneme class ını form2 den çağırmak)




      1. önce class ımızı public tanımlama komutu ile oluşturuyoruz;


    public class deneme

    {

    public void mesaj()

    {

    MessageBox.Show("Gülcay KORKMAZ");
    }

    }


      1. Sonra Form2 ye gitmek için kodlarımızı yazıyoruz;


    private void button1_Click(object sender, System.EventArgs e)

    {

    Form2 frm2= new Form2();

    frm2.Show();
    }

      1. En son form2 den bu class ı çağırıyoruz (form2 deki bir buton click de);



    private void button1_Click(object sender, System.EventArgs e)

    {

    Form1.deneme dn1= new Form1.deneme();

    dn1.mesaj();
    }
    Not: Form seviyesinde oluşturulan bir class ın başka bir formda çağrılması için public komutu ile türetilmesi gerekir. Örnek:

    public class mesaj_yazdir

    {

    .



    . }
  • 1   2   3   4   5






        Ana sayfa


    Çalıştırmak için neye ihtiyacımız var programlama dili seçerek kodlamaya değil mi?

    Indir 425.5 Kb.