Обработка информации:
Это темы для которых создаются проверочные задания №10 основного государственного экзамена (ОГЭ) по информатике.
10 (В) (часть 1, повышенный уровень - задание подразумевает самостоятельное формулирование и запись экзаменуемым ответа в виде последовательности символов, время выполнения - 6 мин, максимальный балл за выполнение задания - 1). Требования к уровню подготовки, освоение которых проверяется в ходе экзамена при ответе на данное задание: оценивать числовые параметры информационных объектов и процессов, умение исполнить циклический алгоритм обработки массива чисел на одном из языков программирования.
var <имя_массива>: array [<мин_знач_индекса>. . <макс_знач_индекса> ] of <тип_элементов>;
Например: запись
var А: array of integer;
означает, что дан массив с именем А, состоящий из 10 целых элементов.
Пример решения задачи:
В таблице Dat хранятся данные о численности учеников в классах (Dat - число учеников в первом классе, Dat - во втором и т. д.). Определите, какое число будет напечатано в результате работы следующей программы. Текст программы приведён на трёх языках программирования.
Алгоритмический язык | Бейсик | Паскаль |
алг |
DIM Dat(11) AS INTEGER |
Var k, m: integer; Dat: array of integer; Begin Dat := 20; Dat := 25; Dat := 19; Dat := 25; Dat := 26; Dat := 22; Dat := 24; Dat := 28; Dat := 26; Dat := 21; Dat > 22 then begin m:= m + 1 end; writeln(m) End. |
Решение (1 способ):
ВНИМАНИЕ: В массиве Dat, который описан на языке Basic будет 12 элементов, так как нумерация начинается не с первого элемента, а с нулевого.
Массив Dat
Индекс |
|||||||||||
Значение |
В теле цикла происходит проверка условия:
ВНИМАНИЕ: Элемент под номером 6, который равен 22. Но т.к. сравнение у нас строгое (знак «>»), то его мы не учитываем.
Ответ: 7
Решение (2 способ — ручная прокрутка):
Мысленно представляем полученный массив:
Массив Dat
Индекс |
|||||||||||
Значение |
k | Dat[k] (для Бейсик Dat(k)) | Проверка условия Dat[k] > 22 (для Бейсик Dat(k) > 22) | m |
0 | |||
1 | 20 | нет | |
2 | 25 | да | 1 |
3 | 19 | нет | |
4 | 25 | да | 2 |
5 | 26 | да | 3 |
6 | 22 | нет | |
7 | 24 | да | 4 |
Массив в нашем понимании - обычная таблица. Значения в таблице должны быть одного типа: целые числа, или вещественные, или строки, или логические значения. Как правило, в школьном курсе рассматриваются задачи с целочисленными таблицами. Элементы таблицы находятся в памяти рядом и доступ к ним возможен через их порядковый номер (индекс) в таблице.
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] больше 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.
Похожие вопросы