NİŞANTAŞI ÜNİVERSİTESİ Algoritma ve Programlama Kontrol deyimleri NİŞANTAŞI ÜNİVERSİTESİ © Mühendislik Mimarlık Fakültesi mmf.nisantasi.edu.tr
NİŞANTAŞI ÜNİVERSİTESİ © Kontrol deyimleri Kontrol deyimleri programın akış yönünü değiştirebilen deyimlerdir. Kontrol deyimleri ile programın akışı farklı noktalara yönlendirilebilmektedir. Bunlar C dilinin önceden belirlenmiş bazı sentaks kurallarına uyarlar ve kendi sentaksları içinde en az bir anahtar sözcük içerirler. C dilinde aşağıdaki kontrol deyimleri vardır: if deyimi while döngü deyimi do while döngü deyimi for döngü deyimi break deyimi continue deyimi switch deyimi goto deyimi NİŞANTAŞI ÜNİVERSİTESİ ©
NİŞANTAŞI ÜNİVERSİTESİ © If deyimi C dilinde program akışını kontrol etmeye yönelik en önemli deyim if deyimidir. En basit biçimiyle if deyiminin genel sentaksı aşağıda verilmiştir: if (ifade) deyim; if parantezi içindeki ifadeye kontrol ifadesi (control expression) denir. if parantezini izleyen deyime, if deyiminin doğru kısmı (true path) denir. if deyiminin doğru kısmını oluşturan deyim yalın deyim (simple statement) olabileceği gibi, bileşik bir deyim (compound statement) ya da başka bir kontrol deyimi de (control statement) olabilir. NİŞANTAŞI ÜNİVERSİTESİ ©
NİŞANTAŞI ÜNİVERSİTESİ © If deyimi Yanlış Kısmı Olan if Deyimi if kontrol deyimi else anahtar sözcüğünü de içerebilir. Böyle if deyimine yanlış kısmı olan if deyimi denir. Yanlış kısmı olan if deyiminin genel biçimi aşağıdaki gibidir: if (ifade) deyim1; else deyim2; Bu kez if deyiminin doğru kısmını izleyen deyimden sonra else anahtar sözcüğünün daha sonra ise bir başka deyimin yer aldığını görüyorsunuz. Genel biçimdeki deyim2’ye if deyiminin yanlış kısmı (false path) denir. NİŞANTAŞI ÜNİVERSİTESİ ©
NİŞANTAŞI ÜNİVERSİTESİ © If deyimi NİŞANTAŞI ÜNİVERSİTESİ ©
NİŞANTAŞI ÜNİVERSİTESİ © Koşul operatörü Koşul operatörü (conditional operator) C dilinin 3 operand alan tek operatörüdür. Koşul operatörünün 3 operandı, ifade tanımına uygun herhangi bir ifade olabilir. Koşul operatörünün genel sentaksı aşağıdaki gibidir: ifade1 ? ifade2 : ifade3 Koşul operatörü yukarıdaki biçimden de görüldüğü gibi birbirinden ayrılmış iki atomdan oluşmaktadır. ? ve : atomları operatörün üç operandını birbirinden ayırır. m = x > 3 ? y + 5 : y – 5; Aynı işlem if deyimi ile de yapılabilir : if (x > 3) m = y + 5; else m = y – 5; NİŞANTAŞI ÜNİVERSİTESİ ©
NİŞANTAŞI ÜNİVERSİTESİ © DÖNGÜLER Programlama konusunda -hangi dil olursa olsun- en kritik yapılardan biri döngülerdir. Döngüler, bir işi, belirlediğiniz sayıda yapan kod blokları olarak düşünülebilir. Ekrana 10 kere "Merhaba Dünya" yazan bir programda, "Merhaba Dünya" yazdıran kodu aslında tek bir defa yazarsınız, döngü burada devreye girip, sizin için bu kodu istediğiniz sayıda tekrarlar. Döngüleri bu kadar kritik yapan unsur; iyi yazılıp, optimize edilmediği takdirde, bilgisayarınızın işlem gücünü gereksiz yere tüketmesi ve harcanan zamanı arttırmasıdır. Benzer şekilde, iyi yazılmış bir döngü, programınızı hızlı çalıştıracaktır. Bütün döngüler temelde iki aşamayla özetlenebilir. Aşamalardan biri, döngünün devam edip etmeyeceğine karar verilen mantıksal sorgu kısmıdır. Örneğin, ekrana 10 kere "Merhaba Dünya" yazdıracaksanız, kaçıncı seferde olduğunu, koşul kısmında kontrol edersiniz. Diğer aşama, döngünün ne yapacağını yazdığınız kısımdır. Yani ekrana "Merhaba Dünya" yazılması döngünün yapacağı iştir. Döngünün devam edip etmeyeceğine karar verilen aşamada, hatalı bir mantık sınaması koyarsanız, ya programınız hiç çalışmaz ya da sonsuza kadar çalışabilir. C programlama diline ait bazı döngüler; while, do while, for yapılarıdır. Bunlar dışında, goto döngü elemanı olmasına rağmen, kullanılması pek tavsiye edilmemektedir. NİŞANTAŞI ÜNİVERSİTESİ ©
NİŞANTAŞI ÜNİVERSİTESİ © Whıle döngüsü while döngüsü, en temel döngü tipimizdir. Bir kontrol ifadesiyle döngünün devam edilip edilmeyeceği kontrol edilirken, scope içinde ( yani ayraç işaretleri arasında ) kalan bütün alan işleme sokulur. İşleme sokulan kod kısmı döngü yapılacak adet kadar tekrar eder. while döngüsünün genel yapısını ve akış şemasını aşağıda görebilirsiniz: NİŞANTAŞI ÜNİVERSİTESİ ©
NİŞANTAŞI ÜNİVERSİTESİ © Do-Whıle döngüsü Göreceğimiz ikinci döngü çeşidi, do while döngüsüdür. Yaptığı iş, while ile hemen hemen aynıdır; verilen işi, döngü koşulu bozulana kadar sürdürür. Ancak while'a göre önemli bir farkı vardır. while döngülerinde, döngü içersindeki işlem yapılmadan önce, sunulan koşul kontrol edilir. Şayet koşul sağlanmıyorsa, o while döngüsünün hiç çalışmama ihtimali de bulunmaktadır. do while döngülerindeyse, durum böyle değildir. İlk çalışmada koşul kontrolü yapılmaz. Dolayısıyla, her ne şartta olursa olsun, döngünüz -en azından bir kere- çalışacaktır. Bazı durumlarda, döngü bloğu içersindeki kodların en azından bir kere çalışması gerektiğinden, do while yapısı kullanılır. do while ile ilgili genel yapıyı ve akış şemasını aşağıda bulabilirsiniz: NİŞANTAŞI ÜNİVERSİTESİ ©
NİŞANTAŞI ÜNİVERSİTESİ © For döngüsü for yapısı, yenilemeli-tekrarlamalı (İngilizce iterative) yapılarda kullanıma daha uygundur. Örneğin birbirini, sürekli tekrar eden işlemlerin yapıldığı Nümerik Analiz gibi alanlar, for döngüsü için iyi bir örnek olabilir. Programlarda, diğer iki döngüden çok daha fazla for kullanırsınız. Çünkü for sadece matematiksel hesaplama işlemlerinde değil, diziler ( array ) gibi konularda sürekli kullanılan bir yapıdır. Aşağıda for döngüsünün genel yazımını ve akış diyagramını göreceksiniz: NİŞANTAŞI ÜNİVERSİTESİ ©
NİŞANTAŞI ÜNİVERSİTESİ © kaynaklar Brian W. Kernighan , Dennis M. Ritchie, (1988), C Programlama Dili – ANSI C, DAISYSCIENCE, Editor: Dr. Rifat Çölkesen . Necati Ergin, C Ders Notları, C ve Sistem Programcıları Derneği NİŞANTAŞI ÜNİVERSİTESİ ©