Arşiv

Bizler programlama öğrenmeye QBasic dili ile başladık. Programlamanın temellerini bu dil ile öğrendik diyebilirim. Microsoft'da çocukların ve programlamaya yeni başlıyanların ilk adımda kullanabilecekleri bir programlama dili üretmiş.

İçerisinde şimdilik 15 adet komut var.  Hatta bir de Turtle yani kaplumbağa sınıfı ve buna ait komutlar var ki evlere şenlik :) Bu sınıf ile ekranda bir kaplumbağa gezdirebilirsiniz.

Programı aşağıdaki linkten indirebilirsiniz:

http://msdn.microsoft.com/tr-tr/devlabs/cc950524(en-us).aspx

Etiketler : Etiket Yok
Kategoriler : Visual Basic
Yorumlar : 0 Yorum Yorum Yaz

Uzun bir aradan sonra sitenin yapısı ile de biraz ilgilendim ve siteye yorum eklentisini de kodladım. Artık makalelere yorumlar yazıp konular ile ilgili yorumlarınızı ya da anlaşılmayan noktaları yazabileceksiniz. Hayırlı olsun İnşaAllah.

Etiketler : Etiket Yok
Kategoriler : Diğer Konular
Yorumlar : 0 Yorum Yorum Yaz

Ölçümbilim (metroloji) bazılarının bildiği gibi bir şeyi nasıl doğru biliriz üzerine kurulu koca bir bilim dalı. Ölçüm çok önemli çünkü ölçemediğiniz şey üzerinde net fikir yürütemiyorsunuz. Net fikir yürütemediğiniz şey hakkında da karar alamıyorsunuz.

Yazılım projeleri de bundan muaf değil. Eğer bir yazılım projenizin nasıl gittiğini sorarlarsa ve iyi derseniz arkasından size neden bu yanıtı verdin diye sorabilirler. Bunun bir ölçümü olması gerekli. Elbette ki nihai ölçüm memnun müşterilerdir ama acaba aynı memnun müşterileri elde etmenin daha iyi bir yolu olamaz mı? İşte sayısal değerleri kullanarak proje yönetmek yada projelerin giderek daha iyi yürümesi için süreç iyileştirme yapmak gibi amaçlarınız olunca siz de eliniz mahkum bir şeyleri ölçmek durumundasınız.

Bu açıdan bakınca yazılım ölçümünü (İng. software metrics) bir yazılımın yada yazılım projesinin ölçebildiğimiz herhangi bir özelliği olarak tanımlayabiliriz. Örneğin ben yazılımcıların stres seviyesini ölçmek istesem - ki bu aslında uyku seviyesi, kandaki adrenalin, kan basıncı, nabız gibi tıbbi ölçümlerden çıkartabilecek bir şey - buna da "yumurta kapı indeksi" desem bu da bir ölçüm olacaktır.

Tabii yumurta kapı indeksini almak ne fayda sağlayacak sorusu ortaya çıkacak. Demek ki, bir ölçüm ancak bir şeye yararlı olacaksa alınmalı. Yani neyi ölçeceğimi düşünmekten önce neden ölçeceğimi düşünmek gerekli. Eğer yumurta kapı indeksine dayanarak bir karar alacaksak ve bu projeye yararlı bir işe yarayacaksa o zaman yumurta kapı indeksini ölçmek anlamlıdır.

