Tugas 6 - 1711
Tugas 6 - 1711
ARRAY
DOSEN PEMBIMBING
NISHBAH FADHELINA, S.Pd.I, M.pd
D
I
S
U
S
U
N
OLEH:
LIANA (190406005)
dengan :
▪ tipe_data : untuk menyatakan tipe dari elemen array, misalnya int, char, float.
▪ nama_var : nama variabel array
▪ ukuran : untuk menyatakan jumlah maksimal elemen array.
Contoh pendeklarasian array :
float nilai_tes[5];
menyatakan bahwa array nilai_tes mengandung 5 elemen bertipe float.
Pada C, data array akan disimpan dalam memori yang berurutan. Elemen pertama
mempunyai indeks bernilai 0. Jika variabel nilai_tes dideklarasikan sebagai array dengan 5
elemen, maka elemen pertama memiliki indeks sama dengan 0, dan elemen terakhir memiliki
indeks 4. Gambar 7.1 di bawah ini menjelaskan urutan komponen dalam array.
nama_var[indeks]
word[0] is H
word[1] is e
word[2] is l
word[3] is l
word[4] is o
Perhatikan, pada contoh inisial.c, pendeklarasian nama variabel array tidak disertai
ukuran yang mengindikasikan besarnya array. Dalam kondisi seperti ini, C akan
menginisialisasi ukuran array tersebut sejumlah elemen yang diberikan di dalam kurung
kurawal pada saat proses inisialisasi. Sehingga array values terdiri atas 9 elemen dan array
word memiliki 5 elemen.
Ada beberapa variasi cara mendeklarasikan sebuah array (dalam hal ini yang
berdimensi satu), di antaranya adalah sebagai berikut :
▪ int numbers[10];
▪ int numbers[10] = { 34, 27, 16 };
▪ int numbers[] = { 2, -3, 45, 79, -14, 5, 9, 28, -1, 0 };
▪ char text[]= "Welcome to New Zealand.";
▪ float radix[12] = { 134.362, 1913.248 };
▪ double radians[1000];
Data seperti yang disajikan pada Tabel 7.1, dapat disimpan pada sebuah array
berdimensi dua. Dimensi pertama dari array digunakan untuk menyatakan kode program
kursus dan dimensi kedua untuk menyatakan tahun kursus.
Tabel 7.1. Data Kelulusan Siswa Pada Sebuah Kursus Komputer
Tahun Program 1998 1999 2000
1. (INTRO) 80 540 1032
2. (BASIC) 15 83 301
3. (PASCAL) 8 12 15
4. (C) 10 129 257
Pendeklarasian yang diperlukan untuk menyimpan data kelulusan siswa pada Tabel
6.1 adalah:
int data_lulus[4][3];
Nilai 3 untuk menyatakan banyaknya tahun dan 4 menyatakan banyaknya program kursus.
Gambar 7.2 memberikan ilustrasi untuk memudahkan pemahaman tentang array berdimensi
dua.
Sama halnya pada array berdimensi satu, data array aka ditempatkan pada memori
yang berurutan. Perhatikan Gambar 6.3.
C memungkinkan untuk membuat array yang dimensinya lebih dari dua. Bentuk
umum pendeklarasian array berdimensi banyak :
tipe nama_var[ukuran 1][ukuran2}…[ukuranN];
sebagai contoh :
int data_huruf[2][8][8];
merupakan pendeklarasian array data_huruf sebagai array berdimensi tiga.
Sama halnya dengan array berdimensi satu atau dua, array berdimensi banyak juga
bisa diinisialisasi. Contoh inisialisasi array berdimensi tiga :
Program berikut merupakan pengembangan dari Program 8 – 4, digunakan untuk
menampilkan dua buah huruf dengan ukuran besar.
int data_huruf [2][8][8] =
{ { { 0, 1, 1, 1, 1, 1, 0, 0 } ,
{ 0, 1, 0, 0, 0, 1, 0, 0 } ,
{ 0, 1, 0, 0, 0, 1, 0, 0 } ,
{ 1, 1, 1, 1, 1, 1, 1, 0 } ,
{ 1, 1, 0, 0, 0, 0, 1, 0 } ,
{ 1, 1, 0, 0, 0, 0, 1, 0 } ,
{ 1, 1, 0, 0, 0, 0, 1, 0 } ,
{ 0, 0, 0, 0, 0, 0, 0, 0 }
},
{ {1, 1, 1, 1, 1, 1, 0, 0 } ,
{1, 0, 0, 0, 0, 1, 0, 0 } ,
{1, 0, 0, 0, 0, 1, 0, 0 } ,
{1, 1, 1, 1, 1, 1, 1, 0 } ,
{1, 1, 0, 0, 0, 0, 1, 0 } ,
{1, 1, 0, 0, 0, 0, 1, 0 } ,
{1, 1, 1, 1, 1, 1, 1, 0 } ,
{0, 0, 0, 0, 0, 0, 0, 0 }
} };
atau bisa juga ditulis menjadi
int data_huruf [2][8][8] =
{ 0, 1, 1, 1, 1, 1, 0, 0,
0, 1, 0, 0, 0, 1, 0, 0,
0, 1, 0, 0, 0, 1, 0, 0,
1, 1, 1, 1, 1, 1, 1, 0,
1, 1, 0, 0, 0, 0, 1, 0,
1, 1, 0, 0, 0, 0, 1, 0,
1, 1, 0, 0, 0, 0, 1, 0,
0, 0, 0, 0, 0, 0, 0, 0,
1, 1, 1, 1, 1, 1, 0, 0,
1, 0, 0, 0, 0, 1, 0, 0,
1, 0, 0, 0, 0, 1, 0, 0,
1, 1, 1, 1, 1, 1, 1, 0,
1, 1, 0, 0, 0, 0, 1, 0,
1, 1, 0, 0, 0, 0, 1, 0,
1, 1, 1, 1, 1, 1, 1, 0,
0, 0, 0, 0, 0, 0, 0, 0
};
Program berikut merupakan pengembangan dari Program 8.4, digunakan untuk
menampilkan dua buah huruf dengan ukuran besar.
/* File program: data_huruf.c
Contoh inisialisasi array dimensi tiga */
# include <stdio.h>
main()
{
int i, j, k;
int data_huruf[2][8][8] = {
{{ 0, 1, 1, 1, 1, 1, 0, 0 },
{ 0, 1, 0, 0, 0, 1, 0, 0 },
{ 0, 1, 0, 0, 0, 1, 0, 0 },
{ 1, 1, 1, 1, 1, 1, 1, 0 },
{ 1, 1, 0, 0, 0, 0, 1, 0 },
{ 1, 1, 0, 0, 0, 0, 1, 0 },
{ 1, 1, 0, 0, 0, 0, 1, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0 }
},
{{1, 1, 1, 1, 1, 1, 0, 0 },
{1, 0, 0, 0, 0, 1, 0, 0 },
{1, 0, 0, 0, 0, 1, 0, 0 },
{1, 1, 1, 1, 1, 1, 1, 0 },
{1, 1, 0, 0, 0, 0, 1, 0 },
{1, 1, 0, 0, 0, 0, 1, 0 },
{1, 1, 1, 1, 1, 1, 1, 0 },
{0, 0, 0, 0, 0, 0, 0, 0 }
}
};
for(i = 0; i < 2; i++) /* Tampilkan huruf */
{
for(j = 0; j < 8; j++)
{
for(k = 0; k < 8; k++)
if(data_huruf[i][j][k] != 0)
putchar('\xDB');
else
putchar(' '); /* spasi */
printf("\n"); /* pindah baris */
}
printf("\n"); /* pindah baris */
}
}
Contoh Eksekusi :
Inisialisasi array yang tak berukuran dapat dilakukan untuk array berdimensi satu atau
lebih. Untuk array berrdimensi lebih dari satu, dimensi terkirilah yang boleh tak berukuran.
Dengan cara ini tabel dalam array dapat diperluas atau dikurangi tanpa mengubah ukuran
array. Sebagai contoh :
tak berukuran
int skala[] =
{ 1, 2, 4, 6, 8 };
merupakan pendeklarasian array berdimensi satu yang tak berukuran. Secara otomatis
skala[ 0 ] bernilai 1
skala[ 1 ] bernilai 2
skala[ 2 ] bernilai 4
skala[ 3 ] bernilai 6
Contoh lain :
char konversi[][2] =
{ ’A’, ’T’,
’E’, ’M’,
’I’, ’V’,
’O’, ’S’,
’U’, ’J’,
};
Pada contoh ini,
konversi[0][0] bernilai ’A’
konversi[0][1] bernilai ’T’
konversi[1][0] bernilai ’E’
konversi[1][1] bernilai ’M’
……..
Contoh berikut akan menyandikan suatu kalimat yang dimasukkan melalui keyboard dengan
menggunakan data yang ada pada tabel konversi. Misal, huruf A akan diganti menjadi T,
huruf T akan diganti menjadi A.
/* File program : sandi.c
contoh inisialisasi array tak berukuran */
#include <stdio.h>
#include <stdlib.h>
#define JUM_KOLOM 2
#define MAX_KAR 256
main()
{
char konversi[][JUM_KOLOM] = {
'A', 'T',
'a', 't',
'E', 'M',
'e', 'm',
'I', 'V',
'i', 'v',
'O', 'S',
'o', 's',
'U', 'J',
'u', 'j'
};
char kalimat[MAX_KAR], karakter;
int i = 0, j, jum_kar, jum_penyandi;
printf("Masukkan sebuah kalimat dan akhiri dengan
ENTER\n");
printf("Kemudian kalimat tsb akan saya sandikan\n");
printf("Kalimat: ");
Array juga dapat dilewatkan sebagai parameter fungsi. Sebagai contoh ditujukan pada
program sorting.c. Program digunakan untuk memasukkan sejumlah data, kemudian data
tersebut diurutkan naik (ascending) dan dicetak ke layar.
Untuk melakukan sorting (proses pengurutan data), cara yang dipakai yaitu metode
buble sort (suatu metode pengurutan yang paling sederhana, dan memiliki kecepatan
pengurutan yang sangat lambat).
Algoritma pada metode pengurutan ini adalah sebagai berikut :
1. Atur i bernilai 0
2. Bandingkan x[i] dengan x[j], dengan j berjalan dari i + 1 sampai dengan n-1.
3. Pada setiap pembandingan, jika x[i] > x[j], maka isi x[i] dan x[j] ditukarkan
4. Bila i < (n – 1), ulangi mulai langkah 2.
Catatan: i = indeks array
x = nama array untuk menyimpan data
n = jumlah data
Algoritma berlaku untuk pengurutan menaik (ascending). Untuk pengurutan
menurun (descending), penukaran dilakukan jika x[i] < x[j].
Penjelasan proses pengurutan terhadap 5 buah data ditunjukkan pada Gambar 7.6.
Data semula (sebelum pengurutan) adalah
50,5 30,3 20,2 25,2 31,3
Setelah pengurutan menaik (secara ascending), hasil yang diharapkan berupa
20,2 25,2 30,3 31,3 50,5
Gambar 7.6 Proses pengurutan data secara ascending dengan metode Buble Sort
/* File program : sorting.c */
#include <stdio.h>
#define MAKS 20
void pemasukan_data(float [], int *);
void pengurutan_data(float [], int);
void penampilan_data(float [], int);
main()
{
float data[MAKS];
int jum_data;
pemasukan_data(data, &jum_data);
pengurutan_data(data, jum_data);
penampilan_data(data, jum_data);
}
Pada fungsi untuk pemasukan data, pengurutan data maupun penampilan data,
data[i]
menyatakan elemen data ke-i.
Beberapa hal tambahan yang perlu diketahui:
▪ Untuk menyatakan alamat dari suatu elemen array, bentuk umumnya adalah
&nama_array[indeks]
Misalnya,
&data[1]
menyatakan alamt dari elemen ke-1. Adapun
&data[0]
sama saja dengan:
data
▪ Suatu array berdimensi satu dalam parameter formal dideklarasikan dengan bentuk
tipe nama_array[]
dengan di dalam tanda kurung siku tak disebutkan mengenai jumlah elemen. Jumlah elemen
dinyatakan dalam parameter tersendiri (atau dinyatakan dalam bentuk variabel eksternal).
Untuk array berdimensi lebih dari satu, kurung siku terkirilah yang kosong.
B. PERCOBAAN
main()
{
int nilai[10];
int indeks;
nilai[0] = 197;
nilai[2] = -100;
nilai[5] = 350;
nilai[3] = nilai[0] + nilai[5];
nilai[9] = nilai[5] / 10;
--nilai[2];
a.Hasil Percobaan
• Program C
• Hasil Pemograman C
b.Pembahasan
pada fungsi Array() digunakan untuk proses looping mulai dari indeks[0] dan memasukkan
data mula dari [0], karena data ke [0] sehingga yang tampil hanya bilangan nlai ke[0] sampai
ke bilangan nilai ke[9].
/* fibonacci1.c */
#include <stdio.h>
main()
{
int fibo[15], i;
fibo[0] = 0;
fibo[1] = 1;
b.Pembahasan
main()
{
int i;
static int nilai[10] = {0, 1, 4, 9, 16};
/* dgn sendirinya nilai lainnya diset nol */
main()
{
int i;
static char word[] = {'H', 'e', 'l', 'l', 'o', '!'};
printf("\n");
}
a.Hasil Percobaan
• Program C
• Hasil Program C
b.pembahasan
program tersebut menampilkan kata yang diperintah yaitu Hello! Pada fungsi array.
5. Menentukan nilai maksimum dari sederetan nilai yang sudah diinisialisasi dan disimpan
dalam array; mengirim array sebagai parameter sebuah fungsi.
main()
{
static int data1[] = { 5, 34, 56, -12, 3, 19 };
static int data2[] = { 1, -2, 34, 207, 93, -12 };
return terbesar;
}
a.Hasil Percobaan
• Program C
• Hasil Program C
b.pembahasan
program tersebut untuk menampilkan nila maksimum dari data 1 dan 2 dengan
menggunakan rumus array
6. Menentukan nilai minimum dari sederetan nilai masukan yang disimpan dalam array;
mengirim array sebagai parameter sebuah fungsi.
main()
{
int nilai[10], i, kecil;
kecil = minimum(nilai);
printf("\nBilangan terkecil adalah %d\n", kecil);
}
min = nilai[0];
for (j=1; j < 10; j++)
if (nilai[j] < min)
min = nilai[j];
return(min);
}
a.Hasil Percobaan
• Program C
• Hasil Program C
b.pembahasan
program tersebut menampilkan deretan yang paling terkecil/minimum pada fungsi array .
7. Menjumlahkan dua buah array yang ; mengirim array sebagai parameter sebuah fungsi.
/* File program : jml2array.c */
#include <stdio.h>
main()
{
int jml;
int bil[][5] = {
{1, 2, 35, 7, 10},
{6, 7, 4, 1, 0}
};
return total;
}
a.Hasil Percobaan
• Program C
• Hasil Program C
B.pembahasan
Program tersebut menampilkan hasil penjumlahan 2 array pada fungsi array.
C. SOAL
Jawaban:
/*nilai1.c*/
#include<stdio.h>
printf("Banyaknya data:");
scanf("%d", &n);
printf("\n");
for(i=1;i<=n;i++)
{
printf("Masukkan nilai ke-%d:", i);
scanf("%f", &nilai[i]);
total=total+nilai[i];
if(i==1)
{
maks=nilai[i];
min=nilai[i];
}
else
{
if(nilai[i]>maks)
maks=nilai[i];
if(nilai[i]<min)
min = nilai[i];
}
}
rata=total/n;
• Hasil Program C
b.Pembahasan
program tersebut bertujuan untuk menentukan nilai minimal,maksimal dan nilai
rata-rata pada jumlah data yang sudah tertera.
2. Ubahlah program di atas sehingga mendapatkan tampilan seperti di bawah ini:
Jawaban:
#include<stdio.h>
#define INDEKS 100
main()
{
int n,i, j, best;
float nilai[INDEKS], maks, min, rata[INDEKS],
rata_akhir;
float total{INDEKS}, total_akhir=0;
printf("Banyaknya data:");
scanf("%d", &n);
for(i=1;i<=n; i++)
{
printf("Masukkan nilai ke-%d: ", i);
scanf("%f",&nilai[i]);
total_akhir=total_akhir+nilai[i];
if(i==1)
{
maks=nilai[i];
min=nilai[i];
best = i;
total = nilai[i];
rata[i]= nilai[i];
}
else
{
total=total+nilai[i];
rata[i] = total/
if(nilai[i]>maks)
{
maks=nilai[i];
best=i;
}
if(nilai[i]<min)
min= nilai[i];
}
}
rata_akhir=total_akhir/n;
printf("\n%15s%12s%15s", "Nilai", "Total", "Rata-
rata\n");
for(j=1;j<=n;j++)
printf("%3d%12g%12g%12g\n",j,nilai[j],total ,
rata[j]);
printf("\nNilai maks = %g\n", maks);
printf("Nilai min = %g\n", min);
printf("Nilai rata-rata =%g\n", rata_akhir);
printf("Nilai terbaik adalah nilai ke: %d\n", best);
}
a.Hasil Percobaan
• Program C
• Hasil Program C
b.Pembahasan
program tersebut bertujuan untuk menentukan nilai minimal,maksimal dan nilai
rata-rata pada jumlah data yang sudah tertera.
0 1 1 2 3 5 8 13 21 34
Jawaban:
/*fibonacci.c*/
#include<stdio.h>
#define MAKS 100
main()
{
int awal,n,i,fibo[MAKS];
printf("Masukkan nilai awal:");
scanf("%d",&awal);
printf("Masukkan jumlah deret:");
scanf("%d", &n);
fibo[1]= awal;
fibo[2]= awal+1;
printf("\n%5d%5d", fibo[1], fibo[2]);
for(i=3;i<=n; i++)
{
fibo[i]=fibo[i-1]+fibo[i-2];
printf("%5d", fibo[i]);
}
printf("\n\n");
}
a.Hasil Percobaan
• Program C
• Hasil Program C
b.Pembahasan
Dalam program ini diminta untuk menampilkan bilangan fibonacci, mulai dari 0
sampai n, n merupakan bilangan yang diinputkan oleh user. Jika indeks [0] maka
cetak 0, jika a[i]=a[i-1]+a[i-2] kemudian dicetak.
4. Buat program untuk mengurutkan data masukan dengan urutan naik (ascending)
Input : jumlah data (n), data ke-1 s/d data ke-n
Output : Tampilan data dalam keadaan terurut
Contoh :
Jumlah data = 3
Data ke-1 = 50
Data ke-2 = 43
Data ke-3 = 45
#include <stdio.h>
main()
{
int a[10];
int i,j,x;
for(i=0;i<5;i++)
{
printf("Data integer a[%d]: ", i);
scanf("%d", &a[i]);
}
for(i=0;i<=5-2;i++)
{
for(j=i+1;j<=5-1;j++)
{
if (a[i]>=a[j])
{
x=a[i];
a[i]=a[j];
a[j]=x;
}
}
}
printf("\nData setelah disusun\n\n");
for(i=0;i<=5-1;i++)
{
printf("\nData pada a[%d]: %d", i, a[i]);
}
printf("\n\nSelesai");
}
a.Hasil Percobaan
• Program C
• Hasil Program C
b.Pembahasan
pada program tersebut bertujuan untuk menampilkan data dalam keadaan terurut.
Petunjuk :
Asumsikan Ahmad mengikuti kelas Prog1, Mat1, dan BIG1.
Nilai pada masing-masing kelas dijumlahkan dan dihitung rata-ratanya (gunakan array 2
dimensi).
Jawaban:
#include <stdio.h>
float matakuliah[4][3] =
{{81,90,62},{50,83,87},{89,55,65},{77,70,92}};
main()
{
float ahmad,adang,dani,edi;
ahmad
=(matakuliah[0][0]+matakuliah[0][1]+matakuliah[0][2])/3;
adang
=(matakuliah[1][0]+matakuliah[1][1]+matakuliah[1][2])/3;
dani =(matakuliah[2][0]+matakuliah[2][1]+matakuliah[2][2])/3;
edi =(matakuliah[3][0]+matakuliah[3][1]+matakuliah[3][2])/3;
printf("No. Rata-rata\n");
printf("1. %.2f\n",ahmad);
printf("2. %.2f\n",adang);
printf("3. %.2f\n",dani);
printf("4. %.2f\n",edi);
a.Hasil Percobaan
• Program C
• Hasil Program C
b.Pembahasan
program tersebut menampilkan data siswa dengan nilainya dengan menggunakan
array dua dimensi.