6 adp array (larik)

42
ARRAY (LARIK) algoritma dan dasar pemrograman

Transcript of 6 adp array (larik)

Page 1: 6   adp array (larik)

ARRAY (LARIK)

algoritma dan dasar pemrograman

Page 2: 6   adp array (larik)

LARIK

• Larik adalah kumpulan dari nilai-nilai bertipe sama dalam urutan tertentu yang menggunakan sebuah nama yang sama.

• Nilai-nilai di suatu larik disebut dengan elemen-elemen larik.

• Letak urutan dari suatu elemen larik ditunjukkan oleh suatu subscript atau suatu index.

Page 3: 6   adp array (larik)

LARIK

• Larik dapat berdimensi satu, dua, tiga, atau lebih.

• Larik dimensi satu (one-dimensional array) mewakili bentuk suatu vektor.

• Larik dimensi dua (two-dimensional array) mewakili bentuk dari suatu matrik atau tabel.

• Larik dimensi tiga (three-dimensional array) mewakili bentuk suatu ruang.

Page 4: 6   adp array (larik)

DEKLARASI LARIK

• Larik dideklarasikan dengan menyebutkan jumlah dari elemennya yang ditulis di antara tanda ‘[]’. Contohnya:

int X[5]; //larik dimensi satu dengan nama X yang dideklarasikan dengan tipe data int yang mempunyai 5 buah elemen.

• Elemen-elemen dari larik X ini adalah:X[0], X[1], X[2], X[3], dan X[4]

• Misalkan suatu variabel integer I bernilai 3, maka variabel ini dapat digunakan sebagai indeks dari larik, yaitu X[I] yang berarti menunjukkan elemen larik ke – 4 atau X[3].

• Untuk Bahasa C, elemen pertama dari suatu larik dimulai dengan indeks nol.

Page 5: 6   adp array (larik)

DEKLARASI LARIK• Deklarasi dapat juga langsung dengan memberikan nilai-nilai awal

elemen lariknya. Misalnya Vektor X berikut ini:X = {5, 3, 7}Vektor ini dapat dideklarasikan sebagai larik dimensi satu dengan jumlah elemen 3 dengan nilai-nilai elemennya 5, 3, dan 7, seperti berikut ini:int X[3] = {5, 3, 7};Nilai-nilai elemen larik ini adalah:X[0] bernilai 5X[1] bernilai 3X[2] bernilai 7Misalnya nilai elemen ke – 1 akan dikalikan dengan nilai elemen ke – 3, maka dapat ditulis X[0] * X[2] dengan hasilnya adalah 35.

Page 6: 6   adp array (larik)

BEDA LARIK DENGAN VARIABEL BIASA

• Perbedaan utama antara larik dengan variabel biasa adalah sebuah larik dapat mempunyai sejumlah nilai, sedangkan sebuah variabel biasa hanya dihubungkan dengan sebuah nilai saja.

• Misalnya terdapat tiga buah nilai, yaitu 8, 5, dan 7. Jika nilai-nilai ini akan dihubungkan dengan sebuah nama saja, maka dapat digunakan sebuah larik. Jika digunakan variabel untuk menyimpan nilai-nilai tersebut, maka harus digunakan tiga buah variabel dengan nama-nama yang berbeda, misalnya variabel X1 untuk menyimpan nilai 8, variabel X2 untuk nilai 5, dan variabel X3 untuk nilai 7.

Page 7: 6   adp array (larik)

/* ---------------------------------------------------- Nama Program: ADP_Larik_1.cpp Perbedaan Larik dengan Variabel Biasa ------------------------------------------------------ */

#include <stdio.h>#include <stdlib.h>

main(){ float X1=5, X2=3, X3=7, Total;

printf("Contoh Program Menghitung Tiga Buah Nilai\n"); printf("yang Disimpan pada Tiga Variabel\n"); printf("____________________________________\n"); printf("___________________________\n"); printf("\n");

Total = X1 + X2 + X3; printf("Total = %.2f\n", Total); printf("\n");

system("pause");}

