C Programlama #17 | Zar Oyunu ve enum: Sihirli Sayılar Yerine Adlar
Rastgele Sayılar ve enumEğitmen: Dr. Süleyman Burak ÇELİK
Zarı at, topla: toplam tam 21 olursa kazanırsın, 21'i geçersen kaybedersin. On yedinci derste rand ve srand ile bu küçük oyunu yazıyor, oyunun durumunu enum ile tutuyor ve kazanma şansını 100 bin oyunla ölçüyoruz. Tohumu klavyeden alan programda tohum 4 ile zarlar 5, 5, 6, 2 ve 3 gelip toplam tam 21 oluyor; tohum 3 ile toplam 16'dan 22'ye çıkıp kaybediyoruz. Oyunun üç durumunu bir tam sayıyla tutmanın sorununu (durum == 1 ne demek?) sihirli sayılar üzerinden görüyor, çözüm olarak enum Durum {DEVAM, KAZANDI, KAYBETTI} tanımlıyoruz. enum sabitlerinin aslında 0'dan başlayan tam sayılar olduğunu programla, lldb hata ayıklayıcısının ise değeri adıyla (KAZANDI) gösterdiğini gerçek bir oturumla gösteriyor; ilk değeri verilen bir enum ile aylara 1'den başlayan numaralar veriyoruz. Oyunun kodunu satır satır inceliyor (zar_at fonksiyonu, durum DEVAM olduğu sürece dönen döngü) ve iki oyunu hata ayıklayıcıyla adım adım izliyoruz. 100 bin oyunda kazanma oranı yüzde 28.7 çıkıyor; bunun mantıklı olduğunu zarın ortalamasıyla (1 bölü 3.5) ve kesin hesapla (yaklaşık yüzde 28.6) doğruluyoruz. Son olarak iki tuzak: aynı sabit adını iki enum'da kullanmak derleme hatası verir; enum değişkenine 7 gibi bir sayı atamayı ise gcc ve clang -Wall ile uyarmaz, clang'ın -Wassign-enum seçeneği uyarır. Ekrandaki her çıktı, kodun gerçekten derlenip çalıştırılmasından geliyor. Bu derste: 1. rand ve srand ile bir zar oyunu: 21'e tam ulaş 2. Sihirli sayılar yerine enum: enum Durum {DEVAM, KAZANDI, KAYBETTI} 3. enum sabitleri 0'dan başlayan tam sayılardır; ilk değeri verebilirsin 4. Durum değişkeni ve while (durum == DEVAM) kalıbı 5. 100 bin oyunla kazanma şansı ve iki enum tuzağı Bölümler: 0:00 Rastgele sayılarla bir oyun 0:13 21'e tam ulaş 0:47 Sihirli sayılar yerine adlar: enum 1:26 enum sabitleri birer tam sayıdır 1:57 Oyunun kodu ve iki oyunun izi 2:45 Kazanma şansı: 100000 oyun 3:27 İki tuzak 4:12 Bugünün dört kuralı 4:42 Sonraki ders: depolama sınıfları Kaynak kitap: Paul Deitel, Harvey Deitel — C How to Program, 9. baskı (2022), §5.11. Konu sırası ve kavramlar kaynak kitaptan izlenir; anlatım, örnekler ve ekranlar özgündür. Hedef kitle: C'ye yeni başlayan tüm mühendislik ve bilgisayar/yazılım öğrencileri. Ön koşul: C Programlama #01–#16.
Bu videoyu izlemek için Premium üyelik gerekir.