Autor Beitrag
Marcel92
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Mo 28.03.11 16:56 
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.
ausblenden 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 user profile iconNarses: Delphi-Tags hinzugefügt
HenryHux
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 542
Erhaltene Danke: 33

Windows 7 Premium
Delphi XE, Eclipse
BeitragVerfasst: 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 : 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 Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 866
Erhaltene Danke: 43

Win 7
TurboDelphi, Visual Studio 2010
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 70
Erhaltene Danke: 5


Delphi 10 Seattle Prof.
BeitragVerfasst: Mo 28.03.11 21:52 
Herzlich Willkommen Marcel! :welcome:

user profile iconJann1k hat folgendes geschrieben Zum zitierten Posting springen:
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:
ausblenden Delphi-Quelltext
1:
StrToFloat(Text)					

reagiert mit einer sogenannten Exception - also einer Fehlermeldung -, wenn der Text auch Zeichen enthält, die in einer Gleitkommazahl nichts zu suchen haben. Beispiel:
ausblenden Delphi-Quelltext
1:
StrToFloat('-1,234x');					

Willst du diese Exception abfangen, mußt Du einen solchen Block benutzen:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
try
  alfagra:=StrToFloat('-1,234x'); //Umwandlung des Textes (String) in den Winkel (Grad)
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:
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: 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:
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 user defined image oder user defined image klicken und den Titel ändern. Danke Dir!

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.