GateFlow
Software Gate Flow
merupakan software berbasis terminal yang memungkinkan pengguna untuk melakukan operasi gerbang logika dasar (AND, OR, NOT, XOR, NOR, NAND, dan XNOR). Aplikasi ini memungkinkan pengguna untuk memasukkan nilai-nilai biner (0 atau 1) dan memilih operasi logika yang diinginkan, kemudian menampilkan hasilnya. Pengguna juga dapat melanjutkan dengan hasil operasi terakhir atau memulai ulang dari awal.
Struktur File
- main.py: File utama yang mengatur alur program, interaksi pengguna, dan operasi logika.
Deskripsi Fungsi
Fungsi Operasi Logika
- gerbang_and(P, Q)
def gerbang_and(P, Q):
return (P and Q)
Mengembalikan hasil operasi logika AND dari dua input biner.
- gerbang_or(P, Q)
def gerbang_or(P, Q):
return (P or Q)
Mengembalikan hasil operasi logika OR dari dua input biner.
- gerbang_not(P)
def gerbang_not(P):
return not(P)
Mengembalikan hasil operasi logika NOT dari satu input biner.
- gerbang_xor(P, Q)
def gerbang_xor(P, Q):
return (P or Q) and not (P and Q)
Mengembalikan hasil operasi logika XOR dari dua input biner.
- gerbang_nor(P, Q)
def gerbang_nor(P, Q):
return not(P or Q)
Mengembalikan hasil operasi logika NOR dari dua input biner.
- gerbang_nand(P, Q)
def gerbang_nand(P, Q):
return not(P and Q)
Mengembalikan hasil operasi logika NAND dari dua input biner.
- gerbang_xnor(P, Q)
def gerbang_xnor(P, Q):
return not(gerbang_xor(P, Q))
Mengembalikan hasil operasi logika XNOR dari dua input biner.
Fungsi Validasi Input
def validasi_input(w, teks, lebih, kurang, teksValidasi):
while True:
try:
w = int(w)
if w > lebih or w < kurang:
raise ValueError(teksValidasi)
return w
except ValueError as e:
if w == '':
print('| Input tidak boleh kosong')
else:
print(teksValidasi)
w = input(teks)
Fungsi ini menangani validasi input dari pengguna, memastikan input berupa angka dalam rentang yang ditentukan dan tidak kosong.
Alur Program Utama
hasil_terakhir = None
while True:
print('+-------------------------------')
print("| MASUKKAN OPERASI GERBANG ")
print('+-------------------------------')
print("| [1] AND".ljust(10), "[5] NOR")
print("| [2] OR".ljust(10), "[6] NAND")
print("| [3] NOT".ljust(10), "[7] XNOR")
print("| [4] XOR".ljust(10), "[8] Keluar")
if hasil_terakhir != None:
if cont == 1:
print('| P:', hasil_terakhir)
pilihan = input("| Masukkan pilihan (1-8): ")
pilihan = validasi_input(pilihan, "| Masukkan pilihan (1-8):", 8, 1, '| Input harus antara 1 dan 8')
if pilihan == 8:
if hasil_terakhir != None:
print('+-------------------------------')
print(f"| Hasil terakhir: {hasil_terakhir}")
print('+-------------------------------')
else:
print("| Program dihentikan.")
break
operasi = None
p = None
q = None
if hasil_terakhir is None:
p = input("| Masukkan nilai P (0/1): ")
p = validasi_input(p, "| Masukkan nilai P (0/1): ", 1, 0, '| Input harus 1 atau 0')
p = bool(p)
else:
p = hasil_terakhir
if pilihan != 3: # Operasi NOT tidak memerlukan nilai kedua
print('| P:', p)
q = input("| Masukkan nilai Q (0/1): ")
q = validasi_input(q, "| Masukkan nilai Q (0/1): ", 1, 0, '| Input harus 1 atau 0')
q = bool(q)
print('| Q:', q)
if pilihan == 1:
hasil = gerbang_and(p, q)
operasi = "AND"
elif pilihan == 2:
hasil = gerbang_or(p, q)
operasi = "OR"
elif pilihan == 3:
hasil = gerbang_not(p)
operasi = "NOT"
elif pilihan == 4:
hasil = gerbang_xor(p, q)
operasi = "XOR"
elif pilihan == 5:
hasil = gerbang_nor(p, q)
operasi = "NOR"
elif pilihan == 6:
hasil = gerbang_nand(p, q)
operasi = "NAND"
elif pilihan == 7:
hasil = gerbang_xnor(p, q)
operasi = "XNOR"
print('+-------------------------------')
print(f"| Hasil dari P {operasi} Q adalah: {hasil}")
print('+-------------------------------')
hasil_terakhir = hasil
print('| [1] Lanjut\n| [2] Mulai Ulang\n| [3] Keluar')
cont = input('| Masukkan pilihan (1-3): ')
cont = validasi_input(cont, '| Masukkan pilihan (1-3): ', 3, 1, '| Input harus antara 1 dan 3')
if cont == 3:
break
if pilihan != 8:
print('+-------------------------------')
print(f"| Hasil terakhir: {hasil_terakhir}")
print('+-------------------------------')
exit_program = input('Tekan Enter untuk keluar')
Deskripsi Alur
- Program dimulai dengan menampilkan menu operasi logika.
- Pengguna memilih operasi yang diinginkan (1-8).
- Program memvalidasi input pengguna.
- Jika pengguna memilih untuk keluar (8), program akan menampilkan hasil terakhir (jika ada) dan berhenti.
- Jika pengguna memilih operasi selain NOT (3), program meminta nilai Q.
- Program melakukan operasi logika yang dipilih dan menampilkan hasilnya.
- Pengguna dapat memilih untuk melanjutkan dengan hasil terakhir, memulai ulang, atau keluar.