PRAKTIKUM VI VB.docx

download PRAKTIKUM VI VB.docx

of 23

  • date post

    24-Apr-2015
  • Category

    Documents

  • view

    39
  • download

    0

Embed Size (px)

Transcript of PRAKTIKUM VI VB.docx

PRAKTIKUM VI1. Judul Materi / Pokok Bahasan : Variabel Array dan Sorting (Pengurutan Data) 2. Tujuan Intruksional Khusus : Mahasiswa dapat membuat program dengan menggunakan variabel array dan menggunakannya untuk proses sorting. 3. Jumlah Pertemuan : 1 kali ( 2x50 menit) 4. Pengetahuan Prasyarat : Mahasiswa harus memahami statement DIM dan memahami metode pengurutan data (sorting). 5. Teori Dasar : Variabel Array Variabel Array atau variabel tataan atau variabel berindeks adalah variabel yang mempunyai susunan beberapa nilai didalam satu nama variabel. Variabel Array dapat berdimensi dari 1 dimensi sampai dengan 255 dimensi. Nilai-nilai didalam variabel array ini ditunjuk oleh suatu indeks atau subscript. Misalnya variabel tataan berdimensi satu dengan nama variabelnya X( I ) dengan I adalah indeks atau subscript dari array ini. Untuk nilai I dari 1 sampai dengan n, maka nilai elemen ke 1 dari aray atau variabel tatanan ini dapat dituliskan X( 1 ), nilai elemen ke 2 dapa t dituliskan X( 2 ) dan seterusnya sampai dengan X( n ). Untuk array berdimensi 2 dengan nama variabel x( I, J ) dengan I dan J adalah subscript atau indeksnya, maka nilai elemen baris ke 1 kolom ke 1 dapat dituliskan X( 1, 1), nilai elemen baris ke 1 kolom ke 2 dapat dituliskan x( 1, 2 ) dan seterusnya. Untuk tiap-tiap dimensi, BASIC hanya menyediakan tempat untuk nilai sebanyak 10 buah elemen. Bila lebih dari 10 buah elemen. Bila lebih dari 10 buah elemen untuk tiap-tiap variabel tataan, maka harus disebutkan terlebih dahulu pada statemen DIM. Misalnya variabel tataan A berdimensi satu mempunyai 4 buah nilai elemen, yaitu A(1), A(2), A(3), A(4), maka statement DIM tidak perlu digunakan. Akan tetapi untuk variabel tataan A berdimensi satu ini, misalnya mempunyai 11 buah elemen, yaitu A(1), A(2), sampai dengan A(11), maka statemen DIM perlu digunakan dan ditulis DIM(11).Jadi statement DIM untuk memberitahukan ke komputer untuk mempersiapkan tempat yang diminta untuk array/indeks. Contoh : 10 DIM X(15), A$(25) artinya variabel X meminta 15 kotak/tempat dan variabel A$ sebanyak 25 kotak/tempat. Untuk variabel array 2 dimensi, bentuk statement DIM X(15,15) akan disediakan kotak/tempat memori didalam komputer sebanyak 15x15 buah. X(1,1) X(2,1) . X(15,1) X(1,2) X(2,2) ... X(15,2) .. .. X(1,15) X(2,15) . X(15,15)

Didalam program Basic berlaku pula bahwa untuk variabel array 2 dimensi yang mempunyai tatanan kurang dari 10x10 tidak perlu dipakai pernyataan DIM. Contoh 1 :

10 FOR I = 1 TO 4 1. READ NILAI(I) 1. TOTAL=TOTAL+NILAI(I) 40 NEXT I 50 RATA=TOTAL/4 60 PRINT"RATA-RATA =";RATA 70 DATA 6,8,9,3 Nilai-nilai yang digunakan untuk dihitung nilai rata-ratanya masih disimpan di memori dan kalau masing-masing nilai ini ingin dikeluarkan lagi masih dapat dilakukan, sebab tersimpan pada nama-nama variabel NILAI(1), NILAI(2), NILAI(3), NILAI(4). Coba buktikan dengan menambahkan satu baris program ini: 80 PRINT NILAI(1);NILAI(2);NILAI(3);NILAI(4) Contoh 2 : Bandingkanlah program dicontoh 1 dengan program dicontoh 2 ini yang tidak menggunakan variabel array. 10 FOR I = 1 TO 4 20 READ NILAI 30 TOTAL=TOTAL+NILAI 40 NEXT I 50 RATA=TOTAL/4 60 PRINT"RATA-RATA =";RATA 70 DATA 6,8,9,3 Nilai rata-rata juga bisa keluar, tetapi masing-masing nilai tidak bisa dikeluarkan lagi, karena menggunakan satu nama variabel yang sama yaitu nilai yang bukan berupa variabel tataan. Nilai yang dikandung variabel NILAI terakhir adalah nilai yang terakhir saja, yaitu bernilai 3. Coba buktikan dengan menambahkan satu baris program ini: 80 PRINT NILAI;NILAI;NILAI;NILAI Contoh 3 : 10 READ NILAI1,NILAI2,NILAI3,NILAI4 20 TOTAL=NILAI1+NILAI2+NILAI3+NILAI4

30 RATA=TOTAL/4 40 PRINT"RATA-RATA =";RATA 50 DATA 6,8,9,3 Bila semua nilai setelah akhir dari proses masih diinginkan tersimpan, kalau tidak menggunakan variabel array, maka nama variabel harus berbeda, yaitu pada contoh 3, berupa nama variabel NILAI1,NILAI2,NILAI3,NILAI4 Coba buktikan dengan menambahkan satu baris program ini: 80 PRINT NILAI1;NILAI2;NILAI3;NILAI4 Contoh 4 :100 DIM G$(10,10) 110 FOR I = 1 TO 5 120 FOR J = 1 TO 4 130 READ G$(I,J) 140 PRINT G$(I,J), 150 NEXT J 160 PRINT 170 NEXT I 180 DATA MAX,DOSEN,30,SEMARANG 190 DATA IWAN,MAHASISWA,20,KENDAL 200 DATA SLAMET RAHARAJA,BAAK,35,BANTUL 210 DATA AGUS,BAU,40,MOJOKERTO 220 DATA WIDYASARI,SEKRETARIS,25,DEMAK

Contoh Program diatas digunakan untuk membuat tabel dari data string dengan dimensi maksimum 10x10 (10 baris 10 kolom). Untuk memperbesar dimensi ini, statemen DIM pada baris 100 harus disesuaikan. Pada contoh ini matrik string G$( ) mempunyai dimensi 5x4, yang digunakan untuk menuliskan nama, status, umur dan alamat. Karena berdimensi 5x4, maka dalam deklarasi data harus disediakan paling sedikit 20 data. Kalau jumlahnya kuran dari 20, komputer akan menghentikan eksekusi karena error. Dan apabila lebih dari 20, kelebihannya akan diabaikan. Pengurutan Data ( Sorting ) Teknik Sorting ini dapat digunakan untuk mengurutkan data urut dari kecil ke besar maupun dari besar ke kecil baik unutk data numerik atau alphabetik.Teknik sorting ini sangat banyak sekali caranya, tetapi yang sering digunakan dan relatip mudah yaitu metode "Bubble Sort" dan "Straight Selection".

Metode Bubble SortSeperti gelembung ("bubble") yang timbul ke permukaan air, metode ini juga menimbulkan angka terbesar dan menaruhnya pada akhir urutan, mengatur sampai urut dari kecil sampai besar. Untuk metode sorting ini, semua data dibacakan terlebih dahulu ke omputer dan disimpan di "memori komputer", kemudian pengurutan baru dilakukan. Contoh 5 :10 REM * SORTING MENGURUTKAN DATA * 15 REM * METODE BUBBLE SORT * 20 CLS 30 LOCATE 2,4:INPUT "BANYAK BILANGAN YANG DIURUTKAN : ", N 35 DIM BIL(N),Y(N) 40 PRINT 50 LOCATE 4,4:PRINT "INPUT BILANGAN YG AKAN DIURUTKAN : " 60 FOR I = 1 TO N STEP 1 70 LOCATE 4+I,4:PRINT" BILANGAN KE ";I;" : " 80 LOCATE 4+I,22:INPUT "",BIL( I ) 90 Y( I ) = BIL( I ) 100 NEXT I 110 PRINT 120 CLS 130 PRINT "DATA SEBELUM URUT : " 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. FOR I = 1 TO N PRINT BIL( I ); NEXT I PRINT:PRINT PRINT "LANGKAH PENGURUTAN : " FOR J= 1 TO N-1 FOR I= 1 TO N-J IF BIL( I ) < BIL( I+1 ) THEN 151 TUKAR=BIL( I ) BIL( I ) = BIL( I+1 ) BIL( X+1 ) = TUKAR NEXT I PRINT "LANGKAH KE : "; J;" : " FOR K=1 TO N PRINT BIL(K); NEXT K PRINT NEXT J PRINT:PRINT"SETELAH URUT : " PRINT"DATA","URUT KECIL","URUT BESAR" FOR I= 1 TO N PRINT Y( I ),BIL( I ),BIL( N+1-I) NEXT I END

Bagaimana bila data yang hendak diurutkan bukan berupa data numerik, melainkan data alphabetik ? Apakah data alphabetik juga bisa diperbandingkan mana yang lebih kecil dan mana yang lebih besar? Data alphabetik dapat dibandingkan sesuai dengan urutan nilai kode ASCIInya. Misalnya karakter "A" adalah bernilai lebih kecil dari karakter "B", karena nilai ekuivalen A untuk kode ASCII adalah 65 dan b adalah 66. Cara dan bentuk program untuk mengurutkan data alphabetik ini sama dengan data numerik, hanya nama variabelnya saja sebagai variabel string. Contoh 6 :10 REM * SORTING MENGURUTKAN ABJAD* 15 REM * METODE BUBBLE SORT * 20 CLS 30 LOCATE 2,4:INPUT "BANYAK ABJAD YANG DIURUTKAN : ", N 35 DIM ABAJD$(N),Y$(N) 40 PRINT 50 LOCATE 4,4:PRINT "INPUT ABJAD YG AKAN DIURUTKAN : " 60 FOR I = 1 TO N STEP 1 70 LOCATE 4+I,4:PRINT" ABJAD KE ";I;" : " 80 LOCATE 4+I,22:INPUT "",ABJAD$ ( I ) 90 Y$( I ) = ABJAD$( I ) 100 NEXT I 110 PRINT 120 CLS 130 PRINT "DATA SEBELUM URUT : " 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. FOR I = 1 TO N PRINT ABJAD$( I ); NEXT I PRINT:PRINT PRINT "LANGKAH PENGURUTAN : " FOR J= 1 TO N-1 FOR I= 1 TO N-J IF ABJAD$( I ) < ABJAD$( I+1 ) THEN 151 TUKAR$=ABJAD$ ( I ) ABJAD$( I ) = ABJAD$( I+1 ) ABJAD$( X+1 ) = TUKAR$ NEXT I PRINT "LANGKAH KE : "; J;" : " FOR K=1 TO N PRINT ABJAD$(K); NEXT K PRINT NEXT J PRINT:PRINT"SETELAH URUT : " PRINT"DATA","URUT KECIL","URUT BESAR" FOR I= 1 TO N PRINT Y$( I ),ABJAD$( I ),ABJAD$( N+1-I) NEXT I END

Untuk nomor baris 172, 173, dan 174 dapat diganti lebih singkat dengan menggunakan sebuah statemen SWAP, sebagai berikut : 173 SWAP ABJAD$( I ),ABJAD$( I+1 )

Metode Straight SelectionMetode ini sebenarnya kebalikan dari metode bubble sort. Metode seleksi langsung ini akan memilih nilai yang terkecil dan meletakkannya di urutan terkemuka. Nilai-nilai terkecil berikutnya akan diseleksi dan diletakkan diurutan setelah nilai terkecil pertama, kedua, dan seterusnya sampai akhirnya di dapat nilai yang urut dari kecil ke besar. Program berikut akan mengambil data yang sama dengan metode Bubble sort. Dari hasil output langkah-langkah pengurutan akan tampak perbedaan proses pengurutannya.

Contoh 7 :10 REM * SORTING MENGURUTKAN DATA * 15 REM * METODE STRAIGHT SELECTION* 20 CLS 30 LOCATE 2,4:INPUT "BANYAK BILANGAN YANG DIURUTKAN : ", N 35 DIM BIL(N),Y(N) 40 PRINT 50 LOCATE 4,4:PRINT "INPUT BILANGAN YG AKAN DIURUTKAN : " 60 FOR I = 1 TO N STEP 1 70 LOCATE 4+I,4:PRINT" BILANGAN KE ";I;" : " 80 LOCATE 4+I,22:INPUT "",BIL( I ) 90 Y( I ) = BIL( I ) 100 NEXT I 110 PRINT 120 CLS 130 PRINT "DATA SEBELUM URUT : " 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. FOR I = 1 TO N PRINT BIL( I ); NEXT I PRINT:PRINT PRINT "LANGKAH PENGURUTAN : " FOR I= 1 TO N-1 FOR J= I+1 TO N IF BIL( I ) < BIL( J ) THEN 151 TUKAR=BIL( I ) BIL( I ) = BIL( J ) BIL( J ) = TUKAR

12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24.

NEXT J PRINT "LANGKAH KE : "; I ;" : " FOR K=1 TO N PRINT BIL(K); NEXT K PRINT NEXT I PRINT:PRINT"SETELAH URUT : " PRINT"DATA","URUT KECIL","URUT BESAR" FOR I= 1 TO N PRINT Y( I ),BIL( I ),BIL( N+1-I) NEXT I END

Perbedaan utama pada program dengan metode Bubble Sort tampak pada nomer baris 193, 194, 195. Pertama kali dibandingkan data pertama dengan data berikutnya dan data terkecil diletakkan pada urutan pertama. Jadi urutan pertama telah terisi oleh data terkecil, sehingga untuk proses selanjutnya urutan yang telah t