İçeriğe geç

Kitaplar / Yöntem Dil Başvurusu / 4. İfadeler

4. İfadeler

İşleçler öncelik sırasına göre, en az bağlayandan en çok bağlayana doğru:

Düzey İşleçler Birleşme
1 boru işleci (bkz. “Boru”) soldan
2 veya, yada soldan
3 ve soldan
4 değil tekli
5 =, <>, <, >, <=, >=, içinde zincirlenmez
6 +, - soldan
7 *, /, böl, mod, @ soldan
8 tekli -, + tekli
9 ** sağdan
10 çağrı f(x), dizin L[i], üye n.ad soldan
Çıktı
ifade:   veya ('|>' veya)*
veya:    ve (('veya' | 'yada') ve)*
ve:      degil ('ve' degil)*
degil:   'değil' degil | iliski
iliski:  toplama [('=' | '<>' | '<' | '>' | '<=' | '>=' | 'içinde') toplama]
toplama: carpma (('+' | '-') carpma)*
carpma:  tekli (('*' | '/' | '@' | 'böl' | 'mod') tekli)*
tekli:   ('-' | '+') tekli | '@' sonek | sonek ['**' tekli]
sonek:   birincil ('(' [','.arguman+] ')' | '[' ','.ifade+ ']' | '.' AD)*

Aritmetik

İşleç Anlamı Örnek Sonuç
+, -, * toplama, çıkarma, çarpma 2 + 3 * 4 14
/ bölme; sonuç her zaman ondalıktır 7 / 2 3.5
böl tamsayı bölmesi; sıfıra doğru keser -7 böl 2 -3
mod kalan; işareti bölünenin işaretidir -7 mod 3 -1
** üs; sağdan birleşir 2 ** 3 ** 2 512
@ matris çarpımı (tensörlerde) A @ B

Tekli eksi üsten sonra uygulanır: -2 ** 2 değeri -4’tür. İki tamsayının +, -, *, böl, mod ve ** sonucu tamsayıdır; işlenenlerden biri ondalıksa sonuç ondalıktır. Sıfıra bölmek “Sıfıra bölme” hatası verir.

Karşılaştırma

=, <>, <, >, <=, >= mantıksal sonuç verir. Sayılar değerleriyle karşılaştırılır (1 = 1.0 doğrudur), metinler sözlük sırasıyla. Listeler ve sözlükler yalnızca eşitlik bakımından (=, <>) karşılaştırılabilir; eşitlik eleman eleman sınanır. İlişki işleçleri zincirlenmez: 1 < x < 5 sözdizimi hatasıdır; 1 < x ve x < 5 yazılır.

x içinde K, x değeri K listesinin elemanı, K sözlüğünün anahtarı ya da K metninin bir parçası olduğunda doğrudur.

Mantık

ve, veya kısa devrelidir: sonuç sol işlenenle belli oluyorsa sağ işlenen hesaplanmaz. yada iki işlenenden yalnızca biri doğru olduğunda doğrudur. değil değeri tersine çevirir.

Mantık işleçleri karşılaştırmalardan sonra bağlar; bu yüzden a > 1 ve b < 2 ayraç gerektirmez. İşlenenler tamsayıysa aynı işleçler bit işlemi yapar: 6 ve 3 değeri 2, 6 veya 3 değeri 7, 6 yada 3 değeri 5’tir.

Boru

x |> f ifadesi f(x) ile, x |> f(y) ifadesi f(x, y) ile aynıdır: soldaki değer sağdaki çağrının ilk argümanı olur. Zincirleme soldan sağa okunur:

Yöntem
yaz([3, 1, 2] |> Sırala |> Ters, 1)
Çıktı
[3, 2, 1]

Birincil ifadeler

Çıktı
birincil: SAYI | METIN | AD | 'doğru' | 'yanlış' | 'boş' | 'kendi'
        | 'eğer' ifade 'ise' ifade 'değilse' ifade
        | 'miras' [AD]
        | adsiz_altprogram
        | '(' ifade ')'
        | koleksiyon

Koşullu ifade. eğer k ise a değilse b, k doğruysa a’nın, değilse b’nin değerini verir; yalnızca seçilen dal hesaplanır.

Koleksiyon sabitleri.

Yazım Değer
[] boş liste
[1, 2, 3] liste
[1..5] [1, 2, 3, 4, 5]
[:] boş sözlük
['a': 1, 'b': 2] sözlük

Son elemandan sonra virgül bırakılabilir.

Çağrı. f(a, b) alt programı çağırır. Parametresi olmayan bir alt program ayraçsız da çağrılabilir: Selamla ile Selamla() aynıdır. Deyim olarak tek başına yazılan bir alt program adı ise parametreleri olsa da çağrıdır; eksik argümanlar varsayılan değerlerini alır. Bir alt programı çağırmadan değer olarak almak için başına @ yazılır: @Selamla.

Dizin. L[i] liste, sözlük, metin ve tensörlere uygulanır. Çok boyutlu erişim M[i, j] ya da M[i][j] biçiminde yazılır.

Üye erişimi. n.ad bir nesnenin alanına, metoduna ya da bir birimin dışa aktardığı ada erişir.

Biçimli argüman. Bir çağrının argümanı değer:genişlik ya da değer:genişlik:basamak biçiminde yazılabilir; değer metne çevrilip sağa yaslanır. yaz(3.14159:8:2, 1) çıktısı 3.14 olur.

Adsız alt programlar

Çıktı
adsiz_altprogram:
    ('fonksiyon' | 'prosedür') [parametreler] [':' tip] '=>' ifade
  | ('fonksiyon' | 'prosedür') [parametreler] [':' tip] bildirim* blok
Yöntem
kare := fonksiyon(x) => x * x
artır := fonksiyon(x: tamsayı): tamsayı
başla
  dön x + 1
bitir

Adsız alt programlar tanımlandıkları kapsamdaki değişkenleri yakalar ve onlar üzerinde çalışmayı, tanımlandıkları alt program döndükten sonra da sürdürür.