Avatar billede glenn007 Nybegynder
12. februar 2009 - 20:45 Der er 24 kommentarer

vedr. BREAK command

Skal lige have helt på det rene.

når jeg har min

public void blabla()
{
if (dit)
{ kode ; break;    }

if (dat)
{  kode ; break;  }

if (dyt)
{ kode ; break;    }

if (båt)
{ kode ; break;    }

}




er det så korrekt forstået at HVIS den første if sætning kaster en BREAK;  så læses resten af  blabla() if sætningerne slet ikke ???

skal bare være sikker i min forståelse af denne basale ting
Avatar billede arne_v Ekspert
12. februar 2009 - 20:48 #1
Nej men ja.

break hopper ud af kontol strukturer som du beskriver men kan mig bekendt ikke hoppe ud af en metode (det bruger du return til).
Avatar billede arne_v Ekspert
12. februar 2009 - 20:48 #2
Avatar billede arne_v Ekspert
12. februar 2009 - 20:54 #3
Hvis det havde vaeret en loop havde det virket - med metode skal du bruge return.
Avatar billede kalp Novice
12. februar 2009 - 21:32 #4
Du kan skrive return; istedet for break, men du burde egentlig bare lave en "switch" eller tilføje et par "else" til din kode.

sådan kan du også springe kode blokke over;)
Avatar billede glenn007 Nybegynder
12. februar 2009 - 22:53 #5
de vil sige jeg burde kunne gøre sådan her og hvis første if er sand fyrer den break af og smutter helt ud af min while uden at køre de andre if´er.

public void blabla()
{
bool positiv = false;
do
{ // start do klammer
      if (dit)
      { kode ; break;    }

      if (dat)
      {  kode ; break;  }

      if (dyt)
      { kode ; break;    }

      if (båt)
      { kode ; break;    }

      }

}// slut do klammer
while (positiv)
Avatar billede softspot Forsker
12. februar 2009 - 22:55 #6
Næh, vel snarere:

public void blabla()
{
if (dit)
{ kode ; return;    }

if (dat)
{  kode ; return;  }

if (dyt)
{ kode ; return;    }

if (båt)
{ kode ; return;    }

}
Avatar billede softspot Forsker
12. februar 2009 - 23:00 #7
Men hvis du har noget kode efter dine if-sætninger som skal køres efter den rigtige if-sætning er udført, så er det som kalp skriver, nok en else if du skal bruge:

public void blabla()
{
  if (dit)
  { kode ;    }
  else if (dat)
  {  kode ;  }
  else if (dyt)
  { kode ;    }
  else if (båt)
  { kode ;    }

  noget_mere_kode;
}
Avatar billede softspot Forsker
12. februar 2009 - 23:00 #8
kalp >> din hund er for fed! altså på den fede måde... :D
Avatar billede arne_v Ekspert
12. februar 2009 - 23:01 #9
Det er valid syntax og har den semantik du beskriver.

Hvorvidt det er den bedste loesning til et konkret problem er en anden sag.
Avatar billede softspot Forsker
12. februar 2009 - 23:09 #10
arne_v >> Ja, det afhænger vel af hvilket konkret problem der skal løses...?
Avatar billede glenn007 Nybegynder
12. februar 2009 - 23:10 #11
hvad med goto statements,  er det for gammel dags

kom lige til at tænke på at den jo egentlig også nok ville være effketiv og simpel at benytte.


if (yes)
{
kode;
goto end }



end :
Avatar billede softspot Forsker
12. februar 2009 - 23:12 #12
Der er vist ikke ret mange programmører med respekt for sig selv der har anbefalet brugen af goto i sprog der er på et højere niveau end assembler... så det vil jeg heller ikke :)
Avatar billede glenn007 Nybegynder
12. februar 2009 - 23:12 #13
umiddelbart søger jeg blot en løsning på at springe en masse if sætninger over som der jo ikke er grund til at læse hvis den finder sit "kald" i en af de første....  dvs simpelthen sparer resurcer.
Avatar billede softspot Forsker
12. februar 2009 - 23:12 #14
...ikke de seneste 20 år i det mindste.
Avatar billede glenn007 Nybegynder
12. februar 2009 - 23:14 #15
mht. GOTO   

hehe okey, men så bare lige noget jeg genkendte fra det gamle basic og tænkte at det nok var som en gammel volvo.....  virker altid... ikke til at slå ihjel, som man siger
Avatar billede softspot Forsker
12. februar 2009 - 23:16 #16
Det afhænger altså af hvilken situation du skal gøre det i, så der kan nok ikke gives et entydigt svar på det grundlag du har skitseret her. Der findes forgreninger, løkker og diverse afarter af disse og hver især kan benytte forskellige midler til at komme videre i programflowet (break, continue, return og der findes sikkert andre).
Avatar billede softspot Forsker
12. februar 2009 - 23:20 #17
NB: continue springer i en løkke til næste iteration, men er altså også en måde at springer over resten af kodelinierne inde i løkken - så det er ikke en måde at komme ud af løkken på.
Avatar billede kalp Novice
13. februar 2009 - 09:42 #18
softspot #8 :> Den skulle være klar til, at gå igennem en finanskrise:D

glen007 #0:>

følgende kode gør hvad du vil have - men du bør stadig benytte en "else if" struktur.
eller måske mere en "switch" da den netop benytter sig af "break" commando'en.
men det kommer lidt an på hvordan din betingelse ser ud.

public void blabla()
{
while(true){
if (dit)
{ kode ; break;    }

if (dat)
{  kode ; break;  }

if (dyt)
{ kode ; break;    }

if (båt)
{ kode ; break;    }
}
}
Avatar billede kalp Novice
13. februar 2009 - 09:47 #19
ps. jeg ville nok slutte den while med en break; uden nogen betingelse hvis du er usikker på om der kan være situationer hvor ingen af dine "if" statements opfylder dit kriterie.
Avatar billede softspot Forsker
13. februar 2009 - 11:51 #20
At bruge en løkke til at håndtere den slags, virker på mig bare lidt "konstrueret".

Når nu der er andre måder at håndtere sagen på, så er der ikke nogen grund til at indføre mere kompleksitet i koden end allerhøjst nødvendigt...
Avatar billede kalp Novice
13. februar 2009 - 12:07 #21
#20 >> enig. skriver netop han bør overveje en af de to andre muligheder jeg har nævnt.

men da han virker stædig efter benyttelsen af "break" med "if" så har han fået koden til det og han må selv vurdere hvad han helst vil benytte i sit projekt:)

indtil videre har vi nævnt "return;", "else if" og "switch".
Avatar billede softspot Forsker
13. februar 2009 - 13:06 #22
kalp >> sorry - det var ikke rettet mod din kommentar, men snarere et forsøg på at overbevise glenn007 om (som du også gør :-)), at der findes mere egnede metoder til at styre den slags flow.
Avatar billede glenn007 Nybegynder
28. februar 2009 - 10:12 #23
softspot, syns du skal have point for denne,

Men generelt en meget intrersant tråd syns jeg det blev. Fik meget input.

Gider du smide et svar. Det er vist på tide jeg får lukket her :)
Avatar billede softspot Forsker
28. februar 2009 - 15:57 #24
Svar! :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester