Kitaplar / Yöntem Dil Başvurusu / 3. Tipler ve değerler
3. Tipler ve değerler
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:
değişken n: tamsayı
n := 'metin'Çalışma hatası: 'n' için tip uyuşmazlığı: tamsayı bekleniyordu, metin verildiTek ö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
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:
- geçerli numaralar
L.AltileL.Üstarasındadır; dışına çıkmak hata verir, sondan sayma yoktur; EkleveSilhata verir;- okuyan liste metodları (
İçerir,Sırala,Toplamgibi) aynen çalışır; - boyut yalnızca yeni bir
Uzunlukçağrısıyla değişir;liste(L)serbest bir kopya verir.
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.