ОГЭ по информатике задание 10

ОГЭ по информатике задание 10

ОГЭ по информатике задание 10

Тема: «Циклический алгоритм обработки массива чисел»

В таблице Dat хранятся данные о количестве сделанных учениками заданий (Dat[1] заданий сделал первый ученик, Dat[2] – второй и т. д.). Определите, какое число будет напечатано в результате работы следующей программы, написанной на языке Паскаль.

var k, m, n: integer;
Dat: array[1..10] of integer;

begin

  Dat[1] := 7;  Dat[2] := 9;
  Dat[3] := 10; Dat[4] := 5;
  Dat[5] := 6;  Dat[6] := 7;
  Dat[7] := 9;  Dat[8] := 10;
  Dat[9] := 6;  Dat[10] := 9;
  m := 0;
  n := 0;

  for k := 1  to 10 do
    if  Dat[k] >= m then
      begin
        m := Dat[k];
        n := k
      end;

writeln(n)
end.

Данный пример взят из открытого банка заданий по информатике на сайте http://fipi.ru

РЕШЕНИЕ

Задание аналогично  ЕГЭ по информатике задание 19

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

В языке программирования Паскаль программа состоит из заголовкараздела описаний и исполняемой части. Служебные слова Pascal, обозначающие начало определенного блока программы, выделены жирным шрифтом.

Program – блок описания заголовка программы в Паскале имеет декоративное значение и может отсутствовать.

Const – блок описания  констант. Может отсутствовать если константы в программе не предусмотрены.

Var — блок описания переменных с указанием их типа, например, тип  integer означает целочисленные переменные.

Begin — end. – служебные слова, находящиеся в блоке операторов. Begin начинает исполняемую часть программы, а end. (точка в конце обязательна) – ее завершает.

Для примера напишем простую программу нахождения суммы двух чисел. Писать программу можно в программе PascalABC.NET, либо в онлайн-режиме, пройдя по этой ссылке.

Сумма чисел на Паскале

Приступаем к решению задачи №10 ОГЭ по информатике. В программе используется одномерный массив из целых чисел от Dat[1] до Dat[10]. Структура программы выглядит так:

Структура программы на языке Паскаль

После входных данных начинается цикл с параметром for, в котором значения переменных m и n меняются.

For — это  цикл, в котором тело выполняется заданное количество раз, поэтому его ещё называют циклом со счетчиком. В данной программе цикл должен выполниться от 1 до 10 раз.

В цикле содержится условный оператор if (если), который  находит значение элемента массива больше, либо равного переменной m, а также его порядковый номер n. Значения m и n будут меняться, если условие истинно.

for k := 1  to 10 do
    if  Dat[k] >= m then
      begin
        m := Dat[k];
        n := k
      end;

Выполним все 10 шагов цикла, а результаты будем заносить в таблицу:

Таблица одномерного массива

Вместо Dat[k] будем подставлять номер шага в цикле, например, для 1 шага запись будет выглядеть Dat[1], для 2 шага Dat[2] и.т.д.

1 ШАГ

for k := 1  to 10 do
    if  Dat[1] >= m then
      begin
        m := Dat[1];
        n := 1
      end;

Данный алгоритм читается так: если значение Dat[1] больше, либо равно значению в переменной m, тогда в переменную m присвоим значение, которое было в Dat [1], а в переменную n внесём порядковый номер массива,т.е. 1.

Подставляем значения: если 7 > = 0, тогда m:=7 и n:=1. Так, как условие истинно , то переменные m и n изменились, запишем в таблицу новые значения:

Таблица одномерного массива

2 ШАГ

for k := 1  to 10 do
    if  Dat[2] >= m then
      begin
        m := Dat[2];
        n := 2
      end;

Данный алгоритм читается так: если значение Dat[2] больше, либо равно значению в переменной m, тогда в переменную m присвоим значение, которое было в Dat [2], а в переменную n внесём порядковый номер массива,т.е. 2.

Подставляем значения: Если 9 > = 7, тогда m:=9 и n:=2. Так, как условие истинно , то переменные m и n изменились, запишем в таблицу новые значения:

Таблица одномерного массива

3 ШАГ

for k := 1  to 10 do
    if  Dat[3] >= m then
      begin
        m := Dat[3];
        n := 3
      end;

Данный алгоритм читается так: если значение Dat[3] больше, либо равно значению в переменной m, тогда в переменную m присвоим значение, которое было в Dat [3], а в переменную n внесём порядковый номер массива,т.е. 3.

Подставляем значения: Если 10 > = 9, тогда m:=10 и n:=3. Так, как условие истинно , то переменные m и n изменились, запишем в таблицу новые значения:

