Aplikacja, którą tworzymy w ramach tego kursu ma być aplikacją bankową dla naszego kolegi Jacka. Skoro aplikacja bankowa to i pieniądze. A jeżeli pieniądze to i liczenie. Tak więc dzisiaj powiemy sobie co nieco o obliczeniach w języku C# po to, żeby dać Jackowi możliwość mnożenia pieniędzy.
Ta część będzie bardziej teoretyczna. Tzn. kod jak najbardziej się pojawia jednak nie demonstruję go w odniesieniu do tego co teraz robimy w projekcie. Zachęcam jednak to samodzielnego próbowania na osobnej aplikacji. My zaś tę wiedzę wykorzystamy w późniejszym czasie kiedy całość zacznie nabierać poważnych kształtów.
Nie będziemy też tutaj omawiać wszystkich dostępnych operatorów. Jedynie te, których się używa w miarę często i na pewno Ci się przydadzą.
W części poświęconej zmiennym dowiedzieliśmy się, że istnieją w C# m.in. typy liczbowe. Bo przecież spora część programów opiera się o wszelkiego rodzaju liczby. A skoro są liczby to i jakieś operacje są na nich na pewno możliwe. I tak jest faktycznie.
W języku C#, tak jak w większości języków programowania, mamy do dyspozycji wbudowane podstawowe operacje arytmetyczne. Ponieważ wszystkie obliczenia prędzej czy później sprowadzają się do takich prostych operacji. I to właśnie takie działania potrafi wykonać procesor naszego komputera.
To czym się tutaj teraz zajmiemy to są operatory arytmetyczne. Chodzi np. o dodawanie, mnożenie itd. Nie przedłużając – poniżej masz listę najpotrzebniejszych operatorów, które powinieneś pamiętać.
W przykładach używane litery mogą być zarówno zmiennymi jak i wpisanymi na sztywno liczbami, albo funkcjami, które zwracają jakąś liczbę. Pokazane operacje możemy sobie wyobrazić jako funkcje, które zwracają wartość w postaci wyniku obliczeń, więc taką wartość możemy potem gdzieś przypisać czy użyć jako argument funkcji:
Operatory arytmetyczne zachowują się podobnie jak te używane na matematyce, tzn. zachowują kolejność wykonywania działań. Bo jeszcze nie wspomniałem, ale operacje na liczbach możemy składać w dłuższe wyrażenia gdzie pojawia się więcej operatorów.
Przykładowo możemy zapisać działanie jako a + b * c – d bez konieczności rozbijania go na osobne linijki, w których wykonywalibyśmy pojedyncze działania. I w takim przypadku kolejność wykonywania działać zostanie zachowana, tzn. najpierw wykona się mnożenie, a dopiero potem dodawanie i odejmowanie.
Działania równoważne, czyli chociażby dodawanie i odejmowanie, albo mnożenie i dzielenie wykonują się od lewej do prawej.Ale tak jak w matematyce możemy też tutaj zmienić ich kolejność dodając nawiasy.
Tak więc chcąc aby najpierw wykonały się działania dodawania i odejmowania, a dopiero ich wyniki zostały pomnożone skorzystamy z zapisu (a + b) * (c – d) .
Poza tymi oczywistymi operatorami, które znamy też z matematyki, mamy w języku C# dostępne też operatory, które łączą w sobie operację matematyczną i przypisanie. Przydają się one w takich przypadkach jak zwiększenie jakieś wartości o podają liczbę.
Poniżej ich lista:
Fakt, że wykonujemy tutaj też przypisanie powoduje, że nasze a musi być w tym wypadku zmienną, do której możemy coś przypisać. Tak więc nie ma możliwości zapisu 5 += 3 bo nie możemy zmienić wartości liczby 5 .
Dodatkowo w przypadku operacji zwiększania lub zmniejszania o 1 trzeba zapamiętać kolejność działań jeżeli używamy tego operatora np. dla argumentu funkcji.
W przypadku a++ i a– najpierw zostanie przekazana wartość, a dopiero potem wartość zmiennej się zmieni. Dlatego w tym kodzie:
int a = 2; Calc(a++); Console.WriteLine(a);
Funkcja calc() otrzyma wartość 2, a potem na ekranie zostanie wypisana wartość 3. Dzieje się tak, ponieważ najpierw zwracana jest wartość zmiennej, a dopiero po tym wykonywane jest zwiększenie o 1.
Jeżeli byśmy chcieli odwrócić tą kolejność to możemy skorzystać z operatora preinkrementacji/predekrementacji. Wtedy zapis zmienia się z a++ na ++a . I teraz zmieniając nasz kod:
int a = 2; Calc(++a); Console.WriteLine(a);
Zarówno funkcja calc() dostanie wartość 3 jak i wartość 3 zostanie wyświetlona na ekranie. Bo zwiększenie o 1 wykona się wcześniej niż przekazanie wartości do funkcji calc() .
Większość działań na liczbach w języku C# sprowadza się do przedstawionych powyżej. Na pewno z nich skorzystamy w naszej aplikacji bankowej. Dzięki temu klienci Jacka będą mogli wykonywać wszelkie operacje finansowe na swoich kontach.
Poprzednia lekcja – zrobisz coś dla mnie?
Następna lekcja – genetyka klas
Nie rozumiałem wyjaśnienia w operatorach a % b i chwilę mi zajęło aby do tego dojść, ale powinno być np. tak:
a % b
Jest to wartość po przecinku wyniku działania a / b pomnożona przez dzielnik. Lub:
Różnica ilorazu działania a / b oraz liczby całkowitej tego ilorazu, pomnożona przez wartość dzielnika.
Ponadto wynik jest zaokrąglony do liczby całkowitej.
Chwilę mi zajęło aby do tego dojść, ponieważ nie rozumiałem wyjaśnienia. Jeżeli źle do tego doszedłem, proszę mnie poprawić.
Dodatkowo bym prosił o przykład wykorzystania tego %. Dopiero się uczę i nic mi do głowy nie przychodzi.
Nie mówiłem tutaj przy wyjaśnieniu o wartości „po przecinku” bo przy reszcie z dzielenia zawsze operujemy na liczbach całkowitych i uznałem, że to by wprowadziło zamieszanie, z resztą w szkole reszta z dzielenia jest omawiana właśnie kiedy jeszcze nie zna się liczb „z przecinkiem”.
Zastosowania modulo są różne, ale reszta z dzielenia pozwala np. sprawdzić czy liczby się przez siebie dzielą. Jak a % b jest równe 0 to znaczy, że liczba a jest podzielna przez b.
Przypomnij sobie ułamki zwykłe to ci pomoże to zrozumieć. To materiał ze szkoły podstawowej.
Przechodzę Pana kurs i do tego momentu wszystko działało zgodnie z opisim.
Nie mogę zastosować u sienie na Visual Studio 2019 funkcji Calc().
Zwracany jest błąd:
Error CS0103 The name 'Calc’ does not exist in the current context
Taki kod działa
int a = 2;
Console.WriteLine(a + 1);
Console.ReadKey();
Kod z funkcją Calc(), mam problem
Gdzie popełniam bład ?
calc() w tym przypadku nie jest istniejącą funkcją, jedynie przykładem użycia „jakiejś” funkcji.