- Program, programlama dili, makine dili, düşük ve yüksek seviyeli dilleri ayırt etmek; yorumlayıcı ile derleyiciyi karşılaştırmak.
- Değişken oluşturmak,
int,float,str,booltürlerini tanımak ve verileriinput(),int(input()),input().split()ile almak. + - * / // % **işlemlerini doğru sırayla hesaplamak;abs(),int(),str()fonksiyonlarını kullanmak.- Kısa bir programın ne yazdırdığını adım adım izleyerek bulmak (sınavın çoktan seçmeli ve kodlanmış soruları).
Bilgisayar yalnızca 0 ve 1’lerden oluşan komutları anlar; sen ise print(7 * 6) yazarsın ve hemen 42 cevabını alırsın. Bu iki dil arasında kim çevirmenlik yapıyor? Bu derste bu sorunun cevabını bulacak ve Python’ın ilk temel araçlarını öğreneceksin: değişkenler, klavyeden giriş, ekrana çıktı ve aritmetik işlemler. Azerbaycan’ın üniversite giriş sınavında (DİM, I. grup) bilişim bölümünün 30 sorusundan 9’u Python programıdır ve hepsi bu dersin yapı taşlarından kurulur.
Program, programlama dilleri ve çeviriciler
Bilgisayarın yerine getirmesi gereken komutların (talimatların) bir programlama dilinde yazılmış dizisi. Program, bilgisayar için yazılmış bir algoritmadır.
Programlama, program oluşturma sürecidir: problemin tanımlanması, algoritmanın kurulması, bir programlama dilinde yazılması ve test edilmesi. Programlama dili, program yazmak için katı kuralları (sözdizimi) olan biçimsel bir dildir: Python, C++, Java, Pascal, BASIC.
Diller makineye yakınlıklarına göre seviyelere ayrılır. Makine dili, işlemcinin doğrudan çalıştırdığı tek dildir: komutlar ikili kodlarla yazılır ve işlemcinin türüne bağlıdır. Düşük seviyeli diller (örneğin assembly), makine komutlarını MOV, ADD gibi kısa harf kodlarıyla yazar; bunlar da belirli bir işlemciye bağlıdır. Yüksek seviyeli diller (Python, C++, Java, Pascal) insan diline ve matematiksel yazıma yakındır, işlemciye bağlı değildir ve tek bir komutları birçok makine komutuna dönüşür.
Yüksek seviyeli bir dilde yazılmış program metnini (kaynak kodu) makine diline dönüştüren program. İki türü vardır: derleyici ve yorumlayıcı.
| Özellik | Derleyici | Yorumlayıcı |
|---|---|---|
| Nasıl çevirir | tüm programı bir kerede, çalıştırmadan önce | komutları tek tek: çevirir ve hemen çalıştırır |
| Ürettiği | çevirici olmadan çalışabilen bir dosya (örneğin .exe) | ayrı dosya oluşmaz; her çalıştırmada yorumlayıcı gerekir |
| Hız | hazır program hızlı çalışır | genellikle daha yavaş çalışır |
| Hatalar | çalıştırmadan önce, tüm metin için bildirilir | hatalı komuta gelince durur; önceki komutlar çalışmış olur |
| Örnekler | C, C++, Pascal, Go | Python, JavaScript, PHP |
Python yorumlanan bir dildir. Program çalışırken 5. komutta hata oluşursa (örneğin sıfıra bölme), ilk dört komutun sonucu ekrana çoktan yazılmış olur. Aslında Python önce metnin tamamını ara bayt koda çevirir; bu yüzden yazım (sözdizimi) hatası olan bir program hiç başlamaz. Yine de okul dersinde ve sınavda Python yorumlanan dil olarak sınıflandırılır.
Sabitler, değişkenler ve atama
Sabit, program çalışırken değişmeyen değerdir: 45, 3.14, 'Baku'. Değişken, değeri program ilerledikçe değişebilen, adı olan bir bellek alanıdır. Python’da değişken, ona ilk kez değer atandığında oluşur.
Atama işleci = şöyle çalışır: önce sağdaki ifade hesaplanır, sonra sonuç soldaki değişkene yazılır ve eski değer kaybolur. Bu yüzden x = x + 1 bir denklem değil, «x’in değerini 1 artır» komutudur. Sınavın resmî çözümlerinde bu, «değişkene … değeri atanır» diye anlatılır. Python bir satırda birden çok atamaya da izin verir: a, b = 3, 8.
- ad bir harfle veya
_ile başlar, ardından harf, rakam ve_gelebilir:a1,sum_2,_kgeçerlidir;2a,my-sum,a bise geçersizdir; - büyük ve küçük harfler farklıdır:
aileAiki ayrı değişkendir; - anahtar sözcükler (
if,else,for,while,and,or,not,True) değişken adı olamaz.
| Tür | Ne saklar | Örnekler |
|---|---|---|
int | tam sayı | 45, -7, 0 |
float | ondalıklı (gerçek) sayı | 3.5, 2.0, -0.25 |
str | karakter dizisi: tırnak içindeki metin | 'Baku', "45", '' |
bool | mantıksal değer | True, False |
45 ile '45' farklıdır: ilki sayı, ikincisi metindir. Ondalıklı sayılarda Python her zaman nokta kullanır: 3.5.a = 7
b = 2.5
s = '7'
t = a > 5
print(type(a), type(b), type(s), type(t))
print(a * 2, b * 2, s * 2, t)▸ Beklenen çıktı
<class 'int'> <class 'float'> <class 'str'> <class 'bool'> 14 5.0 77 True
type() bir değerin türünü gösterir. Dikkat: s * 2 karakter dizisini tekrarlar (77), b * 2 ise float olarak kalır (5.0).Python’da bir değişkenin türü ona atanan değerle belirlenir ve program ilerledikçe değişebilir: x = 5 sonrasında x tam sayıdır, x = 'five' sonrasında ise karakter dizisidir. Bu yüzden her soruda kendine sor: değişkende şu anda sayı mı var, metin mi? Aynı + işareti sayıları toplar, karakter dizilerini ise yan yana ekler.
a = 7, b = 3 olsun. Ardından sırasıyla a = a + b, b = a - b, a = a - b komutları çalışır. print(a, b) ne yazdırır?
Çözümü gösterÇözümü gizle
a = a + b → a = 7 + 3 = 10, b = 3b = a - b → b = 10 − 3 = 7, a = 10a = a - b → a = 10 − 7 = 3, b = 7Çıktı: 3 7. Değişkenler üçüncü bir değişken olmadan değerlerini değiştirdi. Python’da aynı iş tek satırla yapılır:
a, b = b, a.Giriş ve çıkış: input() ve print()
print() fonksiyonu parantez içindeki değerleri ekrana yazar. Virgülle ayrılmış birkaç değer aralarında bir boşlukla aynı satıra yazılır, her yeni print() ise yeni satırdan başlar. sep parametresi ayırıcıyı, end ise satır sonunu değiştirir: print(1, 2, 3, sep='-') → 1-2-3; print('a', end='') ise sonraki çıktıyı aynı satırda tutar.
input(), kullanıcının klavyeden yazdığı satırı okur ve **her zaman karakter dizisi (str) olarak** döndürür: 5 yazsan bile '5' elde edilir. Hesap yapmak için karakter dizisini dönüştürmek gerekir: tam sayı için int(input()), ondalıklı sayı için float(input()). Sınav sorularındaki programlar tam olarak böyle başlar: n = int(input()). Tek satırda boşlukla yazılmış birkaç değeri input().split() okur: satırı boşluklardan bölüp karakter dizilerinden oluşan bir liste döndürür; her parçayı ayrıca int() ile çeviririz.
name = input()
age = int(input())
a, b = input().split()
a = int(a)
b = int(b)
print(name, age, a + b)
print(name, 'is', age, sep='_')| Giriş (klavye) | Çıkış (ekran) |
|---|---|
Leyla143 8 | Leyla 14 11Leyla_is_14 |
Soru metnini dikkatle oku: sayılar her biri ayrı satırda giriliyorsa int(input()) gerektiği kadar tekrarlanır (a = int(input()), b = int(input())); sayılar tek satırda, boşlukla yazılıyorsa input().split() kullanılır. Sınavın yazılı sorularında iki biçim de görülür: örneğin bir listenin elemanları aralarında birer boşluk olan tek bir satır hâlinde, eleman sayısı n ise ayrı bir satırda verilebilir.
name = 'Leyla'
age = int('14')
line = '3 8'
a, b = line.split()
a = int(a)
b = int(b)
print(name, age, a + b)
print(name, 'is', age, sep='_')▸ Beklenen çıktı
Leyla 14 11 Leyla_is_14
line.split() karakter dizisini ['3', '8'] listesine böler. Değerleri değiştirip yeniden çalıştır.Program çalışırken klavyeden tek satırda 12 5 girilir:a, b = input().split()print(a + b, int(a) + int(b), a * 2)
Ne yazdırılır?
Çözümü gösterÇözümü gizle
split() satırı ['12', '5'] listesine böler: a = '12', b = '5'; ikisi de karakter dizisidir.a + b karakter dizilerini birleştirir: 125.int(a) + int(b) = 12 + 5 = 17.a * 2 karakter dizisini iki kez tekrarlar: 1212.Cevap: 125 17 1212.
Aritmetik: //, % ve işlem sırası
| İşlem | Anlamı | Örnek | Sonuç |
|---|---|---|---|
+ - * | toplama, çıkarma, çarpma | 17 + 5, 17 - 5, 17 * 5 | 22, 12, 85 |
/ | bölme; sonuç her zaman float | 17 / 5, 8 / 2 | 3.4, 4.0 |
// | tam sayı bölmesi — bölüm | 17 // 5 | 3 |
% | bölümden kalan | 17 % 5 | 2 |
** | üs alma | 2 ** 5 | 32 |
- abölünen (tam sayı)
- bbölen, b > 0
- a // bbölüm
- a % bkalan
Kalanlı bölme: // ve % her zaman birlikte çalışır. Kontrol: bölümü bölenle çarpıp kalanı eklersen bölüneni bulmalısın.
Hesaplayın: 1) 47 // 6 ve 47 % 6; 2) 5 // 8 ve 5 % 8; 3) -17 // 5 ve -17 % 5.
Çözümü gösterÇözümü gizle
47 // 6 = 7, 47 % 6 = 47 − 42 = 5. Kontrol: 6 · 7 + 5 = 47.2) Bölünen bölenden küçüktür:
5 // 8 = 0, 5 % 8 = 5 (sayının kendisi kalır).3) Python’da
// her zaman aşağıya, küçük sayıya doğru yuvarlar: −17 : 5 = −3,4 → -17 // 5 = −4. Kalan: −17 − 5 · (−4) = 3, yani yine 0 ≤ 3 < 5.İşlem önceliği (soldan sağa azalır). Aynı düzeydeki * / // % işlemleri soldan sağa, ** ise sağdan sola yapılır: 2 ** 3 ** 2 = 2 ** 9 = 512. **, baştaki eksi işaretinden güçlüdür: -2 ** 2 = −4.
a = 7
b = 45
c = b // a % 4 * 3 + b % a ** 2
print(c)▸ Beklenen çıktı
51
a = int(input()) olur ve klavyeden 7 girilir.Klavyeden 7 girilirse yukarıdaki programın sonucu nedir?
A) 15 B) 51 C) 45 D) 6 E) 57
Çözümü gösterÇözümü gizle
+ en son yapılır.Sol parça soldan sağa:
b // a = 45 // 7 = 6 → 6 % 4 = 2 → 2 * 3 = 6.Sağ parçada
** daha güçlüdür: a ** 2 = 49, sonra 45 % 49 = 45 (45 < 49, sayının kendisi kalır).c = 6 + 45 = 51, cevap B.
Tuzak:
b % a ** 2 ifadesini (b % a)² gibi hesaplayan 3² = 9 bulur ve yanlışlıkla 15’i (A) seçer.Bir sayının basamakları ve tür dönüşümleri
- nüç basamaklı doğal sayı
- ayüzler basamağı
- bonlar basamağı
- cbirler (son) basamağı
n % 10 her zaman son basamağı, n // 10 ise son basamağı atılmış sayıyı verir. Her uzunluktaki sayının basamakları döngülerle «Sayılar üzerinde işlemler: rakamlar, bölenler ve asal sayılar» dersinde işlenir.
n = 739
a = n // 100
b = n // 10 % 10
c = n % 10
print(c * 100 + b * 10 + a, a + b + c, abs(a - c))▸ Beklenen çıktı
937 19 2
n = int(input()) olur.Klavyeden 739 girilirse yukarıdaki program ne yazdırır?
Çözümü gösterÇözümü gizle
Birinci değer: 9 · 100 + 3 · 10 + 7 = 937, yani sayının tersi.
İkinci: 7 + 3 + 9 = 19, basamaklar toplamı.
Üçüncü:
abs(7 - 9) = |−2| = 2.print üç değeri boşlukla ayırır: 937 19 2.Tür dönüşümleri. str() sayıyı karakter dizisine, int() ise karakter dizisini veya ondalıklı sayıyı tam sayıya çevirir: str(45) + '1' → 451, int('45') + 1 → 46, int(7.9) → 7 (kesir kısmı yuvarlanmaz, atılır). len(str(n)) sayının basamak sayısını verir: len(str(2026)) → 4. abs(x) mutlak değeri döndürür: abs(-12) → 12.
- 1.17 // 5 →
- 2.17 % 5 →
- 3.2 ** 3 ** 2 →
- 4.-7 // 2 →
- 5.int('12') + 3 →
- 6.len(str(40961)) →
Sınav soruları: program ne yazdırır?
Sınavda program genellikle 5–15 satırdır ve soru hep aynıdır: «programın sonucunu belirleyin». Çoktan seçmeli soruda 5 seçenek olur, kodlanmış soruda cevabı kendin yazarsın. İki durumda da kazandıran yöntem aynıdır: programı bilgisayar gibi satır satır «çalıştırmak».
- 1Değişken tablosu aç
Her değişken için bir sütun çiz ve başlangıç değerlerini yaz.
input()varsa verilen girişi doğru türle yaz:int(input())→ sayı,input()→ karakter dizisi. - 2Satır satır ilerle
Her atamadan sonra yalnızca o değişkenin sütununu güncelle, eski değerin üstünü çiz. Sağ taraf her zaman eski değerlerle hesaplanır.
- 3Önceliğe uy
Uzun bir ifadede önce
**, sonra soldan sağa* / // %, en son+ -yapılır. Ara sonuçları yaz. - 4Türlere dikkat et
/her zamanfloatverir (8 / 2→4.0); karakter dizilerinde+birleştirir,*tekrarlar. - 5Çıktı biçimini denetle
print(a, b)değerleri bir boşlukla ayırır, herprintyeni satıra yazar. Seçenekler çoğu zaman tam da boşluk ve satır farkıyla ayrılır.
Bir film t saniye sürüyor. Bunun kaç tam saat, dakika ve saniye olduğunu tek satırda, boşlukla ayırarak yazdır. Programı t = 7384 ile dene (sınav sürümünde t = int(input()) olurdu).
t = 7384
# hours, minutes, seconds▸ Beklenen çıktı
2 3 4
Bir satırda boşlukla ayrılmış iki doğal sayı var: line = '38 7'. Onları split() ile ayır, int() ile çevir ve tek satırda bölümü, kalanı ve kontrol değerini (bölen · bölüm + kalan) yazdır.
line = '38 7'
# split, convert, print quotient, remainder, check▸ Beklenen çıktı
5 3 38
Önemli noktalar
- Çevirici, yüksek seviyeli programı makine diline çevirir: derleyici tüm programı önceden çalıştırılabilir dosyaya, yorumlayıcı ise komutları tek tek çevirip hemen çalıştırır. Python yorumlanan bir dildir.
=atamadır: önce sağ taraf hesaplanır, sonra sonuç soldaki değişkene yazılır.input()her zaman karakter dizisi döndürür: sayı içinint(input()), tek satırdaki birkaç değer içininput().split()kullanılır.//bölümü,%kalanı verir: a = b · (a // b) + a % b;n % 10son basamak,n // 10son basamaksız sayıdır.- Öncelik: parantez →
**(sağdan sola) →* / // %(soldan sağa) →+ -;/her zamanfloatverir.
Kendini test et
12 soru. Her doğru cevap XP kazandırır.