Задания по программированию для 2021а

Задачи на массивы переменной длины.

Задачи на массивы — задачи от A до E из этого набора.

Задачи на циклы — задачи от A до G из этого набора.

Первая программа на Java

0) Установить Java Development Kit (JDK) и либо Eclipse, либо IDEA.

1) Создать проект, создать класс с методом main, в методе main написать вывод на экран надписи "Hello, world!". Запустить эту программу, убедиться, что она сработала.

2) Исследовать, как работают операторы деления ("/") и остатка ("%"), если один или оба аргумента . отрицательные. Каков знак результата? В какую сторону происходит округление?

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

Архив: 9-й класс

Задачи на выигрышные и проигрышные позиции.

Динамическое программирование. Задачи A—G отсюда и A—F отсюда.

Работа в классе, 10 апреля.

(Код с доски: свой куки-кликер под Heroku.)

Свой простенький сервер

(Код с доски: свой HTTP-сервер.)

Запустить на своем комьютере http-сервер, см. код выше. Убедиться, что вы на него можете зайти в браузере по адресу 127.0.0.1:3333 . Изменить его код так, чтобы он стал url-калькутятором, а именно: при посещении страницы 127.0.0.1:3333/5+6+6 сервер выдает html-страничку с ответом "17", и так для любого примера со сложением.

(Хозяйке на заметку: посмотрите как работает команда 'tratata'.split('a'), вызов split с параметром вам пригодится.)

Получение данных по API

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

«Бродилка по лабиринту»

Код с доски

Пользователь видит "героя" (можно кружочек, а лучше стилизованного человечка или изображение) и выход в противоположном углу поля. Ваша игра "мысленно загадала" лабиринт, но не показывает его пользователю. Пользователь пытается делать ходы вверх-вниз-вправо-влево, они срабатывают, только если там нет стенки. Обязательно надо запретить пользователю выходить за пределы поля.

Инвертирование крестиков

Пользователю показывается прямоугольник из кнопок/чекбоксов. В начале поле заполняется произвольным образом (каждый чекбокс либо выбран, либо нет, с вероятностью 50%). При нажатии на любой чекбокс, содержащий его крестик (его строка + его столбец) инвертируется (выбранные становятся невыбранными и наоборот). Если все чекбоксы стали выбранными, игрок выиграл, и надо его поздравить с этим.

Перед игрой хорошо бы спросить у пользователя (например, в консоли), какого на поле какого размера он хочет сыграть.

Статическая картинка в Tkinter

Создайте приложение в Tkinter, которое отображает статический цветной циферблат: 12 надписей (Label), расположенных по кругу, как это принято в часах, цвета которых плавно (!) переходят от, например, красного к синему (1 час - красная, 2 часа - чуть-чуть синеватая красная и т. д., 12 часов - синяя). Любой другой аналогичный дизайн поощряется.

Работа в классе и дома «Объект по номеру и обратно»

Все четыре задачи отсюда.

Работа в классе и дома «Рекурсивная генерация объектов»

Задачи отсюда, любые 8 штук.

Д/з «Двоичный поиск»

Задачи C+D отсюда и задачи A+E+F отсюда.

Набор задач "Быстрые сортировки"

  1. (не в информатикс) Дан массив чисел, вывести число инверсий в нем. Программа должна работать за O(n log n), а именно сортировка слиянием + учет инверский.
  2. Сдать сюда быструю сортировку.
  3. Задачи A-D отсюда.

Работа в классе: квадратичные сортировки

Как можно больше задач отсюда

Обмен через xor

(Д/з в тетрадке.)
Вспомнить, как работает побитовое исключающее ИЛИ двух чисел.
Доказать, что следующий код меняет местами значения двух целочисленных переменных:

a = a ^ b
b = a ^ b
a = a ^ b

Архив: 8-й класс

Отсюда задачи номер ABDGIO...

Используя заготовку, сделанную на уроке на доске, решите задачи от A до E про Ханойские башни.

