Bilgisayar programcılığına hazırlık için üniversite başlamadan önce her konuyu aynı anda öğrenmeye çalışmak yerine, becerileri doğru sırayla geliştirmek gerekir. En verimli sıra; önce çalışma ortamını ve dosya düzenini kurmak, ardından temel programlama mantığını öğrenmek, daha sonra kod okuma ve hata ayıklama becerilerini geliştirmek ve son olarak küçük bir komut satırı projesi tamamlamaktır. Her haftanın sonunda hedef yalnızca konu dinlemek değil; problemi parçalara ayırmak, ne yaptığını açıklamak ve öğrendiğini çalışan bir örnekte uygulamaktır.
Bu yol haritasını bir yarış gibi değil, üniversitenin ilk derslerine daha hazırlıklı başlamak için kontrollü bir geçiş dönemi gibi düşünün. Dört haftanın sonunda her programlama konusunu biliyor olmanız beklenmez; ancak bilgisayarınızda bir proje klasörü oluşturabilmeniz, basit bir programı çalıştırabilmeniz, hata mesajını okuyabilmeniz ve küçük bir problemi adımlara bölebilmeniz beklenir.
Üniversite başlamadan önce hangi sırayla hazırlanmalısınız?
Hazırlık sırasını belirlerken “Önce hangi programlama dilini tamamen bitirmeliyim?” sorusundan çok, “Bir problemi çözerken hangi becerilere ihtiyaç duyacağım?” sorusunu sormak daha doğru olur. Programlama dili bir araçtır; asıl temel, bilgisayara açık ve sıralı talimatlar verebilmek, veriyi düzenleyebilmek ve oluşan sonucu kontrol edebilmektir.
| Konu | Neden önce? | Hazır olma ölçütü |
|---|---|---|
| Geliştirme ortamı ve dosya düzeni | Kod yazmak, dosyayı doğru yerde oluşturmak ve programı çalıştırmak için temel zemini hazırlar. | Bir klasör oluşturup dosya açabilir, programı komut satırından çalıştırabilir ve bulunduğunuz klasörü kontrol edebilirsiniz. |
| Temel programlama mantığı | Değişken, koşul, döngü ve fonksiyon gibi yapıların ne zaman kullanılacağını anlamanızı sağlar. | Basit bir problemi girdi, işlem ve çıktı adımlarına ayırarak çözüm planı yazabilirsiniz. |
| Kod okuma ve hata ayıklama | Hazır kodu anlamayı, hatanın kaynağını bulmayı ve rastgele değişiklik yapmak yerine kanıtla ilerlemeyi öğretir. | Kısa bir kod parçasının ne yaptığını satır satır açıklayabilir ve hata mesajından ilk kontrol noktasını çıkarabilirsiniz. |
| Küçük proje | Öğrendiğiniz parçaları bir araya getirerek gerçek bir iş akışını deneyimlemenizi sağlar. | Basit bir not takip uygulamasını parçalara bölüp çalışır hâle getirebilir, eksiklerini kendiniz test edebilirsiniz. |
Dört haftalık yol haritasının mantığı
İlk hafta teknik zemini kurun. Bir editörde dosya açmayı, klasörler arasında geçiş yapmayı ve programı çalıştırmayı öğrenmeden algoritma çalışmak, öğrendiğiniz fikri uygulamaya geçirirken gereksiz bir engel oluşturur. Bu haftanın amacı ileri düzey araçları öğrenmek değil, bilgisayarınızda düzenli ve tekrarlanabilir bir çalışma alanı oluşturmaktır.
İkinci hafta algoritma ve temel programlama konularına geçin. Değişkenler, veri türleri, karşılaştırmalar, koşullar, döngüler ve fonksiyonlar gibi yapıların söz dizimini ezberlemek yerine hangi problemi çözdüklerini anlamaya çalışın. Bir konuyu öğrendiğinizi söylemek için o yapıyı kullanarak küçük bir görev tamamlayabilmeniz gerekir.
Üçüncü hafta kod okuma ve hata ayıklamaya odaklanın. Başlangıçta öğrenciler çoğunlukla yalnızca kendi yazdığı kodu anlamaya çalışır; oysa üniversitede ve yazılım projelerinde başkasının yazdığı kodu okumak, hata mesajını yorumlamak ve değişikliğin etkisini ölçmek de günlük çalışmanın parçasıdır.
Dördüncü hafta ise küçük bir projeyi tamamlayın. Komut satırında çalışan not takip projesi bu amaç için uygundur; çünkü kullanıcıdan veri alma, veriyi saklama, listeleme, koşul kullanma ve hatalı girdileri ele alma gibi temel becerileri bir araya getirir. Proje büyük olmak zorunda değildir. Önemli olan, bir fikri görev kartlarına bölerek bitirebilmenizdir.
Her haftanın sonunda kendinize sormanız gereken üç soru
- Bu konuyu kendi cümlelerimle açıklayabiliyor muyum?
- Benzer ama birebir aynı olmayan küçük bir problemi çözebiliyor muyum?
- Bir hata oluştuğunda nereden başlayarak kontrol edeceğimi biliyor muyum?
Bu sorulardan birine “hayır” cevabı veriyorsanız bir sonraki konuya geçmek başarısızlık değildir; yalnızca önceki beceriyi biraz daha uygulamanız gerektiğini gösterir. Özellikle algoritma çalışırken çözümü hemen koda çevirmek yerine önce problemi küçük adımlara ayırın. İsterseniz başlangıç seviyenizi görmek için algoritma bilgi testi üzerinden hangi konularda daha fazla tekrar yapmanız gerektiğine dair bir başlangıç fikri edinebilirsiniz.
1. hafta: Geliştirme ortamını kurun ve çalışma düzeninizi oluşturun

