Это рекурсивный вызов процедуры. При первом вызове F(7) по условию if n>1 then ... будет вызов этой же процедуры f(n div 2); или f(3), далее, т.к. 3>1, то снова будет вызвана процедура f(3 div 2) или f(1), теперь не выполняется условие n>1, следовательно, будет выполнен оператор write ('**'); - напечатаются две звездочки, после выхода из процедуры продолжится выполнение процедуры при втором вызове - будут напечатаны еще 2 звездочки, затем продолжится выполнение при первом вызове - еще будут напечатаны 2 звездочки. В результате вызова f(7) будут напечатаны 6 звездочек .
var n: integer;
begin
repeat
n:=readinteger('Введите порядковый номер: ');
until n in [1..52];
case (n mod 13) of
1: write ('Двойка');
2: write ('Тройка');
3: write ('Четверка');
4: write ('Пятерка');
5: write ('Шестерка');
6: write ('Семерка');
7: write ('Восьмерка');
8: write ('Девятка');
9: write ('Десятка');
10: write ('Валет');
11: write ('Дама');
12: write ('Король');
0: write ('Туз');
end;
if n mod 13<>0 then n:=(n div 13) + 1 else n:=n div 13;
case n of
1: write (' бубен');
2: write (' черви');
3: write (' трефы');
4: write (' пики');
end;
end.