• Tidak ada hasil yang ditemukan

BAHASA PEMROGRAMAN 1 (PERTEMUAN 3)

N/A
N/A
Protected

Academic year: 2021

Membagikan "BAHASA PEMROGRAMAN 1 (PERTEMUAN 3)"

Copied!
57
0
0

Teks penuh

(1)

BAHASA PEMROGRAMAN 1

(PERTEMUAN 3)

ARRAY

KUMPULAN SOAL LATIHAN

PREPARED BY CHANDRA 092110187

(2)

PENGENALAN ARRAY

Array dari Pesawat

Array dari Serangga

Array dari Kartu

(3)

ARRAY

Seperti yang Anda ketahui, variabel

hanya bisa menampung 1 data saja. Jika ingin menampung data lebih banyak,

maka variabel juga di-deklarasikan juga banyak. Oleh karena itu, dapat

digunakan Array.

Array adalah sekelompok data yang bertipe sama.

Array bersifat Static, walaupun bisa diubah jadi Dynamic.

(4)

PERATURAN DALAM ARRAY

 Peraturan dalam penggunaan array:

Tidak ada assignment.

Gunakan perulangan untuk memasukkan data ke tiap elemen array.

Tidak ada perbandingan.

Gunakan perulangan untuk membandingan antara 2 elemen.

Tidak ada operasi aritmatika.

Gunakan perulangan untuk melakukan operasi aritmatika dalam array.

A[0] = A[1]

A[1] <= A[2]

(5)

FORMAT UMUM ARRAY

 Format umum:

<tipe data> <nama variabel> [jumlah elemen];

 Contoh:

int n [20]; // n bisa menampung

// 20 data (elemen).

char nama [5]; // nama bisa menampung

// 5 elemen. float jumlah [50];

(6)

PENGISIAN NILAI ARRAY

 Nilai elemen array dapat diisi seperti konstanta.

 Contoh:

int n [5]; // deklarasi array

n [0] = 0; // elemen pertama 0

n [4] = 15; // elemen kelima 15

int k [5] = {1,2,3,4}; // pengisian langsung char nama [ ] = “Hello”; // inisialisasi string

(7)

PENGAKSESAN NILAI ARRAY

Misalkan Anda telah mendeklarasikan dan mengisi nilai array seperti contoh: int n [5] = {1,2,3,4,5};

Maka untuk mengakses nilai ke-3 dalam variabel n, dapat menggunakan n[2].

(Ingat! indeks array selalu dimulai dari 0)

(8)

KETIK PROGRAM (1)

#include <iostream.h> int main()

