Dog ru Uzunlug u ve Çember Çapı OÖ lçu mu Uygulaması Uygulama Bu uygulama, form nesnesi üzerinde, sol ve sağ fare tıklamaları ile belirlenen iki nokta arasındaki doğru parçasının çizilmesi, uzunluğunun hesaplanması ve bu yolla, bilgisayarın rastgele olarak çizdiği bir çemberin çapının belirlenmesi üzerinedir. İki Noktadan Geçen Doğrunun Uzunluğu Apsisleri ve ordinatları (farklı) bilinen iki nokta arasındaki doğru parçasının uzunluğu d aşağıdaki gibi hesaplanır: d = (x 1 x 2 ) 2 + (y 1 y 2 ) 2 Örneğin, A(1,2) ve B(3,1) noktaların arasındaki doğrunun uzunluğu; olarak hesaplanır. d = (1 3) 2 + (2 1) 2 = 4 + 1 d 2,2361 Program Yapısı Bilgi Girişi x1, y1, x2, y2 İşlem d Uzaklığı Bilgi Çıkışı d Uzaklığı Akış Şeması Uygulamanın algoritması öğrenciye bırakılmıştır. Akış şemasından yararlanılarak rahatlıkla oluşturulabilir. Şekil 1. Doğru uzunluğu hesaplaması için akış şeması Bilgi Girişi İşlem Bilgi Çıkışı
Grafiksel Kullanıcı Ara Yüzü (GUI) Tasarımı Şekil 2. Doğru Uzunluğu ve Çember Çapı Ölçümü Uygulaması için form tasarımı Tablo 1. Doğru Uzunluğu ve Çember Çapı Ölçümü Uygulaması için ara yüz tasarım bilgileri Nesne Özellik Değer Düzenleme Türü Nerede Tasarım Anı.Name Form1 Form (Design-Time).Caption Daire Uzunluğu ve Çember Tasarım Anı Command Button.Name Command1 Tasarım Anı.Caption d Uzunluğu Tasarım Anı Command Button.Name Command2 Tasarım Anı.Caption Çember Çiz Tasarım Anı Command Button.Name Command3 Tasarım Anı.Caption Çember Özellikleri Tasarım Anı.Name Text1 Tasarım Anı TextBox.Text Tasarım Anı Özellikler Penceresi.Name Text2 Tasarım Anı TextBox.Text Tasarım Anı TextBox.Name Text3 Tasarım Anı.Text Tasarım Anı.Name 1 Tasarım Anı.Caption X Tasarım Anı.Name 2 Tasarım Anı.Caption Y Tasarım Anı.Name 3 Tasarım Anı.Caption d Tasarım Anı
Nesne Özellik Değer Düzenleme Türü Nerede.Name 1 Değiştirilemez Çalışma Anı.Caption Mx (Run-Time).Name 2 Değiştirilemez Command3_Click Olayı.Caption My Çalışma Anı.Name 3 Değiştirilemez.Caption r Çalışma Anı Kullanılan Hazır Fonksiyonlar Bu uygulamada karekök işlemini yerine getiren sqr ve rastsal sayı üretme işlemini yapan rnd hazır fonksiyonundan yararlanılmıştır. Genel kullanımı aşağıdaki tablolarda verilmiştir. Fonksiyon Tanım Yazım Örnek Tablo 2. Sqr Fonksiyonu Sqr Sıfırdan (0) büyük veya eşit çift duyarlıklı (double) bir sayının karekök değerini, çift duyarlıklı olarak döndürür. Sqr(değer), Sqr(değişken) Komut x=sqr(4) x=4 y=sqr(x) Sonuç 2 2 Alternatif Komut x=4^(1/2) Fonksiyon Tanım Yazım Örnek Tablo 3. Rnd Fonksiyonu Rnd Sıfırdan (0) büyük veya eşit, birden (1) küçük tek duyarlıklı (single) rastgele bir sayı döndürür. Çekirdek değer verilmez ise rastgele sayı üretme sürecinde bir sonraki değeri döndürür. Sıfır (0) değeri verilirse, en sık üretilen değeri verir. Sıfırdan (0) büyük değerler için rastgele sayı üretme sürecinde bir sonraki değeri döndürür. Sıfırdan (0) küçük değerler için her seferinde aynı sayıyı üretecektir. Rnd(), Rnd(çekirdek_değer), Rnd(değişken) x=4 Komut x=rnd() y=rnd(x) Sonuç 0.7055475 0.7055475 Kullanılan Metotlar Bu uygulamada grafik çizim metotlarından yararlanılmıştır. Bunlar sırası ile doğru ve çember çizimi yapan Line ve Circle metotlarıdır. Bu metotlar, uygulama örneğimizde olduğu gibi form nesnesinde ve grafik gösterme kabiliyetine sahip bazı nesnelerde (PictureBox, vb.) kullanılabilir. Genel kullanımları aşağıdaki tablolarda verilmiştir. Tablo 4. Line Metodu Metot Line Tanım Koordinatları verilmiş iki nokta arasında doğru çizer. Yazım nesne_adı.line (x1, y1) (x2, y2) [, renk] Örnek Form1.Line (x1, x2) (x2, y2); Picture1.Line (0, 100) (100, 200)
Tablo 5. Circle Metodu Metot Circle Tanım Koordinatları verilmiş noktayı merkez noktası olarak kabul eden, r yarıçaplı çember çizer. Yazım nesne_adı.circle (x, y), çap [, renk] Örnek Form1.Circle (x, y), r; Picture1.Line (0, 100), 100 İlgili metotların yazımında [] içinde verilen ekler zorunlu olmayan eklerdir. Örneğin, Line metodunda renk bilgisi verilmediğinde, metodu kullanacak olan nesnenin ForeColor özelliğinde belirlenmiş olan renk kullanılacaktır. Uygulama örneğimizde, Form nesnesinin ForeColor özelliğinde siyah renk belirlendiği için, siyah renkli doğru ve çember çizilmektedir. Kullanılan Olay Yordamları Bu uygulamada Click ve MouseDown olay yordamlarından yararlanılmıştır. Click olayı, kullanıcı herhangi bir fare butonuna tıklaması durumunda ortaya çıkan bir olaydır. CheckBox, CommandButton, ListBox veya OptionButton nesnelerinde sadece sol fare butonu ile ortaya çıkan bir olaydır. MouseDown olayı ise, kullanıcının herhangi bir fare butonuna basması durumunda ortaya çıkar, bastığı butonu bıraktığında ise MouseUp olayı meydana gelir. MouseDown olayının genel kullanım şekli aşağıdaki tabloda verilmiştir. Olay Button Shift Parametre X Y Tablo 6. MouseDown Olay Yordamı Tanım MouseDown Olaya neden olan fare butonunu tanımlayan tam sayı değeri döndürür. Olaya neden olan fare butonuna basılması anında klavyedeki SHIFT, CTRL ve ALT tuşlarının durumunu tanımlayan tam sayı değeri döndürür. Olaya neden olan fare butonunun basılması anında fare imlecinin gösterdiği noktanın, tek duyarlıklı X koordinat değerini döndürür. Olaya neden olan fare butonunun basılması anında fare imlecinin gösterdiği noktanın, tek duyarlıklı Y koordinat değerini döndürür. Alabileceği Değer Sol: 1, Sağ: 2, Orta: 4 Shift: 1, Ctrl: 2, Alt: 4 Olayı kullanan nesnenin boyutları ile sınırlıdır. Uygulama örneğimizde mesela, iki noktayı belirlemek için sol ve sağ tıklamalar yerine, birinci noktayı sadece sol tıklama ve ikinci noktayı ise ALT tuşuna basılı iken sol tıklama ile belirlemek istediğimizi düşünelim. O zaman kaynak kodumuzdaki If-ElseIf-End If yapısında ElseIf ile yapılan sorgulamada hem Button hem de Shift parametresinin aldığı değerleri sorgulamamız gerekecekti. Bu olay yordamı ile ilgili farklı kullanım şekillerini, Çalışma Önerileri başlığı altında bulabilirsin.
Kaynak Program Şekil 3. Doğru Uzunluğu ve Çember Çapı Ölçümü Uygulaması için kaynak program Hedef Program Çıktısı Şekil 4. Uygulamanın ilk çalışma anı
Şekil 5. Doğru çizimi (Form_MouseDown) Şekil 6. Doğru uzunluğu hesaplaması (Command1_Click)
Şekil 7. Çember çizimi (Command2_Click) ve çap ölçümü (Form_MouseDown) Şekil 8. Programın çember için belirlediği değerleri göstermesi (Command3_Click)
Çalışma Önerileri 1. Çember Özellikleri butonu (Command3) ile değiştirilen 1, 2 ve 3 ün Caption özelliğini, d Uzunluğu butonu (Command1) tekrar tıklandığında ilk haline dönecek şekilde yeniden düzenlemeye çalışınız. 2. MoveDown olayının parametrelerinden olan Shift parametresini de kullanarak, ilk nokta tıklamasını sadece sol tıklama yaparak, ikinci nokta tıklamasını ise ALT tuşuna basılı sol tıklama yaparak belirlemeye çalışınız. İPUCU: Sadece sol tıklama için Button=1 ve Shift=0, sol tıklama esnasında ALT tuşunun basılı olup olmadığını sınamak için Button=1 ve Shift=4 ise sorgulaması yapılmalıdır. /