Національний технічний університет України
«Київський політехнічний інститут імені Ігоря Сікорського»
Теплоенергетичний факультет
Кафедра автоматизації проектування енергетичних процесів і систем
ЗВІТ
з лабораторної роботи № 2
з дисципліни «Програмування алгоритмічних структур»
Тема «Програмування розгалужених алгоритмів»
Варіант № 25
Завдання на лабораторну роботу.
1. Розробити блок-схеми алгоритмів і написати програми мовою Java із застосуванням умовного оператора if та оператора вибору switch для розв’язання завдань, поданих в табл. 1 – 4 відповідно до індивідуального варіанта. Варіант обрати за списком групи.
2. Розробити програмні проекти в середовищі Intellij IDEA для реалізації написаних програм. Перевірити результати обчислень альтернативними розрахунками (наприклад, Excel, калькулятор, тощо).
3. Зробити Звіт з лабораторної роботи та вчасно надіслати викладачу на перевірку.
Так як варіант №25, виконуємо задачі під номером 7
Завдання №1
/
Завдання №2
/
Завдання №3
/
Завдання №4
/
Короткі описи рішення завдань:
Опис вирішення завдання №1
Створено Java клас Lr21. В цьому класі розміщено методи main, task1,task2.
Метод Main є головним і виконується першим, тому у ньому вводимо значення змінних, що будуть використані в інших методах.
Task1 – це метод, для вирішення першого завдання. У ньому використаний умовний оператор if. Його функція – перевірити в якому діапазоні знаходиться Х.
Далі, відповідно до цього значення обраховується функція. Задано три різні варіанти значення Х. Результат виводимо за допомогою System.out.printf в методі main. Щоб вивід дробового числа був з 4 цифрами після коми задаємо формат “%.4f”.
Опис рішення завдання №2
Task2 як і Task1 повертає значення в залежності від значень змінних. У ньому використаний умовний оператор if. Його функція – перевірити в якому діапазоні знаходиться Х.
Далі, відповідно до цього значення обраховується функція. Задано три різні набори чисел a,b,z. Результат виводимо за допомогою System.out.printf в методі main. Щоб вивід дробового числа був з 4 цифрами після коми задаємо формат “%.4f”.
Опис вирішення завдання №3
Створено Java клас Lr22, в якому розміщено методи main, Task3, Task4.
У Task3 приходять два значення типу double. Там використаний умовний оператор if. Його функція – перевірити в якому діапазоні знаходиться Х.
Далі, відповідно до цього значення обраховується функція.
Перевіряється, чи належить точка, задана користувачем, кривій.
Метод виводить повідомлення щодо цього.
Опис вирішення завдання №4
Створено метод Task4. У нього надходить три значення типу double. Метод нічого не повертає, тому озвучений як Void. Там використаний умовний оператор if.
Він перевіряє чи відповідають змінні умові ділення націло на 3 без остачі.
Ті значення, що підходять виводяться на екран.
Блок-схема для завдання №4.
/
Копія коду на білому фоні
Клас Lr21
package com.company;
import static java.lang.Math.*;
public class Lr21 {
public static void main(String[] args) {
double x1=-2.3;
double x2=0.6;
double x3=4.8;
//завдання 1
double a = 0.3;
double b = 1.7;
double z = 2;
System.out.println("Task 1");
System.out.println("x1= "+x1+" a= "+a+" b= "+b+" z= "+z);
System.out.printf("y1=%.4f\n\n",Task1(x1,a,b,z));;
System.out.println("x2= "+x2+" a= "+a+" b= "+b+" z= "+z);
System.out.printf("y2=%.4f\n\n",Task1(x2,a,b,z));
System.out.println("x3= "+x3+" a= "+a+" b= "+b+" z= "+z);
System.out.printf("y3=%.4f\n\n",Task1(x3,a,b,z));
//Завдання2
double a1 = 1.5;
double b1 = 5.7;
double z1 = Math.log(Math.abs(Math.tan(b1*x1)));
double a2 = 3.7;
double b2 = 8.4;
double z2 = Math.log(Math.abs(Math.tan(b2*x2)));
double a3 = 4.4;
double b3 = 5.6;
double z3 = Math.log(Math.abs(Math.tan(b3*x3)));
System.out.println("Task 2");
System.out.println("x1= "+x1+" a= "+a1+" b= "+b1+" z= "+z);
System.out.printf("y1=%.4f\n\n",Task1(x1,a1,b1,z1));;
System.out.println("x2= "+x2+" a= "+a2+" b= "+b2+" z= "+z);
System.out.printf("y2=%.4f\n\n",Task1(x2,a2,b2,z2));
System.out.println("x3= "+x3+" a= "+a3+" b= "+b3+" z= "+z);
System.out.printf("y3=%.4f\n\n",Task1(x3,a3,b3,z3));
}
public static double Task1(double x,double a,double b,double z){
double y=0;
if (x <= a) {
y = 3.5 * Math.sin(Math.pow(b * x + z, 3)) * Math.sin(Math.pow(b * x + z, 3));
}
if (x > a && x <= Math.pow(b, 2.5)) {
y = Math.log(a + Math.pow(b, 3) * x) + a;
}
if (x > Math.pow(b, 2.5)) {
y = Math.cos(Math.pow(a, b) + x * z);
}
return y;
}
public static double Task2(double x,double a,double b,double z){
double y=0;
if(x<a){
y=a+z*Math.pow(Math.cos(Math.pow(b*x,3)),2);
}
if(x>=a && x<=b){
y=a+Math.pow(Math.sin(Math.pow(b,2)),2);
}
if(x>b){
Math.cbrt(0.3*b+Math.sqrt(Math.abs(a-z*z-Math.cos(x))));
}
return y;
}
Отримані результати
/
Клас Lr22
package com.company;
import java.util.Scanner;
public class Lr22 {
public static void main(String[] args) {
//Завдання3
Scanner scan=new Scanner(System.in);
System.out.print("Введіть значення х1: ");
double x1= scan.nextDouble();
System.out.print("Введіть значення у1: ");
double y1= scan.nextDouble();
System.out.print("Введіть значення х2: ");
double x2= scan.nextDouble();
System.out.print("Введіть значення у2: ");
double y2= scan.nextDouble();
System.out.print("Введіть значення х3: ");
double x3= scan.nextDouble();
System.out.print("Введіть значення у3: ");
double y3= scan.nextDouble();
System.out.println("Task 3");
System.out.println("x1= "+x1+" y1= "+y1);
System.out.printf("f1=%.4f\n\n",Task3(x1,y1));
System.out.println("x2= "+x2+" y2= "+y2);
System.out.printf("f2=%.4f\n\n",Task3(x2,y2));
System.out.println("x3= "+x3+" y3= "+y3);
System.out.printf("f3=%.4f\n\n",Task3(x3,y3));
//Завдання4
System.out.println("Task4");
System.out.print("При таких значеннях: ");
System.out.println("a= 2 " + "b= 9 " + "c= 474 " );
System.out.println("Числа що діляться націло на 3");
Task4(2,9,474);
System.out.print("При таких значеннях: ");
System.out.println("a= 3 " + "b= 0 " + "c= 27 " );
System.out.println("Числа що діляться націло на 3");
Task4(3,0,27);
System.out.print("При таких значеннях: ");
System.out.println("a= 4 " + "b= 10 " + "c= 30 " );
System.out.println("Числа що діляться націло на 3");
Task4(4,10,30);
}
public static double Task3(double x, double y){
double f=0;
if(Math.abs(x)>1){
f=Math.pow(Math.sin(x*x*x),2);
}
if(Math.abs(x)<=1){
f= Math.sqrt(6*Math.asin(Math.pow(x,7))+4.5*Math.pow(x,6)+4*x*x+2);
}
if(Math.abs(f-y)<0.001){
System.out.println("Належить кривій");
}
if (Math.abs(f-y)>0.001){
System.out.println("Не належить кривій");
}
return f;
}
public static void Task4(double a, double b, double c){
if(a%3==0) System.out.println(a);
if(b%3==0) System.out.println(b);
if(c%3==0) System.out.println(c);
}
}
Отримані результати
/
Висновок: В процесі виконання лабораторної роботи, освоєно знання для використання умовних операторів, та розроблено за допомогою них розгалужені алгоритми. Побудовано блок-схему, що коротко і доступно описує процеси, що відбуваються при вирішенні завдання №4.