Компилятор — это программа, превращающая исходный текст, написанный на языке программирования, в машинные инструкции.
По мере преобразования текста программы в машинный код, компилятор может обнаруживать ошибки (синтаксиса языка, например). Поэтому все проблемы забытых точек с запятыми, забытых скобок, ошибок в названиях функций и переменных в данном случае решаются на этапе компиляции.

При компиляции весь исходный программный код (тот, который пишет программист) сразу переводится в машинный. Создается так называемый отдельный исполняемый файл, который никак не связан с исходным кодом. Выполнение исполняемого файла обеспечивается операционной системой. То есть образуется, например, .EXE файл.
Program Project1; const eps = 1e-10; var a:array [1..3] of Real; i: integer; max: Real; max_i: integer; sqr_h: Real; sqr_k: Real; sp: Real; begin Write('Введите длину сторон треугольника: '); Readln(a[1],a[2],a[3]); max:=a[1]; max_i:=1; for i := 2 to 3 do if a[i]>max then begin max:=a[i]; max_i:=i; end; sqr_k := 0; for i:=1 to 3 do if i<>max_i then sqr_k:=sqr_k+sqr(a[i]); sqr_h:=Sqr(max); if (Abs(sqr_k-sqr_h)<eps) then begin Writeln('Треугольник прямоугольный'); sp:=1; for I := 1 to 3 do if i<>max_i then sp:=sp*a[i]; sp:=sp/2; Writeln('Площадь треугольника = ',sp:0:5); end else begin Writeln('Треугольник не прямоугольный'); sp:=0; for I := 1 to 3 do sp:=sp+a[i]; Writeln('Периметр треугольника = ',sp:0:5); end; Readln; end.
По мере преобразования текста программы в машинный код, компилятор может обнаруживать ошибки (синтаксиса языка, например). Поэтому все проблемы забытых точек с запятыми, забытых скобок, ошибок в названиях функций и переменных в данном случае решаются на этапе компиляции.

При компиляции весь исходный программный код (тот, который пишет программист) сразу переводится в машинный. Создается так называемый отдельный исполняемый файл, который никак не связан с исходным кодом. Выполнение исполняемого файла обеспечивается операционной системой. То есть образуется, например, .EXE файл.
Примеры компилируемых языков: C, C++, Pascal, Delphi.
const
eps = 1e-10;
var
a:array [1..3] of Real;
i: integer;
max: Real;
max_i: integer;
sqr_h: Real;
sqr_k: Real;
sp: Real;
begin
Write('Введите длину сторон треугольника: ');
Readln(a[1],a[2],a[3]);
max:=a[1];
max_i:=1;
for i := 2 to 3 do
if a[i]>max then
begin
max:=a[i];
max_i:=i;
end;
sqr_k := 0;
for i:=1 to 3 do
if i<>max_i then
sqr_k:=sqr_k+sqr(a[i]);
sqr_h:=Sqr(max);
if (Abs(sqr_k-sqr_h)<eps) then
begin
Writeln('Треугольник прямоугольный');
sp:=1;
for I := 1 to 3 do
if i<>max_i then
sp:=sp*a[i];
sp:=sp/2;
Writeln('Площадь треугольника = ',sp:0:5);
end
else
begin
Writeln('Треугольник не прямоугольный');
sp:=0;
for I := 1 to 3 do
sp:=sp+a[i];
Writeln('Периметр треугольника = ',sp:0:5);
end;
Readln;
end.