Last Updated on 14 years by Mas Herdi
Keadaan semakin memanas kawan, kali ini kita diharuskan untuk bisa menampilkan sejumlah n bilangan Fibonacci, tapi jangan takut kami di TWOH Engineering selalu punya solusi untuk mengatasi semua masalah. 🙂
Saya hampir lupa dengan pelajaran Pemrograman Komputer yang sudah saya pelajari di Semester satu. Siklus program hanya mulai dari menerima input, memproses input, menampilkan output, dan final state atau kondisi akhir. Contohnya, pada kasus ini kita akan menerima inputan berupa sebuah angka, katakanlah 8, maka output yang akan dikeluarkan adalah:
1 1 2 3 5 8 13
Tepat 8 deret bilangan Fibonacci.
Seperti biasa, inilah kodenya, simpan dengan file apapunitu.asm
.data teks1:.asciiz "Masukkan nilai : " teks2:.asciiz " " .text .globl main main : la $a0, teks1 #load teks1 ke a0 li $v0, 4 #isi v0 dengan 4 syscall #print String li $v0, 5 #isi v0 dengan 5 syscall #baca integer move $t0, $v0 #pindahkan integer yang dibaca ke t0 li $t1, 1 #load immediate, t1 dengan 1 li $t2, 1 #load immediate, t2 dengan 1 li $t3, 2 #load immediate t3 dengan 2 move $a0, $t1 #pindahkan t1 ke a0 li $v0, 1 #isi v0 dengan 1 syscall #cetak t1/angka 1 la $a0, teks2 #load teks2 ke a0 li $v0, 4 #isi v0 dengan 4 syscall #cetak teks2 beq $t0, $t3, dua #cek apakan t0 == t3(2), jump ke dua slt $t4, $t3, $t0 #jika t3 kurang dari t0, t4 diisi 1 beq $t4, $zero, elsef #jika t4 isinya 0, jump ke elsef move $a0, $t1 #pindahkan t1 ke a0 li $v0, 1 #isi v0 dengan 1 syscall #cetak t1/angka 1 la $a0, teks2 #pindahkan teks2 ke a0 li $v0, 4 #isi v0 dengan 4 syscall #cetak teks2 addi $t5, $zero, 1 #add immediate, t5 = t5 + 1 sub $t3, $t3, 1 #pengurangan, t3 = t3 - 1 sub $t6, $t0, $t3 #pengurangan, t6 = t0 – t3 predicate : slt $t7, $t5, $t6 #jika t5 < t6, t7 berisi satu beq $t7, $zero, endfor #jika t7 == 0, jump ke endfor add $t3, $t1, $t2 #tambahkan, t3 = t1 + t2 move $t1, $t2 #assign t1 = t2 move $t2, $t3 #assign t2 = t3 move $a0, $t3 #pindahkan t3 ke a0 li $v0,1 #isi v0 dengan 1 syscall #cetak integer t3 la $a0, teks2 #isi a0 dengan teks2 li $v0, 4 #isi v0 dengan 4 syscall #cetak string teks2 addi $t5, $t5, 1 #add immediate t5 = t5 + 1 j predicate #lompat ke predicate<loop> dua: move $a0, $t1 #pindahkan t1 ke a0 li $v0, 1 #load immediate v0 dengan 1 syscall #cetak integer t1 j exit #jump ke exit elsef : endfor : j exit #jump ke exit exit : jr$ra #jump dan return ke return addr.
Wow, dan kita punya saingan! Inilah apapunitu.java (maksudku : Fibonacci.java)
import static java.lang.System.out; import java.util.Scanner; class Fibonacci{ public static void main(String... args) { Scanner s = new Scanner(System.in); int a = 0; int temp = 0; int b = 0; int c = 0; out.println("Masukkan angka"); c = s.nextInt(); a = 1; b = 1; out.print(a + " "); if (c == 2) { out.print(a); } else if (c > 2) { out.print(b + " "); for(int i = 1; i <= c-2; i ++) { temp = a + b; a = b; b = temp; out.print(temp + " "); } } } }