Page 8: 6   adp array (larik)

Hasil Eksekusi

Page 9: 6   adp array (larik)

BEDA LARIK DENGAN VARIABEL BIASA

• Contoh ADP_Larik_2.cpp pada slide sebelumnya hanya praktis jika digunakan untuk menjumlahkan nilai dari 3 variabel saja. Tetapi jika jumlah variabel yang akan dijumlahkan > 3, misalnya 1000, maka akan lebih jika menggunakan larik untuk mewakili nilai-nilai tersebut, seperti terlihat pada contoh berikut ini.

Page 10: 6   adp array (larik)

/* ---------------------------------------------------- Nama Program: ADP_Larik_2.cpp Perbedaan Larik dengan Variabel Biasa ------------------------------------------------------ */

#include <stdio.h>#include <stdlib.h>

main(){ float X[3]={5,3,7}, Total=0; int I;

printf("Contoh Program Menghitung Tiga Buah Nilai "); printf("yang Disimpan pada Tiga Variabel\n"); printf("____________________________________"); printf("___________________________\n"); printf("\n");

for(I=0;I<=2;I++) Total = Total + X[I]; printf("Total = %.2f\n", Total); printf("\n");

system("pause");}

Page 11: 6   adp array (larik)

Hasil Eksekusi

Page 12: 6   adp array (larik)

INISIALISASI LARIK TIDAK BERUKURAN

• Dalam mendeklarasikan larik dengan memberikan nilai-nilai elemen awalnya, jumlah dari elemen larik dapat ditulis ‘[]’. Larik seperti ini disebut dengan larik yang tidak berukuran.

• Perhatikan contoh pada slide berikut dimana larik dimensi satu X yang mempunyai nilai-nilai elemen 5, 2, dan 7 dideklarasikan dengan tidak berukuran.

Page 13: 6   adp array (larik)

/* --------------------------------------------- Nama Program: ADP_Larik_3.cpp Inisialisasi Larik Tidak Berukuran --------------------------------------------- */

#include <stdio.h>#include <stdlib.h>

main(){ float X[]={5,3,7}, Total=0; int I;

printf("Contoh Program Inisialisasi Larik Tidak Berukuran\n"); printf("________________________________________\n"); printf("\n");

for(I=0;I<=2;I++) Total = Total + X[I]; printf("Total = %.2f\n", Total); printf("\n");

system("pause");}

Page 14: 6   adp array (larik)

Hasil Eksekusi

Page 15: 6   adp array (larik)

INISIALISASI LARIK TIDAK BERUKURAN

• Untuk larik tidak berukuran ini, bahasa C akan secara otomatis menentukan ukuran (jumlah elemen dari lariknya) tergantung dari jumlah nilai-nilai elemen yang diberikan sewaktu deklarasi.

• Pada contoh di slide sebelumnya jumlah nilai-nilai elemen yang diberikan adalah sebanyak 3 buah, sehingga larik X tersebut dapat juga dikatakan mempunyai 3 buah elemen.

Page 16: 6   adp array (larik)

INISIALISASI LARIK TIDAK BERUKURAN

• Permasalahan sering kali muncul jika programer belum mengetahui jumlah dari elemen-elemen lariknya.

• Permasalahan seperti ini sering terjadi untuk suatu program yang menggunakan suatu larik dengan jumlah elemennya ditentukan oleh pemakai program, atau dengan kata lain, jumlah elemen dari larik tidak ditentukan di dalam program, tetapi ditentukan setelah program dijalankan.

Page 17: 6   adp array (larik)

INISIALISASI LARIK TIDAK BERUKURAN

