Class Deneme
Shared Sub Main()
Dim Yil As Integer
System.Console.Write("Hangi Yıldayız : ")
Yil = System.Console.Read()
System.Console.WriteLine()
System.Console.Write("Girdiğiniz Yıl :")
System.Console.WriteLine(yil)
End Sub
End Class
Class Deneme
Shared Sub Main()
Dim Yil As Integer
System.Console.Write("Hangi Yıldayız : ")
Yil = System.Console.ReadLine()
System.Console.WriteLine()
System.Console.Write("Girdiğiniz Yıl :")
System.Console.WriteLine(yil)
End Sub
End Class
Visual Studio veya Visual Basic için geliştirilen Express Edition ile çalışırken ayarlama yapıp derleyicinin ileride çıkması muhtemel olan bu sorunlara derleme sırasında engel olabilirsiniz. Kafanızı karıştırmamak için DOS penceresinde derleme yaparken derleyicinin bu tip hataları nasıl yakaladığından söz etmeyeceğim. Ayrıca Visual Basic derleyicisinin yukarıda verdiğim kodu derlerken hata vermek üzere ayarlandığını varsayacağım.
Class Deneme
Shared Sub Main()
Dim Str As String
System.Console.Write("Hangi Yıldayız : ")
Str = System.Console.ReadLine()
System.Console.WriteLine()
System.Console.Write("Girdiğiniz Yıl :")
System.Console.WriteLine(Str)
End Sub
End Class
Şimdi bu örnekte değişiklik yapıp kullanıcıdan 2 sayısal bilgi isteyip bunları birbirleri ile çarptıktan sonra sonucu ekrana yani konsola yazacağım. Bu düşünce ile önce 2 String değişken tanımlayıp ReadLine() metodu ile okunan bilgileri bu değişkenlere aktardım.
Class Deneme
Shared Sub Main()
Dim Str1 As String
Dim Str2 As String
Dim Sayi1 As Integer
Dim Sayi2 As Integer
System.Console.Write("İlk sayıyı girin : ")
Str1 = System.Console.ReadLine()
System.Console.Write("İkinci sayıyı girin : ")
Str2 = System.Console.ReadLine()
Sayi1 = System.Int16.Parse(Str1)
Sayi2 = System.Int16.Parse(Str2)
End Sub
End Class
Hemen hatırlatmada bulunmak isterim: Her ne kadar bu örnekte kullanıcıya sayı girin mesajı verilmiş olsa bile kullanıcı sayılsal bilgi yerine karaktersel bilgi girerse Parse() metodu dönüştürme yapamayacağı için hata meydana gelir. Bu tip muhtemel hataların önene geçmek için hata kontrol blokları hazırlanır.
Bu şekilde konsoldan girilen bilgileri Parse() metodu ile integer tipindeki değişkenlere aktardıktan sonra matematiksel işlem yapabiliriz. Matematiksel işlem sonucu bulunacak değeri aktarmak üzere 3. bir integer değişken tanımladım.
Class Deneme
Shared Sub Main()
Dim Str1 As String
Dim Str2 As String
Dim Sayi1, Sayi2, Sonuc As Integer
System.Console.Write("İlk sayıyı girin : ")
Str1 = System.Console.ReadLine()
System.Console.Write("İkinci sayıyı girin : ")
Str2 = System.Console.ReadLine()
Sayi1 = System.Int16.Parse(Str1)
Sayi2 = System.Int16.Parse(Str2)
Sonuc = Sayi1 * Sayi2
End Sub
End Class
Ayrıca String bilgileri Int16 sınıfının Parse() metodu ile dönüştürdüğümüz için konsoldan girilen sayılar 32767’den büyük olmamalı. Int16 sınıfının Parse() metodu yerine Int32 sınıfının Parse() metodunu kullansaydım 1. veya 2. sayı 2147.483.647 gibi büyük bir değer olabilirdi.
Çarpma işlemi sonucu bulunan değeri WriteLine() metodu sayesinde direk konsola yazmak mümkün olmasına rağmen amacım bazı konuları anlatmak olduğu için üçüncü bir String değişken tanımlayıp çarpma işlemi sonucu bulunan değeri dönüştürüp bu değişkene aktardım. Bu işlemi nasıl yaptığımı aşağıda görebilirsiniz.
Class Deneme
Shared Sub Main()
Dim Str1 As String
Dim Str2 As String
Dim Sonuc_str As String
Dim Sayi1, Sayi2, Sonuc As Integer
System.Console.Write("İlk sayıyı girin : ")
Str1 = System.Console.ReadLine()
System.Console.Write("İkinci sayıyı girin : ")
Str2 = System.Console.ReadLine()
Sayi1 = System.Int16.Parse(Str1)
Sayi2 = System.Int16.Parse(Str2)
Sonuc = Sayi1 * Sayi2
Sonuc_str = System.Convert.ToString(Sonuc)
End Sub
End Class
Class Deneme
Shared Sub Main()
Dim Str1 As String
Dim Str2 As String
Dim Sonuc_str As String
Dim Sayi1, Sayi2, Sonuc As Integer
System.Console.Write("İlk sayıyı girin : ")
Str1 = System.Console.ReadLine()
System.Console.Write("İkinci sayıyı girin : ")
Str2 = System.Console.ReadLine()
Sayi1 = System.Int16.Parse(Str1)
Sayi2 = System.Int16.Parse(Str2)
Sonuc = Sayi1 * Sayi2
Sonuc_str = System.Convert.ToString(Sonuc)
System.Console.WriteLine("Sayıların çarpımı : " + sonuc_str)
System.Console.Write("Devam etmek için bir tuşa basın")
System.Console.Read()
End Sub
End Class
Biraz da Namespace’lerden Söz Edelim
Class Sinif_1
Shared Sub Main()
System.Console.Write("Fenerbahçe Basketbol Takımı")
System.Console.ReadLine()
End Sub
End Class
.NET Framework adı verilen sınıf kitaplığı ile gelen sınıfların Namespace adı verilen yapılarda saklandığını biliyorsunuz. Visual Basic programlarında kullanmak istediğiniz Class hangi Namespace’in içinde yer alıyorsa o Namespace’ı Imports deyimi ile koda dahil etmelisiniz veya yukarıda yapıldığı gibi kullanmak istediğiniz Namespace’in adını metodun önüne her seferinde yazmalısınız.
DOS penceresi ile ilgili Console sınıfı System adlı Namespace’te yer aldığı için Write() metodundan önce bu Namespace’in adını yazdım. Söz konusu Namespace’teki sınıfları programınızda çok kez kullanıyorsanız her seferinde Namespace’in adını bu şekilde yazmak yerine aşağıda yapıldığı gibi ilgili Namespace’i Imports deyimi ile koda dâhil edebilirsiniz.
Imports System
Class Sinif_1
Shared Sub Main()
Console.Write("Fenerbahçe Basketbol Takımı")
Console.ReadLine()
End Sub
End Class
Visual Basic programlarınızda .NET Framework ile gelen Namespace’lerdeki hazır sınıfları kullanmanın ötesinde kendi hazırladığınız class’ları bir Namespace’in içine koymanız gerekir. Yukarıda bunu yapmamış olmamıza rağmen herhangi bir hata meydana gelmedi. Çünkü programcı yazdıklarını bir Namespace’e yerleştirmediği zaman Visual Basic derleyicisi kendiliğinden bir Namespace hazırlamaktadır. Şimdi yukarıda verdiğim programdaki “Sinif_1” adını verdiğim Class’ı bir Namespace’e dahil edeceğim.
Imports System
Namespace SDN
Class Sinif_1
Shared Sub Main()
Console.Write("Fenerbahçe Basketbol Takımı")
Console.ReadLine()
End Sub
End Class
End Namespace
Bu dersleri Visual Basic ve nesneye yönelik programcılık konusunda yeni olanları düşünerek kaleme aldığım için yukarıda verdiğim kısa kodu ve bold yapılan açıklama karşısında şaşırılması normaldir. Bu düşünce ile aşağıda farklı renge boyanan paragrafı kaleme aldım.
Birden Fazla Main() Metodu
Imports System
Class Sinif_1
Shared Sub Main()
Console.Write("Program İlk sınıftaki Main ile başladı")
Console.ReadLine()
End Sub
End Class
Class Sinif_2
Shared Sub Main()
Console.Write("Program İkinci sınıftaki Main ile başladı")
Console.ReadLine()
End Sub
End Class
Write ve WriteLine Metotları
Imports System
Class Sinif_1
Shared Sub Main()
Console.Write("Fenerbahçe")
Console.Write("Galatasaray")
Console.Write("Beşiktaş")
Console.Write("Trabzonspor")
Console.ReadLine()
End Sub
End Class
Bu bilgilerin ayrı satırlara yazılmasını sağlamak için Write() yerine WriteLine() metodunu kullanabilirsiniz. WriteLine() metodu kendisine parametre olarak verilen bilgiyi belirtilen ortama (burada konsol) yazdıktan sonra imleci bir sonraki satırın başına alır.
Imports System
Class Sinif_1
Shared Sub Main()
Console.WriteLine("Fenerbahçe")
Console.WriteLine("Galatasaray")
Console.WriteLine("Beşiktaş")
Console.WriteLine("Trabzonspor")
Console.ReadLine()
End Sub
End Class
Yazan: Memik Yanık
SDN – http://shiftdelete.net