[Python Fisika] : Menentukan Jumlah Angka Penting

Dengan menggunakan Python (plus Tkinter) kita akan dapat mempelajari Fisika dengan mudah, termasuk dalam menentukan angka penting.

Sebelum kita membahas tentang program ini, sebaiknya kita mengingat dulu aturan-aturan yang digunakan dalam penentuan Angka Penting (Significant Number). Berikut aturan Angka Penting versi Mathen Kanginan (Fisika 1A):

  1. Semua angka bukan nol adalah angka penting.
  2. Angka nol yang terletak di antara angka bukan nol termasuk angka penting.
  3. Semua angka nol yang terletak pada deretan akhir dari angka-angka yang ditulis di belakang koma desimal termasuk angka penting.
  4. Angka-angka nol yang digunakan hanya untuk tempat titik desimal adalah bukan angka penting.
  5. Bilangan-bilangan puluhan, ratusan, ribuan, dan seterusnya yang memiliki angka-angka nol pada deretan akhir harus dituliskan dalam notasi ilmiah agar jelas apakah angka-angka nol tersebut termasuk angka penting atau bukan.

Aplikasi ini hanya menentukan berapakah jumlah Angka Penting yang akan kita ketikkan pada form input. Aplikasi ini menggunakan aturan 1 s/d 4.

# file: AngkaPenting.py

from Tkinter import *

class AngkaPenting:
	def __init__(self, parent, title):
		self.parent = parent
		
		self.parent.geometry("300x200")
		self.parent.title(title)
		self.parent.protocol("WM_DELETE_WINDOW", self.onKeluar)
		
		self.aturKomponen()
		
		self.entNilai.focus_set()
		
	def aturKomponen(self):
		mainFrame = Frame(self.parent, bd=10)
		mainFrame.pack(fill=BOTH, expand=YES)
		
		Label(mainFrame, text="Ketikkan sebuah nilai: ").pack(side=TOP)
		self.entNilai = Entry(mainFrame)
		self.entNilai.pack(side=TOP)
		
		self.btnCek = Button(mainFrame, text='CEK!', command=self.onCek)
		self.btnCek.pack(side=TOP, pady=10)
		
		self.lblNilai = Label(mainFrame, text="Nilai: ",
			state=DISABLED)
		self.lblNilai.pack(side=TOP)

		self.lblAP = Label(mainFrame, text="Jumlah Angka Penting: ",
			state=DISABLED)
		self.lblAP.pack(side=TOP)
		
	def onKeluar(self, event=None):
		self.parent.destroy()
		
	def onCek(self, event=None):
		self.lblNilai["state"] = NORMAL 
		self.lblAP["state"] = NORMAL 
		
		# mengecek jumlah angka penting
		nilai = self.entNilai.get()
		jumlah_AP = 0
		
		if nilai == "":
			print "Isikan sebuah nilai!"
			self.entNilai.focus_set()
		else:
			if nilai[0] == "0":
				for i in range(len(nilai)):
					if (nilai[i] == "0") or (nilai[i]=="."):
						jumlah_AP += 0
					else:
						jumlah_AP += 1
			else:
				for i in range(len(nilai)):
					if (nilai[i]=="."):
						jumlah_AP += 0
					else:
						jumlah_AP += 1
			 
		self.lblNilai["text"] = "Nilai: "+nilai
		self.lblAP["text"] = "Jumlah Angka Penting: " +str(jumlah_AP)
				
if __name__ == '__main__':
	root = Tk()
	
	aplikasi = AngkaPenting(root, "Demo Angka Penting")
	
	root.mainloop()

One comment

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s