Bir yazılımcının ilk ödevi: Hesap Makinesi

Yağız Gönüler tarafından yayınlanmıştır 13. Ağustos 2008 13:50

Yıl 2002. Visual Studio .Net, Framework ve dilleriyle tanıştığım yıl. İlk yaptığım programlardan biri. Daha doğrusu ödev demeliydim. Yeni başlayanlar için çok ideal..

Program hususunda çok açıklama yapmıycam zira kod açıklamaları zaten satırların arasında yazılı olacak. Yalnız bir windows programı olduğunu, başlıktan da anlaşıldığı gibi visual basic .net ile yazıldığını ve çalışması için .net framework’ün bilgisayarınızda yüklü olması gerektiğini belirtmek isterim.

Programın tasarımı aşağıda gördüğünüz gibi;


Textbox ve Button kontrolleri dışında hiçbirşey yok. Aşağıda kodlar yer almakta. Çok iyi takip ederseniz ilk okuyuşunuzda anlamanız mümkün. Açıklamalarıda sürekli olarak altlarında olacak. Kolay gelsin..

   
'formun load, yani açılış esnasında gerçekleştirilen eylemleri burada

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

        'd isminde bir değişken tanımladım

        'bu değişkenin tipi double yani tam,kesirli ve ondalık sayılarıları tanimlayabiliyor

        Dim d As Double

        'bir for döngüsü kurdum

        'bu döngü formun açılışın saydamdan belirgine olmasını sağlayacak

        For d = 0 To 1 - 0.1 Step +0.1

            'd'nin degerini 0 olarak tanimladim

            'her 0.1'lik artışta sistemi 5 salise durduruyorumki saydamlık anlaşılsın

            System.Threading.Thread.Sleep(50)

            'burada uygulama 2 iş birden yapabilir hale geliyor

            Application.DoEvents()

            'opacity yani saydamlık derecesini d değişkenine atadım

            Me.Opacity = d

            'programı yeniledim

            'böylece program açılırken en saydamdan en donuk hale geldi

            Me.Refresh()

        Next d

    End Sub

    '3 tane değişken tanımladım

    'islemsecildi değişkeni boolean(evet/hayır) olarak seçtim ve

    'varsayılan olarak "hayır" değerini verdim

    Private islemsecildi As Boolean = False

    'sayi değişkenine sayı değerlerini tutması için double değeri verdim

    Private sayi As Double

    'islem degiskenine metin degeri tutacagi icin string degeri verdim

    Private islem As String

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click, Button2.Click, Button3.Click, Button4.Click, Button5.Click, Button6.Click, Button7.Click, Button8.Click, Button9.Click, Button10.Click

        'üzerinde rakam yazan tüm buttonlardan herhangi birine tıklandığında

        'yapılacak işlemleri belirtiyoruz

        If Not islemsecildi Then

            txtsayi.Text &= sender.text

        Else

            'islemsecildinin degeri varsa

            'sayı olarak senderdaki sayıyı atıyoruz

            txtsayi.Text = sender.text

            'daha sonra tekrar islemsecildiyi false olarka belirtiyoruz

            'yani ilk haline döndürüyoruz

            islemsecildi = False

        End If

    End Sub

Private Sub btncarp_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btncarp.Click, btnbol.Click, btncikar.Click, btntopla.Click

        'çarp, böl, topla yada çıkar buttonlarına basıldığında

        'islem değişkeni çağrımızı yapacağımız sendera işi gönderecek

        islem = sender.text

        'bunu bir try catch kontrolüyle gerçekleştiriyoruz

        Try

            'sayımız, textboxda yazan sayı

            sayi = txtsayi.Text

            'boolean değerli işlemsecildi değişkenimize evet değeri atıyoruz

            islemsecildi = True

        Catch ex As Exception

            'işlem yapıldığında aksi bir durum oluşursa hata mesajı yayınlanacak

            MsgBox("Sayı düzgün formatta girilmedi")

        Finally

            'son olarak işlem düzgün olarak tamamlandığında

            'sayı yazan yer ve sayı hafızası temizlenecek

            txtsayi.Text = ""

            txtsayi.Focus()

        End Try

    End Sub

   

Private Sub btnesit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnesit.Click

        'üzerinde eşittir yazılı buttona basıldıktan sonra bir select case döngüsüyle

        'eşittirden önce çarpı denildiyse çarpıcak, bölü dediyse bölünecek vs..

        Select Case islem

            Case "*"

                sayi *= txtsayi.Text

            Case "/"

                sayi /= txtsayi.Text

            Case "-"

                sayi -= txtsayi.Text

            Case "+"

                sayi += txtsayi.Text

        End Select

        'döngü bittiğinde sayı, textboxa yazdırılacak

        txtsayi.Text = sayi

    End Sub

   
