Національний технічний університет України
«Київський політехнічний інститут імені Ігоря Сікорського»
Теплоенергетичний факультет
Кафедра автоматизації проектування енергетичних процесів і систем
ЗВІТ
з лабораторної роботи № 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. Розробив програмні проекти в середовищі Intellij IDEA для реалізації написаних програм. Перевірив результати обчислень альтернативними розрахунками. Ознайомився із операторами циклів та новими математичними алгоритмами. Разробив блок схему 3-го завдання. Особливих труднощів незустрів. Зробив звіт з лабораторної роботи та надіслав викладачу на перевірку.