Урок 20 (Вопрос по задаче номер 1)

Урок 20 (Вопрос по задаче номер 1)

Анализ/"чтение" уже написанного кем-то кода -- одно из важнейших умений, постоянно используемое в повседневной работе профессиональными программистами.

Создал две переменные идентичного типа из сигнатуры функции. Вызвал функцию, но она работает не корректно: бесконечно заполняет консоль цифрами.
Понимание - как на мой взгляд работает данная функция:
Мы передаем на вход две переменные целочисленного типа, она их принимает и рассматривает как минимум и максимум в теле своей программы. Следом запускает цикл из 10 витков, который контролирует переменная-счетчик count, генерирует в переменную "number" случайное число, границами которого являются наши поданные переменные. Внутри запускает цикл for, который совершает k витков, начиная с 1 элемента массива, и, если arr[i] number, тогда повышает счетчик длины массива, если он, к тому же, равен k, то переменная "count", отвечающая за счет витков основного цикла, увеличивается, а значение элемента под этим номером становится равно случайному числу. В другом исходе событий прекращает цикл. Функция возвращает массив целых чисел.

program my_program;
type b = array[1..10] of integer; // секция обьявления типов

var a, o : integer;

function filling_array( min, max : integer ) : b;
  var  count, i, j, l, k, number : integer;
      arr : b;
begin
  count := 0;
  k := 1;
  randomize; // вызов процедуры
  while( count < 10 ) do  // пока меньше 10
  begin
    number := random( max - (min + 1) + min ) ; // случайные числa
    write( number, ' ' ); // вывод для предварительного просмотра
    j := 0; // счетчик длинны массива
    for i := low( arr ) to k do // обходим массив
    begin
      if( arr[i] <> number ) then
      begin
          j += 1;
          if( j = k ) then
          begin
            count += 1;
            k += 1;
            arr[count] := number;
          end;
      end
      else
        break;
    end;
  end;
  filling_array := arr; // возвращаем значение функции
end;

begin
  a := 1;
  o := 5;
  filling_array(a, o);
  write();
end.