Konsep Pemgrograman LARIK
LARIK Larik atau array Penampung sejumlah data setipe Masing-masing elemen data larik diakses dengan menggunakan indeks Indeks dimulai dari 0 s.d. n-1 Menempati lokasi memori yang menyatu (contigious) Dikirim ke function selalu by reference, yang dikirim adalah alamat awal memori larik Larik
LARIK type menyatakan jenis data yang dapat ditampung larik. type array_name [ size ]; type array_name[ size ] = {data1, data2, ..., data_n} ; type array_name[ ] = {data1, data2, ..., data_n} ; type menyatakan jenis data yang dapat ditampung larik. size menyatakan kapasitas larik. Larik
LARIK int blt_gb[2]; char kar_gb[2]; float pch_gb[2]; int main() { 0 0 0.000000 0.000000 0 2293672 a b c 1.500000 2.600000 int blt_gb[2]; char kar_gb[2]; float pch_gb[2]; int main() { int blt[4]; char kar[ ] = {'a', 'b', 'c'}; float pch[2] = {1.5, 2.6}; printf("%d %d\n", blt_gb[0], blt_gb[1]); printf("%d %d\n", kar_gb[0], kar_gb[1]); printf("%f %f\n", pch_gb[0], pch_gb[1]); printf("%d %d\n", blt[0], blt[1]); printf("%c %c %c\n", kar[0], kar[1], kar[2]); printf("%f %f\n", pch[0], pch[1]); return 0; } Larik
LARIK 10 20 ‘a’ ‘b’ 1.5 10 20 0 0 int main() { a b 0 1.500000 0 int main() { int blt[4] = {10, 20}; char kar[3] = {'a', 'b'}; float pch[2] = {1.5}; printf("%d %d %d %d\n", blt[0], blt[1], blt[2], blt[3]); printf("%c %c %d\n", kar[0], kar[1], kar[2]); printf("%f %d\n", pch[0], pch[1]); return 0; } blt[0] blt[1] blt[2] blt[3] kar[0] kar[1] kar[2] pch[0] pch[1] 10 20 ‘a’ ‘b’ 1.5 Larik
ROTASI SATU POSISI KE KIRI Tulis program untuk mengentri sejumlah bilangan ke dalam sebuah larik lalu rotasi bilangan-bilangan tersebut ke kiri satu posisi. Jika susunan elemen data larik adalah 10 20 30 40 50 maka harus berubah menjadi 20 30 40 50 10. Gunakan satu larik saja. [0] [1] [2] [3] [4] [5] [6] 10 20 30 40 50 20 30 40 50 10 Larik
ROTASI SATU POSISI KE KIRI Data mana yang pertama dipindahkan? 10? 50? [0] [1] [2] [3] [4] [5] [6] 10 20 30 40 50 Pindahkan 10, 50 akan tertimpa. 10 [0] [1] [2] [3] [4] [5] [6] 10 20 30 40 50 Pindahkan 10, 50 akan tertimpa. 50 Larik
ROTASI SATU POSISI KE KIRI [0] [1] [2] [3] [4] [5] [6] 10 20 30 40 50 Larik
ROTASI SATU POSISI KE KIRI [0] [1] [2] [3] [4] [5] [6] 10 20 30 40 50 Larik
ROTASI SATU POSISI KE KIRI [0] [1] [2] [3] [4] [5] [6] 10 20 30 40 50 Larik
ROTASI SATU POSISI KE KIRI [0] [1] [2] [3] [4] [5] [6] 10 20 30 40 50 Larik
ROTASI SATU POSISI KE KIRI [0] [1] [2] [3] [4] [5] [6] 10 20 30 40 50 Larik
ROTASI SATU POSISI KE KIRI [0] [1] [2] [3] [4] [5] [6] 10 20 30 40 50 Larik
ROTASI SATU POSISI KE KIRI baca jumlah_data cacah 0 ulangi selama cacah < jumlah_data baca bilangan [cacah] cacah cacah + 1 akhir pengulangan temp bilangan [0] cacah 1 bilangan [cacah – 1] bilangan [cacah] bilangan [n – 1] temp cetak bilangan Larik
ROTASI SATU POSISI KE KIRI int main() { int bil[100], j_data, i, temp; printf("jumlah data ? "); scanf("%d", &j_data); printf("bilangan ? "); for (i = 0; i < j_data; i++) scanf("%d", &bil[i]); temp = bil[0]; for (i = 1; i < j_data; i++) bil[i - 1] = bil[i]; bil[i - 1] = temp; for (i = 0; i < j_data; i++) printf ("%d ", bil[i]); return 0; } jumlah data ? 7 bilangan ? 10 20 30 40 50 60 70 20 30 40 50 60 70 10 Larik
LARIK DUA DIMENSI Larik dua dimensi Seakan-akan disusun dalam baris dan kolom. Menggunakan dua indeks. type array_name [ row_size ] [ column_size ]; row_size menyatakan jumlah baris larik column_size menyatakan jumlah kolom larik Larik
LARIK DUA DIMENSI int main() { int larik_i [2][3] = {10, 20}; char larik_c [3][2] = {'a' , 'b', 'c'}; int i, j; for (i = 0; i < 2; i++) for (j = 0; j < 3; j++) printf("%d ", larik_i[i][j]); printf("\n"); for (i = 0; i < 3; i++) for (j = 0; j < 2; j++) printf("%d ", larik_c[i][j]); return 0; } 10 20 0 0 0 0 97 98 99 0 0 0 Larik
LARIK DUA DIMENSI int main() { int i, j, larik [3][4] = { {10, 20, 30 }, {}, {30, 40} }; for (i = 0; i < 3; i++) { for (j = 0; j < 4; j++) printf("%2d ", larik[i][j]); printf("\n"); } return 0; 10 20 30 0 0 0 0 0 30 40 0 0 Larik
LARIK DUA DIMENSI Struktur memori komputer untuk larik 2D. Fisikal Konseptual Larik
LARIK DUA DIMENSI Row-major order. data baris ke-1 ? 5 10 15 int main() { int a[2][3]; int b, k, i, *pi; for (b = 0; b < 2; b++) { printf("data baris ke-%d ? ", b + 1); for (k = 0; k < 3; k++) scanf("%d", &a[b][k]); } pi = &a[0][0]; for (i = 0; i < b * k; i++) printf("%d ", *(pi + i)); return 0; data baris ke-1 ? 5 10 15 data baris ke-2 ? 20 25 30 5 10 15 20 25 30 Larik
LARIK 2D SEBAGAI PARAMETER void cetak_larik (int a[2][3]) { int i, j; for (i = 0; i < 2; i++) { for (j = 0; j < 3; j++) printf("%2d ", a[i][j]); printf("\n"); } int main() { int arr[2][3], i, j; printf("ketik 6 bilangan :\n"); for (i = 0; i < 2; i++) scanf("%d", &arr[i][j]); cetak_larik(arr); return 0; dimensi ditulis lengkap ketik 6 bilangan : 5 15 25 35 45 55 5 15 25 35 45 55 Larik
PENJUMLAHAN MATRIKS Tulis program untuk menjumlahkan dua matriks berukuran sama yang masing-masing berukuran tidak lebih dari 10 x 10. Proses mengentri data matriks, menjumlahkan matriks, mencetak isi matriks masing-masing dilakukan pada sebuah function. a11 a12 a13 + b11 b12 b13 = c11 c12 c13 a21 a22 a23 b21 b22 b23 c21 c22 c23 Larik
PENJUMLAHAN MATRIKS # include <stdio.h> # include <conio2.h> void isi_matriks (int a[10][10], int brs, int klm) { int i, j, posisi_brs; printf("Matriks %d x %d\n", brs, klm); posisi_brs = wherey(); for (i = 0; i < brs; i++) { for (j = 0; j < klm; j++) { gotoxy(j * 5 + 1, posisi_brs); scanf("%d", &a[i][j]); } posisi_brs++; printf("\n"); Larik
PENJUMLAHAN MATRIKS void jumlah_matriks (int a[10][10], int b[10][10], int c[10][10], int brs, int klm) { int i, j; for (i = 0; i < brs; i++) for (j = 0; j < klm; j++) c[i][j] = a[i][j] + b[i][j]; } void cetak_matriks (int a[10][10], int brs, int klm) { for (i = 0; i < brs; i++) { printf("%3d ", a[i][j]); printf("\n"); Larik
PENJUMLAHAN MATRIKS int main () { int mat_a[10][10], mat_b[10][10], mat_c[10][10]; int baris, kolom; printf("ukuran baris ? "); scanf("%d", &baris); printf("ukuran kolom ? "); scanf("%d", &kolom); isi_matriks(mat_a, baris, kolom); isi_matriks(mat_b, baris, kolom); jumlah_matriks(mat_a, mat_b, mat_c, baris, kolom); printf("Hasil jumlah:\n"); cetak_matriks(mat_c, baris, kolom); return 0; } ukuran baris ? 2 ukuran kolom ? 3 Matriks 2 x 3 5 10 15 20 25 30 11 22 33 44 55 66 Hasil jumlah: 16 32 48 64 80 96 Larik
Buatlah data penjualan produk 2006 2007 2008 Produk 1 500 800 900 Produk 2 230 780 890 Produk 3 123 456 789