В таблице dat представлены данные. Подробное решение задач огэ по информатике. Что нужно знать для выполнения задания

Для Андроид 02.07.2020

Представляю решение 10 задания ОГЭ-2016 по информатике из проекта демоверсии. По сравнению с демоверсией 2015 года, 10 задание не изменилось. Это задание на умение исполнить циклический алгоритм обработки массива чисел, записанный на алгоритмическом языке (Алгоритм, свойства алгоритмов, способы записи алгоритмов. Блок-схемы. Представление о программировании. Алгоритмические конструкции). Это задание повышенного уровня сложности, ответом к нему является целое число, которое нужно записать в поле ответа.

Скриншот 10 задания.

Задание:

В таблице Dat представлены данные о количестве голосов, поданных за 10 исполнителей народных песен (Dat -количество голосов, поданных за первого исполнителя; Dat — за второго и т. д.). Определите, какое число будет напечатано в результате работы следующей программы. Текст программы приведён на трёх языках программирования.

Пример на языке Паскаль

Var k, m: integer;
Dat: array of integer;
Begin
Dat := 16; Dat := 20;
Dat := 20; Dat := 41;
Dat := 14; Dat := 21;
Dat := 28; Dat := 12;
Dat := 15; Dat := 35;
m:= 0;
for k:= 1 to 10 do
if Dat[k]>m then
begin
m:= Dat[k]
end;
writeln(m);
End.

В данной программе создан массив из 10 чисел. В цикле от 1 до 10 включительно значение элемента массива сравнивается со значением переменной m. Если оказывается, что значение элемента массива строго больше значения переменной m, то переменной m присваивается значение элемента массива (изначально, до цикла значение переменной m было равно 0).

Перефразируя, получаем следующее. Для каждого исполнителя народных песен с 1 по 10 включительно количество голосов сравнивается со значением m. Если количество голосов больше m, то переменной m присваиваем значение равное количеству голосов. В результате выполнения цикла получаем число m, которое показывает наибольшее количество голосов отданное одному из участников, т.е. m=41.

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

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

Var k, m, n: integer; Dat: array of integer; begin Dat := 7; Dat := 9; Dat := 10; Dat := 5; Dat := 6; Dat := 7; Dat := 9; Dat := 10; Dat := 6; Dat := 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

РЕШЕНИЕ

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

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

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

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

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

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

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

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

После входных данных начинается цикл с параметром 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 >= m then begin m:= Dat; n:= 1 end;

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

Подставляем значения: если 7 > = 0, тогда m:=7 и n:=1.

2 ШАГ

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

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

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

3 ШАГ

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

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

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

4 ШАГ

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

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

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

5 ШАГ

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

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

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

6 ШАГ

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

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

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

7 ШАГ

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

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

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

8 ШАГ

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

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

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

9 ШАГ

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

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

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

10 ШАГ

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

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

В таблице Dat представлены данные о количестве голосов, поданных за 10 исполнителей народных песен (Dat - количество голосов, поданных за первого исполнителя; Dat - за второго и т. д.). Определите, какое число будет напечатано в результате работы следующей программы. Текст программы приведён на трёх языках программирования. Алгоритмический язык Бейсик Паскаль алг нач целтаб Dat цел k, m Dat := 16 Dat := 20 Dat := 20 Dat := 41 Dat := 14 Dat := 21 Dat := 28 Dat := 12 Dat := 15 Dat := 35 m:= 0 нц для k от 1 до 10 если Dat[k] больше m то m:= Dat[k] все кц вывод m кон DIM Dat(10) AS INTEGER DIM k,m AS INTEGER Dat(1) = 16: Dat(2) = 20 Dat(3) = 20: Dat(4) = 41 Dat(5) = 14: Dat(6) = 21 Dat(7) = 28: Dat(8) = 12 Dat(9) = 15:Dat(10) = 35 m = 0 FOR k = 1 TO 10 IF Dat(k) больше m THEN m = Dat(k) ENDIF NEXT k PRINT m Var k, m: integer; Dat: array of integer; Begin Dat := 16; Dat := 20; Dat := 20; Dat := 41; Dat := 14; Dat := 21; Dat := 28; Dat := 12; Dat := 15; Dat := 35; m:= 0; for k:= 1 to 10 do if Dat[k] больше m then begin m:= Dat[k] end; writeln(m); End.

