Algoritma dan Struktur Data ARRAY (bag.1) Algoritma dan Struktur Data Muhammad Fachrie, S.T. 3/24/2012
Definisi Array (larik) merupakan koleksi data, dimana setiap elemen memakai nama dan tipe yang sama, serta setiap elemen diakses dengan membedakan indeks array-nya. Jenis-jenis array: Array 1 dimensi Array 2 dimensi Array 3 dimensi Muhammad Fachrie, S.T. 3/24/2012
Ilustrasi Array 1 Dimensi Array ANEH 21 -9 12 54 1 -23 42 71 2 3 4 5 6 7 8 9 10 Indeks array ANEH[1]: 21 ANEH[2]: -9 ANEH[8]: -23 Muhammad Fachrie, S.T. 3/24/2012
Deklarasi Array dalam Notasi Algoritmik <nama variabel> : array [a..b] of <tipe data> dimana, a: nilai awal indeks array b: nilai akhir indeks array Contoh: BilPrima : array [1..10] of integer Muhammad Fachrie, S.T. 3/24/2012
Contoh Penggunaan Array lucu : array [1..4] of integer Lalu, untuk setiap indeks array, dimasukkan bilangan integer: aneh[1] = 3 aneh[2] = 12 aneh[3] = 0 aneh[4] = -9 1 2 3 4 Terbentuk sebuah array dengan indeks dari 1 s.d. 4 3 12 -9 1 2 4 Muhammad Fachrie, S.T. 3/24/2012
Penomoran indeks pada Bahasa C Pada notasi algoritmik, penomoran indeks array dimulai dari 1. Contoh: Sedangkan pada Bahasa C, penomoran indeks array dimulai dari 0. A n d i 1 2 3 4 5 A n d i 1 2 3 4 Muhammad Fachrie, S.T. 3/24/2012
String = Array, dalam Bahasa C Di dalam Bahasa C, tipe data string merupakan sebuah array, dimana elemennya terdiri dari sebuah karakter penyusun string tersebut. Contoh: char nama[5]; strcpy(nama,”Andi”); Maka, elemen array dari variabel nama adalah: nama[0] : “A” nama[1] : “n” nama[2] : “d” nama[3] : “i” nama[4] : “ “ Muhammad Fachrie, S.T. 3/24/2012
A n d i 1 2 3 4 nama nama[0] nama[1] nama[2] nama[3] nama[4]
Contoh Algoritma menggunakan Array Integer /*Algoritma menyimpan 4 buah angka ke dalam array*/ /*KAMUS*/ angka : array [1..4] of integer /*ALGORITMA*/ //menerima input dari user input(angka[1]); input(angka[2]); input(angka[3]); input(angka[4]); //menampilkan isi dari array output(angka[1]); Muhammad Fachrie, S.T. 3/24/2012
Implementasi dengan Bahasa C /*Program menyimpan 4 buah bilangan dalam array*/ #include <stdio.h> #include <conio.h> void main() { //deklarasi variabel int angka[10]; //menerima input array dari user printf("angka ke-1: "); scanf("%d",&angka[0]); printf("angka ke-2: "); scanf("%d",&angka[1]); printf("angka ke-3: "); scanf("%d",&angka[2]); printf("angka ke-4: "); scanf("%d",&angka[3]); //menampilkan isi array printf(“angka ke-1: %d”, angka[0]); printf(“angka ke-2: %d”, angka[1]); printf(“angka ke-3: %d”, angka[2]); printf(“angka ke-4: %d”, angka[3]); getch(); } Muhammad Fachrie, S.T. 3/24/2012
Contoh Algoritma menggunakan Array String /*Algoritma menampilkan elemen karakter dari sebuah String*/ /*KAMUS*/ nama : array [1..5] of char /*ALGORITMA*/ Nama = “Andi” //menampilkan isi dari array output(nama[1]); output(nama[2]); output(nama[3]); output(nama[4]); output(nama[5]); Muhammad Fachrie, S.T. 3/24/2012
Implementasi dengan Bahasa C /*Program untuk menampilkan elemen dari sebuah string*/ #include <stdio.h> #include <conio.h> void main() { char nama[5]; strcpy(nama,"Andi"); printf("karakter ke-1: %c \n",nama[0]); printf("karakter ke-2: %c \n",nama[1]); printf("karakter ke-3: %c \n",nama[2]); printf("karakter ke-4: %c \n",nama[3]); printf("karakter ke-5: %c \n",nama[4]); getch(); } Muhammad Fachrie, S.T. 3/24/2012
Bagaimana cara mengisi array yang jumlah indeksnya sangat banyak? Muhammad Fachrie, S.T. 3/24/2012
Apakah seperti ini algoritmanya? angka : array [1..100] of integer /*ALGORITMA*/ input(angka[1]); input(angka[2]); input(angka[3]); input(angka[4]); input(angka[5]); input(angka[6]); input(angka[7]); input(angka[8]); input(angka[9]); input(angka[10]); input(angka[11]); input(angka[12]); input(angka[13]); input(angka[14]); input(angka[15]); input(angka[16]); input(angka[17]); … input(angka[100]); Muhammad Fachrie, S.T. 3/24/2012
TIDAK EFISIEN! Gunakan Struktur Pengulangan! Muhammad Fachrie, S.T. 3/24/2012
Mengolah Array dengan Jumlah Indeks yang Sangat Banyak /*Algoritma menyimpan 100 buah angka ke dalam array*/ /*KAMUS*/ angka : array [1..100] of integer idx : integer /*ALGORITMA*/ //menerima input dari user idx traversal [1..100] input(angka[idx]); //menampilkan isi array ke monitor Idx traversal [1..100] output(angka[idx]); Muhammad Fachrie, S.T. 3/24/2012
Implementasi dalam Bahasa C /*Program menyimpan 100 buah angka ke dalam array*/ #include <stdio.h> #include <conio.h> void main() { int angka[100], idx; //menerima input dari user for (idx=0; idx<= 99; idx++) printf(“angka ke-%d : ”,idx); scanf(“%d”,&angka[idx]); } //menampilkan isi array ke monitor for (idx=0; idx<=199; idx++) printf(“angka ke-%d : %d\n”,idx,angka[idx]); getch(); Muhammad Fachrie, S.T. 3/24/2012
Latihan Buatlah sebuah program yang mengandung array dengan ketentuan berikut: Panjang indeks array = 10 Tipe array = integer Kemudian, isilah array tersebut secara berturut-turut dengan angka: 11, 23, 17, 20, 9, 16, 42, 13, 37, 10. Lalu, lakukanlah modifikasi pada array tersebut dengan ketentuan semua angka genap diganti dengan nol (0). Contoh: INPUT: OUTPUT: 11 23 17 20 9 16 42 13 37 10 11 23 17 9 13 37 Muhammad Fachrie, S.T. 3/24/2012
PIKIRKAN! KERJAKAN! PASTI BISA! Muhammad Fachrie, S.T. 3/24/2012
Logika Berpikirnya Masukkan dahulu semua angka ke dalam array Buat perulangan dari sebanyak jumlah indeks array Cek satu angka pada sebuah indeks array Jika angka tersebut habis dibagi 2, maka ganti angka tersebut dengan nol (0) Tampilkan kembali array yang telah dimodifikasi Muhammad Fachrie, S.T. 3/24/2012
11 23 17 20 9 16 42 13 37 10 Habis dibagi 2 Habis dibagi 2 Habis dibagi 2 11 23 17 9 13 37 Muhammad Fachrie, S.T. 3/24/2012