МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ УНІВЕРСИТЕТ “ХАРЬКІВСЬКИЙ ПОЛІТЕХНІЧНИЙ ІНСТИТУТ” Кафедра програмної інженерії та інформаційних технологій управління Звіт з лабораторної роботи №2 з дисципліни «Основи програмування (частина 1)» Виконав: ст. гр. КН-220а Міщенко І.О. Перевірив: доцент. каф. ПІІТУ Пашнєв А.А. ХАРКІВ 2020 ЗАВДАННЯ НА ЛАБОРАТОРНУ РОБОТУ Програмна реалізація алгоритму з розгалуженням Розробити програму розв’язання квадратного рівняння. Програма повинна включати перевірку всіх можливих варіантів вихідних даних. Зокрема, слід перевіряти дискримінант, а також передбачити перевірку, чи рівняння є квадратним. Якщо рівняння виродилося в лінійне, слід передбачити знаходження кореня цього лінійного рівняння, або встановити наявність безлічі розв’язків (відсутності розв’язків). Програмна реалізація циклічного алгоритму Розробити програму, яка реалізує алгоритм обчислення виразу: y = 1/(x + 2) + 2/(x + 4) + … + (k - 1)/(x + 2(k - 1)) + (k + 1)/(x + 2(k + 1)) + … + n/(x + 2n) Забезпечити перевірку можливих помилок. Обчислення добутку Розробити програму, яка забезпечує читання x і n і обчислює y: y = (x + 1)(x - 2)(x + 3)(x - 4) … (x - 2n) Обчислення суми Розробити програму, яка читає значення eps (невеличке число – точність обчислень) і обчислює y: y = 1/2 + 1/4 + 1/8 + 1/16 + … Цикл завершується, якщо новий доданок менше ніж eps. Індивідуальне завдання Розробити програму, яка обчислює значення функції в заданому діапазоні. Програма повинна реалізувати алгоритм, розроблений в завданні 1.3 попередньої лабораторної роботи. Функція індивідуального завдання зображена на рисунку 1. Рис.1 ОСНОВНА ЧАСТИНА 2.1. Основні теоретичні положення Мова програмування С++ була створена в 1983 році датським дослідником Б’ярном Страуструпом. Базовою мовою для C++ було обрано С – багатоцільову, лаконічну і відносно низькорівневу мову програмування. Мова C зберігається як підмножина. Основними особливостями C++ порівняно з С є такі: - строга типізація; - підтримка об’єктно-орієнтованого програмування; - підтримка шаблонів і узагальненого програмування; - розширені можливості процедурного програмування. Мова C++ поєднує в собі можливості представлення складних структур даних і написання ефективних низькорівневих програм. На базі синтаксису C++ згодом були створені нові об'єктно-орієнтовані мови. Насамперед, це Java і C#. Для виконання завдання були використані наступні елементи мови С++: - iostream — бібліотека і відповідний заголовний файл, які використовується для організації введення-виведення в мові програмування C++; - складена інструкція – це послідовність інструкції, укладена у фігурні дужки {}, також іменується як блок; - цикли — це інструкції, що виконують одну і ту ж саму послідовність дій, поки діє задана умова. 2.2. Описання розробленого застосунку 2.2.1. Програмна реалізація з розгалуженням Код програми: #include using namespace std; int main() { double a,b,c,x1,x2,d; cout << "Input a:"; cin >> a; cout << "Input b:"; cin >> b; cout << "Input c:"; cin >> c; d = b*b-4*a*c; if (d>0) { x1 = ((-1 * b + sqrt(d)) / (2 * a)); cout << "x1= " << x1 << endl; x2 = ((-1 * b - sqrt(d)) / (2 * a)); cout << "x2= " << x2 << endl; } if(d==0) { x1 = -(b / (2 * a)); cout << "x1=" << x1 << endl; } if (d < 0) cout << "D<0, no real roots of the equation"; } На рисунку 2.1. зображений приклад виконання програми з розгалуженням Рис.2.1 2.2.2. Програмна реалізація циклічного алгоритму Код програми: #include using namespace std; int main() { double x, n,y=0; cout << "Input n:"; cin >> n; cout << "Input x:"; cin >> x; for (double i = 1; i <= n; i++) { y += i / (x + 2 * i); } cout << "y=" << y << endl; } На рисунку 2.2. зображений приклад виконання програми з циклічним алгоритмом Рис.2.2 2.2.3. Обчислення добутку Код програми: #include using namespace std; int main() { int x, n; double y = 1; cout << "Input x:"; cin >> x; cout << "Input n:"; cin >> n; if (x<=n&&(x % 2 == 0)) { cout << "0"; } else { for (int i = 1; i <= 2*n; i++) { y *= x - i*pow(-1,i); } cout << "y=" << y << endl; } } На рисунку 2.3. зображений приклад виконання програми по обчисленню добутку. Рис.2.3 2.2.4. Обчислення суми Код програми: #include using namespace std; int main() { double i = 2,eps,y=0; cout << "Input eps:"; cin >> eps; if (eps <= 0) { cout << "Invalid value eps" << endl; } else { do { y += 1 / i; i += 2; } while ((1/i) > eps); cout << "y= " << y << "-" << 1 / i << endl; } } На рисунку 2.4. зображений приклад виконання програми по обчисленню добутку. Рис.2.4 2.2.5.Індивідуальне завдання На рисунку 2.5 зображено функція з індивідуального завдання, на рисунку 2.5.1, 2.5.2. зображений приклад виконання програми індивідуального завдання. Рис.2.5 Код програми: #include using namespace std; int main() { double x,n,y=0,y1=1; cout << "x="; cin >> x; cout << "n="; cin >> n; if (x < 0) { for (double i = 1, j = 1; i <= n, j <= n; i++, j++) { y += 1 / (x - i - j); } cout << "y=" << y << endl; } else { if (n >= 3) { for (double i = 0; i <= n - 3; i++) { y1 *= (-x - i); } cout << "y=" << y1 << endl; } else cout << "incorrect value"; } return 0; Рис.2.5.1 Рис.2.5.2 Висновки: виконавши лабораторну роботу №2, я отримав навички з розробки програмного забезпечення, яке включає в себе циклічні алгоритми, складені інструкції і розгалуження. Список джерел інформації Іванов Л. В. Операції та інструкції мови С++. Курс “Основи програмування”. URL: http://iwanoff.inf.ua/programming_1_ua/index.html. Стандартні бібліотека С++ і що в неї входить. URL: https://uk.wikipedia.org/wiki/Iostream. Іванов Л. В. Використання базових засобів мови Java. Курс “Основи програмування”. URL: http://iwanoff.inf.ua/programming_2_ua/LabTraining04.html. |