A művelet a programozási nyelvekben a matematikai műveletekhez hasonló írásbeli konstrukció , vagyis bizonyos műveletek rögzítésének speciális módja.
A leggyakrabban használt aritmetikai, logikai és karakterlánc - műveletek. A függvényekkel ellentétben a műveletek gyakran a nyelv alapvető elemei, és alfanumerikus karakterek helyett különféle írásjelekkel jelölik őket; speciális infix szintaxisuk és nem szabványos argumentumátadási szabályaik vannak. A terminológia azonban nyelvenként némileg eltér.
Az angol operator szót , amely az "operation" kifejezésnek felel meg , néha hibásan "operátornak" fordítják. Valójában (történelmi okokból) az orosz "operátor" kifejezés ugyanazt jelenti, mint az " utasítás " , amely megfelel az angol kijelentésnek [1] . A zavart fokozta, hogy a C nyelvben a hozzárendelés és a növelés/csökkentés egyszerre operátor és művelet.
Valójában egy művelet ugyanaz a függvény , csak speciális módon van megírva. Emiatt célszerű, ha tetszőleges típusokon ugyanúgy definiálhatunk műveleteket, mint a metódusokkal , így ugyanúgy dolgozhatunk velük, mint az elemi típusokkal. Ezt a funkciót " operátor túlterhelésnek " nevezik, és a legtöbb 4. és 5. generációs nyelven megtalálható . Az ilyen nyelveken a fordító valójában egy hívást helyettesít a megfelelő funkcióval, ahelyett, hogy műveletet hajtana végre.
A műveletek az elfogadott argumentumok számával vannak osztva:
Mivel a műveletek jelölésében hasonlóak az algebrai kifejezésekhez , ezekhez, akárcsak az utóbbiakhoz, 3 szintaktikai lehetőség van:
A bináris és hármas (3 operandusos) műveleteknél az esetek túlnyomó többségében infix jelölést használnak - azon egyszerű oknál fogva, hogy ez elfogadott a matematikában, és a legtöbb ember számára a legismertebb. Az unáris műveletekhez nincs infix jelölés, általában előtag jelölést használnak.
A műveletek általában a nyelvekről a kapcsolódó nyelvekre költöznek – például a C nyelvi műveletek megtalálhatók a C++ -ban , a Java -ban, a JavaScript -ben és sok másban.
Jel | Művelet folyamatban | Programozási nyelvek |
---|---|---|
a = bvagya := b | feladat | szinte minden |
Számtan | ||
a + b | érvek hozzáadása | szinte minden |
a - b | kivonás | szinte minden |
-a | jel változás | szinte minden |
a / b,a div b | osztály | szinte minden |
a % b,a mod b | részleg fennmaradó része (modulo divízió) | szinte minden |
a++ a-- |
növelés 1-gyel hozzárendeléssel ( növekmény ) csökkentés 1-gyel hozzárendeléssel (csökkentés) |
C , Java , PHP |
a ^ bvagy a ^^ bvagya ** b | hatványozás | BASIC , Fortran , Ruby , Python , Haskell (mind a 3) |
összerakós játékaik | ||
a & b, vagy a && b, vagya and b | kötőszó (logikai szorzás) | szinte minden |
a | b, vagy a || b, vagya or b | diszjunkció (logikai összeadás) | |
~a, vagy !a, vagynot a | inverzió (logikai negáció) | |
a = bvagya == b a <> bvagy a /= bvagya != b |
egyenlőség teszt egyenlőtlenségi teszt | |
a > b,a >= b a < b,a <= b |
nagyobb, mint, nagyobb vagy egyenlő kisebb, mint, kisebb vagy egyenlő | |
a ? b : c | hármas feltételes művelet (ha az a feltétel igaz, akkor az egész kifejezés egyenlő b -vel , ellenkező esetben c ) | C, C++, Java, PHP |
Húr | ||
a + bvagy a & bvagy a.b(PHP) vagy a..b(Lua) vagy a ++ b(Haskell) | összefűzés (egyesítés) | szinte minden |
Bitenként | ||
a & b, a és b (Pascal, Kotlin), a /\ b (Prolog), a .&. b (Haskell) | bitenkénti kötőszó | C / C++ , Java , C# , Ruby , Python , Pascal , Kotlin , Prolog , Haskell |
a | b, a vagy b (Pascal, Kotlin), a \/ b (Prolog), a .|. (Haskell) | Bitenkénti diszjunkció | |
~a, nem a (Pascal), inv a (Kotlin), \a (Prolog) | bitenkénti tagadás | 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)
|
Kis eltolás balra
|