МАРК РЕГНЕРУС ДОСЛІДЖЕННЯ: Наскільки відрізняються діти, які виросли в одностатевих союзах
РЕЗОЛЮЦІЯ: Громадського обговорення навчальної програми статевого виховання ЧОМУ ФОНД ОЛЕНИ ПІНЧУК І МОЗ УКРАЇНИ ПРОПАГУЮТЬ "СЕКСУАЛЬНІ УРОКИ" ЕКЗИСТЕНЦІЙНО-ПСИХОЛОГІЧНІ ОСНОВИ ПОРУШЕННЯ СТАТЕВОЇ ІДЕНТИЧНОСТІ ПІДЛІТКІВ Батьківський, громадянський рух в Україні закликає МОН зупинити тотальну сексуалізацію дітей і підлітків Відкрите звернення Міністру освіти й науки України - Гриневич Лілії Михайлівні Представництво українського жіноцтва в ООН: низький рівень культури спілкування в соціальних мережах Гендерна антидискримінаційна експертиза може зробити нас моральними рабами ЛІВИЙ МАРКСИЗМ У НОВИХ ПІДРУЧНИКАХ ДЛЯ ШКОЛЯРІВ ВІДКРИТА ЗАЯВА на підтримку позиції Ганни Турчинової та права кожної людини на свободу думки, світогляду та вираження поглядів
Контакти
Тлумачний словник Авто Автоматизація Архітектура Астрономія Аудит Біологія Будівництво Бухгалтерія Винахідництво Виробництво Військова справа Генетика Географія Геологія Господарство Держава Дім Екологія Економетрика Економіка Електроніка Журналістика та ЗМІ Зв'язок Іноземні мови Інформатика Історія Комп'ютери Креслення Кулінарія Культура Лексикологія Література Логіка Маркетинг Математика Машинобудування Медицина Менеджмент Метали і Зварювання Механіка Мистецтво Музика Населення Освіта Охорона безпеки життя Охорона Праці Педагогіка Політика Право Програмування Промисловість Психологія Радіо Регилия Соціологія Спорт Стандартизація Технології Торгівля Туризм Фізика Фізіологія Філософія Фінанси Хімія Юриспунденкция |
|
|||||||
Використання функції як параметра значень
Іноді доводиться як формальні аргументи (параметрів) функції використати інші функції. Така ситуація виникає, якщо в деякій функції при звертанні до неї, треба викликати іншу функцію. Параметр - функція записується у вигляді прототипу, тобто вказується тип функції, її ім'я й у дужках перелік типів формальних аргументів, або типів і імен формальних аргументів. Приклад Скласти програму c використанням функції обчислення інтегралів метoдом трапецій (точність обчислення е =10-3 ). // P5_4.CPP - обчислення інтеграла методом трапеції // використання функції як параметра значення #include <iostream .h> #include <math.h> const float e =1 e-3; float fn1 (float x ) // підінтегральна функція 1-го інтеграла { return sgrt (1 +log (x)); } float fn2 ( float x ) // підінтегральна функція 2-го інтеграла { return log (1 +pow (x,2)) / (1+pow (x,2)); } float ft (int n, float a ,float b , float fun( float )) // функція методу трапецій { int i; float s1 ,h, s=0; do { s1 =s; h = (b -a ) /n; s = ( fun (a) +fun (b) ) / 2; for ( i = 1; i <= n-1; i++) s += fun ( a + i *h ); s *= h; n *= 2; } while ( fabs ( s-s1 ) > e ); return s; } main ( ) { float y; y = ft ( 20 , 2 , 2, 3.0, fn1 ) +ft ( 20, 0, 1.0, fn2 ); cout << "y=" << y << endl; } Результат виконання програми : y = 1.29012
Звертання до функції й передача результату Для звертання до функції досить написати її ім'я й у дужках записати значення або перелік фактичних аргументів. Фактичні аргументи повинні бути записані в тій же послідовності, що й формальні й мати відповідний тип (крім аргументів за замовчуванням і перевантаженими функціями). Якщо формальними аргументами функції є параметри значення й у ній не використаються глобальні змінні, то функція може передати в зухвалу програму лише одне значення, що записується в операторі return . Це значення передається в крапку виклику функції. Фрагмент програми , що підтверджує вищевикладене може мати вигляд :
double sgr (double); main( ) { cout << "Квадрат числа=" << sgr ( 10 ) << endl; } double sqr (double p) // Повернення за значенням { return p*p; }
У результаті буде виведено: Квадрат числа = 100. Використовуючи оператор return можна також організувати достроковий вихід з функції. Якщо з функції треба передати не одне, а кілька значень, то можна або використати глобальні змінні, або масиви. Ім'я функції ¾ це константа - покажчик на функцію, що вказує на адресу крапки входу (адреса першої машинної команди) функції. Слід зазначити, що можливо також опис і покажчиків змінних на функції. Для цього використається операція розкриття "*", функції описані в такий спосіб повинні повертати покажчик на тип, тобто його адреса. У С++ визначено кілька способів передачі й повернення результату обчислень, найбільше широко використовуваними є розглянуті раніше: виклик функції з передачею параметрів за допомогою формальних аргументів - значень; виклик функції з передачею адрес за допомогою параметрів - покажчиків; виклик функцій з використанням посилань, коли доступ до переданих параметрів забезпечується за допомогою альтернативного імені (синоніма); виклик функцій з передачею даних за допомогою глобальних змінних, наприклад: #include < iostream.h > int a, b, c; sum ( ) main ( ) { cin >> a >> b; sum (); cout << c << endl; } sum( ) { c = a + b ; } виклик функцій з використанням параметрів, заданих по умолча-нию, при цьому можна використати або всі аргументи, або їхня частина. При виклику функції, у якої аргументи задані "за замовчуванням", дотримується таке правило : якщо який - або аргумент використається за замовчуванням, те й всі наступні аргументи повинні бути використані зі значеннями за замовчуванням. Приклад Обчислити квадратну функцію загального виду для заданого значення аргументу x з використанням функції, у яку коефіцієнти a, b і c можуть бути уведені за замовчуванням. // P5_5.CPP ( обчислення квадратної функції // коефіцієнти квадратної залежності можуть // уводитися у функцію "за замовчуванням" #include < iostreаm.h > float ur ( float x, float а=0., floatb b =0.,float c=0.); int main ( ) { float а =1., b = 2., c = 3., x = 0.5, y; cout << " Уведені всі аргументи " << endl; y = ur ( x, a, b, c); cout << " y = "<< y << endl; cout << " Уведені аргументи x, a, b " << endl; y =ur ( x, a, b); cout << " y = "<< y << endl; cout << " Уведений аргумент x " << endl; y =ur ( x ); cout << " y = "<< y << endl; } // Функція обчислення квадратної функції float ur ( float x, float a, float b, float c ); { return a * x * x + b * x + c; }
Результати виконання програми: Уведено всі аргументи y = 4.25 Уведені x, a і b y = 1.25 Уведено аргумент x y = 0 У мові C++ можна використати так називане перевантаження функцій, тобто можливість визначати функції з тим самим ім'ям, але різним типом і кількістю формальних параметрів. Список формальних аргументів називають сигнатурою функції. Основне достоїнство перевантажених функцій, це можливість визначати кілька функцій з тим самим ім'ям, але з різними типами й числом параметрів. Приклад Зробити програмну реалізацію з використанням перевантаження функцій. #include <iostream .h> #include <string.h> int funp (int x) // 1. { return x*x; } int funp (unsigned x) // 2. { return -x*x; } char funp (char x) // 3. { return x+3; } int funp (int x, char *y) // 4. { return x*strlen ( y); } int funp (int x , char y) // 5. { return x*y; } float funp (float r) // 6. { return r*r; } float funp (double r) // 7. { return r+r; }
main ( ) { cout << funp(5) << endl ; // Буде 25 cout << funp ((unsigned)10) << endl ; // Буде 100 cout << funp ( 'a') << endl ; // Буде d cout << funp (4,"abc") << endl ; // Буде 12 cout << funp ( 4 , 'a') << endl ; // Буде 388 cout << funp( (float5) 1.2)<< endl ; // Буде 1.44 cout << funp( double) 4.5) << endl ; // Буде 9 return 0; } У заголовку функції завжди вказується тип її імені, а в самій підпрограмі цьому імені повинне бути привласнене значення, що повертається в головну програму замість звертання до функції.
Читайте також:
|
||||||||
|