Teori
Öğrenme hedefleri
Bu haftanın sonunda:
- 1 Bir bulmacayı durum, hamle, kısıt ve hedef kavramlarıyla adımlara döker; algoritma tanımını kendi cümleleriyle söyler.
- 2 Java Playground'u açar, verilen kodu çalıştırır, çıktıyı önceden tahmin edip gerçek çıktıyla karşılaştırır.
- 3 System.out.println, değişken tanımı, if ve for satırlarını gördüğünde ne yaptığını kabaca söyler.
- 4 Bir derleyici hata mesajının korkulacak değil okunacak bir şey olduğunu deneyimler.
- 5 Dersin işleyişini, portfolyo takvimini ve yapay zeka trafik ışığını bilir.
Derse Başlamadan Önce
- Telefon yeter, ama bilgisayar varsa daha rahat edersiniz. Hiçbir kurulum gerekmiyor.
- Tarayıcıda dev.java/playground adresini açın. Boş bir kod alanı ve bir Run düğmesi göreceksiniz, hepsi bu.
- Bir GitHub hesabı açın (github.com, üniversite e-postanızla). Bugün gerekmez ama gelecek haftaki laboratuvarda lazım olacak, bu yüzden o gün kuyrukta beklememek için şimdiden açın.
- Bir kağıt ve kalem getirin, çünkü her ders kağıtla başlıyor.
Haftanın Bulmacası
Bulmaca bittiğinde çözümünüzü tahtada birlikte dört kelimeye indirgeyeceğiz:
| Kavram | Bulmacada | Programda |
|---|---|---|
| Durum (state) | Kim hangi kıyıda | Değişkenlerin o anki değerleri |
| Hamle (move) | Çiftçi bir şeyi karşıya taşır | Bir komut, bir satır kod |
| Kısıt (constraint) | Tilki-tavuk yalnız kalamaz | if ile kontrol ettiğimiz koşul |
| Hedef (goal) | Hepsi karşı kıyıda | Döngünün bitiş koşulu |
Kağıda yazdığınız o numaralı liste bir algoritmadır. Bugün yalnızca elle çözdük, ama 13. haftada aynı bulmacayı dizilerle Java’da kodlayacağız, bu yüzden kağıdı saklayın.
Ders Notları
Algoritma nedir?
Algoritma, bir problemi çözmek için sonlu sayıda, sırası belli, her biri açıkça tanımlı adımlar kümesidir. Yemek tarifi, yol tarifi ve sabah hazırlanma rutini, hepsi birer algoritmadır. Kelimenin kendisi ise 9. yüzyıl matematikçisi El-Harizmi’nin adından gelir.
Bulmacada fark ettiğiniz şey önemli, çünkü çözümü bilmek ile çözümü adım adım yazabilmek ayrı şeylerdir. İlki tanımlayıcı bilgidir (declarative) ve “hepsi karşıya geçmiş olmalı” der. İkincisi buyurgan bilgidir (imperative) ve “önce tavuğu al, geri dön, tilkiyi al, tavuğu geri getir…” diye devam eder. Bilgisayar yalnızca ikinciyi anlar, bu yüzden programlama, tanımlayıcı bilgiyi buyurgan bilgiye çevirme sanatıdır.
Binlerce yıllık bir algoritma: Babil karekök yöntemi
Bilgisayardan çok önce Babilliler karekökü şöyle buluyordu. Diyelim ki 25’in karekökünü arıyoruz:
- Bir tahminle başla: g = 3.
- g × g, 25’e yeterince yakınsa dur.
- Değilse yeni tahmin: g = (g + 25/g) / 2.
-
- adıma dön.
Tahminler 3 → 5,67 → 5,04 → 5,0002 diye ilerler, yani dört adımda cevaba ulaşırız. Dikkat ederseniz burada bir tekrar var (“2. adıma dön”) ve bir de karar var (“yeterince yakınsa dur”). Bugün yazacağımız Java programlarında tam olarak bu ikisini göreceksiniz, çünkü for tekrarın, if ise kararın koddaki halidir.
İkinci bulmaca: insan bilgisayar
Bu tarifte üç şey var ve ikisi bugün Java’da karşımıza çıkacak: aklında tutulan değer bir değişkendir, “büyükse” bir iftir, “kişi kalmadıysa dur” ise bir döngünün bitiş koşuludur. 10. haftada dizideki en büyük elemanı bulurken bu tarifi kelimesi kelimesine koda çevireceğiz.
Neden Java?
Dünyada yüzlerce programlama dili var ve bu derste Java’yı üç sebeple seçtik.
- Kesindir. Java sizden her değişkenin tipini söylemenizi, her cümleyi noktalı virgülle bitirmenizi ve her bloğu süslü parantezle kapatmanızı ister. Bu, ilk haftalarda yorucu gelebilir, ama bilgisayar gibi düşünmeyi öğrenirken en iyi öğretmen tam da bu kesinliktir, çünkü yaptığınız her hatayı derleyici satır numarasıyla size gösterir.
- Derlenir. Kodunuz çalışmaya başlamadan önce baştan sona okunur ve kontrol edilir. Python gibi yorumlanan dillerde bir hata ancak program o satıra gelince ortaya çıkar, oysa Java’da daha siz yazarken ortaya çıkar ve bu, öğrenirken büyük bir avantajdır.
- Her yerdedir. Android uygulamaları, bankacılık sistemleri ve Minecraft Java ile yazılmıştır. Üstelik bölümün ilerideki dersleri de (nesne yönelimli programlama, veri yapıları) Java ile devam eder, yani bugün öğrendiğiniz dil sizi yıllarca taşıyacak.
Sözdizimi kesinliği ve hata korkusu
Türkçede “Ahmet gitti okula” deseniz de anlaşılırsınız, ama Java’da System.out.println("Merhaba") sonuna noktalı virgül koymazsanız program hiç çalışmaz. Bu bir kusur değil, bilinçli bir tasarımdır, çünkü dilde belirsizlik olmayınca her cümlenin tek bir anlamı olur.
Bugün en az bir kez hata alacaksınız ve bu bir kaza değil, planın parçası. Hata mesajı ilk bakışta korkutucu görünür ama aslında yalnızca iki şey söyler: hangi satırda olduğunu ve ne beklediğini. Örneğin:
error: ';' expected
Bu mesaj yalnızca “noktalı virgül bekliyordum” diyor, hepsi bu. Dersin en önemli ritüellerinden biri hata avı olacak: ilerleyen haftalarda size bilerek hatalı 15-20 satırlık kod vereceğiz ve gruplar hata sayacak, çünkü hatayı gören göz, kodu yazan elden daha değerlidir.
Çalışma ortamımız: Java Playground
dev.java/playground, Oracle’ın tarayıcıda çalışan resmî Java ortamıdır; kurulum istemez, hesap istemez ve telefonda bile çalışır. Arkasında Java’nın satır satır çalışan etkileşimli kabuğu olan JShell vardır. Bu yüzden Playground’da bir sınıf ya da main metodu yazmak gerekmez, doğrudan System.out.println("Merhaba"); yazıp Run’a basmanız yeter.
- Kod alanına yazıp Run düğmesine (ya da
Ctrl+Enter) bastığınızda çıktı altta belirir. - Klavyeden girdi alma (
Scanner) Playground’da çalışmaz, bu yüzden bugün değerleri doğrudan koda yazacağız. Girdiyi 3. haftada, laboratuvarda kendi bilgisayarınızda göreceksiniz. - Sayfayı yenilerseniz kod gider, bu yüzden beğendiğiniz bir şeyi notlarınıza kopyalayın.
Ayrıntılı kullanım: Java Playground rehberi.
Bugün Yazacağımız Dört Program
Kural her programda aynı: kodu çalıştırmadan önce çıktının ne olacağını yanınızdakine söyleyin, sonra Run’a basın. Tahmininiz tutmadıysa üzülmeyin, aksine sevinin, çünkü öğrenme tam o anda oluyor.
String isim = "Ayşe";
System.out.println("Merhaba, " + isim + "!");
System.out.println("Java'ya hoş geldin.");Şimdi satırları okuyalım. String isim = "Ayşe"; bir değişken tanımlar: kutunun adı isim, tipi String (metin), içi de "Ayşe". + işareti ise metinleri yan yana yapıştırır. Önce "Ayşe" yerine kendi adınızı yazıp çalıştırın, sonra bir satırın sonundaki noktalı virgülü silip Run’a basın ve hata mesajını okuyun, ardından noktalı virgülü geri koyun.
int vize = 70;
int fin = 85;
double ortalama = vize * 0.4 + fin * 0.6;
System.out.println("Ağırlıklı ortalama: " + ortalama);
System.out.println(7 / 2);
System.out.println(7 / 2.0);Tahmin sorusu: son iki satır ne yazdırır? Çoğu kişi ikisi için de 3,5 der, ama Java’da 7 / 2 tam sayı bölmesidir ve sonuç 3 çıkar, 7 / 2.0 ise 3,5 verir. Aradaki fark tiplerden gelir, çünkü int tam sayı, double ise ondalıklı sayı tutar. Bu ayrım 3. haftanın konusu ama tuzağı bugünden görmenizi istiyorum.
int sayi = 17;
if (sayi % 2 == 0) {
System.out.println(sayi + " çift");
} else {
System.out.println(sayi + " tek");
}% kalan işlemidir, yani 17 % 2 = 1 verir. == ise “eşit mi” diye sorar, tek = ile karıştırmayın, çünkü o atamadır. Koşul doğruysa ifin ilk bloğu, değilse else bloğu çalışır. Bulmacadaki kısıt kavramının koddaki hali tam olarak budur, çünkü “tilki ile tavuk yalnız mı?” sorusu da ileride bir if olacak.
for (int i = 1; i <= 10; i++) {
System.out.println(i);
}Tek satırda üç şey var: int i = 1 başlangıç, i <= 10 devam koşulu, i++ ise her turda bir artırma. Babil algoritmasındaki “2. adıma dön” işte tam olarak budur. Şimdi deneyin: 10’u 100 yapın, sonra i++ yerine i += 2 yazın ve ne değiştiğine bakın. Son olarak i <= 10’u i >= 10 yaparsanız kaç satır çıkar? (Sıfır. Neden?)
Hafta 1 · İlk Java
Derste çalıştırılmış Java defteri (Jupyter + IJava).
Bu defter, derste anlatılanların derli toplu tekrarıdır; çıktılar ders bitene kadar gizlidir, önce tahmin edin. İsteyen defteri GitHub'dan indirip bilgisayarında Jupyter ile çalıştırabilir (kurulum rehberi ilerleyen haftalarda eklenecek). Kodu hemen denemek için sayfadaki kod bloklarını Java Playground'a yapıştırın.Java Playground'a yapıştırın.
Yapay Zeka Anı
Şimdi bir deney yapalım. ChatGPT’ye (veya Claude, Gemini) “Tilki, tavuk ve mısır nehir bulmacasını Java’da çözen bir program yaz.” yazıyoruz ve birkaç saniyede 40-60 satırlık bir program geliyor. Bunu yansıya koyup birlikte okuyacağız, yazmayacağız, ve şunlara bakacağız:
int[]ya daboolean[]gördüğünüz yer durumu tutan dizidir, 10. haftanın konusu.if (...)satırları bulmacanın kısıtlarıdır; kağıda yazdığınız “tilki-tavuk yalnız kalamaz” cümlesini orada bulun.while (...)veyafor (...)hamle tekrarıdır ve bitiş koşulu bulmacanın hedefidir.- Kodda sizin kağıda yazdığınız adım sırasını bulabiliyor musunuz? Bulamıyorsanız program başka bir yol izliyor olabilir, bu da başlı başına bir sorudur.
Dersin sonunda şunu bilmenizi istiyorum: bu programı 13. haftada siz yazacaksınız. Bugün okuyup anlamadığınız her satır, o güne kadar öğreneceğiniz bir konudur, yani anlamamak bugün için sorun değil.
Elinizin altındaki araçlar ve ücretsiz kalma taktikleri:
Üretken yapay zeka araçları
Elinizin altındaki yedi araç
Tek bir “yapay zeka” yok; elinizin altında yedi güçlü seçenek var ve hepsinin ücretsiz katmanı var. Birinin günlük kotası bitince diğerine geçin; ücretli plana geçmeden önce ücretsizleri gerçekten tüketin.
-
ChatGPT
OpenAI
En yaygın olan. Bir derleyici hatasını yapıştırıp "bu ne demek?" diye sormak için iyi bir ilk durak; kod yazdırmadan önce kavramı açıklattırın.
- Ücretsiz:
- var, günlük kota
- Öne çıkan:
- Hata açıklama, ses modu, Codex ajanı
-
Claude
Anthropic
Uzun metin, dikkatli yazım ve Türkçe kalitesi. Bir programı satır satır açıklattırmak, README yazdırmak; masaüstü uygulaması ve Claude Code ile bilgisayarınızda kod çalıştırma.
- Ücretsiz:
- var
- Öne çıkan:
- Masaüstü uygulaması, Claude Code
-
Gemini
Google
Ücretsiz katmanı en cömertlerden; Drive ve YouTube ile bütünleşik. Öğrenci kampanyasıyla bir yıl ücretsiz üst plan.
- Ücretsiz:
- geniş
- Öne çıkan:
- Öğrenci kampanyası, NotebookLM
-
Perplexity
Perplexity AI
Arama motoru gibi çalışır, her cümlesine kaynak gösterir. Bir Java sınıfının belgesini veya güncel bir aracı ararken ilk durak; kaynağı yine de kendiniz açın.
- Ücretsiz:
- var
- Öne çıkan:
- Kaynaklı cevap
-
Le Chat
Mistral (Fransa)
Hızlı, sade, Avrupa veri kuralları altında. Günlük soru ve özet işleri için rahat bir alternatif.
- Ücretsiz:
- var
- Öne çıkan:
- Hız, Avrupa merkezli
-
Kimi
Moonshot AI
Çok uzun belgelerle ve çok adımlı ajan görevleriyle iyi. Ders kitabının bir bölümünü yükleyip soru sormak için.
- Ücretsiz:
- geniş
- Öne çıkan:
- Uzun belge, ajan modu
-
Qwen
Alibaba
Çok dilli, görsel anlama ve üretme; açık kaynak modelleri de var. Yedek olarak elinizin altında dursun.
- Ücretsiz:
- var
- Öne çıkan:
- Görsel, açık model
-
Taktik
Ücretsiz kalma taktiği: sabah Gemini, kota bitince Claude, kaynak ararken Perplexity, uzun PDF için Kimi. Dört ücretsiz hesap, sıfır lira.
Google, üniversite öğrencilerine 1 yıl ücretsiz Gemini planı veriyor (başvuru 31 Aralık 2026'ya kadar). Koşullar değişebilir; gemini.google/students adresinden kontrol edin. Başvuru ↗
Hangi aracı kullanırsanız kullanın: dersin yapay zeka trafik ışığı kurallarına uyun; ürettiği kodu okumadan ve çalıştırmadan teslim etmeyin.
Temel Kavramlar
- Algoritma: Bir problemi çözen sonlu, sıralı, kesin adımlar. Kağıda yazdığınız nehir çözümü.
- Program: Bir algoritmanın, bilgisayarın anladığı bir dilde yazılmış hali.
- Durum (state): Bir anda değişkenlerin aldığı değerlerin tümü; “kim hangi kıyıda”.
- Değişken (variable): Bir değeri isimle saklayan kutu;
int sayi = 17;. Java’da kutunun tipi de söylenir. - Tip (type): Kutunun içine ne konabileceği:
inttam sayı,doubleondalıklı,Stringmetin,booleandoğru/yanlış. System.out.println: Ekrana yazdır ve satır atla.printsatır atlamaz.- Koşul ve
if: Doğru ya da yanlış olan bir soru;ifdoğruysa bir şey yapar,elsedeğilse. - Döngü ve
for: Bir bloğu tekrar tekrar çalıştırma; sayaç, koşul, artış. - Derleyici (compiler): Kodu çalıştırmadan önce baştan sona okuyup kontrol eden ve makine koduna çeviren program;
javac. - Sözdizimi (syntax): Dilin yazım kuralları; noktalı virgül, parantez, büyük-küçük harf. Java bunlarda tavizsizdir.
- JShell / Playground: Java’yı satır satır çalıştıran etkileşimli ortam; sınıf ve
maingerektirmez.
Sahadan Örnekler
- Apollo 11, 1969. Ay’a inişe dakikalar kala bilgisayar “1201 alarm” verdi, çünkü aşırı yüklenmişti. Margaret Hamilton’ın ekibinin yazdığı yazılım görevleri önceliklendiriyordu, bu yüzden radar verisini bırakıp iniş hesabına odaklandı ve Armstrong indi. İyi bir algoritma yalnızca doğru sonucu vermez, kriz anında neyin önemli olduğuna da karar verir.
- The Martian. Mars’ta mahsur kalan astronot, kamerayı 16 yöne çevirerek onaltılık (hex) kod gönderir ve her iki hane bir ASCII karakteri oluşturur, örneğin
48 45 4C 4C 4F= HELLO. Bütün yöntem bir dönüşüm tablosu ve bir döngüden ibarettir, yani bir algoritma bu kadar basit olabilir ve yine de hayat kurtarabilir. - Mars Climate Orbiter, 1999. Bir yazılım Newton, diğeri pound-kuvvet cinsinden hesap yapıyordu. Kimse bir hata mesajı görmedi ve uydu atmosferde yandı. Bu, mantık hatasının en pahalı örneklerinden biridir, çünkü program çalıştı ama sonuç yanlıştı.
- Her gün. Telefonunuzdaki harita en kısa yolu bir algoritmayla bulur, Instagram akışınızı bir algoritma sıralar ve bankanız kartınızı bir algoritma “şüpheli” diye bloke eder. Bugünden itibaren bunların hiçbiri sizin için sihir değil.
Portfolyo
Bu dönem herkesin GitHub’da tek bir deposu olacak ve o deponun içinde küçük bir uygulama hafta hafta büyüyecek. Konu serbest: not hesaplayıcı, sinema bileti, bütçe takibi ya da bir oyun olabilir. Konu dağıtımı ve ortak sözleşme ilerleyen haftalarda duyurulacak, şimdilik takvimi bilmeniz yeter:
| Kilometre taşı | Hafta | Ne teslim edilir |
|---|---|---|
| KT1 | 5 | Konu ve seçim yapılı ilk sürüm |
| KT2 | 8 | Gözcü değerle biten döngülü sürüm |
| KT3 | 11 | Metotlu ve dizili sürüm |
| KT4 | 14 | Son teslim, README, AI beyanı, üç dil |
Vizede 10, finalde 15 puanlık soru doğrudan sizin uygulamanızdan gelir, bu yüzden teslim etmeyen o soruları yapamaz. Ayrıntılar: Ders Hakkında · Portfolyo.
Laboratuvara Hazırlık
Laboratuvar teoriden bir hafta sonra yapılır, yani bu haftanın labı A şubesi için 30 Eylül Çarşamba 13.15, B şubesi için 1 Ekim Perşembe 15.15. Yürütücüsü Arş. Gör. Ömer Miraç Kökçam.
Lab’a gelirken:
- GitHub hesabınız açık olsun (github.com, üniversite e-postanızla) ve kullanıcı adınızı bilin, çünkü onu lab’da lab sorumlu hocanıza bildireceksiniz ve ders organizasyonuna davet ile ödev deposu ondan sonra geliyor (ayrıntı: Classroom 50 rehberi).
- Kendi bilgisayarınızı getirecekseniz JDK ve VS Code rehberini deneyin, olmazsa lab bilgisayarı ya da Codespaces var.
- Lab’da ilk gerçek dosyanızı (
Merhaba.java) derleyip çalıştıracak, beş küçük görev yapacak ve Classroom 50 bağlantısıyla açılan Lab 1 deponuza ilk push’u atacaksınız, otomatik kontrolün sonucunu da deponun Releases sayfasında göreceksiniz. Ayrıntı: Lab 1.
Tartışma Soruları
- Nehir bulmacasını çözerken kaç kez “geri dönmek” zorunda kaldınız? Geri adım atmak bir algoritmanın parçası olabilir mi?
- “İnsan bilgisayar” en uzun kişiyi bulurken neden “en uzunu bul” komutunu anlamadı da “büyükse değiştir” komutunu anladı? Bilgisayarın anladığı komutlar ne kadar küçük olmalı?
7 / 2’nin 3 çıkması bir hata mı, bir kural mı? Bu kuralı bilmeyen birinin yazdığı not hesaplama programında ne olur?- Yapay zekanın yazdığı nehir programını “doğru” olduğunu nasıl anlarsınız? Çalışması yeter mi?
- Yapay zeka programcılığı bitirecek mi? Bugün okuduğunuz kodu anlamadan kullanabilen biriyle anlayan biri arasında meslekte ne fark olur?
Haftanın Özeti
Kağıt üzerinde bir nehir bulmacasıyla başladık ve çözümü dört kelimeye indirgedik: durum, hamle, kısıt, hedef. Bu dördü, dönem boyunca yazacağınız her programın iskeletini oluşturacak. Algoritmanın ne olduğunu Babil karekök yöntemi ve insan bilgisayarla gördük, sonra telefonunuzdan Java Playground’da dört program çalıştırdınız: yazdırma, değişken ve toplama, if ile karar, for ile tekrar. Bu arada 7 / 2’nin 3 olduğunu ve noktalı virgülün pazarlık kabul etmediğini de öğrendiniz. Yapay zekaya nehir bulmacasını yazdırıp birlikte okuduk ve o programı 13. haftada sizin yazacağınızı söyledik. Gelecek hafta akış diyagramı, sözde kod ve bir Java programının tören kısmı (class, main) ile derleme ve üç hata türüne geçiyoruz.
Bu haftanın araçları
- Java Playground
- JShell
- Java
Ek kaynaklar
- Java Playground — Derste kullandığımız ortam; kurulum ve hesap gerektirmez.
- Think Java 2, Bölüm 1: Computer Programming — Bu haftanın kitap karşılığı: program nedir, Hello World, hata türleri.
- Nehir geçme bulmacası (Wikipedia) — Bulmacanın tarihi; 9. yüzyıla, Alcuin'e kadar gidiyor.
- Margaret Hamilton ve Apollo 11 yazılımı — Sahadan örneklerde anlattığımız 1201 alarmı hikayesinin kaynağı.
Etiketler:algoritmajavaplaygroundprintlndeğişkenifforbulmaca