Skip to Content
Веб-разработчикОсновы программирования на JavaПрактическая работа №4. Разбираемся в Java

Практическая работа №4. Разбираемся в Java

В этой работе вы прочитаете несколько небольших программ, проверите свои предположения и напишете собственный код. Задания помогут разобраться, как Java работает с переменными, условиями, циклами, методами и объектами.

Работа индивидуальная. Выполняйте задания по порядку. Если не получается решить пункт, запишите, на чём остановились, и переходите дальше. Вернуться к нему можно в конце.

Как работать и что сдавать

Создайте папку java-practice-04-фамилия. Сохраните в неё:

  • Answers.md или Answers.txt — ответы, предположения и результаты проверки по всем заданиям;
  • TaskStats.java — программу из задания 3;
  • Task.java и TaskDemo.java — классы из задания 5.

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

Примеры в заданиях 1, 2 и 4 можно запускать отдельно: создайте класс Main, поместите фрагмент внутрь метода main и запускайте по одному. Переписывать эти примеры в сдаваемые файлы не обязательно.

public class Main { public static void main(String[] args) { // Поместите сюда один фрагмент для проверки. } }

Используйте установленную среду разработки. Для запуска из терминала нужны JDK и команды javac ИмяФайла.java, затем java ИмяКласса из папки с файлом. Имя файла с public-классом должно совпадать с именем класса.

Задание 1. Значения и условия

Не запускайте код до того, как запишете предположение.

int price = 120; int count = 3; int total = price * count; if (total >= 400) { total = total - 50; } else { total = total + 20; } System.out.println(total);
  1. Что выведет программа? Запишите, чему равен total до условия и после него.
  2. Почему выполнилась именно эта ветка if? Что изменится в результате, если count будет равен 4?
  3. Проверьте оба случая запуском. Если ошиблись, объясните, почему.

Задание 2. Цикл и массив

Сначала проследите выполнение на бумаге или в файле ответов.

int[] minutes = {25, 10, 40, 15}; int count = 0; for (int i = 0; i < minutes.length; i++) { if (minutes[i] >= 20) { count++; } } System.out.println(count);
  1. Что выведет программа? Какие элементы подходят под условие?
  2. Запишите значения i и count после каждой итерации цикла.
  3. Проверьте ответ запуском. Что произойдёт, если заменить i < minutes.length на i <= minutes.length? Проверьте и объясните причину.

Задание 3. Напишите программу

Создайте файл TaskStats.java. В нём напишите программу для анализа времени выполнения задач.

Дан массив:

int[] minutes = {25, 10, 40, 15, 30};

Программа должна:

  1. Вывести все значения массива.
  2. Найти и вывести сумму минут.
  3. Посчитать и вывести количество задач, на которые ушло не меньше 20 минут.
  4. Найти и вывести максимальное значение.

Используйте циклы и условия. Не записывайте готовые результаты вручную: после изменения чисел в массиве программа должна пересчитать их. Считайте, что массив содержит хотя бы один элемент.

Проверьте программу на указанном массиве, а затем на {5, 5, 5}. Убедитесь, что все результаты изменились правильно. В файл ответов запишите результаты обеих проверок.

Задание 4. Что делает метод

Сначала прочитайте код и ответьте на вопросы, затем проверьте запуском. Здесь приведён полный класс, поэтому его можно сохранить в Main.java и запустить целиком.

public class Main { public static int addBonus(int points, int bonus) { return points + bonus; } public static void main(String[] args) { int points = 10; int result = addBonus(points, 5); System.out.println(points); System.out.println(result); } }
  1. Что будет выведено в каждой строке? Почему переменная points в main не изменилась?
  2. Какую роль играют параметры points и bonus? Что возвращает метод?
  3. Как изменится результат, если вызвать addBonus(points, 8)? Проверьте.

Задание 5. Класс и объекты

Создайте класс Task в файле Task.java. У задачи должны быть:

  • поле с названием типа String;
  • поле со статусом выполнения типа boolean;
  • конструктор, который принимает название; новая задача ещё не выполнена;
  • метод, который отмечает задачу выполненной;
  • метод, который выводит название и статус задачи.

В файле TaskDemo.java создайте класс TaskDemo с методом main:

  1. Создайте две задачи с разными названиями.
  2. Отметьте одну из них выполненной.
  3. Выведите информацию об обеих задачах.

Проверьте, что выполнение одной задачи не меняет статус второй. В файле ответов объясните своими словами, чем класс отличается от объекта и что делает конструктор. Если не получилось написать класс целиком, сохраните то, что получилось, и опишите затруднение.

Для запуска из терминала оба файла должны находиться в одной папке: выполните javac Task.java TaskDemo.java, затем java TaskDemo.

Сдача и обсуждение

Перед сдачей проверьте, что в папке лежат ваши ответы и исходные файлы .java. Передайте папку преподавателю в согласованном формате. Скриншоты вместо исходного кода не нужны.

При сдаче покажите запуск программы, объясните один выбранный фрагмент и выполните небольшое изменение по просьбе преподавателя. Можно пользоваться своими записями. Если какой-то пункт не выполнен, покажите, что успели сделать, и расскажите, где возникло затруднение.

Главное в работе: не только получить вывод, но и понять, как программа к нему пришла, а также суметь проверить и объяснить своё решение.