• Tidak ada hasil yang ditemukan

Array satu dimensi (1D)

N/A
N/A
Protected

Academic year: 2018

Membagikan "Array satu dimensi (1D)"

Copied!
6
0
0

Teks penuh

(1)

Algorit me dan Pemrograman

Kuliah #8

Array

Array

Dalam m at em at ika dikenal variabel berindeks

x

0

, x

1

, x

2

, …, x

n-1

. Angka 0, 1, 2, …, n-1 pada

variabel

x

disebut sebagai indeks at au

subscript .

Variabel berindeks diim plem ent asikan dalam

program berupa

array

x[0], x[1], x[2], …,

x[n-1], dengan

n

adalah ukuran

array

.

Selang nilai yang valid bagi indeks suat u

variabel array berukuran

n

adalah 0 sam pai

dengan n-1.

DEPARTEMEN ILMU KOMPUTER INSTITUT PERTANIAN BOGOR

Array

Definisi: kumpulan elemen bert ipe dat a sama

yang diakses dengan nama yang sama

Deklarasi:

data-type array-name[size];

Array

dapat dibedakan menjadi:

Array

berdimensi sat u (1D)

vekt or di M at emat ika

Array

berdimensi dua (2D)

mat riks di M at emat ika

Array

berdimensi banyak

Elemen

array

disimpan di memori secara

berurut an

DEPARTEMEN ILMU KOMPUTER INSTITUT PERTANIAN BOGOR

Array

sat u dimensi (1D)

Cont oh:

int a[5];

float x[10];

int d[3]={0};

int c[]={-45, 6, 0, 72, 1543};

DEPARTEMEN ILMU KOMPUTER INSTITUT PERTANIAN BOGOR

Alokasi memori

Indeks: 0, 1, 2, …, size-1

Jika m engakses indeks di

luar selang, m aka akan

diperoleh dat a lain.

Cont oh:

int a[6];

int x;

DEPARTEMEN ILMU KOMPUTER INSTITUT PERTANIAN BOGOR

a[0]

a[1]

a[2]

a[3]

a[4]

a[5]

x

dat a

lain

dat a

lain

Alokasi memori

Array

harus dideklarasikan t erlebih dahulu.

Array

dapat dideklarasikan secara global di

luar fungsi m ain, m aupun secara lokal di

dalam suat u fungsi.

(2)

M engisi masukan ke

array

#include <stdio.h>

int main() {

int a[100];

int i;

scanf("%d", &n); // baca banyaknya data

// membaca masukan dan disimpan ke array

for (i=0; i<n; i++)

scanf("%d", &a[i]);

printf("%d\n", a[n/2]); // akses isi array

return 0;

}

Cont oh m asukan:

3 20 34 21

DEPARTEMEN ILMU KOMPUTER INSTITUT PERTANIAN BOGOR

Keluaran?

#include <stdio.h>

int main() {

int a[3], b[4] ={4,5,2,3};

int c[] = {3,2,1}, d[4] = {0};

int e[5] = {1}, f[];

printf("%d %d %d\n", a[0], b[1], c[2]);

printf("%d %d %d\n", d[3], e[4], f[5]);

return 0;

}

DEPARTEMEN ILMU KOMPUTER INSTITUT PERTANIAN BOGOR

Penjelasan

Gagal kom pilasi karena dim ensi f t idak

dinyat akan baik secara explisit m aupun

im plisit

Berikan dim ensi, m isalnya:

f[10]

Set elah diperbaiki:

a[0] t idak diket ahui karena t idak diinisialisasi

b[1] = 5, c[2] = 1, d[4] = 0, e[5] = 0

Jika hanya sebagian yang diinisialisasi, sisanya

bernilai 0

DEPARTEMEN ILMU KOMPUTER INSTITUT PERTANIAN BOGOR

M enghit ung jumlah isi

array

#include <stdio.h>

#define SIZE 5

