Найти в Дзене

Алгоритм решения задания 3 ЕГЭ по информатике. Часть 1

Оглавление

О задании

В прошлых статьях мы познакомились с реляционным подходом в базах данных, научились собирать данные из нескольких таблиц в одну с помощью функции ВПР(), а также попробовали свои силы в использовании автофильтров и некоторых функций LibreOffice Calc.

Теперь настало время применить все полученные навыки на практике и освоить решение заданий 3 ЕГЭ по информатике!

Что же, в этих заданиях вам даётся файл с фрагментом базы данных. В нём содержатся три таблицы:

  1. В первой обычно представляется движение товаров: продажа или поступление, дата операции, артикул товара, идентификатор магазина и количество проданного или поступившего товара
  2. Во второй таблице даются цены каждого товара, его краткое описание и самое важное для связи между таблицами – артикул этого товара
  3. Третья же таблица несёт в себе информацию о самом магазине, его расположении и, конечно, идентификаторе этого магазина.

Типовая схема такого фрагмента базы данных представлена на рисунке ниже.

-2

Мы не зря здесь акцентируем внимание на артикуле товара и идентификаторе магазина – именно через эти ключи и осуществляется связь между таблицами базы данных. Следовательно, для перемещения каких-либо данных между таблицами мы будем использовать только эти два ключа!

То есть перемещать данные о цене товара, об объёме упаковки и так далее в таблицу «Движение товаров», с которой и будем работать большую часть времени, мы можем только по ключу «Артикул».

Аналогично и со второй таблицей, переместить данные из таблицы «Товар» в «Движение товаров» можно только по ключу «ID магазина».

Но вернёмся к условию задания. После описания таблиц в прикреплённом файле даётся информация, по которой мы будем приходить к ответу на задание. Чаще всего нам даётся какой-либо товар или группа товаров, обозначается диапазон дат, в которые с этим товаром что-то происходило, и группа магазинов, в которые эти товары поступили или были проданы.

А по тому числу, которое необходимо дать в ответ, мы можем разделить задания 3 на два типа:

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

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

Именно решению 3 заданий этого типа и посвящена эта статья. Задания второго типа мы рассмотрим в отдельной статье.

Алгоритм решения

Итак, в общих чертах мы уже рассмотрели алгоритм решения заданий 3 первого типа. Давайте приступим к его реализации. Для начала рассмотрим задание с такой формулировкой:

Задание 313

«В файле приведён фрагмент базы данных «Молочные продукты» о поставках товаров в магазины районов города. База данных состоит из трёх таблиц.

Используя информацию из приведённой базы данных, определите, на какую сумму (в рублях) было продано варенца термостатного в магазинах Нагорного района за период с 5 по 14 октября включительно.
В ответе запишите только число»

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

Первым делом откроем прикреплённый к заданию файл в LibreOffice Calc и ознакомимся с данными таблицами.

Таблица «Движение товаров»

-3

Таблица «Товар»

-4

Таблица «Магазин»

-5

Нас интересует товар «Варенец термостатный» и его цена из таблицы «Товар» и несколько магазинов Нагорного района из таблицы «Магазин».

Дальше есть два пути решения: вы можете запомнить нужный артикул товара и ID магазинов и отфильтровать таблицу «Движение товаров» по этим значениям, датам и типу операции; или же перенести все данные в одну таблицу и в качестве параметров для фильтрации выбирать не абстрактные цифры артикула и идентификаторов магазинов, а понятные всем название товара и район магазинов.

Второй путь более надёжный, и мы крайне рекомендуем вам поступать именно так!

Первым делом, приведём таблицу «Движение товаров» в порядок, сузим столбцы, расставим границы и выделим заголовки, чтобы нам было проще ориентироваться в ней. Теперь добавим справа столбец «Товар», в который с помощью функции ВПР() перенесём названия каждого товара в соответствии с его артикулом.

Для этого во вторую ячейку столбца «G» напишем формулу:

=ВПР(D2;Товар.$A$2:$F$61;3;0)

В качестве критерия поиска выбираем столбец «D» (Артикул), массивом у нас служит вся таблица «Товар», из неё нужен только третий столбец, и нам требуется именно точное совпадение, поэтому последним аргументом пишем 0 (ЛОЖЬ).

Растягиваем формулу до конца таблицы и получаем столбец с названием каждого товара.

-6

Аналогично перенесём все районы из таблицы «Магазин». Формула в ячейке «H2» будет такая:

=ВПР(C2;Магазин.$A$2:$C$19;2;0)

Растягивая формулу вниз, получим столбец с районом каждого магазина.

-7

Осталось дело за малым – перенести в эту таблицу цену за упаковку каждого товара и вычислить общую стоимость товара перемножив цену на количество упаковок.

Для переноса цены воспользуемся все той же формулой, что была в столбце «G», только поменяем в ней значение столбца (третий аргумент функции) с 3 на 6, в котором и записаны цены.

=ВПР(D2;Товар.$A$2:$F$61;6;0)

Теперь у нас есть столбец с ценой каждого товара.

-8

