Національний технічний університет України
«Київський політехнічний інститут імені Ігоря Сікорського»
Теплоенергетичний факультет
Кафедра автоматизації проектування енергетичних процесів і систем
ЗВІТ
з лабораторної роботи № 2
з дисципліни «Програмування алгоритмічних структур»
Тема «Програмування розгалужених алгоритмів»
Варіант 21
Мета роботи: набуття практичних навичок використання умовного оператора if та оператора вибору switch при створюванні програмних проектів розгалуженої структури.
Завдання на лабораторну роботу:
1.Розробити блок-схеми алгоритмів і написати програми мовою Java із застосуванням умовного оператора if та оператора вибору switch для розв’язання завдань, поданих в табл.1–4 відповідно до індивідуального варіанта. Варіант обрати за списком групи.
2.Розробити програмні проекти в середовищі Intellij IDEA для реалізації написаних програм. Перевірити результати обчислень альтернативними розрахунками
3. Зробити Звіт з лабораторної роботи та вчасно надіслати викладачу на перевірку.
Завдання 1:
Завдання 2:
/
Завдання 3:
/
Завдання 4:
/
Короткий опис виконання завдань
Завдання 1: Для виконання завдання було створено клас Lr21 У методі main я ввела змінні x, s, r та k, після цього створила метод task1, де проводила розрахунки математичних формул. Я використала умовний оператор if…else для реалізації розгалуженого алгоритму, а також математичні методи. Результатом виконання завдання є те, що метод task1 повертає обраховане значення y.
Завдання 2: У створеному раніше класі Lr21 я ввела нові змінні типу double та створила метод task2. У цьому методі було виконано розгалужений алгоритм. Для його реалізації знову ж таки було використано умовний оператор if…else, а за допомогою бібліотеки java.lang.Math були застосовані різні математичні методи. В результаті метод повертає значення у, що залежить від значеннь заданих змінних.
Завдання 3: Для виконання цього завдання було створено клас Lr22. Для отримання можливості вводити значення з клавіатури було оголошено клас java.util.Scanner. Після цього я створила метод task3. За допомогю умовного оператора if…else перевірялося чи перше число є більшим за друге і третє; якщо ні – чи друге число більше за перше і третє. Таким чином в результаті виводиться відповідь, яке число є найбільшим.
Завдання 4: Завдання було виконане у класі Lr22, значення змінним я задала в методі main, а також створила метод task4, у якому зробила масив s dbrjhbcnfkf цикл for. З використанням умовного оператора if…else визначалося яким є задане число: додатнім чи від’ємним. Якщо додатнім, число підноситься до квадрату за допомогою відповідного математичного методу, якщо від’ємним – залишається без змін. Такі операції проводяться з усіма змінними, а кінцеві значення виводяться у методі main.
Блок-схема до завдання 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;
System.out.println("Task 1");
System.out.printf("x1 = %.4f ", x1);
System.out.printf("x2 = %.4f ", x2);
System.out.printf("x3 = %.4f \n", x3);
System.out.printf("y1 = %.4f ",Lr21.task1(x1));
System.out.printf("y2 = %.4f ",Lr21.task1(x2));
System.out.printf("y3 = %.4f \n",Lr21.task1(x3));
double a1=0.8 ,b1=2.4 ,f1=pow(E,1.5*a1*x1) ;
double a2=1.2 ,b2=4.2 ,f2=pow(E,2*a2*x2);
double a3=3.4 ,b3=8.1 ,f3=pow(E,3*a3*x3);
System.out.println("Task 2");
System.out.printf("x1 = %.4f, a1 = %.4f, b1 = %.4f, f1 = %.4f \n", x1, a1, b1, f1);
System.out.printf("x2 = %.4f, a2 = %.4f, b2 = %.4f, f2 = %.4f \n", x2, a2, b2, f2);
System.out.printf("x3 = %.4f, a3 = %.4f, b3 = %.4f, f3 = %.4f \n", x3, a3, b3, f3);
System.out.printf("y1 = %.4f \n",Lr21.task2(x1,a1,b1,f1));
System.out.printf("y2 = %.4f \n",Lr21.task2(x2,a2,b2,f2));
System.out.printf("y3 = %.4f \n",Lr21.task2(x3,a3,b3,f3));
}
static double task1(double x) {
double y;
double s=0.15 , r=10 ,k=0.7;
if (cos(x) == cos(r*s)) {
y = pow(x,2)*pow(E,2*k)+log(abs(r*x));
} else if (cos(x) > cos(r*s)) {
y = cbrt(x*x) + sqrt(abs(k+r*s*x));
} else {
y = atan(k*x+r*s);
}
return y;
}
static double task2(double x, double a, double b, double f) {
double y;
if (x <= a) {
y = exp(a*x) + f * pow(cos(b*x), 5);
} else if(x > a && x <= pow(b,2)) {
y = a + pow(cos(b * x),2) - log(f * x);
} else {
y = pow(cos(a + b * f * x),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 \n", num1);
System.out.printf("num2 = %.4f \n", num2);
System.out.printf("num3 = %.4f \n", num3);
System.out.printf("Найбільше число: %.4f \n", Lr22.task3(num1,num2,num3));
System.out.println("Task 4");
double a11 = 0;
double a12 = 1.5;
double a13 = -31.1;
double a21 = 2;
double a22 = -1.56;
double a23 = 2.55;
double a31 = -1.9;
double a32 = 2.9;
double a33 = -2.9;
System.out.printf("a1 = %.4f ", a11);
System.out.printf("b1 = %.4f ", a12);
System.out.printf("c1 = %.4f \n", a13);
Lr22.task4(a11,a12,a13);
System.out.println();
System.out.printf("a2 = %.4f ", a21);
System.out.printf("b2 = %.4f ", a22);
System.out.printf("c2 = %.4f \n", a23);
Lr22.task4(a21,a22,a23);
System.out.println();
System.out.printf("a3 = %.4f ", a31);
System.out.printf("b3 = %.4f ", a32);
System.out.printf("c3 = %.4f \n", a33);
Lr22.task4(a31,a32,a33);
}
static double task3( double a, double b, double c) {
if(a >= b && a >= c) {
return a;
} else if(b >= a && b >= c) {
return b;
} else {
return c;
}
}
static void task4(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],2);
}
}
for (int i = 0; i<arr.length; i++) {
System.out.printf("%.4f ", arr[i]);
}
}
}
Результати
/
/
Висновки
В результаті виконання роботи я написала 4 алгоритми із застосуванням умовного оператора if…else відповідно до свого індивідуального варіанту. Крім цього, я знайомилася з невідомими мені раніше математичними методами та операторами розгалуження, а також створила блок схему для 4-го завдання.