Przejdź do głównej treści

Kwalifikacja: INF.03 - Tworzenie i administrowanie stronami i aplikacjami internetowymi oraz bazami danych

Zawód: Technik informatyk, Technik programista

Kategorie: Programowanie webowe Algorytmy i podstawy informatyki

Aby zamienić miejscami wartości dwóch zmiennych a i b, bez stosowania operacji arytmetycznych, wystarczy zastosować

A. pięć warunków
B. jedną zmienną pomocniczą
C. jedną pętlę
D. dwie tablice
Do zamiany miejscami wartości dwóch zmiennych a i b bez używania działań arytmetycznych najprościej i najczytelniej stosuje się jedną zmienną pomocniczą, często nazywaną temp, tmp albo bufor. Mechanizm jest prosty: najpierw zapisujemy wartość a w zmiennej pomocniczej, potem do a wpisujemy wartość b, a na końcu do b wpisujemy zapamiętaną wcześniej wartość z pomocniczej zmiennej. Czyli na przykład: temp = a; a = b; b = temp. Dzięki temu żadna wartość nie ginie w trakcie przypisywania. Gdyby od razu zrobić a = b, to pierwotna wartość a zostałaby nadpisana i nie byłoby już skąd jej wziąć. Moim zdaniem to jeden z najbardziej podstawowych, ale też bardzo ważnych schematów myślenia algorytmicznego. W praktyce taki sposób spotkasz np. przy sortowaniu tablic, zamianie elementów listy, porządkowaniu danych w JavaScript, PHP, C++ czy Pythonie. Jest to też zgodne z dobrą praktyką programistyczną: kod powinien być czytelny, bez kombinowania i bez ukrytych skutków ubocznych. Istnieją sztuczki z operacjami arytmetycznymi albo bitowym XOR, ale bywają mniej przejrzyste i mogą powodować problemy, np. z przepełnieniem liczb albo typami danych. Jedna zmienna pomocnicza jest rozwiązaniem uniwersalnym, bezpiecznym i łatwym do zrozumienia.
W tym zadaniu chodzi o klasyczny problem zamiany wartości dwóch zmiennych, czyli sytuację, w której po wykonaniu algorytmu zmienna a ma mieć dawną wartość b, a zmienna b dawną wartość a. Do tego nie są potrzebne ani pętle, ani tablice, ani rozbudowane instrukcje warunkowe. Typowy błąd polega na myśleniu, że skoro operacja wygląda jak jakaś większa procedura, to trzeba użyć bardziej złożonej konstrukcji języka. A tu właśnie siła rozwiązania jest w prostocie. Pętla służy do wielokrotnego wykonywania tych samych instrukcji, np. podczas przechodzenia po elementach tablicy albo powtarzania obliczeń, więc przy zamianie tylko dwóch pojedynczych wartości byłaby sztucznym dodatkiem. Tablice są przydatne, gdy przechowujemy wiele elementów tego samego typu lub chcemy operować na kolekcji danych, ale tworzenie dwóch tablic tylko po to, żeby zamienić a i b, to przerost formy nad treścią. Instrukcje warunkowe wykorzystuje się wtedy, gdy dalsze działanie programu zależy od spełnienia określonego warunku, np. jeśli x > 0, wykonaj inną gałąź kodu. Sama zamiana wartości nie wymaga sprawdzania pięciu przypadków, bo niezależnie od tego, jakie wartości mają a i b, algorytm z jedną zmienną pomocniczą działa tak samo. W praktyce wystarczy zachować pierwszą wartość w buforze, nadpisać ją drugą, a potem odtworzyć z bufora. To dobry przykład, że w programowaniu nie zawsze bardziej skomplikowane znaczy lepsze. Z mojego doświadczenia wynika, że czytelny zapis z temp jest najczęściej najlepszy, zwłaszcza w nauce algorytmów i w kodzie, który ma potem ktoś inny utrzymywać.

Wymagane logowanie

Ocenianie trudności pytań jest dostępne tylko dla zalogowanych użytkowników. Zaloguj się, aby skorzystać z pełni możliwości platformy.

Twoja ocena pomoże innym uczniom w przygotowaniu do egzaminu, a Tobie pozwoli na dostęp do spersonalizowanych statystyk.

Zgłoś błąd w pytaniu

Rozwiń sekcję i zmień pole, którego dotyczy błąd. Wysłane zostaną tylko zmienione sekcje.

Błędna kwalifikacja
Błąd w treści pytania
Błąd w treści odpowiedzi
Błąd w obrazie
Dane kontaktowe (opcjonalnie)
Podaj email, jeśli chcesz otrzymać informację o rozpatrzeniu zgłoszenia.