Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Taschenrechner programmieren (https://www.delphipraxis.net/129164-taschenrechner-programmieren.html)

Maja18 13. Feb 2009 18:49


Taschenrechner programmieren
 
Hallo ihr lieben!
wir müssen in der schule ein projekt auf die beine stellen und ich habe mich für die programmierung eines taschenrechners mit delphi entschieden.
nun habe ich nur das problem, dass ich mit dem logarithmus nicht weiterkomme.
folgenden algorithmus habe ich:
Delphi-Quellcode:
//Logarithmus
procedure TForm1.Button13Click(Sender: TObject);
var
  i,j,kommastellen:integer;
  Ergebnis,Power,Exponent : Extended;
begin
  j := 0;
  Ergebnis := 0;
  Exponent := 0;
  Kommastellen := 0;
  while Kommastellen <= StrToInt(Edit1.Text) do
  begin
    for i := 9 downto 0 do
    begin
      Exponent := Exponent + i*Power;
      Ergebnis := Power;//(StrToFloat(Edit1.Text), Exponent);
      if Ergebnis <= StrToInt(Edit1.Text) then
      begin
        if j < 0 then
        begin
          Kommastellen := Kommastellen+1;
        end;
        j := j-1;
        break;
      end;
      Exponent := Exponent - i*Power;//(10, j);
      if i = 0 then
      begin
         j := j+1;
      end;
    end;
  end;
  Edit2.Text := FloatToStr(Round(Exponent*Power)/Power);
end;
nur, mit dem power haut bei mir was nicht hin. das programm funktioniert nur, wenn ich nichts in klammern nach power schreibe, was ja aber eigentlich hinmuss.
bitte bitte helft mir!!!
lg

[edit=mkinzler]Mit Tags und richtig eingerückt, sieht die Sache doch übersichtlicher aus? Oder? Mfg, mkinzler[/edit]

himitsu 13. Feb 2009 18:56

Re: Taschenrechner programmieren
 
Du hast eine Variable namens Power und die braucht keine Parameter. :zwinker:

Versuch es mal mit Math.Power(10, j); (also mit qualifizierem Namen, samt dem Unit),
oder benenn deine Variable um.

Und schreib bitte deinen Code in [delphi] ... [/delphi]-Tags ... du kannst das über den http://www.delphipraxis.net/template.../icon_edit.gif-Button im ersten Beitrag noch ändern.

Maja18 13. Feb 2009 19:02

Re: Taschenrechner programmieren
 
hab mal probiert, das mit math.power zu machen, aber das nimmt er nicht.
es heißt dann: undefinierter bezeichner math...
wie kommt man denn an die math.pas?

Meflin 13. Feb 2009 19:04

Re: Taschenrechner programmieren
 
Zitat:

Zitat von Maja18
wie kommt man denn an die math.pas?

Du musst nur math in die uses-Liste aufnehmen (einfach mit , hinter die anderen Units in der uses-Liste schreiben und aufpassen, dass am Ende der Liste ein ; steht).

Maja18 13. Feb 2009 19:27

Re: Taschenrechner programmieren
 
danke für diesen super tip!
jetzt müsste nur mal noch der algorithmus funktionieren;)
lg

Florian Hämmerle 13. Feb 2009 21:24

Re: Taschenrechner programmieren
 
Crosspost Delphitreff

Popov 13. Feb 2009 22:07

Re: Taschenrechner programmieren
 
Mir liegt schon lange eine Frage auf der Zunge, ich wollte aber deswegen keinen extra Thread aufmachen. Wer von den Profi-Programmierern, also den Leuten die von sich behaupten durchaus gut programmieren zu können, hat schon mal einen richtigen Taschenrechner programmiert? Würde mich echt interessieren, den einen Taschenrechner zu programmieren ist nicht so leicht. Zumindest dann nicht wenn man es richtig machen will. Da vertun sich viele. Einen professionellen Taschenrechner zu programmieren ist nicht so einfach, denn es reicht nicht nur zwei Zahlen zusammen zu rechnen. Für so einfachen Taschenrechner wie den Windowsrechner gehen paar Abende drauf. Denoch wird der Taschenrechner als Anfängeraufgabe gesehen.

