kontrolní příkazy v C, Část 1
Vítejte v další části naší série, Základy C.
kontrolní příkazy nám umožňují určit tok řízení programu; tj. pořadí, ve kterém musí být pokyny v programu provedeny. Umožňují přijímat rozhodnutí, provádět úkoly opakovaně nebo skákat z jedné části kódu do druhé.
v C jsou čtyři typy kontrolních příkazů:
- rozhodovací příkazy
- výběrové příkazy
- iterační příkazy
- skokové příkazy
rozhodovací prohlášení: příkaz if-else
příkaz if-else se používá k provedení logického testu a následnému provedení jedné ze dvou možných akcí v závislosti na výsledku testu(tj. zda je výsledek pravdivý nebo nepravdivý).
syntaxe:
if (condition){ statements} else{ statements}
pokud podmínka specifikovaná ve příkazu if vyhodnotí hodnotu true, příkazy uvnitř bloku if se provedou a poté se ovládací prvek přenese do příkazu bezprostředně za blokem if. I když je podmínka nepravdivá a není přítomen žádný jiný blok, kontrola se přenese do příkazu ihned po bloku if.
else část je vyžadována pouze v případě, že je třeba provést určitou posloupnost instrukcí, pokud podmínka vyhodnotí jako false. Je důležité si uvědomit, že podmínka je vždy uvedena v závorkách a že je dobrým zvykem uzavřít příkazy v bloku if nebo v bloku else-block v závorkách, ať už se jedná o jediný příkaz nebo složený příkaz.
následující program zkontroluje, zda je zadané číslo kladné nebo záporné.
#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; }
následující program porovnává dva řetězce, aby zkontroloval, zda jsou stejné nebo ne.
#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; }
výše uvedený program porovnává dva řetězce, aby zkontroloval, zda jsou stejné nebo ne. Pro tento účel se používá funkce strcmp
. V souboru string.h
je deklarován jako:
int strcmp(const char *s1, const char *s2);
porovnává řetězec označený s1
s řetězcem označeným s2
. Funkce strcmp
vrací celé číslo větší než, rovno, nebo menší než nula, podle toho, protože řetězec označený s1
je větší než, rovný nebo menší než řetězec ukazovaný s2
.
proto ve výše uvedeném programu, pokud jsou dva řetězce a
a b
stejné, funkce strcmp
by měla vrátit 0. Pokud vrátí 0, řetězce jsou stejné; jinak se liší.
vnořené příkazy if a if-else
je také možné vložit nebo vnořit příkazy if-else jeden do druhého. Hnízdění je užitečné v situacích, kdy je třeba vybrat jeden z několika různých postupů.
obecný formát vnořeného příkazu if-else je:
if(condition1){// statement(s);}else if(condition2){//statement(s);}....else if (conditionN){//statement(s);}else{//statement(s);}
výše uvedené se také nazývá žebřík if-else. Během provádění vnořeného příkazu if-else, jakmile se objeví podmínka, která se vyhodnotí na hodnotu true, budou provedeny příkazy spojené s tímto konkrétním blokem if-a zbytek vnořených příkazů if-else bude vynechán. Pokud ani jedna z podmínek není pravdivá, buď je proveden poslední blok else, nebo pokud blok else chybí, ovládání se přenese na další instrukci přítomnou bezprostředně po žebříku else-if.
následující program využívá vnořeného příkazu if-else k nalezení největšího ze tří čísel.
#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; }
výše uvedený program porovnává tři celočíselné veličiny a vytiskne největší. První příkaz if porovnává hodnoty a
a b
. Pokud je a>b
pravda, řízení programu se přenese do příkazu if-else vnořeného uvnitř bloku if, kde b
je porovnáno s c
. Pokud je b>c
také pravda, vytiskne se hodnota a
; jinak se porovnají hodnoty c
a a
a pokud je c>a
pravda, vytiskne se hodnota c
. Poté je zbytek žebříku if-else vynechán.
pokud je však první podmínka a>b
nepravdivá, řízení se přímo přenese do nejvzdálenějšího bloku if, kde je hodnota b
porovnána s c
(protože a
není největší). Pokud b>c
je pravda, že hodnota b
je vytištěna jinak hodnota c
je vytištěna. Všimněte si hnízdění, použití závorek a odsazení. To vše je nutné k udržení jasnosti.
Prohlášení O Výběru: příkaz switch-case
příkaz switch se používá pro výběr více cest, které se rozvětví do různých segmentů kódu na základě hodnoty proměnné nebo výrazu. Tento výraz nebo proměnná musí být celočíselného datového typu.
syntaxe:
switch (expression){ case value1: code segment1; break; case value2: code segment2; break;... case valueN: code segmentN; break; default: default code segment;}
hodnota tohoto výrazu je buď generována během provádění programu, nebo čtena jako vstup uživatele. Případ, jehož hodnota je stejná jako hodnota výrazu, je vybrán a proveden. Volitelný výchozí štítek se používá k určení segmentu kódu, který má být proveden, když se hodnota výrazu neshoduje s žádnou z hodnot písmen.
příkaz break
je uveden na konci každého případu. Pokud by tomu tak nebylo, provádění by pokračovalo do segmentu kódu dalšího případu bez kontroly hodnoty případu. Například předpokládejme, že příkaz switch
má pět případů a hodnota třetího případu odpovídá hodnotě výrazu. Pokud by na konci třetího případu nebylo žádné prohlášení o přerušení, všechny případy po případu 3 by byly také provedeny spolu s případem 3. Pokud je break přítomen, je vybrán a proveden pouze požadovaný případ; poté se ovládací prvek přenese do dalšího příkazu bezprostředně za příkazem switch. Neexistuje žádný break
po default
, protože po výchozím případě se ovládací prvek okamžitě po přepnutí přenese na další příkaz.
příklad: program pro tisk dne v týdnu.
#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; }
Jedná se o velmi základní program, který vysvětluje fungování konstrukce spínacího pouzdra. V závislosti na čísle zadaném uživatelem je vybrán a proveden příslušný případ. Pokud je například vstup uživatele 5, provede se případ 5. Příkaz break
přítomný v případě 5 pozastaví provádění příkazu switch po případu 5 a ovládací prvek se po přepnutí přenese na další příkaz, který je:
return 0;
je také možné vložit složené příkazy uvnitř příkazu switch. Tyto složené příkazy mohou obsahovat řídicí struktury. Je tedy také možné mít vnořený přepínač vložením do pouzdra.
Všechny programy napsané pomocí příkazu switch-case lze také zapsat pomocí příkazu if-else. Má však dobrý programovací smysl použít příkaz if, když potřebujete provést nějakou akci po vyhodnocení nějaké jednoduché nebo složité podmínky, která může zahrnovat kombinaci relačních a logických výrazů (např. (if((a!=0)&&(b>5))
).
pokud potřebujete vybrat mezi velkou skupinou hodnot, příkaz switch poběží mnohem rychleji než sada vnořených ifs. Přepínač se liší od if v tomto přepínači může testovat pouze rovnost, zatímco if může vyhodnotit jakýkoli typ booleovského výrazu.
příkaz switch musí být použit, když si člověk musí vybrat z dané sady voleb. Příkaz switch case se obvykle používá v aplikacích založených na nabídkách. Nejběžnější použití příkazu switch-case je při zpracování dat nebo zpracování souborů. Většina zpracování souborů zahrnuje společné funkce: vytvoření souboru, přidávání záznamů, mazání záznamů, aktualizace záznamů, tisk celého souboru nebo některé selektivní záznamy. Následující program poskytuje představu o tom, jak lze příkaz switch case použít při manipulaci s daty. Nezahrnuje kód pro zpracování souborů, protože můžeme diskutovat o manipulaci se soubory v C až poté, co jsme se naučili pokročilé koncepty, jako jsou ukazatele, struktury a odbory.
příklad: příkaz switch case používaný při zpracování datových souborů.
#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; }
výše uvedený příklad switch-case obecně zahrnuje vnoření konstrukce switch-case do iterační konstrukce jako do-while. V našem příspěvku nex, budeme diskutovat o těchto iteračních prohlášeních.
Leave a Reply