{

int jarak [ ] = {44, 720, 96, 468, 6};

cout << “Nilai posisi 2 = " << jarak [1] << endl; cout << “Nilai posisi 5 = " << jarak [4] << endl; system(“pause”);

(9)

PENGGUNAAN ARRAY DENGAN

PERULANGAN (KETIK PROGRAM)

Pahami dan Apa hasil output dari program dibawah?

#include <iostream.h> int main() { int angka [5] = {4,6,1,7,3}; int k; for (k=0; k<5; k++) cout << angka [k] << “ “; system(“pause”); }

(10)

PEMBEDAHAN PROGRAM

int angka [5] = {4,6,1,7,3};

Pendeklarasian variabel angka yang bertipe integer dan memiliki 5 elemen, yang mana indeks 0 bernilai 4 hingga

indeks 4 bernilai 3.

int k;

Variabel k digunakan untuk perulangan. Setiap perulangan, harus bertipe integer.

(11)

PEMBEDAHAN PROGRAM

for (k=0; k<5; k++)

for merupakan salah satu statement untuk perulangan.

k=0 berarti perulangan dimulai dari 0.

k<5 berarti perulangan berakhir hingga ke-4.

k++ berarti perulangan akan bertambah 1.

 cout << angka [k] << “ “;

cout akan mengeluarkan output dari indeks angka yang dihasilkan oleh perulangan (nilai k).

Ketika k bernilai 0, maka akan ditampilkan 4.

(12)

FLOWCHART PROGRAM

START int angka [5] int k k=0 k<5? cetak angka [k] k++ END int angka [5] = {4,6,1,7,3}; int k; YES NO for (k=0;k<5;k++) cout << angka [k] << “ “;

(13)

INTERAKSI DENGAN USER

 Kita telah melihat bagaimana pendeklarasian array, cara mengisi nilai array, dan

menampilkan output dari array (menampilkan output merupakan salah satu aspek untuk

berinteraksi dengan user).

 Ketika Anda ingin mendapatkan nilai array dari user, pertama sekali tentukan tipe data yang akan digunakan. Selanjutnya, tentukan

seberapa banyak jumlah elemen yang akan dipakai oleh user.

 Setiap elemen akan diletakkan di masing-masing index yang telah ditentukan.

(14)

KETIK PROGRAM (2)

Perhatikan code listing dibawah!

#include <iostream.h>

int main() {

int page [5];

cout << “Masukkan jumlah halaman dari buku\n“; cout << "Buku 1: "; cin >> page [0];

cout << "Buku 4: "; cin >> page [3]; cout << "\nHasil Input Halaman Buku";

cout << "\nBuku 1: " << page [0] << “ halaman\n"; cout << "\nBuku 4: " << page [3] << " halaman\n"; system (“pause”);

(15)

PEMBEDAHAN PROGRAM

 int page [5];

Pendeklarasian variabel array.

 cout << “Masukkan jumlah halaman dari buku\n“;

 cout << "Buku 1: "; cin >> page [0];

Program akan menampilkan output “Buku 1: “ yang mana akan menunggu input dari user. Hasil input user akan disimpan di variabel page indeks ke-1 (page [0]).

 cout << "Buku 4: "; cin >> page [3];

Sama seperti diatas, namun program akan

menampilkan output “Buku 4: “. Hasil input akan disimpan di indeks ke-4 (page [3]).

(16)

PEMBEDAHAN PROGRAM

 cout << "\nHasil Input Halaman Buku";

 cout << "\nBuku 1: " << page [0] << “ halaman\n"; Program akan menampilkan output “Buku 1: “ yang

disertai hasil input user yang telah disimpan di page [0]

dan diakhiri dengan output “ halaman”.

 cout << "\nBuku 4: " << page [3] << " halaman\n";

Sama seperti diatas, namun menampilkan output “Buku 4: “ yang juga disertai input user di page [3] dan diakhiri dengan “ halaman”.

 system(“pause”);

(17)

ARRAY 2 DIMENSI

 Data yang disimpan dalam baris dan kolom biasanya disimpan dalam array 2 Dimensi.

 Pendeklarasian array 2 dimensi:

<tipe data> <nama> <jlh baris> <jlh kolom>; char nama [5] [5];

int nilai [10] [10];

(18)

CONTOH PENGGUNAAN ARRAY 2

DIMENSI (PENGISIAN & INDEKS)

#include <iostream.h> int main()

{

double distance [2] [4] = {44.14, 720.52, 96.08, 468.78, 6.28, 68.04, 364.55, 6234.12}; cout << "Members of the array";

cout << "\nDistance [0][0]" << ": " << distance[0][0]; cout << "\nDistance [0][1]" << ": " << distance[0][1]; cout << "\nDistance [0][2]" << ": " << distance[0][2]; cout << "\nDistance [0][3]" << ": " << distance[0][3]; cout << "\nDistance [1][0]" << ": " << distance[1][0]; cout << "\nDistance [1][1]" << ": " << distance[1][1]; cout << "\nDistance [1][2]" << ": " << distance[1][2]; cout << "\nDistance [1][3]" << ": " << distance[1][3]; cout << endl;

system(“pause”); }

(19)
(20)

KETIK PROGRAM (3)

Pahami dan Apa output dari program dibawah?

#include <iostream.h>

int main() {

int bilangan [10] [10];

int baris; int kolom;

for (baris = 0; baris < 10 ; baris++)

for (kolom = 0; kolom < 10; kolom++)

bilangan [baris] [kolom] = (baris+1) * (kolom+1);

for (baris = 0; baris < 10 ; baris++)

for (kolom = 0; kolom < 10; kolom++) cout << bilangan [baris] [kolom] << '\t'; system("pause");

(21)
(22)

MASALAH UTAMA DALAM ARRAY

1. Kelebihan elemen dalam array.

Kelebihan elemen memakan memory yang cukup banyak.

2. Fixed size.

Kebanyakan array bersifat static, sehingga ukurannya tidak dapat berubah.

3. Buffer overflow.

Jika menambah data yang melebihi elemen array, maka akan terjadi buffer overflow

(23)

CONTOH 1

Buatlah program dengan array

untuk menampilkan nilai

seperti format dibawah:

1 2 3 4 5 6 7 8 9 10

(24)
(25)
(26)

CONTOH 2

Buatlah program dengan array untuk

mencetak 5 bilangan yang diinput

oleh user!

Contoh Output: Masukkan Bilangan: 90 Masukkan Bilangan: 70 Masukkan Bilangan: 10 Masukkan Bilangan: 45 Masukkan Bilangan: 1

(27)
(28)
(29)

CONTOH 3 ARRAY

Ubahlah algoritma dibawah menjadi

program kecil (tidak ada input user & deklarasi variabel):

for i ← 1 to length [A] do

for j ← length [A] downto i+1 do

if A[j] < A[j-1] then

(30)

DALAM BAHASA C / C++

for (i=0; i<n; i++)

for (j=0; j<n-1; j++) if (array [j+1] > array [j]) { temp = array [j]; array [j] = array [j+1]; array [j+1] = temp; }

(31)

KUIS ARRAY

1.

Buatlah program dengan array

untuk mencetak 3 nama dan

jurusan dari input user!

2.

Buatlah program dengan array

untuk mencari bilangan

terbesar dari n data yang

diinput oleh user!

(32)

KUIS ARRAY

3. Modifikasilah contoh nomor 3 sehingga

(33)
(34)
(35)
(36)
(37)

BONUS 1 (SELECTION SORT)

 Selection Sort merupakan algoritma sorting yang kedua setelah Bubble Sort.

 Selection Sort dikenal akan kemudahannya dan juga memiliki kemampuan yang lebih dibanding sorting yang lain dalam situasi tertentu.

 Cara kerja selection sort:

1. Cari nilai minimum dalam indeks array. 2. Tukarkan nilainya di indeks pertama.

3. Diulang terus kedua langkah diatas (dimulai dari

posisi indeks kedua dan bertambah 1 setiap kali tukar posisi).

(38)
(39)

BONUS 1 (SELECTION SORT)

 Fakta tentang Selection Sort:

1. Selection sort memiliki kemampuan

yang jauh lebih baik dibanding Bubble Sort dan Gnome Sort, tetapi secara

umum, kalah dari Insertion Sort.

2. Selection Sort kurang mampu

menangani array dalam jumlah besar dan kalah dari Merge Sort.

(40)

BONUS 1 (SELECTION SORT)

for (i = 0; i < n - 1; i++) { minIndex = i; for (j = i + 1; j < n; j++) {

if (array [j] < array [minIndex]) minIndex = j;

}

if (minIndex != i) {

temp = array [i];

array [i] = array [minIndex]; array [minIndex] = temp; }

(41)

BONUS 2 (INSERTION SORT)

 Insertion sort merupakan algoritma sorting yang membandingkan elemen yang ada di dalam array hanya 1 kali cek saja.

 Cara kerja Insertion Sort:

1. Tentukan index minimum.

2. Bandingkan dengan elemen sebelumnya.

3. Jika elemen sebelumnya lebih besar, maka isi

nilai dengan nilai index minimum.

(42)
(43)

BONUS 2 (INSERTION SORT)

 Fakta tentang Insertion Sort:

1. Lebih efektif untuk menangani data

array yang berjumlah sedikit dan lebih baik dari Bubble Sort & Selection Sort.

2. Langsung dilakukan sorting begitu data

diterima.

3. Kurang efisien dalam data array yang

berjumlah banyak dibanding Quick Sort, Heap Sort, atau Merge Sort.

(44)

BONUS 2 (INSERTION SORT)

for (i = 1; i < n; i++) {

j = i;

while (j > 0 && array [j - 1] > array [j]) { temp = array [j]; array [j] = array [j - 1]; array [j - 1] = temp; j--; } }

(45)

BONUS 3 (SHELL SORT)

Dikembangkan tahun 1959 oleh Donald

Shell, algoritma shell sort cepat dalam menangani array dan mudah di-coding.

Karena Shell Sort dibuat berdasarkan

Insertion Sort yang telah diperbarui, maka cara kerjanya juga tidak jauh berbeda.

Shell Sort dapat menangani beberapa data sekaligus, sedangkan Insertion Sort hanya satu-persatu untuk pengurutan datanya.

(46)

BONUS 3 (SHELL SORT)

(47)

BONUS 3 (SHELL SORT)

 Fakta tentang Shell Sort:

1. Merupakan pengembangan dari

Insertion Sort.

2. Dapat menangani data hingga 5000

elemen.

3. Masih lambat dalam menangani data

banyak dibanding dengan Quick Sort,

(48)

BONUS 3 (SHELL SORT)

d = length; do {

d = (d + 1)/2;

for (i =0; i < (length - d); i++) { if (array[i + d] > array[i]) { tmp = array[i+d]; array[i + d] = array[i]; array[i] = tmp; } } } while(d > 1);

(49)

BONUS 4 (HEAP SORT)

Heap Sort merupakan pengembangan dari Selection Sort yang

membandingkan antara tiap elemen.

Heap Sort akan mengecek data terbesar dan mengurutkannya dibagian belakang.

Heap Sort dapat membandingkan data lebih dari 1, sehingga dapat

(50)
(51)

BONUS 4 (HEAP SORT)

 Fakta tentang Heap Sort:

1. Heap Sort selalu bersaing dengan

Quick Sort.

2. Heap Sort kurang handal dalam

menangani data di komputer yang

lambat. Tidak seperti Merge Sort yang mudah beradaptasi dengan

(52)

BONUS 4 (HEAP SORT)

# heapify

for i = n/2:1, sink(a,i,n)

→ invariant: a[1,n] in heap order

# sortdown for i = 1:n, swap a[1,n-i+1] sink(a,1,n-i)

→ invariant: a[n-i+1,n] in final position end # sink from i in a[1..n]

function sink(a,i,n):

# {lc,rc,mc} = {left,right,max} child index lc = 2*i

if lc > n, return # no children rc = lc + 1

mc = (rc > n) ? lc : (a[lc] > a[rc]) ? lc : rc if a[i] >= a[mc], return # heap ordered swap a[i,mc]

(53)

BONUS 5 (MERGE SORT)

Merge sort adalah algoritma sorting yang bersifat perbandingan. Dalam

pelaksanaannya, sorting ini stabil,

artinya menggantikan input order dari elemen yang sama dalam output yang telah terurut.

Merge Sort dikembangkan oleh John von Neumann tahun 1945.

(54)
(55)

BONUS 5 (MERGE SORT)

 Fakta tentang Merge Sort:

1. Merge Sort baik digunakan untuk

mengurutkan data linked list dibanding

Quick Sort dan Heap Sort.

2. Merge Sort masih lambat dibanding

Quick Sort dalam menangani data yang

bersifat pointer array (RAM-Based Array).

(56)

BONUS 5 (MERGE SORT)

# split in half m = n / 2 # recursive sorts sort a[1..m] sort a[m+1..n]

# merge sorted sub-arrays using temp array b = copy of a[1..m]

i = 1, j = m+1, k = 1 while i <= m and j <= n,

a[k++] = (a[j] < b[i]) ? a[j++] : b[i++]

→ invariant: a[1..k] in final position

while i <= m,

a[k++] = b[i++]

(57)

Referensi

Dokumen terkait

Kenyataan ini barangkali cukup sebagai pertimbangan untuk menyatakan bahwa praktik kawin lari Sasak tersebut dari perspektif hukum Islam berpotensi tidak baik dan

Pada tahap ini dilakukan dengan merumuskan masalah yang akan dihadapi dan tujuan yang akan dicapai dalam penelitian, antara lain pencarian susunan ketebalan laminasi

A fentiekből számos következtetés levonható és számos kérdés fölvethető: Sanders személye és tevékenysége Magyarországon a SZEB mandátumának lejárta

Nilai yang terkandung dalam surat al-maa’uun yakni nilai-nilai sosial pendidikan Islam meliputi; menyayangi anak yatim, memberi makan kepada fakir miskin, dan

Menurut joko Tri Haryanto Dalam penelitiannya tentang Kemandirian Daerah : Sebuah Perspektif dengan Metode Path Analysis menyatakan bahwa esensi utama

Hukum Pidana merupakan mata kuliah yang memberikan uraian mengenai pemahaman awal hukum pidana yang menguraikan Pengertian,tujuan,fungsi, jenis-jenis dan kaitannya

Pergerakan dan keramahan pedestrian, di mana dalam elemen ini memfasilitasi pergerakan pengunjung dari satu tempat menuju tempat lainnya, sehingga aspek

Hasil penelitian menunjukkan bahwa pengembang berperan aktif dalam mengimplementasikan rekomendasi penanganan dampak lalu lintas, utamanya penanganan dampak lalu lintas