Programowanie w języku Delphi » Operacje liczbowe

Obliczenia

  • 2012-02-26 10:59
  • 0 komentarzy
  • 10726 odsłon
  • Oceń ten tekst jako pierwszy
Rodzaje obliczeń dokonywanych w Delphi na danych o typach liczbowych można podzielić na kilka kategorii, które są przedstawione poniżej. Skrócony opis wszystkich operatorów języka, nie tylko do operacji liczbowych, można znaleźć w poświęconym im opisie.

Operacje przypisania


Służą do określenia wartości danej. Poza bezpośrednim wpisem wartości do pamięci zajmowanej przez zmienną z wykorzystaniem jej adresu, standardową metodą przypisania jest użycie stosownego operatora, jak pokazano w przykładzie:

X := Y;


Działanie to należy interpretować jako "Y staje się wartością dla X" lub "X przybiera wartość Y", w odróżnieniu od "X jest równe Y". Ten drugi sposób interpretacji jest zarezerwowany dla logicznego operatora porównania, wyrażonego samym znakiem równości (bez dwukropka użytego w przypisaniu).

Operacje logiczne: bitowe


Służą do operowania daną jako zbiorem bitów. Każdy z bitów jest traktowany jako niezależna jednostka, a jego zmiana nie wpływa na inne bity danej.

Symbol operacji Krótki opis Przykład
not Bitowa negacja x:=not $FFFFFF00; {Wynik: x=255}
and Bitowy iloczyn logiczny x:=3 and 6; {Wynik: x=2}
or Bitowa suma logiczna x:=3 or 6; {Wynik: x=7}
xor Bitowa alternatywa wykluczająca x:=3 xor 6; {Wynik: x=5}
shl Bitowe przesunięcie w lewo x:=3 shl 2; {Wynik: x=12}
shr Bitowe przesunięcie w prawo x:=12 shr 2; {Wynik: x=3}


Operacje logiczne: porównania


Służą do sprawdzania, czy dany warunek jest spełniony, czy też nie. Są one specjalnym rodzajem operacji logicznych, gdyż operują na danych, ale zwracają wartości logiczne. Dozwolone działania porównań przedstawia poniższa tabela:

Symbol operacji Symbol klasyczny Krótki opis Przykład
= = Równe B:=(1=1); {TRUE}
? Różne B:=(1<-1); {TRUE}
< < Mniejsze B:=(-1<1); {TRUE}
<= ? Mniejsze lub równe B:=(-1<=1); {TRUE}
> > Większe B:=(1>-1); {TRUE}
>= ? Większe lub równe B:=(1>=-1); {TRUE}


Operacje artymetyczne: proste


Służą do operowania daną jako określoną wartością, za pomocą operatorów języka.

Symbol operacji Krótki opis Przykład
+ Dodawanie x:=1+2.3; {Wynik: x=3.3}
- Odejmowanie x:=1-2.3; {Wynik: x=-1.3}
* Mnożenie x:=2*3.4; {Wynik: x=6.8}
div Dzielenie całkowitoliczbowe x:=5 div 3; {Wynik: x=1}
mod Reszta z dzielenia całkowitoliczbowego x:=5 mod 3; {Wynik: x=2}
/ Dzielenie x:=7 / 2; {Wynik: x=3.5}


Operacje artymetyczne: funkcyjne


Służą do operowania daną jako określoną wartością, za pomocą funkcji zaimplementowanych w bibliotekach. Podstawowe operacje są umieszczone poniżej:

Funkcja Krótki opis Przykład zapisu
Inc Inkrementacja (zwiększenie o 1 albo o N) Inc(X); Inc(X,N);
Dec Dekrementacja (zmniejszenie o 1 albo o N) Dec(X); Dec(X,N);
Abs Wartość bezwzględna Abs(X);
Int Część całkowita liczby rzeczywistej Int(X);
Frac Część ułamkowa liczby rzeczywistej Frac(X);
Sqr Potęga drugiego stopnia Sqr(X);
Sqrt Pierwiastkowanie drugiego stopnia Sqrt(X);
Power Potęga dowolnego stopnia rzeczywistego Power(X, Y);
Ln Logarytm naturalny Ln(X);
LnXP1 Logarytm naturalny dla X+1 (szybsza niż dodawanie osobno) LnXP1(X);
Log2 Logarytm dwójkowy Log2(X);
Log10 Logarytm dziesiętny Log10(X);
LogN Logarytm o wybranej podstawie B LogN(B, X);
Exp Liczba e podniesiona do określonej potęgi Exp(X);
Ldexp Liczba X*2P Ldexp(X,P);
Hi Starszy bajt 16 bitowego słowa Hi(X);
Lo Młodszy bajt 16 bitowego słowa Lo(X);
Sign Wartość zależna od znaku argumentu (-1 dla X<0, 0 dla X=0, 1 dla X>0) Sign(X);
Round Zaokrąglenie matematyczne Round(X);
Trunc Przekształcenie liczby rzeczywistej na całkowitą Trunc(X);
Floor Zaokrąglenie w dół Floor(X);
Ceil Zaokrąglenie w górę Ceil(X);
Max Z pośród dwóch podanych liczb zwraca większą Max(X, Y);
Min Z pośród dwóch podanych liczb zwraca mniejszą Min(X, Y);
MaxValue Z pośród tablicy liczb zwraca największą MaxValue(array);
MinValue Z pośród tablicy liczb zwraca najmniejszą MinValue(array);
MaxIntValue Z pośród tablicy całkowitych liczb zwraca największą MaxIntValue(array);
MinIntValue Z pośród tablicy całkowitych liczb zwraca najmniejszą MinIntValue(array);


Do operacji funkcyjnych zaliczają się również wszystkie dostępne w Delphi operacje działań trygonometrycznych.

Operacje złożone


Służą do wyrażania wartości za pomocą wielu działań dokonywanych na wielu danych. Przykłady poniżej:

var 
  A, B, C : Integer;
  X, Y, Z : Extended;
  S : Boolean;
begin
  A := 10;
  B := -20;
  C := 30;
 
  X := 1.3;
  Y := -2.4;
  Z := 3.5;
 
  A := A + B * C;     {A = -590}
  B := Round(X * Y);     {B = -3}
  C := Floor(Sign(X) * Sqrt(Z));     {C = 1}
 
  X := A / Z - B / Y;     {X ? -169,821}
  Y := Sqr(X) * Sin(X) * C;     {Y ? -5033,237}
  Z := Exp(A + B) * (not B) / X;     {Z ? 6,984}
 
  S := not ((A and 0) <> (B and 1));     {S = FALSE}
end;


Przy definiowaniu takich obliczeń należy pamiętać o priorytetach działań obowiązujących w Delphi. Przedstawione są one w poniższej tabeli:

Priorytet Operacje
Zerowy (najwyższy) Operacje funkcyjne
Dodatkowy Nawiasy łączące działania: ( )
Pierwszy @, not
Drugi *, /, div, mod, and, shl, shr, as
Trzeci +, -, or, xor
Czwarty (najniższy) =, <, <, >, <=, >=, in, is


Delphi posiada specjalną funkcję Power do obliczania potęg. Przy jej wykorzystaniu można też wyliczyć pierwiastki dowolnego stopnia, korzystając z zależności, że pierwiastek z X stopnia Y, to X do potęgi 1/Y. Do takiego wyliczenia można wykorzystać również poniższy kod - proste złożenia funkcji:

function Potega(X, Y:Extended):Extended;
begin
  Result := Exp(ln(X)*Y);
end;
 
function Pierwiastek(X, Y: Extended): Extended;
begin
  Result := Exp(ln(X)/Y);
end;


W rzeczywistości funkcja Power dokonuje właśnie takiego wyliczenia, uprzednio sprawdzając jeszcze dodatkowe warunki.

Operacje mnogościowe zbiorów


Są szczególnym przypadkiem operacji liczbowych, w których daną może być cały zbiór liczb, a nie tylko pojedyncza wartość. Szczegółowy opis tych operacji można znaleźć przy opisie słowa kluczowego Set, służącego do deklarowania zbioru.

Operacje konwersji


Służą do zamiany jednego systemu miar na inny oraz konwersji typu liczbowego na inny. Podstawowe operacje konwersji miar można znaleźć przy opisie operacji trygonometrycznych.
  1. Kafelki
  2. Lista

Min

MinValue

MaxValue

MaxIntValue

MinIntValue

Floor

Power

Mean

Ln

Exp

LnXP1

Log2

Log10

LogN

Int

Frac

Sum

Max

Inc

Dec