Tutorial do kalkulatora. Jaki polecacie?

0

Zanim poleci fala hejtu w moją stronę miejcie na uwadze to, że jestem początkujący. Pytanie to zadaję tylko i wyłącznie dlatego, iż występuje coś takiego jak standardy, nowsze sposoby na stworzenie czegoś.

Dlatego nie chce się uczyć czegoś bez sensu i brać pierwszego z brzegu prostego tutoriala, gdzie pisze się wszystko z palca. Jak np. są już lepsze metody to stworzenia aplikacji typu kalkulator i warto utrwalać sobie nową, powszechną wiedzę. Chciałbym by to nie było też prosty kalkulator typu: Dodawanie, odejmowania, wynik.

Po wpisaniu "Java calculator" w youtube wybór jest spory. Także - co polecacie?

Pozdrawiam!

0

Jak np. są już lepsze metody to stworzenia aplikacji typu kalkulator i warto utrwalać sobie nową, powszechną wiedzę.

ŹLE.
Tzn. złe jest uczenie się na zasadzie "tak się pisze aplikacje kalkulator - to umiem. No dobra, to jak teraz do tego dodać pierwiastkowanie? Tego nie ma w moiei ksionszce oraz tuturialó!!!!1!11!!oneoneoneone".

Powinieneś ze swojej zdobytej dotychczas wiedzy pomyśleć nad jego budową i funkcjami, a potem to ładnie oprogramować - jeżeli np.nie wiesz jak zrobić rzeczone uprzednio pierwiastkowanie czy w ogóle jak zacząć, to najwyraźniej jeszcze nie nadszedł czas na aż tak "ambitne" projekty i pora wrócić do rzeczy łatwiejszych.

0

Napisz jedną wielką metodę, która będzie pobierała znaki według kolejności i obliczała napisane działanie. Będzie je pobierać oczywiście z pola tekstowego, a możliwość wpisania za pomocą buttonów i klawiatury :p.

Jak tak to widzę :D. Przynajmniej tak chciałem zrobić dopóty mi coś ciekawszego do głowy nie weszło niż pisanie kalkulatora XD.

0

Jak w pracy dostaniesz zadanie "Napisz X", to bedziesz pytal, czy ktos ma tutorial "Jak napisac X?". Uzyj po prostu tego co powinienes miec pod kopula, kalkulator to nie jest zadna filozofia...

Mozesz zrobic np. wczytywanie znak po znaku, tj. dla wpisu "123+123=", bedzie wczytywac kazdy znak z osobna i czekac na dzialanie.
Mozesz skorzystac z ONP.

Naprawde tego jest odgroma i nie potrzebne wcale zadne how-to.

3

Podobno ma wyjść niedługo książka "Kalkulator w Java na 7 sposobów. Opanuj język w tydzień i zarabiaj na tym!". Warto się zainteresować. Oprócz nauki języka będzie kilka dodatkowych rozdziałów - "Jak przejść rozmowę kwalifikacyjną?", "Przykładowe testy rekrutacyjne", "Jak szybko zacząć zarabiać 10k PLN miesięcznie?". Wtajemniczeni mówią, że z tą książką będzie można szybko (w tydzień) zacząć zarabiać kapuchę. Szczególnie polecana w przypadku, gdy kogoś bardzo wąż w kieszeni gryzie. Działa natychmiastowo :)

0

Powiem Ci jak wyglądało tworzenie kalkulatora na moim przykładzie.

  1. Na początku w ogóle zdecydowałem, że chcę napisać kalkulator.
  2. Następnie zastanowiłem się jakie chciałbym w nim funkcje. Co miałyby robić i jak miałyby to robić (przemyślenia były na poziomie laik).
  3. Potem jak już miałem na kartce listę rzeczy, które chciałem by się znalazły w moim kalkulatorku, to zacząłem myśleć nad jego wyglądem graficznym. Rozrysowałem sobie wszystko na kartce.
  4. Odpaliłem NetBeansa i zacząłem układać GUI. Z perspektywy czasu widzę jednak, że to był duży błąd. Powinienem to robić z palca.
  5. Kolejnym krokiem było ponazywanie zmiennych i doprowadzenie wszystkie do względnego ładu.
  6. Zacząłem kodować to co zakodować potrafiłem - czyli np. akcje dla przycisków z cyferkami, jakieś nawiasy, klasa dla kropki, wyświetlanie tekstu na ekraniku itd.
  7. Jak już poprogramowałem to, co umiałem zaprogramować, to zacząłem głowić się nad tym czego zaprogramować nie potrafiłem. Gdy nie wiedziałem już kompletnie jak się za coś zabrać, to korzystałem z forów i dokumentacji. Rozwiązanie prędzej, czy później się pojawiało, czy to na ekranie monitora, czy to w mojej głowie. Nie korzystałem z jutuba. Nie wiem, czy to dobrze, czy źle.
  8. Kroczek po kroczku napisałem swój pierwszy kalkulator :)

Patrząc wstecz nie robiłbym tego z wykorzystaniem GUI Buildera. Nie zgodzę się, że na początku nauki w jakiejś dziedzinie powinniśmy trzymać się sztywno popularyzowanych często niesprawdzonych standardów. Jest po prostu tak, że jeżeli chce się być w czymś dobrym, to wybiera się taką drogę, która stawia sobie za priorytet rzetelność i dokładność, a nie łatwość i popularność. Jeżeli ta droga rzetelności i dokładności kiedyś stanie się łatwiejsza nie tracąc na jakości, to spoko. W innym wypadku lepiej się pomęczyć, ale potem być jednym z lepszych.

Pozdrawiam!

0

Mega tutorial, kompletny kalkulator w Pythonie, przerób to sobie na Javę :D

# -*- coding: utf-8 -*-

# import modulow zawierajacych obsluge Qt
from PyQt4 import QtCore, QtGui

try:
    _fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
    _fromUtf8 = lambda s: s

class Ui_MainWindow(object): # klasa okna wygenerowana przez pyuic
    def setupUi(self, MainWindow):
        MainWindow.setObjectName(_fromUtf8("MainWindow"))
        MainWindow.resize(218, 147)
        MainWindow.setWindowTitle(QtGui.QApplication.translate("MainWindow", "MainWindow", None, QtGui.QApplication.UnicodeUTF8))
        self.centralwidget = QtGui.QWidget(MainWindow)
        self.centralwidget.setObjectName(_fromUtf8("centralwidget"))
        self.pushButton = QtGui.QPushButton(self.centralwidget)
        self.pushButton.setGeometry(QtCore.QRect(60, 70, 99, 27))
        self.pushButton.setText(QtGui.QApplication.translate("MainWindow", "PushButton", None, QtGui.QApplication.UnicodeUTF8))
        self.pushButton.setObjectName(_fromUtf8("pushButton"))
        self.lineEdit = QtGui.QLineEdit(self.centralwidget)
        self.lineEdit.setGeometry(QtCore.QRect(12, 10, 191, 28))
        self.lineEdit.setObjectName(_fromUtf8("lineEdit"))
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtGui.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 218, 26))
        self.menubar.setObjectName(_fromUtf8("menubar"))
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtGui.QStatusBar(MainWindow)
        self.statusbar.setObjectName(_fromUtf8("statusbar"))
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        pass

# import wszystkich funkcji z modulu math
from math import *
# import modulu potrzebnego do zakoncznia aplikacji
import sys

# definicja klasy dziedziczacej po klasie otrzymanej
# z narzedzia pyuic
class MainWindow(Ui_MainWindow):
	# nadpisanie metody setupUi
	def setupUi(self,MainWindow):
		# wywolanie funkcji setupUi z klasy rodzica
		Ui_MainWindow.setupUi(self,MainWindow)
		
		# przypisanie sygnalu klikniecia przycisku
		# do metody oblicz
		QtCore.QObject.connect(self.pushButton,
				QtCore.SIGNAL("clicked()"), self.oblicz)
	
	def oblicz(self):
		# pobranie tekstu zawierajacego wyrazenie matematyczne
		# z kontrolki LineEdit
		wyrazenie=str(self.lineEdit.text())
		
		try:
			# sprytna metoda na wykonywanie wyrazen matematycznych
			# wpisywanych przez uzytkownika
			exec( "wynik=%s"%(wyrazenie) )
		except:
			# jesli wystapi blad, wynikiem jest slowo error
			wynik="error"
		
		# wpisanie wyniku operacji do kontrolki LineEdit
		self.lineEdit.setText(str(wynik))

#rutyna niezbędną do uruchomienia aplikacji:
class Aplikacja(QtGui.QMainWindow):
    def __init__(self, parent=None):
        QtGui.QWidget.__init__(self, parent)
        self.ui = MainWindow()
        self.ui.setupUi(self)

if __name__ == "__main__":
    app = QtGui.QApplication(sys.argv)
    myapp = Aplikacja()
    myapp.show()
    sys.exit(app.exec_())

Obsługuje wszystkie funkcje z modułu math: degrees, radians, sin, cos, atan2 itd. Można wprowadzać całe wyrażenia, potęgowanie realizuje się operatorem **, można łatwo rozszerzyć o funkcje numpy (wystarczy zaimportować je gdzieś w kodzie :D ).

<image>Zrzut ekranu z 2013-06-09 2245.png</image>

1 użytkowników online, w tym zalogowanych: 0, gości: 1