• Untuk mengatasi permasalahan seperti ini, jumlah elemen dari larik dapat ditentukan terlebih dahulu di dalam program secara maksimum dengan batasan memori yang digunakan masih mencukupi. Misalnya jumlah elemen dari larik ditentukan terlebih dahulu sebesar 1000 buah. Pemakai program kemudian ditanyakan jumlah elemen larik yang sebenarnya dengan batasan jumlah elemen maksimumnya adalah sebanyak yang telah ditentukan di dalam program. Misalny pemakai program hanya menggunakan sebanyak 200 elemen larik saja, maka sisi elemen yang telah ditentukan di dalam program tidak akan digunakan, walaupun sudah “dipesankan” tempatnya di dalam memori.

Page 18: 6   adp array (larik)

INISIALISASI LARIK TIDAK BERUKURAN

• Program berikut ini akan menghitung nilai total, rata-rata dan deviasi standar (penyimpangan baku atau standard deviation) dari sejumlah nilai data.

• Program ini mengijinkan pemakai program untuk menentukan jumlah dari data. Jumlah dari data ini menunjukkan jumlah dari elemen.

Page 19: 6   adp array (larik)

/* ----------------------------------------------- Nama Program: ADP_Larik_4.cpp Inisialisasi Larik Tidak Berukuran ----------------------------------------------- */

#include <stdio.h>#include <math.h>#include <stdlib.h>

main(){

int N, I; float X[1000], Total=0, Rata, Xi_Rata_2=0, SD;

printf("Contoh Program Untuk Menghitung Nilai Rata-rata "); printf("dan deviasi standar\n"); printf("_________________________________________"); printf("___________________\n"); printf("\n");

//Masukan jumlah dari data printf("Masukkan Jumlah Data (Maksiumum 1000 buah): "); scanf("%d", &N); printf("\n");

//Masukan nilai data ke 0 sampai dengan ke N-1 //dan hitung nilai totalnya for(I=0;I<N;I++){ printf("Nilai Data ke - %d : \n",I+1); scanf("%f", &X[I]); Total = Total + X[I]; }

//Hitung nilai rata-ratanya Rata = Total / N;

//Hitung Nilai (Xi - Rata)^2 for(I=0;I<N;I++) Xi_Rata_2 += ((X[I] - Rata) * (X[I] - Rata));

//Hitung Deviasi Standar SD = sqrt(Xi_Rata_2 / N); //Tampilkan hasil printf("\n"); printf("Jumlah Data : %d\n", N); printf("Total Nilai : %.2f\n", Total); printf("Rata-rata Nilai : %.2f\n", Rata); printf("Deviasi Standar : %.2f\n", SD);

system("pause");}

Page 20: 6   adp array (larik)

Hasil Eksekusi

Page 21: 6   adp array (larik)

LARIK DIMENSI SATU

• Program berikut untuk menampikan bilangan dari 1 sampai bilangan 10, dengan pangkatnya masing-masing. Batas nilai maksimum yang disimpan adalah 100.

Page 22: 6   adp array (larik)

/* ------------------------------------------ Nama Program: ADP_Larik_5_Dimensi_Satu.cpp Larik Dimensi Satu ------------------------------------------ */

#include <stdio.h>#include <stdlib.h>

main(){ int square[100]; int I; int K;

printf("Contoh Program Perhitungan Perpangkatan\n"); printf("_________________________________________"); printf("\n");

//Penghitungan perpangkatan for(I=0;I<10;I++){ K = I + 1; square[I] = K*K; printf("\nPangkat dari %d adalah %d", K, square[I]); }

printf("\n"); printf("\n"); system("pause");}

Page 23: 6   adp array (larik)

Hasil Eksekusi

Page 24: 6   adp array (larik)

LARIK DIMENSI DUA

• Program berikut untuk menunjukkan bagaiman suatu larik dimensi dua dideklarasikan dan ditampilkan nilai-nilai elemennya dalam bentuk matrik.

Page 25: 6   adp array (larik)

/* ---------------------------------------------------------------- Nama Program: ADP_Larik_6_Dimensi_Dua.cpp Larik Dimensi Dua ---------------------------------------------------------------- */

