Українська
Контрольні завдання
Практичні завдання за темами курсу для перевірки знань. Кожне завдання — окрема програма.
Тема 1. Java і перша програма
- Створити консольну програму Java на JDK 27: відстань d км 0..10000, витрата r л/100 км 0..50, ціна p грн/л 0..1000; вивести літри d*r/100 та вартість d*r*p/100. Параметри читати з клавіатури через Scanner; перевірити формат і межі, вивести підписані результати та опис відмови. Подати README з командами компіляції/запуску та три змістовні коміти Git.
- Створити консольну програму Java на JDK 27: довжина a, ширина b, висота h 1..100 м, площа отворів s від 0 до 2*(a+b)*h, покриття банки c 0.1..100 м², ціна p 0..10000; вивести ceil((2*(a+b)*h-s)/c) банок і ціну. Параметри читати з клавіатури через Scanner; перевірити формат і межі, вивести підписані результати та опис відмови. Подати README з командами компіляції/запуску та три змістовні коміти Git.
- Створити консольну програму Java на JDK 27: сторони кімнати a,b 1..100 м, сторона плитки t 0.05..2 м, ціна плитки p 0..10000; без урахування форми обрізків вивести ceil(a*b/(t*t)*1.1) плиток та їх ціну. Параметри читати з клавіатури через Scanner; перевірити формат і межі, вивести підписані результати та опис відмови. Подати README з командами компіляції/запуску та три змістовні коміти Git.
- Створити консольну програму Java на JDK 27: два діаметри d1,d2 1..100 см і ціни p1,p2 0..10000; вивести площі pi*d*d/4 та ціну квадратного сантиметра кожної піци. Параметри читати з клавіатури через Scanner; перевірити формат і межі, вивести підписані результати та опис відмови. Подати README з командами компіляції/запуску та три змістовні коміти Git.
- Створити консольну програму Java на JDK 27: маса m 1..300 кг, зріст h 30..250 см, вік a 1..120 років, заданий коефіцієнт k від -200 до 200; вивести умовний індекс 10*m+6.25*h-5*a+k, без медичних рекомендацій. Параметри читати з клавіатури через Scanner; перевірити формат і межі, вивести підписані результати та опис відмови. Подати README з командами компіляції/запуску та три змістовні коміти Git.
- Створити консольну програму Java на JDK 27: попередній x і поточний y показники 0..1000000 з y>=x, тариф t 0..1000; вивести споживання y-x та оплату (y-x)*t. Параметри читати з клавіатури через Scanner; перевірити формат і межі, вивести підписані результати та опис відмови. Подати README з командами компіляції/запуску та три змістовні коміти Git.
- Створити консольну програму Java на JDK 27: розмір s 0..100000 МіБ і швидкість v 0.1..10000 Мбіт/с; вивести секунди s*1048576*8/(v*1000000), не враховуючи службовий трафік. Параметри читати з клавіатури через Scanner; перевірити формат і межі, вивести підписані результати та опис відмови. Подати README з командами компіляції/запуску та три змістовні коміти Git.
- Створити консольну програму Java на JDK 27: сторони a,b 1..1000 м, максимальний крок стовпчиків s 0.1..10 м і ціна метра p 0..10000; вивести периметр, ceil(2*(a+b)/s) стовпчиків замкненого паркану та ціну полотна. Параметри читати з клавіатури через Scanner; перевірити формат і межі, вивести підписані результати та опис відмови. Подати README з командами компіляції/запуску та три змістовні коміти Git.
- Створити консольну програму Java на JDK 27: години h 0..168 і ставка r 0..10000; вивести навчальну оплату min(h,40)*r+max(h-40,0)*1.5*r без податків. Параметри читати з клавіатури через Scanner; перевірити формат і межі, вивести підписані результати та опис відмови. Подати README з командами компіляції/запуску та три змістовні коміти Git.
- Створити консольну програму Java на JDK 27: довжина a, ширина b, глибина h 0.1..100 м, подача q 0.1..1000 м³/год і ціна води p 0..1000; вивести a*b*h, час об’єм/q та оплату об’єм*p. Параметри читати з клавіатури через Scanner; перевірити формат і межі, вивести підписані результати та опис відмови. Подати README з командами компіляції/запуску та три змістовні коміти Git.
Тема 2. Типи, операції, керування
- Створити консольну програму Java на JDK 27: читати суму 0..1000000 та команду add/remove/exit; навчальна ставка 20 відсотків, add=s*1.2, remove=s/1.2; вивести базу, податок і підсумок. Після неправильного рядка повторювати ввід, EOF обробити явно; вести число успішних обчислень, перевірити обидві межі й порожній потік.
- Створити консольну програму Java на JDK 27: задати секрет 1..100, читати до 7 спроб, повідомляти більше/менше/вгадано; неправильний токен не витрачає спробу, EOF завершує гру. Після неправильного рядка повторювати ввід, EOF обробити явно; вести число успішних обчислень, перевірити обидві межі й порожній потік.
- Створити консольну програму Java на JDK 27: читати межі a,b 1..9999 з a<=b; вивести високосні роки за правилом кратності 400 або 4 без 100 та їх кількість. Після неправильного рядка повторювати ввід, EOF обробити явно; вести число успішних обчислень, перевірити обидві межі й порожній потік.
- Створити консольну програму Java на JDK 27: читати ціле n 0..65535 та основу 2, 8, 16; вивести подання n у вибраній основі й кількість одиничних бітів. Після неправильного рядка повторювати ввід, EOF обробити явно; вести число успішних обчислень, перевірити обидві межі й порожній потік.
- Створити консольну програму Java на JDK 27: читати суму 0..100000, кратну 10; видати мінімальне число купюр 100, 50, 20, 10 і перевірити відновлення суми. Після неправильного рядка повторювати ввід, EOF обробити явно; вести число успішних обчислень, перевірити обидві межі й порожній потік.
- Створити консольну програму Java на JDK 27: читати n 1..20; вивести вирівняну таблицю добутків 1..n та суму кожного рядка. Після неправильного рядка повторювати ввід, EOF обробити явно; вести число успішних обчислень, перевірити обидві межі й порожній потік.
- Створити консольну програму Java на JDK 27: читати a,b 2..100000 з a<=b і b-a<=10000; вивести прості числа та число пар із різницею 2; перевіряти дільники до d<=n/d. Після неправильного рядка повторювати ввід, EOF обробити явно; вести число успішних обчислень, перевірити обидві межі й порожній потік.
- Створити консольну програму Java на JDK 27: початковий баланс 10000 коп, навчальний PIN 2468, три спроби; після входу команди balance/withdraw/exit, сума 1..10000 не перевищує залишок; вивести незмінний баланс після відмови. Після неправильного рядка повторювати ввід, EOF обробити явно; вести число успішних обчислень, перевірити обидві межі й порожній потік.
- Створити консольну програму Java на JDK 27: читати цілі бали 0..100; локальне правило A90..100,B82..89,C74..81,D64..73,E60..63,F0..59; вивести літеру й кількість оброблених балів. Після неправильного рядка повторювати ввід, EOF обробити явно; вести число успішних обчислень, перевірити обидві межі й порожній потік.
- Створити консольну програму Java на JDK 27: читати номер місяця 1..12 і рік 1..9999; вивести кількість днів із перевіркою високосності та номер кварталу, без астрологічних тверджень. Після неправильного рядка повторювати ввід, EOF обробити явно; вести число успішних обчислень, перевірити обидві межі й порожній потік.
Тема 3. Методи, масиви, рядки
- Створити консольну програму Java: ввести 1..20 цілих чисел і вивести мінімум, максимум та середнє через три статичні методи; накопичувати суму в long, не змінювати масив.
- Створити консольну програму Java: ввести n у межах 0..20, рекурсивний метод обчислює факторіал як long; вивести результат та пояснити базовий випадок для нуля.
- Створити консольну програму Java: ввести до 20 цілих чисел, метод із varargs повертає суму через Math.addExact; вивести суму, для відсутності чисел повернути нуль.
- Створити консольну програму Java: ввести матрицю 2 на 3, метод повертає транспоновану копію; вивести обидві матриці через Arrays.deepToString та перевірити незалежність рядків.
- Створити консольну програму Java: ввести до 20 оцінок 0..100 і ціль, відсортувати копію через Arrays.sort та знайти ціль через binarySearch; вивести індекс або none і початковий масив.
- Створити консольну програму Java: ввести рядок до 200 символів, прибрати крайові Java whitespace і замінити їх внутрішні послідовності одним пробілом; вивести нормалізований текст.
- Створити консольну програму Java: ввести ASCII-рядок до 100 символів, через StringBuilder побудувати зворотний рядок; вивести його та ознаку паліндрома без зміни регістру.
- Створити консольну програму Java: ввести три рядки формату назва;ціна, ціна 0..100000 копійок, роздільник у назві заборонений; split з limit -1 перевіряє два непорожні поля; вивести вирівняну таблицю та загальну суму long.
- Створити консольну програму Java: ввести ім’я та бал 0..100, метод екранує амперсанд і кутові дужки в текстовій комірці; текстовий блок із formatted формує HTML-таблицю, яку вивести.
- Створити консольну програму Java: прийняти
--helpабо--textіз одним рядком до 200 символів, без аргументів запитати рядок; вивести length і кількість codePoints, перевірити кількість аргументів та повідомити неправильний формат у stderr.
Тема 4. Винятки та налагодження
- Створити консольну програму Java на JDK 27: читати дату ISO yyyy-MM-dd за календарем LocalDate; вивести день року; неправильний формат або неможливу дату відхилити зі збереженням причини. Використати власний тип предметного винятку; під час обгортання зберегти cause. Перевірити звичайний, граничний і неправильний ввід та незмінність стану після відмови.
- Створити консольну програму Java на JDK 27: читати два int і один знак +,-,*,/; використовувати exact-арифметику, відхиляти нульовий дільник і MIN_VALUE/-1, вивести результат або причину. Використати власний тип предметного винятку; під час обгортання зберегти cause. Перевірити звичайний, граничний і неправильний ввід та незмінність стану після відмови.
- Створити консольну програму Java на JDK 27: читати скінченну довжину 0..1000000 і одиницю mm/cm/m; вивести метри, невідому одиницю та значення поза межами відхилити. Використати власний тип предметного винятку; під час обгортання зберегти cause. Перевірити звичайний, граничний і неправильний ввід та незмінність стану після відмови.
- Створити консольну програму Java на JDK 27: читати логін 3..20 ASCII-літер/цифр, вік 1..120 і email з одним @ та непорожніми частинами; вивести всі локальні помилки або прийняття, не перевіряти існування адреси. Використати власний тип предметного винятку; під час обгортання зберегти cause. Перевірити звичайний, граничний і неправильний ввід та незмінність стану після відмови.
- Створити консольну програму Java на JDK 27: масив 10 вільних місць; читати номери 1..10, зайняте або неіснуюче місце відхиляти без зміни масиву; вивести зайняті номери. Використати власний тип предметного винятку; під час обгортання зберегти cause. Перевірити звичайний, граничний і неправильний ввід та незмінність стану після відмови.
- Створити консольну програму Java на JDK 27: початковий залишок 100 одиниць; читати списання 1..100, при нестачі кидати власний виняток і зберігати залишок; вивести стан після кожної спроби. Використати власний тип предметного винятку; під час обгортання зберегти cause. Перевірити звичайний, граничний і неправильний ввід та незмінність стану після відмови.
- Створити консольну програму Java на JDK 27: читати рядки оцінок 0..100 до EOF; неправильні рядки пропускати з номером і причиною; вивести середнє правильних або відсутність даних. Використати власний тип предметного винятку; під час обгортання зберегти cause. Перевірити звичайний, граничний і неправильний ввід та незмінність стану після відмови.
- Створити консольну програму Java на JDK 27: читати два скінченні числа latitude[-90,90], longitude[-180,180]; вивести нормалізований запис із 6 знаками, інші дані відхилити. Використати власний тип предметного винятку; під час обгортання зберегти cause. Перевірити звичайний, граничний і неправильний ввід та незмінність стану після відмови.
- Створити консольну програму Java: статичний метод обчислює середнє лише додатних елементів int-масиву й повертає null за їх відсутності; для масиву 10, −5, 20 вивести 15.0. Спочатку навмисно поділити суму на довжину всього масиву, налагоджувачем знайти й пояснити цю помилку, виправити ділення на кількість додатних елементів і зберегти перевірку масиву без додатних елементів.
- Створити програму Java з навчальним AutoCloseable-ресурсом, який повідомляє про закриття. У try-with-resources змоделювати помилку тіла й помилку close; вивести основний тип та suppressed і перевірити зворотний порядок закриття двох ресурсів.
Тема 5. Класи та об’єкти
- Створити консольну програму Java: ввести номер із 16 цифр, залишок 0..1000000 копійок і суму списання; клас Card приховує залишок, списує тільки додатну доступну суму й показує маску номера та новий залишок. Подати UML класів; використати приватні поля, перевірений конструктор, методи доступу та
toString(). - Створити консольну програму Java: ввести непорожню назву книги, рік 1450..2100 і кількість примірників 0..1000; клас Book виконує видачу одного примірника лише за наявності; вивести назву й залишок. Подати UML класів; використати приватні поля, перевірений конструктор, методи доступу та
toString(). - Створити консольну програму Java: ввести ім’я студента й три оцінки 0..100; клас Student зберігає копію масиву та обчислює середнє; вивести ім’я, середнє й мінімальну оцінку. Подати UML класів; використати приватні поля, перевірений конструктор, методи доступу та
toString(). - Створити консольну програму Java: ввести поточну й бажану температури −30..50 градусів; клас Thermostat з перевіреним сетером показує режим нагрівання, якщо поточна нижча від бажаної. Подати UML класів; використати приватні поля, перевірений конструктор, методи доступу та
toString(). - Створити консольну програму Java: ввести модель, заряд 0..100 і витрату 0..100 відсоткових пунктів; клас Phone витрачає заряд лише за достатнього залишку; вивести модель і заряд. Подати UML класів; використати приватні поля, перевірений конструктор, методи доступу та
toString(). - Створити консольну програму Java: ввести чисельник −10000..10000 і ненульовий знаменник у тих самих межах; клас Fraction скорочує дріб за НСД та переносить знак у чисельник; вивести нормальну форму. Подати UML класів; використати приватні поля, перевірений конструктор, методи доступу та
toString(). - Створити консольну програму Java: ввести дійсну й уявну частини −1000..1000; незмінний Complex повертає модуль через Math.hypot і спряжене число; вивести обидва результати. Подати UML класів; використати приватні поля, перевірений конструктор, методи доступу та
toString(). - Створити консольну програму Java: ввести години 0..23, хвилини 0..59 і зсув −10000..10000 хвилин; TimeOfDay зберігає хвилини доби, застосовує Math.floorMod із 1440; вивести час після зсуву. Подати UML класів; використати приватні поля, перевірений конструктор, методи доступу та
toString(). - Створити консольну програму Java: ввести назву, ціну 0..100000 копійок і кількість 1..100; CartItem обчислює вартість як long; вивести назву й вартість. Подати UML класів; використати приватні поля, перевірений конструктор, методи доступу та
toString(). - Створити консольну програму Java: ввести місткість 1..1000, зайняті місця 0..місткість і кількість прибулих авто; Parking приймає авто лише за наявності всіх місць; вивести вільні місця. Подати UML класів; використати приватні поля, перевірений конструктор, методи доступу та
toString().
Тема 6. Наслідування та поліморфізм
- Створити консольну програму Java: ввести вид car або bike, дні 1..30 і ставку 1..100000 копійок; Rental та два підкласи обчислюють ціну: car додає 10000 страховки, bike – без доплати; вивести вид і суму. Подати UML класів; застосувати
extends, явнийsuper, приватні поля й перевизначення з@Override; обробляти результат через базовий тип. - Створити консольну програму Java: ввести вид standard або savings, залишок 0..1000000 копійок; Account і SavingsAccount закривають період: standard без змін, savings додає один відсоток із відкиданням дробової копійки; вивести залишок. Подати UML класів; застосувати
extends, явнийsuper, приватні поля й перевизначення з@Override; обробляти результат через базовий тип. - Створити консольну програму Java: ввести назву, ціну 0..1000000 і вид normal або sale; Product та DiscountProduct повертають ціну без змін або зі знижкою 10 відсотків; вивести ціну в копійках. Подати UML класів; застосувати
extends, явнийsuper, приватні поля й перевизначення з@Override; обробляти результат через базовий тип. - Створити консольну програму Java: ввести тип audio або video, назву і секунди 1..7200; Media та підкласи показують опис, для video також ввести висоту 480, 720 або 1080; вивести поліморфний опис. Подати UML класів; застосувати
extends, явнийsuper, приватні поля й перевизначення з@Override; обробляти результат через базовий тип. - Створити консольну програму Java: ввести вид warrior або mage, ім’я й силу 1..100; Character та підкласи обчислюють умовну атаку як подвоєну або потроєну силу; вивести атаку. Подати UML класів; застосувати
extends, явнийsuper, приватні поля й перевизначення з@Override; обробляти результат через базовий тип. - Створити консольну програму Java: ввести тип flat або house, площу 1..1000 і ставку 1..100000 за квадратний метр; Property та підкласи повертають площу, помножену на ставку, для house додають 100000; вивести умовну ціну. Подати UML класів; застосувати
extends, явнийsuper, приватні поля й перевизначення з@Override; обробляти результат через базовий тип. - Створити консольну програму Java: ввести тип standard або student, маршрут і базову ціну 1..100000 копійок; Ticket та StudentTicket застосовують 0 або 50 відсотків знижки; вивести опис і ціну. Подати UML класів; застосувати
extends, явнийsuper, приватні поля й перевизначення з@Override; обробляти результат через базовий тип. - Створити консольну програму Java: ввести тип prepaid або contract, ім’я і хвилини 0..10000; Subscriber та підкласи обчислюють умовний рахунок як хвилини на 100 або 5000 плюс хвилини на 50 копійок; вивести рахунок. Подати UML класів; застосувати
extends, явнийsuper, приватні поля й перевизначення з@Override; обробляти результат через базовий тип. - Створити консольну програму Java: ввести вид cat або bird та ім’я; Animal та підкласи повертають meow або chirp через sound; вивести ім’я й голос. Подати UML класів; застосувати
extends, явнийsuper, приватні поля й перевизначення з@Override; обробляти результат через базовий тип. - Створити консольну програму Java: ввести вид sms або email, непорожнього адресата й текст до 100 символів; Notification та підкласи формують текстовий опис без реального надсилання; вивести канал, адресата й текст. Подати UML класів; застосувати
extends, явнийsuper, приватні поля й перевизначення з@Override; обробляти результат через базовий тип.
Тема 7. Абстрактні класи, інтерфейси
- Створити консольну програму Java: ввести вид card або transfer і суму 1..1000000 копійок; Payment має метод fee, реалізації повертають 2 відсотки або 100 копійок; вивести комісію та суму разом без реального платежу. Подати UML класів; визначити явний інтерфейс або абстрактний клас та щонайменше дві реалізації; лямбди не використовувати.
- Створити консольну програму Java: ввести вид rectangle або triangle та розмір 1..20; абстрактна Figure і Drawable будують рядки з символів зірочки: квадрат розміру n або трикутник із рядками 1..n; вивести малюнок. Подати UML класів; визначити явний інтерфейс або абстрактний клас та щонайменше дві реалізації; лямбди не використовувати.
- Створити консольну програму Java: ввести до 20 непорожніх імен та балів 0..100; Student реалізує Comparable за іменем, а анонімний Comparator – за балом спадно, потім іменем; вивести обидва порядки. Подати UML класів; визначити явний інтерфейс або абстрактний клас та щонайменше дві реалізації; лямбди не використовувати.
- Створити консольну програму Java: ввести початкову й кінцеву дати ISO у межах 2020..2030 та крок 1..30 днів; DateRange реалізує Iterable з внутрішнім Iterator, видає дати від початку включно до кінця невключно; вивести дати. Подати UML класів; визначити явний інтерфейс або абстрактний клас та щонайменше дві реалізації; лямбди не використовувати.
- Створити консольну програму Java: ввести рядок до 200 символів і вид trim або upper; TextFilter та реалізації застосовують strip або toUpperCase з Locale.ROOT; вивести результат. Подати UML класів; визначити явний інтерфейс або абстрактний клас та щонайменше дві реалізації; лямбди не використовувати.
- Створити консольну програму Java: ввести ім’я, on або off та яскравість 0..100; Device реалізує Switchable і Adjustable, default toggle змінює стан через методи контракту; вивести стан і рівень. Подати UML класів; визначити явний інтерфейс або абстрактний клас та щонайменше дві реалізації; лямбди не використовувати.
- Створити консольну програму Java: ввести назву й три цілі числа −1000..1000; абстрактний Report має фінальний render та абстрактний body; TextReport розділяє числа пробілами, CsvReport – крапками з комою; вивести обидва звіти. Подати UML класів; визначити явний інтерфейс або абстрактний клас та щонайменше дві реалізації; лямбди не використовувати.
- Створити консольну програму Java: ввести суму 0..1000000 і вид none або percent; DiscountPolicy повертає кінцеву ціну без зміни або мінус 10 відсотків із цілими копійками; вивести суму. Подати UML класів; визначити явний інтерфейс або абстрактний клас та щонайменше дві реалізації; лямбди не використовувати.
- Створити консольну програму Java: ввести до 20 цілих чисел і вид stack або queue; IntContainer задає add, remove і size, дві реалізації видають останній або перший елемент; вивести порядок вилучення. Подати UML класів; визначити явний інтерфейс або абстрактний клас та щонайменше дві реалізації; лямбди не використовувати.
- Створити консольну програму Java: ввести дві грані 1..6; абстрактна DiceGame фіксує перевірку, ScoreRule задає суму або максимум; вивести рахунок кожного правила без випадковості. Подати UML класів; визначити явний інтерфейс або абстрактний клас та щонайменше дві реалізації; лямбди не використовувати.
Тема 8. Записи, enum і sealed-класи
- Створити консольну програму Java: ввести операцію add або mul і два цілі числа −1000..1000; sealed Expr із записами Num, Add, Mul обчислюється вичерпним switch; вивести результат із Math.addExact та multiplyExact. Подати UML класів; застосувати перевірені записи, перелік або запечатану ієрархію відповідно до моделі; використовувати стабільний синтаксис JDK 27 без preview.
- Створити консольну програму Java: ввести масть CLUBS, DIAMONDS, HEARTS, SPADES і ранг 2..14; enum Suit та Rank з явною вагою, record Card; вивести карту й вагу. Подати UML класів; застосувати перевірені записи, перелік або запечатану ієрархію відповідно до моделі; використовувати стабільний синтаксис JDK 27 без preview.
- Створити консольну програму Java: ввести стан RED, GREEN або YELLOW і кількість кроків 0..20; enum Light переходить RED→GREEN→YELLOW→RED через switch; вивести послідовність. Подати UML класів; застосувати перевірені записи, перелік або запечатану ієрархію відповідно до моделі; використовувати стабільний синтаксис JDK 27 без preview.
- Створити консольну програму Java: ввести вид circle або rectangle й додатні скінченні розміри до 10000; sealed Shape і записи Circle, Rectangle обчислюються зразками записів; вивести площу. Подати UML класів; застосувати перевірені записи, перелік або запечатану ієрархію відповідно до моделі; використовувати стабільний синтаксис JDK 27 без preview.
- Створити консольну програму Java: ввести назву, дату ISO 2020..2030 і хвилини початку та кінця 0..1440, початок менший за кінець; Event перевіряє компоненти; вивести тривалість. Подати UML класів; застосувати перевірені записи, перелік або запечатану ієрархію відповідно до моделі; використовувати стабільний синтаксис JDK 27 без preview.
- Створити консольну програму Java: ввести ідентифікатор, стан NEW, PAID, SENT, DONE або CANCELLED і ціль; дозволити NEW→PAID/CANCELLED, PAID→SENT/CANCELLED, SENT→DONE; record Order повертає новий стан або відмову. Подати UML класів; застосувати перевірені записи, перелік або запечатану ієрархію відповідно до моделі; використовувати стабільний синтаксис JDK 27 без preview.
- Створити консольну програму Java: ввести тип card або cash і суму 1..1000000 копійок; sealed Payment із записами CardPayment та CashPayment, комісія 2 відсотки або 0; вивести умовну суму без реальної транзакції. Подати UML класів; застосувати перевірені записи, перелік або запечатану ієрархію відповідно до моделі; використовувати стабільний синтаксис JDK 27 без preview.
- Створити консольну програму Java: ввести стан IDLE, CLEANING або CHARGING і команду start, dock або stop; enum переходить IDLE→CLEANING за start, будь-який→CHARGING за dock, CLEANING/CHARGING→IDLE за stop; вивести стан чи відмову. Подати UML класів; застосувати перевірені записи, перелік або запечатану ієрархію відповідно до моделі; використовувати стабільний синтаксис JDK 27 без preview.
- Створити консольну програму Java: ввести довжину 0..1000000 і одиницю M або CM; enum Unit має коефіцієнт до метрів, record Length перевіряє скінченність; вивести метри. Подати UML класів; застосувати перевірені записи, перелік або запечатану ієрархію відповідно до моделі; використовувати стабільний синтаксис JDK 27 без preview.
- Створити консольну програму Java: ввести рядок цілого числа; sealed ParseResult із записами Success(int value) і Failure(String reason), switch виводить подвоєне значення long або причину. Подати UML класів; застосувати перевірені записи, перелік або запечатану ієрархію відповідно до моделі; використовувати стабільний синтаксис JDK 27 без preview.
Тема 9. Узагальнення (generics)
- Створити консольну програму Java: реалізувати
Pair<A,B>з методом swap; для пари ("Ada", 7) вивести (7, "Ada") і перевірити, що подвійний обмін повертає початкову пару. - Створити консольну програму Java: реалізувати
Box<T>з методами put і get; зберегти 5, замінити на 8 і вивести 8; читання з порожньої коробки має кидати NoSuchElementException. - Створити консольну програму Java: реалізувати узагальнений метод first, що повертає перший елемент непорожнього масиву T[]; для {"a", "b"} вивести "a", порожній масив відхилити IllegalArgumentException.
- Створити консольну програму Java: реалізувати узагальнений метод max для масиву T[] з межею
T extends Comparable<? super T>; для {2, 9, 4} вивести 9, перевірити масив з одного елемента й відхилити порожній масив. - Створити консольну програму Java: реалізувати узагальнений метод contains для масиву T[] через Objects.equals; для {"a", null} і шуканого null вивести true.
- Створити консольну програму Java: реалізувати узагальнений метод swap, що обмінює два елементи масиву T[] за індексами; для {1, 2, 3} та індексів 0 і 2 вивести {3, 2, 1}, неправильні індекси відхилити.
- Створити консольну програму Java: реалізувати метод sum для
List<? extends Number>, що повертає double; для {2, 3.5} вивести 5.5, для порожнього списку 0.0, null-список заборонити. - Створити консольну програму Java: реалізувати метод append, що додає ціле число до
List<? super Integer>; додати 7 до порожньогоArrayList<Number>і вивести [7]. - Створити консольну програму Java: реалізувати
Range<T extends Comparable<? super T>>із замкненими межами та методом contains; для меж 2 і 5 перевірити 2, 5 і 6 з результатами true, true, false; зворотні межі відхилити. - Створити консольну програму Java: реалізувати
Stack<T>наArrayList<T>з методами push і pop; додати "a", "b" і вивести "b", "a"; pop із порожнього стека має кидати NoSuchElementException.
Тема 10. Колекції
- Створити консольну програму Java: для списку
List<Integer>[1,2,1,3] вилучити лише перше входження значення 1, а не елемент з індексом 1; вивести [2,1,3]. - Створити консольну програму Java: зі списку ["b","a","b"] отримати LinkedHashSet і вивести [b,a]; пояснити, чому зберігається порядок першої появи.
- Створити консольну програму Java: знайти перетин множин {1,2,3} і {2,4}, не змінюючи жодну з них; вивести {2}.
- Створити консольну програму Java: додати A,B,C до ArrayDeque як до черги FIFO й послідовно вилучити A,B,C; показати, що poll із порожньої черги повертає null.
- Створити консольну програму Java: додати A,B до ArrayDeque як до стека й вилучити B,A; виняток pop із порожнього стека перехопити й повідомити.
- Створити консольну програму Java: порахувати частоти елементів списку ["a","b","a"] через HashMap; вивести звіт через TreeMap у вигляді a=2,b=1.
- Створити консольну програму Java: для TreeSet {10,20,30} вивести floor(25)=20 і ceiling(25)=30; перевірити випадок відсутнього сусіда, наприклад floor(5), що повертає null.
- Створити консольну програму Java: вставити в LinkedHashMap ключі B,A,C і вивести їх у зворотному порядку C,A,B через reversed.
- Створити консольну програму Java: додати до PriorityQueue числа 5,1,3 і вилучити їх через poll у порядку 1,3,5; не використовувати порядок ітерації як результат.
- Створити консольну програму Java: сформувати ArrayList [1,2], зробити незмінний знімок List.copyOf і додати 3 до вихідного списку; вивести знімок [1,2].
Тема 11. Лямбди та Stream API
- Створити консольну програму Java: через
Predicate<Integer>відібрати додатні числа зі списку [-1,0,2,3] і вивести [2,3]. - Створити консольну програму Java: через
Function<String,Integer>перетворити список ["a","bbb"] на довжини рядків і вивести [1,3]. - Створити консольну програму Java: композицією двох Predicate через and перевірити, що число більше 0 і менше 10; для 0, 5, 10 вивести false, true, false.
- Створити консольну програму Java: відсортувати список ["bbb","a","cc"] через Comparator.comparingInt(String::length) і вивести [a,cc,bbb].
- Створити консольну програму Java: для Optional.empty() отримати напис absent через orElseGet, для Optional.of("ok") вивести ok.
- Створити консольну програму Java: зі списку [1,2,3,4] через filter і map Stream API отримати квадрати парних чисел і вивести [4,16].
- Створити консольну програму Java: через flatMap розгорнути список списків [[1,2],[],[3]] і вивести [1,2,3].
- Створити консольну програму Java: через groupingBy і counting порахувати входження елементів списку ["a","b","a"] і вивести a=2,b=1 у стабільному порядку ключів.
- Створити консольну програму Java: через IntStream.rangeClosed(1,5) обчислити й вивести суму 15; пояснити включність обох меж.
- Створити консольну програму Java: через Gatherers.windowSliding(2) для списку [1,2,3] отримати й вивести [[1,2],[2,3]]; перевірити також порожнє джерело.
Тема 12. Файли, NIO.2, серіалізація
- Створити консольну програму Java: записати у файл UTF-8 рядки "Привіт" і "Світ", прочитати файл і вивести обидва рядки; усі ресурси закривати через try-with-resources.
- Створити консольну програму Java: записати UTF-8 файл із трьох рядків – "a", порожнього та "b" – без кінцевого переносу, прочитати його й вивести кількість рядків 3; для порожнього файла вивести 0.
- Створити консольну програму Java: записати байти {0,1,255} у файл, скопіювати його в новий файл без перезапису наявного й перевірити, що Files.mismatch повертає -1.
- Створити консольну програму Java: для Path.of("data","input.txt") вивести fileName та абсолютний шлях; не припускати, що робочий каталог збігається з каталогом проєкту в IDE.
- Створити консольну програму Java: записати у файл int 42 і double 2.5 через DataOutputStream, прочитати їх через DataInputStream у тому самому порядку й вивести.
- Створити консольну програму Java: прочитати файл Properties із рядком limit=7 через UTF-8 Reader і вивести 7; за відсутності ключа limit повернути 20, нецілий текст відхилити.
- Створити консольну програму Java: створити тестовий каталог із кількома файлами й підкаталогом; через Files.list вивести імена лише звичайних файлів в алфавітному порядку, закривши Stream.
- Створити консольну програму Java: записати обмежений CSV із двох рядків – заголовка "name,count" і запису "Tea,3" – без кінцевого переносу; прочитати файл, перевірити заголовок і вивести Tea:3.
- Створити консольну програму Java: серіалізувати у власний файл об’єкт Serializable-класу з ім’ям Ada й transient-полем note; після відновлення з файла перевірити, що note == null.
- Створити консольну програму Java: створити тимчасовий файл, записати три байти, вивести Files.size == 3 і видалити лише цей файл у блоці finally.
Тема 13. Модулі, Maven, Gradle, JUnit
- Створити самостійну Java-програму. Написати клас квадрата та три JUnit-тести площі: звичайна сторона, нуль і від’ємна сторона з винятком.
- Створити самостійну Java-програму. Описати module-info для бібліотеки конвертера і клієнта; відкрити лише пакет API та запустити перетворення 20 °C на 68 °F за формулою
F=C*1.8+32. - Створити самостійну Java-програму. Створити Maven POM із release 27 і JUnit; написати та запустити тест додавання двох чисел.
- Створити самостійну Java-програму. Створити Gradle-проєкт Java з toolchain 27 і useJUnitPlatform; протестувати пошук максимуму трьох чисел.
- Створити самостійну Java-програму. Написати параметризований тест парності для шести цілих чисел, включно з нулем і від’ємним.
- Створити самостійну Java-програму. Написати assertThrows-тест ділення на нуль та перевірити коректне ціле ділення.
- Створити самостійну Java-програму. Створити тестовий клас із BeforeEach для нового списку; перевірити додавання та очищення незалежними тестами.
- Створити самостійну Java-програму: бібліотечний клас обчислює вартість товару як ціну в копійках, помножену на кількість, через Math.multiplyExact; JUnit-тестами перевірити звичайну ціну, нульову кількість і переповнення добутку.
- Створити самостійну Java-програму. Створити два пакети модуля, експортувати API та пояснити помилку спроби імпорту внутрішнього класу клієнтом.
- Створити самостійну Java-програму. Зібрати виконуваний JAR програми привітання, запустити його поза IDE та показати звіт одного JUnit-тесту.
Тема 14. Бази даних і JDBC
- Створити самостійну Java-програму. Підключитися до навчального PostgreSQL та вивести назву СКБД і версію драйвера, закрити Connection.
- Створити консольну Java/JDBC-програму з PostgreSQL: створити тимчасову таблицю контактів (id, ім’я, телефон), вставити два записи й вивести їх за зростанням id.
- Створити консольну Java/JDBC-програму з PostgreSQL: таблиця товарів (id, назва, ціна в копійках); за введеною назвою знайти товар параметризованим запитом PreparedStatement, вивести знайдені рядки або повідомити про відсутність збігу.
- Створити консольну Java/JDBC-програму з PostgreSQL: таблиця товарів (id, назва, ціна в копійках); за введеними id і новою ціною змінити ціну параметризованим UPDATE, вивести кількість змінених рядків, від’ємну ціну відхилити до запиту.
- Створити консольну Java/JDBC-програму з PostgreSQL: таблиця читачів з автоматичним id та ім’ям; вставити введеного читача через PreparedStatement і вивести згенерований id із getGeneratedKeys.
- Створити консольну Java/JDBC-програму з PostgreSQL: таблиці авторів (id, ім’я) і книг (id, назва,
author_id); прочитати книги з авторами через JOIN у список record-об’єктів та вивести таблицю назва – автор. - Створити консольну Java/JDBC-програму з PostgreSQL: таблиці категорій (id, назва) і товарів (id, назва,
category_id); порахувати товари в кожній категорії через LEFT JOIN і GROUP BY, включно з порожньою категорією, та впорядкувати звіт за назвою категорії. - Створити консольну Java/JDBC-програму з PostgreSQL: таблиця рахунків (id, баланс у копійках); виконати переказ як дві зміни балансу в одній транзакції, імітувати помилку між ними й повторним читанням підтвердити, що rollback зберіг обидва баланси незмінними.
- Створити консольну Java/JDBC-програму з PostgreSQL: таблиця контактів (id, ім’я, телефон); додати три записи через addBatch/executeBatch і вивести число збережених рядків.
- Створити консольну Java/JDBC-програму з PostgreSQL: таблиця видач книг (id, назва книги, дата видачі, дата повернення, що може бути NULL); прочитати дату повернення через getObject(LocalDate.class) і показати дату або «не повернено».
Тема 15. Графічні застосунки JavaFX
- Створити JavaFX-застосунок: вікно з Label і Button; кожне натискання збільшує лічильник у Label до максимуму 100, окрема кнопка скидання повертає 0.
- Створити JavaFX-застосунок: форма площі прямокутника на GridPane з полями ширини й висоти та кнопкою обчислення; перевірити, що введено додатні скінченні числа, і показати площу або повідомлення про помилку.
- Створити JavaFX-застосунок «Список покупок»: TextField і ListView; Enter додає непорожній рядок до списку, кнопка видаляє вибраний рядок.
- Створити JavaFX-застосунок: форма з кількома RadioButton в одній ToggleGroup і CheckBox; після натискання кнопки підтвердження показати обрані значення в Label.
- Створити JavaFX-застосунок «Конвертер температур»: поле градусів Цельсія й кнопка перетворення показують градуси Фаренгейта за формулою
F=C*1.8+32; порожній текст, нечислове значення й температуру нижче абсолютного нуля −273,15 °C відхилити з повідомленням. - Створити JavaFX-застосунок: вікно на BorderPane з TextArea в центрі та меню з пунктом очищення тексту; очищення запитує підтвердження діалогом, скасування діалогу не змінює TextArea.
- Створити JavaFX-застосунок: Slider задає масштаб фігури у вікні, а Label показує поточне числове значення масштабу.
- Створити JavaFX-застосунок: завантажити просту FXML-форму з кнопкою й Label; обробник кнопки з анотацією
@FXMLу контролері показує в Label результат натискання. - Створити JavaFX-застосунок: Canvas, на якому перетягування миші малює лінію, та кнопка очищення полотна.
- Створити JavaFX-застосунок «Переглядач тексту»: кнопка відкриває UTF-8 файл через FileChooser і показує його вміст у TextArea; IOException повідомити діалогом, не втрачаючи попереднього тексту.
Тема 16. MVC і прив’язка даних
- Створити JavaFX-застосунок: модель профілю з полями ім’я та email як StringProperty двонаправлено прив’язати до двох TextField форми; кнопка Cancel відновлює знімок значень, збережений перед редагуванням.
- Створити JavaFX-застосунок «Замовлення»: поля назви товару й кількості; прив’язати доступність кнопки підтвердження до непорожньої назви та додатної цілої кількості, після натискання показати підсумок замовлення.
- Створити JavaFX-застосунок: ObservableList назв міст у ListView, FilteredList відбирає міста за текстом поля пошуку, а Label показує кількість знайдених елементів.
- Створити JavaFX-застосунок: TableView книг із колонками id і назва, заповнений кількома записами; cellValueFactory задати лямбдами, а id вибраної книги показати в Label.
- Створити JavaFX-застосунок на FXML: головне вікно зі списком контактів (ім’я, телефон, email); вибраний контакт передати в контролер другого FXML-вікна через FXMLLoader.getController і показати там деталі.
- Створити JavaFX-застосунок: список назв завантажується з DAO у Task; під час завантаження показати індикатор зайнятості, помилку DAO обробити в onFailed, не блокуючи FX-потік; для перевірки DAO має режим затримки та режим помилки.
- Створити JavaFX/JDBC-застосунок з PostgreSQL: форма з полями назви й автора книги; кнопка викликає через Task DAO додавання книги до таблиці books, після помилки введений текст зберігається в полях.
- Створити самостійну Java-програму: сервіс додавання книги перевіряє назву й передає книгу інтерфейсу DAO; JUnit-тест із fake DAO перевіряє, що порожня назва не записується, а правильна передається DAO рівно один раз.
- Створити JavaFX-застосунок: TableView товарів (назва, ціна) з полем пошуку через FilteredList; обгорнути FilteredList у SortedList, прив’язати його comparatorProperty до comparatorProperty таблиці й перевірити сортування за колонкою після фільтрації.
- Створити JavaFX-застосунок: TableView записів, завантажених через DAO, і кнопка видалення вибраного запису з діалогом підтвердження; Cancel не викликає DAO, а успішне видалення оновлює таблицю.