Вопрос:

В указанном фрагменте программы возведения числа n в степень m укажите верный порядок следования пропущенных служебных слов.

Ответ:

Решение:

Данный фрагмент программы предназначен для возведения числа n в степень m. Для этого используется цикл. Изначально переменным i и r присваиваются начальные значения: i (счетчик цикла) устанавливается в 1, а r (результат возведения в степень) также устанавливается в 1.

Условие i <= m проверяет, достигли ли мы нужной степени. Если условие истинно, выполняется тело цикла:

  • r := r * n; — результат r умножается на n.
  • i := i + 1; — счетчик цикла увеличивается на 1.

После выполнения тела цикла управление возвращается к проверке условия i <= m. Как только i станет больше m, цикл завершится, и будет выведено значение r.

Логически, для организации такого цикла, нам нужно начать блок с ключевого слова, которое запускает цикл с условием. В данном случае это while. После выполнения цикла, если нужно завершить блок команд, используется end.

Порядок следования пропущенных слов:

  1. while (для начала цикла с условием)
  2. do (часто используется после while в некоторых языках, но здесь его нет в вариантах. В данном контексте, после `while` идет тело цикла, которое должно быть окружено блоком `begin...end` или подобным. Однако, учитывая предоставленные варианты, `do` может служить связующим звеном перед телом цикла, хотя `while (условие) do` более распространен.)
  3. begin (начало блока команд внутри цикла)
  4. end (конец блока команд внутри цикла)

Исходя из предоставленных вариантов, правильный порядок будет следующим:

  1. while
  2. do
  3. begin
  4. end

Однако, в приведенном коде `i<=m` выглядит как условие цикла, и следуют `r:=r*n;` и `i:=i+1;`. После этого идет `write (r);`. Если предположить, что `i<=m` является частью конструкции `while`, то перед ней должно стоять `while`, а после нее — `do`. Тело цикла `r:=r*n; i:=i+1;` должно быть заключено между `begin` и `end`.

Поскольку здесь предлагаются варианты `do`, `begin`, `while`, `end`, и код имеет вид:

i:=1;
r:=1;
[пропуск 1] i<=m [пропуск 2]
[пропуск 3]
r:=r*n;
i:=i+1;
[пропуск 4]
write (r);

Логично предположить, что:

  • [Пропуск 1] = while
  • [Пропуск 2] = do (хотя в некоторых языках `do` может идти после тела цикла, здесь условие стоит перед телом)
  • [Пропуск 3] = begin (начало тела цикла)
  • [Пропуск 4] = end (конец тела цикла)

Таким образом, пропущенные слова будут в следующем порядке:

  1. while
  2. do
  3. begin
  4. end

Если смотреть на предложенные варианты ответа, то последовательность должна быть такой:

while

do

begin

end

Однако, если красный блок перед `i<=m` это `while`, а следующий красный блок это `do`, а после `i:=i+1` стоит `end`, то `begin` может быть пропущен или подразумеваться. Но для полноты структуры цикла `begin` и `end` обычно используются.

Проанализируем варианты:

  • do
  • begin
  • while
  • end

Наиболее вероятная последовательность для цикла:

  1. while (начало цикла)
  2. do (связка перед телом цикла)
  3. begin (начало блока команд)
  4. end (конец блока команд)

Учитывая, что `i<=m` - это условие, то `while` должно стоять перед ним. Затем `do`. Затем тело цикла `r:=r*n; i:=i+1;`, которое обычно обрамляется `begin` и `end`.

Так как есть пропуски, и варианты: `do`, `begin`, `while`, `end`:

Первый пропуск: `while` (начинаем цикл)

Второй пропуск: `do` (следует за условием)

Третий пропуск: `begin` (начало блока команд)

Четвертый пропуск: `end` (конец блока команд)

Таким образом, порядок будет:

  1. while
  2. do
  3. begin
  4. end

Ответ: while, do, begin, end.