Operator arytmetyczny

Operator arytmetyczny w programowaniuoperator dostępny w określonym języku programowania (a także w innych językach komputerowych oraz w programach komputerowych), który działając na podanych argumentach reprezentujących wartości liczbowe, w wyniku zwraca również wyznaczoną wartość liczbową, realizując podstawowe operacje arytmetyki.

To jakie operatory arytmetyczne są dostępne w konkretnym języku programowania zależy od jego składni, a to jakie są zasady ich stosowania, w tym priorytet tych operatorów i kolejność opracowywania argumentów, od przyjętej przez autorów języka lub implementacji konwencji. Zróżnicowany jest również sposób zapisu operatorów arytmetycznych w poszczególnych językach: stosuje się zapis, bądź za pomocą symboli (znaku lub znaków nie będących literami), w konwencji zbliżonej do matematycznej, bądź zdecydowanie rzadziej w postaci słów kluczowych. Stosowane są operatory arytmetyczne jednoargumentowe – operator zmiany znaku i rzadziej zachowania znaku, oraz dwuargumentowe – np. dodawania, odejmowania, mnożenia, dzielenia i inne.

Dostępne operatory arytmetyczne

edytuj

Operatory arytmetyczne udostępnione w językach komputerowych realizują następujące operacje arytmetyczne:

Zapis i stosowanie

edytuj

Operatory arytmetyczne stosuje się w wyrażeniach, w celu wykonania określonych obliczeń. Zapisuje się je kodzie źródłowym za pomocą symboli określonych przez autorów konkretnego języka komputerowego lub jego implementacji. Symbole operatorów arytmetycznych w znacznej mierze przypominają symbole stosowane w matematyce, lecz w dostosowaniu do systemu komputerowego i stosowanego w nim zestawu znaków, a także znaków dostępnych bezpośrednio z konsoli operatora (np. klawiatury). Języki opracowane z uwzględnieniem powyższych uwag zapewniają użytkownikowi ułatwienie w czytaniu i rozumieniu zapisanych wyrażeń przy równoczesnym ułatwieniu w ich wprowadzaniu oraz użytkowaniu całego systemu. W starszych językach mogą być używanie symbole obecnie niedostępne z poziomu współcześnie stosowanych klawiatur, co stanowi zaszłość tych języków. Pewne symbole stosowane są powszechnie. Przykładem mogą być symbole dodawania i odejmowania, dla których stosuje się symbole stosowane także w matematyce: plus „+” i minus „-”. Dla innych operacji zapis może być zróżnicowany, np. dla dzielenia liczb całkowitych stosuje się symbole: „/” „\”, „div”; dla wyznaczenia reszty z takiego dzielenia stosuje się symbole: „%”, „mod”, i inne.

Istotnym zagadnieniem przy opracowywaniu zestawu operatorów arytmetycznych dla języka lub programu komputerowego jest optymalne określenie łączności i priorytetów tych operatorów, zarówno względem siebie, jak i względem innych operatorów, takich jak operatory logiczne, relacji, bitowe i inne. Zagadnienia te decydują bowiem o kolejności wykonywania działań. Dominują rozwiązania zgodne z zasadami wywodzącymi się z matematyki (np. wyższy priorytet operatorów mnożenia i dzielenia, w stosunku do dodawania i odejmowania). Istnieją taż takie rozwiązania, dla których zmieniono te zasady: np. w języku APL wszystkie operatory mają jednakowy priorytet, a więc wykonywane są w kolejności ich wystąpienia w wyrażeniu[1][2]. Jednak według literatury przedmiotu takie podejście prowadzić może do większej ilości błędów i utrudnia korzystanie z systemu, którego działanie niezgodne jest z przyzwyczajeniami i intuicją użytkowników[2]. Zmiana kolejności obliczeń jest w językach lub programach komputerowych możliwa za pomocą nawiasów. Osobną grupę stanowią języki lub programy komputerowe, w których zagadnienia te nie występują, bowiem stosowany jest w nich, zamiast zapisu infiksowego wyrażeń, zapis w odwrotnej notacji polskiej, np. język Forth[3][4][5][6].

Operatory arytmetyczne w językach komputerowych

