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.
Talk about this page
Nobody has opened a bench for this page yet. Sign in to open one.