#include <stdio.h>#include <stdlib.h>

main(){ int I,J; float X[3][4] = { 10.00, 20.00, 30.00, 40.00, 15.55, 25.55, 35.55, 45.55, 25.00, 35.00, 45.00, 55.00 };

printf("Contoh Program Larik Dimensi Dua\n"); printf("____________________________\n"); printf("\n");

//Menampilkan dalam bentuk matrik for(I=0;I<3;I++){ for(J=0;J<4;J++) printf("%8.2f", X[I][J]); printf("\n"); }

printf("\n"); system("pause");}

Page 26: 6   adp array (larik)

Hasil Eksekusi

Page 27: 6   adp array (larik)

LARIK DIMENSI DUA

• Program berikut untuk menghitung perkalian dua buah matrik, dimana perkalian dua buah matrik dapat dilakukan jika banyaknya kolom matrik pertama adalah sama dengan banyaknya baris matrik yang kedua.

Page 28: 6   adp array (larik)

/* -------------------------------------------------------------------- Nama Program: ADP_Larik_6a_Dimensi_Dua.cpp Larik Dimensi Dua -------------------------------------------------------------------- */

#include <stdio.h>#include <stdlib.h>

main(){

int I,J,K, Baris_A,Kolom_A,Kolom_B; int Matrik_A[100][100],Matrik_B[100][100],Matrik_C[100][100];

printf("Contoh Program Perkalian Matrik\n"); printf("_______________________________\n"); printf("\n");

//Memasukkan orde matrikprintf("Masukkan Jumlah Baris Matrik A: ");

scanf("%d",&Baris_A); printf("Masukkan Jumlah Kolom Matrik A: "); scanf("%d",&Kolom_A); printf("\n"); printf("Masukkan Jumlah Kolom Matrik B: "); scanf("%d",&Kolom_B); printf("\n");

//Memasukkan data Matrik A printf("Masukkan Nilai Matrik A:\n"); for(I=0;I<Baris_A;I++){ for(J=0;J<Kolom_A;J++){ printf("Matrik A[%3d,%3d]: ", I+1,J+1); scanf("%d",&Matrik_A[I][J]); } printf("\n"); }

//Memasukkan data Matrik B printf("Masukkan Nilai Matrik B:\n"); for(J=0;J<Kolom_A;J++){ for(K=0;K<Kolom_B;K++){ printf("Matrik B[%3d,%3d]: ", J+1,K+1); scanf("%d",&Matrik_B[J][K]); } printf("\n"); }

//Menghitung Matrikk C hasil perkalian Matrik A & Matrik B for(I=0;I<Baris_A;I++){ for(K=0;K<Kolom_B;K++){ Matrik_C[I][K] = 0; for(J=0;J<Kolom_A;J++) Matrik_C[I][K] += Matrik_A[I][J] * Matrik_B[J][K]; } }

//Menampilkan hasil perkalian matrik printf("Hasil perkalian matrik: \n"); for(I=0;I<Baris_A;I++){ for(K=0;K<Kolom_B;K++) printf("%7d",Matrik_C[I][K]); printf("\n"); } printf("\n"); system("pause");}

Page 29: 6   adp array (larik)

Hasil Eksekusi

Page 30: 6   adp array (larik)

LARIK STRING

• Program berikut ini menunjukkan deklarasi suatu larik string dimensi satu yang dibentuk dari larik karakter berdimensi dua (perhatikan bahwa deklarasi ini menggunakan tipe char) dan fungsi printf() yang menampilkan lariknya menggunakan kode format “%c”.

Page 31: 6   adp array (larik)

/* ---------------------------------------------------------------- Nama Program: ADP_Larik_7_Larik_String.cpp Larik String ---------------------------------------------------------------- */

#include <stdio.h>#include <stdlib.h>

main(){ int I,J; char Hari[7][10]={ "Minggu", "Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu" };

printf("Contoh Program Larik String Dimensi Satu\n"); printf("__________________________________\n"); printf("\n");

for(I=0;I<7;I++){ for(J=0;J<10;J++){ printf("%c", Hari[I][J]); printf("\n"); } }

system("pause");}

Page 32: 6   adp array (larik)

Hasil Eksekusi

Page 33: 6   adp array (larik)

LARIK STRING

• Program berikut ini menunjukkan deklarasi suatu larik string dimensi satu yang tetap akan ditampilkan sebagai larik string dimensi satu, sehingga fungsi printf() yang akan menampilkannya menggunakan kode format “%s”.

Page 34: 6   adp array (larik)

/* ------------------------------------------------------------------ Nama Program: ADP_Larik_7a_Larik_String.cpp Larik String ------------------------------------------------------------------ */

#include <stdio.h>#include <stdlib.h>

main(){ int I; char Hari[7][10]={ "Minggu", "Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu" };

printf("Contoh Program Larik String Dimensi Satu\n"); printf("__________________________________\n"); printf("\n");

for(I=0;I<7;I++){ printf("%s", Hari[I]); printf("\n"); }

printf("\n"); system("pause");}

Page 35: 6   adp array (larik)

Hasil Eksekusi

Page 36: 6   adp array (larik)

LARIK STRING

• Program berikut ini menunjukkan bagaimana larik string dimensi dua (larik karakter dimensi tiga) dideklarasikan dan ditampilkan.

Page 37: 6   adp array (larik)

/* ------------------------------------------------------------------ Nama Program: ADP_Larik_7b_Larik_String.cpp Larik String ------------------------------------------------------------------ */

#include <stdio.h>#include <stdlib.h>

main(){ int I,J; char Nama[3][5][15]={ "Retno", "Aulia", "Risang", "Feyzar", "Pamungkas", "Lisa", "Desi", "Agung", "Galih", "Kamilus", "Hafiza", "Meli", "Ulfa", "Agung", "Irfan", };

printf("Contoh Program Larik String Dimensi Dua\n"); printf("__________________________________\n"); printf("\n");

for(I=0;I<3;I++){ printf("Mahasiswa di kelas %ld adalah: \n", I+1); for(J=0;J<5;J++) printf("%s\n",Nama[I][J]); printf("\n"); }

printf("\n"); system("pause");}

Page 38: 6   adp array (larik)

Hasil Eksekusi

Page 39: 6   adp array (larik)

INISIALISASI LARIK STRING TIDAK BERUKURAN

• Untuk larik-larik string, seringkali panjang dari nilai-nilai stringnya satu dengan yang lainnya tidak sama (misalnya nilai string “Minggu” tidak sama panjangnya dengan nilai string “Senin”), sehingga jika dideklarasikan dengan panjang yang maksimum, maka akan memboroskan tempat memori. Untuk mengatasi masalah ini, dapat digunakan inisialisasi larik tak berukuran.

Page 40: 6   adp array (larik)

/* ------------------------------------------------------------------ Nama Program: ADP_Larik_7c_Larik_String.cpp Larik String ------------------------------------------------------------------ */

#include <stdio.h>#include <stdlib.h>

main(){ int I; char Hari[][10]={ "Minggu", "Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu", };

printf("Contoh Program Inisialisasi Larik String Tak Berukuran\n"); printf("___________________________________________\n"); printf("\n");

for(I=0;I<7;I++){ printf("%s\n",Hari[I]); }

printf("\n"); system("pause");}

Page 41: 6   adp array (larik)

Hasil Eksekusi

Page 42: 6   adp array (larik)

PUSTAKA

• Kristanto, Andri. (2009). Algoritma & Pemrograman dengan C++ Edisi 2. Yogyakarta. Graha Ilmu.

• Hartono, Jogiyanto, MBA., Ph.D. (2002). Konsep Dasar Pemrograman Bahasa C. Yogyakarta. Andi.