քամին տարածել էր ադոբի ելատեքստը, ու ես ուզեցի մեկնաբանել, ինչպէս ա տարբերուում ադոբի ու բորլանդի պասկալի ֆորմատինգի ստանդարտը։
#պասկալ #էկրանահան #կոդ #ծրագրաւորում #մշակոյթ
ստեղ էլ փակցնեմ՝
ադոբի՝
PROCEDURE AddCode (node: PNode; code: INTEGER; VAR word: Str255);
VAR
branch: INTEGER;
BEGIN
IF LENGTH (word) = 0 THEN
BEGIN
IF node^.leaf OR (node^.branch [0] <> NIL) OR
(node^.branch [1] <> NIL) THEN
BEGIN
WRITELN ('? Conflict for code ', code:1);
EXIT (PROGRAM)
END;
node^.leaf := TRUE;
node^.code := code
END
ELSE
BEGIN
IF word [1] = '0' THEN
branch := 0
ELSE IF word [1] = '1' THEN
branch := 1
ELSE
BEGIN
WRITELN ('? Invalid word for code ', code:1);
EXIT (PROGRAM)
END;
DELETE (word, 1, 1);
IF node^.branch [branch] = NIL THEN
BEGIN
NEW (node^.branch [branch]);
node^.branch [branch]^.leaf := FALSE;
node^.branch [branch]^.branch [0] := NIL;
node^.branch [branch]^.branch [1] := NIL
END;
AddCode (node^.branch [branch], code, word)
END
END;
բորլանդի՝
procedure AddCode(node: PNode; code: INTEGER; var word: Str255);
var branch: integer;
begin
if length(word) = 0 then
begin
if node^.leaf or
(node^.branch[0] <> nil) or
(node^.branch[1] <> nil) then
begin
WriteLn('? Conflict for code ', code:1);
Halt //ստեղ նաեւ փոխել եմ Exit ֆունկցիան
end;
node^.leaf := true;
node^.code := code
end
else
begin
if word[1] = '0' then
branch := 0
else
if word[1] = '1' then
branch := 1
else
begin
WriteLn('? Invalid word for code ', code:1);
Halt
end;
delete(word, 1, 1);
if node^.branch[branch] = nil then
begin
new (node^.branch[branch]);
node^.branch[branch]^.leaf := false;
node^.branch[branch]^.branch[0] := nil;
node^.branch[branch]^.branch[1] := nil
end;
AddCode (node^.branch [branch], code, word)
end
end;