Mitä silmukat ovat?
Silmukat sallivat ohjelman tietyn osan koodista suorittaa halutun määrän kertoja.
Tässä opetusohjelmassa aiomme nähdä silmukakonseptin PL / SQL: ssä ja ohjauksen kulun silmukoissa. Sinä tulet oppimaan-
- Johdanto silmukakonseptiin
- Silmukkaohjauslausekkeet
- Silmukatyypit PL / SQL: ssä
- Perussilmukka
- Silmukoiden merkitseminen
Johdanto silmukakonseptiin
Loops-käsite tarjoaa seuraavan edun koodauksessa.
- Koodin uudelleenkäyttö
- Pienennetty koodikoko
- Helppo ohjata
- Vähentynyt monimutkaisuus
Alla oleva kaavio näyttää silmukointikonseptin kuvallisella tavalla
Yllä olevassa kaaviossa silmukan kunto tarkistetaan, ja niin kauan kuin silmukan ehto täyttyy, suorituslohko suoritetaan.
Jokaisessa iteraatiossa silmukan laskurin muuttujan, joka tosiasiallisesti päättää silmukan ehdon, tulisi muuttua, jotta ohjaus poistuu silmukasta. Joissakin tapauksissa tämä silmukalaskurin muuttuja on inkrementti- / vähennysoperaattori ennalta määritetylle määrälle, ja joissakin tapauksissa se on hakuehto, joka jatkaa lohkon suorittamista, kunnes se tyydyttää sen.
Silmukkaohjauslausekkeet
Ennen silmukakonseptin oppimista on pakollinen oppia silmukanohjauslausekkeet. Silmukkaohjauslausekkeet ovat niitä, jotka tosiasiallisesti ohjaavat suorituksen kulkua silmukan sisällä. Alla on yksityiskohtainen kuvaus silmukan ohjauslausekkeista.
JATKAA
Tämä avainsana lähettää käskyn PL / SQL-moottorille, että aina kun PL / SQL-moottori kohtaa tämän avainsanan silmukan sisällä, se ohittaa jäljellä olevan koodin koodin suorituslohkossa ja seuraava iterointi alkaa välittömästi. Tätä käytetään pääasiassa, jos silmukan sisällä oleva koodi haluaa ohittaa tietyt iterointiarvot.
EXIT / EXIT WHIN
Tämä avainsana lähettää käskyn PL / SQL-moottorille, että aina kun PL / SQL-moottori kohtaa tämän avainsanan, se poistuu välittömästi nykyisestä silmukasta. Jos PL / SQL-moottori kohtaa EXIT: n sisäkkäisessä silmukassa, se tulee ulos silmukasta, jossa se on määritelty, ts. Sisäkkäisissä silmukoissa, jolloin EXIT: n antaminen sisäiseen silmukkaan, vain sulkee ohjauksen sisäisestä silmukasta, mutta ei ulommasta silmukasta. 'EXIT WHEN' -kohtaa seuraa lauseke, joka antaa Boolen tuloksen. Jos tulos on TOSI, ohjaus poistuu.
MENE
Tämä lause siirtää ohjausobjektin merkittyyn käskyyn ("GOTO
- Ohjaus voidaan siirtää vain alaohjelmien sisällä.
- Ohjausta ei voida siirtää poikkeuksen käsittelyosasta suoritusosaan
Tämän lauseen käyttöä ei suositella, ellei muita vaihtoehtoja ole, koska koodin hallinnan jäljitettävyys on ohjelmassa erittäin vaikeaa johtuen ohjauksen siirtämisestä osasta toiseen.
Silmukatyypit PL / SQL: ssä
PL / SQL tarjoaa seuraavat kolmen tyyppiset silmukat
- Perussilmukan lause
- Silmukka-lauseelle
- Vaikka silmukka-lause
Perussilmukka
Tämä silmukka-lause on yksinkertaisin silmukkarakenne PL / SQL: ssä. Suorituslohko alkaa avainsanalla 'LOOP' ja päättyy avainsanalla 'END LOOP'.
Poistumistilanne tulisi antaa tämän suorituslohkon sisällä, jotta ohjaus poistuu silmukasta.
Se tarvitsee EXIT-avainsanan nimenomaisesti suoritusosassa poistuakseen silmukasta.
LOOPSyntaksi Selitys:END LOOP;
- Edellä olevassa syntaksissa avainsana 'LOOP' merkitsee silmukan alkua ja 'END LOOP' silmukan loppua.
- Suorituslohko sisältää kaiken suoritettavan koodin, myös EXIT-ehdon.
- Suoritusosa voi sisältää minkä tahansa suorituslausekkeen.
Huomaa: Perussilmukan lause, jossa ei ole EXIT-avainsanaa, on ÄÄRITTÖMÄN LOOP, joka ei koskaan lopu.
Esimerkki 1 : Tässä esimerkissä aiomme tulostaa numeron 1: stä 5: een perussilmukan lauseen avulla. Tätä varten suoritamme seuraavan koodin.
DECLAREa NUMBER:=1;BEGINdbms_output.put_line('Program started.');LOOPdbms_output.put_line(a);a:=a+1;EXIT WHEN a>5;END LOOP;dbms_output.put_line('Program completed');END:/
Koodin selitys:
- Koodirivi 2 : Ilmoitetaan muuttuja 'a' NUMBER-tietotyypiksi ja alustetaan se arvolla '1'.
- Koodirivi 4 : Lausekkeen "Ohjelma aloitettu" tulostaminen.
- Koodirivi 5: Avainsana LOOP merkitsee silmukan alkua.
- Koodirivi 6: Tulostaa a-arvon.
- Koodirivi 7: Lisää a-arvon arvoa +1.
- Koodirivi 8: Tarkistaa, onko a: n arvo suurempi kuin 5.
- Koodirivi 9: Avainsana END LOOP merkitsee suorituslohkon loppua.
- Koodin riviltä 6 riville 8 jatketaan, kunnes 'a' saavuttaa arvon 6, kun ehto palauttaa TOSI ja ohjaus poistuu silmukasta.
- Koodirivi 10: Lausunnon "Ohjelma valmis" tulostaminen
Silmukoiden merkitseminen
PL / SQL: ssä silmukat voidaan merkitä. Etiketin tulisi olla "<<" ja ">>" välissä. Silmukoiden merkitseminen erityisesti sisäkkäisissä silmukakoodeissa lisää luettavuutta. Tunniste voidaan antaa EXIT-komennossa poistuaksesi kyseisestä silmukasta. Etiketin avulla ohjaus voidaan tehdä poistumaan sisäkkäisten silmukoiden ulommasta silmukasta mistä tahansa silmukan sisällä olevasta paikasta antamalla exit-komento, jota seuraa ulomman silmukan tarra.
<Syntaksi Selitys:>LOOP . < > LOOP --inner END LOOP; . END LOOP;
- Yllä olevassa syntaksissa ulostulosilmukassa on vielä yksi silmukka.
- '<
>' ja '< >' ovat näiden silmukoiden tunnisteet.
Esimerkki 1 : Tässä esimerkissä aiomme tulostaa numeron alkaen 1: stä käyttäen Basic loop -sovellusta. Jokainen numero tulostetaan niin monta kertaa kuin arvo. Sarjan yläraja on kiinteä ohjelman ilmoitusosassa. Oppikaa, kuinka voimme käyttää tarrakonseptia tämän saavuttamiseksi. Tätä varten suoritamme seuraavan koodin
DECLAREa NUMBER:=0;b NUMBER;upper-limit NUMBER :=4;BEGINdbms_output.put_line(‘Program started.' );«outerloop» LOOPa:=a+1;b:=l;«inner loop»LOOPEXIT outer_loop WHEN a > upper_limit;dbms_output.put_line(a);b:=b+l;EXIT inner_loop WHEN b>a;END LOOP;END LOOP;dbms_output.put_line('Program completed.');END;/
Koodin selitys:
- Koodirivi 2-3 : Ilmoitetaan muuttujat 'a' ja 'b' NUMBER-tietotyypiksi.
- Koodirivi 4 : Muuttujan 'upper_limit' ilmoittaminen tietotyypiksi 'NUMBER' arvolla '4'
- Koodirivi 6 : Lausekkeen "Ohjelma aloitettu" tulostaminen.
- Koodirivi 7: Ulkosilmukka on merkitty nimellä "external_loop"
- Koodirivi 9: A-arvon arvoa lisätään yhdellä.
- Koodirivi 11: Sisäinen silmukka on merkitty nimellä "inner_loop".
- Koodirivi 13: EXIT-ehto, joka tarkistaa, onko arvo 'a' suurempi kuin 'upper_limit'. Jos ei, niin se menee pidemmälle, muuten se poistuu ulommasta silmukasta suoraan.
- Koodirivi 14: b : n arvon tulostaminen.
- Koodirivi 15: Lisää b : n arvoa +1.
- Koodirivi 16: EXIT-ehto, joka tarkistaa, onko b: n arvo suurempi kuin a. Jos näin on, se sulkee ohjauksen sisäisestä silmukasta.
- Koodirivi 14: Lausunnon "Ohjelma valmis" tulostaminen
Yhteenveto
Silmukka | Perussilmukka |
POISTUMISEHDOT | Poistu kohdatessasi avainsanan 'EXIT' suoritusosassa |
Käyttö | Hyvä käyttää, kun poistuminen ei perustu mihinkään tiettyyn tilaan. |