Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Лабораторная работа № 14. Структура и назначение функций





Функция – это совокупность объявлений и операторов, предназначенная для решения определенной задачи. Одно из главных преимуществ, предоставляемых функцией, состоит в том, что она может быть выполнена столько раз, сколько необходимо, в различных местах основной программы.

В любой программе С/C++ должна быть функция с именем main (главная функция или основная программа), именно с этой функции начинается выполнение программы. Другая функция (подпрограмма) может иметь любое имя, не совпадающее с ключевыми словами. После имени записываются формальные аргументы. Если надо передать результат из функции в основную программу, то завершается подпрограмма оператором return.

Чтобы обратиться к функции в основной программе записывается имя функции и фактические аргументы, которые должны соответствовать формальным по типу. При вызове функции управление передается первому оператору тела функции, и начинается выполнение функции, которое продолжается до тех пор, пока не встретится оператор return или последний оператор функции. Управление возвращается в точку основной программы, следующей за точкой вызова.

Задание Краткие теоретические сведения  
1. Изучить способы организации работы с функциями, выполнив программы, записанные в правой части. Опробовать работу программы, содержащей функцию, с разными паролями. Пример программы, в которой происходит проверка пароля (например, qwerty123)в двух вариантах: без использования функции и с использованием функции check_pass. Функция может быть записана как до основной программы, так и после. В последнем случае вызов функции следует предварять объявлением (прототипом) этой функции. В том варианте программы, который содержит функцию, int main() -основная программа, а void check_pass (string password)- функция. Передint main()записан прототип, так как функция расположена после основной программы. Поскольку в данном примере возвращать результат из функции не нужно, она не содержит оператора return.
include < iostream> #include < string> using namespace std; int main() { setlocale (LC_CTYPE, " Russian"); string valid_pass = " qwerty123"; string user_pass; cout < < " Введите пароль: "; getline(cin, user_pass); if (user_pass == valid_pass) { cout < < " Доступ разрешен" < < endl; } else { cout < < " Неверный пароль! " < < endl; } return 0; } #include < iostream> #include < string> using namespace std; void check_pass (string password); int main() { setlocale (LC_CTYPE, " Russian"); string user_pass; cout < < " Введите пароль: "; getline (cin, user_pass); check_pass (user_pass); return 0; } void check_pass (string password) { string valid_pass = " qwerty123"; if (password == valid_pass) { cout< < " Доступ разрешен" < < endl; } else { cout< < " Неверный пароль" < < endl; } }
2. Изучить использование рекурсий на примере программы, записанной в правой части.   Любая функция в программе может быть вызвана рекурсивно, т.е. она может вызывать саму себя. Пример программы, в которой вычисляется степень числа xn с использованием простой рекурсии для функции power.
3. Выполнить программы, записанные в правой части и изучить использование указателей как формальных параметров функции.   Если внутри функции изменить фактический параметр, переданный из основной программы в функцию, то это изменение в основной программе не будет отражено. Например, пусть надо вычислить несколько значений s = 1! / x + 2! / x +…+ n! / x для x = -2(0.5)0, при этом надо заменить значение х = 0на х = 1. В представленной программе значение s вычисляется с использованием функции ff. В основной программе осуществляется ввод данных, обращение к функции и вывод результатов.
#include < iostream> using namespace std; float ff (int n, float x) { int F =1; float s=0; for (int i = 1; i < = n; i++) { if (x== 0.0) { x=1; cout< < " x =" < < x < < endl; } F = F * i; s = s+F/x; } return s; } int main() { int n; cout< < " n="; cin> > n; float x=-2.0; do { cout< < " x =" < < x < < " s=" < < ff(n, x)< < endl; x=x+0.5; } while (x< =0.0); }   #include < iostream> using namespace std; float ff (int n, float *x) { int F =1; float s=0; for (int i = 1; i < = n; i++) { if (*x== 0.0) {*x=1; cout< < " x =" < < *x < < endl; } F = F * i; s = s+F/(*x); } return s; } int main() { int n; cout< < " n="; cin> > n; float x=-2.0; do { cout< < " x =" < < x < < " s=" < < ff(n, & x)< < endl; x=x+0.5; } while (x< =0.0); }