int main() {

int a[SIZE] = {1, 3, 5, 4, 7};

int i, total = 0;

for (i=0; i<SIZE; i++)

total += a[i];

printf("%d\n", total );

return 0;

}

DEPARTEMEN ILMU KOMPUTER INSTITUT PERTANIAN BOGOR

Akses

array

di luar batas indeks

#include <stdio.h>

int main() {

int a[5] = {1, 3, 5, 4, 7};

printf("%d\n", a[6] );

return 0;

}

Apakah t erjadi

error

pada saat di-

compile

at au

Lat ihan

1. Program unt uk m enghit ung rat a-rat a nilai

dalam suat u

array

2. Program unt uk m enent ukan keberadaan

suat u nilai dalam suat u

array

(3)

Array

sebagai argumen fungsi

Seperti variabel lainnya,

array

juga dapat digunakan sebagai

argum en dari fungsi.

Nilai variabel

array

yang didekrasikan sebagai param eter fungsi

akan m em pengaruhi nilai variabel

array

pada fungsi

pem anggilnya (

call by reference

) (dibahas dalam topik

point er

).

Contoh deklarasi

array

dalam fungsi:

int printarray(int n, int a[n]) {

}

Perhatikan bahw a param eter n harus disebut sebelum a[n]

DEPARTEMEN ILMU KOMPUTER INSTITUT PERTANIAN BOGOR

Fungsi M encetak Elemen

Array

#include <stdio.h>

void printarray(int n, int a[n]);

// atau: void printarray(int n, int a[]);

int main() {

int x[5] = {1,4,2,-3,9};

printarray(x,5)

;

return 0;

}

void printarray(int n, int a[n], int n)

{

int i;

for (i=0; i<n; i++)

printf("%d ", a[i]);

}

DEPARTEMEN ILMU KOMPUTER INSTITUT PERTANIAN BOGOR

Pengiriman

Array

1D ke Fungsi

Dimensi

array

1D pada

funct ion header

t idak harus

dinyat akan

void printarray(

int a[],

int n)

at au

void printarray(

int a[*],

int n)

Jika dimensi t idak dinyat akan, t idak harus muncul

set elah paramet er penampung dimensi (n pada

cont oh)

Ukuran

array

menjadi paramet er (n pada cont oh)

Tipe

void

digunakan jika fungsi t idak mengembalikan

suat u nilai

Serupa dengan prosedur dalam term inologi bahasa

pem rogram an lain

DEPARTEMEN ILMU KOMPUTER INSTITUT PERTANIAN BOGOR

Fungsi M enjumlahkan Elemen

Array

#include <stdio.h>

int sumarray(int a[], int a);

int main() {

int x[5] = {1,4,2,-3,9};

printf("%d",

sumarray(x,5)

);

return 0;

}

int sumarray(

int a[]

, int n) {

int i, sum = 0;

for (i=0; i<n; i++) sum+=a[i];

return sum;

}

DEPARTEMEN ILMU KOMPUTER INSTITUT PERTANIAN BOGOR

Fungsi M embalik Elemen

Array

void fliparray(int a[], int n) {

int i, temp;

for (i=0; i<n/2; i++){

temp = a[i];

a[i] = a[n-i-1];

a[n-i-1] = temp;

}

}

DEPARTEMEN ILMU KOMPUTER INSTITUT PERTANIAN BOGOR

Keluaran?

int main() {

int x[] = {5,2,-1,7,-3};

printarray(x, 5);

fliparray(x,5);

printarray(x, 5);

fliparray(x,3);

printarray(x, 5);

return 0;

}

(4)

Array

dua dimensi (2D)

Dapat disepadankan dengan m at riks

Array

yang t erdiri at as

array

Cont oh:

int b[][] = {{2,4,1}, {5,3,7}};

float x[3][4];

DEPARTEMEN ILMU KOMPUTER INSTITUT PERTANIAN BOGOR

Array

2D: M embaca mat riks m

x

n

int a[100][100];

int i, j;

// minta dimensi masukan

scanf("%d %d", &m, &n);

// membaca elemen matriks

for (i=0; i<m; i++)

for (j=0; i<n; j++)

scanf("%d", &a[i][j]);

DEPARTEMEN ILMU KOMPUTER INSTITUT PERTANIAN BOGOR

Array

2D di memori

Elem en berurut an di

m em ori

M isal:

int a[2][3]

Sepert i

array

1D berapa

elem en?

DEPARTEMEN ILMU KOMPUTER INSTITUT PERTANIAN BOGOR

a[0][0]

a[0][1]

a[0][2]

a[1][0]

a[2][1]

a[3][2]

x

dat a

lain

dat a

lain

Pengiriman

Array

2D ke Fungsi

Dim ensi kedua unt uk

array

2D pada

funct ion

header

harus dinyat akan:

a[m][n]

,

a[*][*]

,

a[][*]

, at au

a[][n]

Ukuran

array

m enjadi param et er (m dan n

pada cont oh)

Array

2D dapat dikirim ke fungsi yang

m engharapkan

array

1D

Ingat

array

2D =

array

yang elem ennya adalah

array

Elem en 2D juga berurut an

DEPARTEMEN ILMU KOMPUTER INSTITUT PERTANIAN BOGOR

Keluaran?

#include <stdio.h>