Похожие вопросы

  • Ребят,помогите:(lg(x+√3)+lg(x-√3)=0
  • Стала девочка котенка кормить. Принесла овсяной кашки,отвернулся он от чашки. Принесла ему редиски, отвернулся он от миски. Принесла кусочек сала, говорит котенок мало. Найдите в тексте слова с орфограммой "безударный гласный в...
  • . Что больше: 26% учащихся школы или учащихся этой школы? А. 26% учащихся Б. учащихся В. Эти числа равны Г. Данных для ответа недостаточно
  • Помогите правильно перевести письмо выдуманному другу. Дорогая Нелли, Привет помнишь я хотела тебе рассказать о моём селе? У нас в селе прекрасная природа. Она особо хороша летом. Я не могу с точностью описать нашу сельскую п...
  • 1) карбонат кальция --> оксид кальция + углекислый газ 2) сульфат меди (II) + гидроксид натрия --> …… 3) соляная кислота + железа --> …… 4) оксид лития + вода --> гидроксид лития. Укажите типы реакций, запишите одно из...
  • В первом бассейне было 1 600 кубических метров воды,во 2 бассейне 1215 квадратных метров воды.Чтобы вычистить 1 бассейн,из него надо вы качать насосом 65 кубических метра воды в час.Чтобы заполнить 2 бассейн,в него надо залить...
  • За 5 тетрадей заплатили n коп., а за 11 блокнотов - на m коп. больше. На сколько копеек блокнот дешевле тетради? Надо составить БУКВЕННОЕ ВЫРАЖЕНИЕ и найти его значение при n=1000, m=320.

Массив в нашем понимании - обычная таблица. Значения в таблице должны быть одного типа: целые числа, или вещественные, или строки, или логические значения. Как правило, в школьном курсе рассматриваются задачи с целочисленными таблицами. Элементы таблицы находятся в памяти рядом и доступ к ним возможен через их порядковый номер (индекс) в таблице.

А
1 2 3 4 5
55 36 134 75 100

Пусть А - таблица из пяти элементов. Тогда A = 55, A = 36, A = 134, A = 75, A = 100

Чтобы в Кумире работать с таблицами, необходимо выделить для ее хранения память:

Алг нач целтаб А

Таблицу можно заполнить вручную:

A := 55 A := 36 A := 134 A := 75 A := 100

Если элементов много, тогда лучше использовать цикл (переменная цикла i должна быть объявлена в начале программы):

Нц для i от 1 до 5 ввод A[i] кц

Если необходимо изменить значения всех элементов таблицы (например, увеличить в 2 раза), то опять же лучше использовать цикл:

Нц для i от 1 до 5 A[i] := A[i]*2 кц

Вывод всех значений элементов таблицы тоже выполняем в цикле:

Нц для i от 1 до 5 вывод A[i],нс кц

Поиск значения максимального элемента и его номера в таблице

Примечание: задача поиска минимального элемента отличается только знаком сравнения

Задача разбивается на несколько этапов:

1. За начальный максимум берем самый первый элемент в таблице, запомнив его номер

Imax:= 1

2. Будем проверять все остальные элементы (со 2-го по последний): если текущий проверяемый элемент будет больше максимума, то запоминаем номер текущего элемента в imax

Нц для i от 2 до 5 если A[i] > A то imax:= i все кц

3. По найденному номеру максимального элемента выводим сам максимум:

Вывод A

Приведем полный текст программы:

Алг ПоискМах нач целтаб А цел imax, i нц для i от 1 до 5 ввод A[i] кц imax:= 1 нц для i от 2 до 5 если A[i] > A то imax:= i все кц вывод A кц

Нахождение суммы и среднего значения всех элементов таблицы

Сначала необходимо задать начальное значение суммы:

Затем в цикле будем добавлять значения элементов к сумме:

нц для i от 1 до 5 s:= s + A[i] кц

Среднее значение всех элементов таблицы найдем как отношение суммы к количеству элементов:

Sr:= s/5

Приведем полный текст программы:

Алг СумСред нач целтаб А цел i, s вещ sr | среднее число будем вещественным нц для i от 1 до 5 ввод A[i] кц s:= 0 нц для i от 1 до 5 s:= s + A[i] кц sr:= s/5 вывод "Сумма всех элементов:",s,нс вывод "Среднее значение всех элементов:",sr кц

Примеры решения задач

Пример 1.

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

Алг нач целтаб Dat цел k, m Dat := 16 Dat := 20 Dat := 20 Dat := 41 Dat := 14 Dat := 21 Dat := 28 Dat := 12 Dat := 15 Dat := 35 m:= 0 нц для k от 1 до 10 если Dat[k]>m то m:= Dat[k] все кц вывод m кон

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

Рассмотрим следующий фрагмент программы:

M:= 0 нц для k от 1 до 10 если Dat[k]>m то m:= Dat[k] все кц

Видно, что в цикле каждый элемент сравнивается с переменной m, которая до цикла была равна нулю. Если текущий проверяемый элемент больше чем m, тогда в переменную m записывается значение текущего элемента. После выполнения цикла в переменной m будет храниться значение наибольшего элемента.

Другими словами, программа находит максимальное значение среди всех ячеек таблицы. Это значение элемента Dat = 41

Ответ: 41

Пример 2:

Алг нач целтаб Dat цел k, m Dat := 7; Dat := 9 Dat := 10;Dat := 5 Dat := 6; Dat := 7 Dat := 9; Dat := 8 Dat := 6; Dat:= 9 m:= 0 нц для k от 1 до 10 если Dat[k] < 7 то m:= m + 1 все кц вывод m кон

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

В цикле к от 1 до 10 проверяется: если количество выполненных заданий у ученика под номером к меньше 7, то таких учеников становится на единицу больше (m:= m +1).

Другими словами, программа подсчитывает количество учеников, выполнивших менее 7 заданий.

Таких учеников у нас трое: Dat, Dat, Dat

Ответ: 3

Пример 3:

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

Алг нач целтаб Dat цел k, m Dat := 20; Dat := 25 Dat := 19; Dat := 25 Dat := 26; Dat := 22 Dat := 24; Dat := 28 Dat := 26; Dat := 21 Dat := 27 m:= 0 нц для k от 1 до 11 если k > 9 то m:= m + Dat[k] все кц вывод m кон

Внутри цикла для номеров элементов к от 1 до 11 (для всех учеников) проверяется: если номер элемента (ученика) больше 9, то к переменной m добавляется количество выполненных заданий ученика.

Видно, что по условию проходят только ученик под номером 10 (Dat) и ученик под номером 11 (Dat). Соответственно, переменная m будет хранить сумму количеств выполненных заданий этих учеников, 0+21+27=48

Ответ: 48

Пример 4:

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

Алг нач целтаб Dat цел k, m, n Dat := 7; Dat := 9 Dat := 10; Dat := 5 Dat := 6; Dat := 7 Dat := 5; Dat := 8 Dat := 6; Dat := 9 m:= 10; n:= 0 нц для k от 1 до 10 если Dat[k] <= m то m:= Dat[k] n:= k все кц вывод n кон

Значения элементов не превышают 10.

Строка нц для k от 1 до 10 означает, что перебираются все элементы массива (их у нас 10).

Условие если Dat[k] <= m будет верным, когда значение текущего элемента будет меньше или равно m. Если это условие верно, тогда в переменную m запишется значение текущего элемента, а в переменную n - его номер.

Смысл задачи в том, чтобы найти номер минимального элемента! (программа выводит в конце значение n ).

Так как условие нестрогое Dat[k] <= m, то будет найден самый последний минимальный элемент и его номер (Dat).

Если бы условие было строгим - то первый среди одинаковых минимумов (Dat)

В таблице Dat представлены данные о количестве голосов, поданных за 10 исполнителей народных песен (Dat - количество голосов, поданных за первого исполнителя; Dat - за второго и т. д.). Определите, какое число будет напечатано в результате работы следующей программы. Текст программы приведён на трёх языках программирования. Алгоритмический язык Бейсик Паскаль алг нач целтаб Dat цел k, m Dat := 16 Dat := 20 Dat := 20 Dat := 41 Dat := 14 Dat := 21 Dat := 28 Dat := 12 Dat := 15 Dat := 35 m:= 0 нц для k от 1 до 10 если Dat[k]gt;m то m:= Dat[k] все кц вывод m кон DIM Dat(10) AS INTEGER DIM k,m AS INTEGER Dat(1) = 16: Dat(2) = 20 Dat(3) = 20: Dat(4) = 41 Dat(5) = 14: Dat(6) = 21 Dat(7) = 28: Dat(8) = 12 Dat(9) = 15:Dat(10) = 35 m = 0 FOR k = 1 TO 10 IF Dat(k)gt;m THEN m = Dat(k) ENDIF NEXT k PRINT m Var k, m: integer; Dat: array of integer; Begin Dat := 16; Dat := 20; Dat := 20; Dat := 41; Dat := 14; Dat := 21; Dat := 28; Dat := 12; Dat := 15; Dat := 35; m:= 0; for k:= 1 to 10 do if Dat[k]gt;m then begin m:= Dat[k] end; writeln(m); End.

Похожие вопросы

  • Заполни пропуски. Помогите пожалуйста:)
  • Герой освободившый прометея
  • Составь задачу,реши задачу и запиши решение
  • Ребят,помогите:(lg(x+√3)+lg(x-√3)=0
  • Помогите еще решить пожалуйста. Вычисли площадь треугольника, если она в 9раз меньше, чем площадь квадрата с длиной стороны 12см
  • Решите уравнение (8 5/27 - x) - 2 25/27 = 1 25/27
  • Как назывались крестьяне, которых продавали
  • Стала девочка котенка кормить. Принесла овсяной кашки,отвернулся он от чашки. При??есла ему редиски, отвернулся он от миски. Принесла кусочек сала, говорит котенок мало. Найдите в тексте слова с орфограммой "безударный гласный...


Рекомендуем почитать

Наверх