Anda di halaman 1dari 43

TI0061

Algoritma & Pemrograman


Struktur dan Enumerasi
Overview
• Memperkenalkan penggunaan struktur dan enumerasi dalam
program.
Objectives
• Setelah menyelesaikan Unit ini, mahasiswa diharapkan mampu:
• Memahami penggunaan struktur
• Memahami penggunaan enumerasi
Contents
• Struktur
• Enumerasi
Struktur
Lesson Overview
• Struktur adalah tipe data yang dapat dibuat sendiri yang
memungkinkan untuk mengelompokkan beberapa variabel ke
dalam satu item sehingga menghasilkan hubungan antara
variabel.
Lesson Objectives
• Setelah mempelajari Lesson ini, mahasiswa diharapkan mampu:
• Memahami penggunaan struktur
Struktur
• Pada umumnya, kita membuat aplikasi yang menyimpan data
dalam variabel-variabel yang terpisah.
• Tetapi, ada kalanya kita perlu membuat aplikasi yang variabel-
variabelnya memiliki hubungan satu sama lain.
• Sebagai contoh, data barang dapat dideklarasikan sebagai berikut:
string kode;
string nama;
double harga;
int stok;
Struktur (Cont.)
• Keseluruhan variabel di atas memiliki suatu hubungan karena
semuanya menyimpan data mengenai barang yang sama.
• Namun, pernyataan deklarasi variabel di atas tidak menunjukkan
secara jelas bahwa variabel-variabel tersebut saling berhubungan.
• Untuk menghasilkan hubungan antar variabel, C# memungkinkan
untuk mengelompokkan beberapa variabel ke dalam satu item
yang dikenal sebagai struktur.
• Struktur adalah tipe data yang dapat dibuat sendiri yang
mencakup satu atau lebih variabel. Variabel-variabel dalam
struktur dikenal sebagai field.
• Field-field yang berada dalam struktur boleh memiliki tipe data
yang sama ataupun berbeda.
Struktur (Cont.)
• Sebelum struktur dapat digunakan, struktur harus dideklarasikan.
• Deklarasi struktur tidak menyimpan apapun di memori, tetapi
hanya memberi tahu compiler komputer, bahwa struktur terbuat
dari field apa saja.
• Sintaks penulisan:
struct TipeStruktur
{
public tipedata namaField-1;
public tipedata namaField-2;
public tipedata namaField-3;
...
public tipedata namaField-n;
}
Struktur (Cont.)
• Struktur bukan dideklarasikan di dalam fungsi utama Main, tetapi
di luarnya.
• Penulisan tipe struktur sebaiknya diawali dengan huruf kapital
untuk membedakan tipe struktur dengan tipe data variabel biasa.
• Pendeklarasian untuk masing-masing field dalam struktur harus
dimulai dengan keyword public yang merupakan suatu access
modifier yang menandakan bahwa field dapat diakses secara
langsung oleh statement-statement di luar struktur.
Struktur (Cont.)
• Sebelum struktur dapat digunakan untuk menyimpan data, kita
harus membuat sebuah instance dari struktur di memori.
• Pembuatan instance ini terdapat di dalam fungsi utama Main.
• Sintaks:
TipeStruktur namaStruktur;

• Cara untuk mengakses field yang terdapat dalam struktur adalah


