8.1 — Wprowadzenie do przepływu sterowania

Gdy program jest uruchomiony, procesor rozpoczyna wykonywanie od góry main(), wykonuje pewną liczbę instrukcji (domyślnie w kolejności sekwencyjnej), a następnie program kończy się na końcu main(). Specyficzna sekwencja instrukcji wykonywanych przez CPU nazywana jest w skrócie wykonania programu (lub ścieżką programu).

Rozważ następujący program:

#include <iostream>

int main()
{
    std::cout << "Enter an integer: ";
    
    int x{};
    std::cin >> x;

    std::cout << "You entered " << x << '\n';

    return 0;
}

Ścieżka wykonania tego programu obejmuje linie 5, 7, 8, 10 i 12, w tej kolejności. To jest przykład program liniowy. Programy proste idą tą samą ścieżką (wykonują te same instrukcje w tej samej kolejności) za każdym razem, gdy są uruchamiane.

Jednak często nie jest to to, czego pragniemy. Na przykład, jeśli poprosimy użytkownika o wprowadzenie danych, a on wprowadzi coś nieprawidłowego, w idealnym przypadku chcielibyśmy poprosić go o dokonanie innego wyboru. Nie jest to możliwe w programie liniowym. W rzeczywistości użytkownik może wielokrotnie wprowadzać nieprawidłowe dane, więc ile razy będziemy musieli poprosić go o dokonanie kolejnego wyboru, nie będziemy wiedzieć aż do czasu wykonania.

Na szczęście C++ udostępnia wiele różnych instrukcji przepływu sterowania (tzw instrukcji kontroli przepływu), które są instrukcjami umożliwiającymi programiście zmianę normalnej ścieżki wykonywania programu. Widziałeś już tego przykład z instrukcjami if (wprowadzonymi w lekcji 4.10 - Wprowadzenie do instrukcji if), które pozwalają nam wykonać instrukcję tylko wtedy, gdy wyrażenie warunkowe jest prawdziwe.

Kiedy instrukcja przepływu sterowania powoduje zmianę punktu wykonania na instrukcję niesekwencyjną, nazywa się to rozgałęzianiem.

Kategorie kontroli przepływu instrukcje

KategoriaZnaczenieZaimplementowane w C++ przez
Instrukcje warunkowePowoduje wykonanie sekwencji kodu tylko wtedy, gdy spełniony jest jakiś warunek.Jeśli w przeciwnym razie przełącznik
JumpsNakazuje procesorowi rozpoczęcie wykonywania instrukcji w pewnym momencie inna lokalizacja.goto, przerwa, kontynuacja
Wywołania funkcjiPrzeskok do innej lokalizacji i z powrotem.wywołania funkcji, powrót
PętlePowtarzanie wykonywania sekwencji kodu zero lub więcej razy, aż spełniony zostanie jakiś warunek.podczas, do-while, for, ranged-for
ZatrzymaniaZakończ program.std::exit(), std::abort()
WyjątkiSpecjalny rodzaj struktury kontroli przepływu przeznaczony do obsługi błędów.spróbuj, rzuć, złap

Wszystkie te kategorie omówimy szczegółowo w tym rozdziale, z wyjątkiem wyjątków (ha) któremu poświęcimy cały przyszły rozdział (rozdziale 27).

Przed tym rozdziałem liczba rzeczy, które można zrobić za pomocą programu, była dość ograniczona. Możliwość kontrolowania przebiegu programu (szczególnie za pomocą pętli) umożliwia wiele interesujących rzeczy! Nie będziesz już ograniczony do programów zabawek - będziesz mógł pisać programy, które mają naprawdę użyteczność.

Tutaj zaczyna się prawdziwa zabawa. Przejdźmy więc do rzeczy to!

guest
Twój adres e-mail nie zostanie wyświetlony
Znalazłeś błąd? Zostaw komentarz powyżej!
Komentarze związane z poprawkami zostaną usunięte po przetworzeniu, aby pomóc zmniejszyć bałagan. Dziękujemy za pomoc w ulepszaniu witryny dla wszystkich!
Awatary z https://gravatar.com/ są połączone z podanym adresem e-mail.
Powiadamiaj mnie o odpowiedziach:  
119 Komentarze
Najnowsze
Najstarsze Najczęściej głosowane
Wbudowane opinie
Wyświetl wszystkie komentarze