Pertemuan 2 - Array
Pertemuan 2 - Array
ARRAY
A. ARRAY 1 DIMENSI
Sebelumnya telah kita pelajari mengenai variabel dan penggunaan variabel dalam pembuatan sebuah
program, dimana variabel yang kita gunakan adalah variabel tuggal. Variabel tunggal merupakan variabel
yang dapat menyimpan satu buah nilai untuk setiap variabelnya. Jika kita ingin menyimpan banyak nilai
dalam sebuah variabel kita dapat menggunakan variabel array.
Array dapat diartikan sebagai sesuatu yang berbaris atau berderet-deret. Dalam bahasa pemrograman,
array adalah variabel sejenis yang berderet-deret sedemikian rupa sehingga alamatnya saling
berkesinambungan atau bersebelahan atau berdampingan (contigous).
Array merupakan sekelompok lokasi memori yang terdiri dari kumpulan nilai dengan tipe data yang
sama dengan menggunakan nama yang sama. Sebagai contoh, jika diketahui variabel a yang memiliki 5
lokasi memori yang semuanya bertipe int. Masing-masing nilai dalam setiap lokasi mempunyai identitias
berupa nama variabel dan nomor indeks yang dituliskan di dalam tanda kurung siku ‘[….]’. Untuk
mengakses masing-masing nilai pada array, menggunakan indeks yang mana indeks selalu dimulai dari 0
sampai dengan N-1.
a[0] 1
a[1] 2
a[2] 3
a[3] 4
Nama array a[4] 5
indeks
Array merupakan kumpulan data yang bertipe sama yang dapat diakses melalui indeks. Elemen array
diakses menggunakan simbol kurung siku []. Setelah dideklarasikan, array harus diinisialisasi terlebih dulu.
Variabel array dideklarasikan dengan mencantumkan tipe dan nama variabel diikuti dengan banyak lokasi
memori yang diinginkan. Bentuk umum dari deklarasi sebuah variabel array:
Sebagai contoh :
int c[5];
float x[10];
int c[5] = {-45, 6, 0, 72, 100};
int d[3] = {0};
int x[]={10,15,20,25,30,35,40,45};
Perlu diperhatikan bahwa bahasa C secara otomatis akan menyediakan lokasi memori sesuai dengan yang
dideklarasikan, dimana indeks selalu dimulai dari 0 sampai dengan N-1, N adalah banyaknya lokasi memori
yang dipesan. Nilai suatu variabel array dapat juga diinisialisasi secara langsung pada saat deklarasi, seperti
pada contoh yakni: int c[5] = {-45, 6, 0, 72, 100};. Berarti setiap lokasi memori dari
variabel array c langsung diisi dengan nilai-nilai yang dituliskan di dalam tanda kurung kurawal.
Sebuah variabel array juga dapat sekaligus mengisi setiap lokasi memori dengan satu nilai tertentu,
misalnya nilai 0, maka deklarasi variabel array tersebut dapat dituliskan seperti pada contoh yakni int
d[3] = {0};. Selain itu, banyaknya lokasi memori juga dapat secara otomatis disediakan sesuai dengan
banyaknya nilai yang akan dimasukkan, seperti pada contoh di atas yakni: int
x[]={10,15,20,25,30,35,40,45}; , yang mana membuat variabel array x dengan 8 lokasi
memori.
Contoh Array
Kompilasi dan jalankan program di bawah ini.
#include <stdio.h>
int main()
{
int A[5];
printf(“%5i”, A[0]);
return 0;
}
Selanjutnya ubahlah program di atas menjadi seperti di bawah ini, lalu kompilasi dan jalankan programnya.
#include <stdio.h>
int main()
{
int A[5]={7, 3, 9, 15, 12};
printf(“%i”, A[0]);
printf(“\n%i”, A[3]);
return 0;
}
Berikut adalah contoh implementasi variabel array, yaitu program untuk menghitung jumlah setiap elemen
dalam sebuah array.
#include <stdio.h>
#define SIZE 6
int main()
{
int a[SIZE]={1,3,5,4,7,2};
int indeks, total = 0;
#include <stdio.h>
int main()
{
int a[5]={1, 3, 5, 4, 7};
printf("%d\n", a[7]);
return 0;
}
Tidak akan terjadi error pada saat compile maupun run, namun nilai yang ditampilkan bukan nilai dari
variabel array. Jika mengakses indeks di luar selang, maka akan diperoleh nilai data lain.
Berikut ini contoh untuk mengisi array dari inputan user. Jika diberikan inputan : 3 20 34 21, apakah yang
akan ditampilkan oleh program di bawah ini?
#include <stdio.h>
int main()
{
int a[100], i;
scanf("%d", &n); //baca banyaknya data
return 0;
}
Pemanggilan fungsi JUMLAH dengan mengirimkan argumen berupa variabel array c dan sebuah konstanta
5. Perhatikan bahwa variabel array ditulis hanya c, tanpa notasi tambahan apapun. Deklarasi vaiabel array
yang menjadi parameter dari suatu fungsi dituliskan dengan nama variabel array yang diikuti dengan tanda
kurung [], tanpa menuliskan banyaknya lokasi memori yang diinginkan.
Program berikut memberikan contoh penggunaan variabel array dalam suatu fungsi dan cara
pemanggilannya.
#include <stdio.h>
#define SIZE 12
return total;
}
int main()
{
int a[SIZE]={1,3,5,4,7,2,99,16,45,67,89,45};
int total;
total = jumlah(a,SIZE);
B. ARRAY 2 DIMENSI
Pada materi di atas, struktur array yang dibahas adalah array satu dimensi, sehingga variabelnya disebut
dengan variabel array berdimensi satu. Selanjutnya akan dibahas array berdimensi dua. Array berdimensi
dua dapat diibaratkan seperti sebuah matriks berukuran baris x kolom. Sebagai contoh, matriks A berukuran
2x3, dapat dideklarasikan di dalam C sebagai berikut:
Sebagai contoh, berikut adalah program untuk lebih memahami konsep array dua dimensi, dan cobalah
menentukan keluaran dari program tersebut:
#include <stdio.h>
void printArray(int A[2][3]);
int main()
{
int matriks1[2][3]={{1,2,3},{4,5,6}},
matriks2[2][3]={1,2,3,4,5},
matriks3[2][3]={{1,2},{4}};
printArray(matriks1);
printArray(matriks2);
printArray(matriks3);
return 0;
}
void printArray(int a[2][3])
{
int i, j;
for(i=0;i<2;i++){
for(j=0; j<3; j++)
printf("%d ", a[i][j]);
printf("\n");
}
}
int main()
{
int i,j, M, N;
scanf("%d %d", &M, &N);
int a[M][N];
for(i=0;i<M;i++)
for(j=0;j<N;j++)
scanf("%d", &a[i][j]);
for(i=0;i<M;i++){
for(j=0;j<N;j++){
printf("%d ", a[i][j]);
}
printf("\n");
}
return 0;
}
C. RECORD
Struct adalah sekumpulan variabel yang masing-masing dapat berbeda tipe data dan dikelompokka ke
dalam satu nama variabel. Struct sering digunakan untuk mendefinisikan suatu record data yang disimpan
di dalam file. Sementara itu, variabel-variabel yang terdapat di dalam struct merupakan field pada record
tersebut. Struct termasuk ke dalam tipe data yang dibangkitkan (derived data type).
Definisi Struct
Perhatikan format untuk mendefinisikan sebuah struct:
struct tag{
tipe_data field1;
tipe_data field2;
}svar1, svar2;
Sebagai contoh:
struct mhs{
char *nama;
char *nim;
float uts, uas;
char mutu;
};
Kata kunci struct menunjukkan definisi dari struct, dan identifikasi mhs menunjukkan struct tag. Dengan
demikian terdapat tipe data baru bernama struct mhs, yang terdiri dari nama mahasiswa, nomor induk
mahasiswa, nilai uts dan uas, serta huruf mutu, yang masing-masing variabel tersebut disebut dengan field.
Oleh karena itu, jika ingin mendeklarasikan variabel dengan tipe data tersebut, dapat dituliskan seperti
contoh berikut:
Variabel x merupakan variabel tunggal, y merupakan variabel array dengan ukuran alokasi memori
sebanyak 100, dan z adalah variabel pointer, yang mana semuanya bertipe datakan struct mhs yang memiliki
field nama, nim, nilai uts, nilai uas, dan huruf mutu. Penulisan deklarasi variabel bertipe data struct juga
dapat ditulis sekaligus seperti contoh di bawah ini”
struct mhs{
char *nama;
char *nim;
float uts, uas;
char mutu;
}x, y[100], *z;
Inisialisasi terhadap variabel struct dapat dilakukan seperti contoh di bawah ini:
Untuk mengakses field atau variabel yang terdapat di dalam struct, terdapat dua cara, yakni:
1. Menggunakan operator titik
Jika variabel yang dideklarasikan merupakan variabel tunggal (misalnya x) , maka untuk
mengakses field atau variabel yang terdapat di dalam struct menggunakan operator titik. Contoh:
printf("%s", x.nama);
2. Menggunakan operator panah
Jika variabel yang dideklarasikan merupakan variabel pointer (misalnya z) , maka untuk mengakses
field atau variabel yang terdapat di dalam struct menggunakan operator panah. Contoh:
printf("%s", z->nama);
struct mhs{
char *nama;
char *nim;
foat uts, uas;
char mutu;
};
int main()
{
struct mhs x = {"Dengklek", "1810511001", 80, 90, 'A'};
struct mhs *z;
z=&x;
printf("%s\n", x.nama);
printf("%s\n", z->nama);
return 0;
}
Perlu diperhatikan untuk field yang digunakan bertipe data string. Terdapat dua cara untuk mendeklarasikan
dan menginisialisasinya.
1. Dapat dideklarasikan sebagai pointer
Contoh : char *nama; Untuk menginisialisasinya dapat menggunakan operator assignment (=)
2. Dapat dideklarasikan sebagai array
Contoh : char alamat[40]; Untuk menginisialisasinya harus menyalin string ke array tsb
dengan menggunakan fungsi strcpy();
Sebagai contoh:
#include <stdio.h>
#include <string.h>
int main(){
struct {
char *nama, alamat[40];
} mhs;
Untuk membaca data dari keyboard pada tipe data struct dapat dilakukan dengan dua cara:
1. Jika data dari keyboard dibaca dengan fungsi gets() atau fgets(), maka untuk memasukkan ke field
string pada struct, data ini harus disimpan ke variabel biasa, baru dimasukkan ke field struct.
Sebagai contoh:
#include <stdio.h>
struct dataMhs {
char *nama;
float uts, uas;
} mhs;
int main(){
char x[40];
printf("Nama? "); gets(x); mhs.nama = x;
printf("Nilai? "); scanf("%f", &mhs.uts);
printf("%s %.1f\n", mhs.nama, mhs.uts);
return 0;
}
2. Alternatif lainnya adalah menggunakan scanf() untuk complex format string. "%[^\n]" artinya scan
selama bukan \n. Hasil scan langsung diinput ke field mhs.nama
#include <stdio.h>
int main(){
struct dataMhs {
char nama[50];
float nilai;
}mhs;
Typedef
Kata kunci typedef digunakan untuk membuat sinonim atau alias dari tipe data struct yang telah
didefinisikan sebelumnya. Sebagai contoh, pernyataan:
typedef struct mhs MHS;
Struct Bertingkat
Field pada struct boleh saja bertipe data struct lainnya sehingga membentuk struct bertingkat. Pengaksesan
field struct bertingkat menggunakan operator titik/panah. Perhatikan contoh di bawah ini:
#include <stdio.h>
typedef struct {
int x, y;
} titik;
typedef struct {
titik kr_atas, kn_bawah;
} kotak;
int main()
{
kotak K;
K.kr_atas.x = 5;
K.kr_atas.y = 4;
printf("%d\n", K.kr_atas.x );
return 0;
}
Sebagai contoh: kita ingin membaca sejumlah data mahasiswa dimana data dibaca per baris, dengan
karakter (;) sebagai pemisah nama dan nilai.
#include <stdio.h>
#define SIZE 3
int main(){
typedef struct {
char nama[50];
float nilai;
} M;
M A[SIZE];
int i;
for (i=0; i<SIZE; i++)
scanf("%[^;];%f", A[i].nama, &A[i].nilai);
for (i=0; i<SIZE; i++)
printf("%s %.1f", A[i].nama, A[i].nilai);
return 0;
}
Sebagai contoh:
#include <stdio.h>
typedef struct {
int pj, lb, tg;
} balok ;
typedef struct{
int pj, lb;
}persegi;
int main(){
balok A = {6, 4, 5};
persegi C = {6,4};
int V = hitung_volume(A);
int L = hitung_luas(&C);
printf("Volume: %d\n", V);
printf("Luas: %d\n", L);
return 0;
}
LATIHAN
1. [10 poin] Buatlah sebuah program bahasa C untuk menginput 10 bilangan bulat yang menyatakan
nilai mahasiswa ke dalam sebuah array yang berisi 10 buah elemen. Selanjutnya cetak daftar nilai
mahasiswa yang lulus (nilai>=60).
2. [10 poin]Buatlah sebuah program menggunakan array untuk mencari nilai maksimum dan
minimum pada array tersebut. Jumlah data tidak lebih dari 100. Proses masukkan nilai pada array
diulang sampai nilai yang dimasukkan kurang dari 0 atau lebih dari 100. Proses mencari nilai
maksimum dan minimum menggunakan fungsi sendiri.
Contoh input : 1 2 3 4 5 -1
Contoh output : Maksimum = 5
Minimum = 1
3. [20 poin] Pak Dengklek menyelenggarakan ujian harian setelah selesai mengajarkan N ekor beberk
mengenai konsep array. Setiap bebek ke-I mendapat nilai sebesar hi yang merupakan bilangan
bulat. Untuk menentukan lulus, nilai bebek tersebut tidak kurang dari nilai rata-rata dari seluruh
bebek. Tentukan banyaknya bebek yang lulus ujian!. Batasan : (1<=N<=100 ; 1<=h i <=100 ; 1<=
i <=N). Masukkan berupa dua baris. Baris pertama berisi sebuah bilangan bulat N. Bari kedua berisi
nilai ujian bebek. Baris kedua ini merupakan hi . Keluarannya berupa sebuah baris yang menyatakan
banyaknya bebek yang lulus ujian.
Contoh input : 3
567
Contoh ouput : 2
Keterangan : nilai rata-rata dari seluruh bebek adalah 6 dan terdapat 2 ekor bebek yang nilainya
tidak kurang dari 6.
4. [10 poin] Buatlah program membaca matriks a berukuran dan menampilkan elemen terbesar
pada setiap barisnya.
Contoh input :
44
1321
8432
1234
9876
Contoh output:
3849
5. [20 poin] Buatlah program untuk membuat matriks simetris berukuran n×n, seluruh elemen pada
diagonal sekunder (kanan atas ke kiri bawah) adalah n, dan elemen-elemen di bawah dan atasnya
adalah n-1, n-2, … , 1.
Contoh input:
5
Contoh ouput :
12345
23454
34543
45432
54321
6. [10 poin] Buatlah sebuah program yang mengandung sebuah struct yang menyimpan data tanggal
hari ini (tanggal, bulan, tahun). Buat variabel elemen bulan sebagai sebuah enumerasi. Gunakan
sebuah fungsi bernama cetak_tanggal yang digunakan untuk mencetak tanggal yang telah
diinputkan.
Contoh input :
Masukkan tanggal hari ini : 26-11-2018
Contoh output:
Hari ini adalah 26 November 2018.
7. [20 poin] Buatlah sebuah program yang mengandung sebuah struct yang menyimpan data buku
berupa:
kode isbn dengan panjang maksimal 18
judul buku dengan panjang maksimal 50
nama penulis buku dengan panjang mmaksimal 40
nama penerbit dengan panjang maksimal 25
jumlah halaman buku
tahun terbitan buku
harga buku
diketahui pada program C, fungsi main dari program tersebut sebagai berikut:
#include <stdio.h>
....
....
int main()
{
Buku B;
IsiDataBuku(&B);
printf("\n");
tampilkanDataBuku(B);
return 0;
}
Lengkapi titik-titik pada program di atas sehingga menghasilkan program yang bebas error dan
output yang benar
Contoh input :
Mengisi data buku
ISBN : 978-602-6232-08-3
Judul : Kumpulan Solusi Pemrograman C
Penulis : Budi Raharjo
Penerbit : Informatika
Halaman : 434
Tahun Terbit : 2016
Harga : 98000
Contoh output:
978-602-6232-08-3 | Kumpulan Solusi Pemrograman C | Budi Raharjo | Informatika | 434 | 2016 |
98000
DAFTAR PUSTAKA
[1] G. G. Maulana and others, “Pembelajaran Dasar Algoritma Dan Pemrograman Menggunakan
El-Goritma Berbasis Web,” J. Tek. Mesin, vol. 6, no. 2, p. 8, 2017.
[2] “Lima Bahasa Pemrograman Terpopuler untuk Dipelajari di Tahun 2021 – CCIT.”
http://ccit.eng.ui.ac.id/lima-bahasa-pemrograman-terpopuler-untuk-dipelajari-di-tahun-2021/
(accessed Feb. 07, 2022).
[3] “Pengertian Bahasa Pemrograman C - Tutorial Belajar C | Duniailkom.”
https://www.duniailkom.com/tutorial-belajar-c-pengertian-bahasa-pemrograman-c/ (accessed
Feb. 07, 2022).
[4] “Cara Mendownload dan Menginstall Code::Blocks - Tutorial Belajar C | Duniailkom.”
https://www.duniailkom.com/tutorial-belajar-c-cara-mendownload-dan-menginstall-code-blocks/
(accessed Feb. 07, 2022).
[5] “Belajar Pemrograman C #3: Struktur Dasar dan Aturan Penulisan Program C yang Harus
dipahami.” https://www.petanikode.com/c-syntak/ (accessed Feb. 07, 2022).
[6] “Tutorial Belajar: Jenis-jenis Operator dalam Bahasa C | Duniailkom.”
https://www.duniailkom.com/tutorial-belajar-c-jenis-jenis-operator-dalam-bahasa-c/ (accessed
Feb. 07, 2022).
[7] A. Solichin and Painem, MODUL PRAKTIKUM BAHASA PEMROGRAMAN DASAR
(PG168). Jakarta: Fakultas Teknologi Informasi Universitas Budi Luhur, 2015.
[8] M. M. Santoni, MODUL PRAKTIKUM ALGORITMA DAN PEMROGRAMAN 2. Jakarta:
Fakultas Ilmu Komputer, UPN Veteran Jakarta.