Програмування циклічних алгоритмів

Інформація про навчальний заклад

ВУЗ:
Національний технічний університет України Київський політехнічний інститут
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Не вказано

Інформація про роботу

Рік:
2021
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Програмування алгоритмічних структур

Частина тексту файла (без зображень, графіків і формул):

Національний технічний університет України «Київський політехнічний інститут імені Ігоря Сікорського» Теплоенергетичний факультет Кафедра автоматизації проектування енергетичних процесів і систем Звіт з лабораторної роботи №3 з дисципліни «Програмування алгоритмічних структур» Тема «Програмування циклічних алгоритмів» Варіант № 7 Мета роботи: набуття практичних навичок використання операторів циклів for, while, do while при створюванні програмних проектів циклічної структури. Завдання на лабораторну роботу. 1.Розробити блок-схеми алгоритмів і написати програми мовоюJava із застосуванням операторів циклів for, while, do while для розв’язання завдань ,поданих в табл.1–3 відповідно до індивідуального варіанта. Варіант обрати за списком групи. 2.Розробити програмні проекти в середовищі Intellij IDEA для реалізації написаних програм. Перевірити результати обчислень альтернативними розрахунками (наприклад,Excel, калькулятор, тощо). 3. Зробити Звіт з лабораторної роботи та вчасно надіслати викладачу на перевірку. Завдання 1: / Завдання 2: / Завдання 3: / Короткий опис рішення завдання Завдання 1: У методі main визивається метод task1 із значеннями x0=-2, x1=5, h=0.2. У методі task1 реалізовано цикл for (double x = x0; x < x1 + h; x += h). Спочатку він обраховує значення y та z, а потім виводить ці значення. Для виводу використовується printf для виведення чисел з 4 знаками після коми, та умови для виводу у вигляді таблиці. Цикл повторюється поки х<=5. Task1 є void, бо не потребує повернення результату. Завдання 2: У методі main створено 2 масиви раціональних чисел, а нижче вивід цих масивів. Потім викликається метод task2 відносно першого та другого масивів. У методі task2 створено цикл, який знаходить максимальне з модуля різниці 1 і 2 елементів, з модуля різниці 2 і 3 елементів. Після одного проходження циклу, числа збільшуються на 1. Але результатом буде лише найбільший максимум. Це реалізовано завдяки умови при проходженні циклу: if (res < max(max1, max2)) { res = max(max1, max2); } метод повертає res, бо task2 є double. Завдання 3: У методі main реалізовано введення значення х з клавіатури, за допомогою методів бібліотеки java.util.Scanner. Потім вивід результатів методу task3. Далі повторюється теж саме. У методі task3 створено цикл for, в якому створено цикл while для обрахунку факторіалу числа (k-1). При кожному проходженні циклу for до числа res додається . Метод є виду double, повертає res. Блок-схема до завдання 3 / Програма проекту import java.util.Scanner; import static java.lang.Math.*; public class LR3 { public static void main(String[] args) { System.out.println("---------------Task1---------------"); task1(-2, 5, 0.2); System.out.println("---------------Task2---------------"); double[] arr1 = {2.6, -8.1, 123, -0.4, -0.123, 7, 45.6, 9, -67, 27.5}; System.out.println("Початкові дані першої послідовності:"); for (int i = 0; i < arr1.length; i++) { System.out.printf("%.4f ", arr1[i]); } System.out.printf("\nРезультат: %.4f", task2(arr1)); double[] arr2 = {-1, 23.2, 19.3, 4.9, -7.8, -12.7, -44, 5, -11.16, 56.26, 12}; System.out.println("\nПочаткові дані другої послідовності:"); for (int i = 0; i < arr2.length; i++) { System.out.printf("%.4f ", arr2[i]); } System.out.printf("\nРезультат: %.4f\n", task2(arr2)); System.out.println("---------------Task3---------------"); double x; System.out.print("Введіть значення x: "); Scanner scan = new Scanner(System.in); x = scan.nextDouble(); System.out.printf("Результат: %f\n", task3(x)); System.out.print("\nВведіть значення x: "); x = scan.nextDouble(); System.out.printf("Результат: %f", task3(x)); } public static void task1(double x0, double x1, double h) { System.out.println("______________________"); System.out.println("| x | y | z |"); for (double x = x0; x < x1 + h; x += h) { double y = tan(x / 3) * sin(x - 1.2), z = 2.5 * sin(x / 2); if (x < 0) { System.out.printf("|%.1f", x); } else { System.out.printf("| %.1f", x); } if (y < 0 || y > 10) { System.out.printf("|%.4f", y); } else { System.out.printf("| %.4f", y); } if (z < 0) { System.out.printf("|%.4f|\n", z); } else { System.out.printf("| %.4f|\n", z); } } System.out.println("¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯"); } static double task2(double[] arr) { double res = 0, max1 = 0, max2 = 0; for (int i = 2; i < arr.length; i++) { max2 = abs(arr[i - 1] - arr[i - 2]); max1 = abs(arr[i] - arr[i - 1]); if (res < max(max1, max2)) { res = max(max1, max2); } } return res; } static double task3 (double x) { double res = 0; double factorial; for (int k = 1 ;k <= 7; k++) { factorial = 1; int i = 1; while ( i <= k-1){ factorial =factorial * i; i++; } res += factorial/(pow(2,k)*pow(x, k-1)); } return res; } } Результати обчислень / / Висновок: було створено програму, яка виконує 3 поставлені завдання. У програмі використано велику кількість циклів for і while, адже без них програма була би громіздкою та вона би виконувалася неправильно, у випадку зміни кількості елементів у 2 завданні. У завданні 1 створено таблицю з обрахованими значеннями для кожного значення х. У завданні 2 через цикл було знайдено найбільший серед всіх модуль різниці суміжних чисел. У завданні 3, завдяки циклам було обраховано факторіал та суму ряду.
Антиботан аватар за замовчуванням

30.05.2023 01:05-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!