Arcade Türü Oyun Programlamayı ve Bilgisayar Bilimleri Öğrenin

Arcade Türü Oyun Programlamayı
ve Bilgisayar Bilimleri Öğrenin

Chapter 6: Döngülere Dönüş

Oyunlar çok sayıda karışık döngüyü gerektirirler. Bu bölüm, döngülerde nasıl uzman olunabileceğini öğrenmek için bir meydan okuma bölümüdür. Bölümün sonunda bu bölümde yer alan problemleri anlarsanız kendinizin bir döngü uzmanı olduğunu onaylayabilirsiniz.

Döngü uzmanı olmak sizin amacınız değilse bile en azından ilk sekiz problemin cevaplarını tam olarak yazabildiğinizden emin olun. Bu size bu kitabın devamındaki çalışmalar için gerekli bilgiyi verecektir. Ve bunun yanında, bir döngü uzmanı olmak hiçbir zaman hiçkimseye bir buluşma ayarlamayacaktır. (Bana inanın, denedim.)

Cevaplar için videolu açıklamalar ve kod cevapları için "animasyonlar" vardır. Sadece "step" butonuna basın ve kodun nasıl işlediğini görün.

6.1 Print İfadesi Bitiş Karakterleri

Varsayılan olarak, print ifadesi yazılan şeyin sonuna satır başı karakteri koyar. Bu, çıktının bir sonraki satırını sonraki satıra yazdırmayı sağlayan bir karakterdir. Çoğu zaman bu bizim istediğimiz şeydir. Bazen, değildir. Eğer aynı satırda yazdırmaya devam etmek istiyorsak, sona yazılan varsayılan karakteri değiştirebiliriz. Örneğin:

print ("Pembe")
print ("Ahtapot")

Bunun yazdıracağı:
Pembe
Ahtapot

Ve yeni end karakteri seçeneğini kullanarak, şu kodu oluşturabiliriz:

print ("Pembe", end="")
print ("Ahtapot")

Bunun yazdıracağı:
PinkOctopus

Boş bir string yerine ayrıca bir boşluk da kullanabiliriz:

print ("Pembe", end=" ")
print ("Ahtapot")

Bunun yazdıracağı:
Pembe Ahtapot

Burada farklı bir örnek var, bir değişken kullanılıyor:

i=0
print (i, end=" ")
i=1
print (i, end=" ")

Bunun yazdıracağı:
0 1