Peki insanlar ne gibi şeyleri ölçmeyi anlamlı bulmuşlar? İlk akla gelen ölçümler şu türde ölçümler

  • Yazılan satır sayısı bir projenin büyüklüğü için geçerli bir ölçüm. Elbette bunu elma ile armutu karşılaştırmadan yapmak gerekli. Çünkü özellikle bileşen tabanlı çalışılan araçlarda, bir bileşenin nasıl kullanılacağını belirlemek, onun çevresi ile olan etkileşimini ayarlamak gibi işlemler çok fazla satır üretmese dahi çok fazla zaman alabiliyor. Bu nedenle bir Python projesinin satır sayısı ile bir diğer Python projesini karşılaştırmak anlamlı. Benzeri biçimde bir iş yazılımı bir diğer iş yazılımı, bir gömülü yazılım da bir başka gömülü yazılım ile karşılaştırılabilir. Bu ön kabulü yapmadan, satır sayısı (line of code - LOC) ölçümünü temel alan diğer ölçümleri tartışmak anlamını yitiriyor.
  • Satır sayısından sonra en çok tartışılan ama en çok referans alınan ikinci ölçüm de kodun karmaşıklığı üzerine. Kodun karmaşıklığı (İng. cyclomatic complexity) o kodun bakımının ne kadar zor olduğunu ortaya koyduğu için önemli. Karmaşıklığı yüksek kod parçalarını tespit edip daha sonra bunları daha anlaşılır ve daha kolay bakım yapılır kodlarla değiştirmek de önemli. Bu karmaşıklık oldukça karmaşık bir matematiksel teknik ile hesaplanıyor. Ancak bize çok basit bir sonuç veriyor. Bir kod parçasını test etmek için biribirinden bağımsız en az kaç test durumu (İng. test case) yazmamız gerektiğini bu karmaşıklık ölçümünden öğrenebiliriz. Elbette hiç bir ölçüm bize bu testlerin hangileri olduğunu söylemez yada iki testin bağımlılığını nasıl saptayacağımızı belirtmez. Ama en azından bir sayıyı elde etmiş oluruz.
  • Satır sayısından elde ettiğimiz bir diğer türetilmiş ölçüm de her bin satır (KLOC) başına düşen hata (bug) sayısıdır. Örneğin 100 KLOC uzunluğunda ve her KLOC başına tespit edilen 1.2 hata düşen bir projede 120 tane hata olduğunu anlamış oluruz. Burada önemli bir şey de bu sayının bir yerden sonra kestirilebilir olduğudur. Örneğin 80 KLOC uzunluğu için 1.2 hata bölü KLOC metriğini elde etmiş isek, ve projenin 120 KLOC'a büyüyeceğini de (başka bir şekilde) tahmin ediyorsak, o zaman geri kalan zamanda 120 - 96 = 24 tane daha hata olacağını tahmin edebiliriz. Bu da bizi bir anlamda hazır kılar.
  • Hazır hata demişken. Bir hata tespit edildiğinde onu düzeltmenin ne kadar zaman aldığı da önemli bir ölçüm olabilir. Buradaki zaman harcanan zaman değil, hatanın tespitinden kapatıldığının test edilerek onaylandığı zamana kadar geçen süreyi kast ediyoruz. Yani belki bir hatayı düzeltmek için yapılan iş 1 saat almıştır ama o 1 saatin gelmesi için 2 ay beklenmiş olabilir. Bu durumda hata 2 ay açık kaldığına göre, ortalama çıkartılırken de bu 2 ay göze alınmalıdır. Bu tür bir ölçümün o hatadan etkilenen insan sayısı, hatanın önemi gibi sayılarla çarpılarak ağırlıklandırılmış biçimde kullanılması da mümkün olabilir. Ama benim gördüğüm hata takip sistemleri düz zaman ortalamasını veriyor.
  • Hatanın kapatıldığının onaylanması demişken test sözcüğünü kullandım. Madem test yapıyoruz, acaba testler toplam geliştirme zamanının ne kadarını alıyor? Bunu ölçebilir miyiz? Örneğin bir sistemin entegrasyon ve kabul testlerini işletmek 12 saat alıyorsa ve bu süre pek de inecek gibi değilse o zaman bizim için günlük inşa almak anlamlı olmaz. Çünkü işin felsefesi gereği günlük inşa, her gün alınır ve kabul testinden geçer. O zaman haftalık inşa almaya karar verebiliriz. Bakın bir ölçümü kullanarak bir karar verdik.
Böyle bir çok ölçüm üretmek mümkün.

Benim için önemli bir ölçüm de ölçüm yapmanın maliyeti ile ölçüm yaparak kazanılanların oranı. Eğer bu oran 1'den küçükse, maliyetin, faydadan az olduğunu görüyoruz. Bu da ölçüm yaparak kazanç elde ettiğimizi gösteriyor. Eğer bu oran 1'den büyükse, bu sefer acaba ölçüm yapmasak ne olurdu sorusunu sormak mümkün.

Hemen kısaca özgür yazılımlara değinecek olursak durum nedir? Sourceforge gibi siteler, aslında özgür yazılım projelerine çeşitli ölçüm becerileri veriyorlar. Ancak bu becerilerin ne derece kullanıldığından emin değilim. Apache projeleri gibi daha sağlam yürütülen projelerde ise ölçüm alınması ve değerlendirilmesi rutin bir iş. Yani bir heterojenlik söz konusu. Öte yandan ticari yazılım projelerine baktığımız zaman da kapalı kapılar ardında kimin ne derece ölçüm yaptığı da tartışılır.

