Машинно-независимые языки удобны в использовании для широкого круга пользователей, от человека не требуется полного знания специфики компьютеров; алфавит алгоритмического языка значительно шире алфавита машинного языка, что существенно повышает наглядность текста программы; набор операций, допустимых для использования, не зависит от набора машинных операций, а выбирается из соображений удобства формулирования алгоритмов решения задач определенного класса; формат предложений достаточно гибок и удобен для использования, что позволяет с одного предложения задать достаточно содержательный этап обработки данных; требуемые операции задаются с общепринятых математических обозначений, а не для каждого компьютера отдельно; данным в алгоритмических языках присваиваются индивидуальные имена, выбираемые программистом; в языке может быть предусмотрен значительно более широкий набор типов данных по сравнению с набором машинных типов данных.
Var stack : array [1..1000] of double; op1, op2 : double; i : integer; c : char; begin i := 0; while not eoln do begin read (c); if c in ['0'..'9'] then begin inc (i); stack[i] := ord (c) - ord ('0'); end else if c <> ' ' then begin if i < 2 then begin writeln ('Error!'); halt; end; op2 := stack[i]; dec (i); op1 := stack[i]; case c of '+' : stack[i] := op1 + op2; '-' : stack[i] := op1 - op2; '*' : stack[i] := op1 * op2; '/' : stack[i] := op1 / op2; end; end; end; if i <> 1 then writeln ('Error!') else writeln (stack[i]); end.
stack : array [1..1000] of double;
op1, op2 : double;
i : integer;
c : char;
begin
i := 0;
while not eoln do
begin
read (c);
if c in ['0'..'9'] then
begin
inc (i);
stack[i] := ord (c) - ord ('0');
end
else if c <> ' ' then
begin
if i < 2 then
begin
writeln ('Error!'); halt;
end;
op2 := stack[i];
dec (i);
op1 := stack[i];
case c of
'+' : stack[i] := op1 + op2;
'-' : stack[i] := op1 - op2;
'*' : stack[i] := op1 * op2;
'/' : stack[i] := op1 / op2;
end;
end;
end;
if i <> 1 then
writeln ('Error!')
else
writeln (stack[i]);
end.