Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка Программирование C++ 2014n.docx
Скачиваний:
4
Добавлен:
01.07.2025
Размер:
979 Кб
Скачать
☆

Контрольные вопросы

  1. Какой процесс называется итеративным?

  2. Каким образом реализуются итеративные процессы?

  3. Какой алгоритм называется рекурсивным?

  4. Какая функция называется прямо рекурсивной? Косвенно рекурсивной?

  5. Что такое стек? В какой последовательности происходит заполнение стека и выбор элементов из стека?

  6. Что должно обязательно присутствовать в теле рекурсивно описанной функции?

  7. Перечислите различия между итерацией и рекурсией.

  8. Что произойдет, если рекурсивный алгоритм будет вызывать сам себя «бесконечное» число раз?

  9. Как предотвратить бесконечное выполнение рекурсивного алгоритма?

  10. Верно ли, что решение задачи, реализуемое рекурсивным алгоритмом, можно выразить, используя итерацию?

Пример выполнения лабораторной работы

Задание. Для заданных границ интегрирования a и b вычислите значение определенного интеграла следующего вида:

Решение

1. Математическая модель

Аргументы: границы интегрирования a, b целого типа;

степень n1 целого типа.

Результаты: разность int_b - int_a вещественного типа.

Промежуточные величины: значение интеграла для нижней границы интегрирования int_a; значение интеграла для верхней границы интегрирования int_b (вещественного типа).

2 . Алгоритм

3. Программа

// вычисление значения определенного интеграла

#include <iostream>

#include <conio.h>

#include <math.h>

using namespace std;

double Integrate(int n, double x);

int main()

{

double b, a;

int n1;

cout<<"Введите а и b, где b больше a : ";

cin>>a>>b;

cout<<endl;

cout<<"Введите степень n : ";

cin>>n1;

cout<<endl;

double int_a, int_b;

int_a = Integrate(n1, a);

int_b = Integrate(n1, b);

cout<<"Значение определённого интеграла при а = "<<a<<" и b = "<<b<<" равно "<<int_b-int_a;

_getch();

return 0;

}

double Integrate(int n, double x)

{

double c = 2.0; // значение константы а выбирается произвольно

if(n == 1) return (exp(c*x)/(c*c)*(c*x-1));

if(n > 1) return (pow(x, n)*exp(c*x)/c-(n/c)*Integrate(n-1, x));

}

4. Результат работы программы

Введите a и b, где b больше a: 2 4

Введите степень n: 3

Значение определенного интеграла при a = 2 и b = 4 равно 67328,1534

7. Одномерные массивы

7.1. Понятие структурированного типа данных

Синонимами названия «базовый тип» являются названия «стандартные», «предопределенные». Реализация этих типов заложена в стандарте языка, и программист не вправе изменить предопределенное. Производным типом (определяемым программистом) является такой тип, который должен быть описан пользователем перед употреблением. К производным типам можно отнести массивы, перечисления, функции, структуры, ссылки, объединения и классы. Полезно помнить, что тип данного определяет его размещение в памяти и набор операций.

Структурированный тип представляет собой набор элементов – данных, объединенных программистом в единый блок в соответствии с особенностями решаемой задачи. Данные, входящие в блок, могут быть однотипными или разнотипными, весь блок данных имеет общее имя. Каждый элемент отличается от других либо порядковым номером (индексом) – в массиве, либо своим именем и, возможно, типом – в структуре.

Любой из структурированных типов данных характеризуется множественностью образующих этот тип элементов. Переменная или константа структурированного типа всегда имеет несколько компонент. Каждая из этих компонент, в свою очередь, может принадлежать структурированному типу, что позволяет говорить о возможной вложенности типов.

В С++ можно выделить следующие структурированные типы: массивы, структуры, объединения, классы, файлы.