edytuj
Operatory arytmetyczne w językach komputerowych
język komputerowy jednoargumentowe dwuargumentowe wieloarg.
znak inkr/dekr inne dodawanie odejmowanie mnożenie dzielenie dzielenie l. całk. modulo potęg. inne
zmiana zach. inkr. dekr.
BCPL[7] - +     ABS, #ABS + - * /[a] /[a] MOD (REM)   #+, #-, #*, #/  
C[8][9][10][11], C++[11] - + ++[b] --[b]   + - * /[a] /[a] %      
Cobol (OpenCOBOL)[12] - +       +
(ADD[c])
-
(SUBTRACT[c])
*
(MULTIPLY[c])
/
(DIVIDE[c])
    **    
D[13][14] - + ++[b] --[b]   + - * /[a] /[a] %      
Forth[d][3][4][5][6] NEGATE   1+ 1- np. 2+, 2-, ABS + - *   / MOD   np. /MOD np. */, */MOD
Fortran 90/95[15] - +       + - * /     **    
JavaScript[16][17] - + ++[b] --[b]   + - * /[a] /[a] %      
MCPL[18] - + ++[b] --[b] +++, ---[b], ABS + - * /[a] /[a] MOD      
Pascal[19][20] - +       + - * / div mod      
Perl[21] - + ++[b] --[b]   + - * /[a] /[a] % **    
Visual Basic[22]
VBA[23]
- +       + - * / \ mod ^    
  1. a b c d e f g h i j k l W języku tym dzielenie na liczbach całkowitych dokonywane jest takim samym operatorem jak dzielenie liczb zmiennoprzecinkowych (lub stałopozycyjnych). To jaki typ operacji (rodzaj dzielenia) zostanie wykonany decyduje typ argumentów operatora oraz wbudowany aparat konwersji automatycznych; typowym rozwiązaniem jest zasada, że jeżeli obie liczby są typu całkowitoliczbowego, to dokonywane jest właśnie tego typu dzielenie, a jeżeli chociaż jeden z argumentów jest typu zmiennoprzecinkowego (lub stałopozycyjnego), to dokonywana jest niejawna, automatyczna konwersja typu argumentu całkowitoliczbowego na odpowiedni typ zmiennoprzecinkowy (lub stałopozycyjny) i tym samym dokonywane jest dzielenie na takich właśnie liczbach.
  2. a b c d e f g h i j k Dostępne są operatory: zarówno postfiksowe, jak i prefiksowe, tj. postinkrementacja, preinkrementacja, postdekrementacja, predekrementacja.
  3. a b c d Ta forma wykonania określonej operacji arytmetycznej jest instrukcją.
  4. Charakterystyczne cechy języka Forth wyróżniają zastosowane w nim rozwiązania, także w odniesieniu do operatorów arytmetycznych. Dotyczy to między innymi poniższych zagadnień:
    • Rozszerzalności języka: jedną z podstawowych idei języka FORTH jest jego rozszerzalność, polegającą na tym, że w języku tym można definiować nowe operatory, w tym operatory arytmetyczne. Zdefiniowane operatory poddawane są natychmiastowej kompilacji, umieszczane we wskazanym słowniku i dostępne tak samo jak standardowe operatory.
    • Operowania na słowie: w języku Forth operuje się na słowie, reprezentującym w operacjach arytmetycznych liczby całkowite, dostępne są też wybrane operatory dla słowa podwójnego, również interpretowanego dla operatorów arytmetycznych jako liczba całkowita. Istnieją także rozszerzone implementacje języka uwzględniające obliczenia na liczbach zmiennoprzecinkowych.

Przypisy

