Add lista and vektori examples

This commit is contained in:
2026-04-04 18:35:17 +03:00
parent 7af56f56c4
commit 603826413d
2 changed files with 97 additions and 0 deletions
+37
View File
@@ -0,0 +1,37 @@
# Lista — List Operations in Tampio
#
# "lista" is Tampio's built-in ordered collection type.
# Its internal field "alkio" holds the elements as an array.
#
# Key methods:
# koko = size of the list
# ensimmäinen alkio = first element (ordinal subscript)
# jokainen alkio = iterate all elements (like forEach)
# järjestetään = sort ascending in place
# järjestetään laskevaan suuruusjärjestykseen = sort descending
# Initialize with the first five digits of pi: 3, 1, 4, 1, 5
# "jonka alkioita ovat" = "whose elements are" (partitive plural)
# "eikä muuta" closes a single-item or final-item list
Olkoon kiva lista uusi lista, jonka alkioita ovat kolme, yksi, neljä, yksi ja viisi eikä muuta.
# "jokainen alkio" in array subscript position = forEach
# "koko" = length, "ensimmäinen alkio" = first element
Kun nykyinen sivu avautuu,
nykyinen sivu näyttää tekstin "<p>Lista: ",
nykyinen sivu näyttää kivan listan jokaisen alkion,
nykyinen sivu näyttää tekstin "</p><p>Koko: ",
nykyinen sivu näyttää kivan listan koon,
nykyinen sivu näyttää tekstin "</p><p>Ensimmäinen alkio: ",
nykyinen sivu näyttää kivan listan ensimmäisen alkion,
nykyinen sivu näyttää tekstin "</p>",
kiva lista järjestetään,
nykyinen sivu näyttää tekstin "<p>Nousevassa järjestyksessä: ",
nykyinen sivu näyttää kivan listan jokaisen alkion,
nykyinen sivu näyttää tekstin "</p>",
kiva lista järjestetään laskevaan suuruusjärjestykseen,
nykyinen sivu näyttää tekstin "<p>Laskevassa järjestyksessä: ",
nykyinen sivu näyttää kivan listan jokaisen alkion
ja nykyinen sivu näyttää tekstin "</p>".
+60
View File
@@ -0,0 +1,60 @@
# Vektori — Custom Data Structure in Tampio
#
# Defines a "vektori" (vector) class with fields and computed methods.
# This example shows Tampio's OOP model:
# class declaration → "[name/adessive] on [fields]"
# field access → "[object/genitive] [field]" (same syntax as function call)
# recursive methods → ternary base case + recursive step
#
# Using vector [3, 4] — its Euclidean length is exactly 5 (3-4-5 right triangle).
# Class declaration: adessive case marks the class name
# "komponentit" is plural → stored as an array
Vektorilla on komponentit.
# "dimensio" = number of components
# "sen" = genitive of "se" (the unnamed parameter = self)
# "komponenttien määrä" = count of the elements array
Vektorin dimensio on sen komponenttien määrä.
# "pää" = head (first element)
# "häntä" = tail (new vektori from index 2 onward)
# "toisesta alkaen" = slice starting from the second element
Vektorin pää on sen ensimmäinen komponentti.
Vektorin häntä on uusi vektori, jonka komponentit ovat sen komponentit toisesta alkaen.
# Recursive sum: base case 0 when empty, otherwise head + tail's sum
# "lisättynä ... summaan" = added to ... sum (illative case)
Vektorin summa on
riippuen siitä, onko sen dimensio nolla,
joko nolla
tai sen pää lisättynä sen hännän summaan.
# Euclidean length: sqrt(x1^2 + x2^2 + ...)
# "toinen potenssi" = squared (array subscript syntax: potenssi[2])
# Operator chain without separator = innermost grouping:
# (head^2 + tail.length^2).sqrt()
Vektorin pituus on
riippuen siitä, onko sen dimensio nolla,
joko nolla
tai sen pään toisen potenssin
lisättynä sen hännän pituuden toiseen potenssiin
neliöjuuri.
# Vector [3, 4]: sum = 7, length = sqrt(9+16) = 5
Olkoon kiva vektori uusi vektori, jonka komponentteja ovat kolme ja neljä eikä muuta.
Kun nykyinen sivu avautuu,
nykyinen sivu näyttää tekstin "<p>Dimensio: ",
nykyinen sivu näyttää kivan vektorin dimension,
nykyinen sivu näyttää tekstin "</p><p>Summa: ",
nykyinen sivu näyttää kivan vektorin summan,
nykyinen sivu näyttää tekstin "</p><p>Pituus (3-4-5 kolmio → 5): ",
nykyinen sivu näyttää kivan vektorin pituuden
ja nykyinen sivu näyttää tekstin "</p>".