Page 1 of 1

C-tapainen ++/--

Posted: Tue Jan 29, 2013 8:12 pm
by Jani
Värkkäillessäni muistipaloilla tulin ideaan helpottaa työtä ja laskea tavuja eteenpäin tyyliin

Code: Select all

x++
x+=4
Noh, mikäpä olisi parempi tapa toteuttaa työ kuin muistipalat?

Code: Select all

Function Counter(mem = 0, a = 0)
    If mem = 0 Then
        mem = MakeMEMBlock(4)
        PokeInt mem, 0, a
        Return mem
    EndIf
    num = PeekInt(mem, 0)
    PokeInt mem, 0, num + a
    Return num
EndFunction

num1 = Counter() ' Uusi counter, luku 0
num2 = Counter(0, 7) ' Uusi counter, luku 7

Print "    num1++: " + Counter(num1, 1)
Print "   num1+=5: " + Counter(num1, 5)
Print "      num1: " + Counter(num1)
Print ""
Print " num2+=100: " + Counter(num2, 100)
Print "num2+=num1: " + Counter(num2, Counter(num1))
Print "      num2: " + Counter(num2)

DeleteMEMBlock num1
DeleteMEMBlock num2

WaitKey

Re: C-tapainen ++/--

Posted: Tue Jan 29, 2013 8:53 pm
by axu
En nyt oikein tiedä mitä pitäisi sanoa. Tässä funktiossa on yksi suuri ongelma. Se ei nimittäin mitenkään helpota koodin kirjoittamista. Eikö olisi ihan hyvä pidättyä tyylissä x = x + 1 tai jos haluaa säästää muutaman merkin x + 1?

Re: C-tapainen ++/--

Posted: Tue Jan 29, 2013 9:22 pm
by Jani
axu wrote:En nyt oikein tiedä mitä pitäisi sanoa. Tässä funktiossa on yksi suuri ongelma. Se ei nimittäin mitenkään helpota koodin kirjoittamista. Eikö olisi ihan hyvä pidättyä tyylissä x = x + 1 tai jos haluaa säästää muutaman merkin x + 1?
Onhan siinä se. Kuitenkin omista tottumuksista johtuen oli kyseisen ominaisuuden puute suuri.

Code: Select all

Funktio(Counter(num, 1))
vvvvvvvvvvv
Funktio(num++)
Säästää siinä yhden rivin aina.

Re: C-tapainen ++/--

Posted: Tue Jan 29, 2013 9:43 pm
by axu
Jani wrote:Onhan siinä se. Kuitenkin omista tottumuksista johtuen oli kyseisen ominaisuuden puute suuri.
Säästää siinä yhden rivin aina.
Ah, niin tietenkin tarkoitat näiden operaattoreiden kutsumista upotettuna muuhun koodiin. Totta, tuotapa en ajatellut. Onhan se joskus kätevää, mutta toisinaan lienee selvempää laittaa eri riveille ne.
EDIT:

Jos parannusehdotusta kaipaat, laadippa vasenkätinenkin operaatio (eli ++x)


Re: C-tapainen ++/--

Posted: Tue Jan 29, 2013 9:49 pm
by Jani
axu wrote:
Jani wrote:Onhan siinä se. Kuitenkin omista tottumuksista johtuen oli kyseisen ominaisuuden puute suuri.
Säästää siinä yhden rivin aina.
Ah, niin tietenkin tarkoitat näiden operaattoreiden kutsumista upotettuna muuhun koodiin. Totta, tuotapa en ajatellut. Onhan se joskus kätevää, mutta toisinaan lienee selvempää laittaa eri riveille ne.
EDIT:

Jos parannusehdotusta kaipaat, laadippa vasenkätinenkin operaatio (eli ++x)

Eipä se ole kuin vaihtaa

Code: Select all

Return num
vvvvvvvvvv
Return num + a

Re: C-tapainen ++/--

Posted: Wed Jan 30, 2013 9:09 am
by axu
Jani wrote:Eipä se ole kuin vaihtaa

Code: Select all

Return num
vvvvvvvvvv
Return num + a
Nyt taitaa olla plusmerkki miinusmerkin tilalla ;)

Re: C-tapainen ++/--

Posted: Wed Jan 30, 2013 9:25 am
by koodaaja
Kuinka niin? num+a:han tuohon memblockiinkin kirjoitettiin. ++x pitäisi palauttaa x+1, kuten annettu funktio antaa kun a=1. Jokseenkin järkevämmäksi katsoisin ominaisuuden lisäämisen johonkin jälkikäsittelijään, jolloin funktiokutsun sijaan voisi koodiinsa oikeasti kirjoittaa vain muuttuja++ :>

Re: C-tapainen ++/--

Posted: Wed Jan 30, 2013 11:46 am
by Jani
koodaaja wrote:Kuinka niin? num+a:han tuohon memblockiinkin kirjoitettiin. ++x pitäisi palauttaa x+1, kuten annettu funktio antaa kun a=1. Jokseenkin järkevämmäksi katsoisin ominaisuuden lisäämisen johonkin jälkikäsittelijään, jolloin funktiokutsun sijaan voisi koodiinsa oikeasti kirjoittaa vain muuttuja++ :>
Palautetaan num, mutta kirjoitetaan num + a.
Palauta num + a -> ++x.
Jälkikäsittely on toinen vaihtoehto. :)

Re: C-tapainen ++/--

Posted: Wed Jan 30, 2013 2:29 pm
by axu
Eiku hups mitenköhän nyt tuli taas sekoiltua :D Anteeksi tuo edellinen, oikeinhan se tosiaan meni.