Вопрос:

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

Смотреть решения всех заданий с листа

Ответ:

Разбираем код

Перед нами фрагмент программы, который, судя по всему, должен вычислять степень числа n в степени m. Давайте посмотрим на строки:

  • i:=1; — инициализируем счетчик i единицей.
  • r:=1; — инициализируем результат r единицей.
  • i<=m — это условие продолжения цикла.
  • r:=r*n; — умножаем текущий результат на n.
  • i:=i+1; — увеличиваем счетчик на единицу.
  • write (r); — выводим результат.

Чтобы программа корректно возвела n в степень m, нам нужен цикл. Для этого нам понадобится служебное слово, которое начинает цикл, условие цикла, действие внутри цикла и завершение цикла.

Исходя из структуры кода, нам нужны:

  1. Начало цикла (begin).
  2. Само условие (i<=m), которое уже есть.
  3. Тело цикла, которое выполняется, пока условие истинно. Оно включает умножение результата и увеличение счетчика (r:=r*n; i:=i+1;).
  4. Слово, которое следует за условием цикла (do).
  5. Конец цикла (end).

Теперь давайте подставим недостающие слова в правильном порядке:

i:=1;
r:=1;
begin
while i<=m do
begin
r:=r*n;
i:=i+1;
end;
end;
write (r);

Однако, в предложенных вариантах нет while. Давайте попробуем подставить предложенные варианты:

  • begin — начало блока кода.
  • end — конец блока кода.
  • while — начало цикла с условием.
  • do — следует за условием цикла while.

Правильный порядок для цикла while будет:

  1. begin (начало блока)
  2. while i<=m do (условие цикла)
  3. begin (начало тела цикла)
  4. r:=r*n;
  5. i:=i+1;
  6. end (конец тела цикла)
  7. end (конец блока)

Учитывая, что нам нужно вставить пропущенные слова, и в коде есть `i<=m`, это явно цикл.

Строки `r:=r*n;` и `i:=i+1;` должны быть внутри цикла.

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

  1. begin (начало общего блока)
  2. while i<=m do (начало цикла)
  3. begin (начало тела цикла)
  4. r:=r*n;
  5. i:=i+1;
  6. end (конец тела цикла)
  7. end (конец общего блока)

Если смотреть на пропуски, то первый пропуск (перед `i<=m`) должен быть begin (или while, если бы он был в вариантах). Второй пропуск (после `i:=i+1;`) должен быть end. Третий пропуск (после `write (r);`) должен быть end.

Но в задании просят указать порядок пропущенных служебных слов. В коде есть два пропуска, обозначенные красными прямоугольниками, и еще один пропуск для начала конструкции `i<=m`.

Рассмотрим структуру цикла while ... do ...:

i:=1;
r:=1;
begin // Первый пропуск
while i<=m do // Условие цикла
begin // Второй пропуск
r:=r*n;
i:=i+1;
end;
end; // Третий пропуск
write (r);

Судя по расположению, первый пропуск — это начало блока, который может быть begin. Второй пропуск — это начало тела цикла, который должен быть begin. Третий пропуск — это конец блока, который должен быть end.

Однако, если мы рассматриваем структуру while ... do ..., то после условия i<=m идет do, а затем тело цикла. Если предположить, что пропуски — это слова, которые нужно вставить в логической последовательности:

i:=1;
r:=1;
begin
while i<=m do
begin
r:=r*n;
i:=i+1;
end;
end;
write (r);

Судя по контексту, красные прямоугольники скрывают ключевые слова для построения цикла.

Первый красный прямоугольник стоит перед i<=m. Логично предположить, что это часть конструкции while i<=m do. Поэтому первым должен идти while, а затем do.

Второй красный прямоугольник стоит после i:=i+1;. Это конец тела цикла, поэтому там должен быть end.

Третий красный прямоугольник стоит после write (r);. Это конец программы, поэтому там должен быть end.

Давайте посмотрим на варианты:

  • begin
  • end
  • while
  • do

Если предположить, что первый пропуск - это begin, второй - do, а третий - end, то получится:

i:=1;
r:=1;
begin
while i<=m do // здесь должен быть do, но его нет
begin
r:=r*n;
i:=i+1;
end;
end;
write (r);

Если предположить, что пропуски — это слова, которые нужно вставить, чтобы получить работающий цикл:

i:=1;
r:=1;
[ПРОПУСК 1] i<=m [ПРОПУСК 2]
r:=r*n;
i:=i+1;
[ПРОПУСК 3]
write (r);

Чтобы получить цикл while, нужно:

  1. begin (чтобы начать блок)
  2. while i<=m do (сама конструкция цикла)
  3. begin (чтобы начать тело цикла)
  4. r:=r*n;
  5. i:=i+1;
  6. end (чтобы закрыть тело цикла)
  7. end (чтобы закрыть блок)

В задании есть два красных прямоугольника, но по логике нужно больше слов.

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

Первый красный прямоугольник стоит перед i<=m. Это начало условия цикла. Следовательно, там должно быть while.

Второй красный прямоугольник стоит после r:=r*n; i:=i+1;. Это конец тела цикла. Следовательно, там должно быть end.

Но после while должно идти do. Если предположить, что do — это тоже пропуск, который не обозначен красным, а просто находится в списке вариантов.

