AGB  ·  Datenschutz  ·  Impressum  







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

Verzweigung

Ein Thema von bonanza · begonnen am 21. Sep 2006 · letzter Beitrag vom 21. Sep 2006
Antwort Antwort
bonanza

Registriert seit: 13. Sep 2005
134 Beiträge
 
RAD-Studio 2009 Arc
 
#1

Verzweigung

  Alt 21. Sep 2006, 19:52
hi,

ich muss für ein programm sozusagem eine wertetabelle realsisieren...

also wenn ich z.b. x und y eingebe, dann soll y' rauskommen....

wenn ich um das zu realisieren viele if abfragen machen würde, dann könnte es ja sein, dass mehrere aktionen hinteriander ausgeführt werden:

Delphi-Quellcode:
if (LE = 'h') and (zustand = 1) then zustand := 2;
if (LE = 'h') and (zustand = 2) then zustand := 5;
if (LE = 'h') and (zustand = 3) then zustand := 2;
if (LE = 'h') and (zustand = 4) then zustand := 5;
if (LE = 'h') and (zustand = 5) then zustand := 5;

if (LE = 'a') and (zustand = 1) then zustand := 5;
if (LE = 'a') and (zustand = 2) then zustand := 3;
if (LE = 'a') and (zustand = 3) then zustand := 5;
if (LE = 'a') and (zustand = 4) then zustand := 5;
if (LE = 'a') and (zustand = 5) then zustand := 5;

if (LE = '!') and (zustand = 1) then zustand := 5;
if (LE = '!') and (zustand = 2) then zustand := 5;
if (LE = '!') and (zustand = 3) then zustand := 4;
if (LE = '!') and (zustand = 4) then zustand := 5;
if (LE = '!') and (zustand = 5) then zustand := 5;
Wie kann ich das verhindern ?
  Mit Zitat antworten Zitat
1ceman

Registriert seit: 16. Dez 2005
Ort: Odenthal
134 Beiträge
 
Delphi 6 Personal
 
#2

Re: Verzweigung

  Alt 21. Sep 2006, 19:54
Also falls ich die Frage richtig verstanden habe, dann sollte dir "Else" helfen

If (...) and (...) Then
Else If (...) and (...) Then
Else usw.
Roman
  Mit Zitat antworten Zitat
Nicolai1234

Registriert seit: 21. Feb 2004
1.008 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Verzweigung

  Alt 21. Sep 2006, 19:59
Als eine einfache Optimierung könntest du das auch wie folgt schreiben
Delphi-Quellcode:
if (LE = 'h') then
   begin
   case zustand of
     1: ...
     2: ...
     3: ...
     4: ...
     5: ...
   end;
   end;
Das würde das ganze etwas verkürzen.
  Mit Zitat antworten Zitat
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#4

Re: Verzweigung

  Alt 21. Sep 2006, 20:30
Zitat von Nicolai1605:
Als eine einfache Optimierung könntest du das auch wie folgt schreiben
Delphi-Quellcode:
if (LE = 'h') then
   begin
   case zustand of
     1: ...
     2: ...
     3: ...
     4: ...
     5: ...
   end;
   end;
Das würde das ganze etwas verkürzen.
In dem Beispiel geht es noch kürzer:

Delphi-Quellcode:
if (LE = 'h') then
   case zustand of
     1, 3 : zustand := 2;
     else zustand := 5;
   end;
Gruß Der Unwissende
  Mit Zitat antworten Zitat
Nicolai1234

Registriert seit: 21. Feb 2004
1.008 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Verzweigung

  Alt 21. Sep 2006, 20:58
Ja, das ist dann noch besser. Man geht auch gleich der Problematik aus dem Weg, die die ursprüngliche Frage aufwarf.
  Mit Zitat antworten Zitat
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#6

Re: Verzweigung

  Alt 21. Sep 2006, 21:06
Zitat von Nicolai1605:
Man geht auch gleich der Problematik aus dem Weg, die die ursprüngliche Frage aufwarf.
In wie weit? Ich meine auch in deinem Code würde man nie in mehr als eine Anweisung springen. Das ist aber auch gerade der Grund, warum case nur ordinale Typen akzeptiert. Anders als beim normalen if wird hier (imho) nicht die Bedingung geprüft, sondern direkt die Ansprungadresse aus dem Wert gewählt. Das ganze ist dann halt deutlich effizienter als eine if Abfrage.
Trotzdem sollte man immer der Lesbarkeit den Vorzug geben. Ich habe nur gezeigt dass es kürzer möglich ist, schon allein über das Lesbarer und/oder besser könnte man sich dann streiten. Und wegen ein paar microsekunden optimierung oder eben nicht, darauf sollte es dann nie ankommen (wer merkt dass schon?)
  Mit Zitat antworten Zitat
Antwort Antwort


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 03:59 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