
- •Мова програмування с Навчальний посібник
- •І. Теоретична частина Структура програми на мові с
- •Базові типи даних
- •I для опису цілих чисел без дробової частини nt
- •1. Char – символ
- •3. Float – число з плаваючою крапкою одинарної точності
- •4. Double – число з плаваючою крапкою подвійної точності
- •Арифметичні операції
- •Функції введення scanf() та виведення printf()
- •Оператори
- •Функції користувача
- •Функції із змінним числом аргументів
- •Функції стандартних бібліотек Функції для роботи із символами (ctype.H)
- •Функції для роботи з каталогами (dir.H)
- •Функції для роботи з ос (dos.H)
- •Функції для роботи з графічним режимом (graphics.H)
- •Математичні функції (math.H)
- •Функції для роботи з рядками (string.H)
- •Функції потокового вводу/виводу (stdio.H)
- •Функції вводу/виводу нижнього рівня (io.H)
- •Функції вводу/виводу консолі та порту (conio.H)
- •Структури
- •Об'єднання
- •Динамічний розподіл пам’яті
- •Іі. Практична частина Лабораторна робота №1 Тема: Основні конструкції мови с. Програмування простих алгоритмів
- •Лабораторна робота №2 Тема: Створення і використання функцій
- •Лабораторна робота №3 Тема: Використання структур
- •Лабораторна робота №4 Тема: Організація роботи з файлами
- •Рекомендована література
Функції користувача
Виконання програми завжди починається з команд, які містяться у функції main(). Функція main() може викликати інші функції, наприклад, printf() або функції, які написані програмістом.
Функція – це самостійна одиниця програми, яка спрямована для реалізації конкретної задачі. Функції в мові С відіграють ту ж саму роль, що і підпрограми та процедури в інших мовах.
У функцію можна передати один або декілька параметрів та повернути основній програмі значення функції (оператор return). Змінні в функції є її внутрішніми змінними, і вони “не відомі” в функції, яка викликає дану функцію. Так само змінні функції, що викликає іншу, не відомі в функції, яка викликається. Тому для зв’язку між викликаною функцією і функцією, яка викликається використовуються аргументи (параметри) і оператор return.
Приклад:
/* Функція, яка обчислює модуль числа */
float abs(x)
float x;
{
float y;
if (x<0) y =-x;
else y=x;
return y;
}
main()
{
float a=10, b=0, c=-2.2;
float d, e, f;
d = abs (a); e = abs (b); f = abs (c);
printf (“%f, %f, %f\n”, d, e, f);
return 0;
}
Тип функції визначається типом значення, яке вона повертає, а не типом її аргументів. Якщо опис типу функції відсутній, то за замовчуванням вважається, що функція має тип int, тобто повертає ціле значення. Якщо значення функції не належить типу int, то необхідно вказати її тип двічі. Перший раз – там, де вона попередньо визначається (прототип функції), а другий раз – там, де описується її тіло.
Приклад:
/*Функція підрахунку квадрату числа. */
double square(); /* прототип функції */
void main ()
{
float a=1.5;
printf (“%f \n”, square (a));
return;
}
double square(x). /* тіло функції */
double x;
{
return x*x;
}
Ключове слово void використовується, якщо немає параметрів або функція нічого не повертає (void fun(void);). Функція повертає тільки одне значення. Якщо треба повернути два або декілька значень, то це реалізується за допомогою вказівників.
Приклад:
/* Функція, яка обчислює частку і остачу від ділення */
int dl(); /* прототип функції */
main()
{
int a, del, ost, chast;
a=23; del=5;
chast = dl (a, del, & ost);
printf (“\n частка=%d, остача=%d\n”, chast, ost);
return 0;
}
int dl(x,y,z)
int x,y;
int *z;
{
*z=x%y;
return x/y;
}
Функції із змінним числом аргументів
Прикладами функцій із змінним числом аргументів є функції printf и scanf. В кожній з таких функцій має бути хоча б один формальний параметр. За останнім формальним параметром функції, які представлені в явному вигляді, має слідувати формальний параметр, записаний із допомогою символа ... (трикрапка).
Звернення до аргументів, представленим формальним параметром трикрапка, здійснюється за допомогою макровикликів va_arg.
В кожній реалізації мови в заголовочному файлі має знаходитись набір макровизначень va_arg, va_list, va_start та va_end. Їх призначення такі:
va_list – оголошує допоміжну змінну типу va_list;
va_start – зв’язує допоміжну змінну, оголошену за допомогою va_list, з формальним параметром, який передує формальному параметру (…);
va_arg – повертає дане, яке представлено черговим аргументом функції;
va_end – видаляє зв’язок змінної, зроблене макровизначенням va_start.
Приклад:
#include<stdio.h>
#include<stdarg.h>
main(void)
{
void Sum(int,…);
Sum(3,1,4,9);
return 0;
}
int Sum(int Count,…)
{
va_list Text;
va_start(Text,Count);
int Res=0;
while(Count--)
Res+=va_arg(Text,int);
va_end(Text);
}
Перший аргумент функції Sum визначає число аргументів, які слідують безпосередньо за ним.
Послідовні виклики макровизначенння va_arg повертають аргументи 1, 4, 9.
Виконання програми веде до виводу числа 14.