6.2 İleri seviye döngüleme problemleri

  1. Alttaki gibi on tane yıldız (*) gösteren kodu yazın:
    * * * * * * * * * *
    

    Bu koda for döngüsü kullanarak ve ayrıca her yıldızı ayrı ayrı sonucu yazdırın, tek print ifadesiyle hepsini yazdırmayın. Bu iki satırlık bir kodla yapılabilir; bir for döngüsü ve bir print ifadesi.

    Nasıl yapacağınızı çözdüğünüzde, ya da pes ettiğinizde, cevap için burayı tıklayın.

  2. Alttakini yazdıran bir kod yazın:
    * * * * * * * * * *
    * * * * *
    * * * * * * * * * * * * * * * * * * * *
    

    Bu tıpkı önceki problem gibidir ancak ayrıca beş ve yirmi yıldız yazdırıyor. for döngüsünü gerektiği gibi ayarlayarak önceki sorudan kopyalayın ve yapıştırın.

    Nasıl yapacağınızı çözdüğünüzde, ya da pes ettiğinizde, cevap için burayı tıklayın.

  3. Biri iç içe olmak üzere iki for döngüsü kullanarak alttaki 10x10 dikdördgeni yazdırın:
    * * * * * * * * * *
    * * * * * * * * * *
    * * * * * * * * * *
    * * * * * * * * * *
    * * * * * * * * * *
    * * * * * * * * * *
    * * * * * * * * * *
    * * * * * * * * * *
    

    Bu soru hakkında cevaba bakmadan önce en az on dakika çalışın. Problem 1'e bir göz atın. Problem 1'deki kod bir satır yıldız oluşturuyor ve 10 kere tekrarlanması gerekli.

    Nasıl yapacağınızı çözdüğünüzde, ya da pes ettiğinizde, cevap için burayı tıklayın.

  4. Use two for loops, one of them nested, to print the following 5x10 rectangle: Biri iç içe olmak üzere iki for döngüsü kullanarak alttaki 5x10 dikdördgeni ekrana yazdırın:
    * * * * *
    * * * * *
    * * * * *
    * * * * *
    * * * * *
    * * * * *
    * * * * *
    * * * * *
    * * * * *
    * * * * *
    

    Bu önceki probleme oldukça benzer. Döngülerdeki menzilleri (ranges) deneyerek tam olarak hangisinin kontrol ettiğini bulun.

    Nasıl yapacağınızı çözdüğünüzde, ya da pes ettiğinizde, cevap için burayı tıklayın.

  5. Biri içte iki for döngüsü kullanarak alttaki 20x5 dikdördgeni yazdırın:
    * * * * * * * * * * * * * * * * * * * *
    * * * * * * * * * * * * * * * * * * * *
    * * * * * * * * * * * * * * * * * * * *
    * * * * * * * * * * * * * * * * * * * *
    * * * * * * * * * * * * * * * * * * * *
    

    Tekrar, Problem 3 ve Problem 4'te olduğu gibi fakat farklı menzil değerleriyle.

    Cevap için buraya tıklayın.

  6. Alttakini ekrana yazdıracak kodu yazın:
    0 1 2 3 4 5 6 7 8 9
    0 1 2 3 4 5 6 7 8 9
    0 1 2 3 4 5 6 7 8 9
    0 1 2 3 4 5 6 7 8 9
    0 1 2 3 4 5 6 7 8 9
    0 1 2 3 4 5 6 7 8 9
    0 1 2 3 4 5 6 7 8 9
    0 1 2 3 4 5 6 7 8 9
    0 1 2 3 4 5 6 7 8 9
    0 1 2 3 4 5 6 7 8 9
    

    İç içe iki döngü kullanın. İlk satırı bir döngüyle bir de döngü kullanmadan yazdırın.

    print("0 1 2 3 4 5 6 7 8 9")
    

    İpucu: İlk olarak, ilk satırı yazdıran bir döngü oluşturun. Daha sonra onu kapsayan başka bir döngü oluşturup 10 kere tekrar ettirin. i veya j değişkenlerini kullanın. Bu örnek ve bir sonraki bu indeks değişkenlerinin ne yaptığını anlamaya yardım ediyor.

    Cevaba bakmadan önce bu soru üzerinde en az on dakika çalışın. Cevap üzerinde on dakika çalışırken harcanan zaman cevabın kendisinden çok daha önemlidir. Cevap için burayı tıklayın.

  7. Önceki programı şunu yazdırcak şekilde düzenleyin:
    0 0 0 0 0 0 0 0 0 0 
    1 1 1 1 1 1 1 1 1 1 
    2 2 2 2 2 2 2 2 2 2 
    3 3 3 3 3 3 3 3 3 3 
    4 4 4 4 4 4 4 4 4 4 
    5 5 5 5 5 5 5 5 5 5 
    6 6 6 6 6 6 6 6 6 6 
    7 7 7 7 7 7 7 7 7 7 
    8 8 8 8 8 8 8 8 8 8 
    9 9 9 9 9 9 9 9 9 9 
    
    Cevap için buraya tıklayın.
  8. Alttaki çıktıyı veren bir kod yazın:
    0
    0 1
    0 1 2
    0 1 2 3
    0 1 2 3 4
    0 1 2 3 4 5
    0 1 2 3 4 5 6
    0 1 2 3 4 5 6 7
    0 1 2 3 4 5 6 7 8
    0 1 2 3 4 5 6 7 8 9
    

    İpucu: Bu tıpkı 6. soru gibidir fakat döngünün içerisinde döngüler artık kesin bir sayıda dönmüyor. range(10) fonksiyonunu kullanamyın, onun yerine range miktarını kendiniz ayarlayın.

    Son üzerinde en az on dakika çalıştıktan sonra, Cevap için buraya tıklayın.

  9. Alttaki kod ne yazdıracaktır:
    0 1 2 3 4 5 6 7 8 9
      0 1 2 3 4 5 6 7 8
        0 1 2 3 4 5 6 7
          0 1 2 3 4 5 6
            0 1 2 3 4 5
              0 1 2 3 4
                0 1 2 3
                  0 1 2
                    0 1
                      0
    

    İpucu: Bu zor bir örnektir. İki iç içe döngü gereklidir. İlk döngü boşlukları ve daha sonra sayıları yazdıracaktır.

    Başlamak için, şunu çıktı olarak veren bir döngü yazmaya çalışın:

    0 1 2 3 4 5 6 7 8 9
    0 1 2 3 4 5 6 7 8
    0 1 2 3 4 5 6 7
    0 1 2 3 4 5 6
    0 1 2 3 4 5
    0 1 2 3 4
    0 1 2 3
    0 1 2
    0 1
    0
    

    Daha sonra, bu çalıştığında, dış döngüden sonra ve iç döngüden önce bir döngü ekleyin. Bu döngüyü diğer döngüleri doğru şekilde hizalamak için yeterli boşlukları yazdırmada kullanın.

    Bu sorun üzerinde en az on dakika çalıştıktan sonra, çözüm için burayı tıklayın

  10. Alttaki çıktıyı veren bir kod yazın (Hizalamayı sağlamak zordur, en azından sayıları elde etmeye çalışın):
      1   2   3   4   5   6   7   8   9 
      2   4   6   8  10  12  14  16  18 
      3   6   9  12  15  18  21  24  27 
      4   8  12  16  20  24  28  32  36 
      5  10  15  20  25  30  35  40  45 
      6  12  18  24  30  36  42  48  54 
      7  14  21  28  35  42  49  56  63 
      8  16  24  32  40  48  56  64  72 
      9  18  27  36  45  54  63  72  81 
    

    İpucu: Problem 1'de verilen kodu şunu yazacak şekilde düzenleyerek başlayın:

     0  0  0  0  0  0  0  0  0  0 
     0  1  2  3  4  5  6  7  8  9 
     0  2  4  6  8  10  12  14  16  18 
     0  3  6  9  12  15  18  21  24  27 
     0  4  8  12  16  20  24  28  32  36 
     0  5  10  15  20  25  30  35  40  45 
     0  6  12  18  24  30  36  42  48  54 
     0  7  14  21  28  35  42  49  56  63 
     0  8  16  24  32  40  48  56  64  72 
     0  9  18  27  36  45  54  63  72  81 
    

    Daha sonra şunu yazacak şekilde düzenleyin:

     1  2  3  4  5  6  7  8  9 
     2  4  6  8  10  12  14  16  18 
     3  6  9  12  15  18  21  24  27 
     4  8  12  16  20  24  28  32  36 
     5  10  15  20  25  30  35  40  45 
     6  12  18  24  30  36  42  48  54 
     7  14  21  28  35  42  49  56  63 
     8  16  24  32  40  48  56  64  72 
     9  18  27  36  45  54  63  72  81 
    

    Son olarak basılan numara 10'dan azsa boşlukları yazdırmak için bir if ifadesi kullanın.

    Problem üzerinde en az on dakika çalıştıktan sonra, cevap için buraya tıklayın.

  11. Alttakini yazdıran bir kod yazın:
                      1
                    1 2 1
                  1 2 3 2 1
                1 2 3 4 3 2 1
              1 2 3 4 5 4 3 2 1
            1 2 3 4 5 6 5 4 3 2 1
          1 2 3 4 5 6 7 6 5 4 3 2 1
        1 2 3 4 5 6 7 8 7 6 5 4 3 2 1
      1 2 3 4 5 6 7 8 9 8 7 6 5 4 3 2 1
    

    İpucu: Önce şunu yazdıran bir kod yazın:

    1 
    1 2 
    1 2 3 
    1 2 3 4 
    1 2 3 4 5 
    1 2 3 4 5 6 
    1 2 3 4 5 6 7 
    1 2 3 4 5 6 7 8 
    1 2 3 4 5 6 7 8 9 
    

    Daha sonra bunu yazdıran bir kod yazın:

    1 
    1 2 1 
    1 2 3 2 1 
    1 2 3 4 3 2 1 
    1 2 3 4 5 4 3 2 1 
    1 2 3 4 5 6 5 4 3 2 1 
    1 2 3 4 5 6 7 6 5 4 3 2 1 
    1 2 3 4 5 6 7 8 7 6 5 4 3 2 1 
    1 2 3 4 5 6 7 8 9 8 7 6 5 4 3 2 1 
      

    Daha sonra son cevabı ekrana yazdırmak için boşlukları ekleyerek bitirin.

    Problem üzerinde en az on dakika çalıştıktan sonra, cevap için buraya tıklayın.

  12. Alttakini gösteren bir kod yazın:
                      1
                    1 2 1
                  1 2 3 2 1
                1 2 3 4 3 2 1
              1 2 3 4 5 4 3 2 1
            1 2 3 4 5 6 5 4 3 2 1
          1 2 3 4 5 6 7 6 5 4 3 2 1
        1 2 3 4 5 6 7 8 7 6 5 4 3 2 1
      1 2 3 4 5 6 7 8 9 8 7 6 5 4 3 2 1
        1 2 3 4 5 6 7 8
          1 2 3 4 5 6 7
            1 2 3 4 5 6
              1 2 3 4 5
                1 2 3 4
                  1 2 3
                    1 2
                      1
    

    Bu problem 11 ve 9'un birleşimiyle yapılabilir.

    Problem üzerinde en az on dakika çalıştıktan sonra, cevap için buraya tıklayın.

  13. Alttakini gösteren bir kod yazın:
                      1
                    1 2 1
                  1 2 3 2 1
                1 2 3 4 3 2 1
              1 2 3 4 5 4 3 2 1
            1 2 3 4 5 6 5 4 3 2 1
          1 2 3 4 5 6 7 6 5 4 3 2 1
        1 2 3 4 5 6 7 8 7 6 5 4 3 2 1
      1 2 3 4 5 6 7 8 9 8 7 6 5 4 3 2 1
        1 2 3 4 5 6 7 8 7 6 5 4 3 2 1
          1 2 3 4 5 6 7 6 5 4 3 2 1
            1 2 3 4 5 6 5 4 3 2 1
              1 2 3 4 5 4 3 2 1
                1 2 3 4 3 2 1
                  1 2 3 2 1
                    1 2 1
                      1
    
    
    

    Problem üzerinde en az on dakika çalıştıktan sonra, cevap için buraya tıklayın.

