Задача 8 урок 25 - ООП Паскаль

Задача 8 урок 25

Напишите программу, которая выводит матрицу из единиц размерами M на N, напр. для M=2 и N=4 мы должны получить результат:
1 1 1 1
1 1 1 1
-- оформите решение программы в виде класса, который (должны быть выполнены все пункты):

*решает задачу вызовом метода do() (без параметров)
*в конструктор принимает значения M и N (и хранит их в виде собственных полей)
*для вывода строки с указанным количеством единиц использует отдельный метод str(), работающий с ранее сохраненными параметрами.

Исправьте пожалуйста условие выполнения задания. Предполагаю что метод должен
называться, как и в предыдущих задачах "doIt". ) С именем "do" решить не сможет никто ;)

В задаче 9 этого же урока тоже встречается метод "do" :

1.Напишите класс, который будет принимать в конструкторе, параметры, которые нужны для вывода последовательности
2.Пусть за вывод возрастающего фрагмента отвечает отдельный метод
3.За вывод тройки тоже пусть отвечает отдельный метод
4.Клиентский код, должен иметь возможность вывести последовательность в консоль вызовом одного метода do() без параметров

Key Words for FKN + antitotal forum (CS VSU):

vedro-compota's picture

С именем "do" решить не сможет никто ;)

это ключевое слово? почему никто не сможет, оно не может быть именем метода?

_____________
матфак вгу и остальная классика =)

У меня с таким именем Лазарус выдает ошибку.
Имя меняешь и работает. Я и подумал что "do" зарезервированное слово Паскалем.
Я ошибся?

vedro-compota's picture

какой текст ошибки? может быть и зарезервированным, да
также приведите код, который запускаете

_____________
матфак вгу и остальная классика =)

type
  Matrix = class
    public
      width,height: integer;
      constructor create(n,m: integer);
      procedure str();
      procedure doIt();
  end;

constructor Matrix.create(n,m: integer);
begin
  self.width:= n;
  self.height:= m;
end;

procedure Matrix.str();
var i,j: integer;
begin
  for i:= 1 to self.height do
  begin
    for j:= 1 to self.width do
      write('1',' ');
    writeln();
  end;
end;

procedure Matrix.doIt();
begin
  self.str();
end;

var m,n: integer; Obj: Matrix;
begin
  writeln('Vvedite shirinu i visotu :');
  n:= 5; m:= 3;//readln(n,m);
  Obj:= Matrix.create(n,m);
  Obj.doIt();
  readln();
end. 

Этот код работает. Меняем имя "doIt" на "do" и получаем ошибку :

Error: Syntax error, "identifier" expected but "DO" found

В задаче 9 имя "do" не использовал а сразу изменил.

vedro-compota's picture

да, проблему подтверждаю, поправил условие обсуждаемой задачи: https://fkn.ktu10.com/?q=node/16376
там видимо уже было сообещние о проблеме и править начали, но не во всех задачах доделали,
спасибо за замечание)

_____________
матфак вгу и остальная классика =)