Національний технічний університет України
«Київський політехнічний інститут імені Ігоря Сікорського»
Теплоенергетичний факультет
Кафедра автоматизації проектування енергетичних процесів і систем
ЗВІТ
до лабораторної роботи № 3
з дисципліни «Програмування алгоритмічних структур»
Тема «Програмування циклічних алгоритмів»
Варіант № 12
Завдання на лабораторну роботу.
1. Розробити блок-схеми алгоритмів і написати програми на мові Java з застосуванням операторів циклів for, while, do while для вирішення завдань, представлених в табл.1-3 відповідно до індивідуального варіанту. Варіант вибрати за списком групи.
2. Розробити програмні проекти в середовищі Intellij IDEA для реалізації написаних програм. Перевірити результати обчислень альтернативними розрахунками (наприклад, Excel, калькулятор і т.д.
3. Зробити Звіт з лабораторної роботи та надіслати викладачу на перевірку.
Короткий опис рішення завдань разом із скриншотом варіанту завдання
1.Завдання
/
В методі task1,в якості параметрів якого задаємо х мінімальний і максимальний,а також крок h,задаємо шаблон для таблиці за допомогою System.out.println.За допомогою циклу for програма обраховує для кожного х y(x) i z(x).
2.Завдання
/
В методі task2 типу boolean задаємо змінну result того ж типу , яка в подальшому буде передавати true або false в умовний оператор методі main, за допомогою якого будемо виводити на екран результати перевірки. В циклі for прописуємо умову , за якої знайдені сусідні елементи масиву перетворюють початкове значення result з false на true.
3.Завдання
/
В методі task3 типу double в параметрах зазначаю змінну х,яку за допомогою Scanner вводимо з клавіатури.Задаємо 3 змінні FactorialI,I,i, також створюємо цикл з операторoм while, який рахує суму всіх обчислених виразів, підставляючи кожен раз відповідне і, для обрахування факторіалу також створюємо цикл for.
Блок-схема алгоритму до 3 завдання
/
Текст програми
package com.company;import java.util.Scanner;import static java.lang.Math.*;public class Lr3 { public static void main(String[] args) { double xmin = -1; double xmax = 1;//ініціалізація даних для першого завдання double h = 0.05; System.out.println("Вхідні дані(task1):\nXmin=-1;\nXmax=1;\nh=0.05;"); System.out.println("\t\t\t\tTask 1:"); task1(xmin, xmax, h);//виведення результатів обчислення task1 System.out.println("\t\t\t\tTask2:"); double[] N1 = {2, -1.09, 7,14, 17, -5, 8.31, -19,45,0, 2};//введення першої числової послідовності за допомогою присвоєння System.out.println("Перша числова послідовність:"); for (int i = 0; i < N1.length; i++) { System.out.printf("%.3f;",N1[i]);//виведення на екран першої числової послідовності } System.out.print("\nРезультати перевірки:\n");//виведення результатів обчислень task2 для першої числової послідвності if(task2(N1)) { System.out.print("Однакові сусідні числа знайдені\n"); } else System.out.print("Однакові сусідні числа не знайдені\n"); double[] N2 = {3, 54, 54, -4, 9.056, -0.15, 2, 0, 2, 4, 11.65, -7};//введення другої числової послідовності за допомогою присвоєння System.out.println("Друга числова послідовність:"); for (int i = 0; i < N1.length; i++) { System.out.printf("%.3f;",N2[i]);//виведення другої числової послідовності на екран } System.out.print("\nРезультати перевірки:\n"); if(task2(N2))//виведення результатів обчислення task2 другої числової послідовності на екран { System.out.print("Однакові сусідні числа знайдені\n"); } else System.out.print("Однакові сусідні числа не знайдені\n"); System.out.println("\t\t\t\tTask3:"); Scanner scan = new Scanner(System. in); double x; for(int i=0;i<2;i++) { System.out.print("Введіть х="); x=scan.nextDouble();//вводимо х за допомогою клавіатури System.out.printf("\nРезультати обчислень:%.4f\n",task3(x));//результати обчислень task3 } } public static void task1(double xmin, double xmax, double h) { System.out.println("|\tx\t|\ty(x)\t|\tz(x)\t|"); for (double x = xmin; x < xmax + h; x += h) {//прописуємо цикл, який має виконуавти дію(додавання кроку) поки х менше 1(включно) System.out.printf("|%.2f\t|\t%.4f\t|\t%.4f\t|\n", x, asin(x), cos(1 / (x + (PI / 3))));//виводимо за допомогою табуляції } } public static boolean task2(double []N) {//створюємо метод типу boolean boolean result=false;//задаємо змінну з початковим значенням false for (int i = 1; i <N.length; i++) {//прописуємо цикл // в якому буде умова, якщо значення двох сусідніх елементів масиву рівні // то, значення змінної result стає рівним true if(N[i] == N[i-1]) { result=true; } } return result;//функція повертає кінцеве значення змінної } public static double task3(double x) { double FactorialI=3;//задаємо початкове значення змінної за допопмогою формули double result=0;// задаємо змінну,яку необхідно буде потім повернути для подальшої роботи програми int I=1; while(I<=9)//прописуємо цикл,який додаватиме результати своїх наступних обчислень { for(int i=1;i<=I;i++)//прописуємо цикл,для обчислення факторіалу { FactorialI*=2*i+1; } result+=(pow(-1,I)*tan(pow(x,2)))/((FactorialI)); I++; } return result;//функція повертає кінцеве значення змінної }}
Результати рішень програми
Завдання 1
/
/
Завдання 2
/
Завдання 3
/
Висновок
Виконуючи дану лабараторну роботу, я написала програму за допомогою операторів операторів циклів for,while.Набула практичних навичок використання вищеописаних операторів циклів, при створюванні програмних проектів циклічної структури.