Всем Привет , сегодня поговорим о последнем задании в вариантах ОГЭ по Информатике , о задании на написание программы(кода)№15.2 . Хотел бы поделиться своим опытом , и опытом своих учеников . Я занимаюсь подготовкой детей к сдаче ОГЭ и ЕГЭ уже более 10-ти лет и мое педагогическое виденье того как нужно представлять те или иные задания для знакомства учеников с ними , менялось с накоплением опыта. Каждая задача требует максимального упрощения , приведения аналогий и составления неких алгоритмов действий , которые служат , флажками, если угодно , сигнализирующими в каком направлении пойдет ход решения , помогая тем самым выбрать оптимальный , и самое главное , осознанный путь к правильному ответу. Давайте же попробуем вместе составить алгоритм решения всех заданий 15.2 , разобрав каждый шаг и записывая комментарии к нему . С чего начнем ? Первое что нужно сделать , - систематизировать возможные вопросы , т.е. попробовать составить список возможных формулировок , опираясь на актуальный Сборник ОГЭ по Информатике (Крылов) 2024 г. Итак , какие могут быть вопросы в этих заданиях ?
1. Определить количество чисел удовлетворяющих условию;
2. Определить сумму/разность/произведение/частное/минимальное/максимальное чисел удовлетворяющих условию;
3. Определить порядковый номер числа удовлетворяющего условию и т.д.
Какие знания необходимо иметь ученику , чтобы приступить к решению №15.2?
Сразу следует сделать небольшое отступление . Все решения будем приводить на языке программирования Python . Если вы используете смартфон или планшет для занятий , то вот вам названия приложений , которые выступают в роли интерпретаторов кода : а) если вы используете Android OS то я советую вам посмотреть в сторону весьма неплохого приложения (с полным доступом к файловой системе , что в дальнейшем при подготовке к ЕГЭ вам пригодится , ибо дает возможность подгружать файлы txt ) : PyDroid3 ; б) если вы используете iOS то это приложение : SoloLearn (социальная сеть для обучения программированию и обмену опытом, в ней есть среды исполнения для большинства популярных языков , включая Python 🐍 ) ; в) если же вы используете персональный компьютер или ноутбук , неважно на какой версии ОС (mac os или windows) , то советую вам программу PyCharm;
Итак , что нужно знать :
1. Функции ввода/вывода (input/print)
2. Системы счисления (bin/oct/hex)
3. Циклы (for/while/if/else)
4. Генераторы списков
5. Типы данных (list , str )
6. Понятие «счетчиков и корзин» (об этом мы поговорим ниже)
7. Функции sorted , set , split , append , map .
Как вы можете заметить , список не особенно то и большой , и если немного попрактиковаться в решении , уверен , у вас все получится и эти задания будут решаться вами легко , весело и быстро !
Давайте теперь рассмотрим две ситуации , когда количество вводимых чисел заранее оговаривается и когда нет .
Вот пример задания , в котором количество чисел , которые мы будем проверять , заранее задан. «Программа получает на вход количество чисел в последовательности…»
То есть , нам нужно сразу же задать это количество .
Тут у нас num - это имя ячейки памяти , в которой будет храниться количество вводимых чисел (вы можете использовать любое обозначение , задать какой-нибудь буквой или собственным сокращением).
int- мы говорим что число является 10-тичным ; input()-собственно ввод ;
Далее , вопросы количественного характера можно решать как с использованием «счетчика» , так и с использованием «корзины» . Приведем код решения обоих способов.
Изначально выставляем значение «счетчика» в ноль и увеличиваем его на один каждый раз когда выполняется условие (if) . Конструкция ‘for i in range(num)’ - позволяет проверять условие по всему количеству вводимых чисел ; nums-вводимые числа ; nums//10(div) - десятки в двузначном числе ; nums%10(mod)-количество единиц разрядов числа ;
Функция append - добавляет значения nums , которые удовлетворяют условию в корзину (k) ; len (k) - длина корзины , т.е. количество значений в ней.
А вот другой пример , в котором количество значений заранее не определено . «Программа получает на вход целые числа , количество введенных чисел неизвестно…»
Приведем два способа представления такого задания . Первый ⤵️
Конструкция в первой строке кода являет собой генератор списка , представьте себе , что всем вводимым числам мы даем прозвища «х» и наделяем свойствами чисел 10-тичной системы счисления ; split() - позволяет разделить вводимый список чисел по пробелу , поэтому у нас в скобках ничего нет ! (Что то вроде ножниц , которыми мы нарезаем цепочку вводимых символов на отдельные десятичные числа).
А вот второй ⤵️
Запись немного отличается , но по сути своей повторяет предыдущую . Тут , list - список ; map - функция позволяющая объединять несколько разных свойств для множества объектов (это как если бы мы сказали , - Иван , Петр и Николай - ученики школы №9 , тоже самое что Иван ученик школы №9 , Петр ученик школы №9 , Николай ученик школы №9 ; таким образом мы сокращаем количество строк кода и все выглядит более эстетично , чем если бы мы каждому объекту в отдельности присваивали какое-то свойство ; строго говоря , в данном случае , это просто необходимо , чтобы задать всему множеству вводимых данных общие характеристики ) . Если с этим все понятно , то давайте вернемся к нашей задаче и решим её .
Во второй строчке указываем, что нас интересуют только числа не кратные трем . Функция sorted , сортирует числа в списке по возрастанию , а функция set оставляет только уникальные числа , нам это необходимо , так как в условии сказано : «два различных по значению наибольших числа» . Выводим значения с индексами [-1] и [-2] , напоминаю , что индексация слева-направо идет 0,1,2,3…. ; справа-налево : -1 , -2 , -3 …. ; Так как мы отсортировали список по возрастанию , то очевидно что два наибольших числа будут последними , и очевидно что можно к ним обратиться с обратной индексацией (справа-налево) .
У меня на канале есть статья , в которой приведены решения пяти различных заданий 15.2 из сборника , рекомендую ознакомиться , мы и дальше продолжим обсуждать решения этих , как мне кажется , интересных , номеров из ОГЭ по Информатике . Буду рад если поставите «лайк» и оставите комментарий , подобная активность мотивирует создавать контент . 🍀