Kontroll Setninger I C, Del 1

Velkommen til neste avdrag i vår serie, Fundamentals Of C.

Kontroll setninger gjør oss i stand til å angi flyten av programkontroll; dvs.i hvilken rekkefølge instruksjonene i et program må utføres. De gjør det mulig å ta beslutninger, å utføre oppgaver gjentatte ganger eller å hoppe fra en del av koden til en annen.

det finnes fire typer kontrolluttrykk I C:

  1. decision making statements
  2. Selection statements
  3. Iteration statements
  4. Jump statements

Decision Making Statement: if-else-Setningen

if-else-setningen brukes til å utføre en logisk test og deretter utføre en av to mulige handlinger avhengig av resultatet av testen (dvs.om utfallet er sant eller falskt).

Syntaks:

if (condition){ statements} else{ statements}

hvis betingelsen som er angitt i if-setningen, evalueres til sann, utføres setningene i if-blokken, og deretter overføres kontrollen til setningen umiddelbart etter if-blokken. Selv om tilstanden er falsk og ingen annen blokk er tilstede, blir kontrollen overført til setningen umiddelbart etter if-blokken.

den andre delen er bare nødvendig hvis en bestemt instruksjonssekvens må utføres hvis tilstanden evalueres til falsk. Det er viktig å merke seg at betingelsen alltid er angitt i parentes, og at det er en god praksis å legge inn setningene i if-blokken eller i else-blokken i braces, enten det er en enkelt setning eller en sammensatt setning.

følgende program kontrollerer om det angitte tallet 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 strenger for å sjekke om de er like eller ikke.

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

ovennevnte program sammenligner to strenger for å sjekke om de er de samme eller ikke. Funksjonen strcmp brukes til dette formålet. Det er deklarert i filen string.h som:

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

den sammenligner strengen pekte på s1 til strengen pekte på s2. Funksjonen strcmp returnerer et heltall som er større enn, lik eller mindre enn null, tilsvarende som strengen pekte til med s1 er større enn, lik eller mindre enn strengen pekte til med s2.

derfor i det ovennevnte programmet, hvis de to strengene a og b er like , skal funksjonen strcmp returnere en 0. Hvis den returnerer en 0, er strengene de samme; ellers er de forskjellige.

Nestede if og if-else-Setninger

det er også mulig å bygge inn eller å neste if-else-setninger i den andre. Nesting er nyttig i situasjoner der en av flere ulike kurs av handlingen må velges.

det generelle formatet til en nestet if-else-setning er:

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

ovennevnte kalles også if-else-stigen. Under utførelsen av en nestet if-else-setning, så snart det oppstår en betingelse som evaluerer til sann, vil setningene som er knyttet til den aktuelle if-blokken, bli utført, og resten av de nestede if-else-setningene vil bli omgått. Hvis ingen av betingelsene er sanne, blir enten den siste else-blokken utført, eller hvis else-blokken er fraværende, blir kontrollen overført til neste instruksjon som er tilstede umiddelbart etter else-if-stigen.

følgende program bruker den nestede if-else-setningen for å finne den største av tre tall.

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

ovennevnte program sammenligner tre heltall mengder, og skriver ut den største. Den første hvis-setningen sammenligner verdiene for a og b. Hvis a>b er sant, overføres programkontroll til if-else-setningen nestet i if-blokken, der b sammenlignes med c. Hvis b>c også er sant, skrives verdien av a ut; ellers sammenlignes verdien av c og a, og hvis c>a er sant, skrives verdien av c ut. Etter dette blir resten av if-else-stigen omgått.

men hvis den første betingelsen a>b er usann, overføres kontrollen direkte til den ytterste else-if-blokken, der verdien b sammenlignes med c(siden a ikke er størst). Hvis b>c er sant, skrives verdien av b ut, ellers skrives verdien av c ut. Legg merke til hekkende, bruk av bukseseler, og innrykk. Alt dette kreves for å opprettholde klarhet.

Utvalgserklæring: switchcase-Setningen

en switch-setning brukes for valg av flere måter som vil forgrene seg til forskjellige kodesegmenter basert på verdien av en variabel eller et uttrykk. Dette uttrykket eller variabelen må være av heltallsdatatype.

Syntaks:

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

verdien av dette uttrykket genereres enten under programkjøring eller leses inn som brukerinndata. Saken hvis verdi er den samme som uttrykket for, er valgt og utført. Den valgfrie standardetiketten brukes til å angi kodesegmentet som skal utføres når verdien for uttrykket ikke samsvarer med noen av saksverdiene.

break erklæringen er til stede på slutten av hvert tilfelle. Hvis det ikke var slik, ville utførelsen fortsette videre inn i kodesegmentet i neste sak uten å sjekke saksverdien. Anta for eksempel at en switch – setning har fem tilfeller, og verdien av den tredje saken samsvarer med verdien av uttrykket. Hvis det ikke var noen pauseerklæring ved slutten av tredje sak, ville alle sakene etter sak 3 også bli henrettet sammen med sak 3. Hvis pause er til stede bare den nødvendige saken er valgt og utført; etter som kontrollen blir overført til neste setning umiddelbart etter bryteren setningen. Det er ingen break etter default fordi etter standard saken vil kontrollen uansett bli overført til neste setning umiddelbart etter bryteren.

Eksempel: et program for å skrive ut ukedag.

#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 veldig grunnleggende program som forklarer arbeidet med switch-case-konstruksjonen. Avhengig av nummeret som er angitt av brukeren, velges det aktuelle tilfellet og utføres. For eksempel, hvis brukerinngangen er 5, vil sak 5 bli utført. break – setningen som er tilstede i tilfelle 5, vil pause utførelsen av switch-setningen etter sak 5, og kontrollen vil bli overført til neste setning etter bryteren, som er:

return 0;

Det er også mulig å legge inn sammensatte uttalelser i tilfelle av en switch-setning. Disse sammensatte setningene kan inneholde kontrollstrukturer. Dermed er det også mulig å ha en nestet bryter ved å legge den inn i et tilfelle.

alle programmer skrevet med switch-case-setningen kan også skrives med if-else-setningen. Det er imidlertid god programmeringsfølelse å bruke if-setningen når du må gjøre noe etter å ha vurdert en enkel eller kompleks tilstand som kan innebære en kombinasjon av relasjonelle og logiske uttrykk (f.eks. (if((a!=0)&&(b>5))).

hvis du trenger å velge blant en stor gruppe verdier, vil en switch-setning kjøre mye raskere enn et sett med nestede ifs. Bryteren er forskjellig fra hvis i den bryteren kan bare teste for likestilling, mens if kan evaluere alle Typer Boolske uttrykk.

bryteren setningen må brukes når man trenger å gjøre et valg fra et gitt sett med valg. Switch case-setningen brukes vanligvis i menybaserte applikasjoner. Den vanligste bruken av en switchcase-setning er i datahåndtering eller filbehandling. Det meste av filhåndtering innebærer de vanlige funksjonene: opprette en fil, legge til poster, slette poster, oppdatere poster, skrive ut hele filen eller noen selektive poster. Følgende program gir en ide om hvordan switch case-setningen kan brukes i datahåndtering. Det innebærer ikke koden for filbehandling, da vi kun kan diskutere filhåndtering I C etter at vi har lært avanserte konsepter som pekere, strukturer og fagforeninger.

Eksempel: en switch case-setning som brukes 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; }

eksemplet ovenfor på switch-case innebærer generelt å hekke switch-case-konstruksjonen inne i en iterasjonskonstruksjon som do-while. I vårt nex-innlegg vil vi diskutere disse iterasjonserklæringene.

Leave a Reply