CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
SITEMAP
Audiobooks by Valerio Di Stefano: Single Download - Complete Download [TAR] [WIM] [ZIP] [RAR] - Alphabetical Download  [TAR] [WIM] [ZIP] [RAR] - Download Instructions

Make a donation: IBAN: IT36M0708677020000000008016 - BIC/SWIFT:  ICRAITRRU60 - VALERIO DI STEFANO or
Privacy Policy Cookie Policy Terms and Conditions
Control flow - Wikipedia

Control flow

Control flow is een begrip uit computerprogrammatie. Het slaat op de (niet-lineaire)volgorde van uitvoering van de instructies in een programma. Control flow wordt meestal bepaald door het gebruik van controlestructuren zoals loops (while, for) en beslissingsstructuren(if, case). In talen met staartrecursie is nog een andere controle structuur mogelijk, namelijk het opnieuw oproepen van de originele functie waardoor loops gevormd worden. In oudere talen wordt vaak ook een goto instructie gevonden.

Inhoud

[bewerk] leuk om te weten

Bij de één van de eerste assembler talen werd control flow uitsluitend gedaan door middel van een speciale test instructie. Afhankelijk van het resultaat van deze test instructie werd de volgende instructie overgeslagen of uitgevoerd.

Gebruikelijk was om dan de volgende instructie een jump instructie te laten zijn.

[bewerk] labels en goto

De meest elementaire form van control flow id het gebruik van goto in combinatie met een if statement. hierbij wordt meestal een label gebruikt om aan te geven waarheen gesprongen moet worden.

Hoewel op deze manier alle verderop genoemde vormen van flow-control kunnen worden verwezenlijkt, wordt deze in de meeste programmeertalen niet gebruikt, of wordt het gebruik ontraden, vanwege de slechte programma structuur die dit oplevert.

[bewerk] controle structuren

Alle programmeertalen behalve smaltalk kennen controle structuren.

Hierbij wordt een blok van statements (uitvoeringsblok ) gecontroleerd door een simpele structuur die voor of om dit uitvoeringsblok is geplaatst. Deze controle houdt in dat gestuurd wordt of, en zo ja hoe vaak het uitvoeringsblok wordt uitgevoerd.

Een controle structuur wordt altijd begonnen met een controle sleutel woord, meestal gevolgd door een controle expressie.

Voorbeelden van deze sleutelwoorden zijn: for, while, if, switch en case

hoe het einde van het uitvoeringsblok wordt aangegeven is verschillend voor verschillende talen.

  • geen specifiek sleutelwoord aan het eind van het blok, maar een afbakening van het blok:
    • in C, C++, C#, java en javascript wordt het blok omsloten door haken {...}, of, in geval van een enkele statement mogen zelfs deze haken ontbreken.
    • In pascal en oudere algol-dialecten wordt begin...end gebruikt.
    • In PLM wordt DO..END gebruikt.
  • specifiek sleutelwoord aan het eind:
    • In latere algol dialecten wordt het sleutelwoord achterwaards gebruikt: if...fi of case...esac
    • Fortran, Visual Basic, Ada gebruiken end + het sleutelwoord: if...end if

In principe zijn alle controle structuren onder te verdelen in:

  • keuze structuren, hierbij wordt het uitvoeringsblok niet of wel doorlopen (dus 0 of 1 keer), afhankelijk van de controle expressie.
  • loops, hierbij kan het uitvoeringsblok meermalen worden doorlopen.

[bewerk] keuze structuren

[bewerk] test

Deze structuur vindt men in alle programmeertalen. Afhankelijk van de conditie wordt het uitvoeringsblok uitgevoerd. Vaak ziet deze er als volgt uit:

if (conditie)
{
    ...
}

Verder is er vaak een alternatief uitvoeringsblok voor wanneer niet aan de conditie wordt voldaan:

if (conditie)
{
    ...
}
else
{
    ...
}

Ook zien we vaak dat ook nog op een tweede (en volgende ) conditie getest kan worden, met bijbehorende uitvoeringsblokken:

if (conditie1)
{
    ...
}
elseif (conditie2)
{
    ...
}
else
{
    ...
}

[bewerk] keuze

In veel talen is het ook mogelijk om op basis van 1 getal éen van de vele uitvoeringsblokken te selecteren:

switch(waarde)
{
case 1: // uitvoeringsblok 1
   ...
case 2: // uitvoeringsblok 2
   ...
case 3: // uitvoeringsblok 3
   ...
case 4: // uitvoeringsblok 4
   ...
case 5: // uitvoeringsblok 5
   ...
default:
}

