6 berichten aan het bekijken - 1 tot 6 (van in totaal 6)
  • Q:
    Bijdrager
    Elmo1608

    Cocoa probeersel

    Ik heb geprobeerd een Rekenmachine te maken in Cocoa. Zou iemand het appje kunnen nakijken, want ik weet echt niet of ik het wel goed heb gedaan. Het werkt wel, maar of de manier waarop ik het gemaakt heb klopt, weet ik niet…
    Download

    Inactief
    Anoniem

    Ik heb hem nog niet uitgevoerd, doe ik zo. Echter zijn er een hele hoop zaken die je onnodig complex doet. Zoals het opslaan van de nummers..

    Dat kan makkelijk een nummer zijn. Wat je dan gewoon doet is:

    currentNumber *= 10;
    currentNumber += [[thisButton title] intValue];

    Op die manier hoef je maar een action te implementeren (voor de nummers) en kun je alle number-buttons naar die ene actie laten verwijzen.

    Wat er nu tevens niet goed gaat is het uitvoeren van twee operators na elkaar (2*2/2).

    Wat je ook kunt doen, in plaats van int function, is een implementation cachen… Is natuurlijk een stuk complexer, maar ik neem aan dat je het doet om te leren;)

    Bijdrager
    Elmo1608
    ”Reflex”

    Ik heb hem nog niet uitgevoerd, doe ik zo. Echter zijn er een hele hoop zaken die je onnodig complex doet. Zoals het opslaan van de nummers..

    Dat kan makkelijk een nummer zijn. Wat je dan gewoon doet is:

    currentNumber *= 10;
    currentNumber += [[thisButton title] intValue];
    Op die manier hoef je maar een action te implementeren (voor de nummers) en kun je alle number-buttons naar die ene actie laten verwijzen.

    Okee, dit kan ik volgen, is idd makkelijker.

    ”Reflex”

    Wat er nu tevens niet goed gaat is het uitvoeren van twee operators na elkaar (2*2/2).

    Dit had ik ook opgemerkt, het gaat met alle operators goed, alleen met delen gaat ie de fout in.

    ”Reflex”

    Wat je ook kunt doen, in plaats van int function, is een implementation cachen… Is natuurlijk een stuk complexer, maar ik neem aan dat je het doet om te leren;)

    Weet niet wat je bedoeld, maar ik ga het eens opzoeken.

    Inactief
    Anoniem

    Ok, IMP cachen is wellicht over the top. Maar makkelijker is het om een selector te cachen..

    dan heb je bijv.

    { // class vars
    SEL myAction;

    int uitkomst;
    }
    – (void)substract;
    – (void)add;
    – (void)divide;
    – (void)multiply;

    – (IBAction)multiplyAction:(id)sender;
    .. etc

    – (IBAction)multiplayAction:(id)sender {
    myAction = @selector(substract::);
    }
    (andere methods idem)

    – (IBAction)uitkomst:(id)sender {
    [self performSelector:myAction];

    [uitkomstVeld setIntValue:uitkomst];
    }

    zoiets, niet getest enzo, maar dat maakt het makkelijker;) Het kan allemaal nog makkelijker, overigens..

    Bijdrager
    Elmo1608

    Ik heb nu het volgende:
    http://www.yousendit.com/transfer.php?action=download&ufid=55730FA85955B522

    Die manier van nummers invoeren is inderdaad veel gemakkelijker. Ik heb er nu ook een decimaalteken ingezet. Het enige vreemde is dat somige getallen verkeerd worden gezet, bijv 0,02 wordt soms weergegeven als 0,0199999. Dat met die selector snap ik niet echt, dus dat is nog niet eringezet.

    Bijdrager
    Pieter.
    ”Elmo1608″

    Het enige vreemde is dat somige getallen verkeerd worden gezet, bijv 0,02 wordt soms weergegeven als 0,0199999.

    Dit is volkomen normaal. Er zijn een oneindig aantal reëele getallen, maar als je getallen gaat voorstellen in een computer ga je natuurlijk altijd een eindig aantal bits gebruiken. Dus als je reëele getallen wilt voorstellen zullen er altijd ‘gaten’ in de voorstelling zijn. Of m.a.w. er zijn vele getallen die allemaal hetzelfde bitpatroon hebben.
    In jouw geval hebben 0,02 en 0,0199999… blijkbaar hetzelfde bitpatroon, dus of je nou het ene of het andere getal ingeeft, je krijgt hetzelfde binaire getal, en dit bitpatroon omzetten naar een decimaal getal geeft 0,019999..

    Reëele getallen worden in een computer typisch voorgesteld als zogenaamde floating point getallen. Wikipedia heeft een goede, uitgebreide beschrijving.

6 berichten aan het bekijken - 1 tot 6 (van in totaal 6)

Je moet ingelogd zijn om een reactie op dit onderwerp te kunnen geven.