METOTLAR İÇİNDEKİLER Metotlar Metot Oluşturma ve Kullanma Metot Parametresi Olarak Diziler Değer ve Referans Parametreleri Metotların Aşırı Yüklenmesi Kendini Çağırabilen Metotlar NESNE TABANLI PROGRAMLAMA I Okt. Mustafa AKBUĞA HEDEFLER Bu üniteyi çalıştıktan sonra; Metot tanımlayıp programlar içerisinde kullanabilecek, Değer ve Referans Parametreleri arasındaki farkları öğrenip uygulayabilecek, Kendini çağırabilen metotları yazabileceksiniz. ÜNİTE 9
GİRİŞ Bilgisayar dillerinin öğretilmesinde, fonksiyonlar ve metotlar önemli bir ağırlığa sahiptir. Bunun sebebi ise sürekli tekrar edilmesi gereken kodların bir kod bloğuna yazılarak, her defasında aynı kodları yazmak yerine bu kod bloğunun çağrılarak çalıştırılmasıdır. Bu sayede hem hata yapma ihtimali en aza indirilir hem de zamandan kazanılarak program yapısı küçültülmüş olur. Şu ana kadar yapılan örneklerde genelde sistem tarafından hazırlanmış C # dilindeki ReadLine(), WriteLine() vb. gibi hazır metotlar kullanılmıştır.bu ünitede ise özel metodlar tanımlanarak, programların içerisinde nasıl kullanılacağı anlatılacaktır. METOTLAR Metotlar tek başlarına çalıştırılabilen yapılar değildir. Metot, sadece metodu çağıran ana program için faydalı işler yapar. Nesneye yönelik programlama dillerinde genellikle fonksiyonlar metot olarak isimlendirilir. Her çalışan C# programında bir ana metot (Main) mevcuttur. Program çalışmaya ilk olarak bu metotla başlar. Tüm kodların bu (Main) metodu içine yazılması da büyük programlar için iyi bir programcılık sayılmaz. Çünkü gerçek hayatta olduğu gibi programlarda bir bütün olarak ele alınmamalıdır. Küçük parçalara ayrılarak, her parça için uygun birer metot yazılmalıdır. Programın herhangi bir yerinde kullanmak için belirli bir işi yerine getirmek amacıyla tasarlanmış alt programlara metot denir. C# ta bildirilen bütün metotlar mutlaka bir sınıfın içinde olmalıdır. Bir sınıfın üyesi olmayan metotlar bildirilemez. Burada bahsedilen Sınıflarla ilgili bilgiler bir sonraki ünitede anlatılacaktır. Metot Oluşturma ve Kullanma: Metotları tanımlarken kullanılan bildirim şu şekildedir: [ erişim belirteçleri ] < dönüş değeri > metot ismi ( parametre listesi ) Metodun iş yapması için kendisini çağıran metottan aldığı bilgilere parametre (argüman), kendisini çağıran fonksiyona döndürdüğü bilgiye ise geri dönüş değeri (return value) denir. metot gövdesi; [erişim belirteçleri]: Erişim belirteçleri (Private, Public, Protected, Protected Internal),metoda nerelerden erişilebileceğini belirleyen ayarlardır. Belirtilmediği durumlarda private olarak kabul edilir. Yani sadece tanımlandığı sınıf içinde kullanılabilen bir metot hâline gelir. <Geri dönüş değeri>: Tanımlanan metodun, çağıran fonksiyona gönderdiği veririn (int, float, string, bool..vb.) türüdür. Atatürk Üniversitesi Açıköğretim Fakültesi 2
Metot ismi: Her bir metot tanımlanırken metota mutlaka bir isim verilir. Metot çağrılırken verilen bu isim kullanılarak çağırma işlemi yapılabilir. (Parametre listesi): Parametreler ise metodun çalışırken ihtiyaç duyduğu çağıran fonksiyondan gönderilen bilgileridir. Örnek tanım şekli: using System; class Program int MetotAdi(int a, int b) return a + b; Bu metot, iki int türünden girdi değerini alır ve bu girdilerin toplamını int türünden tutar. Ancak bu metot statik olmadığından programımız içinde kullanabilmemiz için bu metodun içinde bulunduğu sınıf türünden bir nesne yaratıp. operatörüyle bu nesne üzerinden metodumuza erişmeliyiz. Yukarıda verilen tanıma uygun kullanım Şekil 9.1 de örnek program_1 de içerisindeki kodla gösterilmiştir. Örnek program_1: Metotlar, statik ve dinamik olmak üzere iki faklı şekilde bellekte yer kaplar. Şekil 9.1. Dinamik olarak tanımlanmış metotların kullanımını gösteren C# kodu Atatürk Üniversitesi Açıköğretim Fakültesi 3
Şekil 9.2. Örnek program_1 in ekran görüntüsü Statik olarak tanımlanan metotlara erişmek için metodun içinde bulunduğu sınıf türünden bir nesne yaratmaya gerek yoktur. Statik olarak tanımlanan metotlara sadece metodun adını yazarak erişilebilir. Şekil 9.2 deki ekran görüntüsüyle aynı sonucu verecek şekilde metot tanımı Şekil 9.3 te örnek program_2 de gösterilmiştir. Örnek program_2: Bütün programlarda önce Main metodu çalışır. Diğer metotlar Main metodunun içinden çağrılmadıkça çalışmaz. Şekil 9.3. Statik olarak tanımlanmış metotların kullanımını gösteren C# kodu Şekil 9.4. Örnek program_2 nin ekran görüntüsü Şekil 9.3 içerisindeki kırmızı okla işaretlenen Topla metodu tanımında static anahtar kelimesi kullanılmıştır. Bu kelimenin kullanılması ile ikinci okla işaretlenen yerde metodun sadece ismi ve parametreleri verilerek toplama işlemi Atatürk Üniversitesi Açıköğretim Fakültesi 4
yaptırılmıştır. Şekil 9.2 ve Şekil 9.4 teki ekran çıktılarına dikkat edilirse tanımlanan metotların aynı sonuç ürettikleri görülecektir. Örnek program_3: Metodun oluşturulmasında tanım satırının başına public anahtar sözcüğü konmuş ise bu metoda, her sınıftan erişilmesinin önünü açacaktır. Bu durum Şekil 9.6 da kırmızı okla gösterilmiştir. Eğer public sözcüğü yazılmamış olsaydı bu metoda sadece Metotlar sınıfının dışından erişilemezdi. Erişim belirleyiciler Sınıflar ve Nesneler ünitesinde daha ayrıntılı olarak anlatılacaktır. Bütün değer tutan metotlar bir değermiş gibi kullanılabilir, ancak değişkenmiş gibi kullanılamaz. Şekil 9.6. Public olarak tanımlanmış metotların kullanımını gösteren C# kodu. Herhangi bir değer tutmayan (WriteLine gibi) metotlar da void anahtar sözcüğüyle kullanılır. void anahtar sözcüğünün kullanıldığı yerlerde return ve geri dönüş değeri bulunmaz. Daha önceki örneklerde sıkça kullanıdığımız WriteLine metodunun yerine geçecek Yaz metodu aşağıdaki örnek Program_4 deki gibi hazırlanabilir. Örnek program_4: Şekil 9.7. Yaz metodunun hazırlanmasını gösteren C# kodu Atatürk Üniversitesi Açıköğretim Fakültesi 5
Şekil 9.8. Örnek program_4 nin ekran görüntüsü Şekil 9.7 ye dikkat edilirse Yaz metodunun tanım satırında public anahtar kelimesi kullanılmıştır. Bu sebeple bu metot başka sınıflar içinden WriteLine gibi rahatça çağrılabilir. Ayrıca statik olarak tanımlandığından bu metot çağrılırken sadece metot isminin yazılması yeterli olacaktır. Metot tanımında void anahtar sözcüğü kullanılmışsa, return ve geri dönüş değerine yer verilmez. Örnek program_4 ün çalıştırılması sonucu Şekil 9.8 de gösterildiği gibi parametre olarak verilen değerlere uygun olarak Nesne Tabanlı Programlama ifadesi üç kez yazılmıştır. Metotların doğru tanımlanması için aşağıdaki hususlara dikkat edilmesi gerekir: Metotları kullanırken parametrelerini doğru sayıda, doğru sırada ve doğru türde vermeliyiz. Değer tutan metotlarda return satırıyla belirtilen ifade, metodu yazarken verilen türle uyumlu olmalıdır. Değer tutmayan (void ile belirtilmiş) metotlarda return komutu herhangi bir ifadeyle kullanılmaz. Değer tutmayan metotların bir değermiş gibi kullanılması mümkün değildir. Metotlar değer tutmayabileceği gibi ayrıca parametre de almayabilirler. Metotlar içinde tanımlanan değişkenler programın başından sonuna kadar durmaz. Bu değişkenler, programın akışı metoda geldiğinde tanımlanır. Metodun işlevi bittiğinde ise bellekten silinir. Metod Parametresi Olarak Diziler Diziler C# ta ayrı bir tür olarak ele alındığı için Dizi kavramı, tanımlama ve dizi elemanları üzerindeki işlemler gibi konular diziler ve koleksiyonlar ünitesinde ayrıntılı olarak anlatılacaktır. Bu bölümde sadece Dizilerin metod içerisinde kullanılacağına değinilecektir. Atatürk Üniversitesi Açıköğretim Fakültesi 6
[ erişim belirteçleri ] < dönüş değeri > metot ismi ( tür[] diziadı ) Metot gövdesi; Önceden verilen metot tanımında parametre kısmına dizi elemanın türü ve adı yazılarak diziler metot içinde kullanabilir. Bu durum örnek program_5 te gösterilmiştir. Örnek program_5: Şekil 9.9. Metot içerisinde dizilerin kullanılmasını gösteren C# kodu. Değer türleri stack hafıza bölgesinde tutulur. Başvuru türleri (nesneler) ise heap üzerinde oluşturulur. Şekil 9.9 da verilen C# kodlarının, kırmızı okla işaretlenen program satırında, yenidizi adında int veri türünde ve (0,1,2,3,4) üye değerine sahip 5 elemanlı bir dizi tanımlanmıştır ve Yaz(yeniDizi) program koduyla da Yaz metodu, almış olduğu dizinin bütün elemanlarını Şekil 9.10 da gösterildiği gibi ekrana yazdırmaktadır. Şekil 9.10. Örnek program_5 nin ekran görüntüsü Atatürk Üniversitesi Açıköğretim Fakültesi 7
Değer Ve Referans Parametreleri Bir metot içerisine parametre olarak aktarılan dizinin, metot içindeki bir elemanının değiştirilmesi esas diziyi de etkiler. Çünkü bir metoda parametre olarak bir dizi verildiğinde derleyici metoda dizinin bellekteki adresini verir; metot o adresteki verilerle çalışır. Bu yüzden metot içerisinde verilen dizi değerine referans tipli parametreler adı verilir. Bir metoda parametre olarak bir değişken değeri verildiğinde ise metot için değişkenin bellekteki adresi artık önemli değildir, metot için önemli olan değişkenin değeridir. Metot, değişkeni kullanabilmek için geçici bir bellek bölgesi yaratır ve parametre olarak aldığı değişkenin değerini bu geçici bellek bölgesine kopyalar ve o geçici bellek bölgesiyle çalışır. Metoda parametre olarak aktarılan değişkenin metot içinde değiştirilmesi esas değişkeni etkilemez. Metottan çıkıldığında da o geçici bellek bölgesi de silinir. Bu yüzden metot içerisinde verilen değişken değerileri için değer tipli parametreler denir. Ancak bazı durumlarda değer tipli parametreler de referans tipli olarak kullanılmak istenebilir. Bu durum özellikle metot dışına birden fazla hesaplanmış değer çıkarılacağı zamanlarda oldukça faydalıdır. Bunun için Virtual C#, programlama dilinde out ve ref anahtar sözcükleri kullanılır. Bilgisayarda bellek bölgeleri: Başlangıç değeri bulunan değer tiplerindeki değişkenlerin değerleri metotlara ref anahtar sözcüğü ile aktarılırken, ilk değeri olmayan değişkenlerin değeri ise out anahtar sözcüğü ile aktarılır. Bilgisayarlar genelde belleklerinde, uygulama programlarını ve bu programların kullandığı veriyi tutarlar. Değer ve referans türleri arasındaki farkları anlamak için, bellekte verinin nasıl düzenlendiğini anlamak yararlı olacaktır. C#, System.IO kütüphanesini ve dosya metotlarını kullanmadan harici disklere erişemez. İşletim sistemleri ve programlama dilleri verileri tutmak için sistemde kullanılan RAM belleği, her biri ayrı ayrı yönetilen iki büyük parçaya ayırır. Belleğin iki büyük parçasına stack ve heap adı verilir. Bu bellek bölgeleri iki farklı amaca hizmet eder: Bir yöntemi çağırdığınızda, o yöntemin değerleri ve yerel değişkenleri için gerekli bellek her zaman stack dan alınır. Yöntem bittiğinde değerler ve yerel değişkenler için alınan bellek, otomatik olarak stack a geri verilir. new anahtar sözcüğünü kullanarak bir nesne oluşturduğunuzda, nesneyi oluşturmak için gerekli bellek her zaman heap ten alınır. Başvuru değişkenlerini kullanarak birkaç yerden aynı nesneye başvurulabilmektedir. Bir nesneye son başvuru geçersiz olduğunda, nesne tarafından kullanılan bellek de, yeniden kullanıma uygun hâle gelir. Atatürk Üniversitesi Açıköğretim Fakültesi 8
out ve ref Anahtar sözcükleri: out anahtar sözcüğü, metotlarda değer tipli parametrelerin referans tipli olarak verilmesi amacıyla kullanılır. Bu şekilde tanımlanmış parametrelerde ilk değer verme zorunluluğu yoktur. İlk değerler istenirse metot içerisinde verilebilir. ref anahtar sözcüğü ile tanımlanan parametreler de değer tipini aynı out gibi referans tipi olarak aktarmak amacıyla kullanılır. Fakat değer tiplerini referans olarak bu sözcükle aktarırken ilk değer verme zorunluluğu vardır. Örnek program_6: Şekil 9.11. Metot içerisinde out anahtar kelimesinin kullanılmasını gösteren C# kodu Şekil 9.12. Örnek program_6 nın ekran görüntüsü Şekil 9.11 deki örnek program_6 incelendiğinde Main ana programında int sayı adında bir değişken tanımlanmış ve ilk değeri olmadan bu hâliyle Değiştir metoduna gönderilmiştir. Değiştir metodu içinde sayı değişkeninin değeri 3 olarak belirlenerek Yaz metodu çalıştılmış ve ekrana Şekil 9.12 de görülen 3 değeri Atatürk Üniversitesi Açıköğretim Fakültesi 9
yazdırılmıştır. return anahtar kelimesi kullanılmadan metot dışına bu şekilde bir değişken değerin referans değer gibi alınabildiği gösterilmiştir. Örnek program_7: Şekil 9.13. metot içerisinde ref anahtar kelimesinin kullanılmasını gösteren C# kodu Şekil 9.14. Örnek program_7 nin ekran görüntüsü Şekil 9.12 deki örnek program_7 incelendiğinde Main ana programında int sayı adında bir değişken tanımlanmış ve ilk değeri 3 olarak verilmiştir. ref anahtar kelimesi ile Değiştir metoduna gönderilmiştir. Değiştir metodu içinde sayı değişkeninin değeri 9 olarak belirlenerek Yaz metodu çalıştılmış ve ekrana Şekil 9.12 de görülen 9 değeri yazdırılmıştır. Başlangıçta değeri 3 olan bir değişken ref anahtar kelimesiyle yardımıyla metot içerisine gönderilmiş ve değeri değiştirilerek return anahtar kelimesi kullanılmadan metot dışına alınabilmiştir. Atatürk Üniversitesi Açıköğretim Fakültesi 10
Metotların Aşırı Yüklenmesi Çalışma zamanında hangi metodun çağrıldığını belirleyebilmek için metodun imzasına (method signature) bakılır. C# ta parametre sayısı veya parametrelerin türleri farklı olmak şartıyla aynı isimli birden fazla metot oluşturulabilir. Bu şekilde tanımlanan metotlara metotların aşırı yüklenmesi denir. C#, bir metot çağrıldığında ve çağrılanla aynı isimli birden fazla metot bulunduğunda metodun çağrılış biçimine bakar. Yani ana programdaki metoda girilen parametrelerle yaratılmış olan metotların parametrelerini kıyaslar. Önce parametre sayısına bakar. Eğer aynı isimli ve aynı sayıda parametreli birden fazla metot varsa bu sefer parametre türlerinde tam uyumluluk arar, uyumlu bulduğu metodu çalıştırarak sonucu ekrana yazdırır. Parametre türlerinin tam uyumlu olduğu bir metot bulamazsa program hata verir. Örnek program_8: Şekil 9.15. Metotların aşırı yüklenmesini gösteren C# kodu. Şekil 9.16. Örnek program_8 in ekran görüntüsü Atatürk Üniversitesi Açıköğretim Fakültesi 11
Bir metodun imzası metodun adı, parametrelerin sayısı ve türleri ile ilgilidir. Metodun geri dönüş değerleri imzasına dâhil değildir. Şekil 9.15 te kodları gösterilen örnek program_8 de MetodA ismindeki üç metot da aynı sayıda parametre almıştır. Bu durumda parametrelerin türlerine bakılır. Ana programdaki MetotA("Atatürk Üniversitesi","Açıköğretim Fakültesi"); satırıyla üçüncü metot ilk olarak çağrılır. MetotA(6,9); metot çağrımının parametre türlerinin tam uyumlu olduğu metot birinci metottur, o yüzden birinci metot ikinci olarak çağrılır. Eğer birinci metot oluşturulmamış olsaydı ikinci metot çağrılacaktı. Son olarak MetotA(1.11f,99.99f); satırıyla da ikinci metot çağrılacaktır. Bu durum Şekil 9.16 da program görüntüsünde gösterilmiştir. Kendini Çağırabilen Metotlar Kendi kendini çağıran metotlara özyenileyici (recursive) metotlar denilir. Bu metotlarda, çağrımı sonlandıran bir kontrol yapısı metot içerisine mutlaka yerleştirilmelidir. Şekil 9.17 de özyenileyici metot örneği yer almaktadır. Örnek program_8 in çalışmasıyla Şekil 9.19 daki ekran çıktısı görülecektir. Örnek program_8: Şekil 9.17. Metotların aşırı yüklenmesini gösteren C# kodu Şekil 9.17 deki gösterilen kod incelendiğinde Cevir metoduna parametre verilen Onluk sayı, metod içinde kendi kendini tekrarlayarak ikilik sayı sistemine çevrilmektdir. Metod içinde kırmızı okla işaretlenen kod satırı metot için kotrol yapısı oluşturmaktadır. Şekil 9.18. Örnek program_8 in ekran görüntüsü Atatürk Üniversitesi Açıköğretim Fakültesi 12
Main metodu Çalışan her programda mutlaka bir Main metodunun bulunması gerekir. Bütün programlarda ilk önce Main metodu çalıştırılır. Diğer metotlar Main metodunun içinden çağrılmadıkça çalışmaz. Bu özellikler dışında Main metodunun diğer metotlardan başka hiçbir farkı yoktur. Ancak şimdiye kadar Main metodunu yalnızca static void Main() şeklinde parametresiz kullandık. Ancak Main metodunun int türünden (static int Main( ) ) bir geri dönüş değeri de döndürmesi sağlanabilir. Bu değer genellikle işletim sistemine programın çalışması hakkında bilgi vermek amacıyla kullanılır. Örneğin Main metodu 0 değerini döndürürse işletim sistemi programın düzgün şekilde sonlandırıldığını, 1 değerini döndürürse de hatalı sonlandırıldığını anlayabilmektedir. Ayrıca Main metodu parametre de alabilir. Komut satırından çalıştırıldığında verilen parametreleri bir string dizisi içine alarak da işleyebilmektedir. Örnek program_9: Şekil 9.19. Metotların aşırı yüklenmesini gösteren C# kodu Şekil 9.20. Örnek program_8 in ekran görüntüsü Şekil 9.21. Örnek program_8 in ekran görüntüsü Atatürk Üniversitesi Açıköğretim Fakültesi 13
Şekil 9.22. Örnek program_8 in ekran görüntüsü Atatürk Üniversitesi Açıköğretim Fakültesi 14
Özet Nesne tabanlı programlamada sürekli tekrar edilmesi gereken olan kodlar bir kod bloğuna yazılarak, her defasında aynı kodları yazmak yerine bu kod bloğu çağrılarak çalıştırılır.bu şekilde yapılandırılmış kod bloklarına fonksiyon ya da metot adı verilir. Metotlar sayesinde programda hem hata yapma şansı en aza indirilir hem de zamandan kazanılarak program yapısı küçültülmüş olur. Metotlar tanımlanırken erişim belirleyici, geri dönüş değeri,metot ismi ve parametre liste sırasıyla verilir. Metodun iş yapması için kendisini çağıran metottan aldığı bilgilere parametre, kendisini çağıran fonksiyona döndürdüğü bilgiye ise geri dönüş değeri denir. Bir metod içerisine parametre olarak aktarılan dizinin, metot içindeki bir elemanının değiştirilmesi esas diziyi de etkiler.bu yüzden metoda parametre olarak bir dizi verildiğinde derleyici, metoda dizinin bellekteki adresini verir; metot o adresteki verilerle çalışır. Bu yüzden metot içerisinde verilen dizi değerine referans tipli parametreler adı verilir. Metoda parametre olarak aktarılan değişkenin metot içinde değiştirilmesi esas değişkeni etkilemez. Metottan çıkıldığında da o geçici bellek bölgesi de silinir. Bu yüzden metot içerisinde verilen değişken değerlerine değer tipli parametreler denir. Değer tipli parametreler, referans tipli olarak kullanılmak istenebilir. Bunun için Virtual C#, programlama dilinde out ve ref anahtar sözcükleri kullanılmaktadır. Başlangıç değeri bulunan değer tiplerindeki değişkenlerin değerleri metotlara ref anahtar sözcüğü ile aktarılırken; ilk değeri olmayan değişkenlerin değeri ise out anahtar sözcüğü ile aktarılır. İşletim sistemleri ve programlama dili çalışma zamanları sık sık veriyi tutmak için kullanılan RAM, belleği her biri ayrı olarak yönetilen iki büyük parçaya ayırır. Belleğin iki büyük parçasına stack ve heap adı verilir. Bir yöntemi çağırdığınızda, o yöntemin değerleri ve yerel değişkenleri için gerekli bellek her zaman stack'dan alınır. new anahtar sözcüğünü kullanarak bir nesne oluşturduğunuzda, nesneyi oluşturmak için gerekli bellek her zaman heap'ten alınır. C#'ta parametre sayısı veya parametrelerin türleri farklı olmak şartıyla aynı isimli birden fazla metot oluşturulabilir Bu şekilde tanımlanan metotlara metotların aşırı yüklenmesi denir. Kendi kendini çağıran metotlara özyenileyici (recursive) metotlar denilir. Bu metotlarda, çağrımı sonlandıran bir kontrol yapısı metod içerisine mutlaka yerleştirilmelidir. Her çalışan C# programında mutlaka bir ana (Main) metot mevcuttur. Program ilk çalıştığında bu metotla başlar. Atatürk Üniversitesi Açıköğretim Fakültesi 15
DEĞERLENDİRME SORULARI Değerlendirme sorularını sistemde ilgili ünite başlığı altında yer alan bölüm sonu testi bölümünde etkileşimli olarak cevaplayabilirsiniz. 1. Bir metot tanımında aşağıdakilerden hangisi yer almaz? a) Erişim belirteçleri b) Dönüş değeri c) Adlandırma ismi d) New anahtar sözcük e) Parametre listesi 2. Metotların tanımlanmasına ilişkin aşağıdakilerden hangisi kesinlikle hatalıdır? a) Metotların parametreleri doğru sayıda ve türde verilmelidir. b) Değer tutan metotlarda return satırıyla verilen ifade, metodu yazarken verilen türle uyumlu olmalıdır. c) Değer tutmayan metotlarda void sözcüğü kullanılır. d) Metotlar içinde tanımlanan değişkenler, metodun işlevi bittiğinde silinir. e) Metotlarda mutlaka parametre kullanılmalıdır. 3. Aşağıdakilerden hangisi metotlarda değer tipi parametrelerin referans tipli olarak kullanılmasını sağlar? a) new b) class c) out d) int e) void Atatürk Üniversitesi Açıköğretim Fakültesi 16
4. using System; class sorular static void Hesapla(... int sayi1) sayi1=4; static void Main() int sayi=0; Hesapla(... sayi); Yukarıda verilen kodlar içerisindeki (...) ile gösterilen boşluğa aşağıdaki anahtar sözcüklerden hangisi gelmelidir? a) new b) class c) out d) ref e) void 5. using System; class Sorular int Topla(int a,int b) return a + b; static void Main() Sorular soru5 = new Sorular(); int a = soru5.(...); Console.Write(a); Yukarıda verilen kodlar içerisindeki (...) ile gösterilen boşluğa aşağıdaki kod satırlarından hangisi gelmelidir? a) Topla (0, 100); b) Topla ( 100); c) Sorular ( 100); d) Sorular (0,100); e) Soru5 ( 0,100); Atatürk Üniversitesi Açıköğretim Fakültesi 17
6. Referans tipler bilgisayar hafızasının hangi bölümünde saklanır? a) Heap bölgesinde b) Stack bölgesinde c) Harddiskte d) Diskette e) Flash diskte 7. Değer tipler bilgisayar hafızasının hangi bölümünde saklanır? a) Heap bölgesinde b) Stack bölgesinde c) Harddiskte d) Diskette e) Flash diskte 8. Aşağıdaki erişim türlerinden hangisine her yerden ulaşmak mümkündür? a) Private b) Protected c) Public d) Internal e) Proteced Internal 9. C# ta parametre sayısı ve parametre türleri farklı olmak koşulu ile aynı isimde faklı metotlar oluşturma işlemine ne denir? a) Kendini çağıran b) Ana metot c) Yavru metot d) Fonksiyon e) Aşırı yükleme Atatürk Üniversitesi Açıköğretim Fakültesi 18
10. using System; class Sorular static void Islem(int a) if (b == 0) return;... (b>>1); Console.Write(b & 1); static void Main() Islem(10); Yukarıda verilen kodlar içerisindeki (...) ile gösterilen boşluğa hangi kod satırında verilen anahtar sözcük gelmelidir? a) Islem b) Main c) Sorular d) new e) void Cevap Anahtarı: 1.D,2.E, 3.C,4.D,5.A,6.A,7.B,8.C,9.E,10.A Atatürk Üniversitesi Açıköğretim Fakültesi 19
YARARLANILAN KAYNAKLAR VE BAŞVURULABİLECEK DİĞER KAYNAKLAR ALGAN, Sefer, (2010), Her Yönüyle C#, İstanbul: Pusula Yayıncılık, İstanbul. AKTAŞ, Volkan, (2013), Her Yönüyle C# 5.0, KODLAB, İstanbul. CLARK, Dan, (2013), Your visual blueprint for building.net application, 2nd Edition, Hungry Minds, New York. SCHILDT, Herbert, (2002), The Complete Reference C#, çev. Duygu Arbatlı Yağcı, Alfa Basım Yayım Dağıtım, İstanbul. SHARP, John, (2002), Microsoft Visual C#.NET, çev. Mert Derman, Arkadaş Yayınevi, Ankara. YANIK, Memik, (2004), Microsoft Visual c#.net, 1.Baskı, Seçkin Yayıncılık, Ankara. Atatürk Üniversitesi Açıköğretim Fakültesi 20