[bewerk] loops

In een loop wordt een uitvoeringsblok meermalen doorlopen. Iedere keer dat deze doorlopen wordt, wordt een iteratie genoemd. De belangrijkste loops worden hieronder genoemd.

[bewerk] conditie gestuurde loops

Bij deze vorm van loops wordt zolang er aan een conditie wordt voldaan, het uitvoeringsblok uitgevoerd.

We komen dit tegen in de meeste moderne programmeertalen (in ieder geval in C, C++ C#, java, javascript, pascal ook in latere dialecten van algol) in de vorm:

while (conditie)
{
    ...
}

en

do 
{
    ...
} while (conditie);

Bij de laatste wordt het uitvoeringsblok altijd in ieder geval 1 keer doorlopen.

Bij oudere talen kom je ook tegen: repeat ... until conditie

[bewerk] teller gestuurde loops

Deze loops zijn bedoeld om het uitvoeringsblok een vooraf ingesteld aantal keren te doorlopen. Alle programmeertalen van de laatste 25 jaar kennen een dergelijke constructie, en zelfs een aantal assemblers (bv de 80386 assembler en hoger) hebben een dergelijke loop standaard ingebouwd.

Binnen de loop kan de teller nog gebruikt worden in de statements.

In C, C++, C#, java en javascript kan een teller gestuurde loop er zo uit zien:

for (i = 0; i < einde; i++)
{
    ...
}

In Basic zo:

For i = 1 To einde Step 1
    ...
Next i

[bewerk] verzameling gestuurde loops

Deze loops zijn bedoeld om het uitvoeringsblok voor ieder element (van een bepaald type) van een verzameling te doorlopen. We komen deze constructie tegen in C#, Visual Basic, Basic.NET, javascript, Smaltalk en Perl.

In C# kan zoiets er zo uitzien:

foreach (Kat k in MijnDierenVerzameling)
{
   ...
}

In Visual Basic en Basic.NET zal hetzelfde er als volgt uitzien.

Dim K As Kat
For Each K In MijnDierenVerzameling
   ...
Next K

Let er op dat MijnDierenVerzameling ook honden kan bevatten, maar deze worden niet aan het uitvoeringsblok aangeboden.

[bewerk] bijzondere mogelijkheden binnen een loop

Over het algemeen voorziet een progammeertaal in mogelijkheden om een loop voortijdig af te breken. Hiermee wordt dan de conditie die in de controle expressie zit gepasseerd. In veel talen kan dit met het break statement. Javascript heeft hierbij als enige taal de mogelijkheid om aan break een label mee te geven, zodat in éen keer meer geneste loops verlaten kunnen worden In basic wordt hiervoor Exit gevolgd door de loop soort gebruikt (bv Exit For).

Ook is het vaak mogelijk om voor deze keer de rest van het uitvoeringsblok over te slaan, en gelijk door te gaan met de volgende iteratie. Hiervoor wordt vaak het continue statement gebruikt.

[bewerk] recursie als alternatief voor een loop

ALs een functie zichzelf herhaald aanroept, wordt dit recursie genoemd. Op deze manier zijn veel zaken die met een loop mogelijk zijn ook te realiseren.

Voorbeeld: De som van alle getallen tot getal

  1 + 2 + .... + getal

Voorbeeld van een recursieve functie, en een loop die hetzelfde doet

int TelOpTot(int getal)
{
   if (getal > 0)
   {
      return (getal + TelOpTot(getal - 1));
   }
   return 0;
}
int TelOpTot(int getal)
{
   int resultaat = 0
   while (getal > 0)
   {
      resultaat += getal;
      getal--;
   }
   return 0;
}
 
Static Wikipedia 2008 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2007 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2006 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Sub-domains

CDRoms - Magnatune - Librivox - Liber Liber - Encyclopaedia Britannica - Project Gutenberg - Wikipedia 2008 - Wikipedia 2007 - Wikipedia 2006 -

Other Domains

https://www.classicistranieri.it - https://www.ebooksgratis.com - https://www.gutenbergaustralia.com - https://www.englishwikipedia.com - https://www.wikipediazim.com - https://www.wikisourcezim.com - https://www.projectgutenberg.net - https://www.projectgutenberg.es - https://www.radioascolto.com - https://www.debitoformtivo.it - https://www.wikipediaforschools.org - https://www.projectgutenbergzim.com