If
if - słowo kluczowe języka Delphi rozpoczynające instrukcje warunkową
Ta właśnie instrukcja jest używana przez wszystkich programistów najczęściej. Samo słowo "if" oznacza "jeśli/jeżeli". Instrukcja if sprawdza czy został spełniony jakiś warunek. Samo if niestety do niczego nam się nie przyda dlatego, po instrukcji i i wpisaniu odpowiedniego warunku do spełnienia, dodajemy jeszcze słowo kluczowe then. "Then" oznacza, że jeżeli warunek został spełniony to możemy wykonać dalszą część kodu.
Składnia:
if ([not] warunek) [(and|or) ([not] warunek2) [...]] then (warunek spełniony) [else (warunek niespełniony)]
Przeanalizujmy teraz poniższy kod:
Powyższy kod zawsze zawsze pokaże komunikat 14 jest większe od 2, ponieważ warunek jest prawdziwy.
A oto kolejny przykład:
W powyższym przykładzie tak naprawdę niepotrzebnie użyłem dwukrotnie ShowMessage, ale to tylko przykład więc może być.
W kodzie użyłem funkcji Length - która zwraca długość np. łańcucha tekstowego. Od razu mogę powiedzieć, że powyższy kod jest niepoprawny, ale nie cały. Chodzi tu o to aby pokazać jak pod jedną jedną instrukcję if dodać większa ilość kodu niż tylko jedna linijka. Błąd polega na tym, że mimo, że komunikat Tekst jest zbyt krótki nigdy się nie wyświetli (ponieważ długość łańcucha tekstowego abcd wynosi 4) to drugi komunikat niestety się nam pokaże. Aby tego uniknąć po słowie kluczowym then powinniśmy dodać begin, potem nasze instrukcje do wykonania, a na samym końcu zakończyć warunek poprzez end.
Czyli powyższy kod powinien tak naprawdę wyglądać tak:
Teraz już będzie wszystko OK. Nie wyświetli nam się żaden komunikat, dopóki długość łańcucha tekstu jest większa niż 3.
Warunek może składać się z kilku wyrażeń połączonych operatorami logicznymi. Jeżeli chcemy by tak było to należy pamiętać o tym, że każde z wyrażeń należy wziąć w nawias okrągły, np.:
Zobacz też:
Ta właśnie instrukcja jest używana przez wszystkich programistów najczęściej. Samo słowo "if" oznacza "jeśli/jeżeli". Instrukcja if sprawdza czy został spełniony jakiś warunek. Samo if niestety do niczego nam się nie przyda dlatego, po instrukcji i i wpisaniu odpowiedniego warunku do spełnienia, dodajemy jeszcze słowo kluczowe then. "Then" oznacza, że jeżeli warunek został spełniony to możemy wykonać dalszą część kodu.
Składnia:
if ([not] warunek) [(and|or) ([not] warunek2) [...]] then (warunek spełniony) [else (warunek niespełniony)]
Przeanalizujmy teraz poniższy kod:
Powyższy kod zawsze zawsze pokaże komunikat 14 jest większe od 2, ponieważ warunek jest prawdziwy.
A oto kolejny przykład:
if Length('abcd') < 3 then ShowMessage('Tekst jest zbyt krótki');
ShowMessage('Wprowadź dłuższy tekst');
ShowMessage('Wprowadź dłuższy tekst');
W powyższym przykładzie tak naprawdę niepotrzebnie użyłem dwukrotnie ShowMessage, ale to tylko przykład więc może być.
W kodzie użyłem funkcji Length - która zwraca długość np. łańcucha tekstowego. Od razu mogę powiedzieć, że powyższy kod jest niepoprawny, ale nie cały. Chodzi tu o to aby pokazać jak pod jedną jedną instrukcję if dodać większa ilość kodu niż tylko jedna linijka. Błąd polega na tym, że mimo, że komunikat Tekst jest zbyt krótki nigdy się nie wyświetli (ponieważ długość łańcucha tekstowego abcd wynosi 4) to drugi komunikat niestety się nam pokaże. Aby tego uniknąć po słowie kluczowym then powinniśmy dodać begin, potem nasze instrukcje do wykonania, a na samym końcu zakończyć warunek poprzez end.
Czyli powyższy kod powinien tak naprawdę wyglądać tak:
if Length('abcd') < 3 then
begin
ShowMessage('Tekst jest zbyt krótki');
ShowMessage('Wprowadź dłuższy tekst');
end;
begin
ShowMessage('Tekst jest zbyt krótki');
ShowMessage('Wprowadź dłuższy tekst');
end;
Teraz już będzie wszystko OK. Nie wyświetli nam się żaden komunikat, dopóki długość łańcucha tekstu jest większa niż 3.
Warunek może składać się z kilku wyrażeń połączonych operatorami logicznymi. Jeżeli chcemy by tak było to należy pamiętać o tym, że każde z wyrażeń należy wziąć w nawias okrągły, np.:
if (3 > 2) and (Length('aaa') > 1) then
ShowMessage('3 > 2 i długość stringu "aaa" jest większa od 1');
ShowMessage('3 > 2 i długość stringu "aaa" jest większa od 1');
Zobacz też:



Tak, macie rację...
1) Jedynymi funktorami zdaniotwórczymi (logicznymi) są and, or i not
2) Nie można konstruować rozbudowanych zapytań, tylko łączyć nieskończenie wiele prostych wyrażeń bez używania nawiasów itp.
Oczywiście skonstruowanie tego w ten sposób;
if [[Delphi/warunek]] then [[instrukcja]] else [[instrukcja]] byłoby dużo bardziej na miejscu. Wówczas samo określenie instrukcja mogłoby oznaczać równiedobrze blok instrukcji między słowami begin i end, zaś warunek może być bardzo skomplikowany, może posiadaćwiele różnych funktorów, funkcji logicznych, porównań i czego sobie jeszcze tam nie wymyślimy. A sama konstrukcja warunku mogłaby spokojnie być oddzielnym wpisem.
if ([not] warunek) [(and|or) ([not] warunek2) [...]] then (warunek spełniony) [else (warunek niespełniony)]
by mi nic nie powiedziało bo dałeś za dużo nawiasów tzn powinieneś zamiast [not] napisać że not jest negacją warunku i tyle
if warunek then
begin
end
else if warunek then
begin
end
else begin
end
b: boolean;
begin
b = not (2 > 3) and (3 = 3);