Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi PI (https://www.delphipraxis.net/151286-pi.html)

-Ptype- 11. Mai 2010 14:12


PI
 
Heyho Leutz,

Kurze Frage: Wie wird Pi in Delphi deklariert. Gibts da einen Besonderen Befehl oder sowas in der art?

MfG Alex

Corpsman 11. Mai 2010 14:23

Re: PI
 
So viel ich weis ist Pi als Konstante deklariert, und müsste in der Unit Math definiert sein.

-Ptype- 11. Mai 2010 14:27

Re: PI
 
Vergessen zu erwähnen ich habe keine Unit Math bzw. in meinem Informatik Kurs darf ich sie nicht benutzen.

stho 11. Mai 2010 14:30

Re: PI
 
ist sowieso falsch :wink:

befindet sich in der Unit "System".
Die Function heißt "Pi" und gibt nen Extended-Wert zurück
:warn:



EDIT:
Wieso darfst du keine Unit "Math" benutzen?! o.O
Ist doch ne reguläre Unit wie jede andere auch...
Naja, "System" darfst du GANZ SICHER benutzen wenn du Delphi programmierst ^^

himitsu 11. Mai 2010 14:36

Re: PI
 
Delphi-Referenz durchsuchenPi ist 'ne Konstante und Konstanten kann man auch sehr leicht selber deklarieren.

Immerhin gibt es ja viele Quellen wo man nachlesen kann, welchen Wert PI hat.

s.h.a.r.k 11. Mai 2010 14:37

Re: PI
 
Zur Not definierst du es dir halt selbst als const-Wert. Dort kannst du auch die Genauigkeit entsprechend setzen.

Delphi-Quellcode:
const
  PI = 3.14...;

-Ptype- 11. Mai 2010 14:43

Re: PI
 
Zitat:

Wieso darfst du keine Unit "Math" benutzen?! o.O
Ist doch ne reguläre Unit wie jede andere auch...
Naja, "System" darfst du GANZ SICHER benutzen wenn du Delphi programmierst ^^
Mein Lehrer will uns dazu animieren die Probleme die beim programmieren auftreten selbst zu lösen, also dementsprechend sollen wir potenzen nicht mit power sonder mit nem string lösen etc. :)

Zitat:

befindet sich in der Unit "System".
Die Function heißt "Pi" und gibt nen Extended-Wert zurück
wo genau find ich denn die System Unit?

Zitat:

Pi ist 'ne Konstante und Konstanten kann man auch sehr leicht selber deklarieren.

Immerhin gibt es ja viele Quellen wo man nachlesen kann, welchen Wert PI hat.
Zitat:

Zur Not definierst du es dir halt selbst als const-Wert. Dort kannst du auch die Genauigkeit entsprechend setzen.

Delphi-Quellcode: markieren
const
PI = 3.14...;
thx hat mir geholfen ^^

stho 11. Mai 2010 14:52

Re: PI
 
Die System-Unit wird (meines wissens) bei jedem Programm oben in der "uses"-Klausel eingebunden ^^

-Ptype- 11. Mai 2010 14:55

Re: PI
 
Zitat:

Die System-Unit wird (meines wissens) bei jedem Programm oben in der "uses"-Klausel eingebunden ^^
Danke dir, habs gefunden :D

Medium 11. Mai 2010 14:58

Re: PI
 
Zitat:

Zitat von -Ptype-
potenzen [...] mit nem string lösen

Dafür allein gehört er schon erschossen!

stho 11. Mai 2010 15:02

Re: PI
 
Zitat:

Zitat von Medium
Zitat:

Zitat von -Ptype-
potenzen [...] mit nem string lösen

Dafür allein gehört er schon erschossen!

lass ihn doch ;-) Ich meine, wer versucht mit einem Besen zu fliegen bekommt kopfschmerzen
(Sturz auf den kopf tut nunmal weh ^^)

und wer versucht potenzen mit nem String zu lösen, der kriegt auch kopfschmerzen ^^
(nur in diesem fall auf eine andere art und weise :zwinker: )

Medium 11. Mai 2010 15:13

Re: PI
 
Und wer sowas Schülern bei bringt, gehört erschossen.

stho 11. Mai 2010 15:16

Re: PI
 
