• [^] # Re: tout lu mais

    Posté par (site web personnel, Mastodon) . En réponse au journal 50 mauvais conseils de codage pour développeur C++. Évalué à 2.

    Cette arnaque de ZX81 ne me manque pas : l'absence de ELSE obligeait à du code rallonge pour avoir des scripts portables, ou alors fallait maintenir une version Spectrum plus longue.

    Génial l'adresse calculée ; ça permet de faire comme des étiquettes si on défini des constantes parlantes auparavant (du coup on n'oublie pas un GOTO 500 en cas de refactoring et on ne change la définition LET WHERE=500 qu'une seule fois.) Bref, autoriser plus de discipline et de concision (comparé aux successifs IF ... GOTO ... pour le même résultat.)

    11PRINT"1 Formule A"
    12PRINT"2 Formule B"
    13PRINT"3 Formule C"
    20PRINT"Votre Choix ?"
    21READA
    30REM GOTO A*100
    31IFA=1GOTO100
    32IFA=2GOTO200
    33IFA=3GOTO300
    40PRINT"Mauvais Nombre"
    99STOP
    100PRINT"A"
    110STOP
    200PRINT"B"
    210STOP
    300PRINT"C"
    310STOP

    Ah oui, c'est vrai, les ON ... GOTO ... et ON ... GOSUB ... que j'ai oublié bien que présents dans : AppleSoft BASIC, Atari BASIC, etc. Ils survivent encore dans VBA...
    Effectivement, c'est un équivalent de BRANCH chez PICAXE.

    11PRINT"1 Formule A"
    12PRINT"2 Formule B"
    13PRINT"3 Formule C"
    20PRINT"Votre Choix ?"
    21READA
    30ONAGOTO100,200,300
    31REM BRANCH A,100,200,300
    32REM ON A GOTO A*100
    40PRINT"Mauvais Nombre"
    99STOP
    100PRINT"A"
    110STOP
    200PRINT"B"
    210STOP
    300PRINT"C"
    310STOP

    La forme la plus avancée (proche des switch modernes) est le SELECT CASE ... ... END de Gambas et de VB

    "It is seldom that liberty of any kind is lost all at once." ― David Hume