Skip to main content

Pertemuan-06

MATERI PEMBELAJARAN: ARRAY DALAM BAHASA PEMROGRAMAN C#

Mata Kuliah: Pemrograman Berorientasi Objek / Algoritma & Struktur Data Topik: Array (Larik) Bahasa: C# (.NET)


1. PENDAHULUAN

1.1 Definisi Array

Array (atau dikenal juga dengan istilah larik) adalah struktur data yang digunakan untuk menyimpan sekumpulan data dengan tipe yang sama dalam satu variabel. Data tersebut disimpan secara berurutan di memori dan diakses menggunakan indeks (dimulai dari 0).

1.2 Mengapa Harus Menggunakan Array?

Bayangkan kita ingin menyimpan 10 nilai luas persegi panjang. Tanpa array, kita harus membuat 10 variabel terpisah seperti ini:

//////////////// Cara Konvensional ////////////////
// Program perhitungan luas banyak persegi
int luas1;
int luas2;
int luas3;
int luas4;
int luas5;
int luas6;
int luas7;
int luas8;
int luas9;
int luas10;

luas1 = panjang1 * lebar1;
luas2 = panjang2 * lebar2;
luas3 = panjang3 * lebar3;
luas4 = panjang4 * lebar4;
luas5 = panjang5 * lebar5;
luas6 = panjang6 * lebar6;
luas7 = panjang7 * lebar7;
luas8 = panjang8 * lebar8;
// dst...

Masalah dari cara konvensional:

  • Kode panjang dan berulang (tidak efisien)
  • Sulit dimanipulasi dengan looping
  • Bayangkan jika ada 100 atau 1000 data — sangat tidak praktis
  • Sulit dirawat (maintainability rendah)

Solusinya adalah dengan menggunakan ARRAY:

//////////////// Cara dengan Array ////////////////
int[] luas = new int[10];
luas[0] = panjang1 * lebar1;
luas[1] = panjang2 * lebar2;
luas[2] = panjang3 * lebar3;
// ... dst
luas[9] = panjang10 * lebar10;

1.3 Keuntungan Menggunakan Array

AspekTanpa ArrayDengan Array
Jumlah variabelBanyak (sesuai data)Cukup 1
Penulisan kodeBerulang & panjangSingkat & rapi
Manipulasi dataManual satu per satuBisa pakai looping
SkalabilitasSangat rendahSangat tinggi
MemoriTersebarBerdekatan (efisien)

2. SINTAKS DASAR ARRAY DI C#

2.1 Deklarasi Array

// Format umum: tipeData[] namaArray;
int[] angka;
string[] nama;
double[] nilai;
bool[] status;

2.2 Inisialisasi Array

C# menyediakan beberapa cara untuk menginisialisasi array:

// Cara 1: Menentukan ukuran terlebih dahulu (nilai default = 0/null)
int[] luas = new int[10];

// Cara 2: Deklarasi sekaligus pengisian nilai
int[] panjang = new int[5] { 10, 30, 50, 70, 90 };

// Cara 3: Versi singkat
int[] lebar = { 20, 40, 60, 80, 100 };

// Cara 4: Untuk array string
string[] nama = new string[4] { "budi", "agus", "dani", "luthfi" };

2.3 Mengakses Elemen Array

Indeks array di C# dimulai dari 0, bukan 1.

string[] nama = { "budi", "agus", "dani", "luthfi" };

Console.WriteLine(nama[0]); // Output: budi
Console.WriteLine(nama[1]); // Output: agus
Console.WriteLine(nama[2]); // Output: dani
Console.WriteLine(nama[3]); // Output: luthfi

2.4 Properti Length

Untuk mengetahui jumlah elemen array, gunakan properti .Length:

int[] data = new int[5];
Console.WriteLine(data.Length); // Output: 5

3. STUDI KASUS 1: MENGHITUNG LUAS PERSEGI PANJANG

Studi kasus ini akan disajikan dalam 3 versi untuk menunjukkan evolusi penggunaan array.

