Instrukcja goto
w C++ umożliwia przeskakiwanie do różnych części kodu w programie. Działa poprzez przesunięcie wykonania programu do określonego etykietą miejsca. Etykieta to po prostu nazwa umieszczona w kodzie, po której następuje dwukropek (:
). Gdy instrukcja goto
napotka tę etykietę, program natychmiast przeskakuje do wskazanego fragmentu kodu.
Chociaż goto
może wydawać się użyteczne, jego użycie nie jest zalecane w bardziej zaawansowanych projektach, ponieważ może prowadzić do trudnego do zrozumienia i utrzymania kodu. Jednak w prostych programach oraz w celach edukacyjnych warto zrozumieć, jak działa ta instrukcja.
W poniższym przykładzie zobaczysz, jak korzystać z instrukcji goto
, aby kontrolować przepływ programu.
Przykład kodu – Użycie goto
// Importujemy bibliotekę iostream, aby móc korzystać z operacji wejścia/wyjścia
#include <iostream>
// Główna funkcja programu
int main() {
int liczba;
// Używamy instrukcji `goto` do skoku do etykiety "start"
start:
// Pobieramy liczbę od użytkownika
std::cout << "Podaj liczbę (1-10): ";
std::cin >> liczba;
// Sprawdzamy, czy liczba mieści się w przedziale od 1 do 10
if (liczba < 1 || liczba > 10) {
std::cout << "Nieprawidłowa liczba! Spróbuj ponownie." << std::endl;
// Jeśli liczba jest poza zakresem, przeskakujemy z powrotem do etykiety "start"
goto start;
}
// Jeśli liczba jest poprawna, wyświetlamy komunikat
std::cout << "Dziękuję! Podałeś liczbę: " << liczba << std::endl;
// Zwracamy 0, co oznacza, że program zakończył się pomyślnie
return 0;
}
Jak działa program:
- Program rozpoczyna się od deklaracji zmiennej
liczba
typu całkowitego (int
). - Etykieta
start:
– to miejsce w kodzie, do którego program może przeskoczyć, jeśli instrukcjagoto
zostanie użyta. W tym przypadku znajduje się na początku pętli, przed pobieraniem danych od użytkownika. - Program wyświetla komunikat “Podaj liczbę (1-10):” i czeka na wprowadzenie liczby przez użytkownika (
std::cin >> liczba
). - Instrukcja
if
sprawdza, czy podana liczba mieści się w zakresie od 1 do 10. Jeśli warunek jest spełniony (liczba jest poza zakresem), wyświetla komunikat “Nieprawidłowa liczba! Spróbuj ponownie.”. - W przypadku niepoprawnej liczby używana jest instrukcja
goto start;
, która przeskakuje do etykietystart:
. Program wraca do początku, ponownie pytając użytkownika o liczbę. Dzięki temu, gdy użytkownik wprowadzi niepoprawną wartość, program pozwala mu spróbować jeszcze raz. - Jeśli podana liczba jest prawidłowa (w zakresie 1-10), instrukcja
goto
nie jest wykonywana i program kontynuuje. Wyświetla komunikat “Dziękuję! Podałeś liczbę:” wraz z podaną przez użytkownika liczbą. - Na końcu program zwraca wartość
0
, oznaczającą pomyślne zakończenie.
Wyjaśnienie
W tym przykładzie instrukcja goto
jest używana do powrotu do początku pętli, jeśli użytkownik poda nieprawidłową liczbę. Etykieta start:
stanowi punkt odniesienia dla instrukcji goto
, która przeskakuje do niej, gdy podana wartość nie spełnia warunku. Program umożliwia wielokrotne wprowadzanie liczby przez użytkownika, aż do momentu, gdy zostanie podana liczba z zakresu 1-10.
Pomimo że użycie goto
jest możliwe, w praktyce warto korzystać z innych mechanizmów sterujących przepływem programu, takich jak pętle while
czy do-while
, które zapewniają bardziej czytelny i kontrolowany przepływ kodu.