6.3 Basit Tekrar

Çoktan seçmeli tekrarı deneyin. Bu sorulara cevap verip veremediğinizi görün.

  1. Bu program ekrana ne yazdırır?
    x=0
    while x < 10:
        print (x)
        x=x+2
    
  2. Bu program ekrana ne yazdırır?
    x=1
    while x < 64:
        print (x)
        x=x*2
    
  3. Bu program ekrana ne yazdırır?
    x=5
    while x >= 0:
        print (x)
        if x == "1":
            print ("Fırlatıldı!")
        x=x-1
    
  4. Alttaki kodu düzeltin:
    x=input("Sıfırdan büyük bir sayı girin: ")
    
    while x <= 0:
        print "Bu sayı çok küçük. Sıfırdan büyük bir sayı girin: "
    
  5. Alttaki kodu düzeltin:
    x=10
    
    while x < 0:
        print (x)
        x-1
    
    print ("Fırlatıldı")
    
  6. Bu program ekrana ne yazdırır?
    print (3==1+2)
    x=5
    print (x==5)
    print (3<4)
    print (4<4)
    print ("Hi" == "Hi")
    print ("hi" == "Hi")
    print ("a" < "b")
    t=5==5
    print (t)
    done=False
    if done:
        print ("İşim bitti.")
    else:
        print ("İşim bitmedi.")
    

You are not logged in. Log in here and track your progress.