Ім'я файлу: КН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

Очікуваний результат

Х

У

7

21,00

9

22,73

11

22,96

13

23,00

Х

У

1

6,07

7

10,45

7

21,00

Х

У

-3

-3,02

0

-7,23

3

17,32

6

8,74

//Лістинг програми//

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.

Очікуваний результат:

Ступінь

Результат

0

1

1

8

2

64

3

512

//Лістинг програми//

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 з міткою.

Набір тестових даних та очікуваний результат:

х

n

результат

2

6

70,662282

-3

5

помилка

8

2

1

//Лістинг програми//


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.
скачати

© Усі права захищені
написати до нас