Національний технічний університет України
«Київський політехнічний інститут імені Ігоря Сікорського»
Теплоенергетичний факультет
Кафедра автоматизації проектування енергетичних процесів і систем
ЗВІТ
з лабораторної роботи № 3
з дисципліни «Програмування алгоритмічних структур»
Тема «Програмування циклічних алгоритмів»
Варіант № 14
Завдання на лабораторну роботу.
1.Розробити блок-схеми алгоритмів і написати програми мовою Java із застосуванням операторів циклів for, while, do while для розв’язання завдань, поданих в табл.1–3 відповідно до індивідуального варіанта. Варіант обрати за списком групи.
2.Розробити програмні проекти в середовищі Intellij IDEA для реалізації написаних програм. Перевірити результати обчислень альтернативними розрахунками (наприклад, Excel, калькулятор, тощо).
3. Зробити Звіт з лабораторної роботи та вчасно надіслати викладачу на перевірку.
Завдання 1:
Завдання 2:
Завдання 3:
Короткий опис рішення завдання
Завдання 1:
Завдання 2:
Поза класом здійснила ініціалізацію масиву t1. У класі main спочатку вивела задану послідовність, а потім вивела результат за допомогою форматованого виводу, використовуючи метод task2 для послідовності t1. У класі task 2 ініціалізувала змінні min та max, які спочатку присвоїла до першого елемента масива t1. Далі в циклі for знайшла максимальне й мінімальне значення й повернула їх різницю.
Завдання 3:
У класі main за допомогою метода scanner здійснюю ввід з клавіатури заданих значень x (0,6 та 2,8). Далі за допомогою форматованого виводу виводжу результат, використовуючи метод task31 для х, а потім так само з методом task32 для х. У класі task31 знаходжу факторіал за допомогою циклу for і здійснюю арифметичні дії з завдання за варіантом. Повертаю отримане значення. У класі task32 роблю все те саме, але в циклах while, після чого повертаю отримане значення.
Блок-схема алгоритму для завдання 3:
Програма проекту (копія коду на білому фоні):
package com.company;
import static java.lang.Math.*;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
System.out.println("--------------Task1--------------");
task1(-4, 10, 0.4);
System.out.println("\n--------------Task2--------------");
//введення масиву присвоєнням
int[] t1 = {1, 5, 3, 4, 5, 9, 7, 8, 9, 13};
System.out.printf("Послідовність:");
//вивід масиву t1 для завдання 2
for (int i = 0; i < t1.length; i++)
System.out.printf(" %d", t1[i]);
//вивід результату для завдання 2
System.out.printf("\nРезультат: %d\n", task2(t1));
System.out.println("\n--------------Task3--------------");
double x;
//ввід даних з клавіатури
Scanner scan = new Scanner(System.in);
System.out.printf("Введіть x: ");
x = scan.nextDouble();
System.out.printf("Результат: %.4f\n\n" , task31(x));
System.out.printf("Введіть x: ");
x = scan.nextDouble();
System.out.printf("Результат: %.4f\n" , task32(x));
}
static void task1(int minX, double maxX, double h) {
System.out.printf("_________________________________\n");
System.out.printf("|\tx\t|\ty(x)\t|\tz(x)\t|\n");
System.out.printf("---------------------------------\n");
//обрахунки до 1 завдання
for (double x = minX; x < maxX + h; x += h)
System.out.printf("|\t%.1f\t|\t%.4f\t|\t%.4f\t|\n", x, Math.pow(sin(x), 2) + cos(x), sin(x) / (log10(pow(x, 2) + 2)));
System.out.printf("---------------------------------\n");
}
static int task2(int[] t1) {
//ініціалізація
int min, max;
min = max = t1[0];
// знаходження мінімального й максимального значень елементів в масиві
for (int i = 1; i < 10; i++) {
if (t1[i] < min)
min = t1[i];
if (t1[i] > max)
max = t1[i];
}
// повертаю різницю мінімального й максимального значень елементів в масиві
return max - min;
}
//метод з циклом while для завдання 3
static double task31(double x){
//ініціалізація змінних
double count = 0;
double factorial;
int k = 1;
int i;
while (k < 7){
//знаходимо факторіал k
factorial = 1;
i = 1;
while (i <= k){
factorial *= i;
i++;
}
count += factorial/pow((1+x),k);
k++;
}
return count;
}
//метод з циклом for для завдання 3
static double task32(double x){
//ініціалізація змінних
double count = 0;
double factorial;
for (int k = 1 ;k < 7; k++) {
//знаходимо факторіал k
factorial = 1;
for (int i = 1; i <= k; i++)
factorial *= i;
count += factorial/pow((1+x),k);
}
return count;
}
}
Результати обчислень:
Завдання 1:
Завдання 2:
Завдання 3:
Висновки:
Під час виконання лабораторної роботи №3 вдалось набути практичних навичок використання операторів циклів for, while при створюванні програмних проектів циклічної структури.
Було написано програми мовою Java із застосуванням операторів циклів й розв’язано завдання , які подані в табл.1–3 відповідно до індивідуального варіанту.
Проекти були розроблені в середовищі Intellij IDEA для реалізації написаних програм. Результати обчислень перевірено за допомогою калькулятора.
Звіт оформлено згідно з вимогами й вчасно надіслано викладачу.