Rabu, Januari 18, 2012

Algoritma dan Program Pascal Mengubah Bilangan Desimal ke Deretan Bilangan Faktoradik

Melanjutkan pembahasan mengenai pengenalan Faktoradik, terbesit keinginan untuk membuat suatu program Pascal sederhana untuk mengubah suatu bilangan bulat desimal sebarang ke dalam suatu deretan bilangan faktoradik. Dengan input sebuah bilangan bulat desimal sebarang maka akan langsung didapat deretan bilangan faktoradiknya. Untuk lebih mudah pemahaman silakan download dulu program Pascal yang akan kita buat nanti di sini

Untuk membuat suatu program, lebih mudah jika dibuat dulu suatu algoritma atau pola pikirnya dalam bentuk sebuah flow chart (diagram alir) walaupun banyak orang yang bisa membuat suatu program tanpa harus membuat flow chartnya terlebih dahulu dan langsung menuliskan algoritmanya dalam sintaks bahasa pemrograman. Tapi ada juga yang aneh, ada juga orang yang lebih mudah menulis algoritma jika programnya sudah selesai dibuat (tapi untuk saat sekarang ini, tak usahlah dipikirkan orang yang aneh itu, hehe ^_^). Pada kesempatan kali ini, kita akan membuat algoritma dalam bentuk flow chart terlebih dahulu yang nantinya akan kita pindahkan ke dalam bahasa pemrograman Turbo Pascal.

Misalkan n adalah bilangan desimal yang akan diubah ke bilangan faktoradik, jika n adalah 0, maka kita akan langsung tulis bahwa bilangan faktoradik dari bilangan desimal 0 adalah 0, hal ini dilakukan agar kita tidak perlu membuat algoritma bahwa 0! = 0, sehingga dapat mempersingkat algoritma yang akan dibuat, sementara jika n > 1, maka akan kita lakukan suatu algoritma untuk menemukan deretan bilangan faktoradiknya, sampai di sini algoritmanya kira-kira seperti berikut:

var n:longint;

begin
write('ketikkan sebuah bilangan bulat! '); readln(n);
writeln('deretan bilangan faktoradik dari bilangan desimal ',n,' adalah: ');

if n=0 then
begin
write('0');
end else

begin
end
;

readln
end.


Jika program ini dijalankan hasilnya adalah seperti gambar berikut:

ketikkan sebuah bilangan bulat! 0
deretan bilangan faktoradik dari bilangan desimal 0 adalah:
0

Untuk n > 1, algoritma/pola pikir yang akan kita gunakan kira-kira seperti pada pembahasan berikut ini.
Pertama kita akan cari nilai dari 1!, jika nilai dari 1! masih belum besar dari nilai n, maka akan dilanjut mencari nilai 2!, jika nilai dari 2! masih belum besar dari nilai n, maka akan dilanjut mencari nilai dari 3!, dan begitu seterusnya jika nilai dari 3! masih belum besar dari nilai n, maka akan dilanjut mencari nilai dari 4!, 5!, 6!, ..., i! sampai nilai dari i! lebih besar dari nilai n. Untuk tahap ini algoritmanya kira-kira seperti berikut:


Inilah algoritma untuk n > 1, jika algoritma ini kita gabungkan dengan algoritma sebelumnya, maka algoritma kita sekarang berbentuk:

(jika gambarnya kekecilan silakan dizoom in untuk memperbesar)

Jika algoritma yang sekarang kita pindahkan ke dalam bahasa pemrograman Pascal, maka akan didapat sintaks sebagai berikut:

var n,i,a,b:longint;

begin
write('ketikkan sebuah bilangan bulat! '); readln(n);
writeln('deretan bilangan faktoradik dari bilangan desimal ',n,' adalah: ');

if n=0 then
begin
write('0');
end else

begin
repeat
i:=i+1;
a:=i; b:=i;
repeat
if a>1 then a:=a-1;
b:=b*a;
until a=1;
until b>n;
end;

readln
end.

Sampai tahap ini sudah didapat nilai i dimana i! > n, sementara kita membutuhkan nilai i dimana i! terbesar bernilai kecil dari n, maka tentu i yang dimaksud adalah i – 1 dari nilai i di mana i! > n. Contohnya seperti ini: misalkan kita ingin mencari deretan bilangan faktoradik dari 21, maka n adalah 21, kita akan cari nilai dari i, di mana i! terbesar bernilai kecil dari n untuk i = 1, 2, 3, ..., kita mulai dari 1! = 1 (memang kecil dari n, tapi belum merupakan i! terbesar yang kecil dari n), 2! = 2 (memang kecil dari n, tapi belum merupakan i! terbesar yang kecil dari n), 3! = 6 (merupakan i! terbesar yang kecil dari n, sebab 4! = 24 sudah besar dari n).
Ingat kembali algoritma untuk mengubah bilangan desimal ke dalam bentuk bilangan faktoradik, yaitu:
  1. Cari i! terbesar di mana i! < n
  2. Bagi n dengan i!, akan didapatkan hasil bagi d dan sisa bagi m
  3. d adalah angka bilangan faktoradik ke-1 dari kiri
  4. Ulangi dari langkah kedua dan ketiga, dengan m (sisa bagi) menggantikan n, dan i – 1 menggantikan i
  5. Algoritma selesai jika i sudah mencapai 0
Kita akan mengubah sedikit dari algoritma pada poin ke 5, pada algoritma aslinya poin ke 5 mengatakan “algoritma selesai jika i sudah mencapai 0”, karena kita tidak mencari nilai dari 0!, maka poin ke 5 dari algoritma aslinya ini kita ubah, yaitu “algoritma selesai jika i sudah mencapai 1”, tentu pada akhir deretan faktoradik kita akan menambahkan deretan 0 pada akhirnya, karena deretan faktoradik selalu diakhiri dengan 0, sehingga algoritma kita sekarang menjadi:
  1. Cari i! terbesar di mana i! < n
  2. Bagi n dengan i!, akan didapatkan hasil bagi d dan sisa bagi m
  3. d adalah angka bilangan faktoradik ke-1 dari kiri
  4. Ulangi dari langkah kedua dan ketiga, dengan m (sisa bagi) menggantikan n, dan i – 1 menggantikan i
  5. Algoritma selesai jika i sudah mencapai 1
  6. Tambahkan 0 pada akhir deretan bilangan faktoradik
Menyambung dari flow chart sebelumnya. Jika 6 poin algoritma ini kita buatkan dalam bentuk flow chart, maka bentuknya kira-kira seperti berikut ini:


Jika algoritma ini kita gabungkan lagi dengan algoritma sebelumnya, maka algoritma kita secara keseluruhan kira-kira berbentuk:

(jika gambarnya kekecilan, silakan dizoom in untuk memperbesar)

Jika algoritma di atas kita tulis dalam bahasa pemrograman Pascal, akan didapat sintaks seperti berikut:

Program Faktoradik;


var n,i,a,b,d,m:longint;

begin
write('ketik sebuah bilangan bulat! '); readln(n);
writeln('deretan bilangan faktoradik dari bilangan desimal ',n,' adalah:');

if n=0 then
begin
write('0');
end else

begin
repeat
i:=i+1;
a:=i; b:=i;
repeat
if a>1 then a:=a-1;
b:=b*a;
until a=1;
until b>n;

repeat
i:=i-1;
a:=i; b:=i;
repeat
if a>1 then a:=a-1;
b:=b*a;
until a=1;
d:=trunc(n/b); m:=n mod b;
write(d,', ');
n:=m;
until i=1; write('0');
end;writeln;

readln
end.

Jika program Pascal di atas kita jalankan maka hasilnya adalah seperti berikut:

ketikkan sebuah bilangan bulat! 0
deretan bilangan faktoradik dari bilangan desimal 0 adalah:
0

ketikkan sebuah bilangan bulat! 3
deretan bilangan faktoradik dari bilangan desimal 0 adalah:
1, 1, 0

ketikkan sebuah bilangan bulat! 21
deretan bilangan faktoradik dari bilangan desimal 0 adalah:
3, 1, 1, 0


Demikian sedikit sharing dari kita untuk kita, kalau ada yang salah atau keliru mohon koreksinya, kalau ada yang kurang dimengerti silakan ditanya ke group facebook sahabat-informasi.com dan fanpage sahabat-informasi.com

Silakan download file .doc dari postingan ini di sini, dan download file .exe dari program Pascalnya di sini,

ingin dapat update artikel menarik lainnya? silakan Join Group facebook sahabat-informasi.com dan Like Fanpage sahabat-informasi.com dengan account facebook kamu,

Semoga membantu, terima kasih.... ^_^

baca juga:
  • Algoritma dan Pemrograman Pascal Menarik Lainnya di sini

1 komentar:

alhamdulillah ya..
ane sudah ngerti nhie.... !!