Національний технічний університет України
«Київський політехнічний інститут імені Ігоря Сікорського»
Теплоенергетичний факультет
Кафедра автоматизації проектування енергетичних процесів і систем
ЗВІТ
з лабораторної роботи № 3
з дисципліни «Програмування алгоритмічних структур»
Тема «Програмування циклічних алгоритмів»
Варіант № 14
Завдання на лабораторну роботу.
1.Розробити блок-схеми алгоритмів і написати програми мовою Java із застосуванням операторів циклів for, while, do while для розв’язання завдань, поданих в табл.1–3 відповідно до індивідуального варіанта. Варіант обрати за списком групи.
2.Розробити програмні проекти в середовищі Intellij IDEA для реалізації написаних програм. Перевірити результати обчислень альтернативними розрахунками (наприклад, Excel, калькулятор, тощо).
3. Зробити Звіт з лабораторної роботи та вчасно надіслати викладачу на перевірку.
Завдання 1:
Завдання 2:
Завдання 3:
Короткий опис рішення завдання
Завдання 1:
У класі task1 за допомогою циклу for виконала арифметичні дії відповідно до варіанту. Здійснила форматований вивід даних (x–один або два знаки після коми, y(x), z(x)–4 знаки після коми). Результати вивела в таблицю з трьома стовбчиками для х, y(x), z(x). У класі main викликала метод task1 із заданими за варіантом значеннями границі х та кроку приросту h.
Завдання 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 для реалізації написаних програм. Результати обчислень перевірено за допомогою калькулятора.
Звіт оформлено згідно з вимогами й вчасно надіслано викладачу.