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