Algo-I
1 Giriş

Algoritma Düşüncesi ve İlk Java Programı

Kağıt üzerinde bir nehir bulmacasıyla algoritma düşüncesine giriş; telefonunuzdan Java Playground'da ilk dört programınızı çalıştırıyor, yapay zekanın yazdığı kodu okumayı deniyorsunuz.

Teori
Cuma 25 Eylül · A 09.15 / B 13.15
Laboratuvar
A Çarşamba 30 Eylül 13.15 · B Perşembe 1 Ekim 15.15(teoriden bir hafta sonra) Lab içeriği ↓
Ders planı
Algoritma nedir, bir bulmacayı adımlara dökmek; Java Playground'da ilk dört program (println, değişken, if, for)

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:

KavramBulmacadaProgramda
Durum (state)Kim hangi kıyıdaDeğişkenlerin o anki değerleri
Hamle (move)Çiftçi bir şeyi karşıya taşırBir komut, bir satır kod
Kısıt (constraint)Tilki-tavuk yalnız kalamazif ile kontrol ettiğimiz koşul
Hedef (goal)Hepsi karşı kıyıdaDö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:

  1. Bir tahminle başla: g = 3.
  2. g × g, 25’e yeterince yakınsa dur.
  3. Değilse yeni tahmin: g = (g + 25/g) / 2.
    1. 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.

1 · Merhaba ve isim Java Playground'da dene ↗
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.

2 · Değişkenler ve toplama Java Playground'da dene ↗
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.

3 · Çift mi tek mi? (if) Java Playground'da dene ↗
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.

4 · 1'den 10'a say (for) Java Playground'da dene ↗
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 da boolean[] 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 (...) veya for (...) 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ı
    Aç ↗
  • 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
    Aç ↗
  • 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
    Aç ↗
  • 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
    Aç ↗
  • 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
    Aç ↗
  • 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
    Aç ↗
  • 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
    Aç ↗
  • 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: int tam sayı, double ondalıklı, String metin, boolean doğru/yanlış.
  • System.out.println: Ekrana yazdır ve satır atla. print satır atlamaz.
  • Koşul ve if: Doğru ya da yanlış olan bir soru; if doğruysa bir şey yapar, else değ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 main gerektirmez.

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şıHaftaNe teslim edilir
KT15Konu ve seçim yapılı ilk sürüm
KT28Gözcü değerle biten döngülü sürüm
KT311Metotlu ve dizili sürüm
KT414Son 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ı

  1. Nehir bulmacasını çözerken kaç kez “geri dönmek” zorunda kaldınız? Geri adım atmak bir algoritmanın parçası olabilir mi?
  2. “İ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ı?
  3. 7 / 2’nin 3 çıkması bir hata mı, bir kural mı? Bu kuralı bilmeyen birinin yazdığı not hesaplama programında ne olur?
  4. Yapay zekanın yazdığı nehir programını “doğru” olduğunu nasıl anlarsınız? Çalışması yeter mi?
  5. 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

Etiketler:algoritmajavaplaygroundprintlndeğişkenifforbulmaca

Laboratuvar · Hafta 1

Lab 1 · Araç Çantası: GitHub, JDK ve İlk Java Dosyası

GitHub hesabı ve ders organizasyonu, Classroom 50 ile lab deposunu alma, JDK ve VS Code kurulum kontrolü (ya da Codespaces), Merhaba.java'yı komut satırında derleyip çalıştırma ve beş küçük görev.

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

Lab hedefleri

  • 1 GitHub hesabıyla ders organizasyonuna katılır ve Classroom 50 kabul bağlantısıyla Lab 1 deposunu alır.
  • 2 Kendi bilgisayarında JDK ve VS Code'un çalıştığını doğrular ya da Codespaces ortamını açar.
  • 3 Merhaba.java dosyasını javac ile derleyip java ile çalıştırır; derleyici hatasını okuyup düzeltir.
  • 4 println, değişken ve basit aritmetikle beş küçük program yazar, lab deposuna push eder ve otomatik kontrol sonucunu okur.

Ne zaman, nerede, kiminle

ŞubeTarihSaatYürütücü
A30 Eylül 2026 Çarşamba13.15Arş. Gör. Ömer Miraç Kökçam
B1 Ekim 2026 Perşembe15.15Arş. Gör. Ömer Miraç Kökçam

Laboratuvar teoriden bir hafta sonra yapılır: bugün 1. haftanın (25 Eylül) konularını uyguluyoruz. Kendi bilgisayarınızı getirebilirsiniz; getirmeyenler lab bilgisayarı ya da tarayıcıda Codespaces kullanır.