İlk haftanın hedefi “iyi bir geliştirici ortamı” kurmak değil, çalışmaya başladığınızda neyi nerede bulacağınızı bilmenizdir. Başlangıçta tek bir programlama dili, temel bir kod editörü ve komut satırı yeterlidir. Çok sayıda eklenti, farklı editör ve ileri düzey araç kullanmak öğrenmeyi hızlandırmaz; aksine hangi sorunun koddan, hangisinin kurulumdan kaynaklandığını ayırt etmeyi zorlaştırabilir.
Önce sade bir çalışma alanı oluşturun
Bilgisayarınızda yalnızca bu hazırlık dönemi için kullanacağınız bir ana klasör açın. Klasör adında boşluk ve özel karakter kullanmamak, komut satırında çalışırken bazı gereksiz sorunları azaltabilir. Bunun içinde her hafta için ayrı klasörler oluşturabilirsiniz:
hafta-01-ortamhafta-02-algoritmahafta-03-hata-ayiklamahafta-04-not-takip
Dosya adlarını deneme1, sondosya veya yeni2 gibi belirsiz ifadelerle adlandırmak yerine, dosyanın görevini anlatan isimler kullanın. Örneğin ortalama_hesapla, not_listesi veya kullanici_girdisi daha anlaşılırdır. Kullandığınız dilin dosya uzantısını da kontrol edin. Python çalışması yapıyorsanız dosyanın gerçekten .py ile bittiğinden emin olun; işletim sistemi dosya uzantılarını gizliyorsa notlar.py.txt gibi bir dosya oluşturmuş olabilirsiniz.
Dosya açma ve komut satırından çalıştırma
İlk pratik göreviniz, bir dosya oluşturup ekrana kısa bir çıktı yazdırmak olsun. Örneğin Python ile oluşturduğunuz merhaba.py dosyasının içeriği şöyle olabilir:
isim = "Ayşe"
mesaj = f"Merhaba, {isim}!"
print(mesaj)
Bu dosyayı kaydettikten sonra komut satırını açın ve dosyanın bulunduğu klasöre geçin. Ardından programı çalıştırın:
python merhaba.py
Bazı bilgisayarlarda Python komutu farklı biçimde tanımlanabilir. Böyle bir durumda rastgele komutlar denemek yerine kullandığınız işletim sisteminin ve programlama dilinin resmî kurulum yönergelerini izleyin. Buradaki temel beceri belirli bir komutu ezberlemek değil; dosyanın bulunduğu klasöre geçmek, çalıştırma komutunu vermek ve ekranda beklenen çıktıyı görmektir.
Komut satırında bulunduğunuz yeri kontrol edin
Komut satırındaki en sık başlangıç hatalarından biri, öğrencinin dosyanın bulunduğu klasörde olduğunu sanmasıdır. Programı çalıştırmadan önce çalışma dizininizi kontrol edin. Kullandığınız işletim sistemine göre komut adı değişebilir; ancak mantık aynıdır:
- Komut satırını açın.
- Bulunduğunuz klasörün yolunu görüntüleyin.
- Dosyanın bulunduğu klasöre geçin.
- Klasördeki dosyaları listeleyin.
- Dosya adını doğru yazarak programı çalıştırın.
Dosya listesinde merhaba.py görünmüyorsa sorun büyük olasılıkla kodun içinde değil, çalışma dizinindedir. Önce klasör yolunu ve dosya adını kontrol edin. Bu alışkanlık, ileride proje klasörleri büyüdüğünde ve birden fazla dosyayla çalıştığınızda önemli ölçüde zaman kazandırır.
Git’i komut ezberi olarak değil, kayıt sistemi olarak düşünün
Git’in ilk aşamadaki amacı, karmaşık ekip iş akışlarını öğrenmek değil, yaptığınız değişiklikleri kontrollü biçimde kaydetmektir. Temel akışı şu cümleyle hatırlayabilirsiniz: Değişiklik yaptım, kontrol ettim, kaydettim.
- Değişiklik yaptım: Dosyada yeni bir özellik eklediniz veya bir hatayı düzelttiniz.
- Kontrol ettim: Hangi dosyanın değiştiğine ve yaptığınız farkın ne olduğuna baktınız.
- Kaydettim: Çalışan hâli anlamlı bir açıklamayla kayıt altına aldınız.
Başlangıçta bir depo oluşturup tek bir dosya ekleyin. Dosyayı değiştirdikten sonra önce farkı inceleyin, ardından kaydınızı “ilk çıktı eklendi” veya “not ekleme işlemi tamamlandı” gibi açıklayıcı bir mesajla oluşturun. Her değişiklikten sonra kayıt almak zorunda değilsiniz; fakat çalışan küçük adımları düzenli biçimde kaydetmek, yanlış bir değişiklik yaptığınızda önceki hâle dönmenizi kolaylaştırır.
Düzenli yönlendirmeye ihtiyaç duyuyorsanız, tek başına kurulum yapmakla sınıfta adım adım ilerlemek arasında fark olabilir. Bu aşamada canlı yazılım eğitimlerini incelemek, çalışma düzenini oturtmak ve sorularınızı ilerledikçe doğrudan ele almak isteyenler için doğal bir seçenek olabilir.
1. hafta kontrol listesi
- Çalışma klasörünüzü oluşturdunuz.
- Bir kod editöründe yeni dosya açıp kaydedebiliyorsunuz.
- Dosya uzantısını kontrol edebiliyorsunuz.
- Komut satırını açıp bulunduğunuz klasörü görüntüleyebiliyorsunuz.
- Dosyanın bulunduğu klasöre geçebiliyorsunuz.
- Basit bir programı komut satırından çalıştırabiliyorsunuz.
- Dosya adlarında anlamlı ve tutarlı bir adlandırma kullanıyorsunuz.
- Git deposu oluşturup bir değişikliği kontrol ederek kayıt altına alabiliyorsunuz.
Kurulum çalışmıyorsa teşhis sırası
Kurulum sırasında bir hata gördüğünüzde aynı işlemi art arda tekrarlamak yerine problemi sınıflandırın. Aşağıdaki sıra, başlangıç seviyesinde en sık karşılaşılan sorunları ayırmanıza yardımcı olur:
- Yanlış klasör: Komut satırında bulunduğunuz yolu kontrol edin. Çalıştırmak istediğiniz dosya gerçekten bu klasörde mi?
- Dosya uzantısı: Dosyanın
.pygibi doğru uzantıyla kaydedildiğini ve işletim sisteminin uzantıyı gizlemediğini kontrol edin. - Komut bulunamıyor: Programlama dili veya Git komutu tanınmıyorsa kurulumun tamamlanıp tamamlanmadığını ve komutun sistem yoluna eklenip eklenmediğini kontrol edin.
- Çalışma dizini hatası: Bir dosyanın başka bir klasördeki dosyayı bulamaması, dosyanın eksik olduğu anlamına gelmeyebilir. Göreli dosya yollarını ve programı hangi klasörden çalıştırdığınızı inceleyin.
- Hata mesajı: Mesajın tamamını okuyun. Özellikle dosya adı, satır numarası ve hata türü ilk kontrol etmeniz gereken bilgilerdir.
İlk haftanın sonunda bilgisayarınızda sade bir proje alanı kurabiliyor, dosya oluşturup çalıştırabiliyor ve yaptığınız değişiklikleri kaydedebiliyorsanız bir sonraki aşamaya geçmeye hazırsınız. Bu temel oturmadan algoritmaya geçmek mümkün olsa da, öğrendiğiniz fikirleri uygularken sürekli klasör ve kurulum sorunlarıyla uğraşmanız öğrenme hızınızı düşürebilir.
2. hafta: Algoritma ve temel programlama konularını doğru sırayla öğrenin
İkinci haftanın amacı çok sayıda konu bitirmek değil, bir problemin kodlanabilir parçalara nasıl ayrıldığını anlamaktır. En verimli sıra; girdi, işlem ve çıktıyı ayırmak, ardından değişkenleri ve veri türlerini kullanmak, koşullarla karar vermek, döngülerle tekrar eden işlemleri yönetmek ve son olarak kodu fonksiyonlara bölmektir. Bu sıra, konuları ezberlemek yerine aralarındaki ilişkiyi görmenizi sağlar.
Başlangıçta algoritma bilginizi ölçmek isterseniz algoritma bilgi testini çözerek hangi kavramlarda tekrar yapmanız gerektiğine dair bir başlangıç noktası oluşturabilirsiniz. Buradaki amaç sonucu bir başarı etiketi olarak görmek değil, çalışma sırasını daha gerçekçi belirlemektir.
1. Önce girdiyi, işlemi ve çıktıyı ayırın
Bir problemi çözmeye doğrudan kod yazarak başlamak, özellikle yeni başlayanlarda gereksiz karmaşaya yol açar. Önce şu üç soruya cevap verin:
- Girdi: Program hangi bilgiyi alacak?
- İşlem: Bu bilgi üzerinde hangi hesaplama veya karar yapılacak?
- Çıktı: Kullanıcıya ne gösterilecek?
Örneğin, kullanıcıdan bir sayı alıp bu sayının pozitif, negatif veya sıfır olduğunu söyleyen bir program tasarladığınızı düşünün. Girdi bir sayıdır. İşlem, sayının sıfırdan büyük, küçük veya eşit olup olmadığını kontrol etmektir. Çıktı ise ilgili sınıflandırma mesajıdır.
Bu ayrım, değişken ihtiyacını da görünür hâle getirir. Bu örnekte en az bir değişkene, yani kullanıcının girdiği sayıyı saklayacak bir alana ihtiyaç vardır. Değişkenleri yalnızca isim ve değer olarak değil, programın hangi bilgisini taşıdıkları açısından düşünün.
2. Değişkenleri ve veri türlerini anlamlandırın
Değişken, program çalışırken kullanacağınız bir bilgiyi isimlendirmenizi sağlar. Bir öğrencinin notu, ürün adedi, kullanıcı adı veya toplam tutar değişkenlerde tutulabilir. Veri türü ise bu bilginin nasıl yorumlanacağını belirler.
int: Tam sayılar için kullanılır. Örneğin12.float: Ondalıklı sayılar için kullanılır. Örneğin87.5.str: Metinleri ifade eder. Örneğin"Berk".bool: Doğru veya yanlış bilgisini taşır. ÖrneğinTrue.
Kullanıcıdan alınan verinin türüne dikkat etmek önemlidir. Klavyeden alınan bilgi çoğu durumda metin olarak gelir. Bu nedenle sayısal işlem yapmak istediğinizde dönüşüm gerekebilir. Örneğin int(input()) ifadesi, girilen metni tam sayıya dönüştürür.
3. Koşullarla karar mekanizması kurun
Koşullar, programın farklı durumlarda farklı davranmasını sağlar. Günlük hayattaki “Eğer hava yağmurluysa şemsiye al” düşüncesi, programlama dilinde if yapısıyla ifade edilir. Birden fazla ihtimal olduğunda elif ve else blokları kullanılır.
number = int(input("Bir sayı girin: "))
if number > 0:
result = "Pozitif"
elif number < 0:
result = "Negatif"
else:
result = "Sıfır"
print(result)
Örneğin kullanıcı -4 girerse programın beklenen çıktısı Negatif olur. Kullanıcı 0 girerse Sıfır, 18 girerse Pozitif yazdırılır. Burada dikkat edilmesi gereken nokta, programın sayıyı yalnızca ekrana yazdırmadığıdır; önce bir karşılaştırma yaparak hangi çıktının uygun olduğuna karar verir.
4. Tekrar eden işi döngüye taşıyın
Bir işlemi birkaç kez elle yazmak yerine döngü kullanmak, hem kod tekrarını azaltır hem de programın değişen miktarlarda veriyle çalışmasını sağlar. Örneğin beş sayıyı tek tek kontrol etmek yerine, kullanıcıdan her seferinde bir sayı alan bir döngü kurabilirsiniz.
Bu aşamada for ve while döngülerinin görevlerini ayırt etmeye çalışın:
for, tekrar sayısı veya üzerinde gezilecek öğeler bilindiğinde kullanışlıdır.while, belirli bir koşul doğru kaldığı sürece devam eden işlemlerde tercih edilir.- Döngünün ne zaman biteceği baştan düşünülmezse sonsuz döngü oluşabilir.
Örneğin bir listedeki sayıları toplamak için her sayıyı ayrı bir satırda eklemek yerine toplam değişkeni oluşturup döngü içinde güncelleyebilirsiniz. Bu yaklaşım, ileride not listeleri, ürün sepetleri veya dosyadan okunan kayıtlar gibi daha gerçekçi problemlerde de karşınıza çıkar.
5. Kodu fonksiyonlara bölün
Fonksiyon, belirli bir işi yapan ve gerektiğinde tekrar çağrılabilen kod bölümüdür. Değişken, koşul ve döngüleri öğrendikten sonra fonksiyonlara geçmek daha anlamlıdır; çünkü artık bölmek istediğiniz işin sınırlarını görebilirsiniz.
Fonksiyonlaştırma yaparken şu soruyu sorun: “Bu kodun tek ve anlaşılır bir görevi var mı?” Sayı sınıflandıran bir kod, toplam hesaplayan başka bir kod ve sonucu ekrana yazdıran ayrı bir kod olarak tasarlanabilir. Böylece bir bölümde değişiklik yaptığınızda programın tamamını yeniden düzenlemek zorunda kalmazsınız.
İkinci hafta beceri ölçen üç mini görev
- Sayı kontrolü: Kullanıcıdan alınan bir sayının tek mi çift mi olduğunu belirleyin. Önce girdiyi, işlemi ve çıktıyı kendi cümlelerinizle yazın; sonra koşul kullanarak çözün.
- Tekrar eden işlem: 1’den 10’a kadar olan sayıları döngüyle ekrana yazdırın. Ardından aynı döngüyü kullanarak bu sayıların toplamını hesaplayın.
- Fonksiyonlaştırma: Bir sayının pozitif, negatif veya sıfır olduğunu belirleyen kodu
classify_numberadlı bir fonksiyona taşıyın. Fonksiyonun sonucu döndürmesini ve ana bölümde ekrana yazdırılmasını sağlayın.
Bu görevleri tamamladığınızda çözümü hazır bir yerden kopyalamadan şu dört soruya cevap verebilmelisiniz: Problemi kendi cümlelerimle açıklayabiliyor muyum? Çözümü birkaç adıma ayırabiliyor muyum? Hangi değişkenlere ihtiyacım olduğunu söyleyebiliyor muyum? Koşul ile döngünün görevlerinin farklı olduğunu açıklayabiliyor muyum?
3. hafta: Kod okuyun, hata mesajlarını yorumlayın ve öğrenme rutini kurun