int main() {

int x[5][4],i,j,k=1;

for(i=0;i<5;i++)

for(j=0;j<4;j++) x[i][j]=k++;

printarray(x, 20);

Perhat ikan fungsi berikut yang

dimaksudkan mencetak mat rix

#define M 100

#define N 100

void printmatrix0

(int a[M][N], int m, int n) {

int i, j;

for (i=0; i<m; i++)

for (j=0; j<n; j++) {

(5)

Keluaran?

#include <stdio.h>

#define M 100

#define N 100

int main() {

int x[5][4],i,j,k=1;

for(i=0;i<5;i++)

for(j=0;j<4;j++) x[i][j]=k++;

printmatrix0(x, 5, 4);

return 0;

}

DEPARTEMEN ILMU KOMPUTER INSTITUT PERTANIAN BOGOR

Bandingkan dengan

void printmatrix1

(int m, int n, int a[m][n]) {

int i, j;

for (i=0; i<m; i++)

for (j=0; j<n; j++) {

printf("%d", a[i][j]);

printf((n-1)==j ? "\n" : " ");

}

}

DEPARTEMEN ILMU KOMPUTER INSTITUT PERTANIAN BOGOR

atau

#define M 100

#define N 100

void printmatrix2

(int a[M][N], int m, int n) {

int i=0, j=0, x = m*n;

while (x--) {

printf("%d", a[i][j]);

j++;

if(j==N) (j=0, i++);

printf(0==(j%n)? "\n" : " ");

}

}

DEPARTEMEN ILMU KOMPUTER INSTITUT PERTANIAN BOGOR

Penjelasan

Fungsi

printmatrix0

dan

printmatrix2

mengharapkan paramet er berupa

array

100x100

(karena M dan N digant i dengan 100)

Bandingkan a[100][100] dan b[5][4]:

Urut an a[0][0] s/ d a[0][3] sama dengan urut an b[0][0]

s/ d b[0][3], t et api

Elemen berikut nya di a adalah a[0][4] sedangkan di b

adalah b[1][0]

Hasilnya, keluaran

printmatrix0

pada hanya

benar unt uk baris pert ama

Pada

printmatrix2

indeksnya disesuaikan

dengan

array

100x100

DEPARTEMEN ILMU KOMPUTER INSTITUT PERTANIAN BOGOR

Catatan

Fungsi

printmatrix1

dan

printmatrix2

hanya

benar unt uk mencet ak semua elemen

array

2D

M isal a[2][4]:

1 2 3 4

5 6 7 8

M encet ak dengan m = 2 dan n = 3:

1 2 3

4 5 6

Bukan:

1 2 3

5 6 7

DEPARTEMEN ILMU KOMPUTER INSTITUT PERTANIAN BOGOR

Fungsi memutar mat riks

void putar

(int m, int n, int a[m][n], int b[n][m])

{

int i, j;

for (i=0; i<m; i++)

for (j=0; j<n; j++)

b[j][i]=a[i][j];

}

(6)

Keluaran?

Perhat ikan fungsi berikut :

void misteri(int a[SIZE], int n) {

if (n) {

printf("%d\n", a[n-1]);

misteri(a, n-1);

}

}

Apa keluaran pot ongan program berikut :

int x[SIZE]={2, 4, 5, 3, 1};

misteri(x, 5);

DEPARTEMEN ILMU KOMPUTER INSTITUT PERTANIAN BOGOR

Cetak zigzag

Buat program m em baca m atriks

a

berukuran

m

x

n

dan

m enam pilkannya secara zigzag seperti skem a berikut:

Contoh input (baris pertam a adalah

m

dan

n

):

4 4

1 3 2 1

8 4 3 2

1 2 3 4

9 8 7 6

Contoh output:

1 3 2 1

2 3 4 8

1 2 3 4 6 7 8 9

DEPARTEMEN ILMU KOMPUTER INSTITUT PERTANIAN BOGOR

for (i=0; i<n; i++)

{

if(i%2!=0)

{

for (j=n-1;j

≤0;j

--)

printf(" %d",a[i][j]);

}

else

{

for (j=0; j<m; j++)

printf(" %d",a[i][j]);

}

}

DEPARTEMEN ILMU KOMPUTER INSTITUT PERTANIAN BOGOR

Hit ung elemen 1

Buat program membaca matriks

a

berukuran

m

x

n

dimana elemen

matriks adalah {0,1}, dan menampilkan banyaknya elemen 1 pada

setiap kolomnya.

Contoh input (baris pertama adalah

m

dan

n

):

4 4

1 0 1 1

0 0 0 0

0 0 0 1

1 1 1 1

Cont oh out put :

2 1 2 3

Referensi

Dokumen terkait

Rumah tangga merupakan salah satu tempat penggunaan produk produk industri, sehingga perlu dilakukan langkah langkah praktis untuk pencegahan terjadinya keracunan, disamping itu

Tujuan DPM-LUEP untuk pembelian gabah/beras petani adalah : (a) Menjaga stabilitas harga gabah/beras yang diterima petani pada tingkat yang wajar; (b) Meningkatkan pendapatan

Maka dari itu, penulis hendak melakukan penelitian yang berjudul “Pemodelan Arus Arcing Tegangan Rendah pada Kabel Fleksibel (Serabut) menggunakan Elman Neural

Kelemahan dari Organisasi Pangan dan Pertanian yaitu FAO terlalu desentralisasi, dengan proporsi staf yang bertugas di pusat yang banyak, yang jauh dari pengamatan

Halaman 6 LAMPIRAN II PENJABARAN PERTANGGUNGJAWABAN - PENJABARAN LAPORAN REALISASI ANGGARAN PENDAPATAN DAN

Hasil analisis keragaman menunjukkan bahwa konsentrasi perlakuan penambahan tepung ikan Patin Siam (Pangasius hypophthalmus) yang berbeda pada perlakuan tidak

Jika kita kaitkan menurut Pasal 18 ayat (1) huruf e dimana pelaku usaha dilarang mencantumkan klausula yang isinya mengenai pembuktian atas hilangnya suatu

Penentuan varians bersyarat dari sebuah peubah acak diberikan peubah acak lainnya, baik diskrit maupun kontinu dijelaskan dalam Definisi 7.12... 2 FUNGSI PEMBANGKIT