Mikä on looginen virhe?

Looginen virhe on ongelma tietokoneen ohjelmointikoodissa, jota ei voida helposti tunnistaa koodia kirjoitettaessa tai käännettäessä. Looginen virhe, jota joskus kutsutaan semanttiseksi virheeksi, on yleensä ohjelmoijan vika; vaikka koodaus olisi oikea, tuloksena saatava vastaus saattaa silti olla väärä. Jos ohjelmointikielen kääntäjässä on looginen virhe, se tulkitsee annetun koodin onnistuneesti, jolloin tuloksena on työohjelma, joka saattaa palauttaa virheellisiä tietoja.

Ohjelmoijan on vaikea havaita loogisia virheitä, koska ohjelmointikielen tulkki ei tunnista tätä virhettä ongelmaksi. Kun koodi on suoritettu onnistuneesti, tulokset voivat ilman tarkoituksellista tutkimusta aluksi näyttää oikeilta. Tämän tyyppisten virheiden tunnistamiseksi henkilön, joka tuntee odotetut tulokset ja ohjelman toiminnon, on tarkasteltava kyseisen ohjelman tuloksia ja toimintaa.

Jos haluat löytää koodista logiikkavirheen, sinun on kyettävä seuraamaan virheen lähdettä menetelmällisesti. Virhe voi johtua väärin koodatusta syntaksista. Koodin syntaksi saattaa näyttää oikealta, mutta se voi johtaa loogiseen virheeseen. Tämäntyyppiset virheet voivat olla erittäin kalliita ongelmia, jos niitä ei korjata ajoissa.

Loogiset virheet voivat myös johtua virheellisistä tiedoista, joita käytti oikein kirjoitettu ohjelma ilman omia sisäisiä logiikkavirheitä. Tämä vastaa yleistä ilmausta “roskat sisään, roskat ulos”. Jos tiedot syötetään väärin ohjelmaan, vaikka ohjelma suoritetaan oikein, tuloksena on virhe verrattuna odotettuun.

Esimerkkinä toisenlaisesta logiikkavirheestä kuljettaja saattaa pysähdysmerkin aikana kääntyä oikealle tai vasemmalle. Jos kuljettaja kääntyy oikealle, kun aiottu kohde oli vasemmalla, tätä pidetään loogisena virheenä. Teknisesti kuljettaja käytti ajoneuvoa oikein, mutta lopputulos ei ollut odotettu. Kuten tässä esimerkissä havainnollistetaan, logiikan virheet eivät rajoitu tietokoneohjelmoinnin piiriin. Looginen virhe voidaan myös luokitella virheelliseksi viestinnän suhteen.

Toisessa esimerkissä, jossa on logiikkavirheitä, tekstinkäsittelyohjelmat saattavat joskus käyttää automaattista oikeinkirjoituksen tarkistusta; nämä oikeinkirjoituksen tarkistajat ovat tunnettuja puuttuvista logiikkavirheistä. Esimerkiksi substantiivi “purje” saattaa lauseessa esittää väärin substantiivin “myynti”. Jokainen sana on kirjoitettu oikein, kuulostaa oikealta ja saattaa olla kieliopillisesti oikein lauseessa, mutta yhden sanan määritelmä ei ehkä sovi tietyn lauseen kontekstiin.