• Tidak ada hasil yang ditemukan

Algoritme dan Pemrograman

N/A
N/A
Protected

Academic year: 2021

Membagikan "Algoritme dan Pemrograman"

Copied!
17
0
0

Teks penuh

(1)

Algoritme dan Pemrograman

Kuliah #8 Array

Program Menghitung Rataan 3 Nilai

#include <stdio.h>

int nilai1, nilai2, nilai3; float rataan;

int main() {

printf ("Masukkan nilai 1 :");scanf("%d",&nilai1); printf ("Masukkan nilai 2 :");scanf("%d",&nilai2); printf ("Masukkan nilai 3 :");scanf("%d",&nilai3); rataan = (nilai1 + nilai2 + nilai3) / 3;

if (nilai1>rataan) printf("nilai1"); if (nilai2>rataan) printf("nilai2"); if (nilai3>rataan) printf("nilai3"); return 0; }

Masalah: Bagaimana menghitung rata-rata dari 100 nilai?

(2)

#include<stdio.h>

int nilai1, nilai2, nilai3,…,nilai100; float rataan;

int main() {

printf ("Masukkan nilai 1 :");scanf("%d",&nilai1); printf ("Masukkan nilai 2 :");scanf("%d",&nilai2); printf ("Masukkan nilai 3 :");scanf("%d",&nilai3); :

:

printf ("Masukkan nilai 100 :");scanf("%d",&nilai100);

rataan = (nilai1 + nilai2 + nilai3+…+nilai100) / 100; if (nilai1>rataan) printf("nilai1"); if (nilai2>rataan) printf("nilai2"); if (nilai3>rataan) printf("nilai3"); : : if (nilai100>rataan) printf("nilai100"); return 0; }

Apa yang terjadi ?????

• Variabel yang dideklarasikan  banyak • Langkah yang dijalankan  banyak • Risiko kesalahan penulisan  tinggi

(3)

Array

• Dalam matematika dikenal variabel berindeks x0, x1, x2, …, xn-1. Angka 0, 1, 2, …, n-1 pada variabel x disebut sebagai indeks atau subscript.

• Variabel berindeks diimplementasikan dalam program berupa array x[0], x[1], x[2], …, x[n-1], dengan n adalah ukuran array.

• Selang nilai yang valid bagi indeks suatu variabel array berukuran n adalah 0 sampai dengan n-1.

DEPARTEMEN ILMU KOMPUTER INSTITUT PERTANIAN BOGOR

Array

• Definisi: kumpulan elemen bertipe data sama yang diakses dengan nama yang sama

• Deklarasi:

data-type array-name[size]; • Array dapat dibedakan menjadi:

– Array berdimensi satu (1D)  vektor di Matematika – Array berdimensi dua (2D)  matriks di Matematika – Array berdimensi banyak

• Elemen array disimpan di memori secara berurutan

(4)

Array satu dimensi (1D)

• Contoh: 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 mengakses indeks di

luar selang, maka akan diperoleh data lain. • Contoh: int a[6]; int x; a[0] a[1] a[2] a[3] a[4] a[5] x data lain data lain

(5)

Alokasi memori

• Array harus dideklarasikan terlebih dahulu. • Array dapat dideklarasikan secara global di

luar fungsi main, maupun secara lokal di dalam suatu fungsi.

DEPARTEMEN ILMU KOMPUTER INSTITUT PERTANIAN BOGOR

Mengisi 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;

}

(6)

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[5]; 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

Menghitung 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; }

(7)

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 terjadi error pada saat di-compile atau di-run? Mengapa hal tersebut terjadi?

DEPARTEMEN ILMU KOMPUTER INSTITUT PERTANIAN BOGOR

Latihan

1. Program untuk menghitung rata-rata nilai dalam suatu array

2. Program untuk menentukan keberadaan suatu nilai dalam suatu array

3. Program untuk menentukan nilai maksimum dan minimum dalam suatu array

(8)

Array sebagai argumen fungsi

• Seperti variabel lainnya, array juga dapat digunakan sebagai argumen dari fungsi.

• Nilai variabel array yang didekrasikan sebagai parameter fungsi akan mempengaruhi nilai variabel array pada fungsi

pemanggilnya (call by reference) (dibahas dalam topik pointer). • Contoh deklarasi array dalam fungsi:

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

}

• Perhatikan bahwa parameter n harus disebut sebelum a[n]

DEPARTEMEN ILMU KOMPUTER INSTITUT PERTANIAN BOGOR

Fungsi Mencetak 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 i;

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

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

(9)

Pengiriman Array 1D ke Fungsi

• Dimensi array 1D pada function header tidak harus dinyatakan

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

void printarray(int a[*], int n) • Jika dimensi tidak dinyatakan, tidak harus muncul

