© Copyright by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 1 Outline 7.1 Uygulamanın tanıtımı 7.2 Algoritmalar 7.3Kontrol yapıları 7.4 if Yapısı 7.5 if…else Yapısı 7.6 Maaş hesaplama uygulamasınının oluşturulması 7.7 Atama operatörleri 7.8 Metin formatlama 7.9 Debugger Kullanımı: Watch Ekranı Tutorial 7 – Maaş Hesaplama Uygulaması Algoritmalara ve kontrol yapılarına giriş
© Copyright by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 2 Amaçlar Bu derste öğrenilecek temel başlıklar: –Temel problem çözme tekniklerini anlamak –Kontrol yapılarını anlamak –if ve if…else ifadelerini alternatif durumlar için kullanabilmek –Atama operatörlerini kullanabilmek –Watch ekranını kullanabilmek
© Copyright by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved Maaş hesaplama programı TextBox alanlara girilecek değerler –Hourly wage (Saat ücreti): 10 –Weekly hours (Haftalık çalışma saati): 45 –Calculate (Hesapla) Button’una tıklanıyor.. Maaş hesaplama:
© Copyright by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved Algoritma Bir algoritma nelerden oluşur: –Eylemler (Yapılacak işler) –Eylemlerin oluşma sırası –Program kontrol yapıları
© Copyright by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved Kontrol yapıları Aşağıda bir program kodu içerisindeki eylemlerin akış sırası bulunmaktadır. Bu durumda önce birinci kutu içindeki eylem, sonra ikinci kutudaki eylem çalıştırılacaktır.
© Copyright by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved if Kontrol Yapısı Eğer bazı eylemlerin belli bir şarta göre çalıştırılması isteniyorsa, yani sadece belli bir durum için çalıştırılacaksa, o zaman if kullanmak gerekmektedir.
© Copyright by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved if Kontrol Yapısı
© Copyright by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved if…else Kontrol Yapısı
© Copyright by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved if…else Selection Statement if…else kontrol yapısı kullanılırsa şartın sağlanmadığı durumlar içinde çalışacak eylemler belirleyebiliriz.
© Copyright by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved if Kontrol Yapısı içinde kullanılabilecek mantıksal kıyaslama operatörleri
© Copyright by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved if…else Kontrol Yapısı lblDisplay etiketine öğrencinin notuna göre harfi yazdırılıyor if ( intStudentGrade >= 90 ) { lblDisplay.Text = "A"; } else if ( intStudentGrade >= 80 ) { lblDisplay.Text = "B"; } else if ( intStudentGrade >= 70 ) { lblDisplay.Text = "C"; } else if ( intStudentGrade >= 60 ) { lblDisplay.Text = "D"; } else { lblDisplay.Text = "F"; }
© Copyright by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved Maaş hesabı Uygulamamızın mantığı şu şekilde olacaktır: Eğer haftalık 40 saatten az çalışılmışsa Maaş = Çalışma saati X saat ücreti Eğer 40 saatten çok çalışılmışsa Maaşın 40 saatlik bölüm normal hesaplanacak, 40 saatten sonraki saatler için ücret 1.5 kat olacak
© Copyright by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved Maaş hesaplama “Hesapla” düğmesi için bir event-handler oluşturulacak (Click olayı için) –Bu Button bir önceki algoritmaya göre maaşı hesaplayıp, etikete yazdıracak
© Copyright by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved Constructing the Wage Calculator Application Hesapla Button ’u event handler’ı boş olarak gösteriliyor Oluşturulmuş event handler
© Copyright by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved Kodlamaya Geçiş Değişken tanımlama –Kullanılabilecek temel türler double –Reel sayıları tutabilir (Ondalıklı veya tamsayı) –8 byte yer kaplar –±5.0 x ile ±1.7 x arası decimal –Reel sayıları tutabilir (Ondalıklı veya tamsayı) –12 byte yer kaplar –Sayı aralığı daha geniştir ve hassastır
© Copyright by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved Kodlamaya Geçiş Değişken tanımlamaları koda yerleştirilirken event-handler’in en üstüne konulur Variable declarations
© Copyright by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved Kodlamaya Geçiş Saat ücreti program boyunca hiç değiştirilmeyeceği için sabit olarak tanımlanmalıdır –c onst anahtar kelimesi –Tanımlama sırasında değer atanır ve tekrar değiştirilemez
© Copyright by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved Constructing the Wage Calculator Application Değişken tanımlamaların hemen altına sabit tanımlanıyor Sabit tanımlama
© Copyright by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved Kodlamaya Geçiş TextBox’lardan değer alırken, değişken türlerine göre dönüştürme işlemlerini yapmamız gerekmektedir –Double.Parse string -> double dönüşümü –Decimal.Parse method string -> decimal dönüşümü
© Copyright by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved Kodlamaya Geçiş Figure 7.13 Assigning data to variables. Dönüştürme ve atama işlemleri
© Copyright by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved Kodlamaya Geçiş Maaşın hesaplanması –if…else kullanacağız 40 saatin altı için normal hesaplama 40 saat üstü için ekstra hesaplama
© Copyright by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved Constructing the Wage Calculator Application İf…else kontrol yapısı koda eklenmiş olarak görünüyor if…else kontrol yapısı
© Copyright by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved Kodlamaya Geçiş Son olarak elde edilen miktarı (maaşı) biçimlendirerek etikete string olarak yazdırmamız gerekiyor –Decimal olan değişken string’e dönüştürülecek ve –Label’in Text özelliğine atama yapılacak
© Copyright by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved Kodlamaya Geçiş Çıktının gösterimi için etikete atama yapılıyor
© Copyright by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved Kodlamaya Geçiş Eğer elde edilen maaş formatlanmadan gösteriliyor. Fakat maaşı noktadan sonra belli hane gelecek şekilde ve para birimi belirtilerek göstermek daha iyi olacaktı. Çıktı gösteriliyor
© Copyright by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved Atama operatörleri
© Copyright by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved Atama operatörleri Bu tür atama operatörlerini kullanarak: –İfadeleri daha kısa yapabiliriz –Daha hızlı kodlama yapabiliriz
© Copyright by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved Assignment Operators Programımızda ilgili satırı bu tür atama operatörleri ile daha kısa olarak yazabilirdik Atama operatörü iki ifadeyi tek satırda yazmamıza olanak sağlıyor
© Copyright by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved Çıktıyı formatlamak Bir sayı formatlanarak string’e dönüştürülebilir –String.Format fonksiyonu kullanılır –C harfi ile sistemde tanımlı para birimine göre formatlama yapılabilir String.Format(“{0:C}”, miktar) –Veya N harfi ile istenen şekilde formatlama yapılabilir String.Format(“{0:N2}”, miktar) Noktadan sonra iki hane göster
© Copyright by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved Çıktıyı formatlamak Figure 7.19 Using the Format method to display the result as currency. Para birimi olarak çıktı biçimlendiriliyor( formatlanıyor)
© Copyright by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved Biçimlendirme Seçenekleri Sistemde tanımlı para birimine bağlı olarak verilen sayıyı formatlar. Sayının sonuna para birimin işaretini de koyar. Bilimsel notasyona göre formatlar. Örneğin 956.2, E+002 olarak biçimlendirilir. Noktadan sonra iki hane gelecek şekilde formatlama yapar C#, G Seçildiğinde, E veya F’yi en kısa olacak şekilde kendisi seçer Verilen sayıyı 10 bazında bir tam sayı olarak gösterir Verilen sayıyı her üç rakam da bir ayraçla (binlik ayraç) ve noktadan sonra iki hane gelecek şekilde biçimlendirir.
Outline © Copyright by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 32 WageCalculator.cs (4 of 5) İf içinde şart yazılıyor const sabiti ifade ediyor Else, if içinde yazılan şart geçersiz ise çalıştırılacak blogu tanımlıyor
Outline © Copyright by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 33 WageCalculator.cs (5 of 5) Para birimi olarak sonucu yazdır Atama operatörü hem toplama hem atama yapıyor
© Copyright by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved Debugger Kullanımı: Watch Penceresi Uygulamada bazı noktalara breakpoint koyuyoruz.
© Copyright by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved Debugger Kullanımı: Watch Penceresi –Uygulamayı F5 ile veya Debug düğmesi ile çalıştırın –IDE breakpoint’e gelince beklemeye geçer –Aktif pencere VS.NET olur. Program ilgili satırı çalıştırmak için gelince uygulama bekleme moduna geçiyor.
© Copyright by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved Debugger Kullanımı: Watch Penceresi Veriyi çalışma anında incelemek için Watch kullanılır. Watch penceresi TürleriDeğerleri İzlenecek değişkenler
© Copyright by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved Using the Debugger: The Watch Window Çeşitli ifadeleri inceleme seçenekleri –Aritmetik ifadeler –bool ifadeler (Şartlar) –Geçersiz ifadelerde uyarı Değişkenler dışında, hesaplamaları ve diğer kompleks ifadeleri de Watch ile izleyebiliriz Geçersiz ifade bool türünde bir değer Hesaplama / Kompleks ifade
© Copyright by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved Debugger Kullanımı: Watch Penceresi Deleting a watch Watch ifadesini silmek Delete Watch option
© Copyright by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved Debugger Kullanımı: Watch Penceresi Watch ekranında değer değiştirilirse –Değiştirilen değer kırmızı ile gösterilir Watch ekranında değiştirilen bir değer program için de değişmiş olur. Modified value appears in red