C adalah bahasa minimalis. Ini memberi Anda dasar-dasar pemrograman. Anda mendapatkan variabel, loop, dan aliran kontrol. Hanya itu saja. Jika Anda ingin membaca dari keyboard atau mencetak ke layar, C tidak memiliki fungsi bawaan tersebut. Anda harus menulisnya atau menggunakan perpustakaan.
Inilah sebabnya mengapa perpustakaan di C sangat penting. Itu adalah potongan kode yang diekstraksi oleh pemrogram dari proyek mereka agar dapat digunakan kembali. Anda mungkin menggunakan perpustakaan I/O standar, atau stdio, tanpa memikirkannya. Namun lebih dari itu, ada perpustakaan untuk matematika, string, dan waktu. Anda dapat membangunnya sendiri.
Memisahkan kode Anda menjadi beberapa modul membuatnya lebih mudah untuk diuji, di-debug, dan dipahami. Ini juga memungkinkan Anda menggunakan kembali logika di berbagai program. Mari kita lihat cara mengambil skrip monolitik dan mengubahnya menjadi fungsi portabel.
Mengekstrak Logika dari Monolit
Pertimbangkan program C ini. Ini mengisi array dengan nomor acak, mengurutkannya menggunakan algoritma pengurutan gelembung, dan mencetak hasilnya.
Logika pengurutan di sini terkubur di dalam main. Agar ini dapat digunakan kembali, kita perlu mengekstrak bubble sort.
Membuat Fungsi Dasar
Array a dan konstanta MAX bersifat global dalam contoh ini. Artinya, fungsi pengurutan tidak memerlukan parameter untuk mengaksesnya. Namun, praktik yang baik mengharuskan penggunaan variabel lokal untuk penghitung loop (x, y, t ) untuk menjaga fungsi tetap mandiri.
Ini adalah kode yang difaktorkan ulang. Kami mengisolasi logika pengurutan ke dalam bubble_sort.
Anda meneruskan jumlah elemen ke bubble_sort alih-alih melakukan hardcoding MAX. Ini berhasil. Tapi itu masih terikat dengan array global a.
Generalisasi agar Dapat Digunakan Kembali
Suatu fungsi hanya dapat digunakan kembali jika tidak bergantung pada keadaan global. Kita dapat menggeneralisasi bubble_sort lebih jauh dengan meneruskan array itu sendiri sebagai parameter.
Ubah tanda tangan fungsi menjadi:
Ini memberitahu kompiler untuk menerima array integer dengan ukuran berapa pun. Isi bubble_sort tidak berubah. Anda cukup memperbarui panggilan di main :
Perhatikan bahwa kami tidak menggunakan &a dalam pemanggilan fungsi. Anda mungkin berharap untuk meneruskan alamat tersebut karena pengurutan mengubah array, tetapi di C, array meluruh menjadi pointer kapan

















