Простая программа с процедурными типами не компилируется и не работает - Free Pascal

Узнай цену своей работы

Формулировка задачи:

Листинг программы
  1. uses Crt;
  2. Type
  3. Func = function(x,y: integer):integer;
  4. {$F+}
  5. function Adds(x,y:integer):integer;
  6. begin Adds:= x + y; end;
  7. function Multiplys(x,y:integer):integer;
  8. begin Multiplys:= x*y;end;
  9. function Funny(x,y:integer):integer;
  10. begin funny:= (x+y)*(x-y);end;
  11. {$F-}
  12. procedure PrintTable(w,h:integer;operation:func);
  13. var x,y: integer;
  14. begin
  15. for y:= 1 to h do begin
  16. for x:= 1 to w do
  17. write(operation(x,y):5);
  18. writeln;
  19. end;{End For y}
  20. writeln;
  21. end;{End PrintTable}
  22. BEGIN ClrScr;
  23. PrintTable(10,10,Adds);
  24. PrintTable(10,10,Multiplys);
  25. PrintTable(10,10,Funny);
  26. Writeln('This end program click any key');
  27. Readkey;
  28. END.
эта простая прога с процедурными типами не компилируется и не работает в Free Pascal если не поставить Free в совместимость с Turbo Pascal option -> compiler -> compiler mode поставил звезду напротив Turbo Pascal compatible возможна ли компиляция и выполнение этой программы если не снимать галочку с Free Pascal dialect ? т.е. не ставить ее ни в какую совместимость?
оказывается чтобы не ползать по option нужно Чтобы максимально приблизить FPC к Delphi7, используйте -Mdelphi в командной строке или вставляйте в исходники (перед Unit и Program ) такой код: {$IFDEF FPC} {$MODE DELPHI} {$ENDIF FPC} вставил перед program в представленной проге вот этот код(понравился он мне) {$MODE DELPHI} и прога заработала безо всяких переключений

Решение задачи: «Простая программа с процедурными типами не компилируется и не работает»

textual
Листинг программы
  1. {$MODE ObjFPC}
  2. uses Crt;
  3.  Type
  4.     Func = function(x,y: integer):integer;
  5.  
  6. function Adds(x,y:integer):integer;
  7.  begin Adds:= x + y; end;
  8.  
  9. function Multiplys(x,y:integer):integer;
  10.  begin Multiplys:= x*y;end;
  11.  
  12. function Funny(x,y:integer):integer;
  13.  begin funny:= (x+y)*(x-y);end;
  14.  
  15.  
  16. procedure PrintTable(w,h:integer;operation:func);
  17.  var x,y: integer;
  18.   begin
  19.    for y:= 1 to h do begin
  20.     for x:= 1 to w do
  21.      write(operation(x,y):5);
  22.      writeln;
  23.    end;{End For y}
  24.      writeln;
  25.   end;{End PrintTable}
  26.  
  27. BEGIN ClrScr;
  28.  
  29.  PrintTable(10,10,@Adds); // Внимательно смотрим на синтаксис
  30.  PrintTable(10,10,@Multiplys);
  31.  PrintTable(10,10,@Funny);
  32.  
  33. Writeln('This end program click any key');
  34. Readkey;
  35. END.

Объяснение кода листинга программы

  1. Объявлены процедурные типы данных: Func, Proc
  2. Определены функции: Adds, Multiplys, Funny
  3. Определена процедура PrintTable
  4. В основной части программы вызываются функции и процедуры для вывода таблиц
  5. Завершается программа вызовом Readkey

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы