Міністерство освіти і науки України
Національний технічний університет
«Київський політехнічний інститут ім. Ігоря Сікорського»
Теплоенергетичний факультет
Кафедра автоматизації проектування енергетичних процесів і систем
Програмування алгоритмічних структур
ЗВІТ ДО
Лабораторної роботи №2
«Програмування розгалужених алгоритмів»
Варіант № 11
Дата «27» жовтня 2021
Завдання на лабораторну роботу
1.Розробити блок-схеми алгоритмів і написати програми мовою Java із застосуванням умовного оператора if та оператора вибору switch для розв’язання завдань, поданих в табл.1–4 відповідно до індивідуального варіанта. Варіант обрати за списком групи.
2.Розробити програмні проекти в середовищі Intellij IDEA для реалізації написаних програм. Перевірити результати обчислень альтернативними розрахунками(наприклад, Excel, калькулятор, тощо).
3. Зробити Звіт з лабораторної роботи та вчасно надіслати викладачу на перевірку.
Вимоги до розв’язання завдання 1 (табл. 1) та завдання 2 (табл. 2)
Обидва завдання запрограмувати в одному класі, який має назвуLr21. Вданому класі організувати три методи: main, task1, task2. В методі main організувати:
-введення даних для завдання 1 (табл. 1), розрахунки зробити для трьох значень змінної x: x1 =-2,3; x2 = 0,6; x3 = 4,8(всього має бути 3 варіанти вхідних даних та 3 варіанти результатів розрахунків). Введення даних зробити за допомогою присвоєння значень змінним;
-виклик методу task1,в якому організувати всі розрахунки завдання 1;
-виведення вхідних даних та результатів розрахунку завдання 1. Виведення організувати за допомогою метода System.out.printf форматованого виводу значень. Для дробових чисел–не більше 4 знаків після коми;
-введення даних для завдання 2 (табл. 2), розрахунки зробити для трьох значень змінної x: x1 =–2,3; x2 = 0,6; x3 = 4,8(всього має бути 9 варіантів вхідних даних та 9 варіантів результатів розрахунків). Введення даних зробити за допомогою присвоєння значень змінним;
-виклик методу task2,в якому організувати всі розрахунки завдання 2;
-виведення вхідних даних та результатів розрахунку завдання2. Виведення організувати за допомогою форматованого виводу значень. Для дробових чисел–не більше 4 знаків після коми.
Короткий опис рішення завдання разом із скриншотом варіанту завдання із табл.1 та 2
Завдання 1
/
Завдання 2
/
Завдання 1.
Створюємо клас Lr21, у якому запрограмуємо три методи: main, task1 і task2. У методі main задамо значення змінним х1, х2, х3 та a, b типу double за допомогою присвоєння. Використаємо оператор вибору switch для виведення в консолі результату певного завдання. У кожному блоці case прописуємо номер завдання, щоб вивести певний результат. Оператор break, який перериває свій блок коду, потрібно використовувати обов'язково, інакше виконання коду продовжиться. Викликаємо метод task1, у якому задаємо значення змінній z за допомогою класу Math за варіантом та організовуємо всі розрахунки завдання 1 за допомогою оператора if(). Виводимо вхідні дані та результати розрахунку за допомогою метода System.out.printf() форматованого виводу значень в операторі switch. Для дробових чисел – не більше 4 знаків після коми за допомогою спецификатора %.4f.
Завдання 2.
У класі Lr21 викликаємо метод task2, у якому за допомогою оператора if() організовуємо всі розрахунки завдання 2. Виводимо вхідні дані та результати розрахунку за допомогою метода System.out.printf() форматованого виводу значень в операторі switch. Для дробових чисел – не більше 4 знаків після коми за допомогою спецификатора %.4f.
Вимоги до розв’язання завдання3(табл.3) та завдання4(табл.4)
Обидва завдання запрограмувати в одному класі, який має назву Lr22. Вданому класі організувати три методи: main, task3, task4. В методі main організувати:
-введення даних для завдання3(табл.3), розрахунки зробити для трьох наборів вхідних даних, що обирає користувач та вводить с клавіатури(всього має бути 3 набори вхідних даних та 3 набори результатів розрахунків). Введення даних зробити за допомогою методів класу Scanner;
-виклик методу task3,в якому організувати всі розрахунки завдання 3;
-виведення вхідних даних та результатів розрахунку завдання 3. Виведення організувати за допомогою метода System.out.printf форматованого виводу значень. Для дробових чисел–не більше 4 знаків після коми;
-введення даних для завдання4(табл.4), розрахунки зробити для двох–чотирьох наборів вхідних даних згідно табл. 4. Введення даних зробити за допомогою присвоєння значень змінним;
-виклик методу task4, в якому організувати всі розрахунки завдання 4;
-виведення вхідних даних та результатів розрахунку завдання 4. Виведення організувати за допомогою форматованого виводу значень. Для дробових чисел–не більше 4 знаків після коми.
Короткий опис рішення завдання разом із скриншотом варіанту завдання із табл.3 та 4
Завдання 3
/
Завдання 4
/
Завдання 3.
Створюємо клас Lr22, у якому запрограмуємо три методи: main, task3 і task4. У методі main організовуємо введення даних для завдання 3, розрахунки робимо для трьох наборів вхідних даних, які вводимо з клавіатури за допомогою класу Scanner. Викликаємо метод task3, у якому організовуємо всі розрахунки за допомогою оператора if(). Виводимо вхідні дані та результати розрахунку за допомогою метода System.out.printf() форматованого виводу значень. Для дробових чисел – не більше 4 знаків після коми за допомогою спецификатора %.4f.
Завдання 4.
У класі Lr22 викликаємо метод task4, у якому за допомогою оператора if() організовуємо всі розрахунки завдання 4. Виводимо вхідні дані та результати розрахунку за допомогою метода System.out.printf() форматованого виводу значень. Для дробових чисел – не більше 4 знаків після коми за допомогою спецификатора %.4f.
Код програми класу Lr21:
package com.company;import java.lang.Math;import java.util.Scanner;public class Lr21 { public static void main(String[] args) { double x1 = -2.3; double x2 = 0.6; double x3 = 4.8; /////Task1///// double a = 0.1; double b = 3.25; /////Task2///// double k1 = 4; double m1 = -14.7; double n1 = -0.6; double k2 = 3; double m2 = 6.5; double n2 = 3.15; double k3 = 5; double m3 = -12; double n3 = 0.45; int check; System.out.println("1 - First method:"); System.out.println("2 - Second method:"); Scanner scanner = new Scanner(System.in); check = scanner.nextInt(); switch (check){ case 1:{ System.out.println("-----Task1-----"); System.out.printf("x1 = " + x1 + ", a = " + a + ", b = " + b); System.out.printf("\ny1 = %.4f\n\n", task1(x1, a, b)); System.out.printf("x2 = " + x2 + ", a = " + a + ", b = " + b); System.out.printf("\ny2 = %.4f\n\n", task1(x2, a, b)); System.out.printf("x3 = " + x3 + ", a = " + a + ",b = " + b); System.out.printf("\ny3 = %.4f\n\n", task1(x3, a, b)); break; } case 2:{ System.out.println("-----Task2-----"); System.out.printf("x1 = " + x1 + ", k1 = " + k1 + ", m1 = " + m1 + ", n1 = " + n1); System.out.printf("\ny1 = %.4f\n\n", task2(x1, k1, m1, n1)); System.out.printf("x1 = " + x1 + ", k2 = " + k2 + ", m2 = " + m2 + ", n2 = " + n2); System.out.printf("\ny2 = %.4f\n\n", task2(x1, k2, m2, n2)); System.out.printf("x1 = " + x1 + ", k3 = " + k3 + ", m3 = " + m3 + ", n3 = " + n3); System.out.printf("\ny3 = %.4f\n\n", task2(x1, k3, m3, n3)); System.out.printf("x2 = " + x2 + ", k1 = " + k1 + ", m1 = " + m1 + ", n1 = " + n1); System.out.printf("\ny4 = %.4f\n\n", task2(x2, k1, m1, n1)); System.out.printf("x2 = " + x2 + ", k2 = " + k2 + ", m2 = " + m2 + ", n2 = " + n2); System.out.printf("\ny5 = %.4f\n\n", task2(x2, k2, m2, n2)); System.out.printf("x2 = " + x2 + ", k3 = " + k3 + ", m3 = " + m3 + ", n3 = " + n3); System.out.printf("\ny6 = %.4f\n\n", task2(x2, k3, m3, n3)); System.out.printf("x3 = " + x3 + ", k1 = " + k1 + ", m1 = " + m1 + ", n1 = " + n1); System.out.printf("\ny7 = %.4f\n\n", task2(x3, k1, m1, n1)); System.out.printf("x3 = " + x3 + ", k2 = " + k2 + ", m2 = " + m2 + ", n2 = " + n2); System.out.printf("\ny8 = %.4f\n\n", task2(x3, k2, m2, n2)); System.out.printf("x3 = " + x3 + ", k3 = " + k3 + ", m3 = " + m3 + ", n3 = " + n3); System.out.printf("\ny9 = %.4f\n\n", task2(x3, k3, m3, n3)); break; } default:{ System.out.println("Error"); } } } public static double task1(double x, double a, double b) { double z = Math.pow(Math.cos(x), 2); double y = 0; if(x<Math.log(a)) { y = a * Math.pow(Math.sin(x), 2) + Math.cos(z*x); } else if(x >= Math.log(a) && x <= b) { y = Math.pow(Math.cos(a + z*x), 3); } else if(x > b) { y = Math.sqrt(2.5 * Math.pow(a, 3) + Math.pow((b - z * Math.pow(x, 2)), 6)); } return y; } public static double task2(double x, double k, double m, double n){ double y = 0; if(3*x > Math.abs(m+n)) { y = Math.log(Math.abs(Math.log10(x) * Math.abs(k*x + m*n))); } else if(3*x == Math.abs(m+n)) { y = Math.sin(k*m*x) + Math.sqrt(Math.abs(n*x)); } else if(3*x < Math.abs(m+n)) { y = Math.pow(Math.exp(1), Math.cos(x)) + Math.pow(Math.exp(1), m + n); } return y; }}
Результати рішення програми
/
/
/
Код програми класу Lr22:
package com.company;import java.util.Scanner;public class Lr22 { public static void main(String[] args) { /////Task3///// int a1, b1, c1; int a2, b2, c2; int a3, b3, c3; /////Task4///// double A1 = -3; double B1 = 3.5; double A2 = 58; double B2 = 27; double A3 = -8; double B3 = -35; System.out.println("-----Task3-----"); Scanner scan = new Scanner(System.in); System.out.print("Input a1: "); a1 = scan.nextInt(); System.out.print("Input b1: "); b1 = scan.nextInt(); System.out.print("Input c1: "); c1 = scan.nextInt(); System.out.println(); System.out.print("Input a2: "); a2 = scan.nextInt(); System.out.print("Input b2: "); b2 = scan.nextInt(); System.out.print("Input c2: "); c2 = scan.nextInt(); System.out.println(); System.out.print("Input a3: "); a3 = scan.nextInt(); System.out.print("Input b3: "); b3 = scan.nextInt(); System.out.print("Input c3: "); c3 = scan.nextInt(); System.out.println(); task3(a1,b1,c1); task4(A1,B1); task4(A2,B2); task4(A3,B3); } public static void task3(int a, int b, int c) { if (a + b > c && a + c > b && b + c > a) { System.out.printf("Трикутник існує\n\n"); } else { System.out.printf("За даними числами трикутник побудувати не можна\n\n"); } } public static void task4(double a, double b){ if(a > 0 && b < 0 || a < 0 && b > 0) { System.out.println("-----Task4-----"); a=-a; b=-b; System.out.printf("%.4f\n",a); System.out.printf("%.4f\n",b); } else{ a=0; b=0; System.out.printf("%.4f\n",a); System.out.printf("%.4f\n",b); } }}
Результати рішення програми
/ /
/
Блок-схема алгоритму до завдання 4
/
Висновок: В результаті створення лабораторної роботі на java попрактикувалися використовувати умовний оператор if() та оператор вибору switch при створюванні програмних проектів розгалуженої структури, розраховувати формули, використовуючи бібліотеку Math. Також приймати та використовувати вхідні значення від користувача у розрахунках за допомогою класу Scanner.