while a>0 dobeginq:=a mod 10;b:=b*10+q;a:=a div 10;end;Этот фрагмент формирует число, обратное заданному числу а, это число в конце будет находится в ячейке b. Для примера рассмотрим короткое число. Пусть а=123123>0 поэтому все команды будут выполняться:q:=a mod 10; Остаток от деления 123 на 10: q=3 b:=b*10+q; Записываем ее в b b=0*10+3=3 (Вот поэтому сначала b должен быть 0)a:=a div 10; Откидываем от а последний разряд: а=12 (берем целую часть деления 123 на 10)идем в начало цикла12>0 поэтому все команды будут выполняться:q:=a mod 10; Остаток от деления 12 на 10: q=2b:=b*10+q; Записываем ее в b b=3*10+2=32a:=a div 10; Откидываем от а последний разряд: а=1 (берем целую часть деления 12 на 10)идем в начало цикла1>0 поэтому все команды будут выполняться:q:=a mod 10; Остаток от деления 1 на 10: q=1b:=b*10+q; Записываем ее в b b=32*10+1=321a:=a div 10; Откидываем от а последний разряд: а=0 (берем целую часть деления 1 на 10)идем в начало цикла. Условие 0>0 не выполняется, переходим к командам после цикла. А в b находится число, перевернутое по отношению к исходному.