Adım 0 · GitHub hesabı, organizasyon daveti ve lab deposu (10 dk)

  1. GitHub hesabı. github.com hesabınız yoksa şimdi açın; üniversite e-postanızı kullanın (öğrenci paketi için gerekecek). E-posta doğrulamasını yapın.
  2. Kullanıcı adınızı bildirin. GitHub kullanıcı adınızı (ya da üniversite e-postanızı) lab sorumlu hocanıza yazdırın. Dönem başında verilen listeyle davet aldıysanız bu adımı atlayın.
  3. Daveti kabul edin. Birkaç dakika içinde e-postanıza ve GitHub bildirimlerinize “FiratUniversity-FerhatUcarsLAB organizasyonuna davet” gelir; Accept deyin. Bildirim gelmediyse github.com/FiratUniversity-FerhatUcarsLAB adresini açın; üstte View invitation düğmesi görünür.
  4. Ödevi kabul edin. Yukarıdaki kutudaki kabul bağlantısına tıklayın, Accept assignment deyin. Sayfa “Not a member yet” diyorsa davet henüz kabul edilmemiştir; 3. adımı yapıp Check again deyin.
  5. Birkaç saniye içinde algo1-lab01-KULLANICIADI adlı özel (private) deponuz organizasyon içinde oluşur; sayfadaki bağlantıyla açın. Depoyu yeniden adlandırmayın ve Actions’ı kapatmayın; otomatik kontrol bunlara bağlı.

Portfolyo (dönem projesi) deposu için şimdi bir şey yapmanız gerekmiyor; o depo da ilerleyen haftalarda aynı yöntemle, ayrı bir bağlantıyla verilecek. Ayrıntılı anlatım: GitHub ve Codespaces rehberi, Classroom 50 rehberi.

Adım 1 · Ortam kontrolü (10 dk)

İki yoldan birini seçin.

Yol A: Kendi bilgisayarım. Terminal (macOS) ya da Komut İstemi / PowerShell (Windows) açın:

java -version
javac -version

İkisi de 21 ya da üzeri bir sürüm yazıyorsa hazırsınız. Yazmıyorsa JDK ve VS Code rehberindeki adımları izleyin; 10 dakikada olmuyorsa Yol B’ye geçin, kurulumu evde bitirin. Sonra depoyu bilgisayarınıza indirin:

git clone https://github.com/FiratUniversity-FerhatUcarsLAB/algo1-lab01-KULLANICIADI.git
cd algo1-lab01-KULLANICIADI

Yol B: Codespaces. GitHub’da algo1-lab01-KULLANICIADI deposunu açın → Code → Codespaces → Create codespace on main. Tarayıcıda VS Code açılır; terminalde java -version yazın. Java hazır gelir. Ayda 60 saat ücretsiz; lab için fazlasıyla yeter.

Adım 2 · Merhaba.java: derle ve çalıştır (15 dk)

Dosyaları deponun kök dizinine koyun (README ve .gitignore’un yanına); alt klasör açmayın, otomatik kontrol dosyaları kökte arar. Merhaba.java adında dosya oluşturun. Dikkat: dosya adı ile sınıf adı birebir aynı olmalı, büyük harf dahil.

public class Merhaba {
    public static void main(String[] args) {
        String isim = "Adınız";
        System.out.println("Merhaba, " + isim + "!");
        System.out.println("Bu benim ilk Java dosyam.");
    }
}

Terminalde deponun kök dizinindeyken:

javac Merhaba.java
java Merhaba

İlk komut Merhaba.class dosyasını üretir (bytecode), ikincisi onu çalıştırır. java Merhaba.class yazmayın; uzantısız. .class dosyaları .gitignore sayesinde depoya girmez; yalnızca .java dosyalarınız push edilir.

Derste Playground’da yazmadığımız public class ve main satırları burada zorunlu. Şimdilik şöyle düşünün: class programın adı, main programın kapısı. Java bir programı çalıştırırken hep main’den başlar. Ayrıntısı 2. haftada.

Adım 3 · Beş küçük görev (40 dk)

Her görev ayrı bir .java dosyası; her dosyada bir public class ve bir main. Dosya adları aşağıdaki gibi birebir olmalı; otomatik kontrol bu adlara ve gösterilen çıktı satırlarına bakar. Kodu Playground’da deneyip dosyaya taşıyabilirsiniz. Önce çıktıyı tahmin edin, sonra çalıştırın.

Görev 1 · Hoş geldin mesajları (UcMesaj.java)

