Kontrolerklæringer i C, Del 1
velkommen til den næste rate i vores serie, Fundamentals of C.
Kontrolerklæringer gør det muligt for os at specificere strømmen af programkontrol; dvs.rækkefølgen, i hvilken instruktionerne i et program skal udføres. De gør det muligt at træffe beslutninger, udføre opgaver gentagne gange eller springe fra et afsnit af kode til et andet.
der er fire typer kontrolerklæringer i C:
- beslutningserklæringer
- Valgerklæringer
- Iterationserklæringer
- Jump-udsagn
Beslutningserklæringer: If-else-erklæringen
if-else-erklæringen bruges til at udføre en logisk test og derefter tage en af to mulige handlinger afhængigt af, hvad der er nødvendigt for at resultatet af testen (dvs.om resultatet er sandt eller falsk).
syntaks:
if (condition){ statements} else{ statements}
hvis betingelsen angivet i if-sætningen evalueres til sand, udføres udsagnene inde i if-blokken, og derefter overføres kontrolelementet til udsagnet umiddelbart efter if-blokken. Selvom betingelsen er falsk, og ingen anden blok er til stede, overføres kontrol til erklæringen umiddelbart efter if-blokken.
den anden del er kun nødvendig, hvis en bestemt sekvens af instruktioner skal udføres, hvis tilstanden evalueres til falsk. Det er vigtigt at bemærke, at betingelsen altid er specificeret i parentes, og at det er en god praksis at vedlægge udsagnene i If-blokken eller i else-blokken i seler, hvad enten det er en enkelt erklæring eller en sammensat erklæring.
følgende program kontrollerer, om det indtastede nummer er 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ølgende program sammenligner to strenge for at kontrollere, om de er ens eller ej.
#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; }
ovenstående program sammenligner to strenge for at kontrollere, om de er de samme eller ej. Funktionen strcmp
bruges til dette formål. Det er erklæret i string.h
filen som:
int strcmp(const char *s1, const char *s2);
den sammenligner strengen peget på af s1
til strengen peget på af s2
. Funktionen strcmp
returnerer et heltal større end, lig med eller mindre end nul, i overensstemmelse hermed, da strengen peget på med s1
er større end, lig med eller mindre end strengen peget på med s2
.
derfor i ovenstående program, hvis de to strenge a
og b
er ens , skal funktionen strcmp
returnere en 0. Hvis det returnerer en 0, strengene er de samme; ellers er de forskellige.
indlejrede if and if-else-udsagn
det er også muligt at indlejre eller indlejre if-else-udsagn i den anden. Nesting er nyttig i situationer, hvor et af flere forskellige handlingsforløb skal vælges.
det generelle format for en indlejret if-else-erklæring er:
if(condition1){// statement(s);}else if(condition2){//statement(s);}....else if (conditionN){//statement(s);}else{//statement(s);}
ovenstående kaldes også if-else stigen. Under udførelsen af en indlejret if-else-erklæring, så snart der opstår en betingelse, der evalueres til sand, vil udsagnene i forbindelse med den pågældende if-block blive udført, og resten af de indlejrede if-else-udsagn vil blive omgået. Hvis ingen af betingelserne er sande, udføres enten den sidste else-blok, eller hvis else-blokken er fraværende, overføres kontrollen til den næste instruktion, der er til stede umiddelbart efter else-if-stigen.
følgende program gør brug af den indlejrede if-else erklæring for at finde den største af tre tal.
#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; }
ovenstående program sammenligner tre heltalsmængder og udskriver den største. Den første if-sætning sammenligner værdierne a
og b
. Hvis a>b
er sandt, overføres programkontrol til If-else-sætningen indlejret i If-blokken, hvor b
sammenlignes med c
. Hvis b>c
også er sandt, udskrives værdien af a
; ellers sammenlignes værdien af c
og a
, og hvis c>a
er sand, udskrives værdien af c
. Herefter omgås resten af If-else stigen.
men hvis den første betingelse a>b
er falsk, overføres kontrollen direkte til den yderste ellers-hvis blok, hvor værdien b
sammenlignes med c
(som a
er ikke den største). Hvis b>c
er sand, udskrives værdien b
ellers udskrives værdien c
. Bemærk indlejring, brug af seler og indrykning. Alt dette er nødvendigt for at opretholde klarhed.
Valg Erklæring: Skift-case-sætningen
en skift-sætning bruges til valg af flere måder, der forgrenes i forskellige kodesegmenter baseret på værdien af en variabel eller et udtryk. Dette udtryk eller variabel skal være af heltal datatype.
syntaks:
switch (expression){ case value1: code segment1; break; case value2: code segment2; break;... case valueN: code segmentN; break; default: default code segment;}
værdien af dette udtryk genereres enten under programudførelse eller læses ind som brugerinput. Sagen, hvis værdi er den samme som udtrykket, vælges og udføres. Den valgfri standardetiket bruges til at angive det kodesegment, der skal udføres, når værdien af udtrykket ikke stemmer overens med nogen af sagsværdierne.
break
erklæringen er til stede i slutningen af hver sag. Hvis det ikke var tilfældet, ville udførelsen fortsætte ind i kodesegmentet i den næste sag uden engang at kontrollere sagsværdien. For eksempel antager en switch
sætning fem tilfælde, og værdien af den tredje sag svarer til værdien af udtryk. Hvis der ikke var nogen pauseerklæring i slutningen af den tredje sag, alle sager efter sag 3 ville også blive henrettet sammen med sag 3. Hvis pause er til stede, vælges og udføres kun den krævede sag; hvorefter kontrollen overføres til den næste erklæring umiddelbart efter omskifteropgørelsen. Der er ingen break
efter default
fordi efter standard tilfælde kontrollen vil enten måde blive overført til den næste sætning umiddelbart efter kontakten.
eksempel: et program til udskrivning af ugedagen.
#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; }
dette er et meget grundlæggende program, der forklarer arbejdet med omskifterkonstruktionen. Afhængigt af det nummer, der indtastes af brugeren, vælges og udføres den relevante sag. For eksempel, hvis brugerindgangen er 5, udføres sag 5. break
– erklæringen, der er til stede i tilfælde 5, sætter udførelsen af omskifteropgørelsen på pause efter sag 5, og kontrollen overføres til den næste erklæring efter kontakten, som er:
return 0;
det er også muligt at integrere sammensatte udsagn i tilfælde af en omskiftererklæring. Disse sammensatte udsagn kan indeholde kontrolstrukturer. Det er således også muligt at have en indlejret kontakt ved at indlejre den i en sag.
alle programmer skrevet ved hjælp af Skift-case-sætningen kan også skrives ved hjælp af If-else-sætningen. Det giver dog god programmeringsfølelse at bruge if-sætningen, når du skal tage nogle handlinger efter at have evalueret en simpel eller kompleks tilstand, som kan involvere en kombination af relationelle og logiske udtryk (f.eks. (if((a!=0)&&(b>5))
).
hvis du har brug for at vælge mellem en stor gruppe af værdier, vil en skiftesætning køre meget hurtigere end et sæt indlejrede ifs. Kontakten adskiller sig fra if I denne kontakt kan kun teste for lighed, mens if kan evaluere enhver form for boolsk udtryk.
skiftesætningen skal bruges, når man skal foretage et valg fra et givet sæt valg. Skift case-sætningen bruges generelt i menubaserede applikationer. Den mest almindelige anvendelse af en skift-sag erklæring er i datahåndtering eller filbehandling. Det meste af filhåndtering involverer de fælles funktioner: oprettelse af en fil, tilføjelse af poster, sletning af poster, opdatering af poster, udskrivning af hele filen eller nogle selektive poster. Følgende program giver en ide om, hvordan omskifterens case-erklæring kan bruges i datahåndtering. Det involverer ikke koden til filbehandling, da vi kun kan diskutere filhåndtering i C, efter at vi har lært avancerede begreber som pointers, strukturer og fagforeninger.
eksempel: en erklæring om skiftesag, der bruges i datafilbehandling.
#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; }
ovenstående eksempel på omskiftercase involverer generelt indlejring af omskiftercase-konstruktionen inde i en iterationskonstruktion som do-mens. I vores næste indlæg vil vi diskutere disse iterationserklæringer.
Leave a Reply