dengan menggunakan tanda titik “.”
• Sintaks:
namaStruktur.field
Struktur (Cont.)
struct Barang
{
public string kode;
public string nama;
public double harga;
public int stok;
}
static void Main(string[] args)
{
Barang brg;
Console.Write("Masukkan kode barang : ");
brg.kode = Console.ReadLine();
Console.Write("Masukkan nama barang : ");
brg.nama = Console.ReadLine();
...
Struktur (Cont.)
...
Console.Write("Masukkan harga barang : ");
brg.harga = double.Parse(Console.ReadLine());
Console.Write("Masukkan stok barang : ");
brg.stok = int.Parse(Console.ReadLine());
Console.Clear();
Console.WriteLine("Kode Barang : " + brg.kode);
Console.WriteLine("Nama Barang : " + brg.nama);
Console.WriteLine("Harga Barang : " + brg.harga.ToString("Rp #,##0.00"));
Console.WriteLine("Stok Barang : " + brg.stok + " unit");
Console.ReadKey();
}
Struktur (Cont.)
struct Tanggal
{
public int tgl, bln, thn;
}
struct Barang
{
public string kode;
public string nama;
public double harga;
public int stok;
public Tanggal kadaluarsa;
}
Struktur (Cont.)
static void Main(string[] args)
{
Barang brg;
Console.Write("Masukkan kode barang : ");
brg.kode = Console.ReadLine();
Console.Write("Masukkan nama barang : ");
brg.nama = Console.ReadLine();
Console.Write("Masukkan harga barang : ");
brg.harga = double.Parse(Console.ReadLine());
Console.Write("Masukkan stok barang : ");
brg.stok = int.Parse(Console.ReadLine());
Console.Write("Masukkan tanggal kadaluarsa : ");
brg.kadaluarsa.tgl = int.Parse(Console.ReadLine());
Console.Write("Masukkan bulan kadaluarsa : ");
brg.kadaluarsa.bln = int.Parse(Console.ReadLine());
Console.Write("Masukkan tahun kadaluarsa : ");
brg.kadaluarsa.thn = int.Parse(Console.ReadLine());
...
Struktur (Cont.)
...
Console.Clear();
Console.WriteLine("Kode Barang : {0}", brg.kode);
Console.WriteLine("Nama Barang : {0}", brg.nama);
Console.WriteLine("Harga Barang : {0}", brg.harga.ToString("Rp
#,##0.00"));
Console.WriteLine("Stok Barang : {0}", brg.stok + " unit");
Console.WriteLine("Kadaluarsa : {0}/{1}/{2}",
brg.kadaluarsa.tgl, brg.kadaluarsa.bln, brg.kadaluarsa.thn);
Console.ReadKey();
}
Struktur (Cont.)
• Jika kita membuat instance dengan cara sebelumnya, field-field
yang ada belum diinisialisasi (belum memiliki nilai awal).
Akibatnya, bila kita mencoba untuk menggunakan field sebelum
memberikan nilai maka akan terjadi error.
• Cara lain yang direkomendasikan untuk membuat instance adalah
dengan menggunakan keyword new
TipeStruktur namaStruktur = new TipeStruktur();
• Keyword new tidak hanya membuat instance di memori, tetapi juga
menginisialisasi field-field yang ada dengan nilai default.
• Contoh:
Barang brg = new Barang();
Struktur (Cont.)
• Assignment operator “=“ dapat digunakan untuk memasukkan objek
struktur yang satu ke objek struktur yang lain dengan tipe struktur
yang sama.

• Contoh:
struct Botol
{
public string merk;
public string warna;
public int kapasitas;
}
...
Struktur (Cont.)
...
static void Main(string[] args)
{
Botol botol1 = new Botol();
Botol botol2 = new Botol();
botol1.merk = "Upperware";
botol1.warna = "hijau";
botol1.kapasitas = 1500;
botol2 = botol1; //assign botol 1 ke botol 2
Console.WriteLine("Botol 2 memiliki merk {0} warna {1}
dengan kapasitas {2} mL.", botol2.merk, botol2.warna,
botol2.kapasitas);
Console.ReadKey();
}
Struktur (Cont.)
• Program di atas memiliki objek botol1 dan botol2 dengan tipe
struktur Botol.
• botol1 diberikan merk “Upperware”, warna “hijau”, dan kapasitas
“1500”.
• Setelah itu, botol1 di-assign ke botol2, sehingga sekarang kedua
objek memiliki field-field dengan nilai yang sama.
Struktur (Cont.)
• Operator perbandingan “==“ tidak dapat dilakukan secara langsung
kepada objek struktur, tetapi harus membandingkan masing-masing
field pada struktur objek.

if (botol1 == botol2) Error!

if (botol1.merk == botol2.merk &&


botol1.warna == botol2.warna &&
botol1.kapasitas == botol2.kapasitas) Benar!
Latihan
1. Buatlah struktur dengan tipe Buku yang memiliki field judul,
penerbit, pengarang, kota, tahun, dan harga. Setelah itu buatlah
objek struktur yang nilainya di-input oleh user, kemudian
tampilkan hasilnya!
2. Buatlah struktur dengan tipe Garis yang memiliki field x1, y1, x2,
y2. Kemudian, buat 1 objek struktur yang nilainya di-input oleh
user. Buat lagi 1 objek struktur baru yang nilai koordinatnya
geser ke kanan sebanyak 10 satuan dari koordinat objek pertama
dan 1 objek struktur baru yang nilai koordinatnya geser ke
bawah sebanyak 10 satuan dari koordinat objek pertama.
Tampilkan hasilnya!
3. Buatlah struktur dengan tipe PersegiPanjang yang memiliki field
panjang dan lebar, kemudian buat 2 buah objek struktur yang
nilainya di-input oleh user. Bandingkanlah kedua objek struktur
tersebut apakah merupakan persegi panjang yang sama atau
berbeda!
Lesson Summary
• Mahasiswa sekarang mampu:
• Memahami penggunaan struktur
Enumerasi
Lesson Overview
• Enumerasi adalah tipe data yang dapat dibuat sendiri yang terdiri
dari konstanta (enumerator) yang mewakili suatu nilai.
Lesson Objectives
• Setelah mempelajari Lesson ini, mahasiswa diharapkan mampu:
• Memahami penggunaan enumerasi
Enumerasi
• Kadang-kadang dalam suatu program, kita membutuhkan cara untuk
merepresentasikan nilai yang tidak dapat disimpan di memori secara
langsung.
• Sebagai contoh, kita ingin membuat program yang menggunakan
nama-nama hari dan kita membutuhkan cara untuk
merepresentasikan nama-nama hari tersebut di memori.
• Salah satu caranya adalah dengan menggunakan integer dari 0
sampai 6 dimana 0 mewakili hari Senin, 1 mewakili hari Selasa, dan
seterusnya.
• Tetapi kelemahannya adalah tidak semua yang membaca kode
program akan langsung paham bahwa nilai 0 sampai 6 tersebut
mewakili nama-nama hari. Selain itu, bisa terjadi kesalahpahaman
dimana terdapat orang yang menganggap nilai 0 sebagai hari Minggu,
bukannya Senin.
• Sehingga, solusi terbaik untuk menangani kasus seperti ini adalah
menggunakan enumerasi.
Enumerasi (Cont.)
• Enumerasi adalah tipe data yang dapat dibuat sendiri yang terdiri
dari konstanta. Konstanta di sini dikenal sebagai enumerator yang
mewakili suatu nilai.
• Perbedaan antara struktur dan enumerasi adalah struktur terdiri
dari sejumlah variabel sedangkan enumerasi terdiri dari
sejumlah konstanta.
• Sintaks Penulisan:
enum TipeEnumerasi
{
enumerator-1,
enumerator-2,
...
enumerator-n
}
Enumerasi (Cont.)
• Sama seperti struktur, Enumerasi juga bukan dideklarasikan di dalam
fungsi utama Main, tetapi di luarnya.
• Perhatikan bahwa enumerator tidak diapit dengan tanda kutip (“ ”)
sehingga enumerator bukan merupakan string.
• Enumerator merupakan konstanta yang mewakili nilai integer.
• Ketika tipe enumerasi dideklarasikan, secara default semua
enumerator akan diberikan nilai integer, dimulai dari angka 0.
• Dengan demikian, enumerator-1 bernilai 0, enumerator-2 bernilai
1, dan seterusnya.
Enumerasi (Cont.)
• Sebelum enumerasi dapat digunakan, kita harus membuat sebuah
variabel dengan tipe enumerasi di dalam fungsi utama Main.
• Sintaks:
TipeEnumerasi namaEnumerasi;

• Cara untuk mengakses enumerator yang terdapat dalam enumerasi


adalah dengan menggunakan tanda titik “.”
• Sintaks:
TipeEnumerasi.enumerator
Enumerasi (Cont.)
enum Hari
{
Senin, Selasa, Rabu, Kamis, Jumat, Sabtu, Minggu
}
static void Main(string[] args)
{
Hari hariKelahiran;
hariKelahiran = Hari.Selasa;
Console.WriteLine("Hari kelahiran anda = {0}", hariKelahiran);
Console.ReadKey();
}
Enumerasi (Cont.)
• Cara untuk mengonversi nilai integer menjadi enumerasi:
namaEnumerasi = (TipeEnumerasi)nilaiInteger;
atau
namaEnumerasi = (TipeEnumerasi)intVar;

• Contoh:
Hari hariKelahiran;
int angka = 4;
hariKelahiran = (Hari)2;
Console.WriteLine(hariKelahiran); //output: Rabu
hariKelahiran = (Hari)angka;
Console.WriteLine(hariKelahiran); //output: Jumat
Enumerasi (Cont.)
• Cara untuk mengonversi enumerasi menjadi nilai integer:
intVar = (int)TipeEnumerasi.Enumerator;
atau
intVar = (int)namaEnumerasi;

• Contoh:
Hari hariKelahiran = Hari.Minggu;
int angka;
angka = (int)Hari.Senin;
Console.WriteLine(angka); //output: 0
angka = (int)hariKelahiran;
Console.WriteLine(angka); //output: 6
Enumerasi (Cont.)
• Cara untuk mengonversi nilai string menjadi enumerasi:
namaEnum = (TipeEnum)Enum.Parse(typeof(TipeEnum), “string");
atau
namaEnum = (TipeEnum)Enum.Parse(typeof(TipeEnum), varString);

• Contoh:
Hari hariKelahiran;
string namaHari = "Jumat";
hariKelahiran = (Hari)Enum.Parse(typeof(Hari), "Kamis");
Console.WriteLine(hariKelahiran);
hariKelahiran = (Hari)Enum.Parse(typeof(Hari), namaHari);
Console.WriteLine(hariKelahiran);
Enumerasi (Cont.)
enum Hari
{
Senin, Selasa, Rabu, Kamis, Jumat, Sabtu, Minggu
}
static void Main(string[] args)
{
Hari hariKelahiran;
int angka;
Console.Write("Masukkan hari kelahiran [0-6] : ");
angka = int.Parse(Console.ReadLine());
hariKelahiran = (Hari)angka;
Console.WriteLine("Hari kelahiran anda = {0}", hariKelahiran);
Console.ReadKey();
}
Enumerasi (Cont.)
• Nilai default pada enumerator dimulai dengan angka 0, tetapi kita
dapat memberikan nilai sendiri secara manual.
• Apabila enumerator diberi suatu angka, maka enumerator yang
mengikutinya bernilai angka selanjutnya.
• Contoh:
enum Buah
{
Apel, Jeruk=2, Mangga, Anggur, Nenas=9, Semangka
}
• Pada kasus di atas, Apel bernilai 0, Jeruk bernilai 2, Mangga
bernilai 3, Anggur bernilai 4, Nenas bernilai 9, dan Semangka
bernilai 10.
Enumerasi (Cont.)
enum Warna
{
Merah = 1, Kuning, Hijau
}
static void Main(string[] args)
{
Warna lampu;
int angka;
Console.Write("Masukkan angka [1-3] : ");
angka = int.Parse(Console.ReadLine());
lampu = (Warna)angka;
switch (lampu)
{
case Warna.Merah:
Console.WriteLine("Berhenti");
break;
...
Enumerasi (Cont.)
...
case Warna.Kuning:
Console.WriteLine("Bersiap");
break;
case Warna.Hijau:
Console.WriteLine("Jalan");
break;
default:
Console.WriteLine("Tidak valid");
break;
}
Console.ReadKey();
}
Latihan
1. Buatlah enumerasi dengan tipe Bulan dimana enumeratornya
berisi nama-nama bulan dari Januari sampai Desember.
Kemudian minta user untuk memasukkan kode 1 sampai 12
untuk menampilkan nama bulan berdasarkan kode yang
dimasukkan!
2. Buatlah enumerasi dengan tipe Temperature dimana
enumeratornya terdiri dari High, Medium, dan Low. Jika user
memilih:
• High, tampilkan “Masaklah ayam ini selama 1 jam!”
• Medium, tampilkan “Masaklah ayam ini selama 3 jam!”
• Low, tampilkan “Masaklah ayam ini selama 6 jam!”
3. Buatlah data mahasiswa yang berisi NIM, nama, jurusan dan
jenis kelamin dengan menggunakan struktur. Buat pula jurusan
(TI, SI, MN, AK, MI) dan jenis kelamin (Pria, Wanita) dengan
menggunakan enumerasi. Setelah data diinput, tampilkan
hasilnya!
Lesson Summary
• Mahasiswa sekarang mampu:
• Memahami penggunaan enumerasi
Summary
• Sekarang mahasiswa mampu:
• Memahami penggunaan struktur
• Memahami penggunaan enumerasi
Question & Answers

Anda mungkin juga menyukai