edytuj
  1. Andrzej Jerzy Krzysztof Plewic: Język programowania APL/360. Warszawa: Wydawnictwa Naukowo-Techniczne, 1977, seria: Biblioteka informatyki. (pol.).
  2. a b Michael Marcotty, Henry Ledgord, tłumaczenie: Krystyna Jerzykiewicz: W kręgu języków programowania. Warszawa: Wydawnictwa Naukowo-Techniczne, 1980, seria: Biblioteka Inżynierii Oprogramowania. ISBN 83-204-1342-7. (pol.).
  3. a b Jan Bielecki: Język FORTH. Warszawa: Wydawnictwa Naukowo-Techniczne, 1988, seria: Mikrokomputery. ISBN 83-204-0930-6. (pol.).
  4. a b Jan Ruszczyc: Poznajemy FORTH. Warszawa: SOETO, 1987, seria: Informatyka mikrokomputerowa. (pol.).
  5. a b FORTH Standards Team: FORTH – 79. mywebspace.wisc.edu; FORTH Interest Group, 1980. s. 50. [dostęp 2011-08-05]. [zarchiwizowane z tego adresu (2011-07-13)]. (ang.).
  6. a b 12. REQUIRED WORD SET. [w:] FORTH-83 STANDARD [on-line]. forth.sourceforge.net, 1983. [dostęp 2011-08-05]. (ang.).
  7. Martin Richards: The BCPL Cintsys and Cintpos User Guide. Cambridge: Computer Laboratory University of Cambridge, January 28, 2011. [dostęp 2011-01-31]. (ang.).
  8. Brian W. Kernighan, Dennis M. Ritche: Język C. Warszawa: Wydawnictwa Naukowo-Techniczne, 1988, seria: Biblioteka Inżynierii Oprogramowania. ISBN 83-204-1067-3. (pol.).
  9. Jan Bielecki: Turbo C z grafiką na IBM PC. Warszawa: Wydawnictwa Naukowo-Techniczne, 1990, seria: Mikrokomputery. ISBN 83-204-1101-7. (pol.).
  10. C Reference Card (ANSI). www.digilife.be. s. 2. [dostęp 2011-08-08]. [zarchiwizowane z tego adresu (2011-08-07)]. (ang.).
  11. a b Jan Bielecki: Od C do C++, programowanie obiektowe w języku C. Warszawa: Wydawnictwa Naukowo-Techniczne, 1990. ISBN 83-204-1332-X. (pol.).
  12. Gary Cutler: OpenCOBOL 1.1 [06FEB2009 Version Programmer’s Guide]. /opencobol.add1tocobol.com, 2010-09-17. s. 259. [dostęp 2011-08-08]. (ang.).
  13. Expressions – D Programming Language. www.digitalmars.com – DIGITAL MARS. [dostęp 2011-09-29]. (ang.).
  14. Expressions. [w:] Language Reference – D Programming Language [on-line]. www.d-programming-language.org. [dostęp 2011-09-29]. (ang.).
  15. WORKING DRAFT J3/97-007R2. j3-fortran.org, October 21, 1997. s. 376. [dostęp 2011-08-04]. [zarchiwizowane z tego adresu (2011-08-18)]. (ang.).
  16. Wojciech Romowicz: HTML i JavaScript. HELION, 1998. ISBN 83-7197-046-3. (pol.).
  17. Kurs języka JavaScript. Poradnik Webmastera. [dostęp 2011-09-29]. [zarchiwizowane z tego adresu (2011-09-27)]. (pol.).
  18. Martin Richards: The MCPL Programming Manual and User Guide. Cambridge: Computer Laboratory University of Cambridge, May 23, 2007. [dostęp 2011-01-31]. (ang.).
  19. Andrzej Marciniak: Borland Pascal 7.0. Poznań: Nakom, 1994, seria: Biblioteka Użytkownika Mikrokomputerów. ISBN 83-85060-53-7. ISSN 0867-6011. (pol.).
  20. Michał Iglewski, Jan Madey, Stanisław Matwin: Pascal. Język wzorcowy – Pascal 360. Wyd. trzecie – zmienione. Warszawa: Wydawnictwa Naukowo-Techniczne, 1984, seria: Biblioteka Inżynierii Oprogramowania. ISBN 83-85060-53-7. ISSN 0867-6011. (pol.).
  21. Operators. [w:] Perl 5 version 14.1 documentation – Language reference [on-line]. perldoc.perl.org. [dostęp 2011-09-29]. (ang.).
  22. Reference (Visual Basic) – Visual Studio 2010. msdn.microsoft.com. [dostęp 2011-09-28]. (ang.).
  23. John Walkenbach: Excel 2003 PL. Programowanie w VBA. HELION, 2004. ISBN 837361-504-0. (pol.).

Bibliografia

edytuj