En operation är en konstruktion i programmeringsspråk , som i skrift liknar matematiska operationer, det vill säga ett speciellt sätt att registrera vissa åtgärder.
De vanligaste är aritmetiska, logiska och strängoperationer . Till skillnad från funktioner är operationer ofta grundläggande delar av språket och betecknas med olika skiljetecken snarare än alfanumeriska tecken; de har en speciell infixsyntax och icke-standardiserade regler för överföring av argument. Terminologin skiljer sig dock något från språk till språk.
Det engelska ordet operator , som motsvarar termen "operation" , översätts ibland felaktigt som "operatör". I själva verket (av historiska skäl) betyder den ryska termen "operatör" detsamma som " instruktion " , vilket motsvarar det engelska uttalandet [1] . Förvirringen förvärrades av att i C är tilldelning och inkrement/minskning både operatörer och operationer.
Faktum är att en operation är samma funktion , men skriven på ett speciellt sätt. Av denna anledning är det vettigt att kunna definiera operationer på godtyckliga typer på samma sätt som metoder , så att du kan arbeta med dem på samma sätt som du skulle göra med elementära typer. Denna funktion kallas " operatörsöverbelastning " och finns på de flesta 4:e och 5 :e generationens språk . På sådana språk ersätter översättaren faktiskt ett anrop till motsvarande funktion istället för att utföra en operation.
Operationer delas med antalet accepterade argument i:
Eftersom operationer i notation liknar algebraiska uttryck finns det tre syntaxalternativ för dem, liksom för de senare:
För binära och ternära (med 3 operander) operationer, i den överväldigande majoriteten av fallen, används infixnotation - av den enkla anledningen att det är accepterat i matematik och mest bekant för de flesta. Det finns ingen infixnotation för unära operationer, och prefixnotation används vanligtvis.
Operationer flyttar vanligtvis från språk till relaterade språk - till exempel finns C -språkoperationer i C++ , Java , JavaScript och många andra.
Tecken | Drift pågår | Programmeringsspråk |
---|---|---|
a = bellera := b | uppdrag | nästan alla |
Aritmetisk | ||
a + b | tillägg av argument | nästan alla |
a - b | subtraktion | nästan alla |
-a | tecken byte | nästan alla |
a / b,a div b | division | nästan alla |
a % b,a mod b | resten av divisionen (modulo division) | nästan alla |
a++ a-- |
öka med 1 med tilldelning ( inkrement ) minska med 1 med tilldelning (minska) |
C , Java , PHP |
a ^ beller a ^^ bellera ** b | exponentiering | BASIC , Fortran , Ruby , Python , Haskell (alla 3) |
hjärngymnastik | ||
a & b, eller a && b, ellera and b | konjunktion (logisk multiplikation) | nästan alla |
a | b, eller a || b, ellera or b | disjunktion (logiskt tillägg) | |
~a, eller !a, ellernot a | inversion (logisk negation) | |
a = bellera == b a <> beller a /= bellera != b |
jämställdhetstest ojämlikhetstest | |
a > b,a >= b a < b,a <= b |
större än, större än eller lika med mindre än, mindre än eller lika med | |
a ? b : c | ternär villkorlig operation (om villkor a är sant är hela uttrycket lika med b , annars c ) | C, C++, Java, PHP |
Sträng | ||
a + beller a & beller a.b(PHP) eller a..b(Lua) eller a ++ b(Haskell) | sammanfogning (sammanfoga) | nästan alla |
Bitvis | ||
a & b, a och b (Pascal, Kotlin), a /\ b (Prolog), a .&. b (Haskell) | bitvis konjunktion | C / C++ , Java , C# , Ruby , Python , Pascal , Kotlin , Prolog , Haskell |
en | b, a eller b (Pascal, Kotlin), a \/ b (Prolog), a .|. (Haskell) | Bitvis disjunktion | |
~a, inte a (Pascal), inv a (Kotlin), \a (Prolog) | bitvis negation | 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)
|
Bitskifte vänster
|