tgas

34
PRAKTIKUM ALGORITMA DAN PEMROGRAMAN MODUL III ARRAY (LARIK) 3.1 TUJUAN 1. Memahami dasar-dasar pemrograman C++. 2. Memahami penggunaan tipe data array dalam pembuatan program. 3. Mengenal dan bisa menggunakan fungsi pembangkit bilangan acak yang ada dalam Bahasa C++. 4. Mengenal dan bisa memakai fungsi untuk mendapatkan waktu dalam Bahasa C++. 5. Memahami tujuan dan mekanisme pengurutan data dan pencarian data. 6. Mampu menganalis kerja masing-masing metode pengurutan dan pencarian, sehingga bisa memilih metode pengurutan dan/atau pencarian data yang terbaik untuk suatu contoh kasus tertentu. 3.2 TUGAS PENDAHULUAN 1. Jelaskan tentang array dan deklarasi array dalam C++ serta tipe data yang mungkin digunakan dalam array. Berikan contoh deklarasi array dalam C++ lalu hitung keperluan memory-nya. Nama : Ida Bagus Widnyana.P NIM : 1104505016 Kelompok : 04

Upload: vanquish-vein

Post on 22-Nov-2015

50 views

Category:

Documents


0 download

TRANSCRIPT

Nama : Ida Bagus Widnyana.PNIM : 1104505016Kelompok : 04PRAKTIKUM ALGORITMA DAN PEMROGRAMAN

MODUL IIIARRAY (LARIK)

3.1TUJUAN

1. Memahami dasar-dasar pemrograman C++.

2. Memahami penggunaan tipe data array dalam pembuatan program.

3. Mengenal dan bisa menggunakan fungsi pembangkit bilangan acak yang ada dalam Bahasa C++.

4. Mengenal dan bisa memakai fungsi untuk mendapatkan waktu dalam Bahasa C++.

5. Memahami tujuan dan mekanisme pengurutan data dan pencarian data.

6. Mampu menganalis kerja masing-masing metode pengurutan dan pencarian, sehingga bisa memilih metode pengurutan dan/atau pencarian data yang terbaik untuk suatu contoh kasus tertentu.

3.2TUGAS PENDAHULUAN

1. Jelaskan tentang array dan deklarasi array dalam C++ serta tipe data yang mungkin digunakan dalam array. Berikan contoh deklarasi array dalam C++ lalu hitung keperluan memory-nya.

2.Buatlah contoh cara membangkitkan bilangan random dalam C++.

3. Jelaskan apa yang dimaksud dengan sorting dan searching.

4. Jelaskan mekanisme metode pengurutan dan pencarian berikut serta berikan contoh pengurutan data yang dilakukan dengan metode tersebut.

a. Insertion Sort

b. Bubble Sort

c. Quick Sort

d. Sequential Search

e. Binary Search

5. Buatlah flowchart dan pseudocode (notasi algoritama) dari masing-masing metode di atas, lalu kerjakan trace terhadap flowchart yang anda buat.

SOAL

1.Implementasikan flowchart yang anda kerjakan ke dalam program.

2. Tambahkan pencatat waktu yang bisa digunakan untuk menghitung waktu proses masing-masing metode pengurutan data tersebut.

3. Lakukan uji coba terhadap program yang anda buat yang mana pembangkitan data akan diurutkan bisa dari masukan melalui keyboard dan juga bisa melalui pembangkitan bilangan acak (pengguna hanya memasukkan banyaknya bilangan yang akan diurutkan).

4. Lakukan uji coba terhadap program anda dengan pebangkitan bilangan yang akan diurutkan secara acak, yang mana banyaknya bilangan yang akan diurutkan sebanyak 1000, 2000, 4000, 8000, 16000, 32000, dan 64000 data. Lalu catatlah waktu yang akan diperlukan mengurukan masing-masing jumlah data tersebut lalu bandingkan.

JAWABAN1. ArrayArray merupakan koleksi data dimana setiap elemen memakai nama dan tipe yang sama serta setiap elemen diakses dengan membedakan indeks array-nya. Berikut adalah contoh variable bernama c yang mempunyai lokasi memori yang semuanya bertipe int.C[0] = -45;C[1] = 6;C[2] = 0;C[3] = 72;C[4] = 1543;C[5] = 43;C[6] = 4;Masing-masing nilai dalam setiap lokasi mempunyai identitas berupa nama c dan nomor indeks yang dituliskan di dalam tanda kurung [..]. sebagai contoh, 72 adalah nilai dari c[3].

Deklarasi ArrayVariable array dideklarasikan dengan mencantumkan tipe dan nama variable yang diikuti dengan banyaknya lokasi memori yang ingin dibuat. Dengan demikian, deklarasi untuk variable array c di atas adalah :int c[7];Perlu diperhatikan bahwa C++ secara otomatis menyediakan lokasi memori yang sesuai dengan yang dideklarasikan, dimana nomor indeks selalu dimulai dari 0. Nilai suatu variable array dapat juga diinisialisasi secara langsung pada saat deklarasi, misalnya;Int c[7] = {-45, 0, 6, 72, 1543, 43, 4}Berarti setiap lokasi memori dari variable array c langsung diisi dengan nilai-nilai yang dituliskan didalam tanda kurung kurawal.Banyaknya lokasi memori dapat secara otomatis disediakan sesuai degan banyaknya nilai yang akan dimasukkan, seperti contoh berikut yang tentunya membuat variable array dengan 10 lokasi memori:Int x []={10, 15 12, 5, 13, 9, 6, 17, 25, 31};Untuk memperjelas gambaran anda tentang array perhatikan contoh aplikasi variable array, yaitu program untuk menghitung jumlah setiap elemen dalam suatu array.Sebagai gambaran dari program tersebut, dapat dibuat sebuah algoritma sebagai berikut:Tentukan elemen array sebanyak yang diinginkan (dalam hal ini, elemen array tersebut berjumlah 12 buah)Tentukan nilai awal indeks, batas akhir indeks dan kenaikannya (dalam hal ini, nilai awal indeks adalah 0, batas akhir indeks adalah jumlah elemen array diatas yaitu 12 dikurangi dengan 1, kenaikannya adalah 1)Lakukan perulangan sesuai dengan langkah 2Lakukan penjumlahan masing-masing elemen array sampai batas akhir indeks terpenuhiTampilkan penjumlahan semua elemen arraySelesai.Sedangkan implementasi dalam program dapat dilihat berikut ini.

Contoh Program array

Gambar 3.1 Contoh Program ArrayBila program diatas dijalankan, akan muncul hasil :Total setiap elemen array adalah 383Adapun keterangan dari program diatas adalah sebagai berikut :Hasil penjumlahan setiap elemen array diperoleh dari jumlah data atau elemen array sebanyak 12 buah yang sudah didefinisikan pada awal program yaitu #define SIZE 12. Kemudian setiap elemen array dari a[0] yang berisi data, a[1] yang berisi data 3 di jumlahkan sampai dengan a[11] yang berisi data 45. Proses penjumlahan dilakukan pada loop dimulai dari 0 sampai data yang terakhir atau elemen terakhir.Array Dimensi SatuBentuknya :Tipe nama_var[ukuran];Dengan :Tipe : menyatakan jenis elemen array (int, char, unsigned, dan lain-lain)Ukuran : menyatakan jumlah maksimal elemen arrayContoh :Float nilai_ujian[5];Pada turbo C++ array disimpan dalam memori secara berurutan. Elemen pertama berindeks nol digambarkan sebagai berikut :Nilai_ujian[0]Nilai_ujian[1]Nilai_ujian[2]Nilai_ujian[3]Nilai_ujian[4]Masing-masing berbentuk float dan berjumlah 5 elemen.Selain itu, deklarasi array juga dapat berupa :Static int bulan[12]={1,2,3,4,5,6,7,8,9,10,11,12}Sesuai dengan deklarasi array diatas, maka isi variable array telah ditentukan yaitu :Bulan[0] bernilai 1Bulan[1] bernilai 2Bulan[2] bernilai 3Bulan[3] bernilai 4Bulan[4] bernilai 5Bulan[5] bernilai 6Bulan[6] bernilai 7Bulan[7] bernilai 8Bulan[8] bernilai 9Bulan[9] bernilai 10Bulan[10] bernilai 11Bulan[11] bernilai 12Untuk memperjelas tentang array dimensi satu, perhatikan maslah berikut ini :Misalkan Anda diminta membuat algoritma dan program untuk menampilkan bilangan dari 1 sampai bilangan 10, dengan pangkatnya masing-masing. Adapun batas nilai maksimal yang disimpan adalah 100.Sesuai yang telah Anda pelajari , bahwa bilangan 1 pangkatnya adalah 1. Hasil ini diperoleh dari 1*1, kemudian bilangan 2 pangkatnya adalah 4, hasil ini diperoleh dari 2*2 sampai bilangan 10 yang pangkatnya adalah 100, hasil ini diperoleh dari 10*10.

Algoritma dari permasalahan diatas adalah berikut ini :1. Tentukan elemen array untuk menampung nilai perkalian2. Tentukan nilai awal indeks, batas akhir indeks dan kenaikannya (dalam hal ini , nilai awal indeks adalah 0, batas akhir indeks adalah 10, dan kenaikannya adalah 3. Lakukan perulangan sesuai langkah 24. Nilai awal indeks ditambah dengan 15. Lakukan perkalian masing-masing elemen array sampai batas akhir indeks terpenuhi.6. Tampilkan perkalian semua elemen array7. Selesai .Contoh program array dimensi satuGambar 3.2 Program Array Dimensi SatuBila program dijalankan akan muncul hasil :Pangkat dari 1 adalah 1Pangkat dari 2 adalah 4Pangkat dari 3 adalah 9Pangkat dari 4 adalah 16Pangkat dari 5 adalah 25Pangkat dari 6 adalah 36Pangkat dari 7 adalah 49Pangkat dari 8 adalah 64Pangkat dari 9 adalah 81Pangkat dari 10 adalah 100Penjelasan :Dari program diatas, Anda dapat melihat ada 10 buah elemen yang masing-masing nilainya akan dipangkatkan, mulai dari 1 sampai 10. Dimana dalam memori sudah dipesan tempat sebanyak 100.Sedangkan apabila array akan dikirim ke sebuah fungsi caranya adalah hanya dengan mencantumkan nama array tanpa diikuti dengan tanda apapun, seperti contoh berikut :int c[5] = {-45, 0, 6, 72, 1543};JUMLAH (c, 5)-Dalam contoh diatas, yang memanggil fungsi JUMLAH dengan mengirimkan argument berupa variable array c dan sebuah konstanta 5. Perhatikan bahwa variable array ditulis hanya c tanpa notasi tambahan apapun. Deklarasi variable array yang menjadi parameter dari suatu fungsi dituliskan dengan nama variable array yang diikuti dengan tanda kurung [], tanpa menuliskan banyaknya lokasi memori yang diinginkan.

ARRAY DIMENSI DUA

Struktur array yang dibahas diatas mempunyai satu dimensi, sehingga variabelnya disebut variable array berdimensi satu. Pada bagian ini ditunjukkan array berdimensi lebih dari satu, yang sering disebut dengan array berdimensi dua.

Sebagai contoh, sebuah matrik B berukuran 2 X 3 dapat dideklarasikan dalam C seperti berikut : int B[2][3] = {[2, 4, 1}, {5, 3, 7}}; yang menempati lokasi memori dengan susunan sebagai berikut :

0 1 20 2 4 11 5 3 7Dan definisi variable untuk setiap elemen tersebut adalah :0 1 20 b[0][0] b[0][1] b[0][2]1 b[1][0] b[1][1] b[1][2] Sebagai implementasi dari keterangan diatas, perhatikan program berikut ini :Contoh Program array dimensi duaGambar 3.3 Program Array Dimensi Dua Bila program diatas dijalankan, akan mucul hasil :123456123450120400Penjelasan :Dari program diatas untuk matrik 1, penulisannya adalah 123 456, sedangkan pada matrik 2 penulisannya adalah 123 450. 0 disini mempunyai arti tempat yang disediakan untuk data kolom ke 3 dan baris ke 2 tidak diisi. Sedangkan matrik 3 penulisannya adalah 120 400. Dari matrik 3 disini kita bisa melihat bahwa pada baris pertama kolom ketiga data tidak diisi dan dianggap 0 dan pada baris kedua kolom kedua dan ketiga juga tidak diisi juga diisi 0.

Dalam program tersebut, juga digunakan fungsi untuk menampung hasil penjumlahan matrik.

Perhatikan contoh lain :Int datasiswa[4][3];Deklarasi diatas digunakan untuk mendeklarasikan suatu data siswa yang berbentuk demikian :No Nama Kelas Jumlah SiswaTahun 1989 Tahun 1990 Tahun 19911 Kelas 1 50 55 492 Kelas 2 60 60 553 Kelas 3 56 56 564 Kelas 4 49 50 54

Dari deklarasi diatas maka angka empat [4] menyatakan jumlah kelas, dan angka indek [3] menyatakan tahun. Data siswa [0][2] adalah Kelas 1 dan jumlah siswa tahun 1990 yaitu 55. Atau jumlah siswa kelas 1 pada tahun 1990 adalah 55.Bentuk data siswa dapat juga digambarkan sebagai berikut :

1 2 31 50 55 492 60 60 553 56 56 564 49 50 54Array ini dapat pula diberi nilai tetap dengan static seperti pada array dimensi satu. Deklarasinya adalah sebagai berikut :Static int jumlah [4][3]={50, 55, 49,60, 60, 55,56, 56, 56,49, 50, 54};

ARRAY DIMENSI BANYAK

Array ini seperti array dimensi dua tetapi dapat memiliki ukuran yang lebih besar. Sebenarnya array dimensi banyak ini tidak terlalu sering digunakan, tetapi sewaktu-waktu kalau dimensi yang dibutuhkan banyak, maka array ini sangat memegang peranan yang penting.

2. Membangkitkan Bilangan RandomTerdapat dua fungsi yang dibutuhkan untuk membangkitkan bilangan acaksrand()danrand(). Fungsi srand() dibutuhkan untuk menentukan "bibit" dari bilangan acak yang akan dibangkitkan. Sama seperti kalau kita menanam tumbuhan, bibit yang berbeda tentu akan menghasilkan tambuhan dewasa yang berbeda pula. Sedangkan fungsi rand() digunakan untuk menampilkan bilangan acak yang dihasilkan dari "bibit" yang diberikan ke fungsi srand().

Bentuk umum dari fungsi srand() adalah:view plainprint?1. srand(bibit);

Sebagai Contoh:view plainprint?1. srand(4);

Bentuk umum dari fungsi rand() adalah:

view plainprint?1. rand()%n;

Bilangan acak yang dihasilkan oleh fungsi rand() adalah dari 0 s/d (n-1).

Sebagai contoh:

view plainprint?1. rand()%10;

Perintah di atas akan menghasilkan bilangan antara 0 s/d 9.Seperti yang sudah dijelaskan sebelumnya, jika kita menggunakan "bibit" yang sama maka hasil yang diperoleh dari bibit ini pastilah sama. Untuk membuktikan, cobalah menjalankan program berikut berkali-kali dan perhatikan tampilan dilayar:

view plainprint?1. #include2. usingnamespacestd;3. 4. intmain()5. {6. srand(5);7. intdata=rand()%10;8. cout=9t=14a[2]=9a[3]:=14next ji:=3j:=414>=11a[3]=11a[4]=14end

output6,9,11,14

Sequental Search

Flowchart

a = cInput bilangan yang dicari (c)a 1NYa =< na a + 1YNBeginn, a, c : integerInput (n)a 1a i thenelsei(n-1) div 2endif;if c = i then output c {posisi data yang dicari}endif;

TracingInput:n = 4deret bilangan sebanyak n = 1 3 5 7c = 5Proses:i = 2 3Output:Bil[c] = 5