Практическая работа №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);- Что выведет программа? Запишите, чему равен
totalдо условия и после него. - Почему выполнилась именно эта ветка
if? Что изменится в результате, еслиcountбудет равен4? - Проверьте оба случая запуском. Если ошиблись, объясните, почему.
Задание 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);- Что выведет программа? Какие элементы подходят под условие?
- Запишите значения
iиcountпосле каждой итерации цикла. - Проверьте ответ запуском. Что произойдёт, если заменить
i < minutes.lengthнаi <= minutes.length? Проверьте и объясните причину.
Задание 3. Напишите программу
Создайте файл TaskStats.java. В нём напишите программу для анализа времени выполнения задач.
Дан массив:
int[] minutes = {25, 10, 40, 15, 30};Программа должна:
- Вывести все значения массива.
- Найти и вывести сумму минут.
- Посчитать и вывести количество задач, на которые ушло не меньше 20 минут.
- Найти и вывести максимальное значение.
Используйте циклы и условия. Не записывайте готовые результаты вручную: после изменения чисел в массиве программа должна пересчитать их. Считайте, что массив содержит хотя бы один элемент.
Проверьте программу на указанном массиве, а затем на {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);
}
}- Что будет выведено в каждой строке? Почему переменная
pointsвmainне изменилась? - Какую роль играют параметры
pointsиbonus? Что возвращает метод? - Как изменится результат, если вызвать
addBonus(points, 8)? Проверьте.
Задание 5. Класс и объекты
Создайте класс Task в файле Task.java. У задачи должны быть:
- поле с названием типа
String; - поле со статусом выполнения типа
boolean; - конструктор, который принимает название; новая задача ещё не выполнена;
- метод, который отмечает задачу выполненной;
- метод, который выводит название и статус задачи.
В файле TaskDemo.java создайте класс TaskDemo с методом main:
- Создайте две задачи с разными названиями.
- Отметьте одну из них выполненной.
- Выведите информацию об обеих задачах.
Проверьте, что выполнение одной задачи не меняет статус второй. В файле ответов объясните своими словами, чем класс отличается от объекта и что делает конструктор. Если не получилось написать класс целиком, сохраните то, что получилось, и опишите затруднение.
Для запуска из терминала оба файла должны находиться в одной папке: выполните javac Task.java TaskDemo.java, затем java TaskDemo.
Сдача и обсуждение
Перед сдачей проверьте, что в папке лежат ваши ответы и исходные файлы .java. Передайте папку преподавателю в согласованном формате. Скриншоты вместо исходного кода не нужны.
При сдаче покажите запуск программы, объясните один выбранный фрагмент и выполните небольшое изменение по просьбе преподавателя. Можно пользоваться своими записями. Если какой-то пункт не выполнен, покажите, что успели сделать, и расскажите, где возникло затруднение.
Главное в работе: не только получить вывод, но и понять, как программа к нему пришла, а также суметь проверить и объяснить своё решение.