Üçüncü haftada hedefiniz yalnızca yeni kod yazmak değil, yazılmış bir kodun ne yaptığını takip edebilmek ve hata oluştuğunda rastgele denemeler yerine kanıta dayalı teşhis yapmaktır. Kod okuma becerisi, başlangıçta yavaş ilerliyor gibi görünse de hata ayıklama süresini azaltır ve başkalarının yazdığı projeleri anlamanızı kolaylaştırır.
Kod yazmadan önce satır satır izleyin
Bir kod parçasını çalıştırmadan önce değişkenlerin hangi değerleri alacağını tahmin edin. Programın ilk satırından son satırına kadar ilerlerken şu soruları sorun:
- Bu satır hangi değişkeni oluşturuyor veya değiştiriyor?
- Koşul doğruysa hangi blok çalışacak?
- Döngü kaç kez tekrarlanabilir?
- Programın sonunda ekrana hangi değer yazılmalı?
Daha sonra kodu çalıştırıp beklenen çıktı ile gerçek çıktıyı karşılaştırın. İki çıktı farklıysa, tüm programı aynı anda değiştirmek yerine farkın oluştuğu ilk noktayı bulun. Bu yöntem özellikle değişken değerlerinin döngü içinde değiştiği programlarda etkilidir.
Hata türlerini birbirinden ayırın
Her hata aynı şekilde çözülmez. Önce karşılaştığınız sorunun türünü belirlemek, doğru müdahaleyi seçmenize yardımcı olur.
- Sözdizimi hatası: Programlama dilinin yazım kurallarına uyulmadığında oluşur. Eksik parantez, yanlış girinti veya hatalı yazılmış bir anahtar kelime buna örnektir.
- Çalışma zamanı hatası: Kod başlatılır ancak çalışırken beklenmeyen bir durumla karşılaşır. Bir metni sayıya çevirmeye çalışmak veya tanımlanmamış bir değişkeni kullanmak bu gruba girebilir.
- Mantık hatası: Program çalışır fakat yanlış sonuç üretir. Örneğin toplam değişkenini döngü içinde sıfırlamak, kodun hata vermeden yanlış hesap yapmasına neden olabilir.
Hata mesajını teşhis için kullanın
Bir hata mesajını kopyalayıp rastgele çözüm aramak yerine önce mesajın içindeki bilgileri ayırın. Özellikle şu dört noktayı inceleyin:
- Dosya adı: Hata hangi dosyada oluşmuş?
- Satır numarası: İşaret edilen satırda hangi ifade var?
- Hata türü: Mesaj sözdizimi, tür, isim veya başka bir soruna mı işaret ediyor?
- Son değişiklik: Hata ortaya çıkmadan hemen önce hangi satırı değiştirdiniz?
Satır numarası her zaman hatanın gerçek kaynağı olmayabilir. Örneğin eksik bir parantez, sonraki satırda hata olarak raporlanabilir. Bu nedenle işaretlenen satırı ve bir önceki satırları birlikte okuyun. Hata mesajını anlamadığınızda, sorunu tek cümleyle yeniden ifade etmeye çalışın: “Program kullanıcı girdisini sayıya çeviremiyor” veya “Döngü bitmesi gerekirken aynı koşulu koruyor” gibi.
Tek başınıza hata ayıklama mini görevi
Aşağıdaki kodu çalıştırmadan önce beklenen sonucu tahmin edin. Ardından çalıştırıp sonucu inceleyin:
total = 0
for number in [2, 4, 6]:
total = 0
total += number
print(total)
Beklenen sonuç listedeki sayıların toplamı olan 12 değeridir. Ancak kodun gerçek çıktısı 6 olur. Bunun nedeni, total değişkeninin her döngü turunda yeniden 0 yapılmasıdır. Teşhis çıktınızı şu şekilde yazabilirsiniz: “Belirti: Toplam beklenenden düşük. Neden: Birikimli değişken döngü içinde sıfırlanıyor. Çözüm: total = 0 satırını döngünün dışına taşımak. Tekrar önleme: Birikimli değişkenlerin başlangıç değerini döngüye girmeden önce kontrol etmek.”
Bu görevi tamamladıktan sonra kodu düzelterek yeniden çalıştırın ve gerçek çıktının 12 olduğunu doğrulayın. Amaç yalnızca doğru satırı bulmak değil, hatanın nedenini açıklayabilmektir.
Ders notu ve hata günlüğü tutun
Öğrendiğiniz kavramları yalnızca ekran görüntüsü veya kopyalanmış tanımlarla saklamak yerine kendi cümlelerinizle yazın. Her konu için aşağıdaki şablonu kullanabilirsiniz:
- Kavram: Örneğin döngü, fonksiyon veya veri türü.
- Kendi cümlem: Kavramın ne işe yaradığını günlük dilinizle açıklayın.
- Kısa örnek: Beş-on satırlık küçük bir kullanım yazın.
- Takıldığım nokta: Hâlâ karıştırdığınız veya tekrar bakmanız gereken bölümü belirtin.
Soru sorarken de bağlam vermeye çalışın. “Kod çalışmıyor” yerine “Ne yapmak istedim, ne denedim, ne oldu, ne bekliyordum?” formatını kullanın. Bu yapı, hem sizin problemi daha iyi düşünmenizi hem de yardım eden kişinin sorunu daha hızlı anlamasını sağlar.
Hata günlüğünüzde her kayıt için tarih, belirti, neden, çözüm ve tekrar önleme alanları bulunabilir. Tarihi yazmak, hangi konulara tekrar tekrar döndüğünüzü görmenize yardımcı olur. Düzenli tekrar için her gün kısa bir çalışma bloğu ayırabilir, önceki günün kodunu yeniden okuyabilir ve birkaç gün sonra aynı görevi notlarınıza bakmadan tekrar çözebilirsiniz. Kesin bir süre veya garanti edilmiş bir sonuç yerine, sürdürülebilir bir ritim kurmaya odaklanın.
Genel kodlama seviyenizi başlangıçta görmek isterseniz ücretsiz kodlama bilgisi testini kullanabilirsiniz. Sonucu, hangi başlıklara geri dönmeniz gerektiğini belirlemek için kişisel çalışma notlarınızla birlikte değerlendirin.
4. hafta: Komut satırında çalışan not takip projesini tamamlayın
Dört haftalık hazırlığın son aşamasında amacınız büyük bir uygulama geliştirmek değil, öğrendiğiniz temel becerileri tek bir küçük projede birleştirmektir. Bunun için komut satırından çalışan basit bir not takip uygulaması yeterlidir. Uygulamanızda yeni görev ekleyebilir, görevleri listeleyebilir, tamamlanan görevi işaretleyebilir ve verileri bir dosyada saklayabilirsiniz. Bu proje sayesinde yalnızca kod yazmayı değil, **dosya ve klasör düzenini**, terminalden program çalıştırmayı, kullanıcı girdisini kontrol etmeyi ve küçük değişiklikleri Git ile kaydetmeyi de denersiniz. İlk sürümün kusursuz olması beklenmez. Öncelik, çalışan en küçük sürümü kurmak; ardından kodu daha anlaşılır ve dayanıklı hâle getirmektir.
Projenin hedefi ve sınırları
Başlangıç düzeyinde bir not takip uygulaması için şu özellikler yeterlidir:
- Yeni bir not veya görev ekleme
- Kayıtlı görevleri listeleme
- Bir görevi tamamlandı olarak işaretleme
- Görevleri basit bir dosyada saklama
- Geçersiz komut veya eksik bilgi girildiğinde kullanıcıyı uyarmak
Bu aşamada veritabanı, kullanıcı hesabı, grafik arayüz, web sunucusu veya kapsamlı bir arama sistemi eklemeniz gerekmez. JSON ya da metin dosyası gibi basit bir saklama yöntemi, dosya okuma-yazma mantığını anlamak için yeterlidir. Bu yöntemin sınırı, aynı anda çok sayıda kullanıcının çalıştığı veya verinin karmaşık biçimde sorgulandığı uygulamalar için uygun olmamasıdır. Ancak üniversite öncesi hazırlıkta önemli olan, önce verinin nasıl oluşturulduğunu, okunduğunu ve değiştirildiğini kavramaktır.
Görev Kartı 1: Klasör ve dosya yapısını oluşturun
Amaç: Projeyi dağınık dosyalar yerine anlaşılır bir klasör yapısıyla başlatmak. Tek başınıza yapmanız gereken:
- Bilgisayarınızda proje için ayrı bir klasör oluşturun.
- Bu klasörün içine
main.pyadlı Python dosyasını ekleyin. - Verilerin saklanacağı
notes.jsondosyasını oluşturun veya programın ilk çalışmada oluşturmasını sağlayın. - İsterseniz kısa açıklamalar için
README.mddosyası ekleyin.
Örnek klasör yapısı şu şekilde olabilir:
| Dosya veya klasör | Görevi |
|---|---|
not-takip/ |
Projenin ana klasörü |
main.py |
Programın çalıştırılabilir Python dosyası |
notes.json |
Notların ve tamamlanma durumlarının saklandığı dosya |
README.md |
Programın nasıl çalıştırıldığını anlatan kısa belge |
Kontrol sorusu: Program dosyası, veri dosyası ve açıklama dosyasının görevlerini birbirinden ayırabiliyor musunuz? Beklenen çıktı: Projeye ait dosyaları başka çalışmalarınızla karıştırmadan bulabileceğiniz düzenli bir klasör.
Görev Kartı 2: En küçük çalışan sürümü kurun
Amaç: Önce temel komutların çalıştığını görmek. Programın ilk sürümünde şu komutları destekleyebilirsiniz:
add: Yeni görev ekler.list: Kayıtlı görevleri gösterir.done: Seçilen görevi tamamlandı olarak işaretler.
Aşağıdaki örnek, başlangıç seviyesinde bu akışı gösteren küçük bir Python uygulamasıdır:
import json
import sys
from pathlib import Path
FILE = Path("notes.json")
data = json.loads(FILE.read_text()) if FILE.exists() else []
command = sys.argv[1] if len(sys.argv) > 1 else ""
if command == "add" and len(sys.argv) > 2:
data.append({"text": " ".join(sys.argv[2:]), "done": False})
elif command == "done" and len(sys.argv) > 2:
index = int(sys.argv[2]) - 1
data[index]["done"] = True
elif command == "list":
for number, item in enumerate(data, 1):
mark = "x" if item["done"] else " "
print(f"{number}. [{mark}] {item['text']}")
else:
print("Kullanım: add, list veya done komutlarından birini yazın.")
FILE.write_text(json.dumps(data, ensure_ascii=False, indent=2))
Bu kod, komut satırından verilen bilgiyi alır ve görevleri notes.json dosyasına kaydeder. Örneğin aşağıdaki çalışma sırasını deneyebilirsiniz:
python main.py add Algoritma tekrar et
python main.py add Git komutlarını dene
python main.py list
1. [ ] Algoritma tekrar et
2. [ ] Git komutlarını dene
python main.py done 1
python main.py list
1. [x] Algoritma tekrar et
2. [ ] Git komutlarını dene
Kontrol sorusu: Programı kapatıp yeniden çalıştırdığınızda daha önce eklediğiniz görevler hâlâ görünüyor mu? Beklenen çıktı: Program yeniden başlatılsa bile görevlerin dosyadan okunması ve tamamlanma durumunun korunması.
Görev Kartı 3: Fonksiyonlara bölün ve hatalı girişleri düşünün
Amaç: Kodun tek parça hâlinde büyümesini engellemek ve hataları önceden karşılamak. İlk çalışan sürümünüzü gördükten sonra kodu görevlerine göre ayırmayı deneyin. Örneğin:
load_notes(): Dosyadaki verileri okur.save_notes(): Güncel verileri dosyaya kaydeder.add_note(): Yeni görev ekler.list_notes(): Görevleri ekrana yazdırır.complete_note(): Seçilen görevi tamamlandı olarak işaretler.
Bu aşamada şu hatalı durumları özellikle test edin:
- Hiç komut yazmadan programı çalıştırmak
- Var olmayan bir görev numarasını tamamlamaya çalışmak
- Görev numarası yerine harf yazmak
- Boş bir görev eklemeye çalışmak
- Veri dosyasının boş veya hatalı biçimde olması
Her durumu tamamen çözmeniz başlangıçta mümkün olmayabilir. Fakat hatayı fark edip programın hangi satırında oluştuğunu aramaya çalışmanız başlı başına önemli bir beceridir. Örneğin ValueError mesajı, programın beklediği veri türüyle verilen veri türünün uyuşmadığını düşündürür. IndexError ise çoğu zaman listenin sınırları dışında bir elemana erişilmeye çalışıldığını gösterir. Kontrol sorusu: Program beklemediğiniz bir girişle karşılaştığında kapanıyor mu, yoksa kullanıcıya anlaşılır bir uyarı mı veriyor? Beklenen çıktı: En az iki hatalı giriş senaryosunda sorunun kaynağını açıklayabilmeniz ve uygun bir kontrol ekleyebilmeniz.
Görev Kartı 4: Komut satırı kullanımını belgeleyin
Amaç: Projeyi birkaç gün sonra yeniden açtığınızda nasıl çalıştıracağınızı hatırlamak. README.md dosyasına şu bilgileri kendi cümlelerinizle yazın:
- Projenin amacı
- Hangi dosyanın çalıştırılacağı
- Yeni görev ekleme biçimi
- Görevleri listeleme biçimi
- Görevi tamamlandı olarak işaretleme biçimi
- Karşılaştığınız en az bir hata ve çözümü
Mini kontrol listesi:
- Doğru proje klasörünü açın.
- Program dosyasının bulunduğu konumu kontrol edin.
- Programı komut satırından çalıştırın.
- Bir görev ekleyin.
- Görevleri listeleyin.
- Bir görevi tamamlandı olarak işaretleyin.
- Programı kapatıp yeniden çalıştırarak verinin korunduğunu test edin.
Projeyi doğru klasörden çalıştırmak önemlidir. Yanlış klasörde çalıştırıldığında program dosyası bulunamayabilir veya veri dosyası beklemediğiniz başka bir konumda oluşabilir. Bu nedenle terminalde bulunduğunuz klasörü kontrol etmeyi ve dosyaları listelemeyi alışkanlık hâline getirin.
Görev Kartı 5: Değişikliği Git ile kaydedin
Amaç: Yaptığınız çalışmanın önceki durumunu korumak ve değişiklik geçmişi oluşturmak. Projenin ana klasöründe temel Git akışını deneyin:
- Projeyi Git ile başlatın.
- Dosyaları değişiklik listesine ekleyin.
- İlk kaydı anlamlı bir mesajla oluşturun.
- Daha sonra bir hata düzeltip ikinci bir kayıt alın.
Kayıt mesajları “değişiklik yaptım” gibi belirsiz olmak yerine “Görev listeleme komutu eklendi” veya “Geçersiz görev numarası kontrolü eklendi” gibi açıklayıcı olmalıdır. Buradaki hedef ileri düzey Git öğrenmek değil, yaptığınız değişikliği belirli bir noktada saklamayı öğrenmektir. Kontrol sorusu: Projenizde hangi değişikliği ne zaman yaptığınızı Git geçmişinden anlayabiliyor musunuz? Beklenen çıktı: En az bir anlamlı Git kaydı ve bu kayda karşılık gelen çalışan bir proje sürümü.
Projenin başlangıç seviyesine uygun sınırları
Notları JSON dosyasında saklamak, küçük ve tek kullanıcılı bir çalışma için anlaşılır bir başlangıçtır. Ancak bu yapı büyüdükçe bazı sorunlar ortaya çıkabilir:
- Dosya aynı anda birden fazla işlem tarafından değiştirilirse veri çakışması yaşanabilir.
- Görev sayısı arttıkça arama ve filtreleme işlemleri zorlaşabilir.
- Verilerin güvenliği ve kullanıcı yetkilendirmesi ayrıca ele alınmalıdır.
- Hatalı biçimde kaydedilen dosya, programın verileri okuyamamasına neden olabilir.
Bu sınırlar, projenin başarısız olduğunu göstermez. Aksine hangi noktada dosya tabanlı yaklaşımın yetersiz kalabileceğini görmenizi sağlar. Üniversitede ilerleyen konularla birlikte SQL, veritabanı tasarımı, API ve test gibi başlıklar daha anlamlı hâle gelecektir. Şimdilik hedefiniz, küçük bir programı baştan sona anlayarak geliştirmektir.
Hazır olma kontrolü: İlk ders haftasına hangi becerilerle girilmeli?
Dört haftalık planı tamamladıktan sonra kendinizi “programlamayı öğrendim” veya “programlamaya uygun değilim” şeklinde etiketlemeniz gerekmez. Bu kontrolün amacı seviyenizi sabitlemek değil, hangi beceride tekrar yapmanız gerektiğini görmektir. Her maddeyi şu üç seçenekten biriyle değerlendirin:
- Tek başına yapabiliyorum: Ek açıklama olmadan uygulayabiliyorum.
- İpuçlarıyla yapabiliyorum: Bir örnek, not veya yönlendirme gördüğümde ilerleyebiliyorum.
- Henüz yapamıyorum: Nereden başlayacağımı veya hangi kavramı kullanacağımı bilmiyorum.
Problem çözme ve algoritma kontrolü
- Bir problemi girdiler, işlemler ve çıktılar olarak ayırabiliyor muyum?
- Bir problemi çözmeden önce örnek veriyle elle işlem yapabiliyor muyum?
- Değişken, koşul, döngü ve fonksiyon arasında seçim yapma nedenimi açıklayabiliyor muyum?
- Çözümümü önce basit adımlar veya sözde kod olarak yazabiliyor muyum?
Örneğin “öğrencilerin not ortalamasını hesapla ve geçenleri göster” probleminde girdilerin notlar, işlemin toplamı öğrenci sayısına bölmek, çıktının ortalama ve sonuç bilgisi olduğunu söyleyebilmelisiniz. Hangi noktada döngüye, hangi noktada koşula ihtiyaç duyduğunuzu da gerekçelendirebilmeniz beklenir.
Kod okuma ve açıklama kontrolü
- 10-20 satırlık kısa bir kodu satır satır açıklayabiliyor muyum?
- Bir değişkenin programın hangi bölümünde kullanıldığını takip edebiliyor muyum?
- Bir koşulun hangi durumda çalışacağını örnekleyebiliyor muyum?
- Bir döngünün kaç kez çalışacağını tahmin edebiliyor muyum?
- Bir fonksiyonun girdisini, yaptığı işlemi ve döndürdüğü sonucu ayırabiliyor muyum?
Kodu yalnızca çalıştırmak yerine “Bu satır neden var?” sorusunu sormaya çalışın. Bir kodu kendi cümlelerinizle açıklayamıyorsanız, o kodu henüz yeterince içselleştirmemiş olabilirsiniz.
Hata teşhisi ve terminal kontrolü
- Hata mesajındaki dosya adını ve satır numarasını bulabiliyor muyum?
- Hatanın sözdizimi, veri türü, dosya yolu veya mantık hatası olabileceğini ayırt edebiliyor muyum?
- Programı doğru klasörden komut satırı üzerinden çalıştırabiliyor muyum?
- Bir dosyanın bulunamadığı durumda önce klasör konumunu kontrol ediyor muyum?
- Hatanın oluştuğu satırı izole etmek için küçük denemeler yapabiliyor muyum?
Hata mesajını görür görmez tüm kodu silip yeniden yazmak yerine önce dosya adını, satır numarasını ve hata türünü not edin. Ardından ilgili satırın aldığı veriyi inceleyin. Sorunu küçük bir örnekle yeniden üretmek, çoğu zaman çözümü hızlandırır.
Dosya düzeni ve Git kontrolü
- Proje dosyalarını tek bir ana klasörde düzenleyebiliyor muyum?
- Program dosyası ile veri dosyasının görevini ayırabiliyor muyum?
- README dosyasına programın nasıl çalıştırıldığını yazabiliyor muyum?
- Küçük bir değişikliği Git ile kaydedebiliyor muyum?
- Git kaydının neyi değiştirdiğini anlamlı bir mesajla ifade edebiliyor muyum?
Bu maddelerde “ipuçlarıyla yapabiliyorum” seçeneğini işaretlemek başarısızlık değildir. İlk ders haftasına girerken her şeyi ezbere bilmeniz beklenmez. Önemli olan, ihtiyaç duyduğunuzda hangi bilgiye bakacağınızı ve problemi nasıl parçalara ayıracağınızı bilmektir. Başlangıç seviyenizi daha geniş biçimde görmek isterseniz, Python bilgi testi üzerinden mevcut temel durumunuzu değerlendirebilir veya Java ile ilerleyecekseniz benzer bir öz değerlendirme yapabilirsiniz. Test sonucunu kesin bir etiket gibi değil, hangi başlıklara dönmeniz gerektiğini gösteren bir yönlendirme olarak kullanın.
Sonuca göre hangi haftaya dönmelisiniz?
- Problem girdilerini, işlemlerini ve çıktılarını ayıramıyorsanız: 2. haftadaki algoritma ve problem parçalama çalışmalarına dönün.
- Kısa kodu satır satır açıklayamıyorsanız: Değişken, koşul, döngü ve fonksiyon örneklerini daha küçük kodlarla tekrar edin.
- Hata mesajındaki satırı bulamıyorsanız: 3. haftadaki hata okuma rutinini uygulayın ve her hatada dosya, satır ve hata türünü not edin.
- Terminalden programı çalıştıramıyorsanız: 1. haftadaki klasör, dosya yolu ve çalışma düzeni alıştırmalarına geri dönün.
- Git kaydı oluşturamıyorsanız: 4. haftadaki not takip projesinde tek bir değişiklik yapıp yalnızca o değişikliği kaydetmeyi deneyin.
İlk ders haftasına hazır olmak, her konuyu bitirmiş olmak anlamına gelmez. Hazır olmak; bilmediğiniz noktayı fark edebilmek, sorunu küçük parçalara ayırabilmek ve çözüm için düzenli bir deneme yapabilmektir.
Sık Sorulan Sorular
Üniversite başlamadan önce bir programlama dilini tamamen öğrenmek gerekir mi?
Hayır. Bir programlama dilini tamamen öğrenmek gerçekçi bir hedef değildir; diller, kütüphaneler ve geliştirme araçları zaman içinde öğrenilmeye devam eder. Üniversite öncesinde değişken, koşul, döngü, fonksiyon, temel veri yapıları, dosya işlemleri ve hata ayıklama gibi aktarılabilir temelleri anlamanız daha değerlidir. Bir dili ezberlemekten çok, küçük bir problemi kendi başınıza çözüp çözümünüzü açıklayabilmeye odaklanın.
Bilgisayar programcılığına hazırlanan bir öğrenci ilk olarak algoritma mı yoksa kod yazmayı mı öğrenmeli?
İkisini tamamen ayırmak gerekmez; ancak kod yazmadan önce problemi adımlara bölmek daha sağlıklı bir başlangıçtır. Önce girdiyi, yapılacak işlemleri ve beklenen çıktıyı belirleyin. Ardından bu çözümü kısa bir sözde kodla ifade edip seçtiğiniz programlama dilinde uygulayın. Böylece hata yaptığınızda sorunun algoritmada mı, yoksa kodun yazımında mı olduğunu daha kolay ayırt edebilirsiniz.
Kod yazarken aldığım hata mesajlarını nasıl daha doğru yorumlayabilirim?
Önce hata türünü, dosya adını ve satır numarasını bulun. Daha sonra ilgili satırdaki değişkenlerin hangi değerleri aldığını kontrol edin. Hatanın sözdizimi, veri türü, dosya yolu veya program mantığıyla ilgili olup olmadığını ayırmaya çalışın. Hatanın tamamını rastgele değiştirmek yerine küçük bir örnekle yeniden oluşturun ve her değişiklikten sonra programı tekrar çalıştırın.
Git ve komut satırı bilgisi üniversiteye başlamadan önce ne kadar öğrenilmeli?
Başlangıç için terminalden doğru klasöre geçebilmeniz, bir programı çalıştırabilmeniz, dosyaları listeleyebilmeniz ve temel klasör düzenini anlayabilmeniz yeterlidir. Git tarafında ise projeyi başlatma, dosyaları kayda hazırlama, anlamlı bir kayıt oluşturma ve geçmişteki değişiklikleri görme becerileri iyi bir temeldir. İleri düzey dallanma ve ekip iş akışlarını daha sonra öğrenebilirsiniz.
Dört haftalık hazırlık planını tamamlayamazsam hangi konulara geri dönmeliyim?
Önce yapamadığınız beceriyi belirleyin. Problem adımlarını kuramıyorsanız algoritma konularına, kısa kodu açıklayamıyorsanız değişken-koşul-döngü-fonksiyon temellerine, hata mesajını okuyamıyorsanız hata teşhisine, terminalden çalıştıramıyorsanız klasör ve dosya düzenine dönün. Planı baştan tekrar etmek zorunda değilsiniz; yalnızca eksik kalan beceriyi küçük bir görevle yeniden çalışmanız yeterlidir.
Üniversiteye hazırlıkta hedefiniz her şeyi bitirmek değil, öğrenmeye nereden devam edeceğinizi bilerek başlamaktır.