Рекурсивний виклик функції

Інформація про навчальний заклад

ВУЗ:
Національний технічний університет України Київський політехнічний інститут
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Не вказано

Інформація про роботу

Рік:
2021
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Алгоритмізація та програмування

Частина тексту файла (без зображень, графіків і формул):

Національний технічний університет України «Київський політехнічний інститут імені Ігоря Сікорського» Алгоритмізація та програмування 1: Базові концепції програмування ЗВІТ до лабораторної роботи № 5 «Рекурсивний виклик функції» Варіант 16 Дата «23» листопада 2021 ЗАВДАННЯ: 1. Ознайомитись з рекурсивним викликом функції. 2. Розробити алгоритмом розрахунку значення функції за її розкладенням у ряд за умови отримання результату з заданою  точністю. Врахувати діапазон дозволених значень для змінної x. 3. У якості індивідуального завдання необхідно написати програмний код, що реалізує алгоритм розрахунку значень функцій за їх розкладенням в ряд із заданою користувачем точністю. Варіант завдання(математична модель): / Теоритичні відомості: Методы (Руководство по программированию на C#) Метод — это блок кода, содержащий ряд инструкций. Программа инициирует выполнение инструкций, вызывая метод и указывая все аргументы, необходимые для этого метода. В C# все инструкции выполняются в контексте метода. Метод Main является точкой входа для каждого приложения C# и вызывается общеязыковой средой выполнения (CLR) при запуске программы. В приложении, использующем инструкции верхнего уровня, метод Main создается компилятором и содержит все инструкции верхнего уровня. Сигнатуры методов Методы объявляются в классе, структуре или интерфейсе путем указания уровня доступа, такого как public или private, необязательных модификаторов, таких как abstract или sealed, возвращаемого значения, имени метода и всех параметров этого метода. Все эти части вместе представляют собой сигнатуру метода.  Важно! Тип возврата метода не является частью сигнатуры метода в целях перегрузки метода. Однако он является частью сигнатуры метода при определении совместимости между делегатом и методом, который он указывает. Параметры метода заключаются в скобки и разделяются запятыми. Пустые скобки указывают, что параметры методу не требуются. Этот класс содержит четыре метода: abstract class Motorcycle { // Anyone can call this. public void StartEngine() {/* Method statements here */ } // Only derived classes can call this. protected void AddGas(int gallons) { /* Method statements here */ } // Derived classes can override the base class implementation. public virtual int Drive(int miles, int speed) { /* Method statements here */ return 1; } // Derived classes must implement this. public abstract double GetTopSpeed(); } Доступ к методу Вызов метода в объекте аналогичен доступу к полю. После имени объекта добавьте точку, имя метода и круглые скобки. Аргументы перечисляются в этих скобках и разделяются запятыми. Таким образом, методы класса Motorcycle могут вызываться, как показано в следующем примере: class TestMotorcycle : Motorcycle { public override double GetTopSpeed() { return 108.4; } static void Main() { TestMotorcycle moto = new TestMotorcycle(); moto.StartEngine(); moto.AddGas(15); moto.Drive(5, 20); double speed = moto.GetTopSpeed(); Console.WriteLine("My top speed is {0}", speed); } } Понятие числового ряда В общем виде числовой ряд можно записать так: / Здесь: / – математический значок суммы; / – общий член ряда (запомните этот простой термин); / – переменная-«счётчик». Запись / обозначает, что проводится суммирование от 1 до «плюс бесконечности», то есть, сначала у нас n=1 , затем n=2, потом n=3 , и так далее – до бесконечности. Вместо переменной n иногда используется переменная k или m. Суммирование не обязательно начинается с единицы, в ряде случаев оно может начинаться с нуля /, с двойки / либо с любого натурального числа. В соответствии с переменной-«счётчиком» любой ряд можно расписать развёрнуто: /– и так далее, до бесконечности. Cлагаемые / – это ЧИСЛА, которые называются членами ряда. Если все они неотрицательны (больше либо равны нулю), то такой ряд называют положительным числовым рядом. Блок-схеми Повна програма: / Метод для обчислювання факторіалу: / Метод для обчислювання Косинусу та Синус: / / Вивід програми: / / Код програми: Посилання на Repl.it: https://replit.com/join/tdmhucwtut-tr-15khavkin #include <stdio.h> #include <math.h> #define M_PI 3.14159265358979323846 double factorial(double n){//Метод обчислювання факторіалу if(n <= 1.0) return 1.0; else return (n*factorial(n-1)); } double cosi(double fi, int to){//Метод обчислювання косинусу розкладанням в ряд double x=0; for(int i = 0; i < to; i++){ double cosin = pow(-1,i) * pow(fi, 2*i) / factorial(2*i); x+=cosin; } return x; } double sinu(double fi, int to){//Метод обчислювання синусу розкладанням в ряд double x=0; for(int i = 0; i < to; i++){ double sinus = pow(-1,i) * pow(fi, 2*i+1) / factorial(2*i+1); x+=sinus; } return x; } int main(void) { int N = 0;//Ввод потрібних змінних printf("Введіть точність (Рекомендовано 40): "); scanf("%d", &N); double xd, a, b; printf("Введіть вугол у градусах: "); scanf("%lf", &xd); printf("Введіть значення a: "); scanf("%lf",&a); printf("Введіть значення b: "); scanf("%lf", &b); double xr = (xd/180)*M_PI; //Перетворення градусів у радіани printf("Вугол в радіанах: %lf", xr); //Вирішення за допомогою бібліотечних функцій double x1 = a * pow(cos(xr), 2) + b * cos(xr); double y1 = a * sin(xr) * cos(xr) + b * cos(xr); double p1 = 2 * a * cos(xr) + b; printf("\n\nРезультати обчислювань за допомогою бібліотечних функцій\nx1 = %.4f y1 = %.4f p1 = %.4f", x1,y1,p1); //Вирішення за допомогою створених функцій у методах double x2 = a * pow(cosi(xr,N), 2) + b * cosi(xr,N); double y2 = a * sinu(xr,N) * cosi(xr,N) + b * cosi(xr,N); double p2 = 2 * a * cosi(xr,N) + b; printf("\n\nРезультати обчислювань за допомогою cтворених функцій\nx2 = %.4f y2 = %.4f p2 = %.4f", x1,y1,p1); double rizx = x2 - x1;//Обчислювання різниці(точність) double rizy = y2 - y1; double rizp = p2 - p1; printf("\n\nТочність розрахунку(різниця значень):\nrizx = %.6f rizy = %.6f rizp = %.6f", rizx,rizy,rizp); return 0; } Висновок: У цій лабораторної роботі ознайомилися з рекурсивним викликом функції. Створенні методи для косинусу, сінусу і факторіалу. Косинус й синус були обчислюванні шляхом розкладання у ряд. Присвоєння змінним для виконання завдання було виконану за допомогою зчитування з командної строки. Було обчислено завдання згідно до варіанту 16 з Додатку за допомогою бібліотечних функцій та створених методів. Виведені результати обох обчислювань та їх різниця. Було з’ясовано, що чим більше точність, яка введена для методів, тим менше результати обчислювань за допомогою методів відрізняються від обчислювань за допомогою бібліотечних функцій. Створенні блок-схеми до коду. Зроблено звіт з лабораторної роботи та вчасно надіслано викладачу на перевірку.
Антиботан аватар за замовчуванням

22.07.2023 07:07-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!