Kaynak: Bora Güngören

Etiketler : Etiket Yok
Kategoriler : Diğer Konular
Yorumlar : 0 Yorum Yorum Yaz

Kopyalama ve taşıma işlemlerinde şu metodlar kullanılabilir:

 

Hücre içeriğini kopyalamak için

Excelnesnesi.Range("Kaynak Sütun:Kaynak Satır").Copy(Excelnesnesi.Range("Hedef Sütun :Hedef Satır"))

Şeklinde bir yöntem kullanılır. 

 

Hücre içeriğini taşımak için

Excelnesnesi.Range("Kaynak Sütun:Kaynak Satır").Cut(Destination:= Excelnesnesi.Range ("Hedef Sütun :Hedef Satır"))

Şeklinde bir yöntem kullanılır. 

 

İşlemler bittikten sonra hafızayı temizlemek için

        Excelnesnesi.CutCopyMode = False

Şeklinde bir komut satırı kullanılır.

 

Hücre, satır, sütun kopyalama ve taşıma işlemlerine dair örnek uygulama yapalım Form üzerine bu işlemler için kullanacağımız cmdhucrekopyala, cmdsatirkopyala, cmdsutunkopyala, cmdsayfayakopyala, cmdhucretasi adıyla 5 adet komut butonu ekliyoruz. Kodumuz da şu şekilde olacak:

 

Public Class Form1

    Dim xl

    'Excell nesnesi tanımlıyoruz

    Dim range

    'Range nesnemizi tanımlıyoruz

    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

        'Excel nesnesini oluşturuyoruz

        xl = CreateObject("Excel.Application")

        'Yeni bir çalışma kitabı ekliyoruz

        xl.Workbooks.add()

        'Excel sayfasını görüntülüyoruz

        xl.application.visible = True

        '1 nolu çalışma sayfasını aktif ediyoruz            

        xl.worksheets(1).Activate()

        'A1 hücresine değer yazıyoruz       

        xl.cells.Range("$A$1") = "15"

        xl.cells.Range("$A$2") = "20"

        xl.cells.Range("$B$1") = "25"

        xl.cells.Range("$B$2") = "30"

    End Sub

    Private Sub satirkopyala_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles satirkopyala.Click

        '1 nolu satırı 4 nolu satıra kopyaladık

        xl.Range("1:1").Copy(xl.Range("4:4"))

    End Sub

   

    Private Sub hucrekopyala_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles hucrekopyala.Click

        'A1 hücresini E4 hücresine kopyaladık

        xl.Range("$A$1").Copy(xl.Range("$E$4"))

    End Sub

 

    Private Sub sutunkopyala_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles sutunkopyala.Click

        'A sütununu F sütununa kopyaladık

        xl.Range("A:A").Copy(xl.Range("F:F"))

    End Sub

 

    Private Sub hucretasi_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles hucretasi.Click

        'A1 ve B1 hücrelerini keserek D1 hücresine taşıyoruz

        xl.range("A1" & ":B" & 1).Cut(Destination:=xl.range("D" & 1))

        'clipboard'u temizleyelim

        xl.CutCopyMode = False

    End Sub

 

    Private Sub cmdsayfayakopyala_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdsayfayakopyala.Click

        Dim i

        '1 nolu satırdaki 10 sütun içerisinde arama yaparak hücre             

        ‘içerisindeki değer 10'dan büyük ise 2 nolu çalışma

        ‘sayfasına kopyalıyor

        For i = 1 To 10

            If CInt(xl.cells(i, 1).value) > 10 Then

                xl.rows(i & ":" & i).copy(xl.worksheets(2).range(i & ":" & i))

            End If

        Next i

    End Sub

End Class

 

Proje dosyamızın linki:

http://www.volkanaktas.com/PrgDosya/vba/excelkopyalatasi.rar

Etiketler : VB.Net VBA Excel
Kategoriler : VB.Net VBA
Yorumlar : 0 Yorum Yorum Yaz

Arama
  Ara
Takvim
<September 2010>
SMTWTFS
2930311234
567891011
12131415161718
19202122232425
262728293012
3456789
Tag Bulutu