Ohjelmassa on muuttujat a ja b, joilla on arvot 2 ja 3. Tiedostossa on kaava "a+b". Onko mahdollista ladata kaava tiedostosta? Näin ohjelma laskisi 2+3=5.
On mahdollista. Mikä ohjelmointikieli on kyseessä?
Esim. VB6:lla voi käyttää seuraavan tapaista koodia:
https://www.ohjelmointiputka.net/koodivinkit/
Kitos! Juuri VB6:lle koodia etsiskelin. En vain haulla sattunut osumaan kyseiseen koodiin.
Edit: Jos lisää koodiin muttujat a ja b ja kirjoittaa syöttökenttään kaavaksi a + b, ohjelma antaa virheen Type mismatch ja laskun tulos on nolla riippumatta muuttujien (a ja b) arvoista. Juuri tällaista laskua halusin koodiin.
Sinun täytyy muokata funktiota HaeTekijat niin, että se osaa lukujen lisäksi tunnistaa sanoja ja palauttaa silloin oikean muuttujan arvon. Toinen vaihtoehto on korvata etukäteen muuttujien nimet niiden arvoilla, mutta tämä voi toimia väärin, jos lauseke on virheellisen muotoinen.
Jotain tyyliin
Dim aString As String = Replace(teksti, "a", a)
Dim aString As String = Replace(teksti, "b", b)
jos nyt oikeen ymmärsin (ja osasin).
Macro kirjoitti:
Dim aString As String = Replace(teksti, "a", a)
Dim aString As String = Replace(teksti, "b", b)
Eikun, pitäisiköhän muuttuja määritellä vain kerran, ja sitten käyttä .= merkintää (Jos se kuuluu VB:een)?
Dim aString As String = Replace(teksti, "a", a);
aString .= Replace(teksti, "b", b);
Missäköhän kielessä muuttujat merkitään muuttuja$?
Macro kirjoitti:
Missäköhän kielessä muuttujat merkitään muuttuja$?
Lähes kaikissa Basic-kielissä tuo dollarinmerkki muuttujan perässä kertoo heti, että tyyppi on merkkijono, eli String.
Tuon käyttö ei yleensä ole välttämättömyys, mutta parantaa kyllä koodin luettavuutta.
Mitä muuten tulee keskustelun aiheeseen, eli kaavan lukemiseen tiedostosta niin Metabolixin aiemmin jo mainitsema tapa olisi varmaankin paras.
Eli käytännössä pitäisi toteuttaa yksinkertainen tulkki lausekkeita varten. Helpoimmalla pääsee, kun tyytyy vain yhden kirjaimen nimisiin muuttujiin. Tällöin ne voidaan kaikki tallentaa yksinkertaisesti taulukkoon ja alustaa nollaksi heti ohjelman alussa. Muuttujan indeksi taulukossa olisi siis yksinkertaisesti vain muuttujan kirjaimen ascii-koodi.
Kuten Metabolix jo mainitsi niin tarvitaan rutiini, mikä osaa parsia tekijät (tokens) merkkijonosta. Näitä tekijöitä voivat siis olla esim. luku, muuttuja ja sana. Tämän lisäksi tarvitaan tietenkin rutiinit, joiden avulla käsitellä tekijöistä muodostuvat lausekkeet.
jalski kirjoitti:
Tuon käyttö ei yleensä ole välttämättömyys, mutta parantaa kyllä koodin luettavuutta.
Tuostakin voi olla montaa mieltä. Ehkä QB:ssä, jossa oli noin 5 eri tietotyyppiä ja joka toisessa ohjelmassa muuttujien nimet max 2 merkkisiä.
Nykyisissä olio-ohjelmointi-basiceissä en näe mitään hyötyä laittaa parille tietotyypille erikoismerkkejä, kun niitä merkkejä ei kuitenkaan riitä kaikille viidelle miljoonalle tietotyypille. Ennemmin pistää kovan tyypityksen päälle ja nimeää muuttujat niiden tarkoitusta, ei tietotyyppiä kuvaavasti. Unkarilaisessa notaatiossahan oli periaatteessa sama idea, ja senkin käyttö on aika pitkälti "pois muodista".
Aihe on jo aika vanha, joten et voi enää vastata siihen.