Basic Pascal Tutorial/Chapter 3/IF/bg
English · Français · Български · 中文(中国) · 日本語
Обратно в Резервирани думи.
IF
(author: Tao Yue, state: changed)
Операторът IF ви позволява да разклонявате програмата въз основа на резултата от булева операция. Простото разклоняване изглежда така:
if BooleanExpression then
StatementIfTrue;Ако булевия израз BooleanExpression се изчисли като true, операторът StatementIfTrue ще се изпълни. В противен случай ще се пропусне.
Операторът IF приема само един оператор. Ако искате да се разклоните към поредица от оператори, трябва да ги заградите в begin-end блок, за да изпълните всички оператори:
if BooleanExpression then
begin
Statement1;
Statement2;
end;Двойното разклонение изглежда така:
if BooleanExpression then
StatementIfTrue
else
StatementIfFalse;Забележете, че няма ; преди else, дори и в случая на съставен оператор begin-end.
if BooleanExpression then
begin
Statement1;
Statement2;
end
else
begin
Statement3;
Statement4;
end;Ако BooleanExpression се пресметне като FALSE, тогава ще се изпълни операторът след else. Не трябва да използвате ; след оператора, който е предшества else. Това кара компилатора да си мисли, че това е оператор само с едно разклонение, и да се чуди откъде се е взело следващото else. A когато компилаторът се чуди, той обикновено извежда съобщение за грешка.
Ако имате нужда от повече разклонения, можете да вложите няколко if оператора:
if Condition1 then
Statement1
else
if Condition2 then
Statement2
else
Statement3;Бъдете внимателни с влагането. Понякога компилатора няма да направи това, което си мислите:
if Condition1 then
if Condition2 then
Statement2
else
Statement1;Приема се, че else винаги се отнася за последния if, така че компилатора интерпретира предишните редове като:
if Condition1 then
if Condition2 then
Statement2
else
Statement1;Може да коригирате с празен оператор:
if Condition1 then
if Condition2 then
Statement2
else
else
Statement1;Или може да използвате begin-end блок.
Следващото доказва как ; е абсолютно забранено преди else:
// Paul Robinson 2020-12-16
// Compiler test program Err03.pas
// tests the proposition that ; is
// never legal before ELSE
program err03;
Var
Test,test2: Boolean;
Begin
Test := True;
Test2 := true;
if test then
if test2 then
Writeln('Reached Part 1'); // semi-colon here should be illegal
else
Writeln('Reached Part 2');
end.Най-добрия начин да се изчисти проблема е да се пренапише условието.
if not Condition1 then
Statement1
else
if Condition2 then
Statement2;Този пример илюстрира как оператора not може да е много полезен. Ако Condition1 е булев израз като: (not(a < b) or (c + 3 > 6)) and g, "обръщането" на израза е доста по-сложно от отрицанието му с NOT.
Също така забележете колко е важен отстъпът отляво когато човек чете логиката на програмния код, но пък компилатора не се интересува от празните символи.
From the Free Pascal wiki, page "Basic Pascal Tutorial/Chapter 3/IF/bg", as it stood on 2022-08-20 after a change by Kai Burghardt, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's Licensing page. If you have concerns about this material, message the admin.