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

619

    Vastaukset 5

    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. Mikä sun salaisuus on,kun näytät niin nuorelta..

      Vaikka oot jo noin vanha!?
      Ikävä
      151
      2568
    2. MiltäKaivattusi

      Näyttää? !
      Ikävä
      56
      1109
    3. Perhoseni (miehelle)

      Miksi et usko, että mun rakkaus sinuun on aitoa ja vilpitöntä? Tai että se oli jo silloin? Miksi ajattelet, ettet ole r
      Ikävä
      160
      937
    4. Myönnetään, tunnen lämpimiä tunteita kohtaasi

      Vaikutat tosin liian hyvältä ollaksesi totta. Komeita miehiä on maailma pullollaan mutta sinussa on jotain.....
      Ikävä
      52
      808
    5. Mitä meidän välillämme

      On käynyt näiden vuosien aikana?
      Ikävä
      83
      777
    6. Kuollut teini Kajaanissa

      Kuulemma sellaista huhua liikkeessä?
      Kajaani
      4
      719
    7. Onko Sofia jälleen jätetty?

      Moni asia viittaisi siihen, että hän on jälleen sinkku.
      Kotimaiset julkkisjuorut
      170
      718
    8. Rekat seisovat dieselin hinnan takia . Ala ei kestä tällaista hintatasoa, sanoo yrittäjä .

      EU:n kallein diesel on kova paikka kuljetusalalle. Ajoja on jätetty ajamatta kannattavuus­ongelmien vuoksi, sanoo alan e
      Kajaani
      162
      664
    9. Olen tavattavissa

      tänään klo 17-02 siinä ravintolassa. Tulethan sinäkin?
      Ikävä
      53
      647
    10. Halaus juuri sinulle

      Kaikki järjestyy kyllä. Luota vain. ❤️🫶
      Ikävä
      59
      646
    11. Uskaltaisitko

      Tavata kaivattusi tässä tilanteessa?
      Ikävä
      67
      646
    12. Kuka se on

      Kuhmon komein aikamies?
      Kuhmo
      6
      634
    13. Totta on asia. Jeffrey Cohen on jättänyt Sofian.

      Vaimon viesti on paljastanut totuuden.
      Kotimaiset julkkisjuorut
      182
      615
    14. Mies, näetkö minut myös

      Seksuaalisena ihmisenä ja naisena? Haluatko minua seksuaalisesti? Vai olenko mielestäsi tyttönen?
      Ikävä
      21
      578
    15. Uskallatko paljastaa

      Millä nimellä löydyn puhelimestasi?
      Ikävä
      54
      568
    16. Voiko se ikinä toimia

      Voiko meistä ikinä tulla mitään? Näin kauan aikaa on kulunut ja mitään ei tapahdu... En usko, että sinä mietit minua het
      Ikävä
      32
      538
    17. Nainen, mitä mieltä olet kodittomista?

      Ja heistä jotka eivät kykene huolehtimaan asioistaan, itsestään eikä terveydestään? Miten heidän kanssaan tulisi toimia?
      Ikävä
      120
      534
    18. Kuinkahan monen

      Naisen puolisoa olet nainen vikitellyt ja eron aiheuttanut? Toivottavasti karma on ku*sut muroihisi useamman kuin kerran
      Ikävä
      66
      519
    19. Voin tulla

      Sisustamaan sulle 🤭
      Ikävä
      55
      508
    20. Meneekö unohtamis

      Projektisi hyvin??
      Ikävä
      34
      507
    Aihe