• 1
  • 2
2022-07-05, 22:15
  #13
Medlem
Som jag frstr det har du fem stycken nstlade while-slingor, och du vill avbryta alla fem efter en viss tid. Jag hade nog gjort s hr:


Kod:
startaklockan();
while (villkor fr slinga 1)
{
   while(villkor fr slinga 2)
   {
      while(villkor fr slinga 3)
      {
         while(villkor fr slinga 4)
         {
         while(villkor fr slinga 5)
            {
               doStuff();
               if(kollaKlockan()>tidsgrnsen)
               continue;
            }
      if(kollaKlockan()>tidsgrnsen)
       continue;
      }
      if(kollaKlockan()>tidsgrnsen)
    continue;
     }
   if(kollaKlockan()>tidsgrnsen)
    continue;
   }
if(kollaKlockan()>tidsgrnsen)
 continue;
}

I koden ovan r funktionen startaKlockan till fr att lsa av systemklockan nr du startar programmet, och funktionen kollaKlockan r till fr att kolla hur mycket tid som har gtt sedan klockan startades.
Citera
2022-07-05, 22:50
  #14
Medlem
SvenHelsings avatar
Citat:
Ursprungligen postat av xpqr12345
Som jag frstr det har du fem stycken nstlade while-slingor, och du vill avbryta alla fem efter en viss tid. Jag hade nog gjort s hr:


Kod:
startaklockan();
while (villkor fr slinga 1)
{
   while(villkor fr slinga 2)
   {
      while(villkor fr slinga 3)
      {
         while(villkor fr slinga 4)
         {
         while(villkor fr slinga 5)
            {
               doStuff();
               if(kollaKlockan()>tidsgrnsen)
               continue;
            }
      if(kollaKlockan()>tidsgrnsen)
       continue;
      }
      if(kollaKlockan()>tidsgrnsen)
    continue;
     }
   if(kollaKlockan()>tidsgrnsen)
    continue;
   }
if(kollaKlockan()>tidsgrnsen)
 continue;
}

I koden ovan r funktionen startaKlockan till fr att lsa av systemklockan nr du startar programmet, och funktionen kollaKlockan r till fr att kolla hur mycket tid som har gtt sedan klockan startades.
Ugh, vad plottrigt. Jag hade anvnt goto fr att ta mig ur en nstlad loop. Eller exceptions. Eller bryta ut till funktioner.
Citera
2022-07-05, 23:04
  #15
Medlem
Citat:
Ursprungligen postat av SvenHelsing
Ugh, vad plottrigt. Jag hade anvnt goto fr att ta mig ur en nstlad loop. Eller exceptions. Eller bryta ut till funktioner.
trevligt fr dig, men nu lser jag frsta veckan p nn sommarkurs p distans s det spelar ingen roll hur det ser ut s lnge det funkar, enl lraren sjlv
Citera
2022-07-05, 23:05
  #16
Medlem
Citat:
Ursprungligen postat av xpqr12345
Som jag frstr det har du fem stycken nstlade while-slingor, och du vill avbryta alla fem efter en viss tid. Jag hade nog gjort s hr:


Kod:
startaklockan();
while (villkor fr slinga 1)
{
   while(villkor fr slinga 2)
   {
      while(villkor fr slinga 3)
      {
         while(villkor fr slinga 4)
         {
         while(villkor fr slinga 5)
            {
               doStuff();
               if(kollaKlockan()>tidsgrnsen)
               continue;
            }
      if(kollaKlockan()>tidsgrnsen)
       continue;
      }
      if(kollaKlockan()>tidsgrnsen)
    continue;
     }
   if(kollaKlockan()>tidsgrnsen)
    continue;
   }
if(kollaKlockan()>tidsgrnsen)
 continue;
}

I koden ovan r funktionen startaKlockan till fr att lsa av systemklockan nr du startar programmet, och funktionen kollaKlockan r till fr att kolla hur mycket tid som har gtt sedan klockan startades.
japp ungefr s, fast jag anvnder inte nstlade, de r 5 separata while loopar
Citera
2022-07-05, 23:07
  #17
Medlem
SvenHelsings avatar
Citat:
Ursprungligen postat av DrillBitTTT
trevligt fr dig, men nu lser jag frsta veckan p nn sommarkurs p distans s det spelar ingen roll hur det ser ut s lnge det funkar, enl lraren sjlv
Helvete till att vara otrevlig nr du fr gratis hjlp.
Citera
2022-07-06, 03:30
  #18
Medlem
tnems avatar
Citat:
Ursprungligen postat av SvenHelsing
Ugh, vad plottrigt. Jag hade anvnt goto fr att ta mig ur en nstlad loop. Eller exceptions. Eller bryta ut funktioner.
Att lgg till det tille while-vilkoret borde vl var det bsta p hans niv?

Citat:
Ursprungligen postat av DrillBitTTT
trevligt fr dig, men nu lser jag frsta veckan p nn sommarkurs p distans s det spelar ingen roll hur det ser ut s lnge det funkar, enl lraren sjlv

Lgg till IF-villkoret i while-vilkoret med hjlp av &&).
Citera
2022-07-07, 03:30
  #19
Medlem
Citat:
Ursprungligen postat av SvenHelsing
Ugh, vad plottrigt. Jag hade anvnt goto fr att ta mig ur en nstlad loop. Eller exceptions. Eller bryta ut till funktioner.

Den allmnna uppfattningen r den att exceptions ska bara anvndas vid exceptionella tillfllen. De r inte tnkta att styra programmet i stort. Ett exempel p en exception r division med noll. Och syftet r det att f till en snygg felhantering, en elegant exit, som kan anropa alla stdauppfunktioner som behvs mm.
Och dessutom f en uppgift om var det gick snett.

Det anses dlig programmeringsteknik att lta mngder med exceptionsanrop styra hela fldet.

Fr stora program med hundratals loopar s brukar de flesta allokera en timer som aktiveras d och d.
D stter man den att peka p funktionen HandleTimerEvent().
HandleTimerEvent kan d stta en (global) flagga bool terminateprogram.
Denna flagga kollas d och d i dina loopar, tex i den frsta raden:
while (villkor fr slinga 1)
som blir till:
while (villkor fr slinga 1 && !terminateprogram)
{
while(villkor fr slinga 2 && !terminateprogram)
{
while(villkor fr slinga 3 && !terminateprogram)
{
while(villkor fr slinga 4 && !terminateprogram)
{
while(villkor fr slinga 5 && !terminateprogram)


I och med att terminateprogram stts till true ifall timereventet exekveras s kommer alla looparna att avslutas.
Timern r mycket anvndbar fr d slipper man alla anrop till att kolla klockan.
S gott som alla Windowsprogram som har djupa strukturer med mnga och stora if, while- satser nvnder Timer eventet.

Man kan i och fr sig lta HandleTimerEvent() skta all uppstdning, flushing av filbuffers och filstngning och deallkolering av minne mm, och sedan avsluta programmet sjlvt, med tex exit().
Dock s kan man frlora viktig debuginformation om man ville analysera den i efterskott.
Men det finns vgar runt detta ocks.

Skriver du i Linux s br du se till att terstlla tex att stdin och stdout terkopplas tillbaks
till det aktiva terminalfnstret
Citera
  • 1
  • 2

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in