Also, wer hat schon mal einen professionellen Taschenrechner (mindestens wie Windowsrechner) programmiert?

Florian Hämmerle 13. Feb 2009 22:18

Re: Taschenrechner programmieren
 
Als Anfängerprogramm nimmt man normalerweise auch nur die Grundrechenarten.

Ich würd mich jetzt nicht als Profi-Programmierer sehen. Ganz sicher nicht. Habs weder in der Schule noch sonst wo gelernt, sondern in meiner Freizeit erarbeitet.
Ich hab mich mal an nem Taschenrechner versucht (noch auf xp, hab ich nicht auf vista übernommen). Der konnte schon viele dinge:
  • +, -, /, * (ist ja klar... )
  • Wurzel, Exp, Logarithmus (Jede Zahl als Basis)
  • Naturkonstanten waren eingebaut
  • viele Umrechnungen
  • wissenschaftliche Funktionen
  • Vektorberechnungen an dreiecken mit lösungsweg + Grafik
  • ...

Hab dann aber irgendwie aufgegeben, da es mich nicht mehr interessiert hat und mir das design und der Aufbau nicht mehr zusagten..
Mich interessiert grafik im moment mehr....

mfg Flö

Florian Hämmerle 13. Feb 2009 22:19

Re: Taschenrechner programmieren
 
Achja. Im moment arbeite ich gerade an ner Skriptsprache. kann auch so sachen, aber nur grundrechenarten... (bin gerade beim Matheparser...)

jaenicke 13. Feb 2009 23:07

Re: Taschenrechner programmieren
 
Zitat:

Zitat von Popov
Also, wer hat schon mal einen professionellen Taschenrechner (mindestens wie Windowsrechner) programmiert?

Ich habe auch schon einen programmiert, ca. so wie die wissenschaftliche Version des Windows-Rechners, nur mehrzeilig. Das habe ich mit Statusdiagramm etc. gemacht, was ich da im Studium gerade gelernt hatte. Da war das rein vom Code her nicht so besonders aufwendig. Den habe ich in Delphi geschrieben.

Vorher hatte ich in QBasic einen ganz kleinen geschrieben als ich gerade angefangen hatte zu programmieren. Der war nicht besonders schön programmiert, hat auch anfangs nicht richtig funktioniert, aber es hat mir sehr beim Verständnis geholfen.

Im Moment programmiere ich gerade einen auf Basis von Expression Trees in C#. Hervorgegangen ist das aus einer Frage vor ein paar Tagen im DF, aber dann fand ich das so interessant, dass ich das ganze richtig angefangen habe. Einfließen soll dann auch ein Programm zur symbolischen Differentiation und Integration, das ich mal basierend auf Operationen an binären Bäumen geschrieben hatte. Da ich im Expression Tree dann ohnehin einen Baum habe, ist das dann ja kein Problem mehr.
Der soll dann sowohl symbolisch auswerten und plotten als auch direkt als normaler Rechner fungieren.

Grundsätzlich finde ich schon, dass ein Taschenrechner gut zum Einstieg ist. Es geht dann aber wie bereits gesagt wurde um einfache Sachen wie die Grundrechenarten und kann dann erweitert werden. Solch ein Taschenrechner muss anfangs ja auch nicht nur ein Eingabefeld haben, sondern kann eben etwas umständlicher sein. Dann ist er aber zum Lernen durchaus sinnvoll.

Florian Hämmerle 13. Feb 2009 23:21

Re: Taschenrechner programmieren
 
Ja stimmt. Ein Taschenrechner eignet sich auch deshalb als Anfängerprojekt, da man es immer wieder ausbauen kann.
Hab zu Beginn auch mit nem ganz kleinen angefangen... Heute lacht man über sowas aber damals half das echt, weil man da viele dinge üben kann (Funktionen, Parameter, ...)

