sinau-c/content/static.md

140 lines
3.4 KiB
Markdown

---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 <stdio.h>
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 <stdio.h>
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 <stdio.h>
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 <stdio.h>
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---