Две причины, одна математическая, другая алгоритмическая.
Математическая: программа делит k на x, на 0 делить нельзя, поэтому т.к. x изначально равен нулю, то цикл while x = 0 do будет повторяться до тех пор, пока не будет введено число, не равное нулю. Фактически, это реализация "защиты от дурака".
Алгоритмическая: это называется инициализация. Несмотря на то, что современные языки сами обнуляют переменные, правила хорошего тона требуют делать инициализацию.