Składnia języka » Instrukcje warunkowe

Else

  • 2010-10-31 18:27
  • 0 komentarzy
  • 963 odsłony
  • Oceń ten tekst jako pierwszy
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ż: