You are on page 1of 23
ALGORITMA KOMPUTASI DAN FLOWCHART 1.1 PENDAHULUAN Misalnya diketahui suatu persamaan li x dan y: ier dengan dua buah Bilangan anu, dengan a,b,c,p.q dan r tidak sama dengan nol. Penyelesaian soal di atas dapat dilakukan sebagai berikut : dari (1.1) diperoleh x=(c-by)/a (1.3) Harga x disubstitusikan ke (1.2) diperoleh p(c - by)/a+qy=r atau (q - pb/a)y =r - pc/a (1.4) Bila harga q diganti dengan harga q - pb/a, dan r dengan r - pc/a, maka diperoleh y=1/q dengan r dan q adalah harga baru dari r dan q. Langkah-langkah di atas dapat ditulis sebagai deretan instruksi sebagai berikut : Instruksi 1! Baca 6 buah Bilangan, berturut-turut sebut sebagai a,b,c,p.q dan r Instruksi 2 | Ganti harga q dengan q - pb/a Instruksi 3 | Ganti harga r dengan r - pe/a Instruksi 4 | Bila berhenti. Bila q <> 0, maka lanjutkan instruksi berikutnya Instruksi 5 | Harga y adalah r/q Instruksi 6 | Harga x adalah (c - by)/a Instruksi 7 |x dan y adalah jawaban Instruksi 8 | Berhenti = 0, maka tulis “tidak ada jawaban” dan Deretan instruksi lengkap sebagaimana pada contoh di atas yang digunakan untuk menyelesaikan suatu masalah tertentu disebut Algoritma. Sebagai contoh, kita gunakan Algoritma di atas untuk menyelesaikan persa- maan linier simultan : 2x +3y=4 5x +6y=7 Instruksi 1 | Kita baca nilaia bc p qr 2345516 4 Instruksi 2 1q <— 6- (15/2) = -1,5 Instruksi 3 |r <— 7 - (20/2) = -3 Instruksi 4 | Karena q<> 0, maka dilanjutkan dengan instruksi berikutnya. Instruksi 5 | y <— (-3/-1,5 = 2 Instruksi 6 | x <— (4 - 6)/2=1 Instruksi 7 |x =-1, y =2 Instruksi 8 | Berhenti Perhatikan bahwa pada saat instruksi 2 dilaksanakan, harga q yang sebelum- nya 6 berubah menjadi -1,5. Sama halnya, bila instruksi 3 dilaksanakan, harga r yang sebelumnya 7 berubah menjadi -3. Harga awal dan akhir dari variabel-variabel pada contoh di atas ditunjukkan oleh tabel di bawah ii abecpq rR y 234 5 6 T- - 23 4 S$ -15 -3 -1 2 Komputer dapat kita perintah untuk melaksanakan instruksi-instruksi dalam contoh di atas. Untuk itu kita harus membuat Program dalam salah satu bahasa Komputer(bahasa BASIC, PASCAL atau FORTRAN). Membuat suatu Program Komputer tidak lain adalah mengubah Algoritma ke dalam salah satu Program bahasa komputer. Untuk Algoritma pada contoh di atas dapat dibuatkan Program dalam bahasa BASIC sebagai berikut : Program 1.1 0 REM PERSAMAAN LINIER DENGAN 4 REM DUA ANU 8 REM PROGRAM PENYELESAIAN 10 READ A,B,C.P.Q.R 20 LET Q=Q-(P*B/A) 30 LETR=P-(P*C/A) 40 IF Q=0 THEN 90 50 LET Y=R/Q 60 LETX=(C-B*Y)/A 70 PRINT “JAWABAN”,X,Y 80 STOP 90 PRINT “TIDAK ADA JAWABAN” 100 STOP 110 DATA 2,3,4,5,6,7 120 END Proram BASIC di atas kita turunkan dari Algoritma yang sudah dibuat sebe- lumnya. Berikut ini suqtu Contoh Program penyelesaian Masalah di atas, dalam Bahasa Pascal. Program 1.1a PROGRAM PersLinier; VAR a,b,c : Real; p.q.t : Real; xy : Real; READ(a,b,¢.p,q,1); q- (p * b/a); - (p * cha); IFq=0 THEN WRITELN(TIDAK ADA JAWABAN’) E ELS! BEGIN y= t/q END END. Sebagai alternatif Jain, x t= (c-bFy)/a; WRITELN(‘JAWABAN’,x,y) , sebuah Program dapat pula dibuat berdasarkan flowchart (diagram alur). Gambar 1.1merupakan flowchart bagi masalah di atas. Q<—Q -P*B/A R <— R - P*C/A “TIDAK ADA JAWABAN” Tidak Y <—R/Q X <— (C- B*Y)/A PRINT X,Y Gambar 1.1 flowchart 1.2 GARIS BESAR CARA KERJA KOMPUTER Dalam mengerjakan sebuah Program, hubungan yang terjadi di dalam kom- puter dapat digambarkan sebagai berikut INPUT. | LL a, MEMORY OUTPUT r" (Program & Data) _7™ L | aa CONTROL K----4 | Central Processing Unit sf ARITHMETIC CONSOLE Gambar 1.2 Diagram blok dari komputer Program dimasukan melalui input unit, sclanjutnya dari input unit ditransfer ke memory komputer. Program dilaksanakan oleh Komputer sctelah scluruh Program disimpan dalam memory. Control Unit bertindak scbagai pengatur selama Program berjalan. Beberapa hal penting yang perlu diketahui tentang Komputer dan, penycle- saian Masalah menggunakan Komputer : 1. Kita perlu untuk merumuskan langkah demi langkah guna menyelesaikan se- buah masalah dengan menggunakan komputer. Langkah-langkah tersebut berupa sebuah Algoritma. 2. Selanjutnya Algoritma tersebut dinyatakan sebagai scderctan instruksi dalam sebuah bahasa pemrograman Komputer (programming language). 3. Komputer memiliki bagian-bagian yang saling berkaitan, yakni input, memory, control, arithmatic dan output unit. Control Unii bertindak sebagai pengatur selama sebuah Program berjalan. s . Pertama kali Program disimpan di dalam memory, semua instruksi akan tetap tersimpan dalam memory sclama Program berjalan. Hal tersebut berguna, bila instruksi tertentu akan dilaknakan berulang-ulang a . Instruksi-instruksi pada sebuah Program dilaksanakan sesuai dengan urutan yang dibuat. Urutan tersebut mungkin berubah bila sampai ke instruksi dengan loncatan bersysrat (conditional branch) . Sekumpulan Bilangan diperlukan sebagai data, dan dengan data tersebut kom- putasi dilakukan 7. Memory Komputer dapat dibayangkan scbagai scl-sel yang berlabel. Nama variabel yang digunakan dalam sebuah Algoritma adalah label dari sel dalam memory, sedangkan harga dari variabel tcrscbut adalah isi dari sel dengan label yang bersesuaian rN 1.3 BEBERAPA CONTOH ALGORITMA Contoh 1.1 Barisan Fibonnaci adalah barisan Bilangan bulat : 0,1,1,2,3,5,8,13,21,34,65 Perhatikan bahwa suku dalam barisan tersebut diperoleh dengan jalan menjum- lahkan dua buah suku sebelumnya, terlihat terdapat hubungan rekrusif pada barisan tersebut. Jadi dapat kita buat barisan tersebut dengan langkah-langkah : 1. Suku terdahulu = 0 2. Suku kini = 1 3. Suku baru = suku kini + suku terdahulu 4. Ganti suku terdahulu dengan suku kini 5. Ganti suku kini dengan suku baru Jika langkah 3, 4 dan 5 divlang, maka diperolch barisan Fibonacci tersebut. Hal ini digambarkan oleh tabcl di bawah ini Suku terdahulu Suku kini Suku baru weUBwNeHo i) 2 7 5 8 i eee 3 _ whkwn bal Andaikan kita ingin menuliskan barisan Fibonnaci hingga dengan suku yang berharga lebuh kecil atau sama dengan 100. Algoritmanya adalah sebagai berikut : Algoritma 1.1 (Barisan Fibonacci) Suku Terdahulu <— 0 Suku kini <— 1 Suku baru <— suku kini + suku terdahulu Tulis suku terdahulu, suku kini, suku baru Sementara suku baru < 100 kerjakan instruksi 6 sampai 8 mulai Suku terdahulu <— suku kini Suku kini <— suku baru Suku baru <— suku kini + suku terdahulu selesai Tulis suku baru Berhenti Berikut ini Program untuk pembentukan Barisan Fibonacci di bahasa BASIC Program 1.2 5 REM PROGRAM MEMBUAT 6 REM BARISAN FIBONNACI 10 LETSI=0 20. LETS2=1 30. LET S3=S1+$2 40 PRINT S1, $2, $3 50 LET S1=S2 60 LET S2=s3 atas, dalam 70 LET $3 = S1 + $2 80 IF $3 > 100 THEN 110 90 PRINT S3 100 GOTO 50 110 END Latihan : Buatlah Program untuk masalah yang sama di atas dalam Bahasa Pascal. Contoh 1.2 Kita hendak menghitung jumlah deret 305 7 Ss = K- XYBE + X/SE = UT +t C1 tee (2n- 1)! +. (5) Dapat dicatat bahwa derct terscbut merupakan pendekatan dari fangsi sin(x). Kita perhatikan hubungan di bawah ini : Sukukei= (1 x™/Qi-D! (1.6) dan Suku ke (i+1) = (-1)'x?"'/(2i+1)! Schingga hubungan Rekursif antara suku ke i dengan suku ke i+1 adalah: Suku ke i#1 = (-x2/{(2i(2i+1))) suku ke i (1.7) Berdasarkan hubungan tcrsebut Algoritmanya adalah Algoritma 1.2 1. Baca x,n 2.8 <—x 3. Suku <— x 4. Untuk i =1 sampai (n-1) kerjakan instruksi 5 dan 6 mulai 5. Suku <— (-x? )(Suku)/(2i)(2i+1) 6.S<— S$ + Suku selesai 7. Tulis $ 8. Berhenti Pada Algoritma 1.2 di atas, instruksi 4 menyebabkan_ instruksi 5 dan 6 dilaksanakan sebanyak (n-1) kali dengan harga i=lsampai i = n-l, pengulangan tersebut dinamakan gelung atau loop. Tabel di bawah ini menunjukan proses pengulangn pada Algoritma 1.2 Loop ke- i Suku s 1 1 - x33! x-x3/3! 2 2 +x9/5! X-K/314K5/5! 3 3 xh X-X3/B14K5/51-x7/7! epee Cee nel nel —— x-x7/3!4. (2n- 1)! (2n - 1) Berdasarkan Algoritma 1.2 kita buat Program untuk contoh 1.2 di atas. Program 1.3 5 REM PROGRAM MENGHITUNG 6 REM JUMLAH DERET 10 INPUT X,N 20 LETS=x 30 LET SUKU = X 40 FORI=1TON-1 50 LET SUKU = (-X*X)*SUKU / (2*I*(2*I+1)) 60 S=S+SUKU 65 NEXTI 70 PRINT S 80 STOP Latihan : Silakan anda buat Program di atas dalam bahasa Pascal. Contoh 1.3 Dalam contoh ini akan dibuat Algoritma untuk menghitung polinom : p(x) = ax +a kel + tax tay, (1.8) Untuk keperluan pembuatan Algoritma tersebut, persamaan (1.8) ditulis kembali sebagai : p(x) =a, + ax tat. tax Salt x(a, + ax +... + ax™) =a, + x@, + x(a, +... + ax") (1.9) Sehingga dapat disusun Algoritma sebagai berikut: Algoritma 1.3 1. Baca x, n 2. Untuk i = 0 sampai n baca a, 3.p<—a, 4. Untuk i'= n sampai 1 dengan langkah -1 kerjakan instruksi 5 5 6 .p<— a, + xp . Tulis p 7. Berhenti Berikut ini Programnya. Program 1.4 5 REM PROGRAM MENGHITUNG 6 REM PAT NOM, 10 INPUT X,N 15 DIM A(N) 20 FORI=0TON 24 INPUT A(1) 25 NEXTI 30 LET P= A(N) 40 FORI=NTO1STEP-1 50 LET P= A(I-1)+ X *P 5S | NEXT I 60 PRINT P 70 END Latihan : Silakan anda buat Program di atas dalam bahasa Pascal. Contoh 1.4; Pembagian Sintetik Polinom Membagi polinom PX) =a taxtaxrt.. tax dengan (x-r). Di sini r adalah akar polinom. axe le(a, x” era )x"24(a, +4 (a, ra) x O+ axtea, x" l+...+a, a,xt-ra.x™! (a,_ +Tax ta, jx"? (a,_,+ra,)x""-r(a,_+1a,)x*? (a, gta, tra,))x®... hasil bagi di atas dapat dituliskan sebagai : b, xt 4b, ,x™24...+b, dengan by =a, bya = aaa +14, = a, + 1b, bs = @,, + ra, + ra) = ag + tho Secara umum ; Baier) = Ba + Mp Berikut ini Algoritmanya Algoritma 1.4 1. Untuk i = 0 sampai n baca a, 2.b,, <—a, 3, Untuk i ='1 sampai (n-1) kerjakan instruksi 4 4. bys < Aart, 5. Untuk i = 0 sampai (n-1) tulis b, 6. Berhenti Berikut ini Programnya. Program 1.5 2. REM PROGRAM MEMBAGI 3 REM POLINOM 4 INPUTN,R 5 DIM A(N+1), B(N+1) 10 FORI=0TON 14 INPUT A(I) 1S NEXTI 20 LET B(N-1) = A(N) 30 FORI=0TON-1 40 LET B(N-(I+1)) = A(N-1)+R*B(N-1) 45 NEXTI 50 FORI=0TON-I 54 PRINT B(1) 55 NEXT 1 60 END Latihan ; Silakan anda buat Program di atas dalam bahasa Pascal. 1.4 MANIPULASI BILANGAN BULAT Sejak dahulu kala orang telah tertarik terhadap berbagai macam sifat dan tingkah laku Bilangan, khususnya Bilangan bulat atau linteger Positif. Dengan adanya komputer, banyak “keajaiban” mengenai Bilangan dapat diketahui manusia. untuk Pada sisa dari Bab 1 ini, kita khusus membicarakan mengenai Bilangan bulat dengan berbagai sifat dan manipulasinya. Bilangan genap dan ganjil Kita telah tahu bahwa suatu Bilangan bulat positif (disebuat juga Bilangan Asli atau natural number) disebut genap bila berbentuk 2n, serta disebut ganjil_ bila berbentuk 2n-1, di sini n adalah suatu Bilangan Asli Dengan perkataan lain Bilangan genap selalu habis dibagi 2 scdangkan Bilangan ganjil tidak. Di dalam bahasa BASIC kita mengenal fungsi INT(X) yang meng- hasilkan bagian bulat dari x. Sebagai contoh : INT(3.2)=3 — INT(.8) =0 INT(4.5)=4 —— INT(-3.7) = -3 dll. Jadi untuk menentukan apakah Bilangan Asli adalah genap atau ganjil, kita buat Program berikut Program 1.6 10 REM MENENTUKAN BILANGAN GENAP ATAU GANJIL 20 INPUT N 25 REM N ADALAH BILANGAN YANG DIPERIKSA 30 IF INT(N/2) = N/2 THEN 50 40 PRINT N:” ADALAH BILANGAN GANIJIL “:GOTO 60 50 PRINT N;” ADALAH BILANGAN GENAP “ 60 END Berikut ini problema yang menyangkut Bilangan genap dan ganjil yang disebut barisan Ullam. Ullam seorang matematikawan menduga bahwa apabila kita mengambil sembarang Bilangan Asli, kemudian bila Bilangan tersebut genap, ia kita bagi 2, tetapi bila ganjil ia kita kalikan 3 lalu ditambah 1, dan proses kita ulang terus akhirnya akan tercapai hasil Bilangan 1. Sebagai contoh, jika kita ambil Bilangan 13 maka barisan Ullam yang bersangkutan adalah 13,40,20,10,5,16,8,4,2,1 Berikut ini Program membentuk barisan Ullam. Program 1.7 10 REM BARISAN ULLAM 20 INPUT K 25 REM K ADALAH SUKU AWAL BARISAN 30 PRINT K 40 IF K = 1 THEN 80 50 IF INT(K/2) = K/2 THEN K = K/2 :GOTO 30 60K=3*K+1 70 GOTO 30 80 END Kalau kita menggunakan Bahasa Pascal ataupun versi BASIC yang dilengkapi dengan MOD, kita dapat memanfaatkan MOD tersebut untuk menetapkan apakah Bilangan genap atau ganjil. Perhatikan sebagai contoh : 4MOD3=1 8 MOD 3=2 7MOD2=1 9 MOD 6 =3 8 MOD 2=0 dan sebagainya. Jadi jelas Bilangan N adalah genap bila N MOD 2 = 0 dan ganjil bila N MOD 2 =1. Triplet Phytagoras Kita semua telah mengenal dalil Phytagoras untuk sebuah segitiga siku-siku, yakni A? + B? = C*. Di sini C adalah panjang sisi miring, A dan B panjang sisi siku-siku.Ketiga Bilangan Asli yang memenuhi dalil phytagoras dikenal sebagai Triplet Phytagoras. Sekarang kita akan membuat tabel triplet phytagoras dari Bilangan Asli antara 1 sampai 100. Analisis : Sebelumnya, untuk mencegah jawaban yang sama berulang dalam tabel (misalnya (3,4,5) dan (4,3,5)), kita tetapkan A < B. Dj sini A tidak mungkin sama dengan B karena C pasti bukan Bilangan Asli (segitiga siku-siku sa- makaki mempunyai perbandingan a:a:aV2 ) Jadi, A kita ambil dari I=1 sampai 99, sementara B bergerak dari J = 1 + 1 sampai 100. Dalam proses kita ini Terdapat 2 buah loop bersarang (nested atau berganda). Apabila setiap kali kita hitung terdapat hasi] I’+J°=K?, dengan K merupakan Bilangan Asli, maka diperoleh (I,J,K) adalah suatu triplet phytagoras. Kembali di sini fungsi INT(X) kita manfaatkan untuk menetapkan apakah K Bilangan Asli. Flowchart Triplet Phytagoras START as J<—I+1 K <— SQR(I*I+J*J)| PRINT 1,J,K J<—J+1 J< 100 ? 1<—H1 TIDAK STOP Berikut ini programnya . Program 1.8 10 REM PROGRAM TRIPLET PHYTAGORAS 20 N= 100 30 FORI=1TON-1 40 FORJ=1+1TON 50 K=SQR(I*+1+J)*J) 60 IF K <> INT(K) THEN 80 70 PRINT 1J,.K 80 NEXT J 90 NEXT I 100 END Bilangan Amstrong Bilangan yang sama dengan jumlah pangkat tiga dari digitnya dikenal sebagai Bilangan Amstrong. Sebagai contoh, 153 adalah Bilangan Amstrong karena : 153 = 19 +5? +3? Berikut ini kita akan membuat Program untuk menghasilkan Bilangan Armstrong antara 1 sampai 2000. Analisis_: Kita harus memisahkan digit-digit dari Bilangan tersebut, misalnya 458 kita pisah menjadi : 4(ratusan), 5(puluhan), 8(satuan) Kemudian dihitung apakah 4° + 5? + 8? = 458? Untuk memisahkan digit 8 dapat kita lakukan sebagai berikut: QI = INT(458/10) = 45 RL=458-Q1*10=8 Selanjutnya untuk memisahkan digit 5 ; Q2 = INT(QI/10) = 4 R2=Q1-Q2* 10=45-40=5 dan terakhir Q3 = INT(Q2/10) = 0 nilai INT = 0 ini pertanda proses pemisahan telah selesai, dengan R3 = Q2=4 Flowchart Bilangan Amstrong START ———__Nv _ Q <— INT(K/10) R<— K-10*Q S <— S+R*R*R PRINT I Program 1.9 10 7 20 30 40 50 60 70 80 90 100 110 120 130 140 REM PROGRAM BILANGAN ARMSTRONG REM ANTARA 1 SAMPAI 2000 N = 2000 FOR 1=1TON S=0 Q = INT(K/10) R=K-10*Q S=S+R*R*R K=Q IF Q <> 0 THEN 60 IF 1 <> S THEN 130 PRINT I NEXT I END Pecahan Mesir Suatu pecahan yang pembilangnya = 1 Contohnya 1/2, 1/9, 1/23, dan sebagainya Suatu pecahan dengan pembilang lebih kccil dar _penyebut disebul pecahan sejati discbut pecahan Mesir. ( proper fraction ). Kita akan menguraikan suatu pecahan scjati_ sebagai jumlahan dari beberapa pecahan Mesir. Untuk itu dapat dipergunakan Algoritma Maksimal Fibonacci,yakni menentukan pecahan Mesir terbesar yang lebih kecil dari 17 pecahan bersangkutan. Analisis: Misalkan pecahan yang akan diuraikan adalah A/B Maka C = INT(B/A) < B/A dan 1/C > A/B kemudian kita mengubah C <— C +1 sampai diperoleh WC < AB 1/C tersebut adalah pecahan Mesir terbesar yang terkecil dari A/ 1/C tersebut adalah pecahan Mesir tersebesar yang lebih kecil dari A/B Kita ulangi proses di atas untuk pecahan AJB - 1/C = —_—dan proses berhenti bila A/B yang baru sudah merupakan pecahan Mesir. Sebagai_contoh_: Pecahan 7/8 AIB = 7/8 C= INT(B/A) = INT(8/7) = 1 UC = 1/1 > A/B, C <— 2 1/C = 1/2 < A/B, jadi 1/2 merupakan pecahan Mesir maksimal yang lebih kecil dari 7/8 Selanjutnya dihitung 7/8 - 1/2 = 3/8 scbagai A/B yang baru C = INT(B/A) = INT(8/3) =2 I/C = 1/2 > A/B = 3/8, C <—3 WC = 1/3 < A/B, jadi 1/3 merupakan pecahan Mesir maksimal yang lebih kecil dari 3/8. Selanjutnya dihitung 3/8 - 1/3 = 1/24 sebagai A/B yangbaru. Karena sudah merupakan pecahan Mesir, berarti proses telah selesai. Diperoleh 7/8 = 1/2 + 1/3 + 1/24 Flowchart Uraian Pecahan Mesir START B< Ac PRINT B = C <— INT(B/A) STOP | PRINT C A <_ A BL—X©) B<— B*C Program | 10 10 REM PROGRAM URAIAN MENJADI PECAHAN MESIR 20 INPUT A,B 25 REM DENGAN ALGORITMA FIBONACCI TAHUN 1207 35 REM A = PEMBILANG, B = PENYEBUT 40 IF B/A = INT(B/A) THEN B = B/A: A= 1 50. IF A=1 THEN PRINT “1 /™; B :GOTO 140 60 C = INT(B/A) 70 IF 1/C < A/B THEN 100 80 C=C+I 90 GOTO 70 100 PRINT “1/":C 110 A=A*C-B 120 B=B*C 130 GOTO 40 140 END Bilangan Prima Bilangan Asli n> 1 discbut Prima bila n hanya habis dibagi 1 dan n sendiri Jadi 2,3,5,7 dan seterusnya adalah Prima, Jadi untuk memeriksa apakah Bilangan Asli n merupakan Bilangan Prima, kita selidiki apakah n habis dibagi oleh salah satu Bilangan Prima p yang lebih kecil dari akar n. Patut pula dicatat bahwa semua Bilangan Prima, kecuali 2, adalah Bilangan ganjil. 19 Kita hendak membuat Program untuk mencetak 60 buah Bilangan Prima yang pertama. Analisis Algoritma kita mulai dengan langsung mencetak dua Bilangan Prima yang pertama, yakni 2 dan 3. Selanjutnya, Bilangan Prima selalu ganjil jadi selalu kita tambah 2, dan diuji apakah habis dibagi Bilangan Prima (ganjil) yang lebih kecil atau sama dengan akarnya (apabilaBilangan Primatersebut ada) Misalnya 5 diuji apakah habis dibagi Bilangan Prima ganjil yang < V5 ternyata Bilangan yang dimaksud tak ada. Jadi 5 Prima. Selanjutnya 7 (yakni 5+2) analog dengan 5, juga Prima Sedangkan 9 (yakni 7+2) habis dibagi 3. Di sini 3 adalah Bilangan Prima ganjil < V9, jadi 9 bukan Prima , dan sebagainya. Flowchart Bilangan Prima START. P(K) <---Q PRINT P(K) 20 Program 1.11 10 REM PROGRAM MENCARI 60 BILANGAN PRIMA 15 REM YANG PERTAMA 20 N=60 30 DIM P(N) 40 P(1)=2: P(2) =3 50 PRINT P(1) : PRINT P(2) 60 Q=3:K=3 70 Q=Q+2 80 FORL-=2TOK-1 90 IF P(L) > SQR(Q) THEN 120 100 IF Q/P(L) = INT(Q/P(L)) THEN 70 110. NEXTL 120 P(K)=Q 130. PRINT P(K) 140 K=K+I 150 IFK>N THEN 170 160 GOTO 70 170 END Mencari Akar Bulat Polinom Misalkan kita mempunyai polinom p(X) =X" +a,X +. +a X +a, Untuk menghitung akar bulat dari p(X), kita dapat mencoba kemungkinan dari faktor-fktor a,. Misalkan akar tersebut adalah r. Untuk akar yangberikutnya, lebih dahulu p(X) dibagi dengan (X-r), dicoba lagi dan scterusnya. Algoritma untuk membagi polinom telah dibicarakan pada Bagian 1.3 yang Jalu. Contoh : Tentukan akar dari p(X) = X? + 4X? - 7X - 10 Faktor-faktor dari 10 adalah +1, -1, +2, -2, +5, -5, +10, -10. Mula-mula kita coba X = -1, ternyata p(-1) = 0. Jadi akar pertama r= -1. Lalu p(X) kita bagi dengan X-r= X+1,, hasilnya p,(X) = X? + 3X - Selanjutnya, fae fakior dari -10 adalah +1, -1, +2, -2, +5, -5. +10, -10 Apabila di coba p(-1), p(+1), dan p(-2) tidak sama dengan 0. Sedangkan, ternyata p(2) = 0. Jadi akar r = 2. Kemudian p,(X) dibagi X-r=X-2, diperoleh po =X+5 Jelas akar ketiga adalah r = -5. 21 Program 1.12 10 15 20 25 30 40 50 55 60 70 80 90 100 110 115 120 125 130 140 150 160 170 180 190 200 205 210 220 230 235 240 250 260 270 280 290 300, 310 320 400 REM MENCARI AKAR BULAT POLINOM BERBENTUK REM P(X) = XAN + A(1) * XA(N-1) +... + A(N-1) * XAA(N) REM KOEFISIEN PANGKAT TERTINGGI = 1 INPUT “DERAJAT POLINOM”:N DIM A(N), F(N) FOR K = 1 TON INPUT A(K) REM A(K) ADALAH KOEFISIEN POLINOM NEXT K T=1 FOR K = 1 TON REM MENCARI FAKTOR DARI A(N) IF A(N)/K <> INT (A(N)/K) THEN 230 F(L) = -K REM F(L) ADALAH FAKTOR DARI A(N) REM P ADALAH NILAI POLINOM UNTUK X = F(L) REM YANG DIHITUNG SUKU DEMI SUKU P=0 FOR M = 10 TON IF M = 0 THEN P =P + F(L)IN : GOTO 170 P = P + A(M) * F(L)I(N-M) NEXT M IF P <> THEN 205 R = F(L):PRINT R; “ADALAH AKAR” GOTO 240 REM TERNYATA F(L) BUKAN AKAR L=L#l IF L/2 = INT(L/2) THEN F(L) = K : GOTO 115, NEXT K PRINT “TAK ADA AKAR BULAT” :GOTO 300 REM MELAKUKAN PEMBAGIAN POLINOM DENGAN X-R N=N-1 FOR 1=1TON IF l= 1 THEN A(I)=A(1)+R: GOTO 290 A(I) = Ai) + R * A(I-1) NEXT I REM KITA CARI AKAR BERIKUTNYA IF N <> | THEN 70 R =~ A(N) : PRINT Ri “ADALAH AKAR™ END wm ds Perubahan Sistem Desimal (Basis 10) Ke Sistem Lain. Kita akan melakukan perubahan Sistem Desimal (Basis 10) Ke Sistem Lain. Seperti telah kita ketahui Bilangan 358 sistem desimal berarti (358), = 8*10°+5*10' +3* 10 Pengertian di atas serupa untuk sistem Bilangan lain, misalnya 472 sistem oktal (basis 8) berarti : (472), = 2 * 8 7* 8! +4 * 8? = (314), Latihan : Cobalah buat Program untuk mengubah Bilangan dalam sistem oktal ke sistem desimal. Berikut ini akan kita buat Program, kebalikan dari soal di atas yaitu mengubah Bilangan desimal ke sistem lain dengan basis lebih kecil dari 10. Prinsipnya adalah sebagai berikut: Kita lakukan pembagian terhadap Bilangan tersebut oleh basis yang baru sisanya diambil sebagai digit paling kanan. Hasil baginya, apabila lebih besar atau sama dengan basis, dibagi lagi.Sisanya diambil sebagai digit sebelah kiri berikutnya, dan seterusnya Kalau hasil bagi lebih kecil dari basis, hasil bagi tersebut diambil sebagai digit sebelah kiri berikutnya dan proses selesai Sebagai gambaran perhatikan contoh mengubah (83),, ke basis 8 sebagai berikut : 83/8 = 10 sisa 3 karena 10 > 8 , maka 10/8 = 1 sisa 2 karena 1 < 8, maka proses selesai. Hasilnya: 123 basis 8 Flowchart Perubahan Basis Flowchart untuk masalah di atas berikut ini belum memperhatikan bagaimana mencetak hasilnya. Yang kita peroleh barulah digit-digit A(J) : AG)... AG) AQ) AC) Untuk mencetaknya kita gunakan statemen : FOR D=J TO 1 STEP -1 PRINT A(D); NEXT Program 1.13 100 110 De) 120 a 140 150 P<—I j<—1 Q <— INT(P/B) R <— P-B*Q P<—Q AU) <—R J<—J+1 TIDAK REM MENGUBAH BASIS 10 MENJADI BASIS LAIN INPUT “BASIS BARU”:B INPUT “BILANGAN YANG DIUBAH™;I P=I:J=1 Q = INT(P/B) R = P-B*Q P=Q:AQ)=R J=J+1 IFQ AG) = Q PRINT | ; “MENJADI :”; REM MENCETAK HASIL FOR D=J TO 1 STEP -1 PRINT A(D); NEXT D END B THEN 50 Untuk mengubah ke basis lebih besar dari 10. Program hanya berbeda pada waktu mencctak.Untuk itu disediakan string digit BS = “0123456789ABCDEF’ bagi basis 16 (hexadesimal) Kemudian kita memanfaatkan MID$ (atau SUBSTR) untuk mencetak digit A(D), yakni dengan 24 PRINT MID$(B$,A(D)) Dalam Program perlu ditambahkan baris 35 35 B$ = “0123456789 ABCDEF” dan mengubah baris 130 menjadi 130 PRINT MID$(B$,A(D)+1,1) Prtanyaanl Bagaimana seandainya bahasa BASIC kita memiliki fasilitas MOD, sebagaimana Bahasa Pascal, apakah Program kita di atas menjadi lebih sederhana ? Buatlah Program tersebut. SOAL LATIHAN (1) Bila n suatu Bilangan Asli, didefinisikan faktorial (fakultas) n sebagai n! = 1*243*...*n, Sebagai Contoh adalah = 5! = 1*2*3*4#5= 120 Buatlah Program untuk n! dari n= 1 sampain = 8 (2) Kalau ada n obyck yang berbeda akan kita ambil k di antaranya, maka banyaknya cara pemilihan dinamakan Kombinasi k dari n, ditulis ,C, Rumusnya: AC, = nik! *(n-k)}) Buatlah Program untuk menghitung ,C,, dengan catatan 0 didefinisikan Or=1 (3) Buatlah Program segitiga PASCAL untuk koefisien binomium (a+b) , dari n = 1 sampai 10. (4) Bilangan Asli disebut Sempurna bila ia merupakan jumlah dari pembaginya (tak termasuk diri sendiri). Jadi 6 adalah Bilangan Sem- purna, karena 6 = 1+2+3 Buatlah Program untuk mencari Bilangan Sempurna yang lain antara 2 hingga 2000. Apakah ada Bilangan Sempurna yang diperoleh ? 25

You might also like