- •Міністерство освіти і науки, молоді та спорту України Технічний коледж національного університету водного господарства та природокористування Лабораторна робота № 10
- •10.1. Мета роботи
- •10.2. Теоретичні відомості
- •If(s[I]) return &s[I]; /* повертає адреса першого пробілу */
- •Int func(int a, float b, char* с);
- •Int func(int, float, char*);
- •Int *sqr(int *I) /* Прототип функції */
- •Int *sqr(int *I) /* Оголошення функції */
- •Int sqr(int *I) /* Прототип функції */
- •Void line_ (void); /* прототип функції /
- •Void line_(void)
- •Void f(void);
- •Void f(void)
- •10.3. Програма роботи
- •10.4. Контрольні питання Які типи циклів Ви можете назвати?
Міністерство освіти і науки, молоді та спорту України Технічний коледж національного університету водного господарства та природокористування Лабораторна робота № 10
з курсу “Основи програмування та програмного забезпечення”
Рівне 2012
Лабораторна робота № 10 “Програми з використанням нестандартних функцій та програм” з курсу “ Основи програмування та програмного забезпечення”
Упорядники: Пастушенко В.Й., Шатний С.В.
Робота 10. Програми з використанням нестандартних функцій і підпрограм.
10.1. Мета роботи
Навчитися оголошувати та викликати нестандартні функції та підпрограми в мові С.
10.2. Теоретичні відомості
Функції в мові С
Функції - це будівельні блоки мови С, самостійні одиниці програми, спроектовані для рішення конкретних задач, що звичайно повторюються декілька разів.
Оголошення функції
Основна форма опису (definition) функції має вигляд:
тип <ім'я функції>(список параметрів)
{
тіло функції
}
Тип функції визначає тип значення, що повертає функція за допомогою оператора return. Якщо тип не зазначений, то по умовчанню передбачається, що функція повертає ціле значення (типу int). Список параметрів складається з переліку типів і імен параметрів, розділених комами. Функція може не мати параметрів, але круглі дужки необхідні в будь-якому випадку.
У списку параметрів для кожного параметра повинний бути зазначений тип. Приклад правильного списку параметрів:
t(int х, int у, float z)
Приклад неправильного списку параметрів:
f(int x, у, float z)
Приведемо приклад функції, що реалізує зведення числа а в натуральний степінь b:
float step(float a, int b)
{
float i;
if(a<0) return (-1); /* основа негативна */ а=1;
for(i=b;i;i--) a*=a;
return a;
}
Ця функція повертає значення -1, якщо основа негативна, і аn - якщо основа невід’ємна.
Оператор return має два використання.
По-перше, цей оператор викликає негайний вихід із поточної функції і повернення в програму, що викликає.
По-друге, цей оператор може використовуватися для повернення значення функції.
Відразу слід зазначити, що в тілі функції може бути декілька операторів return, але може і не бути жодного. У цьому випадку повернення в програму , що викликає , відбувається після виконання останнього оператора тіла функції.
Інший приклад - функція для знаходження найбільшого з двох чисел:
max(int a, int b)
{
int m;
if(a>b) m=a;
else m=b;
return m;
}
Можливо також написати цю функцію без використання додаткової перемінної:
max(int a, int b)
{
if(a>b) return a;
else return b;
}
Можна ще коротше:
max(int a, int b)
{
if(a>b) return a;
return b;
}
А можна і так:
max(int a, int b)
{
return (a>b)? a: b;
}
Якщо функція повинна повертати значення, але не робить цього, компілятор видає попередження. Всі функції, що повертають значення, можуть використовуватися у виразах мови С, але вони не можуть використовуватися в лівій частині оператора присвоювання, за винятком тих випадків, що коли повертається значення покажчика.
Використання функцій, що повертають покажчики, має деякі особливості. Покажчики не є ні типом ціле (int), ні типом беззнакове ціле (unsigned int). Їхніми значеннями є адреси пам'яті даних визначеного типу. Відповідно повинна бути описана і функція. Розглянемо приклад опису функції, що повертає покажчик на тип char. Ця функція знаходить у рядку перший пробіл і повертає його адресу.
char* find(char* string)
{
int i=0;
while (siring[i] != ' ')&&(string[i] != '\0') i++;