Inhoudsopgave:
Video: C - Flow Control 2024
Deel van C ++ voor Dummy's Cheat Sheet
De volgende C ++ structuren sturen de stroom van controle door het programma. Als je een ervaren programmeur bent, zal de functie van deze structuren bekend zijn van andere talen.
IF
De volgende opdracht evalueert booleanExpression. Als het evalueert naar waar, wordt de besturing doorgegeven aan expressies1. Zo niet, dan gaat de besturing over naar de optionele uitdrukkingen2.
if (booleanExpression) {expressions1;} [else {expressions2;}]
WHILE
De volgende opdracht evalueert booleanExpression. Als dit als waar wordt geëvalueerd, gaat de besturing naar uitdrukkingen over. Aan het einde van het blok gaat de besturing terug naar booleanExpression en wordt het proces herhaald.
while (booleanExpression) {expressions;}
DO … WHILE
De volgende opdracht voert uitdrukkingen uit. Vervolgens evalueert het booleanExpression. Als dit als waar wordt geëvalueerd, keert de besturing terug naar de top van de lus en wordt het proces herhaald.
doen {expressies;} while (booleanExpression);
VOOR
De volgende opdracht voert initCommand uit, wat een uitdrukking of een variabelenverklaring kan zijn. Vervolgens evalueert het boolExpression. Als dit wordt geëvalueerd als waar, wordt de controle doorgegeven aan expressies1. Als boolExpression false is, wordt de controle doorgegeven aan de eerste instructie na de gesloten accolade van de for-lus. Nadat de expressies zijn voltooid, gaat de besturing over naar de uitdrukking in loopExpression voordat wordt teruggegaan naar boolExpression om het proces te herhalen. Als initCommand een nieuwe variabele declareert, gaat deze buiten scope zodra de controle buiten de lus komt.
voor (initCommand; boolExpression; loopExpression) {expressies;}
VOOR (ELK)
De 2011-norm introduceert een tweede vorm van for-lus die soms bekend staat als "voor elke" omdat van zijn gelijkenis met de foreach gevonden in sommige andere talen. In dit formulier neemt de variabele gedeclareerd in declaratie de waarde van het eerste lid van de lijst aan en wordt het uitdrukkingenblok uitgevoerd. Wanneer voltooid, neemt de gedeclareerde variabele de tweede waarde van de lijst aan en voert deze opnieuw expressies uit. Dit proces wordt herhaald voor elke waarde in de lijst.
voor (verklaring: lijst) {expressies;}
SCHAKEL
De volgende opdracht evalueert integerExpression en vergelijkt het resultaat met elk van de weergegeven gevallen. Als blijkt dat de waarde gelijk is aan een van de constante integraalwaarden, val1, val2, enz., Gaat de besturing naar de overeenkomstige reeks expressies en gaat deze verder totdat het besturingselement een pauze ontmoet.Als expressie niet gelijk is aan een van de waarden, wordt de controle doorgegeven aan de expressiesN volgende standaard.
switch (integerExpression) {case val1: expressions1; breken; case val2: expressions2; breken; [standaard: expressionsN;]}
BREAK, DOORGAAN, GOTO
A gaat de besturing door naar het einde van de gesloten accolade van een van de looping-besturingselementen. Hierdoor gaat de lus door met de volgende iteratie. De volgende lus verwerkt bijvoorbeeld priemgetallen tussen 1 en 20:
voor (int i = 0; i <20; i ++) {// als het nummer geen priemgetal is … if (! IsPrime (i)) {/ / … sla over naar de volgende waarde van i ga verder;} // doorgaan met verwerken}
Een pauze geeft de controle door aan de eerste instructie na de gesloten accolade van een van de lusopdrachten. Dit zorgt ervoor dat de uitvoering de lus onmiddellijk verlaat. Het volgende leest tekens uit tot het einde van het bestand wordt aangetroffen:
while (true) {// lees een regel uit invoerinvoer invoer >> regel; // als er een fout of einde van het bestand optreedt … if (cin. eof () || cin. fail ()) {// … verlaat dan de loop break;} // verwerk de regel}
Een go to label geeft de controle door aan het meegeleverde label. Het breekvoorbeeld hierboven zou als volgt kunnen zijn geschreven:
while (true) {// lees een regel uit invoerinvoer invoer >> regel; // als er een fout of een einde van het bestand optreedt … if (cin. eof () || cin. fail ()) {// … verlaat dan de lus ga naar exitLabel;} // verwerk de regel} exitLabel: // controle gaat verder