Муниципальное автономное общеобразовательное учреждение средняя школа №8 Исследовательская работа по информатике на тему: «Решение 22 задания ЕГЭ сравнения способов: с использованием Microsoft Excel или Python» Руководитель: учитель информатики Кустова Ю.Е. Выполнил: ученик 10 «Б» класса Харламов С.Д. г. Бор 2023 г. Содержание Содержание Содержание .............................................................................................................. 2 Введение ................................................................................................................... 3 Глава 1. Ознакомление с Microsoft Excel и Python. ............................................. 4 1.1. Знакомство с Microsoft Excel. ....................................................................... 4 1.2. Знакомство с Python. ..................................................................................... 4 1.3. Исторический аспект появления Microsoft Excel и Python ....................... 5 1.3.1. История создания Microsoft Excel............................................................. 5 1.3.2. История создания Python. .......................................................................... 6 Глава 2. Решение задач с помощью Microsoft Excel и Python. ........................... 8 1.1. Решение 22 задания через Microsoft Excel и Python. ................................. 8 Глава 3. Таблица Microsoft Excel. ........................................................................ 12 Заключение ............................................................................................................ 13 Список литературы ............................................................................................... 14 2 Харламов Станислав Денисович Введение Актуальность темы учебно-исследовательской работы Задание под номером 22 в Едином государственном экзамене по информатике обновилось в 2022 году и еще не все ученики и учителя разобрались с этим заданием. Мне стало интересно каким способом решить это задание проще: Microsoft Excel и Python. Предмет исследования: способы решения 22 задания ЕГЭ по информатике. Цель работы: разобрать каждый из способов решения 22 задания ЕГЭ и решить, какой способ проще. Задачи: 1. Познакомиться с историей Microsoft Excel и Python; 2. Разобрать два способа решения задания: Microsoft Excel и с помощью языка программирования Python; 3. Выявить преимущества и недостатки Microsoft Excel и с помощью Python; 4. Составить таблицу в Microsoft Excel с помощью которой можно будет наглядно показать преимущества и недостатки решение задач с помощью Microsoft Excel и Python; 5. Сделать вывод о проделанной работе; Гипотеза Решение 22 задания ЕГЭ по информатике лучше выполнять с помощью Microsoft Excel. 3 Глава 1 Глава 1. Ознакомление с Microsoft Excel и Python. Знакомство с Microsoft Excel. 1.1. Microsoft Excel (также иногда называется Microsoft Office Excel)—программа для работы с электронными таблицами, созданная корпорацией Microsoft для Microsoft Windows, Windows NT и Mac OS, а также Android, iOS и Windows Phone. Она предоставляет возможности экономико-статистических расчетов, графические инструменты и, за исключением Excel 2008 под Mac OS X, язык макропрограммирования VBA (Visual Basic for Application). Microsoft Excel входит в состав Microsoft Office. 1.2. Знакомство с Python. Python ( в русском языке встречаются названия пито́н или па́йтон) — высокоуровневый язык программирования общего назначения с динамической строгой типизацией и автоматическим управлением памятью, ориентированный на повышение производительности разработчика, читаемости кода и его качества, а также на обеспечение переносимости написанных на нём программ. Язык является полностью объектноориентированным в том плане, что всё является объектами. Необычной особенностью языка является выделение блоков кода пробельными отступами. Синтаксис ядра языка минималистичен, за счёт чего на практике редко возникает необходимость обращаться к документации. Сам же язык известен как интерпретируемый и используется в том числе для написания cкриптов. Недостатками языка являются зачастую более низкая скорость работы и более высокое потребление памяти написанных на нём программ по сравнению с аналогичным кодом, написанным на компилируемых языках, таких как C 4 или C++. Харламов Станислав Денисович 1.3. Исторический аспект появления Microsoft Excel и Python 1.3.1. История создания Microsoft Excel. В 1982 году Microsoft запустила на рынок свой первый электронный табличный процессор Multiplan, который был очень популярен на CP/M системах, но на MS-DOS системах он уступал Lotus 1-2-3. Первая версия Excel предназначалась для Mac и была выпущена в 1985 году, а первая версия для Windows была выпущена в ноябре 1987 года. Lotus не торопилась выпускать 1-2-3 под Windows, и Excel с 1988 года начала обходить по продажам 1-2-3, что в конечном итоге помогло Microsoft достичь позиций ведущего разработчика программного обеспечения. Microsoft укрепляла своё преимущество с выпуском каждой новой версии, что имело место примерно каждые два года. Текущая версия для платформы Windows — Excel 19, также известная как Microsoft Office Excel 2019. Текущая версия для платформы macOS — Microsoft Excel 2019. В начале своего пути Excel стал причиной иска о товарном знаке от другой компании, уже продававшей пакет программ под названием «Excel». В результате спора Microsoft была обязана использовать название «Microsoft Excel» во всех своих официальных пресс-релизах и юридических документах. Однако со временем эта практика была позабыта, и Microsoft окончательно устранила проблему, приобретя товарный знак другой программы. Microsoft также решила использовать буквы XL как сокращённое название программы: иконка Windows-программы состоит из стилизованного изображения этих двух букв, а расширение файлов по умолчанию в Excel — .xls. В сравнении с первыми табличными процессорами Excel представляет множество новых функций пользовательского интерфейса, но суть остается прежней: как и в программе-родоначальнике, VisiCalc, организованные в строки и столбцы клетки-ячейки могут содержать данные или формулы с относительными или абсолютными ссылками на другие клетки. Excel был первым табличным процессором, позволявшим пользователю менять внешний вид таблицы на экране: шрифты, символы и внешний вид ячеек. Он также первым представил метод умного пересчёта ячеек — обновления только ячеек, зависящих от изменённых ячеек: раньше табличные процессоры пересчитывали все ячейки; это делалось либо после каждого 5 Глава 1 изменения (что на больших таблицах долго), либо по команде пользователя (что могло вводить пользователя в заблуждение не пересчитанными значениями). Будучи впервые объединёнными в Microsoft Office в 1993 году, Microsoft Word и Microsoft PowerPoint получили новый графический интерфейс для соответствия Excel, главного стимула модернизации ПК в то время. Начиная с 1993 года, в состав Excel входит Visual Basic для приложений (VBA), язык программирования, основанный на Visual Basic, позволяющий автоматизировать задачи Excel. VBA является мощным дополнением к приложению и в более поздних версиях Excel доступна полнофункциональная интегрированная среда разработки. Можно создать VBA-код, повторяющий действия пользователя и таким образом автоматизировать простые задачи. VBA позволяет создавать формы для общения с пользователем. Язык поддерживает использование (но не создание) DLL от ActiveX; более поздние версии позволяют использовать элементы объектно-ориентированного программирования. 1.3.2. История создания Python. Задумка по реализации языка появилась в конце 1980-х годов, а разработка его реализации началась в 1989 году сотрудником голландского института CWI Гвидо ван Россумом. Для распределённой операционной системы Amoeba требовался расширяемый скриптовый язык, и Гвидо начал разрабатывать Python на досуге, позаимствовав некоторые наработки для языка ABC (Гвидо участвовал в разработке этого языка, ориентированного на обучение программированию). В феврале 1991 года Гвидо опубликовал исходный текст в группе новостей alt.sources. С самого начала Python проектировался как объектно-ориентированный язык. Гвидо ван Россум назвал язык в честь популярного британского комедийного телешоу 1970-х «Летающий цирк Монти Пайтона», поскольку автор был поклонником этого телешоу, как и многие другие разработчики того времени, а в самом шоу прослеживалась некая параллель с миром компьютерной техники. Наличие дружелюбного, отзывчивого сообщества пользователей считается, наряду с дизайнерской интуицией Гвидо, одним из факторов успеха Python. Развитие языка происходит согласно чётко регламентированному процессу 6 Харламов Станислав Денисович создания, обсуждения, отбора и реализации документов PEP (англ.PythonEnhancementProposal) — предложений по развитию Python. 3 декабря 2008 года, после длительного тестирования, вышла первая версия Python 3000 (или Python 3.0, также используется сокращение Py3k). В Python 3000 устранены многие недостатки архитектуры с максимально возможным (но не полным) сохранением совместимости со старыми версиями Python. Дата окончания срока поддержки Python 2.7 первоначально была установлена на 2015 год, а затем перенесена на 2020 год из опасения, что большая часть существующего кода не может быть легко перенесена на Python 3. Поддержка Python 2 была направлена лишь на уже существующие проекты, новые проекты должны были использовать Python 3. Официально Python 2.7 не поддерживается с 1 января 2020 года, хотя последнее обновление вышло в апреле 2020. Больше никаких исправлений безопасности или других улучшений для Python 2.7 не будет выпущено. С окончанием срока службы Python 2.x поддерживаются только Python 3.6.x и более поздние версии. Python стал одним из самых популярных языков, он используется в анализе данных, машинном обучении, DevOps и веб-разработке, а также в других сферах, включая разработку игр. За счёт читабельности, простого синтаксиса и отсутствия необходимости в компиляции язык хорошо подходит для обучения программированию, позволяя концентрироваться на изучении алгоритмов, концептов и парадигм. Отладка же и экспериментирование в значительной степени облегчаются тем фактом, что язык является интерпретируемым. Применяется язык многими крупными компаниями, такими как Google или Facebook. По состоянию на сентябрь 2022 года Python занимает первое место в рейтинге TIOBE популярности языков программирования с показателем 15,74%. «Языком года» по версии TIOBE Python объявлялся в 2007, 2010, 2018, 2020 и 2021 годах. 7 Глава 2 Глава 2. Решение задач с помощью Microsoft Excel и Python. 1.1. Решение 22 задания через Microsoft Excel и Python. Возьмём пример задачи с сайта sdamgia.ru. Тип 22 № 47588 В файле 22_7.xlsx содержится информация о совокупности N вычислительных процессов, которые могут выполняться параллельно или последовательно. Будем говорить, что процесс B зависит от процесса A, если для выполнения процесса B необходимы результаты выполнения процесса A. В этом случае процессы могут выполняться только последовательно. Информация о процессах представлена в файле в виде таблицы. В первой строке таблицы указан идентификатор процесса (ID), во второй строке таблицы — время его выполнения в миллисекундах, в третьей строке перечислены с разделителем «;» ID процессов, от которых зависит данный процесс. Если процесс является независимым, то в таблице указано значение 0. Определите минимальное время, через которое завершится выполнение всей совокупности процессов, при условии, что все независимые друг от друга процессы могут выполняться параллельно. Типовой пример организации данных в файле: ID процесса B Время выполнения процесса B (мс) ID процесса(ов) A 1 4 0 2 3 0 3 1 1;2 4 7 3 В данном случае независимые процессы 1 и 2 могут выполняться параллельно, при этом процесс 1 завершится через 4 мс, а процесс 2 — через 3 мс с момента старта. Процесс 3 может начаться только после завершения обоих процессов 1 и 2, то есть, через 4 мс после старта. Он длится 1 мс и закончится через 4 + 1 = 5 мс после старта. Выполнение процесса 4 может начаться только после завершения процесса 3, то есть, через 5 мс. Он длится 7 мс, так что минимальное время завершения всех процессов равно 5 + 7 = 12 мс 8 Харламов Станислав Денисович Решение через Microsoft Excel. Отсортируем данные в таблице так, чтобы все независимые процессы оказались в начале таблицы и любой процесс был расположен после всех процессов, от которых он зависит. Также в таблицу добавим столбец «Время окончания процесса» и запишем туда длительности независимых процессов. Далее рассчитаем время выполнения оставшихся процессов и выбираем самый большой результат: f(3) = 3 + f(1) = 3 + 4 = 7; f(4) = 7 + f(2) = 7 + 6 = 13; f(6) = 8 + max(f(3), f(4)) = 8 + 13 = 21; f(8) = 5 + f(5) = 5 + 4 = 9; f(9) = 3 + f(5) = 3 + 4 = 7; f(10) = 2 + f(3) = 2 + 7 = 9; f(11) = 5 + max(f(3), f(7)) = 5 + 7 = 12; f(12) = 3 + max(f(5), f(6)) = 3 + 21 = 24; f(13) = 6 + max(f(3), f(9)) = 6 + 7 = 13; f(15) = 7 + f(10) = 7 + 9 = 16. 9 Глава 2 Ответ:24. 10 Харламов Станислав Денисович 1. 2. 3. 4. 5. 6. 7. 8. 9. Решение через Python Алгоритм решения 22 задания из ЕГЭ по информатике 2023г. с помощью Python. Первоначально копируем данные из файла Excel в блокнот (файл txt) Создаем массив:arr = [0] , в который будем записывать максимальное время по процессам, а сами номера процессов будут индексами этого процесса Открываем наш текстовый файл (путь к файлу прописываем): f = open(C:\Users\я\Desktop\sdamgia 22 задание.txt) Делаем цикл по строкам (когда мы копировали в текстовый файл, у нас данные разделены табуляцией s.split('\t')): for s in f.readlines(): number, time, need = s.split('\t') Добавим нулевой элемент в массиве: arr.append(0) Делаем цикл по номеру процесса, причем номер процесса (если их несколько «6;5;7;4;3») у нас разделен «;», что мы и учитываем need.split(';'): for j in need.split(';'): Выбираем максимальный элемент нашего массива, причем мы из текста делаем число int(number): arr[int(number)] = max(arr[int(number)], arr[int(j)]) Когда выбрано максимальное значение процесса мы плюсуем к нему текущее значение (потому что процессы связанные, один процесс может начаться только тогда, когда предыдущий закончится): arr[int(number)] += int(time) Печатаем максимальный элемент созданного нами массива, это и будет ответ: print(max(arr)) А это наша программа целиком: arr = [0] f = open(C:\Users\я\Desktop\sdamgia 22 задание.txt) for s in f.readlines(): number, time, need = s.split('\t') arr.append(0) for j in need.split(';'): arr[int(number)] = max(arr[int(number)], arr[int(j)]) arr[int(number)] += int(time) print(max(arr)) 11 Глава 3 Глава 3. Таблица Microsoft Excel. Способы решения Быстрота решения Простота решения Качество Python - - + Microsoft Excel + + - 12 Харламов Станислав Денисович Заключение В результате моей работы я изучил историю появления программы Microsoft Excel и язык программирования Python. В ходе выполнения исследовательской работы я освоил базовый функционал табличного редактора Microsoft Exсel, что позволило подтвердить свою гипотезу о том, что выполнение задания №22 ЕГЭ по информатике лучше выполнять с помощью Microsoft Excel. 13 Литература Список литературы 1. https://ru.wikipedia.org/wiki/Python 2. https://ru.wikipedia.org/wiki/Microsoft_Excel 3. https://inf-ege.sdamgia.ru/ 14