okay, da hast du recht :(

Mithrandir 11. Mai 2010 15:16

Re: PI
 
Wir wollen hier aber nicht aktiv zur Gewalt aufrufen. :warn:

:mrgreen:

Wolfgang Mix 11. Mai 2010 15:20

Re: PI
 
Lehrermord führt zu lebenslanger Haftstrafe, also gut überlegen :mrgreen:

-Ptype- 11. Mai 2010 15:33

Re: PI
 
Aja mein lehrer ist halt nicht der beste xD aber trotzdem war das jetzt mit den Potenzen nicht so schwer :D

Delphi-Quellcode:
begin
               n := 1; y:= zahl;
             repeat
               n := n+1;
               zahl := zahl * y;
             until n = zahl2;
             end;

himitsu 11. Mai 2010 15:33

Re: PI
 
Zitat:

potenzen [...] mit nem string lösen
http://www.delphipraxis.net/internal...t.php?t=159592

Alles ist möglich, aber nicht grade effektiv und schnell. :roll:
Im Prinzip entspricht es dem, wie man es auch mit Stift und Zettel per Hand/Kopf lösen könnte.

Bei der Trial sind wohl keine Quellcodes dabei, aber die DCUs sind es und somit kann man die Unit Math auch einbinden/benutzen.


Aber mal ganz im Enst, wenn ihr grade mal vor einer Woche mit Delphi angefangen habt,
würde ich als Lehrer nicht jetzt schon mit sowas anfangen, sondern erstmal die wichtigsten Grundlagen, sowie das Debuggen lehren.
Auch wenn das wohl nicht grade ein spannendes Thema ist, aber IMHO gehört es dazu und ohne kann man eigentlich nicht "richtig" machen.


Zitat:

Zitat von Wolfgang Mix
Lehrermord führt zu lebenslanger Haftstrafe, also gut überlegen :mrgreen:

Moin Herr Lehrer, :angel:
ich dachte da kommt man Aufgrund besonderer Umstände und duch die Jahrelang ertragenen seelischen Grausamkeiten, auf Bewährung davon?


Zitat:

Delphi-Quellcode:
n := 1;
y:= zahl;
repeat
  n := n+1;
  zahl := zahl * y;
until n = zahl2;

Versuch es mal mit einer While-Schlife, denn versuch mit deinem Code mal die Potenz 1 auszurechnen. :zwinker:
Wobei die Potenz 0 und alle Negativen auch noch nicht behandelt werden.

Delphi-Quellcode:
if zahl2 < 0 then
begin
  // hier einfach mal eine Fehlermeldung ausgeben
end
  if zahl2 > 0 then
  begin
    n := 1;
    y := zahl;
    while n < zahl2 do
    begin
      zahl := zahl * y;
      n := n + 1;
    end;
  end
  else
    zahl := 1

-Ptype- 11. Mai 2010 15:45

Re: PI
 
Zitat:

Aber mal ganz im Enst, wenn ihr grade mal vor einer Woche mit Delphi angefangen habt,
würde ich als Lehrer nicht jetzt schon mit sowas anfangen, sondern erstmal die wichtigsten Grundlagen, sowie das Debuggen lehren.
Auch wenn das wohl nicht grade ein spannendes Thema ist, aber IMHO gehört es dazu und ohne kann man eigentlich nicht "richtig" machen.
Sorry falls ich dumm frage aber was ist Debuggen? Vllt hab ichs schon gemacht weiß nur nicht was das heißt:S
Zudem haben wir zu Beginn eine Ampel programmiert so zum Einstieg und jetzt erst sind wir bei dem T-rechner.
Insgesamt hatt ich jetzt ca. 6 Schulstunden Informatik in dem es ums Programieren geht/ging und seit dem wir auch mit Delphi angefangen haben.

Achja und das ich soviele Fragen stelle ist nicht unbedingt für die Schule, denn das was ich für die Schule brauchte war einfach nur mit ner Schleife zu potenzieren weiter nichts. Das mit Pi, Sinus, Cosinus etc. mach ich eig nur füer mich weil ich Spaß am proggen habe :D

Zitat:

if zahl2 < 0 then
begin
// hier einfach mal eine Fehlermeldung ausgeben
end
if zahl2 > 0 then
begin
n := 1;
y := zahl;
while n < zahl2
zahl := zahl * y;
n := n + 1;
end;
end
else
zahl := 1
Soweit so gut jetzt kommt bei mir ein Fehler :

Delphi-Quellcode:
begin
  // hier einfach mal eine Fehlermeldung ausgeben
end
  if zahl2 > 0 then
  begin
    n := 1;
    y := zahl;
    while n < zahl2 
      zahl := zahl * y;
      n := n + 1;
    end;
  end
  else
    zahl := 1 // hier kommt en Fehler
Fehler:Konstantenausdruck erwartet

BUG 11. Mai 2010 15:59

Re: PI
 
Zitat:

Zitat von himitsu
würde ich als Lehrer nicht jetzt schon mit sowas anfangen, sondern erstmal die wichtigsten Grundlagen, sowie das Debuggen lehren.

Bis jetzt habe ich in keiner Schulform (incl. Uni bis jetzt) debugging praktisch erläutert bekommen, im Gymnasium wurde es nicht einmal erwähnt (genau wie OOP :mrgreen: ). Dabei ist es dort noch am einfachsten zu zeigen, da alle die gleiche IDE benutzen.

Zitat:

Zitat von -Ptype-
Sorry falls ich dumm frage aber was ist Debuggen?

Hier gibt es ein Tutorial.

Zitat:

Zitat von -Ptype-
mach ich eig nur füer mich weil ich Spaß am proggen habe :D

Das ist die richtige Einstellung :thumb:

Wolfgang Mix 11. Mai 2010 15:59

Re: PI
 
Dein
Delphi-Quellcode:
while n < zahl2
müsste eigentlich besser so funktionieren
Delphi-Quellcode:
while n < zahl2 do
begin
  ... Anweisungen
end;

-Ptype- 11. Mai 2010 16:07

Re: PI
 
Also hier mal den Code den ich jetzt drin habe und wo bei mir dann schließlich der Fehler auftaucht:

Delphi-Quellcode:
if zahl2 < 0 then
             begin
               showmessage ('Nicht erlaubt');
             end;
             if zahl2 > 0 then
             begin
               n := 1;
               y := zahl;
             while n < zahl2 do
               zahl := zahl * y;
               n := n + 1;
             end
             else
             zahl := 1;
             end;

Der Fehler kommt bei mir bei
Delphi-Quellcode:
 zahl := 1;
und als Fehler steht dort: E2026 Konstantenausdruck erwartet

Noedel 11. Mai 2010 16:18

Re: PI
 
du hast da auch ein begin und ein end vergessen ;)