При выводе результатов видно, что хотя функция считает s при x = 1, в основной программе по-прежнему х = 0.

Чтобы эту ошибку исправить, надо формальный параметр х определить как указатель. Тогда фактический параметр х должен быть явно передан в виде указателя с использованием операции &;.

4. Выполнить программы, записанные в правой части. Программа вычисления интеграла демонстрирует использование указателя на функцию, который используется для передачи функции f в качестве формального параметра функции integ.  
Программа вычисления корня уравнения exp(x) - 2 - x = 0методом дихотомии. Программа вычисления интеграла методом правых прямоугольников
#include < iostream> #include < math.h> #define EPS 1e-10 double f (double x) { return exp(x) - 2 - x; } int main() { double l = 0, r = 2, c; while(r - l > EPS) { c = (l + r) / 2; if(f(c) * f(r) < 0) l = c; else r = c; } std:: cout< < c; } #include < iostream> float integ(float (*) (float), float, float, float); float f(float); //прототипы int main() { float z; z = integ(f, (float)0.0, (float)10.0, (float)0.01); std:: cout < < " Integral=" < < z; } float integ (float (*f) (float), float a, float b, float h) { float x, s = 0.0; x = a + h/2.0; while (x < = b) { s += h*f(x); x = x+h; } return s; } float f (float x) { return (2*x+5); }

5. В соответствии со своим вариантом написать программу решения уравнения из лабораторной работы № 9 методом касательных с использованием функций.

6. Вычислить интеграл из лабораторной работы № 9 в соответствии со своим вариантом для n = 30 методом трапеций. Вычисление значения функции оформить в виде функции, вычисление интеграла – в виде функции. Использовать при этом указатель на функцию. Результат представить в виде таблицы (s, t – параметры, int – значение интеграла, k_iter – количество пересчетов значений интеграла для заданной точности):

 

s =... t =... int =... k_iter =...

 

 

 

 

В начало практикума


 







Дата добавления: 2014-11-10; просмотров: 940. Нарушение авторских прав; Мы поможем в написании вашей работы!




Обзор компонентов Multisim Компоненты – это основа любой схемы, это все элементы, из которых она состоит. Multisim оперирует с двумя категориями...


Композиция из абстрактных геометрических фигур Данная композиция состоит из линий, штриховки, абстрактных геометрических форм...


Важнейшие способы обработки и анализа рядов динамики Не во всех случаях эмпирические данные рядов динамики позволяют определить тенденцию изменения явления во времени...


ТЕОРЕТИЧЕСКАЯ МЕХАНИКА Статика является частью теоретической механики, изучающей условия, при ко­торых тело находится под действием заданной системы сил...

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

Основные структурные физиотерапевтические подразделения Физиотерапевтическое подразделение является одним из структурных подразделений лечебно-профилактического учреждения, которое предназначено для оказания физиотерапевтической помощи...

Почему важны муниципальные выборы? Туристическая фирма оставляет за собой право, в случае причин непреодолимого характера, вносить некоторые изменения в программу тура без уменьшения общего объема и качества услуг, в том числе предоставлять замену отеля на равнозначный...

ЛЕКАРСТВЕННЫЕ ФОРМЫ ДЛЯ ИНЪЕКЦИЙ К лекарственным формам для инъекций относятся водные, спиртовые и масляные растворы, суспензии, эмульсии, ново­галеновые препараты, жидкие органопрепараты и жидкие экс­тракты, а также порошки и таблетки для имплантации...

Тема 5. Организационная структура управления гостиницей 1. Виды организационно – управленческих структур. 2. Организационно – управленческая структура современного ТГК...

Методы прогнозирования национальной экономики, их особенности, классификация В настоящее время по оценке специалистов насчитывается свыше 150 различных методов прогнозирования, но на практике, в качестве основных используется около 20 методов...

Studopedia.info - Студопедия - 2014-2025 год . (0.01 сек.) русская версия | украинская версия