Misja kalkulator podejście I
Przeglądając w sieci blogi i fora, na których osoby uczące się java scriptu pytają: „Od czego zacząć?” najczęściej natykałam się na odpowiedź: napisz coś własnego, jakiś kalkulator albo listę zadań. Pomyślałam więc: ok, napiszę ten kalkulator. Skoro polecają go początkującym to znaczy, że nie nie jest to trudne. Ojjj… jak ja się myliłam.
Pierwsza misja kalkulator zakończyła się niepowodzeniem, choć początek zapowiadał się obiecująco. Po sprawieniu, że w odpowiednim miejscu pojawiają się odpowiednie liczby, które wcześniej wybierze użytkownik kalkulatora (co przy minimalnej wiedzy, jaką na temat java script posiadałam w tamtych dniach zajęło mi kilka godzin), czyli prościej mówiąc – po sprawieniu, że kiedy kliknę na kalkulatorze 12 to w okienku wyniku pojawi się 12 a nie 2, które właśnie skasowało jedynkę, przyszedł czas na „zaprogramowanie” działań matematycznych. Po kilkuminutowych poszukiwaniach w internetach wszystkie działania matematyczne działały poprawnie, a ja – dumna z siebie uśmiechałam się szeroko i dziwiłam jednocześnie, że całość zawarła się w 3 linijkach kodu. Radość jednak nie trwała długo, bo po przejściu pierwszej fali euforii zaczęłam czytać nieco więcej o użytej funkcji eval() i okazało się, że jej zastosowanie może być po prostu niebezpieczne.
Ps. Dobrze, że nastronie napisali to wielką czcionką, żeby czasem nie przegapić tej informacji 😉
No i co? Napiszę brzydko: no i dupa… kolejne próby napisania działań matematycznych nie powiodły się, więc zarzuciłam kontynuowanie misji. Aż do wczoraj.
Misja kalkulator podejście II
Drugie podejście miało miejsce po kilku tygodniach od nieudanego pierwszego podejścia. W tym czasie skrupulatnie wykonywałam ćwiczenia z kursu js: dział super podstawy (yeah! coś dla mnie). Dodatkowo słuchałam rad męża, który uczył mnie, hmmm… logicznego myślenia i rysowania schematów blokowych. Okazało się (niestety), że moje logiczne myślenie nie jest takie logiczne (znaczy nielogiczne jest) i nie sprawdza się przy pisaniu kodu, bo:
– wpisuję kod w złym miejscu (bo powinien znajdować się przed lub za innym kodem) i przez to całość nie działa poprawnie albo nie działa w ogóle.
– mieszają mi się zmienne globalne z lokalnymi i używam ich nieprawidłowo.
– „logika jest zjebana” – to cytat mojego męża oglądającego mój kod.
Niemniej jednak, po 6 godzinach (z małymi przerwami na śniadanie i sprzątanie mieszkania) udało mi się stworzyć prawie działający kalkulator. Prawie działający, bo jednak nie do końca działa poprawnie (i teraz uwaga – sama nie do końca rozumiem dlaczego tak jest, ale podobno komputer ma problem z dokładnym zapisaniem niektórych liczb zmiennoprzecinkowych w postaci binarnej i zapisuje je tylko w przybliżeniu, np. 0,1 zapisze jako 0.10000000149011612, a 0,2 zapisze jako 0.20000000298023224. W ten sposób przy dodawaniu bardzo małych albo bardzo dużych liczb powstają rozbieżności w działaniach matematycznych, np. 0,1 + 0,2 nie równa się 0,3, tylko 0.30000000000000004 itd. Można by tą liczbę oczywiście zaokrąglić, tyle że nie wiem, do ilu miejsc po przecinku powinno się zaokrąglać liczby w kalkulatorze? I czy w ogóle się powinno??). Więcej na temat liczb zmiennoprzecinkowych można poczytać tu: www.samouczekprogramisty.pl
Na dzień dzisiejszy udało mi się stworzyć wersję kalkulatora z dwoma okienkami wyniku i działający po przyciśnięciu przycisku równości. Do dopracowania zostały trzy rzeczy:
– zmniejszenie ilości okienek do jednego,
– wykonywanie działań nie tylko po przyciśnięciu przycisku równości, ale również po przyciśnięciu przycisków z działaniami: + – * / ,
– usunięcie 0, które pojawia się przed wpisywaną cyfrą w dolnym okienku po wyzerowaniu kalkulatora przyciskiem AC.
Pomimo, że muszę jeszcze nad kalkulatorem popracować, jestem dumna z tego, co udało mi się stworzyć, bo zrobiłam to samodzielnie, bez używania czyiś kodów znalezionych w internecie. Co pomyślałam, to napisałam i…. prawie działa 😛
Edit: 9.05.2018
Dziś usprawniłam kalkulator. Oprócz działań na liczbach zmiennoprzecinkowych działa całkiem dobrze 🙂 Jak na początkującą osobę sądzę, że wyszło mi nieźle, choć kilka rzeczy trzeba dopracować. Muszę też zoptymalizować kod, bo teraz jest zbyt długi i miejscami powtarza się. Jednak to dlatego, że w pierwszej kolejności skupiłam się na tym, by wszystko działało, a teraz będę usprawniać moje dzieło 😉
Poniżej link do dwóch wersji kalkulatora – tej z 8 maja i poprawionej, z 9 maja 2018 🙂
Kalkulator 9 maja – działająca wersja
Kod kalkulatora można zobaczyć tu: kalkulator