setelah parameter penampung dimensi (n pada contoh)

• Ukuran array menjadi parameter (n pada contoh) • Tipe void digunakan jika fungsi tidak mengembalikan

suatu nilai

– Serupa dengan prosedur dalam terminologi bahasa pemrograman lain

DEPARTEMEN ILMU KOMPUTER INSTITUT PERTANIAN BOGOR

Fungsi Menjumlahkan 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;

(10)

Fungsi Membalik 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;

} }

Ekstra: tiga baris yang ditebalkan melakukan pertukaran nilai. Bagaimanakah cara melakukan pertukaran dua nilai integer tanpa menggunakan variabel/penampung tambahan.

DEPARTEMEN ILMU KOMPUTER INSTITUT PERTANIAN BOGOR

Keluaran?

int main() { int x[] = {5,2,-1,7,-3}; printarray(5, x); fliparray(x, 5); printarray(5, x); fliparray(x, 3); printarray(5, x); return 0; }

(11)

Array dua dimensi (2D)

• Dapat disepadankan dengan matriks • Array yang terdiri atas array

• Contoh:

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

float x[3][4];

DEPARTEMEN ILMU KOMPUTER INSTITUT PERTANIAN BOGOR

Array 2D: Membaca matriks m

x

n

int a[100][100];

int i, j,m,n;

// minta dimensi masukan scanf("%d %d", &m, &n);

// membaca elemen matriks for (i=0; i<m; i++)

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

(12)

Array 2D di memori

• Elemen berurutan di memori

• Misal:

int a[2][3]

• Seperti array 1D berapa elemen?

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 data lain data lain

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(20, x); return 0; }

(13)

Pengiriman Array 2D ke Fungsi

• Dimensi kedua untuk array 2D pada function header harus dinyatakan: a[m][n],

a[*][*], a[][*], atau a[][n]

• Ukuran array menjadi parameter (m dan n pada contoh)

• Array 2D dapat dikirim ke fungsi yang mengharapkan array 1D

– Ingat array 2D = array yang elemennya adalah

array

– Elemen 2D juga berurutan

DEPARTEMEN ILMU KOMPUTER INSTITUT PERTANIAN BOGOR

Perhatikan fungsi berikut yang

dimaksudkan mencetak matrix

#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++) {

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

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

(14)

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" : " "); }

(15)

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

Catatan

• Fungsi printmatrix1 dan printmatrix2 hanya benar untuk mencetak semua elemen array 2D

• Misal a[2][4]: 1 2 3 4 5 6 7 8

Mencetak dengan m = 2 dan n = 3: 1 2 3

4 5 6 • Bukan: 1 2 3 5 6 7

(16)

Fungsi memutar matriks

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]; }

DEPARTEMEN ILMU KOMPUTER INSTITUT PERTANIAN BOGOR

Keluaran?

Perhatikan fungsi berikut:

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

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

} }

Apa keluaran potongan program berikut: int x[SIZE]={2, 4, 5, 3, 1}; misteri(x, 5);

(17)

Cetak zigzag

• Buat program membaca matriks a berukuran mxn dan menampilkannya secara zigzag seperti skema berikut:

• Contoh input (baris pertama 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

Hitung elemen 1

• Buat program membaca matriks a berukuran mxn yang elemen matriksnya 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 • Contoh output: 2 1 2 3

Referensi

Dokumen terkait

Jis ið karto uþsikimðo ir kadangi buvo per giliai ástatytas (uþvërë slankstelinës arterijos þiotis ir buvo per ilgas – tæsësi iki paþastinës arterijos), uþsikimðo ir

Bentuk diskusi kelompok resmi yang disebut dengan istilah simposium ini sungguh sangat bermanfaat apabila pokok pembicaraan yang sedang didiskusikan itu tidak dapat dijawab dengan

Untuk perkembangan harga komoditas di pasar domestik, tercatat dalam periode 20-22 Maret 2012 ada beberapa komoditas yang harganya mengalami kenaikan jika dibandingkan dengan

Pada hakikatnya logika adalah: orang-orang yang tipe kepribadiannya kongruen (sama dan sebangun) dengan pekerjaan yang mereka pilih seharusnya mendapatkan bahwa mereka mempunyai

Memang pada saat ini ada beberapa merger yang dalam proses menuju ke arah kerja sama dengan kita dengan lebih erat namun kami berada dalam kondisi dimana kami belum

Mengurangi seksual ( peran, tuntunan dan tanggung jawab ). Membentuk sikap dan memberikan pengertian terhadap seks dalam semua manifestasi yang bervariasi. Memberikan pengertian

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

Pacaran lebih tepat didefinisikan sebagai dating, beberapa ahli mendefinisikan dating atau pacaran secara berbeda-beda, yaitu sebagai berikut : Turner dan Helms