Szukaj:



Ostatnio oglądane:
  • Goto [pl]
  • Main Page [zh]
  • Wikipedia:Statystyki [pl]
  • 804 [tr]
  • Tin [en]
  • Kategoria:Społeczeństwo [pl]
  • Y [fi]
  • Loomad [et]
  • .mg [tr]
  • 1318 [ar]
  • Main Page [sr]
  • F8 [en]
  • 850 [fi]
  • 1431 [ar]
  • .be [id]
  • UJ [en]
  • Main Page [ro]
  • .ar [tr]
  • Glob [pl]
  • 253 [de]
  • Portal:Kategorie Główne [pl]
  • 676 [de]
  • 709 [de]
  • 828 [ar]
  • .mw [et]
  • Kategoria:Biografie [pl]
  • Gq [en]
  • Y [et]
  • Main Page [ca]
  • Wybierz język: ar | id | bg | ca | ceb | cs | da | de | et | en | es | eo | fr | he | hr | it | ko | lt | hu | nl | ja | no | pl | pt | ru | ro | sk | sl | sr | fi | sv | te | tr | uk | zh
    Historia i autorzy | źródło tekstu - Wikipedia | Edycja
    Strona jest mirrorem encyklopedii Wikipedia. Oryginalna encyklopedia znajduje się pod adresem wikipedia.org

    Goto

    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, COBOL, SNOBOL, Basic, C/C++, Perl, Pascal i wielu innych. Instrukcja goto 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 klasy do drugiej), dlatego zaleca się unikać jej stosowania, zastępując goto innymi konstrukcjami programowymi.

    Instrukcja Goto często odnosi się do etykiety lub numeru linii w źródle programu.

    [edytuj] Przykład

    Kodzie w Perlu:

    goto C;
    A:
    print "kota\n";
    goto D;
    B:
    print "ma ";
    goto A;
    C:
    print "Ala ";
    goto B;
    D:
    

    Wynikiem działania powyższego programu jest wydrukowanie napisu "Ala ma kota".

    [edytuj] 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 automatu o skończonej liczbie stanów bez duplikacji kodu wystarczy jedna instrukcja if (warunek) { goto X; }, ze szczególnym przypadkiem if (prawda) { goto X; }. Tak jest to rozwiązane na poziomie asemblera - dostępne są jedynie instrukcje skoku bezwarunkowego (JMP na x86) i warunkowego (na x86 JZ, JNZ, JG, JC itd, gdzie literki po J oznaczają stan flag oznaczających wynik ostatniej operacji).

    W Fortranie pierwotnie jedyną instrukcją warunkową był właśnie skok - nie można było warunkowo przypisać wartości czy wykonać grupy poleceń. Było to z jednej strony całkowicie wystarczające, z drugiej zaś mało ekspresywne.

    Z czasem dodawano nowe instrukcje kontroli przepływu: wykonania warunkowego (if (warunek) { POLECENIE1 } else { POLECENIE2 }, kilku typów pętli (while, for), funkcje rekurencyjne, instrukcje ponowienia (redo), następnej iteracji (next lub continue) lub zakończenia wykonywania (last lub break) pętli, te same instrukcje z wielopoziomowymi pętlami (X: foreach $a(@A) { foreach $b(@B) { ...; if (...) { last X; }} }), wyjątki, iteratory, funkcje wyższego rzędu, wątki itd.

    Są one dużo bardziej ekspresywne od goto, 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 czy Basic.

    [edytuj] Zobacz też


    Change language: All | العربية | Bahasa Indonesia | Български | Català | Cebuano | Česky | Dansk | Deutsch | Eesti | English | Español | Esperanto | Français | עברית | Hrvatski | Italiano | 한국어 | Lietuvių | Magyar | Nederlands | 日本語 | Norsk (bokmål) | Polski | Português | Русский | Română | Slovenčina | Slovenščina | Српски / Srpski | Suomi | Svenska | తెలుగు | Türkçe | Українська | 中文

    Autorem skryptu AdWiki v0.9uni (2007) jest husky83 (licencja dla gremlin1970)
    Wikipedia jest zarejestrowanym znakiem towarowym Wikimedia Foundation
    Wszystkie materiały pochodzą z Wikipedii, obięte są licencją GNU Free Documentation License