213 990
edycji
[wersja nieprzejrzana] | [wersja nieprzejrzana] |
m WP:SK, drobne techniczne |
|||
Linia 1:
'''goto''' to nazwa instrukcji w językach programowania, która powoduje bezwarunkowe 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]], nadchodzącym [[PHP|PHP6]] i wielu innych.
Instrukcja <tt>goto</tt> może zaciemniać strukturę programu (zwłaszcza, gdy skok odbywa się między dwoma nie związanymi ze sobą blokami kodu, np. z ciała jednej [[
Instrukcja Goto często odnosi się do [[Etykieta (informatyka)|etykiety]] lub numeru linii w źródle programu.
== Przykłady ==
Kodzie w [[Perl
<pre>
goto C;
Linia 21:
Wynikiem działania powyższego programu jest wydrukowanie napisu "Ala ma kota".
== Jak można sterować przepływem kontroli ==
Aby sterować przepływem kontroli w programie w sposób, który umożliwia zaprogramowanie każdego diagramu przepływu czy każdego [[automat o skończonej liczbie stanów|automatu o skończonej liczbie stanów]] bez duplikacji kodu wystarczy jedna instrukcja <tt>if (warunek) { goto X; }</tt>, ze szczególnym przypadkiem <tt>if (prawda) { goto X; }</tt>. Tak jest to rozwiązane na poziomie [[asembler]]a - dostępne są jedynie instrukcje skoku bezwarunkowego (<tt>JMP</tt> na [[x86]]) i warunkowego (na [[x86]] <tt>JZ</tt>, <tt>JNZ</tt>, <tt>JG</tt>, <tt>JC</tt> itd, gdzie literki po <tt>J</tt> oznaczają stan flag oznaczających wynik ostatniej operacji).
W [[Fortran
Z czasem dodawano nowe instrukcje kontroli przepływu: wykonania warunkowego (<tt>if (warunek) { POLECENIE1 } else { POLECENIE2 }</tt>, kilku typów pętli (<tt>while</tt>, <tt>for</tt>), funkcje rekurencyjne, instrukcje ponowienia (<tt>redo</tt>), [[Instrukcja kontynuacji
te same instrukcje z wielopoziomowymi pętlami (<
Są one dużo bardziej ekspresywne od <tt>goto</tt>, którego programiści piszący w wysokopoziomowych językach programowania powinni unikać. Jednak czasami takiej możliwości nie mają piszący w językach z relatywnie ubogimi strukturami kontroli przepływu, takimi jak [[C (język programowania)|C]] czy [[Basic]].
== Zobacz też ==
* [[COME FROM]]
{{
[[kategoria:Konstrukcje programistyczne]]▼
[[ca:GOTO]]
|