Vertailu (ohjelmointi)

Ohjelmoinnin vertailu on  yleinen nimi operaatioiden sarjalle samantyyppisillä arvopareilla tai tyyppivalulla , jotka toteuttavat tasa-arvon ja järjestyksen matemaattisia suhteita . Korkean tason kielillä tällaiset toiminnot palauttavat useimmiten loogisen arvon ("true" tai "false").

Skalaari- (numeeristen) objektien, osoittimien ja monimutkaisten tietotyyppien objektien vertailua tarkastellaan eri tavalla.

Skalaaritietotyyppien vertailu

Kun verrataan skalaari- (numeerisia) tietotyyppejä olevia objekteja, itse tallennettuja numeerisia arvoja verrataan suoraan. Itse numeeriset arvot pysyvät kuitenkin ennallaan.

Matalan tason kielissä skalaariobjektit kirjoitetaan prosessorirekistereihin , ja niiden vertailuun käytetään yleensä komentoa , joka asettaa prosessorin liputCMP tietyllä tavalla .

Korkean tason kielet käyttävät loogisia operaattoreita, jotka palauttavat (kutsupisteeseen) jonkin arvon, joka tulkitaan booleaniksi.

Loogiset operaattorit toteuttavat seuraavat matemaattiset vertailuoperaatiot:

Korkean tason kielissä seuraavat loogiset operaattorit on toteutettu:

Löysästi kirjoitetuissa kielissä palautusarvo on yleensä kokonaisluku, jolloin nolla tulkitaan "epätosi" ja mikä tahansa muu arvo kuin nolla tulkitaan "tosi". Vahvemmalla kirjoituksella varustetuissa kielissä otetaan käyttöön erityinen boolean-tietotyyppi ( englanniksi  boolean ), mutta muita tyyppejä on mahdollista suoratoistaa loogiseksi.

Ei-numeeristen tietojen vertailu

Vaikka vertailuargumentit eivät olisi numeerista dataa, niiden vertailu voidaan silti toteuttaa, myös osana ohjelmointikielistandardia. Kun työskennellään monimutkaisten objektien kanssa, ohjelma toimii niiden kanssa osoittimien avulla. Näin ollen on ainakin kaksi vaihtoehtoa tietojen vertailuun:

Jotkut kielet, jotka rajoittavat osoittimen käsittelyä, kuten Java, mutta eivät salli suurempia tai pienempiä osoitinoperandien vertailua, mahdollistavat osoittimen tasa-arvon tarkistamisen.

Sisällön vertailu, kuten merkkijonojen vertailu, sisältyy useimmiten kielen ajonaikaiseen toteutukseen ja voi olla osa standardia. Sisällön vertailusääntöjen itsenäinen toteuttaminen mukautetuille rakenteille on kuitenkin sallittua ylikuormittamalla operaattoreita (C) tai määrittämällä (uudelleenmäärittely) menetelmiä ( Object.equalsja käyttöliittymää ComparableJavassa). Sisäänrakennetuille tietotyypeille (esim. String), vaikka vertailusääntöjä ei useinkaan voi ohittaa, ne voidaan mukauttaa nykyiselle kielelle ja maa-alueelle, ja voit myös käyttää omia vertailusääntöjen toteutuksiasi lajittelutoiminnoilla ( ComparatorJavan käyttöliittymä) .

Jotkut standardit, kuten DOM Level 3 , määrittelevät lisää vastaavuustyyppejä. Erityisesti DOM Level 3 -standardi olettaa, että asiakirjan sama elementti voidaan esittää kahdella tai useammalla alueella tietokoneen muistissa. Siksi määritellään lisätoiminto isSameNode, joka on ohjelmointikielen sisällön tasa-arvotesti, mutta itse asiassa DOM-standardin kannalta osoittimen vastaavuustesti. [yksi]

Joissakin kielissä arvoja, jotka ovat merkitykseltään samanlaisia, vaikka niillä on eri tyyppejä , esimerkiksi tyhjä merkkijono , tyhjä taulukko, numero 0, nollaosoitin, false , voidaan myös pitää vastaavina  - niillä on merkitys tyhjyys, kieltäminen.

Muistiinpanot

  1. Asiakirjaobjektimallin ydin . Haettu 11. helmikuuta 2010. Arkistoitu alkuperäisestä 11. helmikuuta 2010.