Программирование на Java (вечернее обучение), практические занятия 2012 года

Имеется два варианта практического курса:

  • простой, с выполнением двух заданий низкого уровня сложности
  • сложный, с выполнением одного задания высокого уровня сложности

Простой курс

Варианты задания 1

Во всех заданиях необходимо создать файл на языке Java, в котором описывается указанный класс. Кроме этого, необходимо создать файл с главным классом, содержащим в себе главную функцию. Главная функция должна проверять, правильно ли работает спроектированный класс (вызывая хотя бы по одному разу все его функции-члены).

  1. Реализовать класс ТАБЛИЧНАЯ ФУНКЦИЯ (таблица аргумент-значение, оба вещественные). Требуемые функции-члены: конструктор, деструктор, вывод, вставка аргумента и значения, вычисление значения функции в заданной точке (с применением интерполяции по таблице).

  2. Реализовать класс МНОГОЧЛЕН (в канонической форме - anxn+ an-1xn-1+…+a1x+a0). Требуемые функции-члены: конструктор, преобразование в строку, изменение коэффициента, сложение, вычитание, умножение, расчет значения многочлена по значению x.

  3. Реализовать класс ПОЛЕ ДЛЯ ИГРЫ В 15. Поле представляет собой квадрат 4х4, в котором находятся 15 фишек. На каждой из фишек написано число от 1 до 15. Одна из позиций квадрата всегда свободна. В стартовой позиции фишки идут по порядку (1-4 в первой строке, 5-8 во второй, 9-12 в третьей, 13-15 в четвертой, последняя клетка свободна). Требуемые функции-члены: конструктор, преобразование в строку, передвижение фишки с указанным номером, определение, является ли позиция стартовой.

  4. Реализовать класс ПРЯМОУГОЛЬНАЯ МАТРИЦА (таблица M x N, хранящая вещественные числа). Требуемые функции-члены: конструктор, преобразование в строку, получение элемента по индексам, запись элемента по индексам, формирование транспонированной матрицы (строки становятся столбцами и наоборот).

  5. Реализовать класс ПОЛЕ КРЕСТИКИ-НОЛИКИ 3х3. Требуемые функции-члены: конструктор, преобразование в строку, вставка крестика, вставка нолика, определение, кто выиграл. В главной функции с использованием данного класса реализовать игру для двух игроков (или, при желании – одного игрока и компьютера).

  6. Реализовать класс ШАШЕЧНАЯ ДОСКА 8х8. Доска может содержать на любой из клеток шашку белого или черного цвета (также клетка может быть пустой). Требуемые функции-члены: конструктор, преобразование в строку, добавление шашки (одного из двух цветов), удаление шашки, передвижение шашки на другую клетку (правила игры не контролировать).

  7. Реализовать класс ШАХМАТНАЯ ФИГУРА (выбрать любую, кроме пешки). Фигура должна помнить, на какой клетке доски она находится. Требуемые функции-члены: конструктор, преобразование в строку, задать и изменить местоположение, определить список возможных ходов.

  8. Реализовать класс МНОГОУГОЛЬНИК НА ПЛОСКОСТИ (состоящий из N вершин). Требуемые функции-члены: конструктор, преобразование в строку, копирование, получение точки по номеру, изменение точки по номеру, расчет периметра многоугольника.

  9. Реализовать класс ВЕКТОР (многомерный). Требуемые функции-члены: конструктор, преобразование в строку, сложение, вычитание, скалярное произведение, умножение на число, модуль.

  10. Реализовать класс КОМПЛЕКСНОЕ ЧИСЛО. Требуемые функции-члены: конструктор, преобразование в строку, сложение, вычитание, умножение, деление, преобразование к вещественному.

  11. Реализовать класс РАЦИОНАЛЬНОЕ ЧИСЛО. Требуемые функции-члены: конструктор, преобразование в строку, сложение, вычитание, умножение, деление, упрощение, преобразование к вещественному.

Варианты задания 2

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

  1. Аналоговые часы.

  2. Цифровые часы.

  3. Заставка: небо в алмазах (вспыхивающие в окне точки случайного цвета).

  4. Заставка: падающие шарики (сверху внизу).

  5. Крестики-нолики 3х3.

  6. Игра в пятнадцать.

Сложный курс, варианты заданий

Необходимо создать законченное приложение на языке Java. Допускается создание приложений в консольном варианте; при желании, возможна реализация приложения с графическим интерфейсом. Допускается (по согласованию с преподавателем) выполнение других заданий.

  1. Крестики-нолики 15х15. Реализовать игру в крестики-нолики на поле 15х15 для двух игроков (выигрывает игрок, первым составивший в линию 5 своих знаков).

  2. Сапер. Реализовать игру сапер (классические правила).

  3. Шахматная доска. На шахматной доске 8х8 клеток стоит некоторое количество ладей, слонов и ферзей белого и черного цвета (положение указано во входном файле, формат файла произвольный). Найти все черные фигуры, находящиеся под ударами белых фигур. Справка. Ладья может двигаться по вертикали или горизонтали на любое количество клеток. Слон может двигаться по диагонали на любое количество клеток. Ферзь объединяет в себе возможности ладьи и слона.

  4. Вычисление выражений. Во входном файле записана последовательность команд вида a=2, b=3, c=a+b, d=(a+b+2)*c, e=(a-b)/(c+d). Каждая команда начинается с новой строки и имеет вид переменная=выражение. В выражениях могут присутствовать четыре арифметических операции и скобки, а также неограниченное количество пробелов; в качестве операндов используются переменные, целые константы. Все используемые переменные считать целыми. Вывести в выходной файл значения всех переменных после выполнения последней команды.

  5. Цепочки домино. Во входном файле перечислено некоторое количество костей домино. Написать программу, позволяющую построить цепочку максимально возможной длины

  6. Кругосветный маршрут. Во входном файле задан набор городов и их координат, а также набор путей между городами и стоимостей перемещения по ним (между любой парой городов существует не более одного пути). Найти самый дешевый кругосветный маршрут из заданного города. Кругосветным будем считать маршрут, «опоясывающий» планету по долготе.

  7. Магараджи. Расположить на квадратной доске NxN магараджей так, чтобы ни один из них не находился под ударом другого. Магараджа сочетает ходы ферзя и коня. Найти все возможные расстановки M магараджей.

  8. Родственники. Во входном файле для каждого жителя деревни задано множество (возможно, пустое) имен его детей, все жители имеют уникальные имена. Жители А и Б называются родственниками, если либо А – ребенок Б, либо Б – ребенок А, либо существует житель В – родственник А и Б. Найти все группы жителей, такие, что в рамках одной группы любые два жителя являются родственниками, а любые жители из разных групп родственниками не являются. Вывести группы в выходной файл.

  9. Ход конем. Дана прямоугольная доска размером m x n (m>=3, n>=3). Ход шахматного коня состоит из последовательного перемещения на две клетки по горизонтали (вертикали) и перемещения на одну клетку под прямым углом – по вертикали (горизонтали). Задана начальная клетка, на которой стоит конь, и координаты нескольких отмеченных клеток доски. Найти самый короткий маршрут коня, проходящий через отмеченные клетки, и вывести в выходной файл.

  10. Обход фигуры. Известно, что любая плоская фигура может быть обведена, не отрывая карандаша от бумаги, так, чтобы каждая линия фигуры была прорисована дважды. Определить, как это сделать, для заданной плоской фигуры. Во входном файле задано число вершин фигуры, перечислены соседние вершины для каждой из фигур.