C – мінімалістична мова. Він надає лише базові засоби програмування. У вас є змінні, цикли та управління потоком виконання. Ось і все. Якщо вам потрібно читати введення з клавіатури або виводити дані на екран, у C немає вбудованих для цього функцій. Вам доводиться писати їх самостійно або використати бібліотеки.
Саме тому бібліотеки в C такі важливі. Це фрагменти коду, які програмісти виділяють зі своїх проектів, щоб зробити їх перевикористовуваними. Швидше за все, ви вже використовували стандартну бібліотеку вводу-виводу, або stdio, не замислюючись про це. Але окрім неї існують бібліотеки для роботи з математикою, рядками та часом. Ви також можете створювати власні.
Поділ коду на модулі спрощує його тестування, налагодження та розуміння. Це також дозволяє перевикористовувати логіку у різних програмах. Давайте подивимося, як взяти монолітний скрипт і перетворити частину його коду на функцію, що переноситься.
Вилучення логіки з моноліту
Розглянемо наступну програму на C. Вона заповнює масив випадковими числами, сортує його за допомогою алгоритму бульбашкового сортування та виводить результати.
`
Логіка сортування тут прихована всередині main. Щоб зробити її перевикористовуваною, нам потрібно отримати пухирцеве сортування.
Створення базової функції
У цьому прикладі масив a та константа MAX є глобальними. Це означає, що функція сортування не обов’язково потребує параметрів доступу до них. Однак хороші практики програмування диктують використання локальних змінних для лічильників циклів (x, y, t ), щоб зробити функцію самодостатньою.
Ось відрефакторний код. Ми ізолювали логіку сортування на функцію bubble_sort.
`
Ви передаєте кількість елементів в bubble_sort замість жорстко заданого MAX. Це працює. Але код все ще прив’язаний до глобального масиву a.
Узагальнення для істинної перевикористання
Функція є по-справжньому перевикористовуваною лише у разі, якщо вона залежить від глобального стану. Ми можемо ще більше узагальнити bubble_sort, передаючи сам масив як параметр.
Змініть сигнатуру функції на:
`
Це вказує компілятор приймати масив цілих чисел будь-якого розміру. Тіло функції bubble_sort не змінюється. Вам потрібно лише оновити виклик у main :
`
Зверніть увагу, що ми не використовуємо &a у виклику функції. Можливо, ви очікуєте передати адресу, оскільки сортування змінює масив, але C масиви перетворюються в покажчики при


