Delphi-Quellcode:
if zahl2 < 0 then
  begin
    showmessage ('Nicht erlaubt');
  end;
  if zahl2 > 0 then
  begin
    n := 1;
    y := zahl;
    while n < zahl2 do
    begin //hier begin vergessen!
      zahl := zahl * y;
      n := n + 1;
    end; //und das dazugehörige end;
  end
   else
    zahl := 1;
  end;

dominikkv 11. Mai 2010 16:23

Re: PI
 
Bitte gewöhne dir gleich von Anfang an das Einrücken an, auch wenn es mehr Arbeit bedeutet... im Endeffekt spart es aber unheimlich viel Arbeit! Vielleicht fällt dir hier etwas auf:
Delphi-Quellcode:
if zahl2 < 0 then
  begin
    showmessage ('Nicht erlaubt');
  end;
if zahl2 > 0 then
  begin
    n := 1;
    y := zahl;
    while n < zahl2 do
      zahl := zahl * y;
    n := n + 1;
  end else
    zahl := 1;
end;

-Ptype- 11. Mai 2010 16:28

Re: PI
 
Delphi-Quellcode:
if zahl2 < 0 then
  begin
    showmessage ('Nicht erlaubt');
  end;
  if zahl2 > 0 then
  begin
    n := 1;
    y := zahl;
    while n < zahl2 do
    begin //hier begin vergessen! 
      zahl := zahl * y;
      n := n + 1;
    end; //und das dazugehörige end;
  end
   else
    zahl := 1;
  end;
thx dafür aber es kommt immer noch der selbe Fehler bei: zahl := 1; :S

himitsu 11. Mai 2010 16:39

Re: PI
 
Abgesehn von dem fehlenden ELSE zwischen
Delphi-Quellcode:
end;
if zahl2 > 0 then
Zeige mal bitte die gesamte Prozedur, denn in dem aktuell gezeigten Code-Stückchen gibt es anscheinend keinen Grund für diese Fehlermeldung.



PS: genau aus solchen Gründe sollten die ersten Stunden für Themen wie
- Verwendung der IDE und der OH
- Codeformatierung
- Fehleranalyse
- Debugging
verwendet werden.
Ist jetzt kein Vorwurf an dich, sondern mehr an die Lehrer, welche oftmals selber nicht grade "richtig" Ahnung haben.

-Ptype- 11. Mai 2010 16:45

Re: PI
 
Delphi-Quellcode:
procedure TForm2.ButtonGleichClick(Sender: TObject);
{************************************************************************}
var zahl2,n : double;
    pi      : real;
