Bir Döngünün Bölümleri (hatırlatıcı) Her döngü her zaman 3 ana bileşeni içerir: Ateşleme: değişkenleri başlangıç durumuna getir Test et: bazı bilinen şartlara karşı test et Güncelleme: test edilen değişkeni güncelle 06.04.2019
Döngü Türleri (hatırlatıcı) Sonsuz döngü: Döngünüzün gelecekte kaç kez yürütüleceğini bilmezsiniz. Örneğin, Bir kişinin kaç kitap sipariş etmiş olabileceğini bilmezsiniz Sonlu Döngü: Döngünün kaç kez yürütülmesini istediğinizi tam olarak bilirsiniz. ille de derleme anında değil 06.04.2019
For döngüleri C’ deki bir başka döngü türü de for döngüleridir. Sonlu döngüleri için oldukça uygundur. Bütün bölümler (ateşleme, test etme ve güncelleme) bir yerdedir. format: for (ateşleme ifadesi; test ifadesi; güncelleme ifadesi) İfadelerin tümü aynı yerde olduğu için, pek çok insan tekrarlama sayısı bilindiğinde while döngüsüne tercih eder. 06.04.2019
Basit For Döngüsü Yazımı For döngüleri, sonlu döngüler oluşturmak için uygundur. int counter; for (counter =1;counter <= 10;counter++) printf ("%d\n", counter); 1. Ateşleme: Başlangıç değerini belirle 2. Test koşulu: Bitirme değerini belirle 3. Güncelle: Değeri güncelle 1. Priming: Set the start value. 2. Test Condition: Set the stop value. 3. Update: Update the value. Note that each section is separated by a semicolon. Her bir bölümün noktalı virgüllerle ayrıldığına dikkat edin 06.04.2019
for Döngüsü Akış Diyagramı 1. Ateşleme: Sayıcı=1 olarak belirle 1. Priming Set counter=1 2. Test counter <= 10 TRUE 3a. print counter 3b. Update counter++; 2. Test: sayıcı <= 10’ mu 3a. Sayıcıyı yaz 3b. Sayıcı++; olarak güncelle FALSE 06.04.2019
Sonsuz Döngü for (counter=0; counter<=10; counter--) for döngülerini kullanarak hala sonsuz döngü yapabilirsiniz. for (counter=0; counter<=10; counter--) 06.04.2019
For Döngüleri Varyasyonları Arttırma negatif olabilir: for (i=100; i>=1; i--) Bu 100’den 1’e kadar geri sayar Arttırma 1’den büyük olabilir: for (i=100; i>=5; i-=5) Bu 100’den 5’e kadar 5’er 5’er geri sayar 06.04.2019
For Döngü Varyasyonları herhangi bir ifade daha karmaşık olabilir: for (i=100*y; i>=1; i--) for (i=100; i>=y/2; i--) for (i=100; i>=1; i-=4*y) 06.04.2019
For Döngü Varyasyonları virgüller kullanarak, herhangi bir ifadenin içine birden fazla deyim koyabilirsiniz. for (i=100, y=0; i>=1; i--) 06.04.2019
İç İçe For Döngüleri Bir for döngüsünü bir başka for döngüsü içine yerleştirmek mümkündür. int rows, columns; for (rows=1; rows<=5; rows++) { for (columns=1; columns<=10; columns++) printf ("*"); printf ("\n"); } Output: Çıktı: ********** Outer Loop Dıştaki döngü Inner Loop 06.04.2019 İçteki döngü
İç İçe For Döngüleri, Örnek #2 Output: Çıktı: * ** *** **** ***** #include <stdio.h> main () { int rows, columns; for (rows=1; rows<=5; rows++) for (columns=1; columns<=rows; columns++) printf ("*"); printf ("\n"); } Dıştaki döngü Outer Loop İçteki döngü Inner Loop 06.04.2019
Uyarılar Sayıcı olarak gerçelleri (float veya double) kullanmayın Tam ve doğru olmayan sayıcı değerleri ve döngü sonlandırma amaçları için hatalı değerlendirmelere neden olur. for döngüsü bileşenlerini ayırmak için noktalı virgüller yerine virgüller kullanmayın (çok genel hata) if ve while’ da olduğu gibi, parantezden hemen sonra bir noktalı virgül koymayın - boş bir döngü olacaktır. 06.04.2019
Bir-öteye hatası }/* end for counter */ counter < 10 İlk örnekte, burada gösterildiği gibi, şöyle yazılmış olsaydı counter < 10 döngü 9 kez yürütülmüş olurdu, istendiği gibi 10 kere değil for (counter = 1; counter <= 10; counter++) { printf ("%d\n", counter); }/* end for counter */ /* sayıcı için son */ 06.04.2019
Bir-öteye hatalarından kaçınmak için yardım Kontrollerinizi <= formatında yapmaya çalışın < değil Şu şekilde koddan sakının sayıcı < 11 veya sayıcı < 10 06.04.2019
İyi Programlama Pratikleri Eğer döngüde sayıcı değişkeni kullanıyorsanız (bazı programcılar bundan tamamen kaçınır) onun değerini değiştirmeyin! Çıkmaya zorlamak için onun değerini elinizle değiştirmeye kalkışmayın Yakalaması zor, güç algılanan hatalara neden olabilir Bunun yerine mantığınızı değiştirin 06.04.2019
İyi Programlama geri sayım for kontrol yapısı içine başka ifadeler koymayın Diğer değişkenlerin kullanımı, onları tekrarlamak isteyip istemediğinize bağlı olarak gövdeden önce veya gövdenin içinde bulunabilir. Her bir ana kontrol yapısından önce ve sonra bir boş satır koyun Mümkünse, iç içe yapıları üç seviye ile sınırlandırın Üç seviyeden fazla girintili yazma karışıklık getirebilir. Mümkünse for kontrolü başlığını bir satırla sınırlandırın 06.04.2019
Harfler, sayıları temsil eden rakamlar ve diğer semboller olabilir. Karakterler Harfler, sayıları temsil eden rakamlar ve diğer semboller olabilir. Kaynak programlarda blok oluşturmak için temeldir Her program karakterleri doğru olarak birleştirildiğinde komutlar olarak yorumlanan karakterlerin birleştirilmesidir. Bir program karakter sabitler içerebilir. 06.04.2019
E.g. ‘A’, ‘a’, ‘1’ or ‘\n’ Karakter sabitler Karakterler int değerleri aracılığıyla dahili olarak temsil edilirler. Karakterlerin çevresinde tek tırnak kullanarak onlara başvurabilirsiniz. E.g. ‘A’, ‘a’, ‘1’ or ‘\n’ Bilgisayar bunları sayılar olarak depoladığında gerçekten neler oluyor? ‘A’ nın tamsayı değeri 65’dir ve ‘a’ nınki 97’dir, vb. Ek D’yi görün, sayfa 1198, metninizde her bir karakterin tamsayı değerini bir tablo olarak görmek için 06.04.2019
karakter değişkenlerinin bildirilmesi Tamsayılar olarak kaydedildiklerinden, şöyle kullanabiliriz int gradeLetter ; Daha iyisi, daha anlaşılır kullanım char gradeLetter ; 06.04.2019
char değerlerini scanf fonksiyonu ile okuyabilirsiniz karakterleri okuma char değerlerini scanf fonksiyonu ile okuyabilirsiniz C, bir giriş satırındaki karakterlerin her seferinde bir tanesini okumaya izin veren getchar() fonksiyonunu sağlar. 06.04.2019
getchar() stdio.h kütüphanesinde bulunur Hatırlatıcı: Bir fonksiyon, diğer programların bazı işleri yerine getirebilmesi için kullandığı küçük bir program gibidir. (printf() kullandığınız bir örnek) getchar() standart girişten (klavye) girilen bir karakter için bir tamsayı kod geri döndürür. char c; c = getchar() ; 06.04.2019
bir karakterin yazdırılması Printf %c format kontrol metni ile kullanılabilir Örneğin, printf( “The character is %c\n”, c ); stdio.h’daki putchar() isimli bir başka fonksiyon kullanılabilir putchar( c ) ; 06.04.2019
putchar() Standart çıkışa (ekran) bir karakter yazar yine stdio.h’dan çağrılan bir fonksiyondur 06.04.2019
getchar() kullanımı örneği #include <stdio.h> int main() { char c ; /* declare character variable */ /* karakter değişkenini tanımlama */ /* read a character and store it in c */ /* bir karakter oku ve c’de depola */ c = getchar() ; /* print it twice, two different ways */ /* iki kere yaz, iki değişik şekilde */ printf("%c\n", c ); putchar( c ) ; /* one character at a time so here’s the newline */ /* her seferinde bir karakter böylece işte yeni satır */ c = '\n' ; putchar( c ); } /* end program */ /* program sonu */ 06.04.2019
scanf kullanımına örnek #include <stdio.h> int main () { char c; printf ("Enter a character: "); scanf ("%c", &c); printf ("You entered: %c\n", c); printf ("You entered: %d\n", c); return 0; } Enter a character: c You entered: c You entered: 99 Note the difference in format specifiers. Format belirleyicilerdeki farka dikkat edin 06.04.2019
Problem Harf notlarını A, B, C, D, F şeklinde alabilmek için bir nöbetçili while döngüsü kullanın. Notları sayısal karşılıklarına dönüştürün, aşağıdaki tabloyu baz alarak, sonra ortalama notu sayısal formatta yazdırın. 0.0 1.0 2.0 3.0 4.0 Num F D C B A Letter 06.04.2019