Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: Kaava tiedostosta

Sivun loppuun

Ropertto IV [15.10.2010 21:09:34]

#

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.

Antti Laaksonen [16.10.2010 11:01:07]

#

On mahdollista. Mikä ohjelmointikieli on kyseessä?

Esim. VB6:lla voi käyttää seuraavan tapaista koodia:

https://www.ohjelmointiputka.net/koodivinkit/23665-vb6-laskulausekkeen-laskija

Ropertto IV [16.10.2010 14:42:00]

#

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.

Metabolix [16.10.2010 17:14:36]

#

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.

Macro [16.10.2010 17:36:46]

#

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 [19.10.2010 10:53:39]

#

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$?

jalski [19.10.2010 11:00:54]

#

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.

Grez [19.10.2010 17:22:05]

#

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".


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta