Instrukcja skoku: Różnice pomiędzy wersjami

[wersja przejrzana][wersja przejrzana]
Usunięta treść Dodana treść
Addbot (dyskusja | edycje)
m Bot: Przenoszę 20 linków interwiki do Wikidata, znajdziesz je teraz w zasobie d:q750997
m WPCleaner v1.29 - Nieprawidłowo zakończone <code> - Link zewnętrzny bez opisu (przy użyciu WP:CHECK)
Linia 1:
{{dopracować|w artykule opisano skok ''bezwarunkowy'', napisać coś więcej o skoku ''warunkowym'' (odsyłając do [[instrukcja warunkowa|instrukcji warunkowej]])}}
{{spis treści}}
'''Instrukcja skoku''' – [[instrukcja (informatyka)|instrukcja]] w [[język programowania|językach programowania]], która powoduje [[przepływ sterowania|przekazanie sterowania]] w inne miejsce, tzw. ''skok''. Występuje w tak odległych od siebie językach, jak [[Fortran]], [[Algol (język programowania)|Algol]], [[COBOL]], [[SNOBOL]], [[Basic]], [[C (język programowania)|C]]/[[C++]], [[Perl]], [[Pascal (język programowania)|Pascal]], [[PHP]]<ref>Od wersji 5.3 [http://php.net/manual/en/control-structures.goto.php PHP: goto - Manual]</ref> i wielu innych. Miejsce skoku identyfikuje się za pomocą numeru wiersza programu (zwykle w [[język interpretowany|językach interpretowanych]]) bądź [[etykieta (informatyka)|etykiety]] (najczęściej w [[język kompilowany|językach kompilowanych]]).
 
== Przykład ==
Linia 25:
Obserwacja ta znalazła zastosowanie w konstrukcji [[procesor]]ów i wyrażenia tego w języku [[asembler]]a, gdzie dostępne są te właśnie instrukcje (instrukcje skoku bezwarunkowego <code>JMP</code> i warunkowego <code>Jxx</code> w architekturze [[x86]], gdzie <code>xx</code> symbolizują stan [[flaga (informatyka)|flag]] [[rejestr stanu|rejestru stanu]] zmienianego przez część instrukcji procesora).
 
Pierwsze języki, przede wszystkim ze względu na nacisk na łatwość konstrukcji [[kompilator]]ów nie odbiegały znacząco zasobem instrukcji od asemblera, np. w pierwszych wersjach [[Fortran]]a jedyną instrukcją warunkową był właśnie skok – nie można było warunkowo przypisać wartości czy wykonać grupy poleceń. Z czasem do popularnych języków (wyrosłych na podstawie Fortrana) zaczęto dodawać inne instrukcje kontroli przepływu: wykonania warunkowego (<code>if (''warunek'') { ''polecenie1'' } else { ''polecenie2'' }</ttcode>, różne rodzaje [[pętla (informatyka)|pętli]] (<code>while</code>, <code>for</code>), rekurencyjność, instrukcje ponowienia (<code>redo</code>), [[instrukcja kontynuacji|następnej iteracji]] (<code>next</code> lub <code>continue</code>) lub [[instrukcja opuszczenia|zakończenia wykonywania]] (<code>last</code> lub <code>break</code>) pętli,
te same instrukcje z wielopoziomowymi pętlami (<code>X: foreach $a(@A) { foreach $b(@B) { …; if (…) { last X; }} }</code>), [[wyjątek|wyjątki]], [[iterator]]y, [[funkcja wyższego rzędu|funkcje wyższego rzędu]], [[wątek (informatyka)|wątki]] itd., co uczyniło z instrukcji skoku instrukcję na wskroś przestarzałą.