Break, continue ja exit

Tätä kysyn

Selittäkääs vähän tarkemmin sanojen break, continue ja exit käyttö ja niiden erot.

5

525

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • Moikka v^in

      Pienellä yksinkertaisella ohjelmalla se selviää.
      Alla oleva ohjelman pätkä on hyvin yksinkertainen ja pitäisi olla jokaiselle ohjelmoijalle ymmärrettävää. Mutta jos jää kysyttävää niin kysy ihmeessä!

      Luo uusi sovellus. Laita tyhjälle Form:lle Button-, Label- ja kaksi CheckBox-komponenttia.
      Sitten generoit Button-komponentille OnClick tapahtuma jota täydennetään alla olevaksi:


      function testi( breaktesti, exittesti :boolean ):string;
      var
         i : integer;
      begin
         result := '';
         i := 0;
         repeat
            inc( i );
            if i in [ 4..7, 11 ] then continue;
            if exittesti and ( i = 9 ) then exit;
            if breaktesti and ( i = 10 ) then break;
            result := result ' ' IntToStr( i );
         until i > 12;
         while i > 9 do
            begin
               dec( i );
               result := result ' ' IntToStr( i );
            end;
      end;

      procedure TForm1.Button1Click(Sender: TObject);
      var
         s : string;
      begin
         s := testi( CheckBox1.Checked, CheckBox2.Checked );
         Label1.Caption := s;
      end;

      • Näin vain on

        Eräs perujuttu on myös se että käytetään const-sanaa
        aliohjelman tai funktion otsikossa silloin kun
        esitellyn muuttujan arvoa ei aliohjelmassa muuteta.

        Kas näin:

        function testi(const breaktesti,exittesti:boolean):string;


    • suositus

      Onko tämän päivän suosituksena se että silmukasta on monta poistumisreittiä?

      • Delphiguru

        "Onko tämän päivän suosituksena se että silmukasta on monta poistumisreittiä?"

        Itse en ole koskaan suosituksista välittänyt.

        Mutta huolellinen kannattaa silti olla.

        Jos siis silmukasta tms. poistutaan kesken (Break, Continue, exit), niin kannattaa varmistaa, ettei mitään tärkeää jää hoitamatta.

        Oikein käytettynä esim. try - finally - end on varsin pätevä rakenne, ja esim. resurssien vapauttamisen varmistamiseksi hyvä keino.

        Jos ei tuo kelpaa niin 2. vaihtoehto on periyttää luokat vaikkapa TInterfacedObject -luokasta ja sitten määritellä oliomuuttujan sijasta interface -tyyppinen muuttuja, ja laittaa

        TInterfacenToteuttavaOlio.Create:lla luodun olion viite tuohon.

        Kun viimeinen viittaus tuollaiseen poistuu, niin olio tässä tapauksessa vapautetaan automaattisesti ja kokonaisuudessaan heti ( ei siis mene mihinkään roskienkeruulistaan kuten esim. Javassa tapahtuu ).

        Jos et täysin ymmärrä asiaa, teepä näin:

        1. Tee Delphillä pieni testiohjelma

        2. Aja sitä askeltaen läpi Delphin integroidulla debuggerilla.

        3. Askeltaessasi tutki muuttujien arvoja ja tarvittaessa lue myös assemblerkielen tasolla, millaista konekielikoodia Delphi on lähdekoodistasi tuottanut.

        Tällöin opit lisää siitä, miten Delphi toimii "konepellin alla".

        Samalla voit tarkistaa, että esim. muistiviittaukset vapautetaan asianmukaisesti, poistuttiinpa silmukasta tms. millä tavalla tahansa.


    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Nurmossa kuoli 2 Lasta..

      Autokolarissa. Näin kertovat iltapäivälehdet juuri nyt. 22.11. Ja aina ennen Joulua näitä tulee. . .
      Seinäjoki
      79
      4468
    2. Vanhalle ukon rähjälle

      Satutit mua niin paljon kun erottiin. Oletko todella niin itsekäs että kuvittelet että huolisin sut kaiken tapahtuneen
      Ikävä
      50
      3105
    3. Maisa on SALAKUVATTU huumepoliisinsa kanssa!

      https://www.seiska.fi/vain-seiskassa/ensimmainen-yhteiskuva-maisa-torpan-ja-poliisikullan-lahiorakkaus-roihuaa/1525663
      Kotimaiset julkkisjuorut
      135
      3091
    4. Mikko Koivu yrittää pestä mustan valkoiseksi

      Ilmeisesti huomannut, että Helenan tukijoukot kasvaa kasvamistaan. Riistakamera paljasti hiljattain kylmän totuuden Mi
      Kotimaiset julkkisjuorut
      400
      2179
    5. Purra hermostui A-studiossa

      Purra huusi ja tärisi A-studiossa 21.11.-24. Ei kykene asialliseen keskusteluun.
      Perussuomalaiset
      219
      1296
    6. Ensitreffit Hai rehellisenä - Tämä intiimiyden muoto puuttui suhteesta Annan kanssa: "Meillä ei..."

      Hai ja Anna eivät jatkaneet avioliittoaan Ensitreffit-sarjassa. Olisiko mielestäsi tällä parilla ollut mahdollisuus aito
      Ensitreffit alttarilla
      11
      1203
    7. Mitä sanoisit

      Ihastukselle, jos näkisitte?
      Tunteet
      76
      1197
    8. Joel Harkimo seuraa Martina Aitolehden jalanjälkiä!

      Oho, aikamoinen yllätys, että Joel Jolle Harkimo on lähtenyt Iholla-ohjelmaan. Tässähän hän seuraa mm. Martina Aitolehde
      Suomalaiset julkkikset
      30
      1064
    9. Miten meinasit

      Suhtautua minuun kun taas kohdataan?
      Ikävä
      63
      1056
    10. Miksi pankkitunnuksilla kaikkialle

      Miksi rahaliikenteen palveluiden tunnukset vaaditaan miltei kaikkeen yleiseen asiointiin Suomessa? Kenen etu on se, että
      Maailman menoa
      111
      983
    Aihe