AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

If Anweisung mit 2 Bedingungen?

Ein Thema von Hallo_Thomas · begonnen am 4. Jun 2005 · letzter Beitrag vom 25. Jun 2005
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#11

Re: If Anweisung mit 2 Bedingungen?

  Alt 4. Jun 2005, 20:37
Zitat von Palando:
Zitat von rantanplan99:
Mit logischen Verknüpfungen ist das machbar.
.. AND ..
.. OR ..
Gibt es eigentlich auch ein XOR? Weil einfach "XOR" ging bei mir glaube ich nicht...


(XOR = die Schleife wird nur ausgeführt, wenn die eine Bedingung true und die andere false ist. Wenn beide true sind, oder beide false, dann wirds nicht gemacht.)
Natürlich gibt es in Delphi xor. Und es gibt in Delphi auch eine Hilfe, die selbst in D2005 nach der kurzen Eingabe von "xor" folgendes ausspuckt :
Zitat von F1:
xor Exklusive Disjunktion A xor B
Den unären Operator not gibt es übrigens auch.
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
BenjaminH

Registriert seit: 14. Okt 2004
Ort: Freiburg im Breisgau
713 Beiträge
 
Turbo Delphi für Win32
 
#12

Re: If Anweisung mit 2 Bedingungen?

  Alt 4. Jun 2005, 20:39
Zitat von Palando:
Gibt es eigentlich auch ein XOR?
Ja, das gibt es!
If true xor false Then
Benjamin
  Mit Zitat antworten Zitat
Palando

Registriert seit: 5. Mai 2005
72 Beiträge
 
#13

Re: If Anweisung mit 2 Bedingungen?

  Alt 4. Jun 2005, 23:42
Zitat von BenjaminH:
Zitat von Palando:
Gibt es eigentlich auch ein XOR?
Ja, das gibt es!
If true xor false Then
Dann war ich, wo ich das probiert habe, wohl einfach unfähig.

Dankeschön

edit: Auch danke an Khabarakh... Ich hatte eben kein Delphi da ums nachzukucken, kam mir nur, als ich den Thread gelesen habe...
Markus
  Mit Zitat antworten Zitat
hardy1234

Registriert seit: 8. Aug 2004
Ort: Hamburg
26 Beiträge
 
Delphi 7 Enterprise
 
#14

Re: If Anweisung mit 2 Bedingungen?

  Alt 23. Jun 2005, 08:37
Zitat von malo:
@hardy1234: Wegen den Schleifen: Es waren bestimmt die if-Abfragen gemeint
Bei der ersten Variante fehlen jedoch die Klammern.


Die zweite Variante halte ich (besonders für Anfänger) viel zu kompliziert.

Was mich bei Schleifen in diesem Fall stört: Der Code wird IMMER WIEDER ausgeführt. Deshalb sind es auch Schleifen. Man müsste künstlich die Bedingung unterbrechen oder ein Break einbauen, was nicht so schön ist.
Pfui, break. wer macht denn sowas. der witz an while do begin ... end und repeat ... until ist es ja gerade, das man sich den break schenken kann. Es gibt da noch das Paradigma des middle-check, mit dem man den break leicht umgeht, nämlich so:

Delphi-Quellcode:
function TestIrgendwas(var i: integer;...): boolean;
var
  good: boolean;
begin
  i:= 0; good:= false;
  while (i <= maxloop) and not(good) do begin
    good:= {*** hier irgendeine expression ***}
    if not(good) then inc(i);
  end;
  if good then begin
    {*** hier die nachverarbeitung im Erfolgsfall, wenn nötig ***}
    {*** falls das ne Liste ist, hat man nun auch den richtigen index. ***}
    {*** was will man mehr? ***}
  end;
  {*** falls boolean-function, wie hier  ***}
  Result:= good;
end;
Der charme der geschichte dürfte klar sein. die schleife läuft genauso lange bis etwas bestimmtes gefunden wurde und dann ist schluß. da man die expression in der mitte der schleife jeweils neu setzt steuert diese die schleife und sorgt für die Abbruchbedingung. Wie man sieht kein "break". Da hab ich schon richtig komplexe tests damit duchgeführt und das klappt immer. Nebenbei ist es äußerst elegant programmiert. Die Abbruchbedingungen lassen sich ja genauso gut auch mit weiteren funktionen auslagern, die dürfen ja auch lokal vereinbart sein. Hätte ich solche dinger wie break oder noch schlimmer goto verwendet, hätte ich nicht mal das 1ste Semester überstanden. Derlei schweinereien sind den Basic- und Script-Programmierern vorbehalten...
Es gibt keinen schöneren Tag als den heutigen. Der gestrige ist vorbei und von den kommenden weiß man nicht was sie bringen.
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#15

Re: If Anweisung mit 2 Bedingungen?

  Alt 23. Jun 2005, 09:41
Es ist nichts Verwerfliches an einem 'break', im Gegenteil: Es macht den Code i.a. wesentlich lesbarer. Die Diskussion um break, exit und goto ist so alt wie die Konstrukte selbst. Da das sehr viel mit Glauben zu tun hat, sollte jeder selbst entscheiden, was er wie einsetzt: Selbst goto's haben ihre Berechtigung.

Einzige Voraussetzung: Die Lesbarkeit und m.E. die Performance sind entscheidend.

Natürlich kommt man ohne break und goto aus, aber es geht ja auch ohne prozeduren, funktionen, units und die VCL. Nur, wieso sollte ich auf etwas verzichten? Und das erste Semester hättest Du auch mit gotos und breaks überstanden... Sofern Du sie richtig einsetzt.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
hardy1234

Registriert seit: 8. Aug 2004
Ort: Hamburg
26 Beiträge
 
Delphi 7 Enterprise
 
#16

Re: If Anweisung mit 2 Bedingungen?

  Alt 25. Jun 2005, 09:14
Zitat von alzaimar:
Und das erste Semester hättest Du auch mit gotos und breaks überstanden... Sofern Du sie richtig einsetzt.
War bei uns strengstens verboten, mit folgendem Hintergrund:

Wer goto, break und Konsorten verwendet, hat über seinen Programmcode nicht genügend nachgedacht. (Punkt)

Aus eigener Erfahrung, speziell nach der Durchsicht von fremden Code kann ich diese Aufassung nur teilen. Der Spagetti-Code entsteht meist aus dem einfachen Grund, das man drauflos proggt und dann erst nachdenkt. Irgendwo in der Mitte schlägt dann die Logik gnadenlos zu und es bleibt nur noch der "Notausstieg" per goto und ähnlichem. Und erzähle mir keiner, er wäre nicht gelegentlich versucht, sich auf diese Weise aus der Affäre zu ziehen.

Wie das allerdings zur Lesbarkeit beitragen soll, bleibt wohl dein Geheimnis. Das kenn ich aus BASIC-Zeiten anders. Lesbarkeit erzeugt man durch sprechende Variablen-Namen und Remarks, mit GOTO sicher nicht.

Ich hab selbst mal mit BASIC angefangen, da ging es nun garnicht anders. Ich habe 3 Kreuze gemacht, als es Turbo-PASCAL zu erschwinglichen Preisen gab. Endlich diesen Goto-Scheiß und die globalen Variablen weg...
Es gibt keinen schöneren Tag als den heutigen. Der gestrige ist vorbei und von den kommenden weiß man nicht was sie bringen.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:44 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