Goto

papudrun

Słowo kluczowe używane w składni języka Pascal, Object Pascal, a także w wielu innych językach takich jak C, C++, Fortran, Algol, COBOL, SNOBOL, Basic czy Perl. Jest to instrukcja, która powoduje przeniesienie wykonywania kodu w inne miejsce.

Instrukcja goto przenosi nas w dowolną część programu. Miejsce to musi być zaznaczone w kodzie programu. Poza tym, tak jak i zmienna, musi być wcześniej zdeklarowane. Miejsce takie nazywa się etykietą. Edykiety deklaruje się za pomocą słowa kluczowego label.

Przykład:

label 
  TryAgain;
var
  Password: String;
begin
TryAgain:
  Write('Podaj hasło: ');
  ReadLn(Password);
  
  if Password <> 'tajnehaslo' then 
    goto TryAgain;
    
  WriteLn('OK. Haslo poprawne');
end.

W przykładzie tym etykieta TryAgain została umieszczona na początku programu (co nie jest konieczne). W przypadku gdy hasło nie będzie prawidłowe, poniższy fragment kodu:

goto TryAgain;

przeniesie nas na początek programu, w celu ponownego wpisania hasła.

5 komentarzy

Tyle lat się oduczałem stosowania GOTO, a tu nagle powrót do rewelacyjnego GOTO, to instrukcja rodem z BASIC'a i ASM, ale rzecz gustu, wolę procedury niż lawinowy program

pętle, procedury, funkcje, break, na upartego continue i wyjątki... btw od zadawania pytań jest forum.

pętla for, while, repeat
lub po prostu procedura lub funkcja:)

kilka lat opóźnienia z mojej strony, ale może mi ktoś wyjaśni (mam kiepskie zdolności) jak można ominąć goto i użyć czegoś innego?

zapomniałeś napisac, że używanie tej intrukcji świadczy o kiepskich zdolnościach programistycznych. poza tym za pomocą goto nie można skoczyć do innego bloku programu - do innej procedury, pętli itp.