Національний технічний університет України
«Київський політехнічний інститут імені Ігоря Сікорського»
Теплоенергетичний факультет
Кафедра автоматизації проектування енергетичних процесів і систем
ЗВІТ
з лабораторної роботи № 2
з дисципліни «Програмування алгоритмічних структур»
Тема «Програмування розгалужених алгоритмів»
Варіант-15
Завдання на лабораторну роботу:
1. Розробити блок-схеми алгоритмів і написати програми мовою Java із застосуванням умовного оператора if та оператора вибору switch для розв’язання завдань, поданих в табл. 1 – 4 відповідно до індивідуального варіанта. Варіант обрати за списком групи.
2. Розробити програмні проекти в середовищі Intellij IDEA для реалізації написаних програм. Перевірити результати обчислень альтернативними розрахунками (наприклад, Excel, калькулятор, тощо).
3. Зробити Звіт з лабораторної роботи та вчасно надіслати викладачу на перевірку.
Завдання 1-4:
1)
/
2) /
3) /
4) /
Короткий опис рішення завдання:
Завдання №1.
Дане завдання було виконане у класі Lr21. Усі змінні x, a, b i z були введені у методі main. Далі був створений метод task1 у якому і були проведені всі математичні розрахунки. У ньому знаходиться весь розгалужений алгоритм, для реалізації якого були використані умовний оператор if та інші математичні методи, які додаються за допомогою бібліотеки Math(pow, cos, sin, sqrt, abs). В результаті метод task1 повертає нам значення у, яке виводиться разом із всіма початковими значеннями у методі main.
Завдання №2.
Дане завдання було виконане у класі Lr21. Усі значення змінних, що використовуються у завданні №2 вводяться у методі main. Для самого завдання №2 був створений метод task2. У цьому методі і виконується весь розгалужений алгоритм, для реалізації якого були використані умовний оператор if та інші математичні методи, які додаються за допомогою бібліотеки Math(pow, cos, sin, tan, log). В результаті виконання методу нам повертається значення у, яке пізніше виводиться у методі main. У ньому виводяться всі варіанти у, залежно від поданих значеннь змінних за умовою.
Завдання №3.
Дане завдання було виконане у класі Lr22. Для цього завдання було організоване введення значень з клавіатури, за допомогою Scanner. Присвоєння значень було проведене у методі main. Далі був створений метод task3. У ньому всі введені значення створювали масив, який через цикл for перебирався і за допомогою умовного оператора if визначалось яке число – додатнє чи від’ємне. Якщо елемент масиву виявлявся додатнім – він підносився до кубу, якщо від’ємним – замінявся на нуль. І в кінці було проведене виведення масив за допомогою циклу for. Кінцеві значення завдання також були виведені у метод main.
Завдання №4.
Дане завдання було виконане у класі Lr22. Значення змінних Х та У були присвоєні у методі main. Для виконання цього завдання був створений метод task4. У нього вводили два числа Х та У. За допомогою умовного оператора if виконувалась перевірка на належність точки до 4-ї координатної чверті (X>0 i Y<0). Якщо виявляється що точка належить 4-й координатній чветі метод повертає значення true, якщо ні – false.
Блок-схма до Завдання №4:
/
Копія коду класу Lr21:
package com.company;
import static java.lang.Math.*;
public class Lr21 {
public static void main(String[] args) {
double x1=-2.3 ,x2=0.6, x3=4.8, a = 0.9, b = 1.25, z11 = pow(x1,2), z22 = pow(x2,2), z33 = pow(x3,2);
System.out.println("---Task 1---");
System.out.printf("x1 = %.4f, x2 = %.4f, x3 = %.4f \n", x1, x2, x3);
System.out.printf("y1 = %.4f, y2 = %.4f, y3 = %.4f \n", Lr21.task1(x1,a,b,z11), Lr21.task1(x2,a,b,z22), Lr21.task1(x3,a,b,z33));
double a1=4.5 ,b1=8.4 ,z1 = pow(tan(b1 * x1),2) ;
double a2=8.2 ,b2=15.2 ,z2 = pow(tan(b2 * x2),2);
double a3=1.7 ,b3=0.5 ,z3 = tan(b3 * pow(x3,2));
System.out.println("---Task 2---");
System.out.printf("x1 = %.4f, a1 = %.4f, b1 = %.4f, z1 = %.4f \n", x1, a1, b1, z1);
System.out.printf("y1 = %.4f \n", Lr21.task2(x1,a1,b1,z1));
System.out.printf("x2 = %.4f, a2 = %.4f, b2 = %.4f, z2 = %.4f \n", x2, a2, b2, z2);
System.out.printf("y2 = %.4f \n", Lr21.task2(x2,a2,b2,z2));
System.out.printf("x3 = %.4f, a3 = %.4f, b3 = %.4f, z3 = %.4f \n", x3, a3, b3, z3);
System.out.printf("y3 = %.4f \n", Lr21.task2(x3,a3,b3,z3));
}
static double task1(double x,double a, double b, double z) {
double y;
if (x < pow(a,3)) {
y = a * pow(sin(x),2) + b * cos(z * x);
} else if ( x >= pow(a,3) && x <= b) {
y = pow((a + b * x),2) - sin(z * x);
} else {
y = sqrt(abs(x - sin(b * x + z)));
}
return y;
}
static double task2(double x, double a, double b, double z) {
double y;
if (x <= a) {
y = a * pow(cos(x),2) + b * sin(z * x);
} else if (x > a && x <= 1.5*b) {
y = tan(a * x + z) + pow(sin(b * x),2);
} else {
y = log(a * x - b) + pow(z,2);
}
return y;
}
}
Копія коду класу Lr22:
package com.company;
import static java.lang.Math.*;
import java.util.Scanner;
public class Lr22 {
public static void main(String[] args) {
System.out.println("---Task 3---");
Scanner scan = new Scanner(System.in);
System.out.println("Введіть три числа:");
double num1 = scan.nextDouble();
double num2 = scan.nextDouble();
double num3 = scan.nextDouble();
System.out.printf("num1 = %.4f num2 = %.4f num3 = %.4f \n", num1, num2, num3);
Lr22.task3(num1, num2, num3);
System.out.println();
System.out.println("---Task 4---");
double cordX1 = -2.8, cordY1 = 0.7, cordX2 = 0, cordY2 = -9.5, cordX3 = 2, cordY3 = -51;
System.out.printf("x = %.4f, y = %.4f \n", cordY1, cordY1);
System.out.println(Lr22.task4(cordX1,cordY1));
System.out.printf("x = %.4f, y = %.4f \n", cordX2, cordY2);
System.out.println(Lr22.task4(cordX2,cordY2));
System.out.printf("x = %.4f, y = %.4f \n", cordX3, cordY3);
System.out.println(Lr22.task4(cordX3,cordY3));
}
static void task3( double a, double b, double c) {
double[] arr = {a, b, c};
for (int i=0; i<arr.length; i++) {
if (arr[i] > 0 ) arr[i] = pow(arr[i], 3);
else arr[i] = 0;
}
for (int i = 0; i<arr.length; i++) {
System.out.printf("%.4f ", arr[i]);
}
}
static boolean task4(double x, double y) {
if ( x > 0 && y < 0) return true;
else return false;
}
}
Результати обчислень:
/
/
Перевірка обчислень:
Для перевірки правильності виконаних мною методів був використаний додаток PhotoMath.
Перевірка Завдання №1(y1):
/
Перевірка Завдання №2(y2): /
Видно, що у значеннях присутні малі похибки, але це вийшло через те, що у калькуляторі, значення деяких змінних були взяті приблізні. Тому вважається що завдання виконане правильно.
Висновок:
Виконуючи дану лабораторну роботу ми удосконалили своє володіння умовними операторами, класами, математичними методами і власними, створеними методами. А також вирішили декілька задач. Усі рішення завдань були описані у пункті Короткий опис рішення завдання.