Versi 1: Array Manual (Tanpa Loop)

using System;

class Program
{
static void Main()
{
int[] luas = new int[10];
int[] panjang = new int[10];
int[] lebar = new int[10];

// Mengisi data panjang dan lebar
panjang[0] = 10;
lebar[0] = 20;
panjang[1] = 20;
lebar[1] = 30;

// Hitung luas
luas[0] = panjang[0] * lebar[0];
Console.WriteLine("nilai luas [0] adalah " + luas[0]);
}
}

Kelemahan: Masih harus dituliskan satu per satu untuk setiap indeks.

Versi 2: Array dengan Inisialisasi + For Loop ⭐ (REKOMENDASI)

using System;

class Program
{
static void Main()
{
// See https://aka.ms/new-console-template for more information
int[] luas = new int[5];
int[] panjang = new int[5];
int[] lebar = new int[5];

panjang = new int[5] { 10, 30, 50, 70, 90 };
lebar = new int[5] { 20, 40, 60, 80, 100 };

int ab;
for (ab = 0; ab < 5; ab++)
{
luas[ab] = panjang[ab] * lebar[ab];
Console.WriteLine("luas persegi ke " + ab + " adalah " + luas[ab]);
}
}
}

Output Program:

luas persegi ke 0 adalah 200
luas persegi ke 1 adalah 1200
luas persegi ke 2 adalah 3000
luas persegi ke 3 adalah 5600
luas persegi ke 4 adalah 9000

Penjelasan:

  • Baris 2-4: Deklarasi 3 array dengan ukuran 5
  • Baris 6-7: Inisialisasi nilai panjang dan lebar
  • Baris 10: Variabel counter ab untuk loop
  • Baris 11-14: For loop dari 0 sampai kurang dari 5
  • Baris 13: Hitung luas pada setiap indeks
  • Baris 14: Tampilkan hasil

Versi 3: Versi Lebih Modern (Menggunakan .Length)

using System;

class Program
{
static void Main()
{
int[] panjang = { 10, 30, 50, 70, 90 };
int[] lebar = { 20, 40, 60, 80, 100 };
int[] luas = new int[panjang.Length];

for (int i = 0; i < panjang.Length; i++)
{
luas[i] = panjang[i] * lebar[i];
Console.WriteLine($"Luas persegi ke-{i} adalah {luas[i]}");
}
}
}

Keunggulan: Lebih dinamis — jika ukuran array berubah, kode tidak perlu diubah.


4. STUDI KASUS 2: MENAMPILKAN NAMA DENGAN ARRAY

Versi 1: Akses Indeks Tertentu

using System;

class Program
{
static void Main()
{
// See https://aka.ms/new-console-template for more information
string[] nama = new string[4];
nama = new string[4] { "budi", "agus", "dani", "luthfi" };

Console.WriteLine("nama adalah " + nama[3]);
}
}

Output:

nama adalah luthfi

Versi 2: Menampilkan Semua Nama dengan For Loop

using System;

class Program
{
static void Main()
{
string[] nama = new string[4] { "budi", "agus", "dani", "luthfi" };

for (int x = 0; x < nama.Length; x++)
{
Console.WriteLine("Nama ke-" + x + " adalah " + nama[x]);
}
}
}

Output:

Nama ke-0 adalah budi
Nama ke-1 adalah agus
Nama ke-2 adalah dani
Nama ke-3 adalah luthfi

Versi 3: Menggunakan Foreach (Lebih Sederhana)

using System;

class Program
{
static void Main()
{
string[] nama = { "budi", "agus", "dani", "luthfi" };

foreach (string n in nama)
{
Console.WriteLine("Nama: " + n);
}
}
}

💡 Tips: Gunakan foreach jika hanya ingin membaca isi array. Gunakan for jika butuh indeks atau ingin mengubah nilai array.


5. STUDI KASUS TAMBAHAN (BONUS)

5.1 Menghitung Luas Lingkaran dengan Array

Rumus: Luas = π × r²

using System;

