diff --git a/modul-1/240441100054_MuhammadNaufaldiArzaki/Soal1.py b/modul-1/240441100054_MuhammadNaufaldiArzaki/Soal1.py new file mode 100644 index 0000000..8f3a8a3 --- /dev/null +++ b/modul-1/240441100054_MuhammadNaufaldiArzaki/Soal1.py @@ -0,0 +1,23 @@ +class manusia: + def __init__(self, nama, umur, alamat): + self.nama = nama + self.umur = umur + self.alamat = alamat + + def berjalan(self): + print(f"{self.nama} berjalan") + + def berlari(self): + print(f"{self.nama} berlari") + +manusia1 = manusia("Faisal","80","Bojonegoro") +manusia2 = manusia("Yoga","25","Tuban") +manusia3 = manusia("Adit","27","Pamekasan") +manusia4 = manusia("Denis","40","Ngawi") +manusia5 = manusia("Naufal","20","Sidoarjo") + +manusia1.berlari() +manusia2.berjalan() +manusia3.berjalan() +manusia4.berlari() +manusia5.berjalan() \ No newline at end of file diff --git a/modul-1/240441100054_MuhammadNaufaldiArzaki/Soal2.py b/modul-1/240441100054_MuhammadNaufaldiArzaki/Soal2.py new file mode 100644 index 0000000..cf8870a --- /dev/null +++ b/modul-1/240441100054_MuhammadNaufaldiArzaki/Soal2.py @@ -0,0 +1,40 @@ +class mahasiswa: + def __init__(self, nama, nim, jurusan, alamat): + self.nama = nama + self.nim = nim + self.jurusan = jurusan + self.alamat = alamat + + def tampilkan_mahasiswa(self): + print(f"Nama : {self.nama}") + print(f"Nim : {self.nim}") + print(f"Jurusan : {self.jurusan}") + print(f"Alamat : {self.alamat}") + print("=" * 30) + +print("Mahasiswa 1") +mahasiswa1 = mahasiswa(input("Masukkan nama mahasiswa : "), + input("Masukkan NIM mahasiswa : "), + input("Masukkan jurusan/prodi mahasiswa : "), + input("Masukkan alamat mahasiswa : ")) + +print("\nMahasiswa 2") +mahasiswa2 = mahasiswa(input("Masukkan nama mahasiswa : "), + input("Masukkan NIM mahasiswa : "), + input("Masukkan jurusan/prodi mahasiswa : "), + input("Masukkan alamat mahasiswa : ")) + +print("\nMahasiswa 3") +mahasiswa3 = mahasiswa(input("Masukkan nama mahasiswa : "), + input("Masukkan NIM mahasiswa : "), + input("Masukkan jurusan/prodi mahasiswa : "), + input("Masukkan alamat mahasiswa : ")) + +print("\nInformasi Mahasiswa:") +mahasiswa1.tampilkan_mahasiswa() + +print("\nInformasi Mahasiswa:") +mahasiswa2.tampilkan_mahasiswa() + +print("\nInformasi Mahasiswa:") +mahasiswa3.tampilkan_mahasiswa() diff --git a/modul-1/240441100054_MuhammadNaufaldiArzaki/Soal3.py b/modul-1/240441100054_MuhammadNaufaldiArzaki/Soal3.py new file mode 100644 index 0000000..9f39576 --- /dev/null +++ b/modul-1/240441100054_MuhammadNaufaldiArzaki/Soal3.py @@ -0,0 +1,59 @@ +class Burung: + def __init__(self, nama, warna, jenis): + self.nama = nama + self.warna = warna + self.jenis = jenis + + def info(self): + print(f"Burung yang bernama {self.nama} memiliki warna {self.warna} dan berjenis {self.jenis}") + + def aksi(self): + print(f"{self.nama} sedang terbang tinggi di udara") + + def suara(self): + print(f"{self.nama} bersuara cuit-cuit") + +class Kucing: + def __init__(self, nama, warna, jenis): + self.nama = nama + self.warna = warna + self.jenis = jenis + + def info(self): + print(f"Kucing yang bernama {self.nama} memiliki warna {self.warna} dan berjenis {self.jenis}") + + def aksi(self): + print(f"{self.nama} sedang bermain") + + def suara(self): + print(f"{self.nama} bersuara meong") + +class Anjing: + def __init__(self, nama, warna, jenis): + self.nama = nama + self.warna = warna + self.jenis = jenis + + def info(self): + print(f"Anjing yang bernama {self.nama} memiliki warna {self.warna} dan berjenis {self.jenis}") + + def aksi(self): + print(f"{self.nama} sedang berlari-lari dengan ceria") + + def suara(self): + print(f"{self.nama} bersuara guk-guk") + +hewan_list = [ + Kucing("ayu", "Abu-abu", "Persia"), + Kucing("unyil", "Putih", "Munchkin"), + Burung("Fajar", "Biru Cerah", "Lovebird"), + Burung("Mimi", "Coklat", "Pipit"), + Anjing("Faisal", "Hitam", "Pudel"), + Anjing("Yoga", "Putih Hitam", "Buldog") +] + +for hewan in hewan_list: + hewan.info() + hewan.aksi() + hewan.suara() + print("=" * 30) \ No newline at end of file diff --git a/modul-2/Soal1.py b/modul-2/Soal1.py new file mode 100644 index 0000000..79348ad --- /dev/null +++ b/modul-2/Soal1.py @@ -0,0 +1,106 @@ +class MataKuliah: + def __init__(self, kode, nama, sks): + if self.validasi_sks(sks): + self.kode = kode + self.nama = nama + self.sks = sks + self.valid = True + else: + print(f" SKS '{sks}' untuk mata kuliah '{nama}' tidak valid (hanya boleh 2 atau 3). Data tidak disimpan.") + self.valid = False + + @staticmethod + def validasi_sks(sks): + return sks in [2, 3] + +class Mahasiswa: + total = 0 + def __init__(self, nama, nim, prodi): + if self.validasi_nim(nim): + self.nama = nama + self.nim = nim + self.prodi = prodi + self.mata_kuliah = [] + Mahasiswa.total += 1 + self.valid = True + else: + print(f"\n salah NIM '{nim}' untuk mahasiswa '{nama}' tidak valid!") + print("Alasan: NIM harus terdiri dari 10 digit dan diawali dengan '24'.") + print(f"Data mahasiswa '{nama}' tidak disimpan.\n") + self.valid = False + + def tambah_matkul(self, matkul): + if matkul.valid: + self.mata_kuliah.append(matkul) + + def tampilkan(self): + print(f"\n Mahasiswa: {self.nama} | NIM: {self.nim} | Prodi: {self.prodi}") + print("Mata kuliah yang diambil:") + for mk in self.mata_kuliah: + print(f" - {mk.nama} ({mk.sks} SKS)") + else: + print("Tidak ada mata kuliah yang diambil.") + + @staticmethod + def validasi_nim(nim): + return nim.startswith("24") and len(nim) == 10 and nim.isdigit() + + @classmethod + def total_mahasiswa(cls): + return cls.total + +class Kampus: + def __init__(self, nama, alamat): + self.nama = nama + self.alamat = alamat + self.valid = self.validasi_nama_kampus(nama) + if not self.valid: + print(f"\n Salah Nama kampus '{nama}' tidak valid!") + print("Alasan: Nama kampus tidak boleh mengandung angka.\n") + + @staticmethod + def validasi_nama_kampus(nama): + return all (not char.isdigit() for char in nama) + + @classmethod + def info(cls, nama): + print(f"\nKampus: {nama}") + print(f"Total Mahasiswa: {Mahasiswa.total_mahasiswa()}") + +daftar_matkul = [ + MataKuliah("MK001", "PBO", 3), + MataKuliah("MK002", "Struktur Data", 3), + MataKuliah("MK003", "Algoritma", 2), + MataKuliah("MK004", "Basis Data", 3), + MataKuliah("MK005", "Kalkulus", 3), + MataKuliah("MK006", "Statistik", 2), + MataKuliah("MK007", "Sistem Operasi", 3), + MataKuliah("MK008", "Jaringan Komputer", 2), +] + +daftar_mahasiswa = [] +data_mhs = [ + ("Andi", "2h412345678", "Teknik Informatika"), + ("Budi", "2412345679", "Sistem Informasi"), + ("Citra", "2412345680", "Teknik Komputer"), + ("Dina", "2412345681", "Teknik Informatika"), + ("Eka", "2412345682", "Sistem Informasi"), + ("Fahri", "2412345683", "Teknik Komputer"), +] + +for nama, nim, prodi in data_mhs: + mhs = Mahasiswa(nama, nim, prodi) + if mhs.valid: + for mk in daftar_matkul[:4]: + mhs.tambah_matkul(mk) + daftar_mahasiswa.append(mhs) + +kampus = Kampus("Universitas Trunojoyo Madura66", "Jl.Raya Telang No.345") + +print("\n---- DATA MAHASISWA -----") +for mhs in daftar_mahasiswa: + mhs.tampilkan() + +print("\n----- DATA KAMPUS -----") +kampus.info(kampus.nama) +print(f"Validasi Nama Kampus: {'Valid' if kampus.valid else 'Tidak Valid'}") \ No newline at end of file diff --git a/modul-3/Soal1.py b/modul-3/Soal1.py new file mode 100644 index 0000000..a99f933 --- /dev/null +++ b/modul-3/Soal1.py @@ -0,0 +1,52 @@ +class karyawan: + def __init__(self, nama, gaji, departemen): + self.nama = nama + self.gaji = gaji + self.departemen = departemen + + def info(self): + print(f"Nama : {self.nama}") + print(f"Gaji : {self.gaji}") + print(f"Departemen : {self.departemen}") + +class karyawantetap(karyawan): + def __init__(self, nama, gaji, departemen, tunjangan): + super().__init__(nama, gaji, departemen) + self.tunjangan = tunjangan + + def info(self): + print("=== Karyawan Tetap ===") + super().info() + print(f"Tunjangano : {self.tunjangan}") + print("-" * 30) + +class karyawanharian(karyawan): + def __init__(self, nama, gaji, departemen, jam_kerja): + super().__init__(nama, gaji, departemen) + self.jam_kerja = jam_kerja + + def info(self): + print("=== Karyawan Harian ===") + super().info() + print(f"Jam Kerja : {self.jam_kerja} Jam/Hari") + print("-" * 30) + +class manajemenkaryawan: + def __init__(self): + self.daftar_karyawan = [] + + def tambah_karyawan(self, karyawan): + self.daftar_karyawan.append(karyawan) + + def tampilkan_semua_karyawan(self): + for karyawan in self.daftar_karyawan: + karyawan.info() + +manajemen = manajemenkaryawan() + +karyawan1 = karyawantetap("Sulis", 3000000, "Keuangan", 100000) +karyawan2 = karyawanharian("Sugianto", 2000000, "Produksi", 6) + +manajemen.tambah_karyawan(karyawan1) +manajemen.tambah_karyawan(karyawan2) +manajemen.tampilkan_semua_karyawan() \ No newline at end of file diff --git a/modul-3/Soal2.py b/modul-3/Soal2.py new file mode 100644 index 0000000..6500af0 --- /dev/null +++ b/modul-3/Soal2.py @@ -0,0 +1,66 @@ +class Pengiriman: + def __init__(self, asal, tujuan): + self.asal = asal + self.tujuan = tujuan + + def estimasi_waktu(self): + return 5 + +class PengirimanDarat(Pengiriman): + def __init__(self, asal, tujuan, jenis_kendaraan): + super().__init__(asal, tujuan) + self.jenis_kendaraan = jenis_kendaraan + + def estimasi_waktu(self): + if self.jenis_kendaraan.lower() == "motor": + return 3 + elif self.jenis_kendaraan.lower() == "mobil": + return 4 + else: + return super().estimasi_waktu() + +class PengirimanUdara(Pengiriman): + def __init__(self, asal, tujuan, maskapai): + super().__init__(asal, tujuan) + self.maskapai = maskapai + + def estimasi_waktu(self): + if self.maskapai.lower() == "garuda": + return 1 + else: + return 2 + +class PengirimanInternasional(Pengiriman): + def __init__(self, asal, tujuan, jenis_kendaraan, maskapai): + super().__init__(asal, tujuan) + self.jenis_kendaraan = jenis_kendaraan + self.maskapai = maskapai + + def estimasi_waktu(self): + waktu_darat = PengirimanDarat(self.asal, self.tujuan, self.jenis_kendaraan).estimasi_waktu() + waktu_udara = PengirimanUdara(self.asal, self.tujuan, self.maskapai).estimasi_waktu() + waktu_tercepat = (waktu_darat + waktu_udara) + + if self.asal.lower() != self.tujuan.lower(): + return waktu_tercepat + 3 + else: + return waktu_tercepat + + def info_pengiriman(self): + print("=== Informasi Pengiriman ===") + print(f"Asal : {self.asal}") + print(f"Tujuan : {self.tujuan}") + print(f"Kendaraan : {self.jenis_kendaraan}") + print(f"Maskapai : {self.maskapai}") + print(f"estimasi : {self.estimasi_waktu()} hari") + print("-" * 30) + +pengiriman1 = PengirimanInternasional("Indonesia", "Rusia", "mobil", "Garuda") +pengiriman2 = PengirimanInternasional("Indonesia", "Indonesia", "motor", "Airline") +pengiriman3 = PengirimanInternasional("Indonesia", "Jerman", "motor", "Garuda") +pengiriman4 = PengirimanInternasional("Indonesia", "Indonesia", "mobil", "Airline") + +pengiriman1.info_pengiriman() +pengiriman2.info_pengiriman() +pengiriman3.info_pengiriman() +pengiriman4.info_pengiriman() \ No newline at end of file diff --git a/modul-4/Soal1.py b/modul-4/Soal1.py new file mode 100644 index 0000000..8c0e709 --- /dev/null +++ b/modul-4/Soal1.py @@ -0,0 +1,97 @@ +class RekeningBank: + def __init__(self, no_rek, nama_pengguna, saldo=0): + self.__no_rek = no_rek + self.__nama_pengguna = nama_pengguna + self.__saldo = saldo + + @property + def no_rek(self): + return self.__no_rek + + @no_rek.setter + def no_rek(self, value): + self.__no_rek = value + + @property + def nama_pengguna(self): + return self.__nama_pengguna + + @nama_pengguna.setter + def nama_pengguna(self, value): + self.__nama_pengguna = value + + @property + def saldo(self): + return self.__saldo + + @saldo.setter + def saldo(self, value): + if isinstance(value, int) and value >= 0: + self.__saldo = value + else: + print("Saldo tidak valid") + + def setor(self, jumlah): + if jumlah > 0: + self.__saldo += jumlah + print(f"Setor berhasil. Saldo saat ini: {self.__saldo}") + else: + print("Jumlah tidak valid") + + def tarik(self, jumlah): + if 0 < jumlah <= self.__saldo: + self.__saldo -= jumlah + print(f"Tarik berhasil. Saldo saat ini: {self.__saldo}") + else: + print("Jumlah tidak valid atau saldo tidak mencukupi.") + + def info(self): + print(f"No Rek : {self.__no_rek}") + print(f"Nama : {self.__nama_pengguna}") + print(f"Saldo : {self.__saldo}") + print("-" * 30) + +class Bank: + def __init__(self): + self.__rekening = {} + + def tambah_rekening(self, no_rek, nama_pemilik, saldo=0): + if no_rek not in self.__rekening: + self.__rekening[no_rek] = RekeningBank(no_rek, nama_pemilik, saldo) + print(f"Rekening {no_rek} berhasil dibuat") + else: + print("No rekening sudah ada") + + def setor_tunai(self, no_rek, jumlah): + rekening = self.__rekening.get(no_rek) + if rekening: + rekening.setor(jumlah) + else: + print("Rekening tidak ditemukan") + + def tarik_tunai(self, no_rek, jumlah): + rekening = self.__rekening.get(no_rek) + if rekening: + rekening.tarik(jumlah) + else: + print("Rekening tidak ditemukan") + + def tampilkan_rekening(self): + if not self.__rekening: + print("Tidak ada rekening terdaftar") + for rekening in self.__rekening.values(): + rekening.info() + +class Main: + @staticmethod + def run(): + bank = Bank() + bank.tambah_rekening("201", "Dina", 100000) + bank.tambah_rekening("202", "unyil", 250000) + bank.setor_tunai("201", 75000) + bank.tarik_tunai("202", 50000) + print("\nDaftar Rekening:") + bank.tampilkan_rekening() + +if __name__ == "__main__": + Main.run() \ No newline at end of file diff --git a/modul-4/Soal2.py b/modul-4/Soal2.py new file mode 100644 index 0000000..ae6e60a --- /dev/null +++ b/modul-4/Soal2.py @@ -0,0 +1,68 @@ +class Buku: + def __init__(self, judul, penulis, halaman): + self.__judul = judul + self.__penulis = penulis + self.__halaman = halaman + + @property + def judul(self): + return self.__judul + + @judul.setter + def judul(self, value): + self.__judul = value + + @property + def penulis(self): + return self.__penulis + + @penulis.setter + def penulis(self, value): + self.__penulis = value + + @property + def halaman(self): + return self.__halaman + + @halaman.setter + def halaman(self, value): + if isinstance(value, int) and value > 0: + self.__halaman = value + else: + print("Jumlah halaman tidak valid") + + def info(self): + print(f"Judul : {self.__judul}") + print(f"Penulis: {self.__penulis}") + print(f"Halaman: {self.__halaman}") + print("-" * 30) + + +class Perpustakaan: + def __init__(self): + self.__daftar_buku = [] + + def tambah_buku(self, judul, penulis, halaman): + buku = Buku(judul, penulis, halaman) + self.__daftar_buku.append(buku) + print(f"Buku {judul} berhasil ditambahkan") + + def tampilkan_buku(self): + if not self.__daftar_buku: + print("Tidak ada buku di perpustakaan") + for buku in self.__daftar_buku: + buku.info() + + +class Main: + @staticmethod + def run(): + perpustakaan = Perpustakaan() + perpustakaan.tambah_buku("Bernadit sang sad boy", "Udin", 529) + perpustakaan.tambah_buku("Wi wok detok", "Owi", 535) + print("\nDaftar Buku:") + perpustakaan.tampilkan_buku() + + +if __name__ == "__main__": + Main.run() diff --git a/modul-4/Soal3.py b/modul-4/Soal3.py new file mode 100644 index 0000000..8cbca05 --- /dev/null +++ b/modul-4/Soal3.py @@ -0,0 +1,65 @@ +class Pasien: + def __init__(self, nama, umur, keluhan): + self.__nama = nama + self.__umur = umur + self.__keluhan = keluhan + + @property + def nama(self): + return self.__nama + + @nama.setter + def nama(self, value): + self.__nama = value + + @property + def umur(self): + return self.__umur + + @umur.setter + def umur(self, value): + if isinstance(value, int) and value > 0: + self.__umur = value + else: + print("Umur tidak valid") + + @property + def keluhan(self): + return self.__keluhan + + @keluhan.setter + def keluhan(self, value): + self.__keluhan = value + + def info(self): + print(f"Nama : {self.__nama}") + print(f"Umur : {self.__umur}") + print(f"Keluhan : {self.__keluhan}") + print("-" * 30) + +class Klinik: + def __init__(self): + self.__daftar_pasien = [] + + def tambah_pasien(self, nama, umur, keluhan): + pasien = Pasien(nama, umur, keluhan) + self.__daftar_pasien.append(pasien) + print(f"Pasien {nama} berhasil ditambahkan.") + + def tampilkan_pasien(self): + if not self.__daftar_pasien: + print("Tidak ada pasien di klinik.") + for pasien in self.__daftar_pasien: + pasien.info() + +class Main: + @staticmethod + def run(): + klinik = Klinik() + klinik.tambah_pasien("Andi", 25, "Demam") + klinik.tambah_pasien("Siti", 30, "Sakit Kepala") + print("\nDaftar Pasien:") + klinik.tampilkan_pasien() + +if __name__ == "__main__": + Main.run()