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 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 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.

RTSkOKj9TK0AO
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.

Znając już dane, przystępujemy do ich sprawdzenia (sprawdzenie poprawności danychsprawdzenie 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).

Rbv6rWECUeSsX
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.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.

RmkzL8B8QWbyX
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.

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.

RqK4GRHzIl29r
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.

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.

Ciekawostka

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.

Rg0Tb6ZLgRMt8
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.

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).

RqLpqmnMGYweI
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.

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.

R18mF5OaPM3OL
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.

Odczytujemy powiązane z nim hasło i porównujemy z hasłem podanym przez użytkownika.

RyIM5vcC8vunz
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.

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.

RumzhNAzimRdo
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.

Słownik

aplikacja internetowa
aplikacja internetowa

program uruchamiany z poziomu przeglądarki WWW (interfejs serwisu Facebook, system bankowości online itp.)

sprawdzenie poprawności danych
sprawdzenie poprawności danych

sprawdzanie, czy dane spełniają kryteria niezbędne do działania programu (przykładowo, czy mają odpowiedni format lub wartość)

system operacyjny
system operacyjny

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