Простая программа с процедурными типами не компилируется и не работает - Free Pascal
Формулировка задачи:
uses Crt;
Type
Func = function(x,y: integer):integer;
{$F+}
function Adds(x,y:integer):integer;
begin Adds:= x + y; end;
function Multiplys(x,y:integer):integer;
begin Multiplys:= x*y;end;
function Funny(x,y:integer):integer;
begin funny:= (x+y)*(x-y);end;
{$F-}
procedure PrintTable(w,h:integer;operation:func);
var x,y: integer;
begin
for y:= 1 to h do begin
for x:= 1 to w do
write(operation(x,y):5);
writeln;
end;{End For y}
writeln;
end;{End PrintTable}
BEGIN ClrScr;
PrintTable(10,10,Adds);
PrintTable(10,10,Multiplys);
PrintTable(10,10,Funny);
Writeln('This end program click any key');
Readkey;
END.
оказывается чтобы не ползать по option
нужно
Чтобы максимально приблизить FPC к Delphi7, используйте -Mdelphi в командной строке
или вставляйте в исходники (перед Unit и Program ) такой код:
{$IFDEF FPC}
{$MODE DELPHI}
{$ENDIF FPC}
вставил перед program в представленной проге
вот этот код(понравился он мне) {$MODE DELPHI}
и прога заработала безо всяких переключений
Решение задачи: «Простая программа с процедурными типами не компилируется и не работает»
textual
Листинг программы
{$MODE ObjFPC}
uses Crt;
Type
Func = function(x,y: integer):integer;
function Adds(x,y:integer):integer;
begin Adds:= x + y; end;
function Multiplys(x,y:integer):integer;
begin Multiplys:= x*y;end;
function Funny(x,y:integer):integer;
begin funny:= (x+y)*(x-y);end;
procedure PrintTable(w,h:integer;operation:func);
var x,y: integer;
begin
for y:= 1 to h do begin
for x:= 1 to w do
write(operation(x,y):5);
writeln;
end;{End For y}
writeln;
end;{End PrintTable}
BEGIN ClrScr;
PrintTable(10,10,@Adds); // Внимательно смотрим на синтаксис
PrintTable(10,10,@Multiplys);
PrintTable(10,10,@Funny);
Writeln('This end program click any key');
Readkey;
END.
Объяснение кода листинга программы
- Объявлены процедурные типы данных: Func, Proc
- Определены функции: Adds, Multiplys, Funny
- Определена процедура PrintTable
- В основной части программы вызываются функции и процедуры для вывода таблиц
- Завершается программа вызовом Readkey