==Второе полугодие - подготовка к ЕГЭ==

**((https://moodle.179.ru/course/view.php?id=35 Курс в moodle по подготовке к ЕГЭ))**

До 20:00 15 февраля можно выполнить тренировочную работу Статград. На выполнение отводится 3 часа 55 минут. Для выполнения работы используйте сайт https://online.olimpiada.ru и индивидуальный ключ, который можно скачать в курсе moodle в разделе "12 Февраль - 18 Февраль".

((Поступление2022 Как поступать в вуз в 2022 году?))

==Первое полугодие: Qt + ~PySide2==
((/Информатика/PySide2 PySide2 - установка, документация))

((http://server.179.ru/cgi-bin/new-client?contest_id=1272&locale_id=1 Вход в тестирующую систему))

((http://server.179.ru/ejudge/stand/mp/stand.php?contest=1272 Таблица результатов))
===5 декабря (11)===
((https://drive.google.com/file/d/1F0DMnRgMIYm2FvuxCfeaXFMAXla6u72s/view?usp=sharing Видеозапись для предыдущего класса)) - нужно войти в гуглодомен @179.ru.

((https://u.pcloud.link/publink/show?code=XZLrOLXZ5ls4f1SLxjBLCM3tmxVA8FKckilV Пример с урока))

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

Требования к масштабированию фрактала.

1. Все три операции (перемещение фрактала мышью, изменение масштаба про помощи колеса, изменение размеров окна должны происходить “гладко”, то есть не должно быть резких скачков изображения при последовательных применений разных операций).
2. Масштаб изображения меняется только при движении колесом мышью. При изменении размеров окна масштаб фрактала не меняется.
3. При движении колеса мыши масштаб меняется таким образом, что точка, расположенная в центре окна, остается неподвижной (вариант, который тоже принимается, но более сложный в реализации: неподвижной остается точка, на которую указывает мышь).
4. При изменении размеров окна масштаб не меняется, а изображение перемещается таким образом, чтобы точка, которая была в центре окна, продолжала оставаться в центре окна.

===4 декабря (10)===
((http://server.179.ru/wiki/?page=Informatika/Arxiv/2011/7B/20110404 Разные фракталы))
Реализовать приложение, рисующее минимум три из перечисленных фракталов (один - кривая Коха, должно быть ещё два других). Функционал приложения:
а) выбор типа фрактала при помощи элемента управления типа ((https://doc.qt.io/qtforpython-5/PySide2/QtWidgets/QMenu.html меню)), ((https://doc.qt.io/qtforpython-5/PySide2/QtWidgets/QRadioButton.html QRadioButton)) или ((https://doc.qt.io/qtforpython-5/PySide2/QtWidgets/QComboBox.html QComboBox)).
б) выбор глубины рекурсии фрактала при помощи ~SpinBox или элемента управления.
в) автоматическое масштабирование фрактала при изменении размеров окна приложения, как в предыдущем задании, с гладкой склейкой.

===27 ноября (9)===
((https://u.pcloud.link/publink/show?code=XZLjuRXZEwEXCuzzVG4FRpO0JjuwI4tHJoEV Первый пример с урока - изменение размеров виджета "вручную")). Не рекомендуется использование такой технологии.

((https://u.pcloud.link/publink/show?code=XZAuuRXZMJRdfMEFxg5D4alt5b4sMjq7K31V Второй пример с урока - использование менеджера компоновки для изменения размера виджетов)). Рекомендуется использование такой технологии.

((https://doc.qt.io/qtforpython/PySide2/QtWidgets/QLayout.html Документация на QLayout))

Окно приложения должно содержать ~SpinBox, управляющий количеством итераций кривой Коха. Размеры кривой Коха должны меняться при изменении размеров окна. Сама кривая Коха должна быть максимального размера, допустимого для данного размера окна и располагаться в центре окна.

Для изменения размеров виджета используется менеджер компоновки, метод paintEvent виджета должен определять собственные размеры при помощи вызова методов width() и height() и использовать данные размеры для рисования фрактала.

Изменение размеров кривой Коха должно быть "гладким", то есть при изменениях размера окна не должно быть "прыжков" кривой.


===20 ноября (8)===
((https://u.pcloud.link/publink/show?code=XZgMdzXZnlGFNtb9tvHdFscW3wK5V79dtw5X Пример с урока))

Кривая Коха должна отрисовываться методом ~paintEvent. Виджет имеет слот, обновляющий значение числа итераций. Этот слот должен изменить значения члена класса, хранящего число итераций, и вызвать для виджета метод repaint() для обновления содержимого.

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

Размер окна приложения ~XxY определяется константами в начале программы, например:

X = 500
Y = 200

При изменении этих констант должны меняться размеры окна и виджета. Между тем метод repaint() для виджета должен использовать для определения размеров виджета не константы, а методы типа width() и height().

Кривая (именно кривая, а не нижняя линия кривой) должна размещаться в центре окна и целиком помещаться в окне, при этом быть максимально возможного размера.

===13 ноября (7)===
((https://u.pcloud.link/publink/show?code=XZpAkzXZ8PFTm644E8kMIkGYeSi5v76GUYyk Пример с урока))

Создайте окно приложения и нарисуйте внутри виджета кривую Коха порядка N. Значение числа итераций должно определяться константой в начале кода. Например:

N = 5

Кривая должна «смотреть вверх».
===16 октября (5)===
Функциональность приложения. Хранение таблицы результатов лучших игроков (угадавших за минимальное число ходов). Должно храниться пять лучших результатов. При удачном окончании игры (если игрок будет добавлен в таблицу результатов), приложение запрашивает имя игрока (это удобно делать при помощи ((https://doc.qt.io/qtforpython/PySide2/QtWidgets/QInputDialog.html InputDialog))), сохраняет его в файле с лучшими результатами. Должна быть возможность просмотра лучших результатов (можно при помощи ((https://doc.qt.io/qtforpython/PySide2/QtWidgets/QMessageBox.html MessageBox))). Выдача лучших результатов – в порядке неубывания числа ходов, использованных при отгадывании.

((https://u.pcloud.link/publink/show?code=XZmTqpXZUH6eeuuh4cRei8bcDonRqSsVPomy Пример использования ~InputDialog для ввода строки))

Программа должна корректно работать как при наличии, так и при отсутствии таблицы результатов. Если файла с результатами не существует, то его нужно создать. Как проверить корректность открытия файла? Можно использовать модуль os. Можно открывать файл под обработкой исключений и перехватывать исключение ~FileNotFoundError. ((https://u.pcloud.link/publink/show?code=XZFTqpXZC7eTr0mfMopOONGNF5coVROwbmmy Пример реализации открытия файла с перехватом исключения))

===9 октября (4)===
Функциональность приложения - полноценный игровой режим с началом новой игры и подсчётом числа ходов.

В окне две кнопки "Угадать" и "Сдаться". Также ведется подсчет числа попыток, за которое было угадано число. Не учитывается в качестве попытки: ввод некорректного числа, ввод числа, совпадающего с тем числом, которое было введено последним перед этим.

При нажатии на кнопку "Угадать" идет проверка числа и выводится сообщение о результате проверки. Если в результате проверки было угадано задуманное число, то выводится сообщение об этом, выводится число ходов и на кнопке "Сдаться" текст меняется на "Новая игра", а нажатия на кнопку "Угадать" игнорируются (можно сделать кнопку неактивной). После нажатия на кнопку "Новая игра" задумывается новое число, текст кнопки меняется на "Сдаться" и все начинается заново.

При нажатии на кнопку "Сдаться" выводится задуманное число, после чего пользователю предлагается начать новую игру нажатием на кнопку "Новая игра".

Слова "быки" и "коровы" должны склоняться по правилам русского языка, например, "1 бык 2 коровы"

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

===2 октября (3)===
Реализация игры ((http://goo.gl/2UwG03 Быки и коровы)).
Функциональность приложения. После запуска программы компьютер генерирует случайное 4-значное число (все цифры различны, начинается не с нуля). **Число выводится на стандартный вывод - функцией print, в отладочных целях**. Главное окно приложения содержит поле ввода (~QLineEdit) для ввода задуманного числа, кнопку "Проверить" (~QPushButton) и строчку для вывода сообщения (~QLabel). При нажатии на кнопку производится проверка введенного числа, и либо выводится сообщение о том, что число некорректно, либо выводится количество быков и коров для введенного числа. Сообщения выводятся путем изменения текста у объекта ~QLabel.

Все надписи должны быть на русском языке. Файл должен быть сохранён в кодировке UTF-8. Поставьте в начало файла строчку
%%(code)
# -*- coding: utf-8 -*-
%%

===25 сентября (2)===
((http://u.pc.cd/U0nctalK Пример с урока))

Задание. Добавить в приложение три кнопки: увеличение значения на 1, уменьшения на 1 и сброса значения. Нажатие на эти кнопки должно приводить к изменению значения в классе ~MyCounter и всех элементах управления на экране (~LineEdit, ~SpinBox, ~Slider).

===18 сентября (1)===
((https://u.pcloud.link/publink/show?code=XZ14e5XZy3hDH98ptl7KkFkpiEHx6YG4D6e7 Пример с урока))

Задание 0. Установить дома ~PySide2, сделать скриншот запущенной среды Wing IDE или ~PyCharm и запущенного приложения, использующего библиотеку ~PySide2. Скриншот сохранить в формате JPEG и сдать в тестирующую систему.

Задание 1. Создать приложение, содержащее четыре кнопки, связать их с разными слотами главного окна приложения (нельзя использовать слот hide). Приложение должно иметь приличный вид, надписи на кнопках должны быть понятными и соответствовать выполняемым действиям. Приложение (файл на языке питон) сдать в тестирующую систему.

((https://doc.qt.io/qtforpython/PySide2/QtWidgets/QWidget.html#slots Документация на слоты класса QWidget))



----
адрес оригинала: ((/Информатика/11В-2))