1 Hazırlık: Python ve Çalışma Ortamı
Bilgisayar çok hızlı ama hiç düşünmeyen bir yardımcıdır: ne yapacağını ona adım adım ve hiç belirsizlik bırakmadan söylememiz gerekir. Programlama, bu adımları bilgisayarın anlayacağı bir dilde yazma işidir. Bu derste o dil Python olacak.
Kod yazmaya başlamadan önce iki şeyi hazırlamamız gerekiyor. Birincisi kavramsal: program, algoritma ve programlama dili ne demektir? İkincisi pratik: Python kodunu nereye yazıp nasıl çalıştıracağız? Bu bölümün sonunda tarayıcıda çalışan bir Python defteri açmış, ilk programımızı çalıştırmış ve bu notlardaki kodların nasıl okunacağını öğrenmiş olacağız.
1.1 Program, Algoritma ve Programlama Dili
Bilgisayara bir iş yaptırmanın ilk adımı, işin kendisini adımlara ayırmaktır; dil seçimi ondan sonra gelir.
Tanım 1.1 (Algoritma) Bir problemi çözmek için izlenecek, sırası belli, her biri açık ve uygulanabilir adımlardan oluşan ve sonlu sayıda adımda biten talimatlar dizisine algoritma denir.
Yani bir algoritma, bir yemek tarifine benzer: malzemeler (girdiler) alınır, adımlar sırayla uygulanır ve sonunda bir sonuç (çıktı) elde edilir. Tarifteki “biraz tuz ekle” gibi belirsiz bir adım bir aşçı için yeterli olabilir, ama bir bilgisayar için değildir; algoritmanın her adımı tek bir anlama gelmelidir.
Örnek 1.1 (İki Sayının Ortalamasını Bulan Algoritma) İki sayının aritmetik ortalamasını bulan bir algoritma yazınız ve \(8\) ile \(13\) sayıları için uygulayınız.
Çözüm
Algoritma dört adımdan oluşur:
- Birinci sayıyı al ve ona \(a\) de.
- İkinci sayıyı al ve ona \(b\) de.
- \(a\) ile \(b\)’yi topla ve toplamı \(2\)’ye böl; sonuca \(o\) de.
- \(o\)’yu yaz ve dur.
\(a = 8\) ve \(b = 13\) için üçüncü adımda \(o = (8 + 13)/2 = 21/2 = 10{,}5\) bulunur ve dördüncü adımda \(10{,}5\) yazılır. Adımlar sonlu sayıdadır, her biri tek anlamlıdır ve algoritma her iki sayı için aynı biçimde çalışır. \(\blacksquare\)
Algoritmayı bulmak işin düşünme kısmıdır. Onu bilgisayara anlatmak için bir dile ihtiyacımız var.
Tanım 1.2 (Program ve Programlama Dili) Bir algoritmanın, bilgisayarın çalıştırabileceği biçimde yazılmış hâline program denir. Programların yazıldığı, kelimeleri ve yazım kuralları kesin olarak belirlenmiş yapay dile programlama dili denir. Bir programı oluşturan metne kaynak kod ya da kısaca kod denir.
Yani bir programlama dili, insanın okuyup yazabileceği kadar anlaşılır, bilgisayarın da tek bir biçimde yorumlayabileceği kadar kesin bir dildir. Günlük dilde anlamı bağlamdan çıkarırız; programlama dilinde ise bir virgülün ya da bir parantezin eksik olması bile programın çalışmamasına yol açar.
Python, 1991’de ilk sürümü yayımlanan, okunaklı yazımıyla bilinen genel amaçlı bir programlama dilidir. Bu notlarda dilin 3. sürümü kullanılır; kodlar Python 3.12 ile çalıştırılmıştır.
Tanım 1.3 (Yorumlayıcı) Python kodunu satır satır okuyup çalıştıran programa Python yorumlayıcısı (interpreter) denir. Kodu bu şekilde, ayrı bir derleme adımı olmadan çalıştırılan dillere yorumlanan diller denir.
Yani Python’da bir kod yazdığımızda onu ayrıca makine diline çevirmekle uğraşmayız; yorumlayıcı kodu okur ve hemen çalıştırır. Bir hata varsa yorumlayıcı hatanın bulunduğu satırda durur ve bir hata mesajı yazar.
1.2 Python’u Çalıştırmanın Yolları
Python kodu birkaç farklı ortamda yazılıp çalıştırılabilir; dil hepsinde aynıdır, değişen yalnızca kodu yazdığımız pencere ve çıktıyı görme biçimidir.
Bu derste en çok kullanacağımız üç ortam şunlardır:
| Ortam | Kurulum | Kod nereye yazılır | En uygun olduğu iş |
|---|---|---|---|
| Google Colab | gerekmez, tarayıcıda açılır | defterin kod hücrelerine | derste ve evde hızlı deneme |
| IDLE | python.org’dan Python ile gelir | etkileşimli kabuğa ya da .py dosyasına |
kısa denemeler, internetsiz çalışma |
| VS Code | ayrıca kurulur, Python eklentisi eklenir | .py dosyasına ya da .ipynb defterine |
uzun programlar ve projeler |
Google Colab. Bir Google hesabıyla colab.research.google.com adresine girilir ve Yeni not defteri seçilir. Python Google’ın sunucularında çalışır; bilgisayara hiçbir şey kurmak gerekmez. Defterler Google Drive’a kaydedilir. Bu notlardaki bütün kodlar Colab’da olduğu gibi çalışır.
Python ve IDLE. python.org adresinden işletim sistemine uygun kurulum dosyası indirilir. Windows’ta kurulumun ilk ekranında Add python.exe to PATH kutusunu işaretlemek, Python’ın komut satırından da çalışmasını sağlar. Kurulumla birlikte IDLE adlı basit bir düzenleyici gelir. IDLE açıldığında >>> istemiyle beklenen bir etkileşimli kabuk (shell) görünür: buraya yazılan her satır Enter’a basıldığı anda çalışır. Uzun bir program için File → New File ile yeni bir dosya açılır, kod yazılır, .py uzantısıyla kaydedilir ve Run → Run Module (F5) ile çalıştırılır.
VS Code. Visual Studio Code, birçok dil için kullanılan ücretsiz bir kod düzenleyicisidir. Python ile kullanmak için önce Python kurulur, sonra VS Code’un eklentiler bölümünden Python eklentisi eklenir. .py uzantılı bir dosya açıldığında sağ üstteki çalıştır düğmesi programı çalıştırır ve çıktı alttaki terminal penceresinde görünür. Jupyter eklentisi eklenirse Colab’dakine benzer defterler (.ipynb dosyaları) VS Code içinde de açılabilir.
Hiç kurulum yapmadan hemen başlamak için Colab yeterlidir; bu bölümün geri kalanı da Colab üzerinden anlatılıyor. Kendi bilgisayarında çalışmak isteyen, Python’ı kurup IDLE ya da VS Code ile aynı kodları çalıştırabilir.
1.3 Defter, Kod Hücresi ve Metin Hücresi
Colab’da ve Jupyter’de çalışma, sayfalara bölünmüş bir defter üzerinde yapılır; bu yapıyı tanımak, kodun hangi sırayla çalıştığını anlamanın da anahtarıdır.
Tanım 1.4 (Defter) Kodun, açıklama metinlerinin ve kodun ürettiği çıktıların bir arada durduğu belgeye defter (notebook) denir. Jupyter ve Colab defterleri .ipynb uzantılı dosyalarda saklanır.
Yani bir defter, içinde çalışan kodlar bulunan bir ders notu gibidir. Bu derste kullanılan notlar da başlangıçta böyle defterler olarak hazırlanabilir.
Tanım 1.5 (Kod Hücresi ve Metin Hücresi) Bir defter alt alta dizilmiş hücrelerden (cell) oluşur. İçine Python kodu yazılan ve çalıştırıldığında çıktısı hemen altında görünen hücreye kod hücresi; içine açıklama, başlık ya da formül yazılan ve çalıştırıldığında biçimlendirilmiş metne dönüşen hücreye metin hücresi denir.
Yani kod hücreleri bilgisayar için, metin hücreleri okur için yazılır. Colab’da yeni bir kod hücresi + Kod, yeni bir metin hücresi + Metin düğmesiyle eklenir.
Bir kod hücresini çalıştırmanın üç yolu vardır:
- hücrenin solundaki çalıştır düğmesine tıklamak,
- Ctrl + Enter: hücreyi çalıştırır, imleç aynı hücrede kalır,
- Shift + Enter: hücreyi çalıştırır ve bir sonraki hücreye geçer.
Bir hücrede tanımlanan bir değişken, o hücre çalıştırıldıktan sonra defterin bütün hücrelerinde kullanılabilir. Önemli olan hücrelerin sayfadaki yeri değil, çalıştırılma sırasıdır. Colab her hücrenin solunda, o hücrenin oturumda kaçıncı sırada çalıştırıldığını gösteren küçük bir numara tutar.
Örnek 1.2 (Hücrelerin Çalıştırılma Sırası) Bir defterde alt alta iki kod hücresi olsun. Birinci hücrede x = 5, ikinci hücrede print(x * 2) yazıyor. Önce yalnız ikinci hücre çalıştırılırsa ne olur? Sonra birinci, ardından yine ikinci hücre çalıştırılırsa ne olur?
Çözüm
Oturum yeni açıldıysa ve birinci hücre hiç çalıştırılmadıysa Python x adında bir şey tanımaz. İkinci hücre bu yüzden şu hata ile durur:
NameError: name 'x' is not defined
Birinci hücre çalıştırıldığında x değişkeni oluşur ve değeri \(5\) olur. Bundan sonra ikinci hücre çalıştırılırsa x * 2 hesaplanır ve ekrana 10 yazılır. Hücreler sayfada aynı yerde dursa da sonucu çalıştırılma sırası belirlemiştir. \(\blacksquare\)
Hücreler karışık sırayla çalıştırıldıkça defterin durumu sayfada görünenden farklılaşabilir. Böyle durumlarda Çalışma zamanı (Runtime) menüsündeki Oturumu yeniden başlat (Restart session) komutu bütün değişkenleri siler; ardından hücreler yukarıdan aşağıya sırayla yeniden çalıştırılır. Defter Dosya menüsünden .ipynb ya da .py olarak indirilebilir ve yazdırılabilir.
1.4 Metin Hücreleri ve Markdown
Metin hücreleri Markdown adlı sade bir biçimlendirme diliyle yazılır; birkaç işaret öğrenmek, düzenli ve okunaklı defterler hazırlamaya yeter.
| Yazılan | Görünen |
|---|---|
# Başlık, ## Alt başlık |
büyük ve daha küçük başlık |
**kalın**, *eğik* |
kalın, eğik |
- madde |
madde işaretli liste |
`print` |
satır içinde kod: print |
$x^2 + 1$ |
formül: \(x^2 + 1\) |
Bir metin hücresinde, çalıştırılmayacak ama okura gösterilmek istenen birkaç satırlık bir kod parçası yazmak için kod, üçlü ters tırnak (```) satırları arasına alınır:
```
for eleman in veri_yapisi:
eleman üzerinde yapılacak işlemler
```
Bu satırlar metin hücresinde eşit aralıklı bir yazı tipiyle, kutu içinde görünür ama çalıştırılmaz. Böyle bir gösterim, bir yapının genel kalıbını anlatmak için kullanışlıdır.
1.5 İlk Program
Artık ilk programımızı yazabiliriz; geleneğe uyarak ekrana bir selam yazdıracağız.
print("Merhaba, Dünya!")Merhaba, Dünya!
print ekrana bir şey yazdıran hazır bir fonksiyondur; yazılacak şey ondan sonra gelen parantezin içine konur. Tırnak içindeki "Merhaba, Dünya!" bir metindir: Python onu olduğu gibi ekrana yazar. Bir programda birden çok satır varsa satırlar yukarıdan aşağıya sırayla çalışır.
print("Açık Matematik")
print("Bilgisayar Programlama")
print(2 + 3)
print("2 + 3")Açık Matematik
Bilgisayar Programlama
5
2 + 3
Son iki satırın farkına dikkat edin: 2 + 3 tırnaksız yazıldığında Python toplamı hesaplar ve 5 yazar; tırnak içinde yazıldığında ise bunu bir metin olarak görür ve olduğu gibi yazar.
Tanım 1.6 (Yorum Satırı) Bir satırda # işaretinden satır sonuna kadar olan kısma yorum (comment) denir. Python yorumları okumaz ve çalıştırmaz.
Yani yorumlar bilgisayar için değil, kodu okuyan insan için yazılır: kodun ne yaptığını açıklamak, bir hesabın sonucunu not etmek ya da bir satırı geçici olarak devre dışı bırakmak için kullanılır.
# Bu program bir dairenin alanını yaklaşık olarak hesaplar.
r = 2 # yarıçap
alan = 3.14 * r * r # pi yerine 3.14 aldık
print(alan)
# print("Bu satır çalışmaz, çünkü başında # var.")12.56
Programda r ve alan adlı iki değişken kullandık: = işareti sağdaki değeri soldaki ada bağlar. Değişkenleri bir sonraki bölümde ayrıntılı olarak göreceğiz. Python’da ondalık ayırıcı virgül değil nokta olduğundan \(3{,}14\) sayısı 3.14 diye yazılır.
Birkaç satırı aynı anda yorum hâline getirmek için satırlar seçilip bir kısayola basılır. Colab’da Ctrl + / seçili satırların başına # koyar, ikinci basış kaldırır. VS Code’da da Ctrl + / çalışır; ayrıca Ctrl + K ardından Ctrl + C yorum ekler, Ctrl + K ardından Ctrl + U yorumu kaldırır.
Hata Mesajlarını Okumak
Kod yazarken hata yapmak işin doğal bir parçasıdır; önemli olan hata mesajını okuyup nedenini bulabilmektir.
print("Merhaba"SyntaxError: '(' was never closed
Python bu kodu çalıştırmaya hiç başlamadan durdu, çünkü açılan parantez kapanmamış. SyntaxError (yazım hatası), kodun dilin yazım kurallarına uymadığını söyler. Mesajın geri kalanı hatanın nedenini İngilizce olarak açıklar: “( hiç kapatılmadı”. Colab ve IDLE, hatanın bulunduğu satırı da gösterir ve hatalı yerin altına ^ işareti koyar. Bu notlarda bir kod hata verdiğinde, hata mesajının yalnız son satırı gösterilecek; hatanın türünü ve nedenini bu satır söyler.
1.6 Bu Notlardaki Kodları Okumak
Notlarda kod, bir kutu içinde ve renklendirilmiş olarak verilir; hemen altında Çıktı: satırından sonra, kod çalıştırıldığında ekrana yazılan her şey aynen gösterilir. Kodlar kopyalanıp bir Colab hücresine yapıştırıldığında aynı çıktıyı verir.
İleride kullanıcıdan klavyeyle değer alan programlar yazacağız. Böyle programların çıktısında, kullanıcının yazdığı değer de sorunun hemen yanında görünür; Colab’da ve terminalde ekran tam olarak böyle görünür:
Adınızı girin: Zeynep
Merhaba, Zeynep
Burada Adınızı girin: yazısını program yazdı; Zeynep ise kullanıcının klavyeden girdiği değerdir.
1.7 Alıştırmalar
Aşağıdaki alıştırmaları bir Colab defterinde deneyerek çözün.
Alıştırma 1.1 (Üç Satırlık Tanıtım) Ekrana alt alta adınızı, bölümünüzü ve bu dersin adını yazdıran bir program yazınız.
Çözüm
Her satır için ayrı bir print kullanırız; her print yazdığı metnin sonunda yeni satıra geçer. Adı ve bölümü örnek olarak Zeynep ve Matematik aldık:
print("Zeynep")
print("Matematik")
print("Bilgisayar Programlama")Zeynep
Matematik
Bilgisayar Programlama
Metinler tırnak içinde yazılmalıdır; tırnak unutulursa Python Zeynep’i bir değişken adı sanar ve NameError hatası verir. \(\blacksquare\)
Alıştırma 1.2 (Tırnaklı ve Tırnaksız Yazım) Aşağıdaki programın çıktısını çalıştırmadan bulunuz.
print("10 - 4")
print(10 - 4)
print("10" + "4")Çözüm
Birinci satırda 10 - 4 tırnak içindedir; Python bunu bir metin olarak görür ve olduğu gibi yazar. İkinci satırda tırnak yoktur; Python çıkarmayı yapar ve 6 yazar. Üçüncü satırda iki metin + ile birleştirilir: "10" ile "4" yan yana eklenir ve 104 yazılır. Metinlerde + toplama değil birleştirme anlamına gelir; bunu ilerideki bölümlerde ayrıntılı göreceğiz.
print("10 - 4")
print(10 - 4)
print("10" + "4")10 - 4
6
104
\(\blacksquare\)
Alıştırma 1.3 (Bir Yazım Hatasını Düzeltmek) Aşağıdaki program çalışmıyor. Hata mesajı nedir, hata nasıl düzeltilir?
print("Programlamaya hoş geldiniz!)Çözüm
Metin çift tırnakla açılmış ama kapatılmamış. Python satırın sonuna kadar kapanan tırnağı arar, bulamaz ve yazım hatası verir:
print("Programlamaya hoş geldiniz!)SyntaxError: unterminated string literal (detected at line 1)
Mesaj, “1. satırda bitirilmemiş bir metin” bulunduğunu söyler. Ünlem işaretinden sonra kapanan tırnağı ekleyince program çalışır:
print("Programlamaya hoş geldiniz!")Programlamaya hoş geldiniz!
\(\blacksquare\)
Alıştırma 1.4 (Yorumla Devre Dışı Bırakmak) Aşağıdaki programın çıktısını bulunuz. Ardından programı, yalnız B ve D harflerini yazacak biçimde, hiçbir satırı silmeden değiştiriniz.
print("A")
print("B")
# print("C")
print("D")Çözüm
Üçüncü satır # ile başladığından yorumdur ve çalışmaz. Program A, B ve D harflerini alt alta yazar:
print("A")
print("B")
# print("C")
print("D")A
B
D
A’nın yazılmaması için birinci satırın başına da # koymak yeterlidir; satır silinmemiş olur ve gerektiğinde # kaldırılarak geri getirilebilir:
# print("A")
print("B")
# print("C")
print("D")B
D
\(\blacksquare\)
Alıştırma 1.5 (Bir Metin Hücresi Yazmak) Bir metin hücresinde en üstte “Dairenin Alanı” başlığı, altında kalın yazılmış “Formül:” sözcüğü ve yanında \(A = \pi r^2\) formülü görünecek biçimde Markdown kodunu yazınız.
Çözüm
Başlık # ile, kalın yazı ** işaretleri arasında, formül de iki dolar işareti arasında yazılır. Formülün içinde \pi yunan harfi \(\pi\)’yi, r^2 de üssü verir:
# Dairenin Alanı
**Formül:** $A = \pi r^2$
Hücre çalıştırıldığında büyük bir “Dairenin Alanı” başlığı ve altında “Formül: \(A = \pi r^2\)” satırı görünür. Başlık ile sonraki satır arasındaki boş satır, ikisinin ayrı paragraflar olarak görünmesini sağlar. \(\blacksquare\)
Çalışma ortamımız hazır ve ilk programlarımızı çalıştırdık. Bir sonraki bölüm Değişkenler, Veri Tipleri ve Atama, programlarda verileri saklamak için kullanılan değişkenleri ve Python’daki temel veri tiplerini ele alıyor.