Algo-I
13 Diziler

String İşlemleri ve Nehir Bulmacasının Kodlanması

Metin de bir dizidir: karakterler, String metotları ve metin algoritmaları. Dönemin kapanış motifi: 1. haftada elle çözdüğünüz nehir bulmacasını bu kez durum dizisiyle Java'da yazıyoruz.

Teori
Cuma 18 Aralık · A 09.15 / B 13.15
Laboratuvar
A Çarşamba 23 Aralık 13.15 · B Perşembe 24 Aralık 15.15(teoriden bir hafta sonra) Lab içeriği ↓
Ders planı
char tipi ve Unicode, String'in değişmezliği, length/charAt/substring/indexOf/equals, karakter sayma ve palindrom; 1. haftanın nehir bulmacasını dizilerle kodlama

Teori

Öğrenme hedefleri

Bu haftanın sonunda:

  • 1 char ile int ilişkisini ve String'in değişmez olduğunu açıklar.
  • 2 length, charAt, substring, indexOf, equals, toUpperCase metotlarını kullanır; == ile equals farkını bilir.
  • 3 Karakter sayma, ters çevirme ve palindrom algoritmalarını yazar.
  • 4 Nehir bulmacasını durum dizisi, hamle döngüsü ve kısıt kontrolü ile Java'da kodlar.

Haftanın Bulmacası

Nehir bulmacası geri döndü. 1. haftada sakladığınız kağıdı çıkarın. Bu kez durumu dört kutulu bir boolean dizisi olarak yazın: [çiftçi, tilki, tavuk, mısır] karşı kıyıda mı? Her hamle bir kutuyu (ve çiftçiyi) çevirir; kısıtlar iki if. Kağıtta kodlayın, sonra Java’da.

Ders Notları

İşlenecek başlıklar:

  • char: 16 bit sayı, Unicode; karakter aritmetiği (‘A’ + 1)
  • String nesneleri değişmezdir (immutable); her değişiklik yeni String
  • length(), charAt(), substring(), indexOf(), contains()
  • Karşılaştırma: equals ve compareTo; == neden yanlış
  • toUpperCase, toLowerCase, trim, split
  • Karakter sayma; String’i char dizisine çevirme; ters çevirme; palindrom
  • Doubloon problemi (Think Java 7.9): dizi ile harf sayma
  • Nehir bulmacasının kodlanması: durum dizisi, güvenli mi metodu, hamle döngüsü, çözüm yolu yazdırma
  • Yapay zekanın 1. haftada yazdığı çözümle karşılaştırma

Temel Kavramlar

  • char: Tek karakter; aslında bir sayı.
  • Değişmezlik (immutability): String bir kez oluşunca değişmez; metotlar yeni String döndürür.
  • charAt(i): i. karakteri verir; 0’dan başlar.
  • equals: İçerik karşılaştırması; == referans karşılaştırır.
  • Durum dizisi: Bulmacanın anlık durumunu tutan dizi; 1. haftanın “kim hangi kıyıda” sorusu.

Sahadan Örnekler

  • Arama motoru ve otomatik tamamlama: yazdığınız her harf bir String algoritmasını tetikler.
  • DNA dizileri: ACGT harflerinden oluşan devasa String’ler; gen arama tam olarak indexOf’un akıllı halidir.

Laboratuvar

Bu haftanın laboratuvarı bir hafta sonra yapılır (A Çarşamba 13.15, B Perşembe 15.15): Lab 13. Tarihler için Ders Hakkında sayfasındaki takvime bakın.

Bu haftanın araçları

  • JDK 21
  • VS Code
  • GitHub Codespaces

Etiketler:StringcharcharAtsubstringequalspalindromnehir bulmacası

Laboratuvar · Hafta 13

Lab 13 · String Algoritmaları ve Nehir Bulmacası

Karakter sayma, palindrom, sezar şifresi ve 1. haftanın nehir bulmacasının Java'da tam çözümü.

Yürüten
Arş. Gör. Ömer Miraç Kökçam
Laboratuvar sorumlu hocası
Tarihler (teoriden bir hafta sonra)
A Çarşamba 23 Aralık 13.15
B Perşembe 24 Aralık 15.15

Lab hedefleri

  • 1 String metotlarıyla en az üç metin algoritması yazar.
  • 2 Nehir bulmacasını durum dizisi, güvenlik kontrolü metodu ve hamle döngüsüyle kodlar.
  • 3 Kendi çözümünü yapay zekanın 1. haftadaki çözümüyle karşılaştırıp farkı yazar.

Bu lab neyi uyguluyor?

13. haftanın teorisini. Laboratuvar teoriden bir hafta sonra yapılır: A şubesi Çarşamba 13.15, B şubesi Perşembe 15.15; tarihler Ders Hakkında takviminde.

Görevler

Teslim

Görev dosyalarınızı Classroom 50 bağlantısıyla açılan Lab 13 deponuza push edin (bağlantı lab günü verilir; depo adı algo1-lab13-KULLANICIADI). Otomatik kontrol sonucunu deponun Releases sayfasında görür, düzeltip tekrar push edebilirsiniz. Son teslim: lab haftasının Cuma 23.59’u. Lab’da lab sorumlu hocanıza 30 saniyede bir görevi anlatın. Yapay zeka sarı bölge: soru sorabilirsiniz, kod kopyalayamazsınız.

Lab araçları

  • JDK 21
  • VS Code
  • GitHub Codespaces
  • Git

Lab sırasında kodu kendi bilgisayarınızda ya da Java Playground'da çalıştırabilirsiniz.