Entwickler-Ecke
Sonstiges (Delphi) - Hilfe bei einer Frage
Marcel92 - Mo 28.03.11 16:56
Titel: Hilfe bei einer Frage
Hallo ihr lieben,
ich bin Marcel und habe für den Unterricht am Mittwoch was aufbekommen und ich bin völlig Ratlos. Habe mit Delphi erst kleine sachen programmiert wie einen taschenrechner und so, wie jeder zu Anfang im Unterricht. Kann mir aber überhaupt nicht helfen bei diesen Fragen. Hoffe einer kann mir helfen .... Danke.
Die folgende Prozedur berechnet aus einem in Grad eingegebenen Winkel den Tangens. Die verwendeten Variablen sind als real definiert.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7:
| procedure TFRechner.BtanClick(Sender: TObject) ; begin alfagra := StrToFloat(TFein1.text) ; alfabog := pi/180 x alfagra ; erg := sin(alfabog) / cos(alfabog) ; TFaus.text := FloatToStr(erg) ; end; |
a) Welche Änderungen sind nötig, damit das Programm nicht bei bestimmten Eingabewerten abstürzt ?
b) Zeichnen Sie das komplette Struktogramm zu a)
c) Was wäre zu tun, bevor der Tangens mit dem Besfehl erg := tan(alfabog) ; berechnet werden kann ?
Antworten :
a) villt ein "end." was das programm beendet ?
b)Struktogramm :
alfagra einlesen
erg = sin(alfabog) / cos(alfabog)
erg ausgeben
c)vielleicht "tan(alfabog)" vorher definieren ?
Moderiert von
Narses: Delphi-Tags hinzugefügt
HenryHux - Mo 28.03.11 17:07
Hi,
ich glaube kaum, dass hier jemand deine kompletten Hausaufgaben machen wird, am besten du probierst erstmal ein bisschen aus und fragst dann konkreteres.
Erstmal zum Struktogramm.
Sollt ihr aus dem kleinen Code eins machen?
Wenn ja, dann ists wie du geschrieben hast richtig, einfach alle Befehle aufzulisten.
Wenn du aber mal nicht weiterkommst, gibts viele gute Tools, die dir helfen. Siehe zb :
http://structorizer.fisch.lu/ .
Ansonsten sind Programme immer anfällig für falsche Eingaben von Seiten des Benutzers.
Deshalb ist der erste Punkt den du prüfen solltest, ob der User auch eine gültige Eingabe gemacht hat, ansonsten wirft er dir (Delphi nicht der User =) ) eine Exception.
Das könntest du zb mit
TryStrToFloat lösen. Einfach mal in der Hilfe nachschlagen, da stehen mehr Infos.
Was mit der c) gemeint ist, weiß ich nicht. Jedoch fällt mir auf, dass statt dem Multiplikatorzeichen (*) ein x da steht. Das dürfte Delphi so nicht compilieren.
Lg
Marcel92 - Mo 28.03.11 17:15
das mit a) hab ich noch nicht ganz verstanden ... da guck ich dann mal.
mit c) hab ich mich vertan ich meinte (*) statt x
für b) schonmal ein danke und den link
Jann1k - Mo 28.03.11 17:26
Probier doch bei a) einfach mal aus, bei welchen Eingaben das Programm abstürzt.
Achja, und wenn dein erster Thread schon von den Mods geschlossen wird, würde ich ja nicht so dreist sein und einfach einen zweiten aufmachen mit genau dem gleichen Eröffnungspost.
Thom - Mo 28.03.11 21:52
Herzlich Willkommen
Marcel! :welcome:
Jann1k hat folgendes geschrieben : |
| Achja, und wenn dein erster Thread schon von den Mods geschlossen wird, würde ich ja nicht so dreist sein und einfach einen zweiten aufmachen mit genau dem gleichen Eröffnungspost. |
Wollt Ihr jeden "Neuling" gleich wieder verscheuchen!? Ich denke, ein wenig mehr Tolleranz und Feingefühl wäre an manchen Stellen nicht schlecht... :zwinker:
Ich denke, der Lehrer will auf zwei Stellen hinaus:
reagiert mit einer sogenannten Exception - also einer Fehlermeldung -, wenn der Text auch Zeichen enthält, die in einer Gleitkommazahl nichts zu suchen haben. Beispiel:
Delphi-Quelltext
1:
| StrToFloat('-1,234x'); |
Willst du diese Exception abfangen, mußt Du einen solchen Block benutzen:
Delphi-Quelltext
1: 2: 3: 4: 5:
| try alfagra:=StrToFloat('-1,234x'); except ShowMessage('Sieht so etwa eine Zahle aus!?'); end; |
Tritt zwischen
try und
except eine Exception ein, werden die Befehle zwischen
except und
end ausgeführt. Schau einfach mal in der Delphi-Hilfe nach.
Das zweite Problem hat nichts mit Delphi zu tun, sondern hat eine mathematische Ursache:
Delphi-Quelltext
1:
| erg:=sin(alfabog)/cos(alfabog); |
Na - für welchen Nenner ist eine Division nicht erlaubt? :wink:
Denk' mal an die Tangens-Funktion: Für welche Argumente ist die nicht definiert?
Das Programm würde dabei natürlich nicht vollständig abstürzen. Danke an Borland/CodeGear/Embarcadero! :lol:
Narses - Di 29.03.11 09:02
Moin!
Bitte ändere den Titel des Topics, da er wenig über das eigentlich Thema verrät. Hier der entsprechende Absatz aus den
Richtlinien [
http://www.entwickler-ecke.de/richtlinien.html]:
| 1.2 Beiträge: |
| Bitte formuliere den Betreff Deiner Beiträge so, dass andere Mitglieder anhand dieser bereits das eigentliche Thema festmachen können. Beiträge wie etwa "Eine Anfängerfrage" oder "Weiß jemand, wie das geht?" lassen den Leser im Unklaren darüber, was das Thema der Diskussion ist.[...] |
Einfach oben bei Deinem ersten Beitrag auf

oder

klicken und den Titel ändern. Danke Dir!
cu
Narses
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!