Control Statements in C, Deel 1
Welkom bij de volgende aflevering in onze serie, Fundamentals of C.
Control statements stellen ons in staat de stroom van programmabesturing te specificeren; dat wil zeggen, de volgorde waarin de instructies in een programma moeten worden uitgevoerd. Ze maken het mogelijk om beslissingen te nemen, om taken herhaaldelijk uit te voeren of om van het ene gedeelte van de code naar het andere te springen.
er zijn vier soorten controleverklaringen in C:
- Besluitvorming jaarrekening
- Selectie jaarrekening
- Iteratie jaarrekening
- Spring jaarrekening
Besluitvorming Verklaring: de if-else Statement
De if-else-statement wordt gebruikt voor het uitvoeren van een logische test en vervolgens een van de twee mogelijke acties afhankelijk van de uitkomst van de test (dat wil zeggen of de uitkomst juist of onjuist).
syntaxis:
if (condition){ statements} else{ statements}
als de voorwaarde in het if-statement evalueert naar true, worden de statements in het if-block uitgevoerd en wordt de controle direct na het if-block naar het statement overgedragen. Zelfs als de conditie onwaar is en er geen else-block aanwezig is, wordt de controle direct na het if-block overgedragen aan de statement.
het else-deel is alleen vereist als een bepaalde reeks instructies moet worden uitgevoerd als de conditie evalueert tot false. Het is belangrijk op te merken dat de voorwaarde altijd tussen haakjes wordt gespecificeerd en dat het een goede gewoonte is om de verklaringen in het if-blok of in het else-blok in accolades in te sluiten, of het nu een enkele verklaring of een samengestelde verklaring is.
het volgende programma controleert of het ingevoerde nummer positief of negatief is.
#include<stdio.h>int main( ) { int a; printf("n Enter a number:"); scanf("%d", &a); if(a>0) { printf( "n The number %d is positive.",a); } else { printf("n The number %d is negative.",a); } return 0; }
het volgende programma vergelijkt twee tekenreeksen om te controleren of ze gelijk zijn of niet.
#include <stdio.h>#include <string.h>int main( ) { char a , b; printf("n Enter the first string:"); scanf("%s",a); printf("n Enter the second string:"); scanf("%s",b); if((strcmp(a,b)==0)) { printf("nStrings are the same"); } else { printf("nStrings are different"); } return 0; }
het bovenstaande programma vergelijkt twee strings om te controleren of ze hetzelfde zijn of niet. De functie strcmp
wordt hiervoor gebruikt. Het wordt gedeclareerd in het string.h
bestand als:
int strcmp(const char *s1, const char *s2);
het vergelijkt de tekenreeks waarnaar wordt verwezen met s1
met de tekenreeks waarnaar wordt verwezen met s2
. De functie strcmp
geeft een geheel getal groter dan, gelijk aan, of kleiner dan nul terug, dienovereenkomstig als de tekenreeks waarnaar wordt verwezen met s1
groter is dan, gelijk aan, of kleiner dan de tekenreeks waarnaar wordt verwezen met s2
.
daarom moet in het bovenstaande programma, als de twee strings a
en b
gelijk zijn , de functie strcmp
een 0 teruggeven. Als het een 0 geeft, zijn de strings hetzelfde; anders zijn ze anders.
geneste if En if-else Statements
het is ook mogelijk om if-else statements in elkaar te verankeren of te nestelen. Nestelen is nuttig in situaties waar een van de verschillende manieren van handelen moet worden geselecteerd.
het algemene formaat van een geneste if-else statement is:
if(condition1){// statement(s);}else if(condition2){//statement(s);}....else if (conditionN){//statement(s);}else{//statement(s);}
het bovenstaande wordt ook wel de if-else ladder genoemd. Tijdens de uitvoering van een geneste if-else statement, zodra een voorwaarde wordt aangetroffen die evalueert naar true, zullen de statements geassocieerd met dat specifieke if-block worden uitgevoerd en de rest van de geneste if-else statements zullen worden omzeild. Als geen van beide voorwaarden waar is, wordt ofwel het laatste else-blok uitgevoerd of als het else-blok afwezig is, wordt de controle direct na de Else-if-ladder overgebracht naar de volgende instructie.
het volgende programma maakt gebruik van het geneste if-else statement om de grootste van drie getallen te vinden.
#include<stdio.h>int main( ) { int a, b,c; a=6,b= 5, c=10; if(a>b) { if(b>c) { printf("nGreatest is: " , a); } else if(c>a) { printf("nGreatest is: ", c); } } else if(b>c) //outermost if-else block { printf("nGreatest is: " , b); } else { printf( "nGreatest is: " , c); } return 0; }
het bovenstaande programma vergelijkt drie geheel getalgrootheden en drukt de grootste af. Het eerste if statement vergelijkt de waarden van a
en b
. Als a>b
waar is, wordt het programmabeheer overgebracht naar het if-else statement genest in het if-blok, waar b
wordt vergeleken met c
. Als b>c
ook Waar is, wordt de waarde a
afgedrukt; anders wordt de waarde c
en a
vergeleken en als c>a
waar is, wordt de waarde c
afgedrukt. Hierna wordt de rest van de if-else ladder omzeild.
echter, als de eerste voorwaarde a>b
onwaar is, wordt de controle direct overgebracht naar het buitenste else-if-blok, waar de waarde van b
wordt vergeleken met c
(aangezien a
niet de grootste is). Indien b>c
waar is, wordt de waarde b
afgedrukt anders wordt de waarde c
afgedrukt. Let op de nesting, het gebruik van accolades en de inspringing. Dit alles is nodig om de duidelijkheid te behouden.
Selectiestatement: het switch-case Statement
een switch statement wordt gebruikt voor meerdere weg selecties die zullen vertakken in verschillende codesegmenten op basis van de waarde van een variabele of expressie. Deze expressie of variabele moet van het integer gegevenstype zijn.
syntaxis:
switch (expression){ case value1: code segment1; break; case value2: code segment2; break;... case valueN: code segmentN; break; default: default code segment;}
de waarde van deze expressie wordt gegenereerd tijdens het uitvoeren van het programma of gelezen als input van de gebruiker. De case waarvan de waarde dezelfde is als die van de expressie wordt geselecteerd en uitgevoerd. Het optionele standaardlabel wordt gebruikt om het uit te voeren codesegment op te geven wanneer de waarde van de expressie niet overeenkomt met een van de hoofdletters.
de verklaring break
staat aan het einde van elke zaak. Als het niet zo was, zou de uitvoering doorgaan in het codesegment van de volgende zaak zonder zelfs de waarde van de zaak te controleren. Stel bijvoorbeeld dat een switch
statement vijf gevallen heeft en dat de waarde van het derde geval overeenkomt met de waarde van de expressie. Als er aan het einde van de derde zaak geen break statement aanwezig was, zouden alle zaken na zaak 3 ook samen met zaak 3 worden uitgevoerd. Als pauze aanwezig is wordt alleen het vereiste geval geselecteerd en uitgevoerd; waarna de controle direct na het schakelstatement wordt overgebracht naar het volgende statement. Er is geen break
na default
omdat na het standaard geval het besturingselement in beide richtingen direct na de switch naar het volgende statement wordt overgebracht.
voorbeeld: Een programma om de dag van de week af te drukken.
#include<stdio.h>int main( ) { int day; printf("nEnter the number of the day:"); scanf("%d",&day); switch(day) { case 1: printf("Sunday"); break; case 2: printf("Monday"); break; case 3: printf("Tuesday"); break; case 4: printf("Wednesday"); break; case 5: printf("Thursday"); break; case 6: printf("Friday"); break; case 7: printf("Saturday"); break; default: printf("Invalid choice"); } return 0; }
dit is een zeer basic programma dat de werking van de switch-case constructie verklaart. Afhankelijk van het door de gebruiker ingevoerde nummer, wordt het juiste geval geselecteerd en uitgevoerd. Bijvoorbeeld, als de input van de gebruiker 5 is, dan zal case 5 worden uitgevoerd. Het break
statement aanwezig in geval 5 zal de uitvoering van de switch statement pauzeren na geval 5 en de controle zal worden overgebracht naar de volgende statement na switch, die is:
return 0;
het is ook mogelijk om samengestelde verklaringen in te sluiten in de behuizing van een switch statement. Deze samengestelde verklaringen kunnen controlestructuren bevatten. Het is dus ook mogelijk om een geneste schakelaar te hebben door deze in een behuizing in te bedden.
alle programma ‘ s die geschreven zijn met het switch-case statement kunnen ook geschreven worden met het if-else statement. Het is echter zinvol om het if statement te gebruiken wanneer je actie moet ondernemen na het evalueren van een eenvoudige of complexe conditie die een combinatie van relationele en logische expressies kan omvatten (bijvoorbeeld (if((a!=0)&&(b>5))
).
als u een grote groep waarden moet selecteren, zal een switch statement veel sneller draaien dan een set geneste ifs. De switch verschilt van de if in die switch kan alleen testen voor gelijkheid, terwijl if elk type Booleaanse expressie kan evalueren.
het switch statement moet worden gebruikt wanneer men een keuze moet maken uit een bepaalde set keuzes. De switch case statement wordt over het algemeen gebruikt in menu-gebaseerde toepassingen. Het meest voorkomende gebruik van een switch-case statement is bij het verwerken van gegevens of het verwerken van bestanden. De meeste bestandsafhandeling omvat de gemeenschappelijke functies: een bestand maken, records toevoegen, records verwijderen, records bijwerken, het hele bestand of sommige selectieve records afdrukken. Het volgende programma geeft een idee van hoe de switch case verklaring kan worden gebruikt in data handling. Het gaat niet om de code voor het verwerken van bestanden, omdat we de behandeling van bestanden in C alleen kunnen bespreken nadat we geavanceerde concepten zoals pointers, structuren en vakbonden hebben geleerd.
voorbeeld: een switch-case-statement dat wordt gebruikt bij de verwerking van gegevensbestanden.
#include<stdio.h>int main() { //create file &set file pointer . int choice; printf("n Please select from the following options:"); printf("n 1. Add a record at the end of the file."); printf("n 2. Add a record at the beginning of the file:"); printf("n 3. Add a record after a particular record:"; printf("nPlease enter your choice:(1/2/3)?"); scanf("%d",&choice); switch(choice) { case 1: //code to add record at the end of the file break; case 2: //code to add record at the beginning of the file break; case 3: //code to add record after a particular record break; default: printf("n Wrong Choice"); } return 0; }
het bovenstaande voorbeeld van switch-case omvat over het algemeen het nesten van de switch-case-constructie binnen een iteratieconstructie zoals do-while. In onze nex-post zullen we deze iteratieverklaringen bespreken.
Leave a Reply