Таблица одномерного массива_03

4 ШАГ

for k := 1  to 10 do
    if  Dat[4] >= m then
      begin
        m := Dat[4];
        n := 4
      end;

Данный алгоритм читается так: если значение Dat[4] больше, либо равно значению в переменной m, тогда в переменную m присвоим значение, которое было в Dat [4], а в переменную n внесём порядковый номер массива,т.е. 4.

Подставляем значения: Если 5 > = 10, тогда m:=5 и n:=4. Так, как условие ложно , то переменные m и n не изменились, На 4 шаге  значения m и n остались прежние:

Таблица одномерного массива_03

5 ШАГ

for k := 1  to 10 do
    if  Dat[5] >= m then
      begin
        m := Dat[5];
        n := 5
      end;

Данный алгоритм читается так: если значение Dat[5] больше, либо равно значению в переменной m, тогда в переменную m присвоим значение, которое было в Dat [5], а в переменную n внесём порядковый номер массива,т.е. 5.

Подставляем значения: Если 6 > = 10, тогда m:=6 и n:=5. Так, как условие ложно , то переменные m и n не изменились, На 5 шаге  значения m и n остались прежние:

 

Таблица одномерного массива_03

6 ШАГ

for k := 1  to 10 do
    if  Dat[6] >= m then
      begin
        m := Dat[6];
        n := 6
      end;

Данный алгоритм читается так: если значение Dat[6] больше, либо равно значению в переменной m, тогда в переменную m присвоим значение, которое было в Dat [6], а в переменную n внесём порядковый номер массива,т.е. 6.

Подставляем значения: Если 7 > = 10, тогда m:=7 и n:=6. Так, как условие ложно , то переменные m и n не изменились, На 6 шаге  значения m и n остались прежние:

 

Таблица одномерного массива

7 ШАГ

for k := 1  to 10 do
    if  Dat[7] >= m then
      begin
        m := Dat[7];
        n := 7
      end;

Данный алгоритм читается так: если значение Dat[7] больше, либо равно значению в переменной m, тогда в переменную m присвоим значение, которое было в Dat [7], а в переменную n внесём порядковый номер массива,т.е. 7.

Подставляем значения: Если 9 > = 10, тогда m:=9 и n:=7. Так, как условие ложно , то переменные m и n не изменились, На 7 шаге  значения m и n остались прежние:

 

Таблица одномерного массива

8 ШАГ

for k := 1  to 10 do
    if  Dat[8] >= m then
      begin
        m := Dat[8];
        n := 8
      end;

Данный алгоритм читается так: если значение Dat[8] больше, либо равно значению в переменной m, тогда в переменную m присвоим значение, которое было в Dat [8], а в переменную n внесём порядковый номер массива,т.е. 8.

Подставляем значения: Если 10 > = 10, тогда m:=10 и n:=8. Так, как условие истинно , то переменные m и n изменились, запишем в таблицу новые значения:

Таблица одномерного массива_08

9 ШАГ

for k := 1  to 10 do
    if  Dat[9] >= m then
      begin
        m := Dat[9];
        n := 9
      end;

Данный алгоритм читается так: если значение Dat[9] больше, либо равно значению в переменной m, тогда в переменную m присвоим значение, которое было в Dat [9], а в переменную n внесём порядковый номер массива,т.е. 9.

Подставляем значения: Если 6 > = 10, тогда m:=10 и n:=9. Так, как условие ложно , то переменные m и n не изменились, На 9 шаге  значения m и n остались прежние:

Таблица одномерного массива_08

10 ШАГ

for k := 1  to 10 do
    if  Dat[10] >= m then
      begin
        m := Dat[10];
        n := 10
      end;

Данный алгоритм читается так: если значение Dat[10] больше, либо равно значению в переменной m, тогда в переменную m присвоим значение, которое было в Dat [10], а в переменную n внесём порядковый номер массива,т.е. 10.

Подставляем значения: Если 9> = 10, тогда m:=9 и n:=10. Так, как условие ложно , то переменные m и n не изменились, На 10 шаге  значения m и n остались прежние:

Таблица одномерного массива_08

После 10 шага цикл завершит работу и оператор writeln(n) выведет результат 8. Обратите внимание, что должна выводить программа, то и будет ответом в данной задаче.

Например, если будет записано writeln(n + m), ответ будет 18.

Ответ: 8

P.s. Данную задачу можно скопировать или набрать в программе Паскаль и проверить результат:

ОГЭ по информатике задание 10 Проверка программы в pascalabc

Чтобы получить хороший старт в сфере ИТ и использовать время учебы с максимальной эффективностью, очень важно правильно выбрать ВУЗ и специальность.

Foxford
Информатика в школе