Hogy nem volt tervezett! Keresés logikai hibák
Ezt a leckét kell tekinteni keresése logikai hibák a programban.
Az előző leckében már meséltek, hogyan kell megtalálni és kijavítani a fordítási hibák és futásidejű. A harmadik típusú programozási hibák - logikai hibák - talál legnehezebb. Jelenlétében a logikai hiba, akkor nem kap egy figyelmeztetést: a program fog futni, de hibás eredményekhez vezethetnek. Meg kell majd olvasni a megírt kód, és meghatározza az a hiba okát.
Szerencsére, ez segíthet a Visual Basic hibakereső eszközök. Két hibakeresés módszer - beállítás töréspontok és átlépett a kódot - lehetővé teszi, hogy ellenőrizze a kódot során annak végrehajtását, hogy megtalálják a hibát.
A szünet módban, a kivitelezés végezhető lépésről elhaladó darab kódot végrehajtó egy sor kódot, hogy hogyan működik. F8 billentyű lenyomásával végrehajtását okozza a jelenlegi kódot vonal, és megáll a következő sorban. Ez lehetővé teszi, hogy ellenőrizze a változók értékeit látni őket változtatni egy sor kódot a másikra.
Ha az aktuális kódsort meghív egy függvényt vagy Sub eljárás. máshol lévő kódot az F8 billentyű lenyomásával kerül sor az átmenetet az eljárás ellen. A beavatkozás után ugrik a folyosón sorban miután az egyik, ami miatt az eljárást. Ha átmennek a folyamat nem szükséges, akkor nyomja meg a Shift + F8, hogy kihagyja azt.
F5 billentyű lenyomásával a program futtatásához. Az első mezőbe írja be 10 (10 perc) a második mezőbe írja 5 (5 mérföld), majd kattintson Button1.
Az üzenet boxban a szöveg „átlagsebesség 0.03333334”; de ha 5 mérföld borították 10 percig, a helyes válasz legyen értéke 30 mérföld per óra.
Ne zárja be a projektet. Az alábbi eljárás leírja, hogyan lehet megtalálni a logikai hiba.
Az utolsó példa programlogika nyilvánvalóan rossz. Összhangban az eredmény a sebesség kisebb, mint egy mérföldre óránként helyett 30 mérföld per óra, ahogy elvárható lenne - de hol a hiba?
Az alábbi eljárást kell állítani töréspontot és kódvégrehajtáskor a lépéseket, hogy megtalálja a hibát.
Beállításához töréspontot, hogy ellenőrizze a kódot lépések
A határon az űrlap megjelenít egy piros pont, és a kódot kell pirossal kiemelve, amely jelzi a töréspont.
F5 billentyű lenyomásával az alkalmazás futtatásához. Az első mezőbe írja be a 10. és a második - 5. Ezután kattintson Button1.
A program megáll, amikor eléri a töréspontot. Karakterlánc óra = perc / 60 sárga színnel.
Ellenőrizze a változók értékeit, tartja az egér felettük. Jelentése órán egyenlőnek kell lennie a 0 értéket perc - 10.
Nyomja meg az F8 billentyűt a vonal óra = perc / 60, és menj a következő sorra.
Ellenőrizze a változók értékét a sorban MsgBox ( „Átlagos sebesség” GetMPH (óra, mérföld)). Jelentés órát kell teremteni egyenlő ,166666672. mérföld és érték - 5,0.
Nyomja meg az F8 ismét végrehajtja az aktuális sort.
Felhívjuk figyelmét, hogy van egy átmenet egy húr Function GetMPH.
Ellenőrizze a változók értékét ebben a sorban. Jelentés Most mérföld egyenlő ,166666672. és óra érték - 5,0. ellentétben az előző sor. Hiba található.
Ne zárja be a projektet. Az alábbi eljárás leírja, hogyan kell rögzíteni a logikai hiba.
Az előző eljárás változók mérföld és óra cserélték. Meg tudja érteni az oka?
A hiba történt, mert a felhozott érvek rossz sorrendben, ami helytelen kiszámítása. Ha az érvek különböző típusú, nem lenne egy futásidejű hiba; de mivel az érvek az azonos típusú, futásidejű hiba történt. Ez egy egyszerű hiba, hanem, hogy megtaláljuk az okokat, a hiba nem volt könnyű.
Az alábbi eljárást kell állítani töréspontot és kódvégrehajtáskor a lépéseket, hogy megtalálja a hibát.
Távolítsuk el a töréspont kattintva a piros pont a bal oldali ablakban.
F5 billentyű lenyomásával a program futtatásához. Az első mezőbe írja be a 10. és a második - 5. Ezután kattintson Button1.
Ebben az időben, a megfelelő eredmény megjelenik egy üzenet mezőbe: „Az átlagos sebessége 30”.
Úgy tűnhet, hogy a program nem határoztak meg, de van egy másik logikai tévedés, még nehezebb megtalálni. Hogy megpróbálja megtalálni, ne zárja be a projektet. Meg fogják használni újra a törekvés a más hibákat. Valami még mindig nincs rendben.