Private Sub btntemizle_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btntemizle.Click

        'üzerinde c yazan temizle butonuyla hem textboxı boşaltıyoruz

        'hemde hafızadaki sayıyı sıfırlıyoruz

        sayi = 0

        islemsecildi = False

        txtsayi.Text = ""

        txtsayi.Focus()

End Sub

Private Sub Button17_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnkapa.Click

        'kapat buttonuna tıklandığında nasıl form açılırken en saydamdan

        'en donuğa geliyorsa bundada aynısı oluyor

        'dolayısıyla kod açıklamalarını tekrar yazmıyorum

        Dim d As Double

        For d = 1 To 0 + 0.2 Step -0.2

            System.Threading.Thread.Sleep(50)

            Application.DoEvents()

            Me.Opacity = d

            Me.Refresh()

        Next d

        'burada programı kapatıyoruz

        Environment.Exit(0)

    End Sub






Private
Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown

        'programın güzel özelliklerinden biri mouse kullanmadan da rakamların girilebileceği

        'ancak numpad değerlerinin sadece pclerde çalışacağını, laptoplarda olmayacağını belirteyim

        Select Case e.KeyCode

            'klavyeden 0'a basıldığında textboxa rakamı yazacak

            'diğer tuşlalarda da aynı işlem gerçekleşecek

            Case Keys.NumPad0

                txtsayi.Text = 0

            Case Keys.NumPad1

                txtsayi.Text = 1

            Case Keys.NumPad2

                txtsayi.Text = 2

            Case Keys.NumPad3

                txtsayi.Text = 3

            Case Keys.NumPad4

                txtsayi.Text = 4

            Case Keys.NumPad5

                txtsayi.Text = 5

            Case Keys.NumPad6

                txtsayi.Text = 6

            Case Keys.NumPad7

                txtsayi.Text = 7

            Case Keys.NumPad8

                txtsayi.Text = 8

            Case Keys.NumPad9

                txtsayi.Text = 9

        End Select

    End Sub

End Class

Bundan sonraki makalem yine bir yazılımcının ilk ödevleri arasında yer alan bir program olacak.

Bu yazıyı ilk değerlendiren siz olun

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Etiketler:

Articles | Software | Windows

Yorumlar

Yorum ekle


(Gravatar simgesini gösterecek)  

  Country flag

biuquote
  • Yorum
  • Canlı önizleme
Loading





Bu site BlogEngine.NET 1.4.5.0 ile oluşturulmuştur. Türkçe çevirisi BlogEngine TR ekibi tarafından yapılmıştır.
Sitedeki kod ve tasarım değişiklikleri ise Yağız Gönüler tarafından geliştirilmiştir.
2008 © www.yagizgonuler.com

Şifahen değil acilen!

Anket

Yazılım geliştirirken en keyif aldığınız alan hangisi?




Sonuçlar

Son Yorumlar

Comment RSS

Calendar

<<  Ocak 2009  >>
PaSaÇaPeCuCuPa
2930311234
567891011
12131415161718
19202122232425
2627282930311
2345678

Yazıları geniş takvimde göster

Ne Dinliyorum?

Kirpi - TearDrop (7 saat önce)
Kirpi - My Name Is Kirpi (7 saat önce)
Kirpi - The Song (7 saat önce)
Kirpi - Spell (7 saat önce)
Huseyin Karadayi - Bonus Track Funk Clarinet (String Mix) (7 saat önce)
Huseyin Karadayi - Sacred Gate (7 saat önce)
Huseyin Karadayi - Exotica (7 saat önce)
Huseyin Karadayi - Take Me Away / No Time To Waste (Vocal By Melis Sökmen) (7 saat önce)
Huseyin Karadayi - Eyes Don't Lie (Duet By Enoi & Funky C) (7 saat önce)
Huseyin Karadayi - This Way (Usy Groove) (7 saat önce)

Ne Okuyorum?


Haftanın Sözü


"Sukûnetim asaletimdendir;
Lâkin her lâfa verilecek bir cevabım var.
Bir bakarım lâf lâfmı diye,
Birde bakarım söyleyen adammı diye.."

Mevlânâ Celaleddin-i Belhi Rumi
(1207-1273)

Adanmış Hayatlar

"Zaten aşklar hep yalan dolan,
Sonu hep acı hüsran.
Bize her sevdadan geriye kalan
Sadece Galatasaray..
"

Son Dakika

İstanbul'da Hava

ISTANBUL

Ziyaretçi Sayısı

Ziyaretçi Sayısı