Tässä on geometriaan liittyvä esimerkki koodattuna Lualla. Ohjelma kykenee laskemaan erikuvioiden kuten neliön, suorakulmaisen kolmion ja ympyrän pinta-aloja. Ohjelman ideana on laskea ensin ensimmäisen kuvion pinta-ala ja tästä mahdollisesti otetaan pois pienempi kuvio sekä lopuksi valintojen mukaan palautetaan takaisin vielä pienempi kuvio.
Ohjelmassa on kaksi funktiota ensimmäinen tarkistaa ja määrittelee sen lasketaanko, poistetaanko vai palautetaanko kuvio ja toinen funktio laskee yksittäisen kuvion pinta-alan.
function LaskePintaAla(kuvio,sivu,kulma,vahennys)
pinta_ala = 0.0
--Lasketaan yksittäisen suorakulmion (tässä tapauksessa neliön), suorakulmaisen kolmion tai ympyrän pinta-ala.
--Neliössä ja kolmiossa muuttuva osa on sivun pituus ja ympyrässä kulma
if (kuvio == 1) then
--neliö
pinta_ala = (sivu-vahennys)^2
elseif (kuvio == 2) then
--suorakulmainen kolmio
pinta_ala = (sivu-vahennys)^2/2
elseif (kuvio == 3) then
--ympyrä
pinta_ala = math.pi*sivu^2*((kulma-vahennys)/360)
end
return pinta_ala
end
function LaskeKokonaisPintaAla(kuvio,poistot,sivu,kulma)
--Valinnasta huolimatta lasketaan ensimmäisen kuvion pinta-ala, siitä valintojen mukaan poistetaan pienempi kuvio ja sen jälkeen mahdollisesti palautetaan vielä pienempi kuvio.
tulos = 0.0
vahennys = 0.0
tulos = LaskePintaAla(kuvio,sivu,kulma,vahennys)
if (poistot == 2) then
--Poistetaan pienempi kuvio
vahennys = 5.0
if (sivu >= vahennys) then
tulos = tulos-LaskePintaAla(kuvio,sivu,kulma,vahennys)
end
elseif (poistot == 3) then
--Poistetaan pienempi kuvio ja palautetaan vielä pienempi kuvio.
vahennys = 5.0
if (sivu >= vahennys) then
tulos = tulos-LaskePintaAla(kuvio,sivu,kulma,vahennys)
end
if (sivu >= vahennys) then
vahennys = 10.0
tulos = tulos+LaskePintaAla(kuvio,sivu,kulma,vahennys)
end
end
return tulos
end
--Annetaan lähtötiedot ja sen jälkeen lasketaan tulos kahden funktion avulla.
print("Valitse kuvio 1) neliö, 2) kolmio, 3) ympyrä")
kuvio = io.read("*number")
if (kuvio == 1 or kuvio == 2 or kuvio == 3) then
print("Anna sivun/säteen pituus")
sivu = io.read("*number")
end
if (kuvio == 3) then
print("Anna kulma")
kulma = io.read("*number")
end
print("1) Koko pinta-ala, 2) poistettu osa, 3) poistettu ja palautettu osa")
poistot = io.read("*number")
print("Pinta-ala:",LaskeKokonaisPintaAla(kuvio,poistot,sivu,kulma))Aihe on jo aika vanha, joten et voi enää vastata siihen.