Else
pregusia
else - słowo kluczowe języka Delphi używane w połączeniu z instrukcjami warunkowymi
Angielskie słowo else można w tym kontekście przetłumaczyć jako w przeciwnym wypadku. Konstrukcja else jest zawsze stosowana w połączeniu z instrukcją If..Then oraz Case..Of.
Jeżeli, przykładowo, dany warunek if
nie został spełniony, można odpowiednio na to zareagować, dodając blok else
. Oczywiście wszystko najlepiej wyjaśnić na przykładach ? napiszmy zatem przykładowy program. Pobiera on imię użytkownika; w wypadku gdy warunek nie zostanie spełniony, odpowiednio zareaguje:
program Foo;
{$APPTYPE CONSOLE}
var
Imię : String;
begin
Writeln('Wpisz swoje imię...');
Readln(Imię); // pobranie wpisanej wartości
if Imię = 'Zbigniew' then
Writeln('Super! Ja też mam na imię Zbigniew!') // <?? uwaga! Brak średnika!
else Writeln('Cześć ' + Imię);
Readln;
end.
W poprzedniej wersji tego programu to, czy zmienna Imię nie zawiera wartości Zbigniew
, było sprawdzane w kolejnym warunku if
. Teraz w przypadku, gdy zmienna nie będzie zawierać tej wartości, zostanie wyświetlony tekst powitalny. Wszystko możliwe jest za sprawą instrukcji else
.
Zauważmy, że w wierszu nad instrukcją else nie ma średnika na końcu! To jest właśnie ta wyjątkowa sytuacja, kiedy nie stawiamy średnika!
Stosowanie średnika w instrukcji else
Poprzedni przykład z użyciem instrukcji if
i else
zawierał instrukcję niezakończoną znakiem średnika. Istnieją jednak sytuacje, kiedy średnik jest wymagany ? bez niego program nie zostanie skompilowany. Kiedy więc stosować średnik, a kiedy nie? Poniższy fragment kodu już wymaga postawienia średnika przed else:
if Imię = 'Zbigniew' then
begin
{ jakaś inna instrukcja }
Writeln('Super! Ja też mam na imię Zbigniew!');
end else Writeln('Cześć ' + Imię);
Także w przypadku, gdy po słowie then stosujemy blok Begin..End, średnik musi znaleźć się w kodzie! Ale zasada pozostaje taka sama ? nie stosujemy go przed else
:
end else Writeln('Cześć ' + Imię);
Sprawa początkowo może wydać się nieco skomplikowana, ale po dokładniejszym przeanalizowaniu kodu można rozróżnić, kiedy należy stosować średnik na końcu, a kiedy nie.
Kilka instrukcji if i else
Możliwe jest połączenie kilku instrukcji if oraz else. W takim przypadku stosujemy następującą konstrukcję:
else if { warunek }
Jeżeli jeden warunek nie zostanie spełniony, nastąpi sprawdzenie drugiego. Jeżeli także drugi nie zostanie spełniony ? analizowane będą kolejne warunki. Spójrz na poniższy kod:
program Foo;
{$APPTYPE CONSOLE}
var
I : Integer;
begin
Randomize;
I := Random(50);
if i = 10 then Writeln('I = 10')
else if i = 20 then Writeln('I = 20')
else if i = 30 then Writeln('I = 30')
{ kod w wykonany przypadku, gdy żaden warunek nie zostanie spełniony }
else Writeln('Żadna wartość nie jest odpowiednia!');
Readln;
end.
Na samym początku następuje sprawdzenie, czy wylosowaną liczbą jest 10. Jeśli nie, to program sprawdza kolejno liczby 20 i 30, co zapisano w kolejnych warunkach if. Jeżeli żaden z poprzednich warunków nie zostanie zrealizowany, zostanie wykonany kod umieszczony po słowie else
.
Instrukcja else w case..of
Możliwe jest także zastosowanie słowa kluczowego else w instrukcji case..of. Jeżeli żaden ze sprawdzanych warunków Case nie zostanie spełniony, można odpowiednio na to zareagować. Posłużę się jednym z poprzednich przykładów.
program Foo;
{$APPTYPE CONSOLE}
var
Mandat : Integer;
begin
Randomize;
Mandat := Random(100)+1; // dodajemy 1, aby nie zostało wylosowane 0
case Mandat of
1..10: Writeln('E, 10 zł. Może jeszcze zapłacę?');
11..20: Writeln('20 zł ? nie będę miał na chleb!');
21..50:
begin
Writeln('50 zł ? Panie władzo... może dogadamy się w inny sposób?');
Writeln('Nieeeee...');
end;
{ dodajemy else }
else Writeln('Jakiś inny mandacik?');
end;
Readln;
end.
Tym razem losowano liczbę z zakresu od 1 do 100. Dzięki temu instrukcja case
może nie uwzględniać tej liczby ? zostanie wykonany blok kodu umieszczony po słowie kluczowym else
.
Zobacz też:
@Azarien: możesz edytować artykuł i poprawić :)
Poniższy fragment kodu już wymaga postawienia średnika przed else
- to jest nieprawda, autor artykułu najwyraźniej przykładu nie sprawdził.Zasada jest prosta: bezpośrednio przed
else
nigdy nie stawiamy średnika. Natomiast bezpośrednio przedend
średnik można postawić, ale nie jest on wymagany.