#23 Анализ кода и простая оптимизация. Паскаль

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

Задачи

  1. У вас есть функция:
    program my_program;
    type b = array[1..10] of 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  
      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; 
    
    • Что делает эта функция? (добавьте текстовое описание)
    • В данной функции есть лишние переменные, перепишите код так, чтобы они не использовались.
  2. Есть исходный код:
    var s:string;  i, n: Integer;
      a:  array[1..8] of char;
    begin
     writeln('Vvedite stroku');
     readln(s);
     n := 1;
     while(n<10) do      // 1-8
       begin
       for i:=1 to Length(s) do
           if (s[i]>='0')and(s[i]<='9') then
             begin
               a[n]:=s[i]; 
               inc(n); 
             end;
       end;
     for i:=low(a) to high(a) do
       write(a[i],' '); // выводим массив
     readln();
    end.
    

    Задача:

    • Определить, что делает эта программа (добавьте текстовое описание)
    • В ней есть лишние конструкции -- перепишите код оптимальным образом