Toistorakenne

Toistorakenne eli silmukka on ohjelmointikielten rakenne, joka toistaa annettua ohjelmakoodia, kunnes annettu ehtolause ei enää evaluoidu todeksi.[1] Toistorakenteen sisältämää lohkoa voidaan toistaa tietyn määrän kertoja, kerran jokaiselle kokoelman jäsenelle, kunnes jokin ehto on täytetty tai määräämättömäksi ajaksi. Silmukat ovat kätevä työkalu ohjelmoinnissa, sillä niillä voidaan toistaa automaattisesti tiettyä komentoa tarvittavan monta kertaa vaivatta Boolen algebran mukaisesti.

Useat ohjelmointikielet tukevat eri muotoja, mutta eivät välttämättä jokaista muotoa. Sivunkuvauskielet kuten HTML ja kyselykielet kuten SQL eivät yleensä tue toistorakenteita.

While-rakenne

while- rakenteessa ehtolause tarkistetaan jo ennen lohkon suorittamista ja tästä syystä tämä ohjausrakenne tunnetaan usein myös nimellä pre-test loop (karkeasti käännettynä: esitestisilmukka).

Java-kielessä, C-kielessä ja C++ -kielessä while-silmukka kirjoitetaan seuraavasti:

while (toistoehto) {
    /* toistettava ohjelmakoodi */
}

Python-kielessä taas seuraavasti:

while (toistoehto):
    #toistettava ohjelmakoodi

Python-kielessä ei ole erillisiä silmukan alku- eikä loppumerkkejä. Siksi sisennys eli rivien alussa olevat välilyönnit ovat erityisen tärkeitä.

Ruby-kielessä on until-rakenne, joka on käänteinen while-rakenteelle: lausekkeen ollessa tosi ja tämän vastakohtana lausekkeen ollessa epätosi.[2]

Do-while-silmukka

do-while-silmukka eroaa while -silmukasta siinä, että toistoehdon tarkastus tehdään vasta silmukan rungon suorittamisen jälkeen, jolloin annettu runko tulee aina suoritetuksi vähintään kerran. Koska do-while-silmukka tarkistaa toistoehdon vasta rungon suorittamisen jälkeen, tunnetaan tämä ohjausrakenne myös nimellä post-test loop (karkeasti käännettynä: testin jälkeinen silmukka).

do {
    /* toistettava koodi */
} while (toistoehto);

For-silmukka

for-silmukka on samankaltainen kuin while, mutta sen arvot voidaan alustaa suoraan argumenteissa. for-silmukka toimii suorittamalla koodin osan toistuvasti kunnes tietty ehto on täytetty. Esimerkiksi Python-kielessä for-silmukkaan voidaan myös yhdistää range - komento jolloin muuttuja käy läpi haluttuja lukuja. Silmukan määrittelyssä annetaan kolmessa kohdassa alustustoimenpiteet, tarkistusehdot ja toiston jälkeen suoritettava toiminto, joita voi kielestä riippuen olla useita joka kohdassa. Tavanomainen määrittely näyttää samanlaiselta C, C++ ja Java kielissä:

for (int i = 0; i < 10; i++) {
    //toistettava koodi
}

Ehtoja voidaan yhdistää eri kentissä seuraavasti:

int a, b;
for (a = 0, b = 9; a < 10 && b >= 0; a++, --b)
{
    printf("a: %d, b: %d\n", a, b);
}

Foreach-silmukka

foreach-silmukka toistaa silmukan runkoa, kunnes jokainen annetun kokoelman tietue on käsitelty. Foreach-rakenne piilottaa viittauksen taulukon indeksiin tai vastaavaan käsittelyn kannalta epäoleelliseen tietoon. Kokoelman on oltava yhteensopiva foreach-rakenteen kanssa (esim. Javan Collection, Rubyn enumerable). foreach-silmukkaa käytetään usein for-silmukan sijaan aika samalla tavalla. Eroavaisuutena foreach-silmukan ja muiden for-rakenteiden välillä on se, että foreach-silmukka ei yleensä sisällä mitään eksplisiittistä laskuria. Tämän silmukan toiminta on enemmän: "tee tämä kaikille tässä kokoelmassa", entä "tee tämä x monta kertaa".