class Program
{
static void Main()
{
const double PI = 3.14159;
double[] jariJari = { 5, 10, 15, 20, 25 };
double[] luasLingkaran = new double[jariJari.Length];

for (int i = 0; i < jariJari.Length; i++)
{
luasLingkaran[i] = PI * jariJari[i] * jariJari[i];
Console.WriteLine($"Lingkaran ke-{i + 1} dengan jari-jari {jariJari[i]} memiliki luas {luasLingkaran[i]:F2}");
}
}
}

Output:

Lingkaran ke-1 dengan jari-jari 5 memiliki luas 78.54
Lingkaran ke-2 dengan jari-jari 10 memiliki luas 314.16
Lingkaran ke-3 dengan jari-jari 15 memiliki luas 706.86
Lingkaran ke-4 dengan jari-jari 20 memiliki luas 1256.64
Lingkaran ke-5 dengan jari-jari 25 memiliki luas 1963.49

5.2 Menghitung Nilai Mahasiswa

using System;

class Program
{
static void Main()
{
string[] mahasiswa = { "Andi", "Bayu", "Citra", "Dewi", "Eko" };
int[] nilai = { 85, 70, 92, 65, 78 };

Console.WriteLine("=== DAFTAR NILAI MAHASISWA ===");
for (int i = 0; i < mahasiswa.Length; i++)
{
string keterangan = nilai[i] >= 75 ? "LULUS" : "TIDAK LULUS";
Console.WriteLine($"{mahasiswa[i]} - Nilai: {nilai[i]} ({keterangan})");
}
}
}

5.3 Mencari Nilai Tertinggi & Terendah

using System;

class Program
{
static void Main()
{
int[] nilai = { 85, 70, 92, 65, 78, 88, 95, 60 };

int tertinggi = nilai[0];
int terendah = nilai[0];

for (int i = 1; i < nilai.Length; i++)
{
if (nilai[i] > tertinggi) tertinggi = nilai[i];
if (nilai[i] < terendah) terendah = nilai[i];
}

Console.WriteLine("Nilai Tertinggi: " + tertinggi);
Console.WriteLine("Nilai Terendah : " + terendah);
}
}

5.4 Menghitung Rata-Rata

using System;

class Program
{
static void Main()
{
double[] nilai = { 85, 70, 92, 65, 78 };
double total = 0;

for (int i = 0; i < nilai.Length; i++)
{
total += nilai[i];
}

double rataRata = total / nilai.Length;
Console.WriteLine($"Total Nilai : {total}");
Console.WriteLine($"Rata-Rata : {rataRata:F2}");
}
}
using System;

class Program
{
static void Main()
{
string[] nama = { "budi", "agus", "dani", "luthfi", "siti" };
string cari = "dani";
bool ditemukan = false;
int posisi = -1;

for (int i = 0; i < nama.Length; i++)
{
if (nama[i] == cari)
{
ditemukan = true;
posisi = i;
break;
}
}

if (ditemukan)
Console.WriteLine($"Nama '{cari}' ditemukan pada indeks ke-{posisi}");
else
Console.WriteLine($"Nama '{cari}' tidak ditemukan");
}
}

5.6 Array 2 Dimensi (Matriks Nilai)

using System;

class Program
{
static void Main()
{
// 3 mahasiswa, masing-masing 3 mata kuliah
int[,] nilai = {
{ 85, 90, 78 }, // Mahasiswa 1
{ 70, 88, 92 }, // Mahasiswa 2
{ 95, 80, 85 } // Mahasiswa 3
};

string[] mhs = { "Andi", "Bayu", "Citra" };
string[] mk = { "Pemrograman", "Database", "Jaringan" };

for (int i = 0; i < 3; i++)
{
Console.WriteLine($"\nNilai {mhs[i]}:");
for (int j = 0; j < 3; j++)
{
Console.WriteLine($" {mk[j]} = {nilai[i, j]}");
}
}
}
}

5.7 Array 3 Dimensi (Matriks Lantai Gedung)

using System;

