Code Snippets
Program AHA! siap jalan — faktorial, Fibonacci, uji keprimaan, dan tabel perkalian
Code Snippets
Sekumpulan program AHA! yang lengkap dan dapat dijalankan. Setiap snippet hanya menggunakan fitur yang ada saat ini — simpan salah satunya ke berkas .aha dan jalankan dengan cargo run --release -- --file <name>.aha.
Faktorial
Rekursi dengan ekspresi if/else:
fn factorial(n) {
if n <= 1 {
1
} else {
n * factorial(n - 1)
}
}
print(factorial(5)); // 120Fibonacci
Fibonacci iteratif dengan perulangan while dan penugasan ulang:
fn fib(n) {
let a = 0;
let b = 1;
let i = 0;
while i < n {
let next = a + b;
a = b;
b = next;
i = i + 1;
}
a
}
print(fib(10)); // 55Uji Keprimaan
Perbandingan mengembalikan Int 0/1, sehingga hasil pemeriksaan menyatu langsung ke alur kontrol:
fn is_prime(n) {
if n < 2 {
return 0;
}
let i = 2;
while i * i <= n {
if n % i == 0 {
return 0;
}
i = i + 1;
}
1
}
print(is_prime(7)); // 1
print(is_prime(12)); // 0Tabel Perkalian
Perulangan for bersarang pada rentang bilangan bulat:
fn table(size) {
for row 1..size {
for col 1..size {
print(row * col);
}
}
0
}
table(4);Menjumlahkan Array
Array berpasangan secara alami dengan perulangan for berentang:
let data = [4, 8, 15, 16, 23, 42];
let sum = 0;
for i in 0..6 {
sum = sum + data[i];
}
print(sum); // 108Menghitung dengan Rekursi Timbal Balik
Fungsi dapat saling memanggil tanpa memandang urutan deklarasi:
fn is_even(n) {
n % 2 == 0
}
fn is_odd(n) {
if is_even(n) { 0 } else { 1 }
}
let odds = 0;
for i in 0..10 {
if is_odd(i) {
odds = odds + 1;
}
}
print(odds); // 5Membangun String
Konkatenasi mengembalikan string baru; len() bersifat O(1):
fn greet(name) {
"Hello, " + name + "!"
}
let msg = greet("world");
print_str(msg); // Hello, world!
print(len(msg)); // 13Ingin referensi bahasa di balik ini? Lihat Language Tour dan Functions.