Національний технічний університет України
«Київський політехнічний інститут імені Ігоря Сікорського»
Теплоенергетичний факультет
Кафедра автоматизації проектування енергетичних процесів і систем
ЗВІТ
з лабораторної роботи № 3
з дисципліни «Програмування алгоритмічних структур»
Тема «Програмування циклічних алгоритмів»
Варіант № 4
Мета роботи: набуття практичних навичок використання операторів циклів for, while, do while при створюванні програмних проектів циклічної структури.
Завдання на лабораторну роботу.
1.Розробити блок-схеми алгоритмів і написати програми мовоюJava із застосуванням операторів циклів for, while, do while для розв’язання завдань ,поданих в табл.1–3 відповідно до індивідуального варіанта. Варіант обрати за списком групи.
2.Розробити програмні проекти в середовищі Intellij IDEA для реалізації написаних програм. Перевірити результати обчислень альтернативними розрахунками (наприклад,Excel, калькулятор, тощо).
3. Зробити Звіт з лабораторної роботи та вчасно надіслати викладачу на перевірку.
1 Завдання за варіантом:
/
2 Завдання за варіантом:
/
3 Завдання за варіантом:
/
Блок-схема алгоритму для завдання 3:
/
Коротке описання рішення для завдання 1:
Я створив метод task1 , що приймає максимальне й мінімальне значення х (границі діапазону) та крок приросту аргументу h. Створив вивід початку таблиці.Після чого за допомогою цилку for почав виводити значення функцій y(x) та z(x) зразу будуючи таблицю. Після циклу закрив таблицю.У методі main вивів початок завдання 1Після чого визвав метод task1 передавши напряму значення діапазону й кроку.
Коротке описання рішення для завдання2 :
Я створив метод task2, в якому присвоїв res = arr[0] + arr[1];Написав рядок, що знаходить суму двох елементів.Далі йде умова: якщо ця сума менше за суму двох інших (наступних) елементів, то перевіряємо умову для наступних елементів і так далі, а в кінці виводимо res; якщо більше, то перевіряємо умову вже для елементів, що менші та повторюємо весь цикл. в цінці повернув res
У методі main: Вивів початок завдання 2Ініціалізував масив для випадку 1Вивів значення масиву за умовою вимог до завданняПотім вивів результат обчисленьТеж саме викона в для випадку 2 , але з іншим масивом
Коротке описання рішення для завдання3 :
Я створив метод task3. В методі виконав ініціалізацію перемінних sum, divided та factorial, після чого за допомогою for повторював обчислення:
Обчислення факторіала k;
Результат ітерації додається до перемінної sum, що повертається після закінчення циклу.
У методі main реалізував:
Вивід початку завдання
Ініціалізацію перемінних
Ввід для перемінної х за допомогою об’єкта scan класу Scanner
Вивід результату обчислення
Програма проекту (копія коду на білому фоні):
package tr15.maksos;
import java.util.Arrays;
import java.util.Scanner;
import static java.lang.Math.*;
public class Lr3 {
public static void main(String[] args) {
int[] arr1 = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int[] arr2 = {654, 32, 233, 44, 5325, 346, 27, 58, 932, 130};
double x1, x2;
Scanner s = new Scanner(System.in);
System.out.println("task1");
System.out.println("x y(x) z(x)");
task1(-4, 10, 0.4);
System.out.println("task2");
System.out.println(Arrays.toString(arr1));
System.out.printf("min is: %d%n", task2(arr1));
System.out.println(Arrays.toString(arr2));
System.out.printf("min is: %d%n", task2(arr2));
System.out.println("task3");
System.out.print("x1 = ");
x1 = s.nextDouble();
System.out.print("x2 = ");
x2 = s.nextDouble();
System.out.printf("x1 = %.4f, sum = %.4f%n", x1, task3(x1));
System.out.printf("x2 = %.4f, sum = %.4f%n", x2, task3(x2));
}
public static void task1(double x0, double x1, double h) {
int iter = (int) ((x1-x0) / h) + 1;
double x, y, z;
for (int i = 0; i < iter; i++) {
x = i*h + x0;
y = sqrt(abs(sin(x + PI/4)));
z = sin(pow(x, 2)) + cos(x);
System.out.printf("%.1f %.4f %.4f%n", x, y, z);
}
}
public static int task2(int[] arr) {
int res = arr[0] + arr[1];
for (int i = 0; i < arr.length-1 ; i++) {
if ((arr[i] + arr[i+1]) < res) {
res = arr[i] + arr[i+1];
}
}
return res;
}
public static double task3(double x) {
double sum = 0;
double divided, factorial;
int i = 1;
while (i <= 5) {
divided = 2*i - 1;
factorial = 1;
for (int f = 1; f <= divided; f++) {
factorial *= f;
}
sum = sum + (factorial / pow(x, 2*i - 1));
i++;
}
return sum;
}
}
Результати обчислень
Завдання 1:
///
Завдання 2:
/
Завдання 3:
/
Перевірка обчислень за допомогою застосунку Photomath:
Завдання 1 (Тільки перші та останні значення):
/ /
//
Завдання 2:
/
Завдання 3:
/ /
Висновок:
Я набув практичних навичок у використанні операторів циклів for, while, do while при створюванні програмних проектів циклічної структури.Розробив блок-схеми алгоритмів і написав програми мовою Java із застосуванням операторів циклів for while для розв’язання завдань, поданих в табл.1, табл.2, табл.3.Розробив програмні проекти в середовищі Intellij IDEA для реалізації написаних програм. Перевірив результати обчислень альтернативними розрахунками (Photomath).Зробив звіт з лабораторної роботи та вчасно надіслав викладачу на перевірку