Instrukcja goto w C++

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:

  1. Program rozpoczyna się od deklaracji zmiennej liczba typu całkowitego (int).
  2. Etykieta start: – to miejsce w kodzie, do którego program może przeskoczyć, jeśli instrukcja goto zostanie użyta. W tym przypadku znajduje się na początku pętli, przed pobieraniem danych od użytkownika.
  3. Program wyświetla komunikat “Podaj liczbę (1-10):” i czeka na wprowadzenie liczby przez użytkownika (std::cin >> liczba).
  4. 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.”.
  5. W przypadku niepoprawnej liczby używana jest instrukcja goto start;, która przeskakuje do etykiety start:. 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.
  6. 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ą.
  7. 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.

 

 

Scroll to Top