Національний технічний університет України
«Київський політехнічний інститут імені Ігоря Сікорського»
Теплоенергетичний факультет
Кафедра автоматизації проектування енергетичних процесів і систем
ЗВІТ
з лабораторної роботи № 3
з дисципліни «Програмування алгоритмічних структур»
Тема «Програмування розгалужених алгоритмів»
Варіант № 18
Київ – 2021
Завдання на лабораторну роботу.
1. Розробити блок-схеми алгоритмів і написати програми мовою Java із застосуванням операторів циклів for, while, do while для розв’язання завдань, поданих в табл. 1 –3 відповіднодо індивідуального варіанта. Варіант обрати за списком групи.
2. Розробити програмні проекти в середовищі Intellij IDEA для реалізації написаних програм. Перевірити результати обчислень альтернативними розрахунками(наприклад, Excel, калькулятор, тощо).
3. Зробити Звіт з лабораторної роботи та вчасно :^( надіслати викладачу на перевірку.
Опис завдання табл. 1 для варіанта 18:
Опис завдання табл. 2:
Опис завдання табл. 3:
Опис розв’язку завдання табл. 1:
Метод task1(double xmin, double xmax, double h) виводить на екран таблицю із “іксами” від xmin до xmax включно, функцію y за цими аргументами та функцію z.
Цикл проходить по цим аргументам за кроком h, підставляя їх у функції.
При виведенні округлює до .4 після коми
Опис розв’язку завдання табл. 2:
Метод task2(double[] seq) повертає масив із трьома числами, перші два з них — це ті два числа, між якими найменша “відстань”, а третє — їх різниця.
За допомогою циклу перевіряється кожна можлива різниця у вхідному масиві, та допоміжна змінна minDiff зберігає найменше знайдене значення
Опис розв’язку завдання табл. 4:
Метод task3(double x) повертає суму виразу.
У циклі проходить по кожному з доданків, змінюючи при цьому змінну i. Всередині циклу є допоміжний цикл для вирахування факторіалів.
Блок-схема до розв’язку завдання табл. 4:
Код програми:
public class Main {
public static void main(String[] args) {
double xmin = 0.5;
double xmax = 4;
double h = 0.1;
task1(xmin, xmax, h);
double[] seq = new double[10];
double element = 1.6;
System.out.print("Sequence: ");
for (int i = 0; i < seq.length; i++) {
seq[i] = element;
System.out.printf("%.4f; ", element);
element += Math.random() * (10.5 - 2.1 + 1) + 2.1;
}
System.out.println();
double[] task2Result = task2(seq);
System.out.printf("Task2 result is: %.4f - %.4f = %.4f\n\n", task2Result[0], task2Result[1], task2Result[2]);
element = 3.1;
System.out.print("Sequence: ");
for (int i = 0; i < seq.length; i++) {
seq[i] = element;
System.out.printf("%.4f; ", element);
element += Math.random() * (10.5 - 2.1 + 1) + 2.1;
}
System.out.println();
task2Result = task2(seq);
System.out.printf("Task2 result is: %.4f - %.4f = %.4f\n\n", task2Result[0], task2Result[1], task2Result[2]);
double x1 = 0.6, x2 = 2.8;
System.out.printf("Task3 for x = %.1f: %.4f\n", x1, task3(x1));
System.out.printf("Task3 for x = %.1f: %.4f", x2, task3(x2));
}
static void task1(double xmin, double xmax, double h) {
double y, z;
System.out.println("_______________________");
System.out.println("| x | y(x) | z(x) |");
for (double x = xmin; x <= xmax; x += h) {
y = Math.pow(x / 3, 2.);
z = Math.cos(x + Math.PI / 3) + 1.8;
System.out.printf("|%.1f| %.4f | %.4f |\n", x, y, z);
}
System.out.println("_______________________\n");
}
static double[] task2(double[] seq) {
double minDiff = 0;
double result1 = 0, result2 = 0;
for (int i = 0; i < seq.length; i++) {
for (int j = i + 1; j < seq.length; j++) {
if (Math.abs(seq[i] - seq[j]) < minDiff || (i == 0 && j == 1)) {
result1 = seq[i];
result2 = seq[j];
minDiff = Math.abs(seq[i] - seq[j]);
}
}
}
return new double[] {result1, result2, minDiff};
}
static double task3(double x) {
double i = 1;
double imax = 6;
double factorial;
double sum = 0;
for (; i <= imax; i++) {
factorial = 1;
int j = 1;
while(j < i) j++; factorial *= j;
sum += Math.tan(Math.pow(x - Math.PI, 2.)) / factorial;
}
return sum;
}
}
Результати рішення програми
Висновок
Я написав мовою Java 3 алгоритми із застосуванням циклів for та while для розв’язання завдань, поданих в табл. 1-3 відповідно до індивідуального варіанта 18. Перевірив результати обчислень альтернативними розрахунками. Ознайомився із операторами циклів та новими математичними алгоритмами. Разробив блок схему 3-го завдання. Особливих труднощів незустрів. Зробив звіт з лабораторної роботи та надіслав викладачу на перевірку.