Вопросы

Вопросы экзамена по курсу «Программирование» для студентов I курса математического факультета, 1 семестр (лектор — Костин А. Н., старший преподаватель кафедры ТИДМ).

  1. Особенности языка и платформы Java.

  2. Классификация программ по типу исполнения (компилируемые, интерпретируемые, исполняемые на виртуальных машинах). Виртуальная машина Java. JIT-компиляция.

  3. Создание простейшей программы на Java, её компиляция в байт-код и запуск.

  4. Средства разработки Java-приложений. Интегрированные среды разработки.

  5. Встроенные типы данных. Способы задания литералов различных типов.

  6. Хранение данных в памяти ЭВМ.

  7. Приведение типов (явное и автоматическое). Константы и переменные.

  8. Оператор присваивания. Порядок действий (приоритет операторов).

  9. Арифметические операторы. Операторы инкремента и декремента.

  10. Встроенный класс Math. Псевдослучайные числа.

  11. Операторы сравнения и логические операторы.

  12. Операторы ветвления. Условный оператор. Минимизация количества проверок.

  13. Операторы ветвления. Оператор множественного выбора. Его сравнение с условным оператором.

  14. Встроенный класс String. Строковые операции.

  15. Стандартные потоки ввода-вывода. Организация ввода и вывода данных. Класс Scanner.

  16. Операторы организации циклов. Цикл типа «n раз».

  17. Операторы организации циклов. Цикл типа «пока» (с пред- и постпроверкой условия).

  18. Массивы. Способы объявления и инициализации массивов. Индексация и размер массива.

  19. Массивы. Алгоритмы сортировки.

  20. Массивы. Многомерные массивы.

  21. Статические методы классов. Методы функционального и процедурного типа.

  22. Сигнатура метода. Перегрузка методов.

  23. Процедурное программирование. Объектно ориентированное программирование. Сравнение парадигм.

  24. Основные понятия ООП. Объекты и классы. Абстракция данных. Сценарий построения объектно-ориентированной программы.

  25. Члены классов. Методы и поля.

  26. Специальные методы классов (конструкторы). Конструктор по умолчанию.

  27. Модификаторы уровня доступа (default, public, protected, private).

  28. Основополагающие принципы ООП. Инкапсуляция.

  29. Основополагающие принципы ООП. Наследование. Управление наследованием.

  30. Интерфейсы как средство реализации множественного наследования.

  31. Основополагающие принципы ООП. Полиморфизм. Средства реализации полиморфизма.

  32. Иерархия классов Java. Коренной класс Object и его методы.

  33. Исключительные ситуации. Обработка исключительных ситуаций.

  34. Приложения с графическим интерфейсом с использованием GUI-пакетов и апплеты.

Материалы для подготовки

Источники представлены в порядке приоритета. То есть начинать готовиться надо с первого, если его осилили, то переходить ко второму и т.д. Для успешной сдачи экзамена первых трёх источников вам хватит вполне. И не читайте всё подряд: выбирайте то, что относится к программе вашего экзамена.

  1. Семестровый курс лекций и практических занятий.

  2. Монахов В. В. «Язык программирования Java и среда NetBeans». Можно купить бумажную книгу (она хорошая, пригодится), но материалы этой книги также можно свободно (и официально) скачать в сети — теперь скачать нельзя. «Спасибо», Oracle.

  3. Материалы сайта: http://kostin.ws/java/.

  4. Ильдар Хабибуллин «Самоучитель Java 2».

  5. Брюс Эккель «Философия Java».

  6. Кен Арнолд, Джеймс Гослинг «Язык программирования Java».

  7. Герберт Шилдт «Полный справочник по Java».

Примеры экзаменационных задач

Пользователь вводит с клавиатуры натуральное число меньшее 10000. Программа проверяет корректность ввода, при необходимости сообщает об ошибке и требует повторного ввода. Для корректно введённого числа программа вычисляет и выводит на экран сумму цифр введённого числа.


Вывести на экран m первых (a1, a2, …) элементов последовательности an=2+2n², так, чтобы их сумма оказалась меньше 1000, а сумма m+1 первых элементов была бы уже больше или равна 1000.


Пользователь вводит с клавиатуры натуральное число не большее 999, программа должна вывести на экран данное число, записанное римскими цифрами.


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


Создать программу-калькулятор, считывающую с консоли два операнда и знак арифметического оператора между ними и выводящую на экран вычисленный результат выражения. Реализовать работу со следующими операциями: сложение, умножение, вычитание, деление и возведение в натуральную степень (символ «^»).

Пример ввода: 2.3+5
Соответствующий вывод: 7.3
Пример ввода: 3^3
Соответствующий вывод: 27
Пример ввода: 10%5
Соответствующий вывод: Ошибка! Указана неизвестная операция
Пример ввода: z+5
Соответствующий вывод: Ошибка! Указан некорректный операнд

Создать программу, которая будет последовательно предлагать пользователю десять случайных примеров, проверяющих знание таблицы умножения (каждый из сомножителей от 2 до 9 включительно), запрашивать ввод ответа с клавиатуры и проверять, какие примеры из предложенных решены правильно. Каждый пример выводится в формате: «5*8=». Пользователь вводит ответ с клавиатуры, после чего выводится следующий пример. Когда получены ответы на все 10 примеров, программа сообщает количество ошибок и номера примеров, в которых пользователь ошибся. Примеры не должны повторяться. Примеры, полученные перестановкой сомножителей, такие как «5*8=» и «8*5=», считать тождественными (т. е. если был предложен первый из них, то ни он сам, ни второй — повторно предлагаться не должны).


Создать статические методы, вычисляющие факториал натурального числа, как рекурсивным, так и итерационным способами. Сравнить быстродействие этих методов, подсчитав, сколько умножений выполняется в первом и во втором случаях при вычислении факториалов 6, 7 и 8.


Создать статические методы, сортирующие по возрастанию числовой массив, переданный через аргумент, алгоритмом выбора и пузырьковым алгоритмом. В реализации сортировки пузырьковым алгоритмом использовать критерий Айверсона, останавливающий внешний цикл, если на каком-то его шаге массив уже оказался отсортированным.


Для введённой пользователем с клавиатуры строки программа должна определить, корректно ли расставлены скобки (круглые, фигурные, квадратные). «Перемешивание» скобок (пример: «{[}]») считается некорректным вариантом.


Создать класс векторов n-мерного пространства в декартовой системе координат. Реализовать операции сложения и вычитания векторов, умножения вектора на скаляр, вычисления длины вектора, проверки коллинеарности двух векторов.