Kontrolluttalanden i C, Del 1

Välkommen till nästa del i vår serie, Fundamentals of C.

Kontrolluttalanden gör det möjligt för oss att specificera flödet av programkontroll; dvs i vilken ordning instruktionerna i ett program måste utföras. De gör det möjligt att fatta beslut, att utföra uppgifter upprepade gånger eller att hoppa från en sektion av kod till en annan.

det finns fyra typer av kontrolluttalanden i C:

  1. beslutsfattande uttalanden
  2. urval uttalanden
  3. Iteration uttalanden
  4. hoppa uttalanden

beslutsfattande uttalande: if-else uttalande

if-else uttalande används för att utföra ett logiskt test och sedan ta en av två möjliga åtgärder beroende på resultatet av testet (dvs. om resultatet är sant eller falskt).

Syntax:

if (condition){ statements} else{ statements}

om villkoret som anges i if-satsen utvärderas till true, utförs uttalandena i if-blocket och sedan överförs kontrollen till uttalandet omedelbart efter if-blocket. Även om villkoret är falskt och inget annat block finns, överförs kontrollen till uttalandet omedelbart efter if-blocket.

den andra delen krävs endast om en viss sekvens av instruktioner måste utföras om villkoret utvärderas till falskt. Det är viktigt att notera att villkoret alltid anges inom parentes och att det är en bra praxis att bifoga uttalandena i if-blocket eller i else-blocket i hängslen, oavsett om det är ett enda uttalande eller ett sammansatt uttalande.

följande program kontrollerar om det angivna numret är positivt eller negativt.

#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; }

följande program jämför två strängar för att kontrollera om de är lika eller inte.

#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; }

ovanstående program jämför två strängar för att kontrollera om de är desamma eller inte. Funktionen strcmp används för detta ändamål. Det deklareras i string.h – filen som:

int strcmp(const char *s1, const char *s2);

den jämför strängen pekad med s1med strängen pekad med s2. Funktionen strcmp returnerar ett heltal större än, lika med eller mindre än noll, följaktligen eftersom strängen pekad med s1 är större än, lika med eller mindre än strängen pekad med s2.

därför i ovanstående program, om de två strängarna a och b är lika , ska funktionen strcmp returnera en 0. Om den returnerar en 0 är strängarna desamma; annars är de olika.

kapslade if-Och if-else-satser

det är också möjligt att bädda in eller häcka if-else-satser inom varandra. Häckning är användbar i situationer där en av flera olika handlingsplaner måste väljas.

det allmänna formatet för ett kapslat if-else-uttalande är:

if(condition1){// statement(s);}else if(condition2){//statement(s);}....else if (conditionN){//statement(s);}else{//statement(s);}

ovanstående kallas också if-else-stegen. Under utförandet av ett kapslat if-else-uttalande, så snart ett villkor påträffas som utvärderas till true, kommer de uttalanden som är associerade med det specifika if-blocket att utföras och resten av de kapslade if-else-uttalandena kommer att kringgås. Om inget av villkoren är sanna, antingen det sista else-blocket exekveras eller om else-blocket saknas, överförs kontrollen till nästa instruktion som finns omedelbart efter else-if-stegen.

följande program använder sig av det kapslade if-else-uttalandet för att hitta det största av tre siffror.

#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; }

ovanstående program jämför tre heltalskvantiteter och skriver ut det största. Den första if-satsen jämför värdena a och b. Om a>b är sant överförs programkontrollen till If-else-uttalandet kapslat inuti if-blocket, där bjämförs med c. Om b>cockså är sant skrivs värdet på a ut; annars jämförs värdet på c och a och om c>a är sant skrivs värdet på c ut. Efter detta kringgås resten av if-else-stegen.

om det första villkoret a>b är falskt överförs kontrollen direkt till det yttersta else-if-blocket, där värdet b jämförs med c (eftersom a inte är störst). Om b>c är sant skrivs värdet på b annars skrivs värdet på c ut. Notera häckningen, användningen av hängslen och indragningen. Allt detta krävs för att upprätthålla tydlighet.

Urvalsförklaring: Switch-case-satsen

en switch-sats används för flera vägval som kommer att förgrena sig till olika kodsegment baserat på värdet på en variabel eller ett uttryck. Detta uttryck eller variabel måste vara av heltalsdatatyp.

Syntax:

switch (expression){ case value1: code segment1; break; case value2: code segment2; break;... case valueN: code segmentN; break; default: default code segment;}

värdet på detta uttryck genereras antingen under programkörning eller läses in som användarinmatning. Fallet vars värde är detsamma som uttrycket är valt och exekverat. Den valfria standardetiketten används för att ange det kodsegment som ska köras när värdet på uttrycket inte matchar något av kundcasegenskaperna.

break uttalandet finns i slutet av varje fall. Om det inte var så skulle körningen fortsätta in i kodsegmentet i nästa fall utan att ens kontrollera fallvärdet. Anta till exempel att ett switch – uttalande har fem fall och värdet av det tredje fallet matchar värdet av uttryck. Om ingen paus uttalande var närvarande i slutet av det tredje fallet, alla fall efter fall 3 skulle också få verkställas tillsammans med fall 3. Om paus är närvarande väljs och exekveras endast det önskade fallet; varefter kontrollen överförs till nästa uttalande omedelbart efter omkopplingsuttalandet. Det finns ingen break efter default eftersom efter standardfallet kommer kontrollen att överföras till nästa uttalande omedelbart efter omkopplaren.

exempel: ett program för att skriva ut veckodag.

#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; }

Detta är ett mycket grundläggande program som förklarar arbetet med switch-case-konstruktionen. Beroende på det nummer som användaren har angett väljs och körs lämpligt fall. Till exempel, om användarinmatningen är 5, kommer Fall 5 att utföras. break – uttalandet som finns i fall 5 kommer att pausa utförandet av switch-uttalandet efter Fall 5 och kontrollen kommer att överföras till nästa uttalande efter switch, vilket är:

return 0;

det är också möjligt att bädda in sammansatta uttalanden i fallet med ett switch-uttalande. Dessa sammansatta uttalanden kan innehålla kontrollstrukturer. Således är det också möjligt att ha en kapslad omkopplare genom att bädda in den i ett fodral.

alla program som skrivs med switch-case-uttalandet kan också skrivas med If-else-uttalandet. Det är dock bra programmeringskänsla att använda if-uttalandet när du behöver vidta några åtgärder efter att ha utvärderat ett enkelt eller komplext tillstånd som kan innebära en kombination av relationella och logiska uttryck (t.ex. (if((a!=0)&&(b>5))).

om du behöver välja bland en stor grupp av värden, kommer en switch uttalande köra mycket snabbare än en uppsättning kapslade ifs. Omkopplaren skiljer sig från if I den omkopplaren kan bara testa för jämlikhet, medan if kan utvärdera någon typ av booleskt uttryck.

omkopplingsuttalandet måste användas när man behöver göra ett val från en viss uppsättning val. Switch case-uttalandet används vanligtvis i menybaserade applikationer. Den vanligaste användningen av ett switch-case-uttalande är i datahantering eller filbehandling. De flesta av filhantering innebär gemensamma funktioner: skapa en fil, lägga till poster, ta bort poster, uppdatera poster, skriva ut hela filen eller några selektiva poster. Följande program ger en uppfattning om hur switch case-uttalandet kan användas vid datahantering. Det innebär inte koden för filbehandling som vi kan diskutera filhantering i C först efter att vi har lärt oss avancerade begrepp som pekare, strukturer och fackföreningar.

exempel: en switch fall uttalande som används i datafil bearbetning.

#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; }

ovanstående exempel på switch-case innebär i allmänhet nestning av switch-case-konstruktionen inuti en iterationskonstruktion som do-while. I vårt nex-inlägg kommer vi att diskutera dessa iterationsuttalanden.

Leave a Reply