logo

C Slēdža paziņojums

Slēdža priekšraksts C ir alternatīvs kāpņu priekšrakstam if-else-if, kas ļauj izpildīt vairākas darbības ar viena mainīgā, ko sauc par slēdža mainīgo, dažādām iespējamām vērtībām. Šeit mēs varam definēt dažādus paziņojumus vairākos gadījumos viena mainīgā dažādām vērtībām.

Slēdža priekšraksta sintakse c valoda ir norādīts zemāk:

 switch(expression){ case value1: //code to be executed; break; //optional case value2: //code to be executed; break; //optional ...... default: code to be executed if all cases are not matched; } 

Noteikumi pārslēgšanas paziņojumam C valodā

  1. The slēdža izteiksme jābūt vesela skaitļa vai rakstzīmes tipam.
  2. The lietas vērtība jābūt veselam skaitlim vai rakstzīmju konstantei.
  3. The lietas vērtība var izmantot tikai slēdža priekšrakstā.
  4. The pārtraukuma paziņojums slēdža gadījumā nav obligāti. Tas nav obligāti. Ja lietā nav atrasts pārtraukuma paziņojums, visi gadījumi tiks izpildīti klāt pēc saskaņotā gadījuma. Tas ir pazīstams kā izkrist cauri C slēdža paziņojuma stāvoklis.

Mēģināsim to saprast ar piemēriem. Mēs pieņemam, ka ir šādi mainīgie.

 int x,y,z; char a,b; float f; 
Derīgs slēdzisNederīgs slēdzisDerīgs gadījumsNederīgs gadījums
slēdzis (x)slēdzis (f)3. gadījums;gadījums 2.5;
slēdzis (x>y)slēdzis (x+2,5)gadījums 'a';gadījums x;
slēdzis (a+b-2)gadījums 1+2;gadījums x+2;
slēdzis(funk(x,y))gadījums 'x'>'y';gadījums 1,2,3;

Slēdža paziņojuma blokshēma valodā C

slēdža paziņojuma plūsma c

Slēdža gadījuma paziņojuma funkcionēšana

Vispirms tiek novērtēta slēdža priekšrakstā norādītā veselā skaitļa izteiksme. Pēc tam šī vērtība tiek saskaņota pa vienam ar konstantajām vērtībām, kas norādītas dažādos gadījumos. Ja tiek atrasta atbilstība, tiek izpildīti visi šajā gadījumā norādītie priekšraksti kopā ar visiem gadījumiem, kas atrodas pēc šī gadījuma, ieskaitot noklusējuma paziņojumu. Diviem gadījumiem nevar būt līdzīgas vērtības. Ja saskaņotajā gadījumā ir ietverts pārtraukuma paziņojums, visi pēc tam esošie gadījumi tiks izlaisti un vadīkla tiek izvadīta no slēdža. Pretējā gadījumā tiks izpildīti visi gadījumi, kas seko saskaņotajam gadījumam.

Kā darbojas C switch paziņojums?

Apskatīsim soli pa solim, kā slēdzis darbojas C valodā:

Apsveriet tālāk minēto pārslēgšanas paziņojums :

C programma:

 #include int main() { int num = 2; switch (num) { case 1: printf('Value is 1
'); break; case 2: printf('Value is 2
'); break; case 3: printf('Value is 3
'); break; default: printf('Value is not 1, 2, or 3
'); break; } return 0; } 

Izvade

 Value is 2 

Soli pa solim process:

  1. The slēdža mainīgais num tiek novērtēts. Šajā gadījumā, uz viena tiek inicializēts ar vērtība 2 .
  2. The novērtētā num (2) vērtība tiek salīdzināts ar konstantēm, kas norādītas katra gadījuma etiķetē iekšpusē slēdža bloks .
  3. The pārslēgšanas paziņojums atbilst novērtētā vērtība (2) ar konstanti, kas norādīta otrais gadījums (2. gadījums) . Tā kā ir atbilstība, programma pāriet uz koda bloku, kas saistīts ar atbilstošs gadījums (2. gadījums) .
  4. Koda bloks, kas saistīts ar gadījums 2 tiek izpildīts, kas izdrukā 'Vērtība ir 2' uz konsoli.
  5. The 'pārtraukums' atslēgvārds atrodas koda blokā gadījums 2 . Rezultātā programma uzreiz pēc koda bloka izpildes izlaužas no slēdža priekšraksta.
  6. Programmas vadība turpinās pēc pārslēgšanas paziņojums , un visi paziņojumi pēc pārslēgšanas paziņojums tiek izpildīti. Šajā gadījumā pēc pārslēgšanas nav paziņojumu, tāpēc programma tiek pārtraukta.
  7. The pārslēgšanas paziņojums novērtēja vērtību mainīgais num , atrada atbilstību 2. gadījumam, izpildīja atbilstošo koda bloku un pēc tam izgāja no slēdža bloks klātbūtnes dēļ 'pārtraukuma' paziņojums .

Slēdža priekšraksta piemērs valodā C

Apskatīsim vienkāršu C valodas pārslēgšanas priekšraksta piemēru.

 #include int main(){ int number=0; printf('enter a number:'); scanf('%d',&number); switch(number){ case 10: printf('number is equals to 10'); break; case 50: printf('number is equal to 50'); break; case 100: printf('number is equal to 100'); break; default: printf('number is not equal to 10, 50 or 100'); } return 0; } 

Izvade

df.loc
 enter a number:4 number is not equal to 10, 50 or 100 enter a number:50 number is equal to 50 

Pārslēgšanās gadījuma piemērs 2

 #include int main() { int x = 10, y = 5; switch(x>y && x+y>0) { case 1: printf('hi'); break; case 0: printf('bye'); break; default: printf(' Hello bye '); } } 

Izvade

 hi 

Pārtraukums un noklusējuma atslēgvārds Switch paziņojumā

Paskaidrosim un definēsim 'pārtraukums' un 'noklusējuma' atslēgvārdi slēdža priekšraksta kontekstā kopā ar piemēra kodu un izvadi.

1. Atslēgvārda pārtraukums:

The 'break' atslēgvārds tiek izmantots katra gadījuma koda blokā, lai priekšlaicīgi pārtrauktu slēdža paziņojumu. Kad programma saskaras ar a 'pārtraukuma' paziņojums korpusa blokā tas nekavējoties iziet no pārslēgšanas paziņojums , novēršot nākamo lietu bloku izpildi. The 'pārtraukuma' paziņojums ir ļoti svarīgi, lai izvairītos no pārslēgšanas paziņojumiem” 'izkrišana' uzvedība.

Piemērs:

Paņemsim programmu, lai saprastu, kā lietot pārtraukuma atslēgvārds C.

 #include int main() { int num = 3; switch (num) { case 1: printf('Value is 1
'); break; // Exit the switch statement after executing this case block case 2: printf('Value is 2
'); break; // Exit the switch statement after executing this case block case 3: printf('Value is 3
'); break; // Exit the switch statement after executing this case block default: printf('Value is not 1, 2, or 3
'); break; // Exit the switch statement after executing the default case block } return 0; } 

Izvade

 Value is 3 

Paskaidrojums:

Šajā piemērā pārslēgšanas paziņojums novērtē vērtību mainīgais num (kurš ir 3 ) un saskaņo to ar gadījums 3 . Koda bloks, kas saistīts ar gadījums 3 tiek izpildīts, drukāšana 'Vērtība ir 3' uz konsoli. The 'pārtraukuma' paziņojums ietvaros gadījums 3 nodrošina, ka programma uzreiz pēc šī gadījuma bloka izpildes iziet no slēdža priekšraksta, novēršot citu gadījumu izpildi.

2. Noklusējuma atslēgvārds:

Kad neviens no lietu konstantes Salīdzini novērtētā izteiksme , tas darbojas kā a visaptverošs gadījums . Ja nav atbilstoša gadījuma un a 'noklusējuma' gadījums pastāv , koda bloks, kas saistīts ar 'noklusējums' lieta tiek palaists. To bieži izmanto, lai apstrādātu apstākļus, kad neviena no norādītajām situācijām neattiecas uz sniegto ievadi.

Piemērs:

Paņemsim programmu, lai saprastu, kā lietot noklusējuma atslēgvārds C.

 #include int main() { int num = 5; switch (num) { case 1: printf('Value is 1
'); break; case 2: printf('Value is 2
'); break; case 3: printf('Value is 3
'); break; default: printf('Value is not 1, 2, or 3
'); break; // Exit the switch statement after executing the default case block } return 0; } 

Izvade

 Value is not 1, 2, or 3 

Paskaidrojums:

Šajā piemērā pārslēgšanas paziņojums pārbauda vērtību mainīgais num (kurš ir 5 ). Tā kā neviens reģistrs neatbilst skaitlim, programma izpilda koda bloku, kas saistīts ar 'noklusējuma' gadījums . The 'pārtraukuma' paziņojums iekšpusē 'noklusējuma' gadījums nodrošina, ka programma iziet no pārslēgšanas paziņojums pēc izpildes 'noklusējums' lietu bloks.

Gan 'pārtraukums' un 'noklusējuma' atslēgvārdi spēlē būtisku lomu izpildes plūsmas kontrolēšanā slēdža paziņojumā. The 'pārtraukuma' paziņojums palīdz novērst izkrišanas uzvedību, savukārt 'noklusējuma' gadījums nodrošina veidu, kā rīkoties nepārspējamos gadījumos.

C Switch paziņojums ir īsts

C valodā slēdža paziņojums ir cauri; tas nozīmē, ka, ja slēdža gadījumā neizmantojat pārtraukuma paziņojumu, tiks izpildīti visi gadījumi pēc atbilstības gadījuma.

Mēģināsim izprast slēdža paziņojuma izkrišanu, izmantojot tālāk sniegto piemēru.

 #include int main(){ int number=0; printf('enter a number:'); scanf('%d',&number); switch(number){ case 10: printf('number is equal to 10
'); case 50: printf('number is equal to 50
'); case 100: printf('number is equal to 100
'); default: printf('number is not equal to 10, 50 or 100'); } return 0; } 

Izvade

 enter a number:10 number is equal to 10 number is equal to 50 number is equal to 100 number is not equal to 10, 50 or 100 

Izvade

 enter a number:50 number is equal to 50 number is equal to 100 number is not equal to 10, 50 or 100 

Ligzdota slēdža gadījuma paziņojums

Mēs varam izmantot tik daudz slēdža priekšrakstu, cik vēlamies, slēdža priekšrakstā. Šāda veida paziņojumus sauc par ligzdotiem slēdžu gadījuma priekšrakstiem. Apsveriet šādu piemēru.

 #include int main () { int i = 10; int j = 20; switch(i) { case 10: printf('the value of i evaluated in outer switch: %d
',i); case 20: switch(j) { case 20: printf('The value of j evaluated in nested switch: %d
',j); } } printf('Exact value of i is : %d
', i ); printf('Exact value of j is : %d
', j ); return 0; } 

Izvade

 the value of i evaluated in outer switch: 10 The value of j evaluated in nested switch: 20 Exact value of i is : 10 Exact value of j is : 20 

Slēdža paziņojuma priekšrocības:

Ir vairākas priekšrocības pārslēgšanas paziņojums C. Dažas galvenās slēdža paziņojuma priekšrocības ir šādas:

    Lasāmība un skaidrība:The pārslēgšanas paziņojums nodrošina kodolīgu un vienkāršu veidu, kā izteikties daudzceļu atzarošana kodā. Vairāku gadījumu risināšana var padarīt kodu sakārtotāku un vieglāk lasāmu nekā vairākus ligzdotie if-else paziņojumi .Efektivitāte:The pārslēgšanas paziņojums parasti ir efektīvāka nekā virkne ja-citādi paziņojumi strādājot ar vairākiem nosacījumiem. Tas darbojas kā d taisns lēciena galds , kas padara to ātrāku un optimizētāku izpildes laika ziņā.Uz gadījumiem balstīta loģika:The pārslēgšanas paziņojums dabiski atbilst scenārijiem, kuros programmai ir jāpieņem lēmumi, pamatojoties uz konkrētām viena mainīgā vērtībām. Tas ir intuitīvs un vienkāršs veids, kā īstenot uz gadījumiem balstītu loģiku.

The pārslēgšanas paziņojums atbalsta noklusējuma gadījuma izmantošanu, kas kalpo kā a visaptveroša iespēja vērtībām, kas neatbilst nevienam norādītajam gadījumam. Šis noklusējuma gadījums apstrādā neparastus ievades datus vai apstākļus, kas nav skaidri norādīti.

Slēdža paziņojuma trūkumi:

Tam ir vairāki trūkumi pārslēgšanas paziņojums C. Daži galvenie slēdža paziņojuma trūkumi ir šādi:

    Ierobežotas izteiksmes:Izteiciens, ko izmanto pārslēgšanas paziņojums jārada an integrālā vērtība (char, int, enum) vai saderīgs datu tips. Tas nevar tikt galā ar vairāk sarežģītas vai nepastāvīgas izteiksmes , ierobežojot to elastība dažos scenārijos.Nespēja salīdzināt diapazonus:Atšķirībā no ja-citādi paziņojumi , pārslēgšanas paziņojums nevar tieši apstrādāt vērtību diapazonus. Katrs slēdža paziņojuma gadījums apzīmē noteiktu konstantu vērtību, tāpēc ir grūti efektīvi apstrādāt virkni vērtību.Peldošā komata skaitļi netiek atbalstīti:The pārslēgšanas paziņojums tikai pieņem integrāļu veidi (veselas skaitļi) un vērtības no enums ; tas nepieņem peldošā komata skaitļus. Tas netiek galā neintegrālie datu tipi patīk veseli skaitļi ar peldošo komatu , kas dažos gadījumos var būt problemātiski.Kritiena uzvedība: Pārslēgt paziņojumus ir 'izkrišana' darbība pēc noklusējuma, kas nozīmē, ka gadījumā, ja lieta neietver a 'pārtraukuma' paziņojums , izpildes griba 'izkrist' uz šādu lietu bloku. Ja tas netiek pareizi pārvaldīts, tas var izraisīt nevēlamu rīcību.Dublēts kods:Izmantojot a pārslēgšanas paziņojums dažos gadījumos var rasties koda dublikāts, īpaši, ja daudzos gadījumos ir nepieciešamas tādas pašas darbības. Ja tas netiek pareizi pārvaldīts, tas var izraisīt koda dublēšanos.Ligzdotie slēdži var kļūt sarežģīti:Kad tiek galā ar ligzdotas pārslēgt paziņojumus , kods var kļūt sarežģīts un mazāk lasāms. Lai izprastu un uzturētu šādas ligzdotas struktūras, var būt nepieciešamas papildu pūles.