Національний технічний університет України
«Київський політехнічний інститут імені Ігоря Сікорського»
Теплоенергетичний факультет
Кафедра автоматизації проектування енергетичних процесів і систем
ЗВІТ
з лабораторної роботи № 3
з дисципліни «Програмування алгоритмічних структур»
Тема «Програмування циклічних алгоритмів»
Варіант № 21
Мета роботи: набуття практичних навичок використання операторів циклів for, while, do while при створюванні програмних проектів циклічної структури.
Завдання на лабораторну роботу.
1.Розробити блок-схеми алгоритмів і написати програми мовоюJava із застосуванням операторів циклів for, while, do while для розв’язання завдань ,поданих в табл.1–3 відповідно до індивідуального варіанта. Варіант обрати за списком групи.
2.Розробити програмні проекти в середовищі Intellij IDEA для реалізації написаних програм. Перевірити результати обчислень альтернативними розрахунками (наприклад,Excel, калькулятор, тощо).
3. Зробити Звіт з лабораторної роботи та вчасно надіслати викладачу на перевірку.
Завдання для варіанту 21:
Завдання 1
/
Завдання 2
/
*послідовність додатніх цілих чисел
Завдання 3
/
Короткий опис розв`язання завдань
Усі завдання я виконувала у класі LR3.
Cпочатку я створила метод main, де задала мінімальне та максимальне значення х, а також значення приросту h. Пізніше я передала їх в метод task1, в якому за допомогою циклу while обраховувалися значення y(x) та z(x). Разом вони утворювали таблицю, яка виводься за допомою System.out.printf.
Для виконання другого завдання у методі main я ініалізувала два масиви, вивела їх, а також результат у вигляді виводу першого нульового елементу масиву. У методі main викликала метод task2, у якому використовуючи оператор циклу for було знайдено індекси перших елементів масивів, що дорівнюють 0.
Для завдання 3 у методі main я зробила ініціалізацію змінних, додала клас Scanner для вводу значень х, та вивід результату. Далі я створила метод task3, у якому реалізувала обрахунок значеннь у в залежності від х за допомогою оператору циклу while, а факторіалу – використовуючи оператор for.
Блок-схема для 3 завдання
/
Копія коду
package com.company;import java.util.Scanner;import static java.lang.Math.*;import static java.lang.Math.pow;public class LR3 { public static void main(String[] args) { System.out.println("Task №1"); task1(0.5, 11, 0.3); System.out.println("\nTask №2"); int[] s1 = {3, 1, 12, 6, 9, 32, 65, 0, 52, 98, 87, 103}; //ініціалізація значень першого масиву System.out.printf("Перший початковий масив:"); //вивід початкового масиву для першого випадку for (int i = 0; i < s1.length; i++) System.out.printf(" %d", s1[i]); System.out.printf("\nІндекс першого нульового елементу для першого випадку: %d\n", task2(s1)); int[] s2 = {2, 0, 15, 52, 76, 87, 103, 65, 79, 123}; //ініціалізація значень другого масиву System.out.printf("Другий початковий масив:"); //вивід початкового масиву для другого випадку for (int i = 0; i < s2.length; i++) System.out.printf(" %d", s2[i]); System.out.printf("\nІндекс першого нульового елементу для другого випадку: %d\n", task2(s2)); double xtask3; Scanner sc = new Scanner(System.in); System.out.print("\nTask №3\n"); for (int i = 0; i < 2; i++) { System.out.printf("Введіть змінну x%d: ", i + 1); xtask3 = sc.nextDouble(); System.out.printf("При х%d = %.1f", (i + 1), xtask3); System.out.printf("\n y = %.4f\n", task3(xtask3)); } } static void task1(double xMin, double xMax, double h) { // вивід отриманих значень у вигляді таблиці System.out.printf("--------------------------\n"); System.out.printf("| x | y(x) | z(x) |\n"); System.out.printf("--------------------------\n"); double x = xMin; while (x < xMax + h) { double y = pow(sin(x), 2) * cos(x - PI), z = sin(x) / pow(x, 2); if (x < 10) { System.out.printf("| %.2f", x); } else { System.out.printf("|%.2f", x); } if (y < 0) { 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.printf("--------------------------\n"); x += h; } } static int task2( int[] array){ int index = 0; for (int i = 0; i < array.length; i++) if (array[i] == 0) index = i + 1; return index; } public static double task3(double x) { double sum = 0; int i = 1; while (i <= 11) { double factorial = 1; for (int j = 1; j <= (2 * i - 1); j++) factorial = factorial * j; sum += (Math.pow(-1, i) * Math.pow(x, 3 * i)) / factorial; i++; } return sum; } }
Результати програми
Для Завдання 1
/
/
/
/
Для Завдання 2
/
Для Завдання 3
/
Перевірка розрахунків альтернативним шляхом для Завдання 3
При х = 0,6
/
При х = 2,8
/
Висновки
Під час виконання роботи я написала три програми з використанням умовного оператору if та операторів циклу for і while, тож було закріплено навички їх застосування при створюванні програмних проектів циклічної структури.
У результаті було реалізовано програму, що досліджує функцію на заданому проміжку х з заданим кроком та утворює таблицю значень; програму, що виводить індекс першого нульового елементу масиву цілих додатніх чисел; та програму, яка розраховує значення у за формулою алгебраїчної суми в залежності від значення х. Для останнього завдання перевірила значення альтернативним калькулятором і переконалася в тому, що відповіді збігаються.