Seuraava Java-kielinen esimerkkiohjelma laskee kokonaislukutaulukon alkioiden summan - Javassa avainsana on ei ole foreach, vaan for:

int sum(int[] a) {
    int result = 0;
    for (int i : a)
        result += i;
    return result;
}

Python:

#Luodaan lista.
lista = ["1. arvo", "2. arvo", "3. arvo"]
#silmukka:
for x in lista:
            print (x);

C++ tukee foreach-silmukkaa C++11:stä lähtien rajatun alueen for-silmukkana (engl. range-based for loop):

#include <iostream>

int main()
{
    int myint[] = {1, 2, 3, 4, 5};

    for (int i : myint)
    {
        std::cout << i << '\n';
    }
}

Toistorakenteet kääntäjissä

Ohjelmointikielen kääntäjät voivat suorittaa erilaisia optimointeja, joissa suoritusaikaa pienennetään. Esimerkkeinä toistorakenteen purkaminen (engl. unrolling).[3]

Katso myös

Englanninkielisiä artikkeleita aiheesta

Lähteet

  1. http://cs.stadia.fi/~silander/ohjelmointi/c_opas-Mik_auml-2.html (Arkistoitu – Internet Archive)
  2. Public Instance Methods ruby-doc.org. Viitattu 18.6.2022. (englanniksi)
  3. Loop Optimizations: how does the compiler do it? johnysswlab.com. 19.9.2021. Viitattu 19.6.2022. (englanniksi)

Read other articles:

1842 1848 Élections législatives françaises de 1846 458 députés 1er août 1846 Type d’élection Élections législatives Corps électoral et résultats Votants 246 000 Doctrinaires – François Guizot Parti de la Résistance DoctrinairesCentre ministérielTiers parti Voix 155 718 63,32 %   5,4 Députés élus 290  24 Libéraux – Adolphe Thiers Parti du Mouvement Opposition dynastiqueCentre gaucheRépublicains Voix 90 282...

 

Coppa dei BalcaniSport Calcio CadenzaAnnuale StoriaFondazione1961 Soppressione1993-1994 Ultimo vincitore Samsunspor Record vittorie Beroe (4) Ultima edizioneCoppa dei Balcani 1993-1994 Modifica dati su Wikidata · Manuale La Coppa dei Balcani per club era un torneo internazionale di calcio disputato dalla stagione 1961 alla stagione 1993-94 e riservato ai club di Albania, Bulgaria, Grecia, Romania, Turchia e Jugoslavia. Indice 1 Storia 2 Albo d'oro 3 Partecipanti 4 Voci correla...

 

