Первая программа находит максимальное значение (об этом говорит код
if Dat[k] > m then
m := Dat[k]) Следовательно в m будет храниться 8. Выведет также 8.
Во второй программе из 50 9 раз(при к равных 0,1,2,3,4,5,6,7,8) вычитается число 4. 50-4*9=50-36=14.
Во третьей программе из 50 9 раз(при к равных 1,2,3,4,5,6,7,8,9) вычитается число 3. 50-3*9=50-27=23.