Dersler ve Temeller; web örnekleri PORT ortam değişkenini okur
- dersler/: 29 kısa ders (açıklama, çalıştırılabilir örnek, alıştırma). Her örneğin ve alıştırma çözümünün çıktısı Online IDE'nin hazırlık adımında gerçekten koşulup dosyadakiyle karşılaştırılır; biçim dersler/BICIM.md. - temeller/: tek konulu 12 başlangıç programı. - web/anket, web/kisalt, web/pano: port PORT ortam değişkeninden okunur (Online IDE önizlemesi 8080 verir), yoksa eski sabit port. - README: öğrenme bölümü, Online IDE bağlantısı.
This commit is contained in:
@@ -0,0 +1,118 @@
|
||||
---
|
||||
baslik: Sözdizimi ve girinti
|
||||
bolum: Giriş
|
||||
ozet: Satırlar, iki nokta, girintili bloklar ve büyük/küçük harf
|
||||
---
|
||||
|
||||
Her dilin bir yazım kuralı vardır. KabaLang'de kurallar az ve sade: her komut kendi satırında durur, bloklar süslü parantezle değil **girintiyle** belirtilir.
|
||||
|
||||
## Her satır bir komut
|
||||
|
||||
Satır sonuna noktalı virgül koymazsın. Satır bitince komut da biter.
|
||||
|
||||
```kbl
|
||||
yazdir("Ankara")
|
||||
yazdir("İzmir")
|
||||
```
|
||||
```cikti
|
||||
Ankara
|
||||
İzmir
|
||||
```
|
||||
|
||||
## Bloklar: iki nokta ve girinti
|
||||
|
||||
Bazı satırlar bir **blok** açar: `eger`, `dongu`, `fonksiyon` gibi. Bu satırlar `:` ile biter. Altındaki satırlar 4 boşluk içeriden başlar; o satırlar bloğa aittir.
|
||||
|
||||
```kbl
|
||||
sicaklik = 32
|
||||
eger sicaklik > 30:
|
||||
yazdir("Hava çok sıcak.")
|
||||
yazdir("Bol su iç.")
|
||||
yazdir("Bu satır her zaman çalışır.")
|
||||
```
|
||||
```cikti
|
||||
Hava çok sıcak.
|
||||
Bol su iç.
|
||||
Bu satır her zaman çalışır.
|
||||
```
|
||||
|
||||
Girintisi biten satır, bloğun dışına çıkmış olur. Yukarıdaki son satır `eger`'e bağlı değildir.
|
||||
|
||||
Sıcaklığı 20 yapıp **Dene** ile çalıştır: ilk iki satır kaybolur, son satır yine görünür.
|
||||
|
||||
## İç içe bloklar
|
||||
|
||||
Bir bloğun içinde başka bir blok açabilirsin. Her düzey 4 boşluk daha içeride başlar.
|
||||
|
||||
```kbl
|
||||
sicaklik = 32
|
||||
yagmur = yanlis
|
||||
eger sicaklik > 25:
|
||||
yazdir("Hava sıcak.")
|
||||
eger degil yagmur:
|
||||
yazdir("Pikniğe gidebilirsin.")
|
||||
```
|
||||
```cikti
|
||||
Hava sıcak.
|
||||
Pikniğe gidebilirsin.
|
||||
```
|
||||
|
||||
> **Dikkat:** `:`'dan sonraki satırı girintisiz yazmak hatadır. Aşağıdaki kod derlenmez; derleyici "blok gövdesi boş — ':' sonrasındaki satırlar girintili olmalı" der.
|
||||
|
||||
```kbl goster
|
||||
eger dogru:
|
||||
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.
|
||||
|
||||
## Büyük ve küçük harf
|
||||
|
||||
KabaLang büyük/küçük harfi ayırır. `sehir`, `Sehir` ve `SEHIR` üç ayrı addır. Anahtar sözcükler (`eger`, `dongu`, `dogru`) ve hazır fonksiyonlar (`yazdir`) hep küçük harfle yazılır.
|
||||
|
||||
```kbl
|
||||
sehir = "Bursa"
|
||||
Sehir = "Konya"
|
||||
yazdir(sehir)
|
||||
yazdir(Sehir)
|
||||
```
|
||||
```cikti
|
||||
Bursa
|
||||
Konya
|
||||
```
|
||||
|
||||
> **İpucu:** Kodda Türkçe karakterli ad kullanmak yerine ASCII harfler yeğle: `sehir`, `ogrenci`, `dogru`. Anahtar sözcükler de böyle yazılır (`degilse`, `iken`). Metinlerin içinde ise ç, ğ, ı, ö, ş, ü'yü serbestçe kullan.
|
||||
|
||||
## Uzun satırı bölmek
|
||||
|
||||
Parantez açıkken satırı bölebilirsin; parantez kapanana kadar tek satır sayılır.
|
||||
|
||||
```kbl
|
||||
toplam = (120 +
|
||||
75 +
|
||||
300)
|
||||
yazdir(toplam)
|
||||
```
|
||||
```cikti
|
||||
495
|
||||
```
|
||||
|
||||
## Alıştırma
|
||||
|
||||
```alistirma
|
||||
`puan` 50'den büyükse önce `Geçtin.` sonra `Tebrikler!` yazdır. Bu iki satır bloğun içinde olsun. En sonda, bloğun dışında `Sınav bitti.` yazdır.
|
||||
%%%
|
||||
puan = 72
|
||||
eger puan > 50:
|
||||
# buraya yaz
|
||||
%%%
|
||||
puan = 72
|
||||
eger puan > 50:
|
||||
yazdir("Geçtin.")
|
||||
yazdir("Tebrikler!")
|
||||
yazdir("Sınav bitti.")
|
||||
%%%
|
||||
Geçtin.
|
||||
Tebrikler!
|
||||
Sınav bitti.
|
||||
```
|
||||
Reference in New Issue
Block a user