Hirdetés

Új hozzászólás Aktív témák

  • Gyuri16

    senior tag

    válasz vz12 #2456 üzenetére

    nem ertek egyet, ket dolog miatt:

    1, ebben a konkret esetben: a programnak beadsz ket szamot, pl 100, 50. erre az mit csinal? hibauzenetet dob, miszerint kicsi az intervallum. a felhasznalo nem erti mi a baj, hisz az intervallum nagyobb mint a megengedett minimum. a program egyreszt helytelen hibauzenetet ad, masreszt arra tamaszkodik, hogy egy feltetel, ami eredetileg mast hivatott tesztelni ezt is lefedi. ezen kivul feleslegesen hivod meg a random fuggvenyt rossz parameterrel.
    aztan ott vannak a kellemetlen helyzetek, amit a te megoldasod okoz:
    faradt vagyok mar ezeket kutatni.. de ha pl a c integer lesz a,b pedig word akkor elo lehet idezni ilyet:
    a:=maxint*2; // nagy szam
    b:=100;
    c:=b-a; // = 102

    es itt baj van, mert a program 102 elembol fog valasztani ahelyett hogy maxint*2-100 elembol valasztana. es hibat se dob
    (ha pedig mindharom integer lesz, akkor negativ szamokat is kezelni kell, ami kicsit megint bonyolitana a dolgot, pl mit kell csinalni ha a=100 es b=-maxint)

    2, altalanosan (ez a fontosabb resz): a bemenetben amit a felhasznalotol kapsz nem lehet bizni. ha ket szamot ker a programod, ahol az elso a kisebb biztos lehetsz benne, hogy valaki kiprobalja mit csinal ha forditva adod meg. probalom a jo szokasokat terjeszteni: bemenetet mindig ellenorizni kell (lehetoleg minel hamarabb) es nem a kodban kutatni, hogy esetleg ez jo lesz igy is, mert van ott valahol egy if. a c valtozo jelentese, hogy hany szambol akarsz veletlenszeruen valasztani, itt nincs ertelme negativ szamnak, ezert nem szabad megengedni, hogy ilyen erteket felvegyen. ilyenekre hosszabb programoknal szokas irni teszteket a kodba, segitenek hibakat keresni.

Új hozzászólás Aktív témák