Національний технічний університет України
«Київський політехнічний інститут імені Ігоря Сікорського»
Теплоенергетичний факультет
Кафедра автоматизації проектування енергетичних процесів і систем
ЗВІТ
з лабораторної роботи № 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, тож було закріплено навички їх застосування при створюванні програмних проектів циклічної структури.
У результаті було реалізовано програму, що досліджує функцію на заданому проміжку х з заданим кроком та утворює таблицю значень; програму, що виводить індекс першого нульового елементу масиву цілих додатніх чисел; та програму, яка розраховує значення у за формулою алгебраїчної суми в залежності від значення х. Для останнього завдання перевірила значення альтернативним калькулятором і переконалася в тому, що відповіді збігаються.