Приведем сначала текст программы:

Program Problem30_3; 
Var
  i,k,l,k1,l1,n:Integer;
  x,y: Array[1..50] Of Integer;
  Flag:Boolean;
Begin
  WriteLn('Задайте количество элементов в первом массиве:');
  ReadLn(k);
  WriteLn('Укажите элементы первого массива:');
  For i:=1 To k Do
   Begin
     Write(i,'-й элемент: ');
     ReadLn(x[i]);
   End;
  WriteLn('Задайте количество элементов во втором массиве:');
  ReadLn(l);
  WriteLn('Укажите элементы второго массива:');
  For i:=1 To l Do
   Begin
     Write(i,'-й элемент: ');
     ReadLn(y[i]);
   End;
  {Основной блок программы.}
  {Напомним, что массивы упорядочены по возрастанию.}
  n:=0; {Количество одинаковых элементов (искомый результат)}
  k1:=0;{Номер текущего элемента в первом массиве}
  l1:=0;{Номер текущего элемента во втором массиве}
  {Пока есть непросмотренные элементы в данных массивах}
  While (k1<>k) And (l1<>l) Do {Тело цикла будет выполняться,}
   Begin  {пока не закончатся элементы хотя бы одного массива}
     If x[k1+1]<y[l1+1] Then {Если текущий элемент 2-го массива}
        Begin   {оказался больше текущего элемента 1-го массива}
           k1:=k1+1; {Берем следующий элемент 1-го массива}
        End
     Else {Эта ветвь выполнится тогда, когда текущий элемент 1-го}
     {массива оказался больше или равен текущему элементу 2-го массива}
        If x[k1+1]>y[l1+1] Then {Если текущий элемент 1-го массива}
           Begin   {оказался больше текущего элемента 2-го массива}
              l1:=l1+1; {Берем следующий элемент 2-го массива}
           End
        Else {Эта ветвь выполнится тогда, когда x[k1+1]=y[l1+1]}
           Begin
             k1:=k1+1; {Переходим к очередным}
             l1:=l1+1; {элементам массивов   }
             n:=n+1; {Увеличиваем на 1 количество одинаковых элементов}
           End;
   End;  
End.
Текст этой программы можно взять здесь.


    Проанализировав текст программы, можно понять принцип ее работы. Отметим только тот факт, что раз нам нужно найти количество одинаковых элементов в массиве, то процесс поиска должен закончиться тогда, когда просмотрены все элементы хотя бы одного массива. В зависимости от результатов сравнения очередных элементов мы "перемещаемся" по первому или второму массиву. И только тогда, когда найдены одинаковые элементы мы "перемещаемся" сразу же по двум массивам (хотя достаточно было "переместиться" по элементам одного любого массива) и увеличиваем количество одинаковых элементов.