Національний технічний університет України
«Київський політехнічний інститут імені Ігоря Сікорського»
Теплоенергетичний факультет
Кафедра автоматизації проектування енергетичних процесів і систем
ЗВІТ
з лабораторної роботи № 3
з дисципліни «Програмування алгоритмічних структур»
Тема «Програмування циклічних алгоритмів»
Варіант № 16
Мета роботи: набуття практичних навичок використання операторів циклів for, while, do while при створюванні програмних проектів циклічної структури.
Завдання на лабораторну роботу.
1.Розробити блок-схеми алгоритмів і написати програми мовоюJava із застосуванням операторів циклів for, while, do while для розв’язання завдань ,поданих в табл.1–3 відповідно до індивідуального варіанта. Варіант обрати за списком групи.
2.Розробити програмні проекти в середовищі Intellij IDEA для реалізації написаних програм. Перевірити результати обчислень альтернативними розрахунками (наприклад,Excel, калькулятор, тощо).
3. Зробити Звіт з лабораторної роботи та вчасно надіслати викладачу на перевірку.
Завдання 1: /
Завдання 2:
/
Завдання 3:
/
Коротке описання рішення для завдання 1:
Я створив метод Task1 , що отримує максимальне й мінімальне значення х(тобто границі діапазону) та крок приросту аргументу h з метода main. У ньому я спочатку вивожу строку з x, y та z, як початок таблиці а потім у циклі for від х, у діапазоні який ми взяли з мейну та кроком h, знаходжу y(х) та z(х) згідно до варіанту з Табл. 1 та потім вивожу в три колонки значення x, y та z відповідно.
Коротке описання рішення для завдання2 :
Я створив метод Task2, що приймає масив значень та повертає подвоєну суму додатних чисел.
Спочатку ініціалізував перемінну суми sum, яка дорівнює на початку 0. Після чого за домогою розгалуження у циклі for перевіряв елементи массивуна додтність, і якщо вони цю умову виповняли додавав їх до суми. Після знаходження суми метод повертає її подвоєння за допомогою return.
Коротке описання рішення для завдання3 :
Я створив два методи Task31 та Task32 , та ще один допоміжний Fac, для обчислювання факторіалу. Різниця між Task31 та Task32 тільки в тому , що в першому використовується циел for , а в другому - цикл while, так було виконано згідно до умов 3 завдання у лабораторній.
В методі Task31 зчитував дійсну змінну х, ініціалізував пусту зміну y2 для обчислюваннь, після чого за допомогою for обчислив суму математичних дії над змінною х, використовуючи там де потрібно метод Fac. Після циклу метод повертає y2 за допомогою return.
Метод Task32 так само зчитує дійсну змінну х, ініціалізує пусту зміну y2 для обчислюваннь та змінну k для циклу, після чого за допомогою вже циклу while обчислив так само суму математичних дії над змінною х, використовуючи там де потрібно метод Fac. Після циклу метод повертає y2 за допомогою return.
Блок-схеми алгоритмів для завдання3:
Метод Fac для обчислювання факотріалу:
/
Метод Task31 для обчислювання завдання 3 з циклом for:
/
Метод Task31 для обчислювання завдання 3 з циклом for:
/
Програму проекту:
import static java.lang.Math.*; //імпорт потрібних бібліотекimport java.util.Scanner;public class Lr3 { public static void main(String[] args) { double minx=0;//Ініціалізація та присвоєння змінним данним з постановки задачі double maxx=7; double h=0.2; System.out.printf("Завдання 1\nДля х який належить проміжку [%.0f;%.0f] з кроком %.1f\n", minx,maxx,h); Task1(minx,maxx,h);//Результат першого завтдання int[] arr1={49, 26, 47, 16, 5, 42, 12, 19, 37, 1};//Ввод першого варіанту масиву натуральних чисел для завдання 2 int[] arr2={30, 69, 14, 8, 65, 84, 99, 29, 13, 68};//Ввод другого варіанту масиву натуральних чисел для завдання 2 System.out.printf("\n\nЗавдання 2\nПочатковивй масив №1\n"); for (int i = 0; i < arr1.length; i++)//Вивід першоначального массиву System.out.printf("%d " , arr1[i]); System.out.printf("\nПодвоєна сума для масиву №1: %d\n", Task2(arr1));//Результат другого завдання System.out.printf("\nПочатковивй масив №2\n"); for (int i = 0; i < arr2.length; i++)//Вивід першоначального массиву System.out.printf("%d " , arr2[i]); System.out.printf("\nПодвоєна сума для масиву №2: %d\n", Task2(arr2));//Результат другого завдання System.out.printf("\n\nЗавдання 3\n"); double x;//Ініціалізація зміннох для третього завдання Scanner scann = new Scanner(System.in);//Ініціалізація сканеру System.out.printf("Введіть х для першого варіанту: "); x = scann.nextDouble();//Присвоєння змінній зчитуванного з строки System.out.printf("Результат першого варіанту: %.4f\n\n" , Task31(x));//Результат третього завдання за допомогою for System.out.printf("Введіть х для другого варіанту: "); x = scann.nextDouble();//Присвоєння змінній зчитуванного з строки System.out.printf("Результат другого варіанту: %.4f\n" , Task32(x));//Результат третього завдання за допомогою while } //Метод для обчислювання завдання 1 public static void Task1(double mi, double ma, double ha){ double y,z; System.out.printf("| x | y(x) | z(x) |\n");//Початок таблиці for (double x = mi; x < ma + ha; x += ha){//Обчислюваня y та z та вивід їх разом х у нову строку кожний раз y=log(x/2+0.1); z=cos((x+2*PI)*pow(E,x)); System.out.printf("| %.1f | %.4f | %.4f |\n" , x, y, z); } } //Метод для обчислювання завдання 2 public static int Task2(int[] arr){ int sum = 0;//Ініцілізація пустої змінної для суми for (int i = 0; i < arr.length; i++) if (arr[i]>0) sum+=arr[i]; return sum*2; } //Метод для обчислювання фракталу public static int Fac(int f) { int result = 1; for (int i = 1; i <= f; i++) { result = result * i; } return result; } //Метод для обчислювання завдання 3 для циклу for static double Task31(double x){ double y2 = 0;//Ініцілізація пустої змінної for (int k = 1 ;k < 6; k++) { y2 += pow(x,k+2)/Fac(k); } return y2; } //Метод для обчислювання завдання 3 для циклу while static double Task32(double x){ double y2 = 0;//Ініцілізація пустої змінної для суми int k = 1;//Ініцілізація змінної для while while (k < 6){ y2 +=pow(x,k+2)/Fac(k); k++; } return y2; }}
Результати обчислень:
/
/
/
Висновок:
У цій лабораторній роботі було набуто практичних навичок з використання операторів циклів for, while при створюванні програмних проектів циклічної структури. Було створено методи для обчислювання завдань з Табл.. 1-3 відповідно до індивідуального варіанту. Було створено додатковий метод для обчислювання факторіалу числа для полегшення написання коду. Лабораторна була розроблена у середовищі Intellij IDEA, де, було створено проект, та класс. Результати програми перевіряв вручну за допомогою калькулятора, помилок не було знайдено. Зроблено звіт з лабораторної роботи та вчасно надіслано викладачу на перевірку.