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

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

Лабораторная работа № 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 оперирует с двумя категориями...


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


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


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

Характерные черты официально-делового стиля Наиболее характерными чертами официально-делового стиля являются: • лаконичность...

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

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

Опухоли яичников в детском и подростковом возрасте Опухоли яичников занимают первое место в структуре опухолей половой системы у девочек и встречаются в возрасте 10 – 16 лет и в период полового созревания...

Способы тактических действий при проведении специальных операций Специальные операции проводятся с применением следующих основных тактических способов действий: охрана...

Искусство подбора персонала. Как оценить человека за час Искусство подбора персонала. Как оценить человека за час...

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