begin
  zahl2 := strtofloat (Edit1.Text);
  case merk of
    plus: zahl := zahl + zahl2;
    minus: zahl := zahl - zahl2;
    mal: zahl := zahl * zahl2;
    geteilt: zahl := zahl / zahl2;
    hoch: zahl := zahl * zahl;
    wurzel: zahl := sqrt(zahl);
    hochx:  if zahl2 < 0 then // Hier Fängts An!
               begin
                 showmessage ('Nicht erlaubt');
               end
             else
             if zahl2 > 0 then
               begin
                 n := 1;
                 y := zahl;
               while n < zahl2 do
               begin
                 zahl := zahl * y;
                 n := n + 1;
               end;
             end
             else
               zahl := 1;
             end;
    wurzelx: begin
               n := zahl;
               zahl := exp((1/n)*ln(zahl2));
             end;
    prozent: begin
               n := 100;
               zahl := zahl * zahl2 / n;
             end;
  end;
    edit1.text:=floattostr(zahl);
    neue_zahl := True;
    ButtonKomma.Enabled := True;
    ButtonGleich.Enabled := False;
end;
Hier das ist die Prozedur wo der Codeschnipsel herstammt.

DeddyH 11. Mai 2010 16:48

Re: PI
 
Schließ den ganzen Code zum Label "hochx" mal in begin und end ein.
Delphi-Quellcode:
case...of
...
hochx: begin
         //Dein Code
       end;

-Ptype- 11. Mai 2010 16:51

Re: PI
 
Delphi-Quellcode:
procedure TForm2.ButtonGleichClick(Sender: TObject);
{************************************************************************} 
var zahl2,n : double;
    pi      : real;
begin
  zahl2 := strtofloat (Edit1.Text);
  case merk of
    plus: zahl := zahl + zahl2;
    minus: zahl := zahl - zahl2;
    mal: zahl := zahl * zahl2;
    geteilt: zahl := zahl / zahl2;
    hoch: zahl := zahl * zahl;
    wurzel: zahl := sqrt(zahl);
    hochx: begin
             if zahl2 < 0 then // Hier Fängts An! 
               begin
                 showmessage ('Nicht erlaubt');
               end
             else
             if zahl2 > 0 then
               begin
                 n := 1;
                 y := zahl;
               while n < zahl2 do
               begin
                 zahl := zahl * y;
                 n := n + 1;
               end;
             end
             else
               zahl := 1;
             end;
           end;
    wurzelx: begin  // HIer ist ein neuer Fehler
               n := zahl;
               zahl := exp((1/n)*ln(zahl2));
             end;
    prozent: begin
               n := 100;
               zahl := zahl * zahl2 / n;
             end;
  end;
    edit1.text:=floattostr(zahl);
    neue_zahl := True;
    ButtonKomma.Enabled := True;
    ButtonGleich.Enabled := False;
end;

Der alte fehler ist weg aber ein neuer ist da -.-

Klaus01 11. Mai 2010 16:52

Re: PI
 
Zitat:

Zitat von -Ptype-
Der alte fehler ist weg aber ein neuer ist da -.-

Und wie zeigt sich der - und wie heißt er?

Grüße
Klaus

DeddyH 11. Mai 2010 16:54

Re: PI
 
Der heißt auf Deutsch "jetzt hat er ein end zuviel". Es geht eben nichts über eine gescheite Einrückung :)

-Ptype- 11. Mai 2010 16:54

Re: PI
 
Zitat:

nd wie zeigt sich der - und wie heißt er?
Da steht: [DCC Fehler] Unit2.pas(156): E2029 ':=' erwartet, aber ':' gefunden

Hoffe du/ihr kannst/könnt helfen.

DeddyH 11. Mai 2010 16:55

Re: PI
 
Zähl mal die "begin"s und "end"s innerhalb des Labels "hochx".

-Ptype- 11. Mai 2010 16:56

Re: PI
 
Zitat:

Der heißt auf Deutsch "jetzt hat er ein end zuviel". Es geht eben nichts über eine gescheite Einrückung

Ja es geht wieder ich danke dir ^^ und auch allen anderen die sich darum bemühen mir zu helfen :)

himitsu 11. Mai 2010 17:02

Re: PI
 
Zitat:

Zitat von DeddyH
Es geht eben nichts über eine gescheite Einrückung :)

@-Ptype-:
Solange du noch die 2010-Trial nutzt ... drücke mal in deinem Codefenster Strg+D
und freue dich darüber, wie Delphi das für dich erledigt. :angel:

lbccaleb 11. Mai 2010 19:12

Re: PI
 
Zitat:

Zitat von Wolfgang Mix
Lehrermord führt zu lebenslanger Haftstrafe, also gut überlegen :mrgreen:

Aber beseitigt die elendigen Kopfschmerzen :P

Wolfgang Mix 11. Mai 2010 19:42

Re: PI
 
:)


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:49 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