Przepływ sterowania

Wikipedia:Weryfikowalność
Ten artykuł od 2022-11 wymaga zweryfikowania podanych informacji.
Należy podać wiarygodne źródła w formie przypisów bibliograficznych.
Część lub nawet wszystkie informacje w artykule mogą być nieprawdziwe. Jako pozbawione źródeł mogą zostać zakwestionowane i usunięte.
Sprawdź w źródłach: Encyklopedia PWN • Google Books • Google Scholar • Federacja Bibliotek Cyfrowych • BazHum • BazTech • RCIN • Internet Archive (texts / inlibrary)
Po wyeliminowaniu niedoskonałości należy usunąć szablon {{Dopracować}} z tego artykułu.

W informatyce przepływ sterowania oznacza zbiór instrukcji i wyrażeń uporządkowanych w kolejności wykonania. W języku programowania instrukcja przepływu sterowania może zmienić przepływ sterowania tak, aby wyrażenia wykonywane były w innej kolejności, niż ta, w jakiej są wypisane w kodzie źródłowym. Pojęcie przepływu danych jest prawie zawsze ograniczane do pojedynczego wątku aplikacji, ponieważ dotyczy ono wykonywania instrukcji po jednej naraz.

Rodzaje instrukcji przepływu sterowania różnią się w zależności od języka, ale mimo to mogą być pogrupowane ze względu na efekt, jaki powodują:

  • Kontynuacja od innego punktu programu (skok)
  • Warunkowe wykonanie grupy wyrażeń (wybór)
  • Powtarzanie wykonywania grupy wyrażeń (pętla, odpowiednik skoku do wcześniejszego miejsca w kodzie).
  • Wykonywanie grupy odległych wyrażeń, po których sterowanie powraca do miejsca wywołania (podprogram, procedura).
  • Zupełne przerwanie wykonywania programu.

Przerwanie to kolejny mechanizm zmieniający przepływ sterowania do określonego podprogramu, lecz dzieje się to w odpowiedzi na sygnały lub zdarzenia zewnętrzne, a nie na stan samej aplikacji. Samomodyfikowanie kodu źródłowego może być również użyte do zmiany przepływu sterowania, lecz przeważnie nie wiąże się ono z wykonaniem żadnej konkretnej instrukcji przepływu sterowania (wyjątek to ALTER w COBOLu).

Na najniższym poziomie języka maszynowego lub asemblera, zmianę przepływu sterowania realizuje się poprzez ingerowanie w licznik programu. W wielu procesorach jedynymi dostępnymi instrukcjami zmiany przepływu są skoki warunkowe i bezwarunkowe. Kompilatory języków wysokopoziomowych muszą zatem przetłumaczyć wszystkie istniejące w nich instrukcje, wykorzystując wyłącznie ten ograniczony i uproszczony zestaw, nie zniekształcając przy tym zapisanego za ich pomocą algorytmu.