Add capstone example: Kasvutaulukko with recursion, lists, and click events

This commit is contained in:
2026-04-05 08:24:08 +03:00
parent 5c2461ab11
commit b5a322da4e
3 changed files with 63 additions and 3 deletions
+55
View File
@@ -0,0 +1,55 @@
# Kasvutaulukko — Growth Comparison
#
# Combines recursive methods, list iteration, and a click handler
# in a single program.
#
# Page load: computes factorial and Fibonacci for n = 1..7 by
# iterating the same lista twice — once with kertoma, once with kani.
#
# Button: prompts for any n, then shows its factorial and Fibonacci
# as two sequential alerts.
#
# Concepts in use:
# kertoma — recursive factorial (from basics/factorial.itp)
# kani — recursive Fibonacci (from basics/fibonacci.itp)
# lista — built-in list type (from data-structures/lista.itp)
# jokainen alkio — forEach iterator (from data-structures/lista.itp)
# käyköön niin, että — click handler (from async/nappi.itp)
# --- Recursive definitions ---
Pienen luvun kertoma on
riippuen siitä, onko se pienempi tai yhtä suuri kuin yksi,
joko yksi
tai pieni luku kerrottuna pienen luvun edeltäjän kertomalla.
Luvun edeltäjä on se vähennettynä yhdellä.
Pienen luvun kani on
riippuen siitä, onko se pienempi tai yhtä suuri kuin yksi,
joko pieni luku
tai pienen luvun edeltäjän kani lisättynä pienen luvun edeltäjän edeltäjän kaniin.
# --- Data ---
# n = 1 .. 7
Olkoon kiva lista uusi lista, jonka alkioita ovat yksi, kaksi, kolme, neljä, viisi, kuusi ja seitsemän eikä muuta.
# Mutable variable for the interactive prompt
Olkoon pieni muuttuja uusi muuttuja, jonka arvo on nolla.
# --- Page ---
Kun nykyinen sivu avautuu,
nykyinen sivu näyttää tekstin "<h2>Kertoma (n!)</h2><p>",
nykyinen sivu näyttää kivan listan jokaisen alkion kertoman,
nykyinen sivu näyttää tekstin "</p><h2>Fibonacci-kani (fib(n))</h2><p>",
nykyinen sivu näyttää kivan listan jokaisen alkion kanin,
nykyinen sivu näyttää tekstin "</p>",
nykyinen sivu etsii elementin nimellä "output" tuloksenaan kiva alue,
kivalle alueelle kirjoitetaan koodi "<h2>Kokeile itse</h2><p><button id='laske'>Syötä luku →</button></p>",
nykyinen sivu etsii elementin nimellä "laske" tuloksenaan nätti nappi
ja nättiä nappia painettaessa käyköön niin, että
pieneen muuttujaan luetaan luku,
pienen muuttujan arvon kertoma näytetään käyttäjälle
ja pienen muuttujan arvon kani näytetään käyttäjälle.