Üç ayrı println ile: adınız ve bölümünüz, bu dersi neden aldığınız (bir cümle), bugünün tarihi. Sonra aynı üç satırı print ile yazdırıp farkı görün (\n kullanmadan neden tek satıra yığılıyor?).

Görev 2 · Matematiksel işlemler (IkiIslem.java)

İki int değişken tanımlayın: a = 17, b = 5. Bu değerleri değiştirmeyin; otomatik kontrol çıktıda 17 % 5 = 2 satırını arar. Toplamı, farkı, çarpımı, bölümü ve kalanı etiketleriyle yazdırın:

17 + 5 = 22
17 / 5 = 3
17 % 5 = 2

Sonra b’yi double yapan bir deneme yapın ve bölümün nasıl değiştiğini yorum satırına (//) not edin; teslim ettiğiniz dosyada a ve b yine int ve 17, 5 olsun.

Görev 3 · Geometrik hesap (DaireHesap.java)

Yarıçapı double yaricap = 3.5; olan dairenin çevresini ve alanını hesaplayıp yazdırın. Math.PI kullanın. Otomatik kontrol çıktıda alan için 38.48 arar: System.out.printf("Alan: %.2f%n", alan) ile iki basamak yazdırabilirsiniz ya da println ile olduğu gibi (38.48451000647496) bırakabilirsiniz; ikisi de geçer, yeter ki 38.48 görünsün. Bonus: Math.pow(yaricap, 2) ile yaricap * yaricap aynı sonucu veriyor mu?

Görev 4 · İsim kartı (IsimKarti.java)

Yalnızca println ve + ile bir çerçeve çizin:

+--------------------+
|  Ayşe Yılmaz       |
|  Yazılım Müh. 1    |
+--------------------+

İpucu: "-".repeat(20) yazarsanız 20 tire üretir. Adınız çerçeveye sığmazsa ne olur?

Görev 5 · Tablo deseni (CarpimTablosu.java)

  1. haftanın for döngüsünü kullanarak 5’in çarpım tablosunu yazdırın. Satır biçimi birebir 5 x 10 = 50 gibi olmalı (küçük x, boşluklar dahil); otomatik kontrol bu satırı arar:
5 x 1 = 5
5 x 2 = 10
...
5 x 10 = 50

Zorlaması: tabloyu 1’den 10’a değil, 10’dan 1’e yazdırın (döngüde neyi değiştirdiniz? 5 x 10 = 50 satırı yine çıktıda olmalı).

Bonus · Saat dönüştürme (SaatDonusturme.java)

int toplamSaniye = 7384; değerini saat, dakika ve saniyeye çevirin ve tam olarak 2 saat 3 dakika 4 saniye yazdırın. Yalnızca / ve % ile. Bonus 10 puan; yapmazsanız eksik sayılmaz.

Adım 4 · Teslim (10 dk)

Terminalde (kendi bilgisayarınızda ya da Codespaces’te), deponun kök dizininde:

git add .
git commit -m "Lab 1: ilk Java dosyaları"
git push

Codespaces’te sol çubuktaki Source Control düğmesi aynı üç adımı tıklamayla yapar: mesajı yazın, Commit, sonra Sync Changes. Git komutlarını ilk kez görüyorsanız rehberdeki üç satırlık özete bakın.

Push’tan sonra:

  1. Tarayıcıda deponuzu yenileyin; .java dosyaları kökte görünmeli.
  2. 1-2 dakika bekleyip deponun Releases sayfasına bakın: otomatik kontrol her push’ta çalışır ve hangi testin geçtiğini, puanınızı orada listeler. Aynı sonuç depoda açılan Feedback pull request’inde de görünür; lab sorumlu hocanız yorumlarını oraya yazabilir.
  3. Geçmeyen test varsa dosyayı düzeltin, tekrar commit ve push edin. Son teslim saatine kadar istediğiniz kadar push edebilirsiniz; en son push geçerlidir.

Son teslim: 2 Ekim 2026 Cuma 23.59. Lab saatinde bitiremeyenler o saate kadar evden push edebilir.

Bitiremediyseniz

Sorun değil. Lab’da Adım 0’ı (depo açıldı) ve Adım 2’yi (Merhaba.java derle-çalıştır, ilk push) tamamlamış olmanız yeterli; kalan görevleri 2 Ekim Cuma 23.59’a kadar evde bitirip push edin, Releases sayfasından sonucu görün. Cuma’dan sonra gelen push’lar puanlanmaz. Kurulum takıldıysa Codespaces ile devam edin ya da ofis saatine gelin.

Lab araçları

  • GitHub
  • Classroom 50
  • JDK 21
  • VS Code
  • GitHub Codespaces
  • Git

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