Roman province SiciliaΣικελίαProvince of the Roman Empire241 BC–476 ADThe province of Sicilia within the Roman Empire, c. 125 ADCapitalSyracusaeHistorical eraAntiquity• Established after the end of First Punic War 241 BC• Fall of the Western Roman Empire 476 AD Preceded by Succeeded by Ancient Carthage Kingdom of Syracuse Theme of Sicily Today part ofItalyMalta Sicilia (/sɪˈsɪliə/; Classical Latin: [sɪˈkɪ.li.a]; Ancient Greek: Σικελία, romanized:&#...

Columbia 1590 juta tahun yahg lalu. Columbia, dikenal juga dengan nama Nuna dan Hudsonland, merupakan salah satu superbenua purba. Superbenua ini dikemukakan pertama kali oleh J.J.W. Rogers dan M. Santosh (2002)[1] dan keberadaannya diperkirakan 1,8 sampai 1,5 miliar tahun yang lalu pada era Paleoproterozoikum. Ukuran dan lokasi Columbia diperkirakan membentang sepanjang 12.900 kilometer dari utara ke selatan, dan sekitar 4.800 kilometer di bagian yang paling luas. Pantai timur India ...

 

@009 film by Andrew Bujalski BeeswaxPromotional film posterDirected byAndrew BujalskiWritten byAndrew BujalskiProduced byDia SokolEthan VogtStarringTilly HatcherMaggie HatcherAlex KarpovskyCinematographyMatthias GrunskyEdited byAndrew BujalskiDistributed byThe Cinema GuildRelease date August 7, 2009 (2009-08-07) Running time100 minutesCountryUnited StatesLanguageEnglishBox office$46,590 Beeswax is a 2009 American mumblecore film written and directed by Andrew Bujalski. The film...

 

Синелобый амазон Научная классификация Домен:ЭукариотыЦарство:ЖивотныеПодцарство:ЭуметазоиБез ранга:Двусторонне-симметричныеБез ранга:ВторичноротыеТип:ХордовыеПодтип:ПозвоночныеИнфратип:ЧелюстноротыеНадкласс:ЧетвероногиеКлада:АмниотыКлада:ЗавропсидыКласс:Пт�...

Polish teen drama television series Absolute BeginnersNetflix posterPolishAbsolutni debiutanci Genre Teen drama Romantic drama Created by Nina Lewandowska Kamila Tarabura Written by Nina Lewandowska Kamila Tarabura Jędrzej Napiecek Directed by Kamila Tarabura Katarzyna Warzecha Starring Martyna Byczkowska Bartłomiej Deklewa Jan Sałasiński Paulina Krzyżańska Katarzyna Warnke Piotr Witkowski Anna Krotoska Andrzej Konopka Julian Świeżewski Country of originPolandOriginal languagePolishNo...

 

1950 Israeli law granting Jews the right to immigrate and gain Israeli citizenship This article is about the right of return in Israel. For similar laws in other countries, see Right of return. Part of a series onAliyah Concepts Promised Land Gathering of Israel Diaspora Negation Jews who remained in the Land of Israel Homeland for the Jewish people Zionism Jewish question Law of Return Pre-Modern Aliyah Return to Zion Old Yishuv Perushim Aliyah in modern times First Second during World War I...

 

LadroL'Uomo Ragno e il Ladro, disegni di John Romita Sr. UniversoUniverso Marvel Nome orig.Burglar Lingua orig.Inglese AutoriStan Lee Steve Ditko EditoreMarvel Comics 1ª app.agosto 1962 1ª app. inAmazing Fantasy (vol. 1[1]) n. 15 Editore it.Editoriale Corno 1ª app. it.30 aprile 1970 1ª app. it. inL'Uomo Ragno n. 1 Interpretato daMichael Papajohn [2] Leif Gantvoort [3] Caratteristiche immaginarieAlter egoDennis Carradine Specieumano SessoM...

1934 Merthyr by-election ← 1931 5 June 1934 1935 → Constituency of MerthyrTurnout81.1% ( 0.3%)   First party Second party   Lib Candidate S. O. Davies J. Victor Evans Party Labour Liberal Popular vote 18,645 10,376 Percentage 51.8 28.9 Swing N/A New   Third party Fourth party   ILP Candidate Campbell Stephen Wal Hannington Party Ind. Labour Party Communist Popular vote 3,508 3,409 Percentage 9.8 9.5 Swing 59.6% New MP before election R. C. ...

 

Article principal : Chef du gouvernement d'Andorre. Cet article dresse la liste des chefs du gouvernement d'Andorre (Cap de Govern d'Andorra) depuis la création de la fonction le 8 janvier 1982. Liste des titulaires N° Portrait Titulaire(Naissance-mort) Élection Mandat Partipolitique Début Fin Durée Période pré-constitutionnelle (1982-1993) 1 Òscar Ribas Reig(1936-2020) 1981 8 janvier 1982 21 mai 1984 2 ans, 4 mois et 13 jours PNL 2 Josep Pintat-Solans(1925-2007) 1...

 

Chronologies Données clés 1684 1685 1686  1687  1688 1689 1690Décennies :1650 1660 1670  1680  1690 1700 1710Siècles :XVe XVIe  XVIIe  XVIIIe XIXeMillénaires :-Ier Ier  IIe  IIIe Chronologies thématiques Art Architecture, Arts plastiques (Dessin, Gravure, Peinture et Sculpture), (), Littérature (), Musique (Classique) et Théâtre   Ingénierie (), Architecture et ()   Politique Droit et ()   Religion (,)   Sci...

Франц Саксен-Кобург-Заальфельдскийнем. Franz von Sachsen-Coburg-Saalfeld герцог Саксен-Кобург-Заальфельдский 8 сентября 1800 — 9 декабря 1806 Предшественник Эрнст Фридрих Саксен-Кобург-Заальфельдский Преемник Эрнст I Саксен-Кобург-Заальфельдский Рождение 15 июля 1750(1750-07-15)Кобург, Сакс...

 

South Korean badminton player In this Korean name, the family name is Choi. Badminton playerChoi Sol-gyu최솔규Personal informationCountrySouth KoreaBorn (1995-08-05) 5 August 1995 (age 28)Seoul, South KoreaHeight1.81 m (5 ft 11 in)HandednessRightMen's & mixed doublesHighest ranking7 (MD with Seo Seung-jae, 19 November 2019) 11 (XD with Chae Yoo-jung, 21 September 2017)Current ranking40 (MD with Kim Won-ho 16 April 2024) Medal record Men's badminton Representing...

 

Artikel ini sebatang kara, artinya tidak ada artikel lain yang memiliki pranala balik ke halaman ini.Bantulah menambah pranala ke artikel ini dari artikel yang berhubungan atau coba peralatan pencari pranala.Tag ini diberikan pada Februari 2023. Raphael Spiegel Informasi pribadiNama lengkap Raphael Simon Spiegel[1]Tanggal lahir 19 Desember 1992 (umur 31)Tempat lahir Rüttenen, SwissTinggi 1,96 m (6 ft 5 in)Posisi bermain Penjaga gawangInformasi klubKlub saat ini Ca...

State highway in Pennsylvania, US Pennsylvania Route 940Route informationMaintained by PennDOTLength43.208 mi[1] (69.537 km)Existed1928–presentMajor junctionsWest end PA 309 in HazletonMajor intersections I-80 in White Haven PA 437 in White Haven PA 534 in East Side I-80 / I-476 / Penna Turnpike NE Extension near Hickory Run State Park PA 115 in Blakeslee PA 423 in Pocono Pines I-380 in Pocono Pines PA 314 in Pocono Pines P...

 

WrestleMania 37Lucha libre profesionalLema Back in Business!¡De vuelta al negocio![1]​[2]​Tema Save Your Tears de The WeekndInformaciónPromoción WWEMarca RawSmackDownTemática Save Your Tears de The WeekndPatrocinador SnickersFecha 10 y 11 de abril de 2021Asistentes 25 675 (ambos días)[3]​Recinto Raymond James StadiumLugar Tampa, FloridaCronología de WWE WrestleMania 36 WrestleMania 37 Wrestlemania 38 Cronología de WWE Network NXT TakeOver: Stand & Deliver Wre...

 

Cristoforo Caetanivescovo della Chiesa cattolica  Incarichi ricoperti Vescovo titolare di Laodicea di Frigia Vescovo di Foligno  Nato1586 ad Anagni Nominato vescovo10 maggio 1623 da papa Gregorio XV Consacrato vescovo21 maggio 1623 dal cardinale Antonio Caetani Deceduto22 ottobre 1642 a Foligno   Manuale Cristoforo Caetani (Anagni, 1586 – Foligno, 22 ottobre 1642) è stato un vescovo cattolico italiano. Indice 1 Biografia 2 Genealogia episcopale 3 Bibliografia 4 Collegamenti ...

Pour les articles homonymes, voir Herero. Hereroland 1970–1989 Carte de localisation du Hereroland.Informations générales Statut République Capitale Okahandja Monnaie Rand (ZAR) Fuseau horaire UTC+1 (CET) Domaine internet .na Indicatif téléphonique +264 Démographie Population environ 44 000 (1964) Superficie Superficie 58 997 km2 Histoire et événements 26 juillet 1970 Autonomie mai 1989 Réintégration Entités précédentes : Sud-Ouest africain Entités suivant...

 

No debe confundirse con cristianismo. El triunfo de la Iglesia: La Iglesia triunfante y la Iglesia militante, de Andrea di Bonaiuto (1365-1367), en la Cappella Spagnuolo, o Guidalotti de Santa Maria Novella, Florencia. Cristiandad (del latín christianitas) es un concepto polisémico, que puede definirse de varias maneras o aludiendo a distintos ámbitos:[1]​ El conjunto de cristianos, o cristiandad entendida como la comunidad de los creyentes o Iglesia militante.[2]​ Paul Veyne f...