И последим столбцом в нашей таблице будет «Стоимость», в котором перемножим значения столбцов «E» и «I».

-9

Осталось лишь применить нужные фильтры к таблице. Начнём с дат. В условии дан диапазон от 5 до 14 октября включительно. В автофильтре выбираем даты, входящие в этот диапазон: 07, 09, 10 и 14.

-10

В типе операции выбираем только продажу.

-11

В столбец «Товар» выбираем интересующий нас варенец.

-12

Магазины только нагорного района.

-13

В итоге получаем вот такую небольшую таблицу.

-14

Осталось лишь сложить все числа в столбце «Стоимость». Для этого можно выделить их и в правом нижнем посмотреть сумму. Либо можно использовать функцию АГРЕГАТ().

Функция АГРЕГАТ() объединяет в себе возможности множества стандартных функций (таких как СУММ(), СРЗНАЧ(), СЧЁТ(), МАКС(), МИН() и др.), но при этом умеет игнорировать скрытые строки, ошибки и другие элементы, которые могут мешать корректным вычислениям.

Если же мы к столбцу «J» применим обычную функцию СУММ(), то она выдаст сумму стоимости всех товаров без учёта скрытых строк. Именно поэтому нужна функция АГРЕГАТ(), которая вычислит сумму только видимых строк.

Синтаксис у этой функции следующий:

=АГРЕГАТ(функция; параметры; диапазон; [доп. аргументы])

Разберём каждый аргумент подробно:

  1. функция – номер функции, которую мы хотим использовать внутри АГРЕГАТ(). Например: 9 – сумма (СУММ), 1 – среднее значение (СРЗНАЧ), 2 – количество (СЧЁТ), 4 – максимум (МАКС), 5 – минимум (МИН) и так далее.
  2. параметры – задают, какие данные нужно игнорировать: 0 – не игнорировать ничего, 1 – игнорировать скрытые строки, 2 – игнорировать ошибки и так далее.
  3. диапазон – диапазон ячеек, по которому выполняется расчёт.
  4. (необязательный) дополнительный аргумент – используется, если выбранная функция требует больше одного диапазона (например, для функций типа КОРРЕЛ, МЕДИАНА и др.). Для суммы обычно не нужен.

В нашем же случае, для подсчёта суммы первым аргументом передадим число 9 (функция СУММ()), вторым – единицу (чтобы игнорировать значения в скрытых строках), а третьим – диапазон ячеек таблицы в столбце «J». Формула будет такая:

=АГРЕГАТ(9;1;J1092:J3720)

-15

В результате получаем ответ на это задание – 133228.

Пример

И разберём еще один пример первого типа задания 3. В этот раз уже не будем так подробно останавливаться на каждом шаге решения – во многом оно будет идентично рассмотренному выше.

Формулировка задания будет следующей:

Задание 303

«В файле приведён фрагмент базы данных «Хозтовары» о поставках товаров для ухода, уборки и дома. База данных состоит из трёх таблиц.

Используя информацию из приведённой базы данных, определите общий объём (в литрах) всех видов шампуня для волос, проданных магазинами, расположенными на Тургеневской улице, за период с 3 по 22 сентября включительно.
В ответе запишите целую часть числа»

Откроем прикреплённый к заданию файл и сразу добавим в таблицу «Движение товаров» следующие столбцы:

  1. Товар
  2. Улица
  3. Ед_изм (единица измерения)
  4. Количество в упаковке
  5. Объём (л)
-16

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

Столбцы готовы, время перенести все данные в одну таблицу с помощью ВПР().

Формулы для каждого из столбцов у нас будут следующие:

  1. Товар: =ВПР(D2;Товар.$A$2:$F$61;3;0)
  2. Улица: =ВПР(C2;Магазин.$A$2:$C$19;3;0)
  3. Ед_изм: =ВПР(D2;Товар.$A$2:$F$61;4;0)
  4. Количество в упаковке: =ВПР(D2;Товар.$A$2:$F$61;5;0)

В итоге получаем такую таблицу.

-17

Столбец «Объём (л)» пока не спешим заполнять, давайте сначала отфильтруем значения в таблице.

Для дат выберем значения: 07, 09, 14, 17 и 22. Для столбца «Улица» выберем две Тургеневские улицы: «Тургеневская, 2» и «Тургеневская, 36». Из всех товаров выберем только 3 шампуня: «Шампунь для жирных волос», «Шампунь для нормальных волос» и «Шампунь для сухих волос». Тип операции – «Продажа».

Получаем такую отфильтрованную таблицу.

-18

Убеждаемся, что везде объём измеряется в миллилитрах, и высчитываем для каждой строки объем в литрах, умножая столбец «Количество в упаковке» на  «Количество упаковок, шт», и делим полученное значение на 1000 чтобы получить из миллилитров литры.

-19

Осталось лишь просуммировать все числа столбца «K» с помощью функции АГРЕГАТ():

=АГРЕГАТ(9;1;K1971:K6317)

Получаем число 1501,8.

-20

В ответ же записываем только целую часть числа, а именно – 1501.

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

<<< Предыдущая статья Следующая статья >>>