Steueranweisungen in C, Teil 1
Willkommen zum nächsten Teil unserer Reihe, Grundlagen von C.
Steueranweisungen ermöglichen es uns, den Ablauf der Programmsteuerung festzulegen. dh die Reihenfolge, in der die Anweisungen in einem Programm ausgeführt werden müssen. Sie ermöglichen es, Entscheidungen zu treffen, Aufgaben wiederholt auszuführen oder von einem Codeabschnitt zum anderen zu springen.
Es gibt vier Arten von Steueranweisungen in C:
- Decision making statements
- Selection statements
- Iteration statements
- Jump statements
Decision Making Statement: die if-else-Anweisung
Die if-else-Anweisung wird verwendet, um einen logischen Test durchzuführen und dann eine von zwei möglichen Aktionen auszuführen, abhängig von das Ergebnis des Tests (dh ob das Ergebnis wahr oder falsch ist).
Syntax:
if (condition){ statements} else{ statements}
Wenn die in der if-Anweisung angegebene Bedingung als wahr ausgewertet wird, werden die Anweisungen innerhalb des if-Blocks ausgeführt, und das Steuerelement wird unmittelbar nach dem if-Block in die Anweisung übertragen. Selbst wenn die Bedingung false ist und kein else-Block vorhanden ist, wird die Kontrolle unmittelbar nach dem if-Block an die Anweisung übertragen.
Der else-Teil ist nur erforderlich, wenn eine bestimmte Befehlssequenz ausgeführt werden muss, wenn die Bedingung als false ausgewertet wird. Es ist wichtig zu beachten, dass die Bedingung immer in Klammern angegeben wird und dass es sich empfiehlt, die Anweisungen im if-Block oder im else-Block in geschweiften Klammern einzuschließen, unabhängig davon, ob es sich um eine einzelne Anweisung oder eine zusammengesetzte Anweisung handelt.
Das folgende Programm prüft, ob die eingegebene Zahl positiv oder negativ ist.
#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; }
Das folgende Programm vergleicht zwei Zeichenfolgen, um zu überprüfen, ob sie gleich sind oder nicht.
#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; }
Das obige Programm vergleicht zwei Zeichenfolgen, um zu überprüfen, ob sie identisch sind oder nicht. Zu diesem Zweck wird die Funktion strcmp
verwendet. Es wird in der Datei string.h
als deklariert:
int strcmp(const char *s1, const char *s2);
Es vergleicht die Zeichenfolge, auf die s1
zeigt, mit der Zeichenfolge, auf die s2
zeigt. Die Funktion strcmp
gibt eine Ganzzahl zurück, die größer, gleich oder kleiner als Null ist, da die Zeichenfolge, auf die s1
zeigt, größer, gleich oder kleiner als die Zeichenfolge ist, auf die s2
zeigt.
Wenn also im obigen Programm die beiden Zeichenfolgen a
und b
gleich sind, sollte die Funktion strcmp
eine 0 zurückgeben. Wenn es eine 0 zurückgibt, sind die Zeichenfolgen gleich; sonst sind sie unterschiedlich.
Verschachtelte if- und if-else-Anweisungen
Es ist auch möglich, if-else-Anweisungen ineinander einzubetten oder zu verschachteln. Die Verschachtelung ist in Situationen nützlich, in denen eine von mehreren verschiedenen Handlungsweisen ausgewählt werden muss.
Das allgemeine Format einer verschachtelten if-else-Anweisung lautet:
if(condition1){// statement(s);}else if(condition2){//statement(s);}....else if (conditionN){//statement(s);}else{//statement(s);}
Dies wird auch als if-else-Leiter bezeichnet. Während der Ausführung einer verschachtelten if-else-Anweisung werden die diesem bestimmten if-Block zugeordneten Anweisungen ausgeführt, sobald eine Bedingung auftritt, die als wahr ausgewertet wird, und der Rest der verschachtelten if-else-Anweisungen wird umgangen. Wenn keine der Bedingungen zutrifft, entweder der letzte else-Block ausgeführt wird oder wenn der else-Block fehlt, wird das Steuerelement auf die nächste Anweisung übertragen, die unmittelbar nach der else-if-Anweisung vorhanden ist.
Das folgende Programm verwendet die verschachtelte if-else-Anweisung, um die größte von drei Zahlen zu finden.
#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; }
Das obige Programm vergleicht drei ganzzahlige Größen und gibt die größte aus. Die erste if-Anweisung vergleicht die Werte von a
und b
. Wenn a>b
wahr ist, wird die Programmsteuerung an die im if-Block verschachtelte if-else-Anweisung übertragen, wobei b
mit c
verglichen wird. Wenn b>c
ebenfalls wahr ist, wird der Wert von a
gedruckt; andernfalls werden die Werte von c
und a
verglichen und wenn c>a
wahr ist, wird der Wert von c
gedruckt. Danach wird der Rest der if-else-Leiter umgangen.
Wenn jedoch die erste Bedingung a>b
falsch ist, wird das Steuerelement direkt in den äußersten else-if-Block übertragen, wo der Wert von b
mit c
verglichen wird (da a
nicht der größte ist). Wenn b>c
wahr ist, wird der Wert von b
gedruckt, andernfalls wird der Wert von c
gedruckt. Beachten Sie die Verschachtelung, die Verwendung von geschweiften Klammern und die Einrückung. All dies ist erforderlich, um die Klarheit zu wahren.
Auswahl-Anweisung: die switch-case-Anweisung
Eine switch-Anweisung wird für Mehrwegauswahlen verwendet, die basierend auf dem Wert einer Variablen oder eines Ausdrucks in verschiedene Codesegmente verzweigt werden. Dieser Ausdruck oder diese Variable muss vom Datentyp integer sein.
Syntax:
switch (expression){ case value1: code segment1; break; case value2: code segment2; break;... case valueN: code segmentN; break; default: default code segment;}
Der Wert dieses Ausdrucks wird entweder während der Programmausführung generiert oder als Benutzereingabe eingelesen. Der Fall, dessen Wert mit dem des Ausdrucks übereinstimmt, wird ausgewählt und ausgeführt. Die optionale Standardbeschriftung wird verwendet, um das Codesegment anzugeben, das ausgeführt werden soll, wenn der Wert des Ausdrucks mit keinem der case-Werte übereinstimmt.
Die Anweisung break
steht am Ende jedes Falles. Wenn dies nicht der Fall wäre, würde die Ausführung in das Codesegment des nächsten Falls fortgesetzt, ohne den Fallwert zu überprüfen. Angenommen, eine switch
-Anweisung hat fünf Fälle und der Wert des dritten Falls entspricht dem Wert von expression . Wenn am Ende des dritten Falls keine break-Anweisung vorhanden wäre, würden alle Fälle nach Fall 3 zusammen mit Fall 3 ausgeführt. Wenn break vorhanden ist, wird nur der erforderliche Fall ausgewählt und ausgeführt; Danach wird das Steuerelement unmittelbar nach der switch-Anweisung in die nächste Anweisung übertragen. Es gibt kein break
nach default
, da das Steuerelement nach dem Standardfall sofort nach dem switch auf die nächste Anweisung übertragen wird.
Beispiel: ein Programm zum Drucken des Wochentags.
#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; }
Dies ist ein sehr einfaches Programm, das die Funktionsweise des Switch-Case-Konstrukts erklärt. Abhängig von der vom Benutzer eingegebenen Nummer wird der entsprechende Fall ausgewählt und ausgeführt. Wenn die Benutzereingabe beispielsweise 5 ist, wird Fall 5 ausgeführt. Die in Fall 5 vorhandene break
-Anweisung pausiert die Ausführung der switch-Anweisung nach Fall 5 und das Steuerelement wird auf die nächste Anweisung nach switch übertragen:
return 0;
Es ist auch möglich, zusammengesetzte Anweisungen in den Fall einer switch-Anweisung einzubetten. Diese zusammengesetzten Anweisungen können Kontrollstrukturen enthalten. Somit ist es auch möglich, einen verschachtelten Schalter zu haben, indem er in ein Gehäuse eingebettet wird.
Alle Programme, die mit der switch-case-Anweisung geschrieben werden, können auch mit der if-else-Anweisung geschrieben werden. Es ist jedoch sinnvoll, die if-Anweisung zu verwenden, wenn Sie nach der Auswertung einer einfachen oder komplexen Bedingung, die eine Kombination aus relationalen und logischen Ausdrücken umfassen kann (z. B. (if((a!=0)&&(b>5))
), Maßnahmen ergreifen müssen.
Wenn Sie aus einer großen Gruppe von Werten auswählen müssen, wird eine switch-Anweisung viel schneller ausgeführt als eine Reihe verschachtelter ifs. Der switch unterscheidet sich vom if dadurch, dass switch nur auf Gleichheit testen kann, während if jede Art von booleschem Ausdruck auswerten kann.
Die switch-Anweisung muss verwendet werden, wenn eine Auswahl aus einem bestimmten Satz von Auswahlmöglichkeiten getroffen werden muss. Die switch case-Anweisung wird im Allgemeinen in menübasierten Anwendungen verwendet. Die häufigste Verwendung einer Switch-Case-Anweisung ist die Datenverarbeitung oder Dateiverarbeitung. Der größte Teil der Dateibehandlung umfasst die allgemeinen Funktionen: erstellen einer Datei, Hinzufügen von Datensätzen, Löschen von Datensätzen, Aktualisieren von Datensätzen, Drucken der gesamten Datei oder einiger selektiver Datensätze. Das folgende Programm gibt eine Vorstellung davon, wie die switch Case-Anweisung in der Datenverarbeitung verwendet werden kann. Es geht nicht um den Code für die Dateiverarbeitung, da wir die Dateibehandlung in C erst besprechen können, nachdem wir fortgeschrittene Konzepte wie Zeiger, Strukturen und Vereinigungen gelernt haben.
Beispiel: Eine switch case-Anweisung, die bei der Datendateiverarbeitung verwendet wird.
#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; }
Das obige Beispiel für switch-case beinhaltet im Allgemeinen das Verschachteln des switch-case Konstrukts in einem Iterationskonstrukt wie do-while . In unserem nex-Beitrag werden wir diese Iterationsanweisungen diskutieren.
Leave a Reply