Решение ГИА по информатике 10 задание из демоверсии 2017 года. Задание на умение исполнить циклический алгоритм обработки массива чисел, записанный на алгоритмическом языке.
Читаем условие данного задания.
Я являюсь сторонником языка Паскаль, поэтому я буду отталкиваться от данного языка. Можете посмотреть, почему я выбираю именно этот язык в ответе на 9 задание ОГЭ.
Давайте начнем анализ. Я выпишу в таблицу значение по каждому элементу. Первая строчка отвечает за количество голосов Dat. Вторая строка отвечает за номер исполнителя k.
Чем выступает переменная k? Это переменная счетчик, которая также выступает в роли индекса элементов массива Dat. Она объявлена как тип данных integer.
Dat [k] – это обращение к элементу массива Dat с индексом k. Если мы будем рассматривать в совокупности это обозначение, то это обращение к элементу массива. У нас значением элементов массива выступает количество голосов.
Dat [8] – обращение в 8-му элементу массива Dat. Значением этого элемента является число 12, т. е. Dat [8] = 12.
У нас в программе фигурирует переменная m типа данных integer. Это переменная значения, которая запоминает значение элемента массива с индексом k, если выполняется условие if [Dat] k > m then. (Если [Dat] k больше m то в этом случае мы в переменную m присваиваем значение элемента массива Dat с индексом k)
По сути, мы разобрали все три переменные задействованные в данной программе.
Давайте проведем анализ уже более детальный данного фрагмента программы. Выпишем исходный массив заполним его значениями.
Первая строка отвечает за значение элемента. Вторая строка показывает значение индекса. Изначально переменная m := 0;.
Далее следует цикл for т. е. цикл со счетчиком, переменная k у нас меняет значение от 1 до 10.
for k := 1 to 10 do
Напомню что в цикле for у нас переменная счетчик увеличивается на 1 автоматически. Как только заканчивается тело цикла у нас k увеличивается на единицу.
Мы запускаем цикл и смотрим Dat[k]>m, у нас вместо k подставляется 1 получается Dat[k] это значение 16 если оно больше m вместо m подставляем 0, то m присваивается текущее значение, т. е. m становится равное 16.
m = 16.
Тело закончилось k увеличивается на 1 и повторяется еще раз Dat[2]>m, Dat[2] это у нас значение 20, текущее значение переменной m это 16. Т. е. если 20 больше 16 это верно, переменной m присваивается текущее значение, а именно 20.
m = 20.
Опять попадаем в начало цикла у нас переменная k автоматически увеличивается на 1. Третий элемент он равен 20 это не больше 20, значит значение переменной m не меняется.
Затем четвертый элемент k = 4, значит четвертый элемент равняется 41. 41 больше 20 значит переменной m присваивается текущее значение, а именно 41.
m = 41.
Переходим к пятому элементу значение 14. Данный if не выполняется потому что выражение выдает ложь.
Переходим к шестому элементу 21 не больше 41 поэтому m ничего не присваивается.
Переходим к седьмому элементу 28 это ложь значит, ничего не происходит.
Переходим к 8 элементу 12 больше 41 это не правда, значит переменная m остается 41.
Переходим к 9 элементу 15 не больше 41, m не изменяется 41.
Переходим к последнему элементу у него индекс 10 значение 35 больше 41 это не правда поэтому ничего не происходит.
У нас в итоге цикл закончился и на экран выводится значение переменной m оно составляет значение 41.
В результате работы программы будет напечатано значение 41.
В чем смысл данной задачи. Здесь запрограммирован элементарнейший алгоритм это поиск наибольшего значения среди элементов массива, по сути, поиск наибольшего.
Если внимательно посмотрите, то 41 это наибольшее значение их всех представленных 10 значений. Это запрограммировано поиск наибольшего элемента.
Если бы потребовалось бы найти наименьший элемент. То все просто меняется только 1 символ. Операция отношения больше(if Dat[k]>m then), меняется на операцию отношение меньше (if Dat[k]<m then). Так же еще и переменная m тоже поменялась.
Ответ: 41