İçeriğe geç

Kitaplar / Yöntem Dil Başvurusu / 3. Tipler ve değerler

3. Tipler ve değerler

Çıktı
tip:        tip_tabani tip_eki*
tip_tabani: 'dizi' | [AD '.'] AD
tip_eki:    'listesi' | 'dizisi' | 'sözlüğü'
Tip Değerler Not
tamsayı 42, -7, 10 ** 30 Masaüstünde büyüklük sınırı yoktur
ondalık (gerçek) 3.14 Çift duyarlıklı kayan nokta
metin 'abc' Karakterler 1’den numaralanır
karakter 'a' Tek karakterlik metin
mantıksal doğru, yanlış
liste [1, 2, 3] Elemanlar 0’dan numaralanır
sözlük ['a': 1], [:] Ekleme sırasını korur
tensör Tensör([[1, 2]]) YZ ve Meşale birimleri
herhangi her değer Tip denetimi yapılmaz
sınıf ve kayıt adları nesneler

boş, “değer yok” anlamına gelen tek değerdir.

Bileşik tip adları

Eleman tipi başa, kap sona yazılır; ekler soldan sağa birikir:

Yazım Anlamı
tamsayı listesi tamsayılardan oluşan liste
metin sözlüğü değerleri metin olan sözlük
ondalık listesi listesi ondalık listelerinin listesi
tamsayı dizisi tamsayı listesi ile aynıdır

dizisi ile listesi eş anlamlıdır. Köşeli ayraçla sınır yazımı (dizisi[1..12]) dilden kaldırılmıştır; sabit boyut programda verilir (bkz. “Boyutu sabit liste”).

Tip denetimi

Tipi bildirilmiş bir değişkene, parametreye ya da alana uymayan bir değer atandığında program çalışırken hata verir:

Yöntem
değişken n: tamsayı
n := 'metin'
Çıktı
Çalışma hatası: 'n' için tip uyuşmazlığı: tamsayı bekleniyordu, metin verildi

Tek örtük dönüşüm tamsayı → ondalık yönündedir: ondalık tipli bir değişkene 3 atanırsa değer 3.0 olur. Katı kipte aynı denetimler program çalışmadan önce yapılır ve eleman tipleri de denetlenir.

Tip adları aynı zamanda dönüştürücüdür: tamsayı('42'), ondalık('3,5'), metin(12), liste(x). Tür(x) değerin tip adını metin olarak verir.

Değer ve referans

Sayılar, metinler ve mantıksal değerler değiştirilemez. Kayıtlar değer olarak davranır: atandıklarında ve parametre olarak verildiklerinde kopyalanır. Listeler, sözlükler, tensörler ve sınıf nesneleri referansla paylaşılır: b := a yazdıktan sonra b üzerinden yapılan değişiklik a’da da görünür. Bağımsız bir kopya için Kopya(a) ya da liste(a) kullanılabilir.

Liste

Liste sıralı ve boyutu değişebilen bir elemanlar topluluğudur.

İşlem Yazım
Okuma, değiştirme L[0], L[0] := 5
Sondan sayma L[-1] son elemandır
Eleman sayısı Uzunluk(L), L.Uzunluk
Sona ekleme Ekle(L, x), L.Ekle(x)
Konuma ekleme Ekle(L, x, konum), L.Ekle(x, konum)
Silme Sil(L, 2), L.Sil(2), L(2).Sil, L listesindeki 2. elemanı Sil
Birleştirme L + M
Üyelik x içinde L

Silmenin dört yazımı aynı anlama gelir ve 2 numaralı elemanı (L[2]) siler; Sil çıkardığı elemanı döndürür. Sınır dışındaki bir numaraya erişmek hata verir.

Boyutu sabit liste

Yöntem
değişken aylar: metin listesi
başla
  aylar.Uzunluk(12, 1)
  aylar[1] := 'Ocak'

L.Uzunluk(n) listeyi n elemanlı yapar ve boyutunu sabitler; numaralar 0’dan başlar. L.Uzunluk(n, ilk) numaralamayı ilk’ten başlatır. Yeni elemanlar eleman tipinin başlangıç değeriyle dolar (eleman tipi bilinmiyorsa boş); listede önceden eleman varsa baştan itibaren korunur.

Boyutu sabit listede:

Uzunluk çağrısı değişkene yeni bir liste atar; aynı listeyi gösteren başka değişkenler eski listeyi göstermeyi sürdürür.

Sözlük

Sözlük anahtarları değerlere eşler. Sabit yazımı ['a': 1, 'b': 2], boş sözlük [:] biçimindedir. S['a'] okur, S['a'] := 3 yazar ya da ekler; olmayan bir anahtarı okumak hata verir. x içinde S anahtar üyeliğini sınar, Sil(S, anahtar) anahtarı kaldırır. Anahtarlar ekleme sırasını korur.

Metin

Metin karakterleri 1’den numaralanır: s[1] ilk karakterdir. Uzunluk(s) karakter sayısını verir. + iki metni birleştirir; işlenenlerden biri metinse diğeri metne çevrilir: 'x = ' + 5.