# 3 Set dan Map
## 3.1 Set
Set dalam Bahasa Indonesia berarti himpunan. Set diguankan untuk menyimpan koleksi nilai-nilai yang unik. Unik berarti tidak ada dua anggota set yang bernilai sama. Python telah mempunyai tipe data set namun disini kita akan mengimplementasikan tipe data abstract set versi kita sendiri.
Operasi-operasi pada Tipe Data Abstract `Set` dapat kita tentukan seperti berikut:
- `Set()`: Membuat sebuah set baru dan menginisialisasinya ke set kosong.
- `panjang()`: Mengembalikan banyaknya elemen dalam set, juga disebut sebagai kardinalitas. Diakses menggunakan fungsi `len()`.
- `beranggotakan(elemen)`: berarti berisi. Menentukan apakah `element` berada di dalam set dan megembalikan nilai boolean `true` atau `false` Diakses menggunakan operator `in`.
- `tambah(elemen)`:
- `hapus(elemen)`:
- `samaDengan(setB)`:
- `subsetDari(setB)`:
- `gabungan(setB)`:
- `irisan(setB)`:
- `beda(setB)`:
- `iterator()`:
### Contoh Penggunaan `Set`
Untuk mengilustrasikan penggunaan ADT Set, misalkan kita membuat dan menggunakan set yang berisi mata-mata kulia yang sekaranga diambil oleh dua mahasiswa. Potongan kode berikut mencontohkan penggunaan ADT Set yang akan kita implementasikan:
Dalam potongan kode berikut, kita mmebuat dua set dan memnambahkan elemen-elemen ke masing-masing set.
```python
budi = Set()
budi.add("Algoritma dan Pemrograman")
budi.add("Matematika Informatika")
budi.add("Bahasa Inggris 1")
budi.add("Pemrograman Berorientasi Object")
herman = Set()
herman.add("Ilmu Budaya Dasar")
herman.add("Bahasa Inggris 2")
herman.add("Algoritma dan Pemrograman")
herman.add("Matematika Informatika")
```

Selanjutnya kita ingin mengetahui apakah dua mahasiswa mengambil kursus-kursus yang sama persis. JKika tidak kita ingin mengetahui apakah mereka mengambil beberapa kursus-kursus yang sama. Kita dapat melakukannya dengan mencari irisan antara dua set:
```python
if budi == herman:
print("Budi dan Herman mengambil mata-mata kuliah yang sama.")
else:
mataKuliahSama = budi.irisan(herman)
if mataKuliahSama.isEmpty():
print("Budi dan Herman tidak mengambil mata-mata kuliah yang sama satupun").
else:
print("Budi dan Herman mengambil beberapa mata kuliah yang sama:")
for mataKuliah in mataKuliahSama:
print(mataKuliah)
```
Dalam contoh ini, dua mahasiswa, Budi dan Herman, keduanya mengambil dua mata kuliah yang sama yaitu: Algoritma dan Pemrograman dan Matematika Informatika. Sehingga, hasil dari eksekusi kode di atas adalah sebagai berikut:
```
Budi dan Herman mengambil beberapa mata kuliah yang sama:
Algoritma dan Pemrograman
Matematika Informatika
```
### Implementasi Set Menggunakan List
Untuk mengimplementasikan ADT Set kita dapat menggunakan tipe data `list`.