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

571

    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. Voiko normaali ihminen ryhtyä vasemmistolaiseksi?

      Tätä jäin pohdiskelemaan.
      Maailman menoa
      203
      4266
    2. SDP haluaa 40 000 nettomaahanmuuttajaa

      SDP:n Suunnanmuutos-vaihtoehtobudjetissa, käy ilmi, että demarit itse asiassa vaativat räjähdysmäistä ”työperäisen” maah
      Maailman menoa
      146
      3798
    3. Orpo: Velkajarrua vastustavaa puoluetta vaikea ajatella hallitukseen

      No Minja Koskelan kommunistipuolue jäi ulos tuosta. Kaikki eduskuntapuolueet vasemmistoliittoa lukuun ottamatta sopivat
      Maailman menoa
      137
      3261
    4. Hienoa! Eduskunta luopui käteisen käytöstä

      Nyt tuo sama muutos pitää saada myös muuhun yhteiskuntaan. Käteistähän ei tarvitse tänä päivänä enää kuin rikolliset.
      Maailman menoa
      52
      1638
    5. Ikävä sinua mies

      Vuosia kuluu, mutta tunteet ei ole hävinnyt. Tasoittuneet toki, kun ei olla nähty. Järki palannut päähän kuitenkin. Se i
      Ikävä
      19
      1538
    6. Mikä tämä henkilö mahtaa touhuta Parkanossa

      Kamalaa https://www.ylasatakunta.fi/teksti/pirkanmaan-karajaoikeus-vangitsi-koiran-tappamisesta-epaillyn-6.68.127794.b58
      Parkano
      34
      1490
    7. Sulla on avaimet ja keinot

      Jos haluat jatkaa tutustumista. Itse olen niin jäässä etten pysty tekemään enää mitään. Pidempi keppi johon on helpompi
      Ikävä
      25
      1395
    8. Orpo loukkaantui fasismiin viittaavasta sanavalinnasta

      Mutta miksi loukkaantui? Orpohan on tehnyt yhteistyötä fasistien kanssa jo vuonna 2019, siis jo neljä vuotta ennen loukk
      Maailman menoa
      27
      1351
    9. Kiinnostaa - ei kiinnosta - kiinnostaapas

      Selittäkää hämmentyneelle miksi miehiä ei ikinä kiinnosta silloin, kun sitä olisi itsekin kiinnostunut? Sitten kun siirt
      Sinkut
      117
      1165
    10. Martina haluaa Marbellaan

      Martinan tekisi mieli ottaa lennot Marbellaan, jossa näkisisi kauniita ja hyväntuulisia ihmisiä. No sitten pitää matkust
      Kotimaiset julkkisjuorut
      215
      1063
    Aihe