![]() |
C Switch Kalıbı Kullanımı
Şimdi, C dilinde çok seçenekli bir sistem sağlayan switch kalıbını inceleyelim. switch kalıbı bir ifadenin sonucuna bağlı olarak içinde yer alan herhangi bir seçenekteki işlem satırlarını çalıştıran bir kalıptır. Bu kalıbın genel yapısını birlikte inceleyelim:
Alıntı:
Program, switch deyiminin bulunduğu satırda yer alan ifadenin sonucu ile switch kalıbının case satırlarında yer alan sabit değerleri karşılaştırır. Burada bahsi geçen sabit değerler ya bir char ya da bir int sabitidir. İfade sonucu ile aynı değeri taşıyan sabit değerin yer aldığı case bölümüne bağlı işlem satırını veya satırlarını çalıştırır. break deyimini görür görmez, switch kalıbının dışına çıkar ve bir sonraki işlem satırından çalışmasına devam eder. Break deyimini, case yapıları içinde tanımlamak şart değildir. Değişken değeri ile aynı değeri taşıyan sabit değerin yer aldığı case bölümüne bağlı işlem satırı veya satırları çalıştığında, case yapısında bir break deyimi yer almaz ise, program hemen switch kalıbı dışına çıkmaz. Aksine, eğer aşağıda devam eden case yapıları varsa, herhangi bir koşul kontrolü yapmadan, bir sonraki case yapısındaki işlem satırlarını çalıştırır. Ancak, bütün case yapıları içinde break deyimini kullanırsanız, switch kalıbı içinde yer alan sadece tek bir case yapısına bağlı işlem satırı ya da satırları çalışır. Koşul sağlanarak bir case yapısı içine girildiğinde çıkış ancak break deyimi ile ya da switch kalıbının sonuna gelmekle sağlanır. case yapısı içinde break tanımı yapılmamışsa, herhangi bir koşul kontrolü yapmadan, bir sonraki case yapısındaki işlem satırları çalıştırılır. Eğer, switch satırındaki değişken değeri case satırlarında yer alan sabit değerlerin herhangi biri ile aynı değeri taşımıyorsa, program default satırında yer alan işlem satırı veya satırlarını çalıştırır. default satırının tanımlanması tamamen isteğe bağlıdır. Yani, bu satır tanımlanmasa bile switch kalıbı normal olarak çalışır. Program, switch kalıbı için tanımlanan değişken değeri ile aynı değeri taşıyan bir sabitin yer aldığı case satırı ile karşılaştığında, bir break ifadesi ile karşılaşana kadar o case satırında yer alan işlem satırlarının gereğini yerine getirir. Eğer son case satırı veya default satırı ile ilgili işlem satırlarının gereğini yerine getiriyorsa switch kalıbının sonuna geldiğinden işlemler otomatik olarak sona ermiş olur. Eğer, case satırlarında yer alan sabit değerlerinden hiçbiri değişken değeri ile aynı değilse ve switch kalıbı içinde default satırı tanımlanmamışsa, program switch kalıbında herhangi bir işlem yapmadan bir sonraki program işlem satırından çalışmasına devam eder. Yukarıda anlattıklarımızı bir örnek üzerinde incelemeye çalışalım: Alıntı:
switch kalıbı ile ilgili göz önünde bulundurulması gereken bazı önemli noktalar vardır: * Daha önce gördüğümüz gibi, if deyiminde koşul ifadesi herhangi bir veri türünden olabilir. Ancak, switch kalıbı sadece int ve char veri türleri ile çalışır. * Ayrıca, switch kalıbında sadece eşitlik için kontrol yapılır. * Diğer önemli bir nokta ise, switch kalıbı ile ilgili case satırlarında yer alan işlem satırlarının { } işaretleri arasında yer almamış olmasıdır. Dolayısıyla, case satırlarında yer alan işlem satırları kod bloğu olarak değerlendirilemez. Aynı switch kalıbındaki farklı case satırlarında yer alan değişken değerleri birbirinin aynı olamaz. Bu şekilde hazırlanmış olan bir program derlenirken hata verir. ANSI standartlarına göre, bir derleyicide switch kalıbı içinde en az 257 adet case satırı tanımlanabilmelidir. Bu arada, program içinde switch kalıpları ile mümkün olduğu kadar az case satırı tanımlamanın programı daha kullanışlı bir hale getireceği unutulmamalıdır. switch kalıplarını birbiri içinde kullanabilirsiniz. Yani, bir switch kalıbına ait bir case satırı ile ilgili işlem satırları yerine başka bir switch kalıbı tanımlayabilirsiniz. ANSI standartlarına göre, bir derleyici birbiri içinde en az 15 adet switch kalıbı tanımlama imkanı sağlamalıdır. Aşağıda birbiri içinde tanımlanmış 2 switch kalıbı gösterilmektedir. Koyu renkle yazılmış olan ifadeler dışta kalan switch kalıbına aittir: Alıntı:
Şimdi, bu özelliği bir örnek üzerinde incelemeye çalışalım: Alıntı:
Yukarıdaki örnekte, program 1, 2 veya 3 sayılarından birini girmenizi ister. Sonra girdiğiniz değeri id1 değişkenine atar. İlk switch kalıbını id1 değişken değeri ile çalıştırır. Eğer girilen değer, 1, 2 veya 3 sayılarından biri değilse, case satırlarında yer alan sabit değerlerin hiçbiri girdiğiniz değer ile aynı olmadığından, sadece switch kalıbı içinde yer alan default satırındaki aşağıdaki cümleyi ekrana yazar: Verilen seçeneklerden birini girmediniz! Eğer 1 sayısını girerseniz, ilk case satırında koşul sağlandığı için program 'A' veya 'B' harflerinden birisini girmenizi ister. Eğer 'A' harfini girerseniz, program fonk1() fonksiyonunu, 'B' harfini girerseniz fonk2() fonksiyonunu çalıştırarak ilgili fonksiyonlarda yer alan karakter dizilerini ekrana yazar. Eğer, başlangıçta 2 sayısını girerseniz, program ikinci case satır koşulu sağlandığı için "2 numaralı seçeneği seçtiniz!" ifadesini, 3 sayısını girerseniz, üçüncü case satır koşulu sağlandığı için "3 numaralı seçeneği seçtiniz!" ifadesini ekrana yazar. Eğer girdiğiniz değer 'A' veya 'B' harflerinden farklı ise sadece switch kalıbı içinde yer alan default satırındaki aşağıdaki cümleyi ekrana yazar: Belirtilen harflerden birini girmediniz! Şimdi, başka bir örnek üzerinde switch kalıbının farklı bir kullanımını incelemeye çalışalım: Alıntı:
Daha önce break ifadesinin tanımlanmasının isteğinize bağlı olduğunu görmüştük. Bir switch kalıbının sona ermesi için ya program bir break ifadesi ile karşılaşmalıdır ya da kalıbın sonu gelmiş olmalıdır. Şimdiye kadar gördüğümüz örneklerde switch kalıbında en sonda yer alan hariç bütün case satırları için break ifadesi tanımladık. Bu durumda, sadece switch kalıbının tek bir case satırıyla ilgili işlem satır veya satırları çalışır. Eğer bir switch kalıbında son case satırı dışındaki case satırlarından birinde break ifadesi tanımlanmazsa ve bu case satırında yer alan sabit değer switch kalıbının kontrol değişkeni ile aynı değeri taşıyorsa, bu case satırı ile ilgili işlemler tamamlandıktan sonra, break ifadesi olmadığından eğer varsa bir sonraki case satırı ile ilgili işlemler yapılır. Bu işlem program bir break ifadesi ile karşılaşana veya switch kalıbının sonu gelene kadar devam eder. Yani bu durumda, switch kalıbının birden fazla seçeneği içinde yer alan işlemler yerine getirilmiş olur. Şimdi, bu özelliği bir örnek üzerinde incelemeye çalışalım: Alıntı:
İki Üç Dört Beş Kaynak: [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] |
| All times are GMT +3. The time now is 18:45. |
Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.