Pertemuan 17-18 Array Matakuliah : T0616 / Algoritma dan Pemrograman

Download Report

Transcript Pertemuan 17-18 Array Matakuliah : T0616 / Algoritma dan Pemrograman

Matakuliah
Tahun
Versi
: T0616 / Algoritma dan Pemrograman
: 2007
: 1/0
Pertemuan 17-18
Array
1
Learning Outcomes
Pada akhir pertemuan ini, diharapkan mahasiswa
akan mampu :
• Menerapkan konsep tipe data array untuk
data majemuk homogen (C3)
2
Outline Materi
Array
• Definisi dan karakteristik array
• Array dimensi satu
• Inisialisasi array
• Array sebagai parameter
• Array berdimensi dua dan tiga
3
Array
• Array
• Data disimpan dalam suatu struktur, sedemikian rupa
sehingga elemen-elemen di dalam struktur tadi dapat
diolah secara kelompok ataupun secara individu.
• Sifat - sifat Array
– Homogen
Seluruh elemen di dalam struktur array harus mempunyai tipe
data yang sama.
– Random Access
Setiap elemen di dalam struktur array dapat dicapai secara
individual, langsung ke lokasi elemen yang diinginkan, tidak
harus melalui elemen pertama.
4
Array Dimensi Satu
• Sintaks deklarasi array dimensi satu
type nama_arrray[Nilai_dim];
Contoh : int A[10];
• Definisi dari sebuah array terdiri dari 4
komponen yaitu :
–
–
–
–
Type specifier
Identifier (nama array)
Operator index ([ ])
Nilai dimensi dalam operator [ ]
5
Visualisasi Array
• Dengan menggunakan contoh deklarasi
sebelumnya dapat digambarkan alokasi untuk
variabel A
• Elemen-elemen suatu Array diindeks (subscript)
mulai dari 0.
A[0] A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] A[9]
6
Cara Akses Array
• Dua cara yang ekuivalen untuk mengakses
unsur ke-i dari suatu array. Misal untuk i=2;
*(A+2) atau A[2]
• A ekuivalen dengan &A[0] atau pointer constant
ke elemen-pertama dari array tersebut.
• Bila elemen A[2] hendak ditampilkan di layar
monitor, gunakan statemen sbb:
printf(“%d”,A[2]) atau printf(“%d\n”,*(A+2));
7
Mengisi Data Array
• Mengisi data ke elemen array dilakukan dengan
menggunakan assignment operator.
• Contoh : A[6] = 15; A[3] = 27;
27
15
A[0] A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] A[9]
• Statement A[2] = A[3] - A[6], menghasilkan :
12
27
15
A[0] A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] A[9]
8
Inisialisasi Array
• Array dapat diinisialisasi secara eksplisit pada
saat didefinisikan dan tidak perlu diberikan nilai
dimensinya.
• Contoh:
int B[ ]={1, 2, -4, 8};
• Contoh inisialisasi array setelah didefinisikan :
int A[5];
(for i=0; i<5;i++) A[i]=0;
int B[5];
B[5]={0,0,0,0,0};
Error
9
Inisialisasi Array
• Contoh :
#include <stdio.h>
void main()
{
int i;
int list_int[10];
for (i=0; i<10; i++){
list_int[i] = i + 1;
printf( "list_int[%d] diinisialisasi dengan %d.\n", i, list_int[i]);
}
}
10
Array Dimensi Satu
• Contoh :
#include<stdio.h>
int SIZE = 5;
void main() {
int n[SIZE] = {15, 9, 1, 7, 5};
for( int i=0 ; i<= SIZE ; i++) {
printf("%5d ", n[i]);
for ( int j=1; j<=n[i] ; j++)
printf("%c","*");
printf("\n");
}
}
11
Array Sebagai Parameter
• Jika array digunakan sebagai parameter dalam suatu
fungsi, maka passing parameter harus by location.
• Contoh:
#include <stdio.h>
void cetak_array(int index, int *Array) {
printf(“Array[%d]=%d\n”,index,Array[index]);
}
void main() {
int Array[]={1,6,2,8,12};
cetak_array(2,Array);
}
12
Array Dimensi Dua
• x[row][column]: array dua dimensi dengan
row dan column
• Contoh
int a[3][4]
Column 0 Column 1 Column 2 Column 3
Row 0
Row 1
Row 2
a[ 0 ][ 0 ] a[ 0 ][ 1 ] a[ 0 ][ 2 ] a[ 0 ][ 3 ]
a[ 1 ][ 0 ] a[ 1 ][ 1 ] a[ 1 ][ 2 ] a[ 1 ][ 3 ]
a[ 2 ][ 0 ] a[ 2 ][ 1 ] a[ 2 ][ 2 ] a[ 2 ][ 3 ]
Column subscript
Array name
Row subscript
13
Array Dimensi Dua
• Inisialisasi: menggunakan aturan rmo
(row major order).
• Contoh:
• int b[2][2] = { { 1, 2 }, { 3, 4 } };
1
2
3
4
• int b[2][2] = { { 1 }, { 3, 4 } };
1
0
3
4
• int x[3][4] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
• int x[3][4] = { {1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12}};
14
Array Dimensi Dua
• Program :
/* Mencetak array 2-D */
#include <stdio.h>
void main() {
int two_dim[3][5] = {1, 2, 3, 4, 5,
10, 20, 30, 40, 50,
100, 200, 300, 400, 500};
int i, j;
}
for (i=0; i<3; i++){
printf("\n");
for (j=0; j<5; j++)
printf("%6d", two_dim[i][j]);
}
12345
10 20 30 40 50
100 200 300 400 500
15
Array Dimensi Tiga
• X[Row][Column][Depth] : Array tiga dimensi
dengan row, column dan depth.
int x[3][2][4] = {{{1,2,3,4}, {5,6,7,8}},
{{11,12,13,14}, {15,16,17,18}},
{{21,22,23,24}, {25,26,27,28}}};
void main() {
x[4][3][5] = {{{1, 2, 3}, {0, 4, 3, 4}, {1, 2}},
{{9, 7, 5}, {5, 7, 2}, {9}},
{{3, 3, 5}, {2, 8, 9, 9}, {1, 2, 1}},
{{0}, {1}, {0, 1, 9}}};
printf(“%5d”, x[2][1][3]);
}
16
Latihan
• Buatlah program dengan fungsi sbb:
– Fungsi untuk meng-input 10 bilangan ke
dalam array
– Fungsi untuk mencari bilangan terbesar
dalam array tersebut
– Fungsi untuk mencari bilangan terkecil dalam
array tersebut
– Fungsi untuk menampilkan :
• 10 bilangan tersebut
• Bilangan terbesar dan terkecil
17
Latihan
• Buat program untuk membalik urutan
array dimensi satu.
int x[ ] = {19, 3, 15, 7, 11};
Dan kemudian cek hasilnya dengan data berikut :
int x[ ] = {19, 3, 15, 7};
int x[ ] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
18
Latihan
• Buat program untuk mengurutkan array
dimensi satu yang berisi 3 data.
int n[ ] = {2,1,3};
Dan kemudian cek hasilnya dengan data berikut
ini :
int n[ ] = {3,2,1};
int n[ ] = {2,1,3};
19
Latihan
• Buatlah sebuah program untuk menginput Saldo untuk 5
Account berikut ke dalam sebuah array dimensi satu:
Account
1
2
3
4
5
Saldo
24.98
345.67
0.00
-42.16
224.62
• Nomor Account ditentukan sesuai no index array + 1
• Tipe data yang digunakan adalah double (bisa
menampung pecahan dan angka minus)
20
Latihan
• Berdasarkan soal sebelumnya :
• Jika Saldo yang diinput >0 dianggap Saldo
Deposit, jika Saldo = 0 maka Saldo Zero,
selain itu dianggap Saldo Withdraw.
• Dari data yang diinput tampilkan :
– Daftar Account dengan Saldo Zero
– Daftar Account dengan Saldo Debit
– Daftar Account dengan Saldo Credit
– Tentukan rata-rata Saldo keseluruhan
21
Latihan
• Buat program untuk menginput array berikut :
int grademhs[ mhs ][ mtk ] =
{ { 77, 68, 86, 73 },
{ 96, 87, 89, 78 },
{ 70, 90, 86, 81 } };
• Dan tampilkan output sebagai berikut :
grademhs
grademhs
grademhs
[0]
[0] 77
[1] 96
[2] 70
[1]
68
87
90
[2]
86
89
86
[3]
73
78
81
22