Давайте попробуем такой порядок:

  1. begin (Начало программы/блока)
  2. while (Начало цикла)
  3. do (После условия цикла)
  4. end (Конец тела цикла)
  5. end (Конец программы/блока)

Если первый пропуск — это begin, второй — do, третий — end, то код будет:

i:=1;
r:=1;
begin
while i<=m do
begin
r:=r*n;
i:=i+1;
end
end;
write (r);

Это выглядит логично. Но в картинке два красных прямоугольника. Предположим, они обозначают два места, куда нужно вставить слова.

Первое место (перед `i<=m`) — это начало цикла. Там должно быть while.

Второе место (после `r:=r*n; i:=i+1;`) — это конец тела цикла. Там должно быть end.

А слово do, которое следует за условием, и begin, которое может быть в начале, и end, которое может быть в конце, — они либо уже есть, либо их нужно выбрать из списка.

Посмотрим на варианты еще раз: begin, end, while, do.

Самый вероятный вариант — это построение цикла while-do.

i:=1;
r:=1;
begin // Может быть здесь begin
while i<=m do // А здесь begin или сразу while?
begin // Тело цикла
r:=r*n;
i:=i+1;
end; // Конец тела цикла
end; // Конец блока
write (r);

Если предположить, что пропуски — это последовательность слов, которую нужно собрать:

i:=1;
r:=1;
begin
while i<=m do
begin
r:=r*n;
i:=i+1;
end;
end;
write (r);

У нас есть 2 красных прямоугольника. Первый перед i<=m, второй после i:=i+1;.

Если первый прямоугольник — это while, а второй — end, то нам не хватает do.

Давайте предположим, что пропущенные слова — это только те, что обозначены красными прямоугольниками, и нам нужно выбрать их из списка и указать порядок.

Первый красный прямоугольник: перед i<=m. Это явно начало условия цикла. Скорее всего, это while.

Второй красный прямоугольник: после i:=i+1;. Это конец тела цикла. Скорее всего, это end.

Тогда, если бы мы собирали полный код, нам понадобилось бы еще do (после i<=m) и, возможно, begin в начале и end в конце.

Но если вопрос именно о порядке пропущенных слов, то, исходя из контекста, это слова, которые формируют цикл while i<=m do ... end.

Исходя из вариантов, самый логичный порядок для цикла while:

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

Учитывая, что есть два красных прямоугольника, а в списке 4 слова, возможно, нужно выбрать два слова и поставить их в правильном порядке.

Если первый прямоугольник — это begin, а второй — end, то код может быть:

i:=1;
r:=1;
begin
while i<=m do
begin
r:=r*n;
i:=i+1;
end;
end;
write (r);

В этом случае пропущены begin и end.

Если предположить, что красные прямоугольники — это два места, куда нужно вставить слова, и нам нужно выбрать правильный порядок из списка:

Первое место: перед i<=m. Это должно быть while.

Второе место: после i:=i+1;. Это конец тела цикла, то есть end.

Таким образом, если бы мы вставляли только эти два слова, порядок был бы while, затем end.

Но у нас есть и другие варианты: begin, do.

Рассмотрим наиболее полный вариант кода для возведения в степень:

i:=1;
r:=1;
begin
while i<=m do
begin
r:=r*n;
i:=i+1;
end;
end;
write (r);

Пропущенные слова, которые нужно вставить:

  1. begin (начало блока)
  2. while (начало цикла)
  3. do (за условием)
  4. begin (начало тела цикла)
  5. end (конец тела цикла)
  6. end (конец блока)

Учитывая, что есть только два красных прямоугольника, и они стоят перед i<=m и после i:=i+1;.

Первый прямоугольник (перед i<=m) — это, скорее всего, begin, а вся конструкция while i<=m do идет дальше. Или это может быть while, если begin уже где-то есть.

Второй прямоугольник (после i:=i+1;) — это end, который закрывает тело цикла.

Если мы ориентируемся на предложенные варианты и два пропуска:

Первый пропуск (перед i<=m) — это begin.

Второй пропуск (после i:=i+1;) — это end.

Но это не вся конструкция цикла.

Давайте попробуем другой подход. Какие слова ОБЯЗАТЕЛЬНО нужны для цикла?

while, do, begin (для тела), end (для тела).

И, возможно, begin и end для внешнего блока.

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

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

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

  1. Перед i<=m.
  2. Между r:=r*n; i:=i+1; и write (r); (здесь явно end).
  3. Второй красный прямоугольник стоит после i:=i+1;.

Наиболее вероятная конструкция: begin while ... do begin ... end end.

Первый пропуск (красный прямоугольник 1) — это begin.

Второй пропуск (красный прямоугольник 2) — это end.

Но нам нужно указать порядок следования ВСЕХ пропущенных СЛУЖЕБНЫХ СЛОВ.

Исходя из логики, чтобы получился цикл:

i:=1;
r:=1;
begin
while i<=m do
begin
r:=r*n;
i:=i+1;
end;
end;
write (r);

В этом случае нам нужны слова: begin (дважды), while, do, end (дважды).

Если выбирать из предложенных вариантов, и учитывать, что нам нужно указать ПОРЯДОК, то:

1. begin (начала блока)

2. while (начала цикла)

3. do (после условия)

4. end (конец тела цикла)

Это самый логичный порядок для построения такого цикла.

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

ГДЗ по фото 📸
Подать жалобу Правообладателю