Ім'я файлу: КН222Г_Лабораторна1_Шовкопляс_Є_Ю.docx Розширення: docx Розмір: 132кб. Дата: 04.10.2023 скачати МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ УНІВЕРСИТЕТ «ХАРКІВСЬКИЙ ПОЛІТЕХНІЧНИЙ ІНСТИТУТ» Кафедра «Програмна інженерія та інтелектуальні технології управління» ЗВІТ з лабораторної роботи № 1 з навчальної дисципліни «основи програмування Java (двв)» ВИКОНАВ Студент групи КН-222г Євген ШОВКОПЛЯС ПЕРЕВІРИВ доц каф. ПІІТУ к.т.н. доцент Валерій ВОЛОВЩИКОВ Харків 2023 ТЕМА: Архітектура та синтаксис Java ХІД РОБОТИ Завдання 1: Індивідуальне завдання Створити консольну програму, в якій здійснюється обчислення значень функції на певному інтервалі. У програмі треба визначити значення початку інтервалу, кінця інтервалу, а також величини кроку, з яким змінюється аргумент. Відповідні значення слід прочитати з клавіатури. Програма повинна містити визначення та введення необхідних даних і один великий цикл, у тілі якого здійснюється обчислення функції одним з варіантів, залежно від значення аргументу виведення на консоль аргументу та результату на кожному кроці циклу збільшення значення аргументу на величину кроку і перехід на наступне обчислення, якщо необхідно. Програма повинна складатися з одного класу з двома статичними функціями: окрема статична функція для обчислення значення y залежно від значення аргументу x; метод main(), в якому здійснюється читання вихідних даних, а також цикл обчислення функції та виведення значень x та y. Варіант функціональної залежності, який слід реалізувати у програмі, визначається відповідно до номеру студента у списку групи. Визначену константу n описати з модифікатором final. Для форматованого виведення результатів застосувати функцію printf(). Варіант 4 Набори тестових даних: 1) Початок інтервалу 7 Кінець інтервалу 14 Крок 2 2) Початок інтервалу 1 Кінець інтервалу 8 Крок 3 3) Початок інтервалу -3 Кінець інтервалу 6 Крок 2 Очікуваний результат
//Лістинг програми// import java.util.Scanner; public class Main { public static final double N = 11.0; // Змінна n з модифікатором final public static double calculateFunction(double x) { if (x < 7) { return 3 * x + N * Math.pow(Math.sin(x - 7), 1); } else { return 23 - 2 * Math.exp(7 - x); } } public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("Введіть початок інтервалу: "); double start = scanner.nextDouble(); System.out.print("Введіть кінець інтервалу: "); double end = scanner.nextDouble(); System.out.print("Введіть крок: "); double step = scanner.nextDouble(); System.out.println("\nОбчислення функції:"); for (double x = start; x <= end; x += step) { double y = calculateFunction(x); System.out.printf("x = %.2f, y = %.2f%n", x, y); } scanner.close(); } } 1 набір тестових даних 2 набір тестових даних 3 набір тестових даних Результат роботи програми Завдання 2: Степені числа 8 Увести значення n (від 0 до 10) і вивести значення степенів числа 8 до n включно. Реалізувати два підходи – з використанням арифметичних і побітових операцій. Набір тестових даних: n = 3. Очікуваний результат:
//Лістинг програми// import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("Введіть значення n: "); int n = scanner.nextInt(); System.out.println("З використанням побітових операцій:"); for (int i = 0; i <= n; i++) { int result = 1 << (i * 3); System.out.println("8^" + i + " = " + result); } } } Результат роботи програми Завдання 3: Використання break і continue з міткою Увести значення x та n, обчислити та вивести результат виразу: Якщо i дорівнює j + x, перейти на наступний крок зовнішнього циклу без множення на проміжний результат. Для переходу на наступний крок застосувати continue з міткою. Якщо знаменник на якійсь ітерації дорівнює 0, вийти з обох циклів з виведенням повідомлення про помилку. Для виходу застосувати break з міткою. Набір тестових даних та очікуваний результат:
//Лістинг програми// public class Main { public static void main(String[] args) { Scanner s = new Scanner(System.in); System.out.print("input x : "); double x = s.nextDouble(); System.out.print("input n : "); double n = s.nextDouble(); double y = 1; boolean broke = false; outerLabel : for (int i = 1; i < n - 1; i++) { double sum = 0; innerLabel : for (int j = 0; j < n; j++) { if (j + x == 0) { broke = true; break outerLabel; } if (i == j + x) { System.out.printf("continued at iteration i = %d, j = %d\n", i, j); continue innerLabel; } sum += i / (j + x); } y *= sum; } if (broke) { System.err.println("denominator cannot be 0!"); } else { System.out.printf("y = %f", y); } } } виконання програми з переходом на наступний крок із застосуванням continue з міткою Результат виконання програми зі знаменником, що на якійсь ітерації дорівнює 0, виходом з обох циклів і виведенням повідомлення про помилку Результат нормальної роботи програми Завдання 4: Бібліотека функцій для перетворення типів Створити клас зі статичними функціями перетворення аргументу типу boolean у ціле значення (0 або 1) і навпаки (нуль – false, ненульове значення – true). Продемонструвати роботу функцій, викликавши їх з іншого класу іншого пакету. Застосувати звичайний і статичний імпорт. Набір тестових даних: змінна типу Boolean: true змінна типу int: 0 Очікуваний результат: 1, true //Лістинг програми// //Файл TypeConverter.Java// package com.example.mylibrary; public class TypeConverter { public static int booleanToInt(boolean value) { return value ? 1 : 0; } public static boolean intToBoolean(int value) { return value != 0; } } //Файл MyApp.Java// import com.example.mylibrary.TypeConverter; // імпортуємо клас TypeConverter public class MyApp { public static void main(String[] args) { boolean boolValue = true; int intValue = 42; // Викликаємо функції перетворення з класу TypeConverter int boolToIntResult = TypeConverter.booleanToInt(boolValue); boolean intToBoolResult = TypeConverter.intToBoolean(intValue); System.out.println("boolToIntResult: " + boolToIntResult); System.out.println("intToBoolResult: " + intToBoolResult); } } Результат виконання програми з використанням Звичайного імпорту //файл MyApp.java з використанням статичного імпорту// package com.example; import static com.example.mylibrary.TypeConverter.*; // Статичний імпорт бібліотеки public class MyApp { public static void main(String[] args) { boolean boolValue = true; int intValue = 0; // Викликаємо функції перетворення без префіксу TypeConverter intValue = booleanToInt(boolValue); boolValue = intToBoolean(intValue); System.out.println("boolValue: " + boolValue); System.out.println("intValue: " + intValue); } } Результат виконання програми з використанням статичного імпорту ВИСНОВКИ: у цій лабораторній роботі ми ознайомилися з архітектурою та синтаксисом Java. |