Текущее задание к 21 апреля: из этого же блока (ссылка чуть ниже) решить всё до R, но "субботней" группе можно без Q.

Задание на функции, решаем A-J.

Бонусный уровень.

Архивное

Задание на алг. Евклида.

Задание в классе для субботней группы на 10-е февраля

Задания A-J про двумерные массивы

Текущие задания, январь

Задачи A-L отсюда.

И этот набор задач.

Работа в классе, 12.01.18

задание в классе, H-N

бонус

Работа в классе, 18.12.17

Вот из этого набора надо решить задачи от M до U. Если задача уже вами сдана (в д/з), то вам повезло. Антон Михайлович расскажет, как пользоваться школьными компьютерами. Количество штрафных попыток не учитывается, но не надо этим злоупотреблять.

Условный оператор

Важно: если вы не видите себя в табличке "ФТШ, 2021а", сообщите свой id на адрес mikhail.dvorkin@gmail.com. Чтобы узнать свой id, нужно (на сайте informatics) нажать сверху на свои имя-фамилию, после чего в адресной строке браузера найти надпись вроде id=123123.

Вот этот набор задач, надо решить: A, D, F, G, J, L, M, O.

Первые задачи на informatics

Зарегистрироваться на informatics.mccme.ru, если вы этого ещё никогда не делали. Указать настоящие фамилию, имя, класс, школу (желательное написание: "Лицей ФТШ").

Выучить свой логин и пароль!

Зайти на страницу: http://informatics.mccme.ru/mod/statements/view.php?id=3309#1

Слева снизу есть список задач. Вам нужно решить и сдать до состояния "ОК" задачи: A, B, C, D, E, I, J, S.

Работа с переменными

В переменные x и y присвойте целые числа. Затем выведите про них:

  1. Верно ли, что оба эти числа положительные.
  2. Верно ли, что хотя бы одно из этих чисел — семерка.
  3. (*) (необязательный пункт) Абсолютную величину (то есть модуль) числа x.
  4. (*) Квадрат гипотенузы прямоугольного треугольника с катетами x и y.
  5. Верно ли, что у этих чисел совпадают последние цифры.
  6. Предпоследнюю цифру числа x.

Выполняя последние три пункта, можете считать, что x и y — оба положительные.

Обязательно запустите вашу программу для нескольких различных пар значений x и y, чтобы убедиться в правильности ее работы.

Домашнее задание "Знакомство с Python"

  1. Установить к себе на компьютер Python 3.
  2. Запустить интерактивный режим, убедиться, что у вас рабоает вычисление 2**100.
  3. (Желательно) установить к себе на компьютер Wing IDE 101, убедиться, что вы в нем можете написать и запустить программу, выводящую на экран "Hello, world!".
  4. (Желательно) написать в блокноте или любом обычном текстовом редакторе программу, выводящую "Hello, world!" и суметь её запустить в командной строке. (Ключевые слова: cmd, cd название_папки, python название_файла; можно и нужно всё это "гуглить")

Домашнее задание в тетради "Хранение целых чисел"

Процессор 8-битного компьютера (например, старой игровой приставки Денди) может хранить целые числа в диапазоне от -128 до 127 (каждое число хранится в 8 битах).

  1. Какой результат получится, если к числу 112 прибавить 36? Произведите сложение «в столбик».
  2. Какой результат получится, если возвести 17 в квадрат? Произведите умножение «в столбик».
  3. Какой результат получится, если вычесть из -80 число 62? Получите ответ любым способом.
  4. Какой результат получится, если умножить -80 на 4? Получите ответ любым способом.

Домашнее задание на листочке "Системы счисления"

  1. Переведите 1011011 из двоичной системы счисления в десятеричную.
  2. Переведите CF из 16-чной системы счисления в десятеричную.
  3. Переведите 194 из 18-чной системы счисления в десятеричную.
  4. Переведите 183 из десятичной системы счисления в двоичную.
  5. Переведите 330 из десятичной системы счисления в шестеричную.
  6. Упорядочите по возрастанию числа 5009, 23A14, 122214, 1220103, 6119.