Przeczytaj
Instrukcja warunkowa – powtórzenie
Instrukcja warunkowa spełnia rolę zwrotnicy — pozwala wprowadzić w programie rozgałęzienia, które odpowiadają różnym zdarzeniom w czasie działania aplikacji oraz odpowiednio na nie reagować.
To, jak program zachowa się po dotarciu do rozgałęzienia, zależy od tego, czy spełniony został przekazany warunek logiczny. Przykładowo, system obsługi kart płatniczych odmawia zrealizowania transakcji, gdy przekroczono dzienny limit wartości operacji, bądź jeśli na koncie brakuje pieniędzy. W przeciwnym przypadku karta jest obciążana.
Trudno wyobrazić sobie jakikolwiek złożony algorytm, w którym nie zastosowano instrukcji warunkowej. Oto przykłady:
przed uruchomieniem aplikacji system operacyjnysystem operacyjny musi sprawdzić, czy na dysku znajdują się wszystkie pliki niezbędne do jej działania; jeżeli ich nie ma, pojawia się komunikat o błędzie, a program nie startuje;
podczas zakładania skrzynki e‑mailowej specjalna aplikacja internetowaaplikacja internetowa porównuje identyfikator podany przez użytkownika z nazwami innych kont i odmawia rejestracji w przypadku pojawienia się dublera;
gdy pracujemy w systemie bankowości online, na bieżąco mierzony jest czas, który upłynął od momentu wykonania ostatniej operacji; jeżeli przekroczy on pewną wartość, następuje automatyczne zamknięcie sesji.
We wszystkich przedstawionych sytuacjach programista musi odwołać się do instrukcji warunkowej.
Wykrywanie próby dzielenia przez 0
Przygotujemy algorytm, który posłuży do skontrolowania poprawności liczb biorących udział w operacji dzielenia.
Zastanówmy się jednak, po co to w ogóle sprawdzać? Każdy wie, że dzielnik musi być różny od zera. Niestety, nie zawsze można to zagwarantować. Po pierwsze – i mniej ważne – użytkownik programu może celowo lub niechcący podać liczbę 0 jako dzielnik. O wiele częściej zdarza się coś innego: zerowa wartość dzielnika nie jest wpisywana przez człowieka, ale pojawia się jako efekt działania jakiegoś urządzenia – np. rozkalibrowanego czujnika wchodzącego w skład systemu kontrolnego w zakładzie przemysłowym.
Programista musi takie zdarzenia przewidzieć i przygotować się na nie. Właśnie dlatego trzeba sprawdzać, czy dane spełniają określone kryteria nawet w banalnych przypadkach.
Pisząc algorytm, rozpoczynamy od wczytania dwóch wartości: dzielna
oraz dzielnik
.
Znając już dane, przystępujemy do ich sprawdzenia (sprawdzenie poprawności danychsprawdzenie poprawności danych). Zmienna dzielna
może być dowolną liczbą, zatem ją pomijamy. W przypadku zmiennej dzielnik
należy sprawdzić, czy jej wartość różni się od zera. Używamy operatora !=
, który oznacza brak równości (chcemy się upewnić, że wartość zmiennej dzielnik
nie jest równa 0).
Jeśli warunek nie jest spełniony (czyli wartość zmiennej dzielnik
wynosi 0), wypisujemy komunikat o błędzie i kończymy działanie programu.
Gdy z kolei warunek jest spełniony (zmienna dzielnik
różni się od zera), zmiennej wynik
przypisujemy wartość ilorazu, wyświetlamy jej wartość na ekranie i kończymy działanie programu.
Logowanie w serwisie społecznościowym
Przeanalizujmy teraz inny proces, w którym nie obędzie się bez instrukcji warunkowej. Mowa o mechanizmie logowania, stosowanym w serwisach internetowych. Specjalna aplikacja odczytuje wówczas informacje przekazane przez użytkownika, a następnie sprawdza, czy jest on właścicielem konta.
Informacje (login i hasło) wprowadzone podczas zakładania konta (rejestracji) przechowuje się w bazie danych. W trakcie logowania zapamiętany identyfikator wraz z hasłem są pobierane z bazy i porównywane z podanymi przez użytkownika informacjami. Jeśli dane są identyczne, użytkownik otrzymuje dostęp do konta. W przeciwnym wypadku pojawia się komunikat o błędzie.
Hasła w bazie danych, ze względów bezpieczeństwa, nie są przechowywane w formie otwartego tekstu. Przed zapisem hasła do bazy zostaje na nim wywołana funkcja haszująca. Funkcja ta, dla tego samego ciągu wejściowego, np. tekstu, zwraca dokładnie tę samą wartość, która następnie zostaje zapisana w bazie. W celu sprawdzenia poprawności hasła wykonujemy na nim tę samą funkcję haszującą, a następnie porównujemy otrzymaną wartość z wartością przechowywaną w bazie danych. System wykonany w taki sposób jest bezpieczny, ponieważ sama znajomość funkcji haszującej oraz zakodowanego hasła nie pozwala na jego odszyfrowanie.
Proces logowania zaczynamy od wczytania informacji przekazanych przez użytkownika do dwóch zmiennych: login
oraz haslo
. W zwykłych warunkach należałoby przeprowadzić sprawdzenie poprawności danych. Dla uproszczenia załóżmy, że ją przeprowadziliśmy.
Najpierw sprawdzimy, czy dany login jest w bazie. Robimy to za pomocą operatora ==
, który oznacza równość wyrażeń znajdujących się po obu stronach (sprawdzamy, czy podane wartości są identyczne).
Jeżeli identyfikator nie jest poprawny (login nie znajduje się w bazie), zostaje wyświetlony komunikat o błędzie, a program kończy działanie. W przeciwnym wypadku, gdy login
okaże się zgodny z zapamiętanym, możemy rozpocząć procedurę sprawdzenia hasła.
Odczytujemy powiązane z nim hasło i porównujemy z hasłem podanym przez użytkownika.
Jeśli hasło nie jest poprawne, pojawia się komunikat o błędzie, a program kończy pracę. Gdy natomiast zgadza się z hasłem przechowywanym w bazie danych, użytkownik otrzymuje dostęp do serwisu, następuje poprawne logowanie.
Słownik
program uruchamiany z poziomu przeglądarki WWW (interfejs serwisu Facebook, system bankowości online itp.)
sprawdzanie, czy dane spełniają kryteria niezbędne do działania programu (przykładowo, czy mają odpowiedni format lub wartość)
oprogramowanie zarządzające zasobami komputera (procesorem, pamięcią operacyjną, pamięcią masową itd.) oraz uruchamianymi aplikacjami; odpowiada także za interakcję z użytkownikiem