Compare commits
5
Commits
494781e84f
..
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e3aa5fc3b5 | ||
|
|
5bca5489e4 | ||
|
|
121b8ac2bd | ||
|
|
33fcf942f8 | ||
|
|
c2967d8565 |
@@ -77,7 +77,7 @@ Birinci bölüm
|
|||||||
İkinci bölüm
|
İkinci bölüm
|
||||||
```
|
```
|
||||||
|
|
||||||
> **Dikkat:** `yazdir` küçük harfle yazılır. `Yazdir("x")` yazarsan derleyici "'Yazdir' adında bir değişken veya fonksiyon tanımlanmamış" der. KabaLang büyük ve küçük harfi ayırır.
|
> **Dikkat:** `yazdir` küçük harfle yazılır. `Yazdir("x")` yazarsan derleyici "'Yazdir' adında bir işlev tanımlı değil" der ve altına "'yazdir' mi demek istediniz?" önerisini ekler. KabaLang büyük ve küçük harfi ayırır.
|
||||||
|
|
||||||
> **İpucu:** Örnekleri yalnız okuma; **Dene**'ye basıp metni değiştir, kendi adını yazdır. En hızlı böyle öğrenirsin.
|
> **İpucu:** Örnekleri yalnız okuma; **Dene**'ye basıp metni değiştir, kendi adını yazdır. En hızlı böyle öğrenirsin.
|
||||||
|
|
||||||
|
|||||||
@@ -64,7 +64,7 @@ eger dogru:
|
|||||||
yazdir("girinti unutuldu")
|
yazdir("girinti unutuldu")
|
||||||
```
|
```
|
||||||
|
|
||||||
Sebepsiz girinti de hatadır: blok açmayan bir satırın altını içeriden başlatamazsın. Bir de `:`'yı unutursan derleyici "':' bekleniyordu" der.
|
Sebepsiz girinti de hatadır: blok açmayan bir satırın altını içeriden başlatamazsın. Bir de `:`'yı unutursan derleyici "blok açan satırın sonunda ':' eksik" der ve `:`'nın gideceği yeri gösterir.
|
||||||
|
|
||||||
## Büyük ve küçük harf
|
## Büyük ve küçük harf
|
||||||
|
|
||||||
|
|||||||
@@ -74,7 +74,7 @@ yazdir("Sonuç: " + metin(gecti))
|
|||||||
Sonuç: doğru
|
Sonuç: doğru
|
||||||
```
|
```
|
||||||
|
|
||||||
> **Dikkat:** `sayi()` yalnız tam sayı yazılmış bir metni doğru çevirir. `sayi("3.9")` ya da `sayi("on iki")` hata vermez ama **0** döndürür; bu da fark edilmesi zor bir yanlışa yol açar. Ondalık bir metni önce `ondalik()` ile çevir. Kullanıcıdan gelen sayıyı güvenle okumanın yolunu *Kullanıcıdan girdi* dersinde öğreneceksin.
|
> **Dikkat:** `sayi()` metni tam sayıya çevirir: `sayi("3.9")` ondalık kısmı atar ve **3** verir. Sayı olmayan bir metin (`sayi("on iki")`) ise programı hata iletisiyle durdurur. Ondalık bir metni önce `ondalik()` ile çevir. Kullanıcıdan gelen sayıyı güvenle okumanın yolunu *Kullanıcıdan girdi* dersinde öğreneceksin.
|
||||||
|
|
||||||
```kbl
|
```kbl
|
||||||
yazdir(sayi(ondalik("3.9")))
|
yazdir(sayi(ondalik("3.9")))
|
||||||
|
|||||||
@@ -129,7 +129,7 @@ doğru
|
|||||||
yanlış
|
yanlış
|
||||||
```
|
```
|
||||||
|
|
||||||
> **Dikkat:** Yöntem adlarına dikkat: büyütme `buyut()`, küçültme `kucult()`, uzunluk `uzunluk()`'tür. `buyuk()`, `kucuk()` diye yöntem yoktur; derleyici "böyle bir metot bulunamadı" der.
|
> **Dikkat:** Yöntem adlarına dikkat: büyütme `buyut()`, küçültme `kucult()`, uzunluk `uzunluk()`'tür. `buyuk()`, `kucuk()` diye yöntem yoktur; derleyici "metinde 'buyuk' diye bir metot yok" der ve "'buyut' mi demek istediniz?" diye önerir.
|
||||||
|
|
||||||
## Yöntemleri zincirlemek
|
## Yöntemleri zincirlemek
|
||||||
|
|
||||||
|
|||||||
@@ -111,7 +111,64 @@ ciftleri_yaz(12)
|
|||||||
2 4 6 8 10 12
|
2 4 6 8 10 12
|
||||||
```
|
```
|
||||||
|
|
||||||
> **Dikkat:** Fonksiyonun içinde, programın başka bir yerinde kullandığın değişken adlarını kullanmamaya özen göster; her fonksiyonun içinde kendine özgü adlar seç. İyi bir alışkanlık da şudur: fonksiyonlarını dosyanın başına yaz, programın asıl işini altlarına koy.
|
## Dışarıdaki değişkenler: okumak serbest, değiştirmek bildirim ister
|
||||||
|
|
||||||
|
Fonksiyon, kendisinden önce dosyada tanımlanmış bir değişkeni **okuyabilir**:
|
||||||
|
|
||||||
|
```kbl
|
||||||
|
kdv_orani = 20
|
||||||
|
|
||||||
|
fonksiyon kdv(fiyat):
|
||||||
|
don fiyat * kdv_orani // 100
|
||||||
|
|
||||||
|
yazdir(kdv(450))
|
||||||
|
```
|
||||||
|
```cikti
|
||||||
|
90
|
||||||
|
```
|
||||||
|
|
||||||
|
Ama fonksiyonun içinde ona yeni bir değer **atamak** derleme hatasıdır:
|
||||||
|
|
||||||
|
```kbl goster
|
||||||
|
sayac = 0
|
||||||
|
|
||||||
|
fonksiyon arttir():
|
||||||
|
sayac = sayac + 1 # hata: 'sayac' fonksiyonun dışında tanımlı
|
||||||
|
```
|
||||||
|
|
||||||
|
Neden? Bir fonksiyonun dışarıdaki bir değeri sessizce değiştirmesi, programın bambaşka bir yerinde "bu değer neden değişti?" sorusunu doğurur. Gerçekten değiştirmek istiyorsan fonksiyonun **ilk satırına** `kuresel` yazarak bunu açıkça söylersin:
|
||||||
|
|
||||||
|
```kbl
|
||||||
|
sayac = 0
|
||||||
|
|
||||||
|
fonksiyon arttir():
|
||||||
|
kuresel sayac
|
||||||
|
sayac = sayac + 1
|
||||||
|
|
||||||
|
arttir()
|
||||||
|
arttir()
|
||||||
|
yazdir(sayac)
|
||||||
|
```
|
||||||
|
```cikti
|
||||||
|
2
|
||||||
|
```
|
||||||
|
|
||||||
|
Birden çok değişken için adları virgülle ayır: `kuresel toplam, adet`. Çoğu zaman daha temiz yol ise değeri parametre olarak alıp `don` ile geri vermektir; böylece neyin değiştiği çağrının olduğu satırda görünür:
|
||||||
|
|
||||||
|
```kbl
|
||||||
|
fonksiyon arttir(n):
|
||||||
|
don n + 1
|
||||||
|
|
||||||
|
sayac = 0
|
||||||
|
sayac = arttir(sayac)
|
||||||
|
sayac = arttir(sayac)
|
||||||
|
yazdir(sayac)
|
||||||
|
```
|
||||||
|
```cikti
|
||||||
|
2
|
||||||
|
```
|
||||||
|
|
||||||
|
> **İpucu:** Fonksiyonlarını dosyanın başına yaz, programın asıl işini altlarına koy; fonksiyonun içinde de kendine özgü adlar seç.
|
||||||
|
|
||||||
## Gerçek bir örnek
|
## Gerçek bir örnek
|
||||||
|
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ Hata: sıfıra bölünemez
|
|||||||
| `tamam(deger)` | başarı döndür |
|
| `tamam(deger)` | başarı döndür |
|
||||||
| `hata("mesaj")` | hata döndür |
|
| `hata("mesaj")` | hata döndür |
|
||||||
| `.tamam_mi()` / `.hatali_mi()` | hangisi olduğunu sor |
|
| `.tamam_mi()` / `.hatali_mi()` | hangisi olduğunu sor |
|
||||||
| `.deger()` | başarıdaki değeri al |
|
| `.deger()` | başarıdaki değeri al — sonuç hatalıysa program burada durur, önce `tamam_mi()` ile sor |
|
||||||
| `.hata().mesaj()` | hatanın açıklamasını al |
|
| `.hata().mesaj()` | hatanın açıklamasını al |
|
||||||
| `.deger_veya(yedek)` | hata varsa yedek değeri ver |
|
| `.deger_veya(yedek)` | hata varsa yedek değeri ver |
|
||||||
|
|
||||||
@@ -148,6 +148,8 @@ yağmur
|
|||||||
yok
|
yok
|
||||||
```
|
```
|
||||||
|
|
||||||
|
> **Dikkat:** `.deger()` yalnız değer varken okunur. `bos` bir `belki`'nin (ya da hatalı bir `sonuc`'un) içini `.deger()` ile okursan program o satırda durur ve `BOS_BELKI` (`HATALI_SONUC`) hatası verir — sessizce `0` ya da boş metin vermez. Emin değilsen önce `var_mi()` / `tamam_mi()` ile sor ya da `deger_veya(yedek)` kullan.
|
||||||
|
|
||||||
## Alıştırma
|
## Alıştırma
|
||||||
|
|
||||||
```alistirma
|
```alistirma
|
||||||
|
|||||||
@@ -66,7 +66,7 @@ Kaç kitap okudun? on iki
|
|||||||
Okunamadı: 'on iki' bir tam sayı değil
|
Okunamadı: 'on iki' bir tam sayı değil
|
||||||
```
|
```
|
||||||
|
|
||||||
> **Dikkat:** Kullanıcıdan gelen sayıyı `sayi(satir)` ile çevirme: `sayi("on iki")` hata vermez, sessizce 0 döndürür. Tam sayı için `konsol.sayi_oku` kullan; böylece yanlış girdiyi fark edersin.
|
> **Dikkat:** Kullanıcıdan gelen sayıyı `sayi(satir)` ile çevirme: `sayi("on iki")` programı hata iletisiyle durdurur. Tam sayı için `konsol.sayi_oku` kullan; böylece yanlış girdiyi programın durmadan yakalarsın.
|
||||||
|
|
||||||
## Ondalık sayı okumak
|
## Ondalık sayı okumak
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,82 @@
|
|||||||
|
---
|
||||||
|
baslik: Bitirme sınavı: kod yazma
|
||||||
|
bolum: Bitirme sınavı
|
||||||
|
ozet: Üç küçük görevle öğrendiklerini göster; ardından akademide kod okuma bölümü gelir
|
||||||
|
---
|
||||||
|
Kursun sonuna geldin. Bitirme sınavının iki bölümü var:
|
||||||
|
|
||||||
|
1. **Kod yazma (bu sayfa):** üç görev. Her birini IDE'de çöz; çıktın beklenenle aynı olunca görev tamamlanır. Çözümün sunucuda yeniden çalıştırılıp doğrulanır.
|
||||||
|
2. **Kod okuma (akademide):** "bu kod ne yazdırır?" türünden yedi soru.
|
||||||
|
|
||||||
|
İkisini de geçince akademi sertifikanı kendiliğinden üretir; belgede **Temel KabaLang** yetkinliği yazar.
|
||||||
|
|
||||||
|
> **İpucu:** Takılırsan ilgili derse dön: döngüler için "dongu ... icinde", fonksiyonlar için "Parametreler ve dönüş değeri", listeler için "Liste işlemleri". Örnek çözümü açmadan önce kendin denemeni öneririz.
|
||||||
|
|
||||||
|
## Görev 1: döngü ve koşul
|
||||||
|
|
||||||
|
```alistirma
|
||||||
|
1'den 20'ye kadar (20 dahil) olan sayılardan **3'e tam bölünenlerin toplamını** hesaplayıp yazdır.
|
||||||
|
%%%
|
||||||
|
toplam = 0
|
||||||
|
# buraya yaz
|
||||||
|
yazdir(toplam)
|
||||||
|
%%%
|
||||||
|
toplam = 0
|
||||||
|
dongu i icinde 1..20:
|
||||||
|
eger i % 3 == 0:
|
||||||
|
toplam += i
|
||||||
|
yazdir(toplam)
|
||||||
|
%%%
|
||||||
|
63
|
||||||
|
```
|
||||||
|
|
||||||
|
## Görev 2: fonksiyon
|
||||||
|
|
||||||
|
```alistirma
|
||||||
|
`harf_notu` fonksiyonunu yaz: puan 85 ve üstüyse `"AA"`, 70 ve üstüyse `"BB"`, değilse `"FF"` döndürsün. Sonra listedeki her puanı `puan: not` biçiminde yazdır.
|
||||||
|
%%%
|
||||||
|
fonksiyon harf_notu(puan: sayi) -> metin:
|
||||||
|
# buraya yaz
|
||||||
|
don "FF"
|
||||||
|
|
||||||
|
puanlar = [95, 72, 40]
|
||||||
|
dongu p icinde puanlar:
|
||||||
|
yazdir(f"{p}: {harf_notu(p)}")
|
||||||
|
%%%
|
||||||
|
fonksiyon harf_notu(puan: sayi) -> metin:
|
||||||
|
eger puan >= 85:
|
||||||
|
don "AA"
|
||||||
|
degilse eger puan >= 70:
|
||||||
|
don "BB"
|
||||||
|
don "FF"
|
||||||
|
|
||||||
|
puanlar = [95, 72, 40]
|
||||||
|
dongu p icinde puanlar:
|
||||||
|
yazdir(f"{p}: {harf_notu(p)}")
|
||||||
|
%%%
|
||||||
|
95: AA
|
||||||
|
72: BB
|
||||||
|
40: FF
|
||||||
|
```
|
||||||
|
|
||||||
|
## Görev 3: liste ve metin
|
||||||
|
|
||||||
|
```alistirma
|
||||||
|
Listedeki **en uzun kelimeyi** bul ve `kelime (N harf)` biçiminde yazdır.
|
||||||
|
%%%
|
||||||
|
kelimeler = ["elma", "karpuz", "kivi", "muz"]
|
||||||
|
en_uzun = ""
|
||||||
|
# buraya yaz
|
||||||
|
yazdir(f"{en_uzun} ({en_uzun.uzunluk()} harf)")
|
||||||
|
%%%
|
||||||
|
kelimeler = ["elma", "karpuz", "kivi", "muz"]
|
||||||
|
en_uzun = ""
|
||||||
|
dongu k icinde kelimeler:
|
||||||
|
eger k.uzunluk() > en_uzun.uzunluk():
|
||||||
|
en_uzun = k
|
||||||
|
yazdir(f"{en_uzun} ({en_uzun.uzunluk()} harf)")
|
||||||
|
%%%
|
||||||
|
karpuz (6 harf)
|
||||||
|
```
|
||||||
|
|
||||||
|
Üç görev de tamamsa akademideki **Bitirme sınavı: kod okuma** bölümüne geç.
|
||||||
Reference in New Issue
Block a user