С, С++

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

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

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

Рік:
2011
Тип роботи:
Лабораторна робота
Предмет:
Алгоритмічні мови та програмування

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

МІНІСТЕРСТВО ОСВІТИ І НАУКИ, МОЛОДІ ТА СПОРТУ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА» Кафедра САПР Звіт до лабораторної роботи №7 на тему «ПІДПРОГРАМИ (ФУНКЦІЇ) В МОВІ ПРОГРАМУВАННЯ С» з курсу «Проблемно-орієнтовані мови програмування» ЛЬВІВ 2011 Мета роботи Ознайомитися із особливостями застосування функцій у алгоритмічній мові С. Теоретичні відомості Підпрограми (функції) Дуже часто виникає потреба у виконанні тої ж самої послідовності дій на різних етапах обробки інформації. В алгоритмах такого роду у різних місцях зустрічаються однакові за діями фрагменти, які відрізняються лише значеннями вхідних даних. Для підвищення ефективності програмування введено поняття підпрограми, або функції. Загальний вигляд функції Загальний вигляд функції такий: тип ім’я_функції( список параметрів ) { тіло функції } Тип визначає тип значення, яке поверне функція використовуючи оператор return. Якщо тип не визначений, то функція поверне значення типу integer по замовчуванню. Список параметрів являє собою список, розділених попарно комами, типів та імен змінних, значення яких отримує в якості аргументів функція при виклику. У випадку, коли функція не має аргументів, список параметрів є порожнім, але дужки не опускаються. Для прикладу наведено правильний опис функції f: f( int x, int y, float z ) та опис, що є невірним, через int x,y: f( int x, y, float z ) Отже, кожна змінна у списку параметрів разом із своїм типом має бути відокремлена комою від інших. Вихід з функції Існують два шляхи завершення виконання функції і повернення у програму, яка здійснила виклик. Перший шлях - послідовне проходження всього тіла функції, наприклад, функція, що друкує значення х: void simple( int x ) { printf( “%d”, x ); } Другий шлях - завершення виконання функції з використанням оператора return. Наступна функція завершує виконання, якщо значення змінної х рівне нулю або досягнуто кінець функції. Оператор return викликає завершення функції, хоча вона не виконалася до кінця (якщо х = 0). void divide( float x, float y ) { float z; if (x == 0) return; /* не можна ділити на нуль*/ z = x / y; printf( “Результат : %f”, z ); } Повернення значення Для повернення значення з функції використовується оператор return із вказаною змінною, значення якої повертається. Наприклад: max( int a, int b ) { int temp; if (a > b) temp = a; else temp = b; return temp; } Зауважте, що функція повертає значення цілого типу, який по замовчуванню назначається функції, для якої явно не визначено жодного типу, тобто перед іменем функції в описі не вказано тип. Дозволяється використовувати більше одного оператора return. Це спрощує розуміння алгоритму. Наприклад, попередня функція max() може бути написана так: max( int a, int b ) { if (a > b) return a; else return b; } Функції, які повертають значення можна використовувати так, як показано у прикладі: if ( max(x, y) > 20) printf( “Більше” ); Але функції не можна присвоювати значень: max(x, y) = 20; Часто виникать питання, чи потрібно оголошувати змінну для того, щоб повернути значення з функції. Відповідь - ні. Розглянемо приклад: #include <stdio.h> main() { int x, y; x = 10; y = 20; printf(“%d”, mul(x, y)); } mul(int a, int b) { return( a*b ); } Рекурсія У С функції можуть викликати самі себе. Функція називається рекурсивною, якщо вираз в тілі функції містить виклик самої функції. Для того, щоб алгоритмічна мова була би рекурсивною, потрібно, щоб функції мали можливість викликати самі себе. Класичний приклад рекурсії демонструє функція factr(), яка обчислює факторіал цілого числа. Факторіал числа N є добутком всіх цілих чисел між 1 та N. Обидва варіанти цієї функції - рекурсивний та ітеративний наведені нижче: factr( int n) /*рекурсивна*/ { int ans; if (n == 1) return 1; ans = factr(n-1)*n; return(ans); } factr( int n) /*не рекурсивна*/ { int t, ans; ans = 1; for( t = 1; t <= n ; t++) ans = ans*t; return (ans); } Робота нерекурсивної версії функції factr() легка в розумінні, а рекурсивної - більш складна. Коли factr() викликається з аргументом 1, функція повертає 1; в іншому випадку вона повертає добуток factr(n-1)*n. Для обчислення цього виразу factr() викликається з виразом n-1. Це повторюється до того часу , поки n не стане рівне 1. Коли ви пишите рекурсивну функцію, необхідно в її тілі забезпечити для нерекурсивного виходу з функції if вираз. Якщо цього не зробити, то після виклику функції вона ніколи не поверне значення. Ця помилка є найбільш поширеною при написанні рекурсивних функцій. Індивідуальне завдання Використовуючи формулу прямокутників:  де -крок;  - кількість інтервалів, обчислити приблизне значення інтеграла: . Текст програми #include <stdio.h> #include <math.h> float integral(float a,float b,float h,float x); int main() { float t1,t2,t3,t4,t5; t1=0; t2=3.14; printf("Vvedite h,x\n"); printf("h="); scanf("%f",&t3); printf("\nx="); scanf("%f",&t4); t5=integral(t1,t2,t3,t4); printf("Znachenie integrala= %.2f",t5); return(0); } float integral(float a,float b,float h,float x) { float n,s,d,f=0; s=0; n=(b-a)/h; int i; for (i=1;i<=n;i++) { d=sqrt(1+(cos(x)*cos(x))); f=f+d; } s=h*f; return(s); } Результати обчислень  Висновок: Я ознайомився із особливостями застосування функцій у алгоритмічній мові С.
Антиботан аватар за замовчуванням

29.05.2013 13:05-

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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