Instrukcja match / case dla zaawansowanych
Instrukcja match/case - wkraczamy na wyższy poziom
Instrukcja match/case pozwala na zdefiniowanie zmiennych lokalnych, które będą dopasowywane do argumentu. Do tych zmiennych lokalnych możemy się odwołać w zasięgu pojedynczej klauzuli case. Co więcej, możemy doprecyzować, kiedy ma się do tych zmiennych wpasować, stosując polecenie if.
Przeanalizujmy następujący program:
Funkcja wypisz_informacje przyjmuje trzy parametry: punkt, dziedzina_x, dziedzina_y. Dwa ostatnie mają podane wartości domyślne. Jeśli przy wywoływaniu funkcji do argumentów nie zostaną przekazane nowe wartości, funkcja zostanie wywołana z wartościami domyślnymi.
Widać to przy wywołaniach funkcji – funkcja wypisz_informacje wywoływana jest z jednym argumentem (dwa pozostałe mają przypisane wartości domyślne).
Wartości przekazane do funkcji są krotkami.
W programie definiujemy pewną dziedzinę, która ograniczona jest podanymi wartościami. Zwizualizujmy ją.

Moglibyśmy zdefiniować dwa główne przypadki:
Punkt należy do rozważanej dziedziny.
Punkt nie należy do rozważanej dziedziny.
Jeśli punkt miałby należeć do dziedziny, wartość współrzędnej musiałaby mieścić się w następującym przedziale , a wartość współrzędnej musiałaby zawierać się w następującym przedziale :
Gdyby punkt nie znajdował się w tym przedziale, nie należałby do dziedziny:
Jednak to niejedyny przypadek, jaki możemy zdefiniować. Pozostałe:
Punkt leży na osi rzędnych.
Punkt leży na osi odciętych.
Punkt leży w środku układu współrzędnych.
Jeśli punkt miałby leżeć na osi rzędnych, jego pierwsza współrzędna musiałaby wynosić 0.
Jeśli punkt miałby leżeć na osi odciętych, jego druga współrzędna musiałaby wynosić 0.
Jeśli punkt miałby leżeć w środku układu współrzędnych, obie jego współrzędne musiałyby wynosić 0.
Wiemy, że w przypadku instrukcji match/case program kończy działanie instrukcji, kiedy zostanie spełniony pierwszy warunek. Musimy zatem odpowiednio zaplanować ułożenie warunków.
Zacznijmy od sprawdzenia, czy punkt należy do dziedziny. Zatem to ten warunek zostanie zapisany jako pierwszy.
Następnie sprawdźmy, czy punkt leży w środku układu współrzędnych, na rzędnej lub odciętej. Zapiszmy kolejne warunki.
Warto pamiętać, że trzy wspomniane wcześniej przypadki odnoszą się do sytuacji, w której punkt nie należy do dziedziny, ale za to leży na osi współrzędnych. To rozróżnienie również powinno znaleźć się w komunikatach wyświetlanych przez program.
Sprawdziliśmy kilka konkretnych przypadków. Weźmy jednak pod uwagę również taką sytuację, w której punkt nie należy do dziedziny, nie leży w środku układu współrzędnych ani na żadnej osi.
Przetestujmy działanie programu dla następujących punktów:
Nanieśmy je na wizualizację:

Wywołajmy funkcję z nimi jako argumentami:
Wynik programu:
Porównaj wynik programu z wizualizacją.