Sunuyu indir
Sunum yükleniyor. Lütfen bekleyiniz
YayınlayanOmur Simsek Değiştirilmiş 10 yıl önce
1
2006 Pearson Education, Inc. All rights reserved. Görsel C# ile Windows Programlama Güz 2009 (5. Hafta)
2
2006 Pearson Education, Inc. All rights reserved. Yazdığımız programlar ya hiç çalışmayabilir ya da çalışır ama beklediğimiz sonuçları üretmez. ÇALIŞAN AMA BEKLEDİĞİMİZ GİBİ SONUÇLAR ÜRETMEYEN programlarımızdaki MANTIKSAL hataları bulmak için Visual Studio programının DEBUG menüsü seçeneklerinden faydalanırız. Debug Menüsü -> Run To Cursor (Ctrl+F10) : İmlecin bulunduğu satırın öncesindeki bütün satırlar Visual Studio tarafından işletilir ve kontrol imlecin olduğu satırda kullanıcıya devredilir. Debug Menüsü -> Step Over (F10) : Kontrolü devralan kullanıcı F10 tuşu yardımıyla programın kalan satırlarını manuel olarak işletir. F10 tuşu fonksiyonların içerisine dallanmaz. Debug Menüsü -> Step Into (F11) : F11 tuşu yardımıyla fonksiyonların içerisine de girilir. Programlarımızdaki mantıksal hataları tespit edebilmenin bir başka yolu da hatanın kaynaklanabileceğini düşündüğümüz noktanın (noktaların) öncesine veya sonrasına WriteLine deyimleri eklemektir. Hata Ayıklama (Debugging)
3
2006 Pearson Education, Inc. All rights reserved. 3 Lojik Operatörler Önceki derslerimizde tek bir durumu test etmek amacıyla eşitlik ya da karşılaştırma operatörlerini kullanmıştık. Bazı karar verme durumlarında daha kompleks testler gerekebilir ve biz bu basit testleri lojik operatörler yardımıyla birleştirerek amacımıza ulaşırız. C#’ta Lojik Operatörler && (lojik VE-AND) || (lojik VEYA-OR) ! (lojik DEĞİL-NOT)
4
2006 Pearson Education, Inc. All rights reserved. Lojik VE (&&) Doğruluk Tablosu İFADE 1 İFADE2 İFADE1&&İFADE2 false false false false true false true false false true true true
5
2006 Pearson Education, Inc. All rights reserved. Lojik VEYA (||) Doğruluk Tablosu İFADE 1 İFADE2 İFADE1||İFADE2 false false false false true true true false true true true true
6
2006 Pearson Education, Inc. All rights reserved. Lojik DEĞİL (!) Doğruluk Tablosu İFADE ! İFADE false true true false
7
2006 Pearson Education, Inc. All rights reserved. Örnekler if((isim== "Deniz") && (yas>=30)) if((donemOrtalamasi>=90)||(finalSinavi>=90)) if((secenek == 'A') ||(secenek == 'a')) Matematiksel olarak 3<x<7 C# dilinde (3<x && x<7) if(!(rakam==bitisDegeri)) ya da if(rakam!=bitisDegeri)
8
2006 Pearson Education, Inc. All rights reserved. 8 Program Paketleme Programlarımızı 3 farklı yöntemle paketleyebiliriz: Metodlar (Methods) Sınıflar (Classes) İsim Uzayları (Namespaces) Metodları kullanmanın faydaları: Böl ve yönet prensibi gereği küçük ve basit parçalarla program yazabilme Yeniden kullanılabilir programlar yazabilme kolaylığı Program geliştirme ve hata ayıklama kolaylığı
9
2006 Pearson Education, Inc. All rights reserved. 9 Hatırlatma…. Tekerleği yeniden icat etmeyin. FCL (Framework Class Library) içerisinde tanımlı sınıf ve metodları mümkün olduğunca kullanmaya çalışın. Bu sayede program geliştirme süresini ve muhtemel hataları azaltmış olursunuz.
10
2006 Pearson Education, Inc. All rights reserved. 10 static Metodlar ve Math Sınıfı (Class Math) static metodlar bütün sınıfa ait fonksiyonlardır. Yani bir sınıfın herhangi bir nesnesi ile çağrılmazlar. Sınıf Adı.Metod Adı(Argümanlar) formatı ile çağrılırlar. Math sınıfı içerisinde tanımlı bütün metodlar static tir. Örnek: Math.Sqrt(900.0)
11
2006 Pearson Education, Inc. All rights reserved. 11 Math Sınıfının Metodları
12
2006 Pearson Education, Inc. All rights reserved. 12 Sabitler (Constants) const anahtar kelimesiyle tanımlanırlar. Bir sabitin değeri ilk değer ataması yapıldıktan sonra değiştirilemez. Math sınıfı altında tanımlı 2 adet sabit vardır. Math.PI and Math.E
13
2006 Pearson Education, Inc. All rights reserved. 13 Birden Fazla Parametreli Metodlar Math.Max( x, Math.Max( y, z ) ) Stringleri Ardarda Sıralama (concatenation) + operatörü yardımıyla birden fazla string tek bir string e dönüştürülebilir. Bir string ile başka bir veri tipine sahip bir değişken farklı veri tipinin string temsili sayesinde birleştirilebilir. Bu işi C# bizim için arka planda otomatik olarak gerçekleştirir.
14
2006 Pearson Education, Inc. All rights reserved. 14 return Komutu Geriye değer döndürmeyen metodlar ya metodun kapanan parantezine ulaşınca kontrolü kendilerini çağırana devrederler ya da return; komutunu gördüklerinde. Geriye değer döndüren metodlar kontrolü return deyim; komutunu işleterek kendilerini çağırana devrederler.
15
2006 Pearson Education, Inc. All rights reserved. 15.NET Framework Class Library (FCL) Önceden tanımlanmış ve kullanıma hazır sınıflar topluluğu (Çerçeve Sınıf Kütüphanesi) using direktifi sayesinde bu sınıflara ulaşır ve kullanırız. using System ; System.Console.WriteLine(); //veya Console.WriteLine();
16
2006 Pearson Education, Inc. All rights reserved. 16.NET Framework Class Library (FCL)
17
2006 Pearson Education, Inc. All rights reserved. 17.NET Framework Class Library (FCL)
18
2006 Pearson Education, Inc. All rights reserved. 18 Rastgele Sayı Üretimi (Random Number Generation) System isim uzayındaki Random sınıfından faydalanılır. Random sınıfınının parametresiz Next adlı metodu 0 (dahil) ile +2,147,483,646 (dahil) arasında rastgele bir tamsayı üretir. Random sınıfınının tek parametreli Next metodu 0 (dahil) ile girilen parametre (hariç) arasında rastgele bir tamsayı üretir. Random sınıfınının iki parametreli Next metodu ilk parametre (dahil) ile ikinci parametre (hariç) arasında rastgele bir tamsayı üretir. Random sınıfı her çalıştırıldığında farklı bir sayı üretebilmek için mevcut zamanı kendine çekirdek değer olarak alır.
19
2006 Pearson Education, Inc. All rights reserved. 19 RandomIntegers.cs (1 of 2) Create a Random object Generate a random die roll
20
2006 Pearson Education, Inc. All rights reserved. 20 RandomIntegers.cs (2 of 2) Two different sets of results containing integers in the range 1-6
21
2006 Pearson Education, Inc. All rights reserved. 21 RollDie.cs (1 of 3) Declare frequency counters Create a Random object Iterate 6000 times Generate a random die roll
22
2006 Pearson Education, Inc. All rights reserved. 22 RollDie.cs (2 of 3) switch based on the die roll to determine frequency
23
2006 Pearson Education, Inc. All rights reserved. 23 RollDie.cs (3 of 3) Display die roll frequencies
24
2006 Pearson Education, Inc. All rights reserved. 24 Test Amaçlı Hep Aynı Rastgele Sayıyı Üretme Random randomNumbers =new Random( seedValue ); seedValue int veri tipinde bir argümandır.
25
2006 Pearson Education, Inc. All rights reserved. 25 Fonksiyonların Aşırı Yüklenmesi (Function Overloading) Farklı veri tipine sahip, farklı sıralanmış veya farklı sayıda parametrelere ama AYNI İSME sahip metodlara aşırı yüklenmiş denir. Derleyici çağrılan metodun argüman listesini kontrol ederek hangi fonksiyonun kullanılmak istendiğine karar verir.
26
2006 Pearson Education, Inc. All rights reserved. 26 MethodOverload.cs Correctly calls the “ Square of int ” method Correctly calls the “ Square of double ” method Declaring the “ Square of int ” method Declaring the “ Square of double ” method
27
2006 Pearson Education, Inc. All rights reserved. 27 MethodOverload.cs
28
2006 Pearson Education, Inc. All rights reserved. 28 MethodOverload.cs Same method signature Compilation error
29
2006 Pearson Education, Inc. All rights reserved. 29 Rikörsif (Recursive)(Tekrarlamalı) Metodlar Kendi kendini çağıran metodlar rikörsif olarak adlandırılır. Rikörsif bir metod 2 durum içerir: Temel Durum (Base case) Kendi kendini çağırma işlemi ne zaman sona ermeli? Rikörsif Adım Kendi kendini çağırma adımı return deyimi içerir genelde.
30
2006 Pearson Education, Inc. All rights reserved. 30 FactorialTest.cs (1 of 2) Call recursive method
31
2006 Pearson Education, Inc. All rights reserved. 31 FactorialTest.cs (2 of 2) static method header declaration Base case: number <= 1 (ends recursion) Recursive call
32
2006 Pearson Education, Inc. All rights reserved. 32 5!
33
2006 Pearson Education, Inc. All rights reserved. 33 Değer ile ve Referans ile Metodlara Argüman Aktarımı Değer ile Argüman Aktarımı (call by value) Argümanın kopyası alınır ve değerlendirilmek üzere metoda gönderilir. (Bir evrakın FOTOKOPİSİ) Fonksiyon içerisinde argümana yapılan değişiklikler orjinali etkilemez. Referans ile Argüman Aktarımı (call by reference) Metod içerisinde değerlendirilmek üzere argümanın kendisi gönderilir. (Orijinal EVRAK) Fonksiyon içerisinde argümana yapılan değişiklikler orjinali etkiler. Nesne argümanlar daima referans ile aktarılırlar. Referans ile aktarım: ref : Bir ilk değeri olan değişkenler için out : Bir ilk değeri olmayan değişkenler için
34
2006 Pearson Education, Inc. All rights reserved. 34 ReferenceAndOutput Parameters.cs (1 of 2) The declaration of local variables that are being passed by reference Passes y with the ref keyword since the variable is initialized Pass y and z by value Passes z with the out keyword since the variable is not initialized
35
2006 Pearson Education, Inc. All rights reserved. 35 ReferenceAndOutput Parameters.cs (2 of 2) Assignments are saved since arguments was passed by reference Modifications are disregarded since the argument was passed by value
36
2006 Pearson Education, Inc. All rights reserved. 36 ReferenceAndOutput ParamtersTest.cs
37
2006 Pearson Education, Inc. All rights reserved. Soru Fonksiyonlar return komutuyla sadece bir değer geriye çevirirler. Geriye birden fazla değer çevirebilmek için ne yapmamız gerekir?
38
2006 Pearson Education, Inc. All rights reserved. geciciDegisken=A; A=B; B=geciciDegisken; A B !!! GEÇİCİ BİR DEĞİŞKENE İHTİYAÇ VAR !!! Elinizdeki TV kumandası yardımıyla kayıtlı 2 kanalın yerini nasıl değiştirirsiniz? İKİ DEĞİŞKENİN DEĞERİNİN YER DEĞİŞTİRMESİ (SWAPPING)
39
2006 Pearson Education, Inc. All rights reserved. Değer ile Swap Metodu (Çalışmaz) using System; class SwapTest { static void Main(string[ ] args) { int a = 2, b = 5; Console.WriteLine("Swap Fonksiyonu Cagrilmadan Once:"); Console.WriteLine("a={0}\tb={1}", a, b); Swap(a, b); Console.WriteLine("Swap Fonksiyonu Cagrildiktan Sonra:"); Console.WriteLine("a={0}\tb={1}", a, b); } public static void Swap(int a, int b) { int geciciDegisken=a; a=b; b=geciciDegisken; }
40
2006 Pearson Education, Inc. All rights reserved. Referans ile Swap Metodu (Çalışır) using System; class SwapTest { static void Main(string[ ] args) { int a = 2, b = 5; Console.WriteLine("Swap Fonksiyonu Cagrilmadan Once:"); Console.WriteLine("a={0}\tb={1}", a, b); Swap(ref a, ref b); Console.WriteLine("Swap Fonksiyonu Cagrildiktan Sonra:"); Console.WriteLine("a={0}\tb={1}", a, b); } public static void Swap(ref int a, ref int b) { int geciciDegisken=a; a=b; b=geciciDegisken; }
Benzer bir sunumlar
© 2024 SlidePlayer.biz.tr Inc.
All rights reserved.