namespace StrukturDataArray3D
{
class Program
{
static void Main()
{
// 1. Deklarasi dan Inisialisasi Array 3 Dimensi
// Format Alokasi Memori: [Dimensi 1, Dimensi 2, Dimensi 3]
// Model Faktual: [2 Gedung, 2 Lantai, 3 Ruangan]
// Tipe Data: Integer (menunjukkan kuantitas kapasitas kursi)

int[,,] kapasitasKelas = new int[2, 2, 3]
{
{ // Dimensi 1, Indeks 0: Merepresentasikan Gedung A
{ 30, 35, 40 }, // Dimensi 2, Indeks 0 (Lantai 1): Kapasitas untuk Ruang 1, 2, 3
{ 25, 30, 30 } // Dimensi 2, Indeks 1 (Lantai 2): Kapasitas untuk Ruang 1, 2, 3
},
{ // Dimensi 1, Indeks 1: Merepresentasikan Gedung B
{ 50, 50, 45 }, // Dimensi 2, Indeks 0 (Lantai 1): Kapasitas untuk Ruang 1, 2, 3
{ 40, 40, 40 } // Dimensi 2, Indeks 1 (Lantai 2): Kapasitas untuk Ruang 1, 2, 3
}
};

// 2. Ekstraksi dan Pemanggilan Data Memori
// Algoritma akses: namaArray[indeks_dimensi1, indeks_dimensi2, indeks_dimensi3]
// Contoh Faktual: Mengambil data pada Gedung B (Indeks 1), Lantai 1 (Indeks 0), Ruangan ke-2 (Indeks 1)

int targetKapasitas = kapasitasKelas[1, 0, 1];

Console.WriteLine("Data Faktual Kapasitas:");
Console.WriteLine($"Gedung B, Lantai 1, Ruang 2 memiliki kapasitas: {targetKapasitas} kursi.");

// 3. Iterasi Data Menggunakan Perulangan Bersarang (Nested Loop)
// Digunakan untuk melakukan pembacaan seluruh matriks memori secara skuensial
Console.WriteLine("\nRekapitulasi Seluruh Data Array 3 Dimensi:");
for (int gedung = 0; gedung < kapasitasKelas.GetLength(0); gedung++)
{
for (int lantai = 0; lantai < kapasitasKelas.GetLength(1); lantai++)
{
for (int ruang = 0; ruang < kapasitasKelas.GetLength(2); ruang++)
{
Console.WriteLine($"Gedung {gedung + 1}, Lantai {lantai + 1}, Ruang {ruang + 1} = {kapasitasKelas[gedung, lantai, ruang]}");
}
}
}
}
}
}

6. RINGKASAN KONSEP PENTING

KonsepPenjelasan
IndeksDimulai dari 0, bukan 1
Tipe dataSemua elemen harus bertipe sama
UkuranTetap (fixed) setelah dideklarasikan
DeklarasitipeData[] namaArray = new tipeData[ukuran];
AksesnamaArray[indeks]
LengthProperti untuk mendapatkan jumlah elemen
LoopingGunakan for (butuh indeks) atau foreach (lebih ringkas)

7. LATIHAN UNTUK MAHASISWA

  1. Soal 1: Buatlah program untuk menyimpan 5 suhu harian dalam seminggu, kemudian tampilkan suhu tertinggi, terendah, dan rata-ratanya.

  2. Soal 2: Buatlah program konversi nilai angka menjadi nilai huruf (A, B, C, D, E) untuk 10 mahasiswa.

  3. Soal 3: Buatlah program untuk menyimpan nama dan harga 5 produk, lalu tampilkan total harga semua produk.

  4. Soal 4: Modifikasi program luas persegi panjang agar input panjang dan lebar diminta dari user (Console.ReadLine()).

  5. Soal 5: Buatlah program untuk membalik urutan elemen array (misal: {1,2,3,4,5} menjadi {5,4,3,2,1}).


8. REFERENSI


Dibuat sebagai bahan ajar — silakan dimodifikasi sesuai kebutuhan kelas.