Konsep Pemgrograman LARIK LARIK Larik atau array Penampung

  • Slides: 26
Download presentation
Konsep Pemgrograman LARIK

Konsep Pemgrograman LARIK

LARIK • Larik atau array – Penampung sejumlah data setipe – Masing-masing elemen data

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 2

LARIK type array_name [ size ]; type array_name[ size ] = {data 1, data

LARIK type array_name [ size ]; type array_name[ size ] = {data 1, data 2, . . . , data_n} ; type array_name[ ] = {data 1, data 2, . . . , data_n} ; type menyatakan jenis data yang dapat ditampung larik. size menyatakan kapasitas larik. Larik 3

LARIK int blt_gb[2]; char kar_gb[2]; float pch_gb[2]; int main() { int blt[4]; char kar[

LARIK 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 printf("%f printf("%d printf("%c printf("%f return 0; %dn", blt_gb[0], blt_gb[1]); %dn", kar_gb[0], kar_gb[1]); %fn", pch_gb[0], pch_gb[1]); %dn", blt[0], blt[1]); %c %cn", kar[0], kar[1], kar[2]); %fn", pch[0], pch[1]); } Larik 0 0 0. 000000 0 2293672 a b c 1. 500000 2. 600000 4

LARIK 10 20 0 0 int main() { a b 0 int blt[4] =

LARIK 10 20 0 0 int main() { a b 0 int blt[4] = {10, 20}; 1. 500000 0 char kar[3] = {'a', 'b'}; float pch[2] = {1. 5}; printf("%d %dn", blt[0], blt[1], blt[2], blt[3]); printf("%c %c %dn", kar[0], kar[1], kar[2]); printf("%f %dn", pch[0], pch[1]); return 0; } blt[0] blt[1] blt[2] blt[3] 10 20 0 0 kar[1 kar[2 ] ] ] ‘a’ ‘b’ pch[ 0] 1] 0 1. 5 Larik 0 5

ROTASI SATU POSISI KE KIRI Tulis program untuk mengentri sejumlah bilangan ke dalam sebuah

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 10 Larik 6

ROTASI SATU POSISI KE KIRI Data mana yang pertama dipindahkan? 10? 50? [0] [1]

ROTASI SATU POSISI KE KIRI Data mana yang pertama dipindahkan? 10? 50? [0] [1] [2] [3] [4] [5] [6] 10 20 30 40 50 10 Pindahkan 10, 50 akan tertimpa. [0] [1] [2] [3] [4] [5] [6] 10 20 30 40 50 50 Larik 7

ROTASI SATU POSISI KE KIRI [0] [1] [2] [3] [4] [5] [6] 10 20

ROTASI SATU POSISI KE KIRI [0] [1] [2] [3] [4] [5] [6] 10 20 30 40 50 10 Larik 20 30 40 50 8

ROTASI SATU POSISI KE KIRI [0] [1] [2] [3] [4] [5] [6] 10 20

ROTASI SATU POSISI KE KIRI [0] [1] [2] [3] [4] [5] [6] 10 20 30 40 50 10 10 Larik 20 30 40 50 9

ROTASI SATU POSISI KE KIRI [0] [1] [2] [3] [4] [5] [6] 10 20

ROTASI SATU POSISI KE KIRI [0] [1] [2] [3] [4] [5] [6] 10 20 30 40 50 10 Larik 20 30 40 50 10 20 30 30 40 50 10

ROTASI SATU POSISI KE KIRI [0] [1] [2] [3] [4] [5] [6] 10 20

ROTASI SATU POSISI KE KIRI [0] [1] [2] [3] [4] [5] [6] 10 20 30 40 50 10 Larik 20 30 40 50 10 20 30 40 40 50 11 50

ROTASI SATU POSISI KE KIRI [0] [1] [2] [3] [4] [5] [6] 10 20

ROTASI SATU POSISI KE KIRI [0] [1] [2] [3] [4] [5] [6] 10 20 30 40 50 10 Larik 20 30 40 50 10 20 30 40 50 12 50

ROTASI SATU POSISI KE KIRI [0] [1] [2] [3] [4] [5] [6] 10 20

ROTASI SATU POSISI KE KIRI [0] [1] [2] [3] [4] [5] [6] 10 20 30 40 50 10 20 30 40 50 50 20 30 40 50 10 Larik 13

ROTASI SATU POSISI KE KIRI baca jumlah_data cacah 0 ulangi selama cacah < jumlah_data

ROTASI SATU POSISI KE KIRI baca jumlah_data cacah 0 ulangi selama cacah < jumlah_data baca bilangan [cacah] cacah + 1 akhir pengulangan temp bilangan [0] cacah 1 ulangi selama cacah < jumlah_data bilangan [cacah – 1] bilangan [cacah] cacah + 1 akhir pengulangan bilangan [n – 1] temp cetak bilangan Larik 14

ROTASI SATU POSISI KE KIRI int main() { int bil[100], j_data, i, temp; printf("jumlah

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 10 Larik 15

LARIK DUA DIMENSI • Larik dua dimensi – Seakan-akan disusun dalam baris dan kolom.

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 16

LARIK DUA DIMENSI int main() { int larik_i [2][3] = {10, 20}; char larik_c

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; } Larik 10 20 0 0 97 98 99 0 0 0 17

LARIK DUA DIMENSI int main() { int i, j, larik [3][4] = { {10,

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("%2 d ", larik[i][j]); printf("n"); } return 0; } 10 20 30 40 0 Larik 18 0 0 0

LARIK DUA DIMENSI Struktur memori komputer untuk larik 2 D. Konseptual Larik Fisikal 19

LARIK DUA DIMENSI Struktur memori komputer untuk larik 2 D. Konseptual Larik Fisikal 19

LARIK DUA DIMENSI Row-major order. int main() { int a[2][3]; int b, k, i,

LARIK DUA DIMENSI Row-major order. 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; } Larik data baris ke-1 ? 5 10 15 data baris ke-2 ? 20 25 30 5 10 15 20 25 30 20

LARIK 2 D SEBAGAI PARAMETER void cetak_larik (int a[2][3]) { int i, j; for

LARIK 2 D SEBAGAI PARAMETER void cetak_larik (int a[2][3]) { int i, j; for (i = 0; i < 2; i++) { dimensi for (j = 0; j < 3; j++) ditulis printf("%2 d ", a[i][j]); lengkap printf("n"); } } int main() { int arr[2][3], i, j; printf("ketik 6 bilangan : n"); for (i = 0; i < 2; i++) for (j = 0; j < 3; j++) scanf("%d", &arr[i][j]); ketik 6 bilangan : cetak_larik(arr); 5 15 25 35 45 55 return 0; 5 15 25 } 35 45 55 Larik 21

PENJUMLAHAN MATRIKS Tulis program untuk menjumlahkan dua matriks berukuran sama yang masing-masing berukuran tidak

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 dilakukan pada sebuah function. a 11 a 12 a 13 a 21 a 22 a 23 Larik + b 11 b 12 b 13 b 21 b 22 b 23 22 = c 11 c 12 c 13 c 21 c 22 c 23

PENJUMLAHAN MATRIKS # include <stdio. h> # include <conio 2. h> void isi_matriks (int

PENJUMLAHAN MATRIKS # include <stdio. h> # include <conio 2. h> void isi_matriks (int a[10], int brs, int klm) { int i, j, posisi_brs; printf("Matriks %d x %dn", 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 } 23

PENJUMLAHAN MATRIKS void jumlah_matriks (int a[10], int b[10], int c[10], int brs, int klm)

PENJUMLAHAN MATRIKS void jumlah_matriks (int a[10], int b[10], int c[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], int brs, int klm) { int i, j; for (i = 0; i < brs; i++) { for (j = 0; j < klm; j++) printf("%3 d ", a[i][j]); printf("n"); } } Larik 24

PENJUMLAHAN MATRIKS int main () { int mat_a[10], mat_b[10], mat_c[10]; int baris, kolom; ukuran

PENJUMLAHAN MATRIKS int main () { int mat_a[10], mat_b[10], mat_c[10]; int baris, kolom; ukuran baris ? 2 ukuran kolom ? 3 printf("ukuran baris ? "); scanf("%d", &baris); kolom ? "); scanf("%d", &kolom); Matriks 2 printf("ukuran x 3 baris, kolom); 5 10 isi_matriks(mat_a, 15 baris, kolom); 20 25 isi_matriks(mat_b, 30 jumlah_matriks(mat_a, mat_b, mat_c, baris, kolom); jumlah: n"); Matriks 2 printf("Hasil x 3 baris, kolom); 11 22 cetak_matriks(mat_c, 33 0; 44 55 return 66 } Hasil jumlah: 16 32 48 64 80 96 Larik 25

Buatlah data penjualan produk Produk 2006 2007 2008 Produk 1 500 800 900 Produk

Buatlah data penjualan produk Produk 2006 2007 2008 Produk 1 500 800 900 Produk 2 230 780 890 Produk 3 123 456 789