Toiminto on ohjelmointikielissä konstruktio , joka muistuttaa kirjallisesti matemaattisia operaatioita, eli erityinen tapa tallentaa joitain toimintoja.
Yleisimmin käytettyjä ovat aritmeettiset, loogiset ja merkkijonooperaatiot . Toisin kuin funktiot, toiminnot ovat usein kielen peruselementtejä, ja niitä merkitään erilaisilla välimerkeillä aakkosnumeeristen merkkien sijaan. niillä on erityinen infix-syntaksi ja epästandardit argumenttien välityssäännöt. Terminologia kuitenkin vaihtelee jonkin verran kielittäin.
Englanninkielinen sana operator , joka vastaa termiä "operation" , käännetään joskus virheellisesti "operaattoriksi". Itse asiassa (historiallisista syistä) venäjänkielinen termi "operaattori" tarkoittaa samaa kuin " ohje " , joka vastaa englanninkielistä lausuntoa [1] . Sekaannusta pahensi se tosiasia, että C :ssä osoitus ja lisäys/vähennys ovat sekä operaattoreita että operaatioita.
Itse asiassa operaatio on sama funktio , mutta kirjoitettu erityisellä tavalla. Tästä syystä on järkevää pystyä määrittelemään operaatioita mielivaltaisille tyypeille samalla tavalla kuin metodit , jotta voit työskennellä niiden kanssa samalla tavalla kuin perustyypeillä. Tätä ominaisuutta kutsutaan " operaattorin ylikuormitukseksi ", ja se on läsnä useimmissa 4. ja 5. sukupolven kielissä . Tällaisilla kielillä kääntäjä itse asiassa korvaa kutsun vastaavaan toimintoon toiminnon suorittamisen sijaan.
Toiminnot jaetaan hyväksyttyjen argumenttien lukumäärällä:
Koska toiminnot ovat merkinnöissä samanlaisia kuin algebralliset lausekkeet , niille, kuten jälkimmäisille, on 3 syntaksivaihtoehtoa:
Binääri- ja ternaarioperaatioissa (3 operandilla) suurimmassa osassa tapauksia käytetään infix-merkintää - siitä yksinkertaisesta syystä, että se on hyväksytty matematiikassa ja tutuin useimmille ihmisille. Unaarioperaatioille ei ole infix-merkintää, ja yleensä käytetään etuliitemerkintää.
Toiminnot siirtyvät yleensä kielistä sukulaisiin kieliin - esimerkiksi C -kielen operaatioita löytyy C++ :sta , Javasta , JavaScriptistä ja monista muista.
Merkki | Toiminta käynnissä | Ohjelmointikielet |
---|---|---|
a = btaia := b | toimeksianto | lähes kaikki |
Aritmeettinen | ||
a + b | argumenttien lisäys | lähes kaikki |
a - b | vähennyslasku | lähes kaikki |
-a | merkin vaihto | lähes kaikki |
a / b,a div b | jako | lähes kaikki |
a % b,a mod b | divisioonan loppuosa (modulo-divisioona) | lähes kaikki |
a++ a-- |
lisää yhdellä tehtävällä ( lisäys ) vähennä yhdellä tehtävällä (vähennä) |
C , Java , PHP |
a ^ btai a ^^ btaia ** b | eksponentio | BASIC , Fortran , Ruby , Python , Haskell (kaikki 3) |
aivojumppa | ||
a & b, tai a && b, taia and b | konjunktio (looginen kertolasku) | lähes kaikki |
a | b, tai a || b, taia or b | disjunktio (looginen lisäys) | |
~a, tai !a, tainot a | inversio (looginen negaatio) | |
a = btaia == b a <> btai a /= btaia != b |
tasa-arvotesti epätasa-arvotesti | |
a > b,a >= b a < b,a <= b |
suurempi kuin, suurempi tai yhtä suuri kuin pienempi kuin, pienempi tai yhtä suuri kuin | |
a ? b : c | kolmiosainen ehdollinen operaatio (jos ehto a on tosi, koko lauseke on yhtä suuri kuin b , muuten c ) | C, C++, Java, PHP |
merkkijono | ||
a + btai a & btai a.b(PHP) tai a..b(Lua) tai a ++ b(Haskell) | ketjutus (yhdistäminen) | lähes kaikki |
Bitittain | ||
a & b, a ja b (Pascal, Kotlin), a /\ b (Prolog), a .&. b (Haskell) | bittikohtainen konjunktio | C / C++ , Java , C# , Ruby , Python , Pascal , Kotlin , Prolog , Haskell |
a | b, a tai b (Pascal, Kotlin), a \/ b (Prolog), a .|. (Haskell) | Bittikohtainen disjunktio | |
~a, not a (Pascal), inv a (Kotlin), \a (Prolog) | bittikohtainen negaatio | C / C++ , Java , C# , Ruby , Python , Pascal , Kotlin , Prolog |
a^b, xor (Pascal, Kotlin) | XOR | C / C++ , Java , C# , Ruby , Python , Pascal , Kotlin |
a << b, a shl b (Pascal, Kotlin)
|
Bittinen siirto vasemmalle
|