C alıştırmaları
Kısa ve gerçekçi problemlerle C’de döngü, işaretçi, bellek ve dosya becerilerini pekiştirir, her çözümü otomatik denetleyiciyle sınarsın.
Seviye 201 · 19 ders · 18 pratik lab
Dersler
Isınma
- Alıştırma: koşul ve döngü bulmacaları
- Alıştırma: ikili, sekizli, onaltılı dönüşüm
- Alıştırma: bit maskeleri ve bayraklar
- Alıştırma: dizide en büyük, en küçük ve tekrar
- Alıştırma: dizgi ters çevirme ve palindrom
- Kısa görev: karışık ısınma seti
İşaretçi ve bellek
- Alıştırma: işaretçiyle takas ve dizi döndürme
- Alıştırma: dinamik matris çarpımı
- Alıştırma: kendi split işlevin
- Alıştırma: sızıntıyı bul ve kapat
- Alıştırma: bir eksik bir fazla hatalarını düzelt
- Kısa görev: Valgrind temiz çıktı verene kadar
Dosya ve araç
- Alıştırma: wc benzeri sayaç
- Alıştırma: küçük bir grep
- Alıştırma: sort ve uniq benzeri araç
- Alıştırma: CRC32 sağlama toplamı
- Alıştırma: Sezar ve XOR ile kodlama, neden şifreleme sayılmaz
- Kısa görev: komut satırı aracını testleriyle teslim et
Bitirme
- Bitirme görevi: otomatik denetleyiciden geçen beş problem
Pratik lablar
- Roma rakamlarını sayıya çevirmek: Roma rakamıyla yazılmış bir dizgiyi tamsayıya çeviren fonksiyonu yaz; geçersiz harflerde -1 dönsün.
- Gray kodu üretmek ve çözmek: Bir sayıyı Gray koduna çeviren ve geri dönüştüren fonksiyonları bit işlemleriyle yaz.
- IPv4 adresini sayıya çevirmek: Noktalı IPv4 adresini 32 bit sayıya çevirip geri yazan fonksiyonları yaz; 256 ve eksik nokta gibi hatalar reddedilsin.
- Diziyi k adım döndürmek: Bir diziyi ek bellek kullanmadan sağa k adım döndüren fonksiyonu yaz; k dizi boyundan büyük olabilir.
- Tekrarlı karakterleri sıkıştırmak: "aaabcc" girdisini "a3b1c2" yapan sıkıştırma fonksiyonunu çıktı tamponu sınırını aşmadan yaz.
- Anagram sözcükleri gruplamak: Bir sözcük listesindeki anagramları gruplayıp her grubu tek satırda yazdır; büyük-küçük harf farkı önemsenmesin.
- Dinamik matrisin devriğini almak: malloc ile ayrılmış bir satır x sütun matrisin devriğini yeni bir matriste üret ve ikisini de serbest bırak.
- Parçalanmış dizgi dizisini sızıntısız boşaltmak: Bir split fonksiyonunun döndürdüğü char** dizisini serbest bırakan yardımcıyı yaz ve Valgrind ile temizliği kanıtla.
- Gizli bir eksik-fazla hatasını bulmak: Testleri ara sıra çöken bir kopyalama döngüsündeki bir eksik-fazla hatasını ASan ile bul ve düzelt.
- Kuyrukta serbest bırakılmış belleği kullanmayı önlemek: Bir iş kuyruğunda serbest bırakılan düğüme sonradan erişen hatayı bul, düzelt ve Valgrind temiz rapor versin.
- head benzeri küçük araç: Bir dosyanın ilk N satırını yazdıran, -n seçeneğini ve stdin'i destekleyen aracı yaz.
- cut benzeri alan seçici: Ayraç ve alan numarası alıp her satırdan istenen alanı yazdıran aracı yaz; eksik alanlı satırlar boş geçsin.
- tr benzeri karakter dönüştürücü: a-z gibi aralıkları destekleyen, karakterleri eşleyen ya da silen bir tr benzeri araç yaz ve testleri geçir.
- Adler-32 sağlama toplamı: Adler-32 sağlama toplamını yaz ve bilinen örnek değerlerle karşılaştıran testleri geçir.
- Base64 kodlayıcı yazmak: Rastgele bayt dizilerini Base64'e çeviren kodlayıcıyı dolgu karakterleri dahil doğru yaz.
- Katı Base64 çözücüsü: Geçersiz karakter, yanlış dolgu ve eksik uzunlukta hata dönen, tampon sınırını aşmayan bir Base64 çözücü yaz.
- Başlatılmamış toplam değişkenini bulmak: Bazen doğru bazen saçma sonuç veren fatura toplayıcıda başlatılmamış değişkeni bul, düzelt ve Valgrind'in temiz çıktığını göster.
- Çakışan bellek kopyasını yakalamak: Tampon içinde kaydırma yapan metin düzenleyici çekirdeğinde çakışan bölgelerde bozulan kopyayı bul ve rastgele kaydırma testlerini geçecek şekilde onar.
Kurs hakkında
Kısa ve gerçekçi problemlerle C’de döngü, işaretçi, bellek ve dosya becerilerini pekiştirir, her çözümü otomatik denetleyiciyle sınarsın.
Ne öğreneceksin
- Isınma
- İşaretçi ve bellek
- Dosya ve araç
- Bitirme
Ön koşullar
Aynı yolun 101 düzeyindeki kurslarını bitirmiş olmak ya da o konuları biliyor olmak yeterlidir.
Lab ortamı
Dersler, tarayıcında açılan sana özel bir Kali Linux terminalinde geçer. Kurulum gerekmez; lab her derste temiz başlar.
Sık sorulan sorular
- Bu kurs benim düzeyime uygun mu?
- Kurs 201 düzeyindedir; daha düşük düzeydeki kursların konularını bildiğin varsayılır.
- Kurulum gerekir mi?
- Hayır. Her ders tarayıcında açılan sana özel bir lab ortamında geçer.
- Dersler nasıl işleniyor?
- Her ders 8 ile 10 adımdan ve bir kısa sınavdan oluşur. İlk adımlarda yazman gereken komut gösterilir, sonraki adımlarda yardım azalır; iki denemede takılırsan çözüm açılır.
- Ücretsiz deneyebilir miyim?
- Evet. Her kursun ilk üç dersi ücretsizdir.