C# GOTO


Teraz zajmiemy się instrukcją skoku bez warunkowego czyli instrukcją goto. Jeżeli programowałeś w jakimś innym języku to zauważysz że instrukcja goto nie różni się niczym w C# od goto stosowanego w innych językach. Jest to instrukcja może rzadko używana a jej stosowanie wydaję się nie eleganckie i przywykło się do tego że goto robi z kodu to co zwykło się nazywać kod a’la spaghetti, ja nie mam zamiaru wystawiać sądu na temat użyteczności tej instrukcji, cześć programistów jej używa, przez co wielu innych by ich za to wychłostało, jednak należy pamiętać o tym że takie instrukcje jak goto (czyli niby rzadko używane) są tym co czynią język programowanie kompletnym.

Pora do konkretów, może wytłumaczę co robi ta instrukcja. Otóż instrukcja goto pozawala na przeniesienie wykonywanie programu do dowolnego miejsca (nie dosłownie). Ogólna deklaracja instrukcji go to wygląda następująco:
goto etykieta;
etykieta :

gdzie etykieta jest miejscem gdzie ma być wykonane przeniesienie wykonywanie programu.

Działanie instrukcji goto ujrzysz na poniższym przykładzie:
Początek kodku:
using System ;

class Pokaz_for

{

public static void Main()

{

int x = 10 ;

Console.WriteLine(„tekst”);


goto miejsce ;

Console.WriteLine(„Tego tekstu nie zobaczysz”);

x = x + 153234 ; // ta instrukcja się nigdy nie wykona;

miejsce:

Console.WriteLine(„Ten tekst ujrzysz”);

}

}
Koniec kodu:
Jak widzisz gdy nasz program napotka instrukcje goto miejsce ;  wykonywanie programu zostanie przeniesione do miejsca „miejsce:”. Zobacz sobie poniższy przykład gdzie zastosowanie instrukcji jest nielegalne:
class Pokaz_for

{

public static void Main()

{


goto startuj;
for(int i = 0 ;i <= 10 ; i++) {

startuj:

}

}

}
Nawet na chłopski programistyczny rozum wydaję się to nienormalne aby wykonywanie programu przenieść do środka wykonywania pętli.

Zadanie dla ciebie do wykonania samemu jest napisanie pętli bazującej wyłącznie na instrukcji goto, bez while, do-while oraz for. Poniżej znajduje się rozwiązanie zadania. Pamiętaj żeby męczyć się aż to rozwiążesz.

Początek kodu:
using System ;

class Pokaz_for

{

public static void Main()

{

Console.WriteLine(„Prezętacja petli na goto”);

int x = 0 ;

start:
Console.WriteLine(„PĘTLA”);

x++;

if(x <= 10)

{
goto start;

}

Console.WriteLine(„Koniec pętli”);

}

}
Koniec kodu: