ОГЭ по информатике задание 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 изменились, запишем в таблицу новые значения:
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 остались прежние:
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 остались прежние:
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 изменились, запишем в таблицу новые значения:
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 остались прежние:
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 остались прежние:
После 10 шага цикл завершит работу и оператор writeln(n) выведет результат 8. Обратите внимание, что должна выводить программа, то и будет ответом в данной задаче.
Например, если будет записано writeln(n + m), ответ будет 18.
Ответ: 8
P.s. Данную задачу можно скопировать или набрать в программе Паскаль и проверить результат:
Чтобы получить хороший старт в сфере ИТ и использовать время учебы с максимальной эффективностью, очень важно правильно выбрать ВУЗ и специальность.