mfg Flö

himitsu 14. Feb 2009 09:06

Re: Taschenrechner programmieren
 
Jupp, nein Taschenrechner kann man als anfänger klein Anfangen und als Profi bis zum geht nimmer ausbauen.

Und die ganz Harten basteln sich dann noch die Hardware dazu
http://www.delphipraxis.net/internal...t.php?t=151432

Florian Hämmerle 14. Feb 2009 10:12

Re: Taschenrechner programmieren
 
Das ist dann wirklich was für die ganz Harten...

Dipl Phys Ernst Winter 26. Mai 2009 19:09

Re: Taschenrechner programmieren
 
Liste der Anhänge anzeigen (Anzahl: 2)
Zunächst ist einmal zu klären, was wir unter Taschenrechner verstehen wollen. Ich kann ja den PC nicht in die Tasche stecken.
Verstehen wir unter Taschenrechner ein Gebilde auf dem Desktop, das aussieht wie ein Taschenrechner und bedient wird wie ein Taschenrechner oder ein Objekt, dass verwendet wird wie ein Taschenrechner.
Die ersten beiden Fälle dienen dem Prototyping, sie bilden einen echten Taschenrechner auf dem Deskptop ab, um seine Bedienbarkeit zu testen. Die Bedienung erfolgt durch Mausklick auf die Tasten. Die Tastatur sollte abgeschaltet sein.
Den letzten Fall nenne ich Desktoprechner. Er benutzt zur Eingabe die Tastatur und könnte prinzipiell die ganze Peripherie des PC nutzen. Daher gehen seine Möglichkeite weit über die eines Rechners, den ich in die Tasche stecken kann hinaus.
Ein Desktoprechner kann mühelos alles Anzeigen was zum Ergebnis geführt hat: die beiden Operanden in ihren Eingabefeldern und mit einem Prompt den Operator, mit denen sie zum Ergebnis verknüpft wurden.

Die Muhkuh 26. Mai 2009 19:22

Re: Taschenrechner programmieren
 
Den Rest des Threads hast Du nicht gelesen? Es geht ja schon aus seinem Eingangspost hervor, was der Threadersteller möchte. :zwinker:

Wolfgang Mix 26. Mai 2009 19:45

Re: Taschenrechner programmieren
 
Habe schon von vielen Schulern Taschenrechner programmieren lassen, allerdings nicht für Einsteiger. Der Erfolg hängt allerdings auch davon ab, wieviel Material der Lehrer dem Schüler zur Verfügung stellt. Habe gute Erfahrung mit dem Delphi Kochbuch von Doberenz/Kowalski gemacht. Die gelieferten Quelltexte setzen noch nicht OOP voraus.
Die erstellten Ergebnisse waren fast komplett verschieden und die Quelltexte durchaus beeindruckend.
Wikipedia ist nicht immer die 1. Wahl, auch olle Schinken in der Stadtbibliothek bergen wahre Schätze.

Florian Hämmerle 26. Mai 2009 20:03

Re: Taschenrechner programmieren
 
Zitat:

Zitat von Wolfgang Mix
Habe schon von vielen Schulern Taschenrechner programmieren lassen, allerdings nicht für Einsteiger. Der Erfolg hängt allerdings auch davon ab, wieviel Material der Lehrer dem Schüler zur Verfügung stellt. Habe gute Erfahrung mit dem Delphi Kochbuch von Doberenz/Kowalski gemacht. Die gelieferten Quelltexte setzen noch nicht OOP voraus.
Die erstellten Ergebnisse waren fast komplett verschieden und die Quelltexte durchaus beeindruckend.
Wikipedia ist nicht immer die 1. Wahl, auch olle Schinken in der Stadtbibliothek bergen wahre Schätze.

Naja... Kochbuch bringt einem aber nicht gerade saubere Programmierung bei :S

mfg Florian


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:36 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz