C# Flow Control (Akış Kontrol Mekanizmaları)

Merhabalar,

C# serisine ilk başlamaya karar verdiğimde C# ile ilgili bir kitap okuyordum. Fark ettim ki bana ilham kaynağı olan bu kitap hakkında serilerimde sadece kaynak olarak göstermişim (Hayırsız evlat). Tabi burada önemli olan kitabın yazarı hakkında bilgi vermemiş olmam. Kitabın yazarı lisans eğitimi İstanbul Teknik Üniversitesi Elektronik ve Haberleşme Mühendisliği Bölümü’nü tamamlamış olan Sefer Algan’dır. Kendisine böyle güzel bir kaynak yarattığı için teşekkür ediyorum. Şimdi gelelim konumuza. Bu serimde yine RoadMap‘e bağlı kalarak “Akış Kontrol Mekanizmaları (Flow Control)” hakkında edindiğim yararlı bilgileri ele alacağım.

Bir önceki serimde operatörleri ele almıştım. Hatırlamak amacıyla konu başlıkları nelerdi anımsayalım. Seriye buradan ulaşabilirsiniz.

  • Operatör Nedir?
  • Operatörlerin Sınıflandırılması
  • İşlevlerine göre operatörler; Aritmetik, Karşılaştırma, Mantıksal, Bitsel, Özel Amaçlı ve Atama ve İşlemli Atama operatörleri

Her seride olduğu gibi bu seriye ilham veren motivasyon cümlesi:

“Birini eleştirmeye kalktığında, herkesin seninle aynı imkanlarla dünyaya gelmemiş olduğunu aklına getir.”

F. Scott Fitzgerald

Akış Kontrol Mekanizmaları

Kontrol yapıları programlarda çeşitli karar verme mekanizmaları kurmamıza olanak sağlar. Buda bize program yazarken analitik düşünmemizi sağlar. Yani bir problemin çözümü için hangi kontrol mekanizmaları gerekiyor hangileri gerekmiyor buna karar veririz.

Koşul İfadeleri

Koşul ifadeleri if ve switch deyimlerdir. Bu deyimlerle ilgili daha detaylı bilgiye İnternet üzerinden ulaşabilirsiniz.

Switch Deyimi ile İlgili Önemli Kurallar

  • case anahtar sözcüğünün yanındaki ifadeler sabit olmak zorundalar.
  • case ifadeleri C#’ta herhangi bir tamsayı sabiti, karakter yada string sabiti olabilir.
  • Bir switch bloğunda iki yada daha fazla sayıda aynı case ifadesi olamaz.
  • Bir switch bloğunda default case olmak zorunda değildir.
  • Akış herhangi bir case ifadesine geldiğinde, akış farklı bir case ifadesine yönlendirilmek istenirse goto anahtar sözcüğü kullanılır.

Desen Eşleştirme (Pattern Matching)

Artık bir değerin belirli bir desenle eşleşip ekleşmediğini test eden ve eşleştiği durumlarda değerden bilgi çıkartabilen desen eşleştirmesi özelliği C# 7.0 versiyonu ile birlikte gelmiştir. 3 tür pattern var. Bunlar;

Sabit Desenler (Constant Patterns)Verilen bir değerin sabit bir ifadeyle test edilmesiif(i is “0”), if(a is null)
Tür Desenleri (Type Patterns)Değerin türüyle eşleşip ekleşmediğini test edilmesiif(balance is decimal userDecimal)
var Desenleri (var Patterns)Tür deseninden farklı olarak bir test yapılır. Değerden bilgi çıkarıp değişkene atanmasıif(object is var x)

C# 7.0 ile birlikte hali hazırda mevcut olan iki ifade de Desenler’in kullanımına imkan sağlamıştır. Bunlar;

  • is operatörünün sağına artık bir tür belirlemek yerine bir desende belirtilebilir.
  • switch-case ifadelerinde artık sadece sabit bir değer değil, bir desen eşleştirilmesi de kullanılabilir.

for Döngüsü

for döngüsü ile ilgili en ilginç özellik ise sonsuz döngülerdir. Sonsuz döngüler, döngü parantezinin içinde boş ifadelerin olmasıyla yapılır. Yani döngü parantezine iki tane noktalı virgül ile bu işlem yapılır.

Akış kontrol mekanizmaları serisinin sonuna geldik. Bu başlıkta genel olarak programlama dilinin en çok kullanılan kontrol yapıları ela alınır. Ben ilginç bulduğum bilgileri paylaşmaya çalıştım eğer daha fazla bilgi sahibi olmak istiyorum derseniz arama motorlarına ilgilendiğiniz programlama dili ve akış kontrol (flow control) yazarak araştırabilirsiniz. Akış kontrol mekanizmalar sayesinde gerçek manada programlamaya ilk adım atılır. Açıkçası ben akış kontrolleri ilk öğrendiğimde çok heyecanlanmıştım. O zamanlar vay be neler yapabiliyoruz hissiyatı bırakmıştı 🙂

Bir sonraki serimde RoadMap’e bağlı kalarak Diziler (Arrays) hakkında edindiğim bilgileri paylaşıyor olacağım. Görüşmek dileğiyle.

Kaynaklar:

Her Yönüyle C# 7.0, Sefer Algan, Pusula Yayincilik,

https://docs.microsoft.com/en-us/dotnet/csharp/pattern-matching

Leave a Comment