---LESSON_INFO--- **Learning Objectives:** - Memahami konsep variabel dan fungsi static dalam bahasa C - Belajar menggunakan kata kunci static dalam berbagai konteks - Mengenal perbedaan antara static dan variabel global - Memahami aplikasi static dalam program **Prerequisites:** - Pemahaman tentang variabel dan fungsi - Pemahaman dasar tentang scope variabel ---END_LESSON_INFO--- # Static dalam C `static` adalah kata kunci dalam bahasa pemrograman C. Ini bisa digunakan dengan variabel dan fungsi. ## Apa itu variabel static? Secara default, variabel adalah lokal terhadap cakupan di mana mereka didefinisikan. Variabel bisa dideklarasikan sebagai static untuk meningkatkan cakupan mereka hingga file yang berisi mereka. Akibatnya, variabel-variabel ini bisa diakses di mana saja di dalam file. Pertimbangkan skenario berikut - di mana kita ingin menghitung pelari yang berpartisipasi dalam sebuah lomba: ```c #include int runner() { int count = 0; count++; return count; } int main() { printf("%d ", runner()); printf("%d ", runner()); return 0; } ``` Kita akan melihat bahwa `count` tidak diperbarui karena itu dihapus dari memori segera setelah fungsi selesai. Namun, jika `static` digunakan, kita mendapatkan hasil yang diinginkan: ```c #include int runner() { static int count = 0; count++; return count; } int main() { printf("%d ", runner()); printf("%d ", runner()); return 0; } ``` ## Apa itu fungsi static? Secara default, fungsi-fungsi adalah global dalam C. Jika kita deklarasikan fungsi dengan `static`, cakupan fungsi tersebut dikurangi ke file yang berisi fungsi tersebut. Sintaksnya seperti ini: ```c static void fun(void) { printf("Saya adalah fungsi static."); } ``` ## Static vs Global? Sementara variabel static memiliki cakupan di file yang berisi mereka sehingga hanya bisa diakses di dalam file tertentu, variabel global bisa diakses di luar file juga. --- ## Tabel Penggunaan Static dalam C | Konteks | Deskripsi | Contoh | |---------|-----------|--------| | Variabel lokal | Variabel yang mempertahankan nilai antar pemanggilan fungsi | `static int count = 0;` | | Variabel global | Variabel yang hanya bisa diakses dalam file yang sama | `static int global_var;` | | Fungsi | Fungsi yang hanya bisa diakses dalam file yang sama | `static void myfunc();` | ---EXERCISE--- # Latihan: Menggunakan Static untuk Menjumlahkan Angka Dalam latihan ini, cobalah untuk menemukan jumlah beberapa angka dengan menggunakan kata kunci static. Jangan melewatkan variabel apapun yang mewakili total berjalan ke fungsi `sum()`. **Requirements:** - Gunakan variabel static dalam fungsi sum - Fungsi harus mengingat total sebelumnya - Jangan lewatkan variabel total sebagai parameter **Expected Output:** ``` 55 100 150 ``` Try writing your solution in the code editor below! ---KEY_TEXT--- static int total total += num return total ---END_KEY_TEXT--- ---EXPECTED_OUTPUT--- 55 100 150 ---END_EXPECTED_OUTPUT--- ---INITIAL_CODE--- #include int sum (int num) { /** * hitung jumlah ke n angka */ } int main() { printf("%d ",sum(55)); printf("%d ",sum(45)); printf("%d ",sum(50)); return 0; } ---END_INITIAL_CODE--- ---SOLUTION_CODE--- #include int sum (int num) { static int total = 0; total += num; return total; } int main() { printf("%d ",sum(55)); printf("%d ",sum(45)); printf("%d ",sum(50)); return 0; } ---END_SOLUTION_CODE---