Einführung
- 4197
- 1073
- Janin Pletsch
Sie waren bereits einem kleinen Teil dessen, was in unserem vorherigen Teil der Durchflussregelung ist, ausgesetzt, nämlich den Abschnitt über relationale Operatoren. Wenn Sie anfangen, komplexere Programme zu schreiben, werden Sie das Gefühl haben, das zu kontrollieren Befehl in dem Ihr Programm verschiedene Teile ausführt.
Die Flusskontrolle ist in den meisten Programmiersprachen in der einen oder anderen Form vorhanden, und was Sie hier lesen, ist für das Schreiben von C -Programmen unerlässlich.
if/sonst/sonst wenn
Dieser Teil der Flussregelung ist wahrscheinlich der intuitivste und einfachere, obwohl Sie leicht auf die dunkle Seite fallen und mit IFS unverständlichem Code schreiben können. Die Idee ist einfach: if (condition_is_true) do_Something; sonst do_something_else; . Es geht also nur um Logik, binäre Logik, bei der ein Ausdruck zwei Werte haben kann: Richtig oder falsch. Wenn Sie C oder Java verwendet haben, werden Sie mit dem Bool -Datenatyp verwendet. Eine BOOL -Variable kann in einem bestimmten Moment nur wahr oder nur falsch sein. Aber C, obwohl es nicht den Bool -Datentyp gibt, erleichtert es einfach, mit binärer Logik umzugehen, wie Sie sehen werden.
Nehmen wir an, Sie möchten dem Benutzer Ihres Programms mitteilen, ob er alt ist oder nicht, je nach Alter. Nicht ganz nützlich und möglicherweise beleidigt, aber um unseren Standpunkt zu veranschaulichen, wird es dies tun. Die Hauptidee ist also: Wenn das eingegebene Alter über einem Schwellenwert liegt, dann sagen wir dem Benutzer, dass er alt ist. Wenn nicht, sagen wir es ihm/ihr, dass er/sie noch jung ist und blüht. Der Code für ein solches Programm würde so aussehen:
#Include #define limit 50 int main () int age; printf ("Hallo, bitte betreten Sie Ihr Alter!\ n "); scanf ("%d ", & älter); Wenn(Alter < LIMIT) printf("Your age is %d.\n", age); printf("Quite young, I say.\n"); anders Wenn(Alter == Grenze) printf ("Sie sagen, Ihr Alter ist %d.\ n ", Alter); printf (" fast da.\N"); anders printf ("Also ist dein Alter %d, huh?\ n ", Alter); printf (" Geezer.\N"); zurückkehren 0;
Dieses Programm nützt eindeutig keine praktische Nutzung, aber es gibt Elemente, die uns helfen, unseren Standpunkt zu vermitteln und einige neue Elemente zu veranschaulichen. Zum Beispiel werden Sie sehen, dass wir a definiert haben Konstante Named Limit (es wird empfohlen, Ihre Konstanten zu profitieren) mit einem Wert von 50. Als nächstes werden Sie feststellen, dass C nach dem Ausdruck wie der Bourne Shell beispielsweise nach dem Ausdruck nicht verwendet wird. Schließlich haben wir dieses Programm wie dieses geschrieben, weil wir ein weiteres wichtiges Konzept veranschaulichen können: Blöcke. Ein Block ist eine Reihe von Anweisungen, die zusammen gehören und durch Zahnspangen vereint sind. Bitte beachten Sie, dass, wenn Sie sonst verwenden, wenn Sie die Finale abhängig von der Situation unterlassen können.
In unserem ersten Block heißt es also: "Wenn das Alter kleiner als 50 ist, drucken Sie" Ihr Alter ist $ Age "drucken Und Drucken Sie "ziemlich jung, sage ich". Wenn Sie anfangen, den Code anderer Personen zu lesen, werden Sie feststellen. Was war mit "auch wenn du es nicht tust" gemeint war? Nun, C ermöglicht es Ihnen, IFs zu nisten, und die Dinge können sehr leicht nach Süden gehen und Fehler erstellen, die schwer zu verfolgen sind, oder Ihr Code kann zu einem Chaos von anderen und sogar von Ihnen werden. Wenn Sie also planen, wirklich verschachtelte IFs und wirklich zu verwenden Ich kann nicht ohne sie leben, wir empfehlen Ihnen, die Verwendung von Zahnspangen für Klarheit zu missbrauchen. Es gibt viele Situationen, in denen der Logische und der Bediener Sie retten und Ihren Code lesbarer werden lassen können. Betrachten Sie das folgende Beispiel:
int nummer = 3; Wenn ((Nummer> 2) && (Nummer < 4)) printf ("number is three"); /* Dies hätte so geschrieben werden können:*/ int nummer = 3; Wenn (Nummer> 2) Wenn (Nummer < 4) printf ("number is three");
Auch dies ist ein einfaches Beispiel, aber ich denke, Sie haben den Punkt bekommen. Verwenden Sie die notwendige Methode und denken Sie daran, dass '&&' nicht immer ein Ersatz für verschachtelte IFs ist. Wenn Sie jedoch übermäßig kompliziert sind, müssen Sie die Logik Ihres Programms wahrscheinlich überdenken.
während und für
In diesem Abschnitt unseres Artikels führen wir ein weiteres wesentliches Konzept der C -Programmierung vor: Loops. Mit einer Schleife können Sie je nach Bedingung einen bestimmten Befehl oder einen bestimmten Block wiederholen, dh etwas ausführen, bis eine Bedingung ihren Wahrheitswert von treu zu falsch ändert. Wie Sie sehen können, bezieht sich dieses Konzept mit bedingten Anweisungen und kann bei Bedarf zusammen verwendet werden.
während
Das theoretische Konzept des While ist 'while (expression_is_true) execute_ethething;' . Bei jeder Iteration wird der Ausdruck in neu bewertet und wenn es immer noch wahr ist, werden die Anweisungen wieder ausgeführt/werden erneut ausgeführt, bis der Ausdruck, auf den wir testen, falsch wird. Von hier aus können wir schließen, dass wir schreiben können, wenn wir eine unendliche Schleife verwenden möchten, die wir schreiben können
während(1) do_stuff (); do_more_stuff ();
Wie gesagt, C hat kein BOOL-Schlüsselwort, aber Sie können etwas tun, um dies zu überwinden Sie greifen auf den _bool -Datentyp zu, Sie können STDBOOL verwenden.H, was 1 als wahr und 0 als falsch definiert oder Sie können wahr und falsch mit Präprozessoranweisungen definieren. Welche Methode würde Ihrer Meinung nach besser funktionieren und warum? Wie würden Sie das obige Code -Snippet umschreiben, wenn Sie bedenken, was oben gesagt wurde?
Wie auch immer, lasst uns mit einem vollständigen, funktionierenden Beispiel fortfahren. Angenommen, wir möchten 5 Mal eine Nachricht auf dem Bildschirm ausgeben. Wir werden über dasselbe Beispiel später sprechen, aber vorerst sehen wir sehen, wie es mit While geht.
#include int main () int i; i = 5; während(ich != 0) printf ("Hallo!\ n "); i--; zurückkehren 0;
Also, während die Anweisungen zwischen seinen Zahnspangen bis 'i ausgeführt werden != 0 'bewertet als falsch, dann ist ich gleich Null, dann stoppt es. Damit diese Schleife funktioniert.
Übung
Ändern Sie nun das folgende Strömungssteuerungsdesign auf Ihrem Rechten, um den obigen Code so zu entsprechen. Finden Sie diese Designs nützlich??
[SPITZE]: Lesen Sie bis zum Ende des Artikels, Sie könnten dort einige nützliche Hinweise finden.
für
Eine Schleife, die mit für für für für den für eine Weile kompakter und organisiert ist, ist jedoch dasselbe wie eine Weile: Bewerten Sie einen Ausdruck und führen Sie etwas aus, wenn der Ausdruck wahr ist. Dies bedeutet, dass es Situationen gibt, in denen die Anweisungen möglicherweise überhaupt nicht ausgeführt werden, wenn die Bedingung von Anfang an falsch ist. Sie werden aus einer Laune heraus sehen, warum dies wichtig ist. Die Verwendung für VS während der Situation, Gewohnheit und persönlicher Präferenz ist also nicht wirklich etwas, was man tun kann und der andere kann nicht.
A für Schleife hat drei Teile: Initialisierung, Schleife, Inkrement/Dekrement. Es ist wichtig zu wissen, dass jeder Teil der drei weggelassen werden kann, aber die Semikolons müssen, wie Sie sehen werden, bleiben. Also würde eine unendliche Schleife mit so aussehen:
für(;;) etwas tun(); mach etwas anderes();
Nun, vorausgesetzt, Sie haben bereits als Ganzzahl deklariert, aber nicht definiert, wie würden Sie den Code schreiben, der „Hallo ausgibt!”Fünfmal mit einer für die Schleife? Es ist ziemlich einfach, wenn Sie es sich sorgfältig ansehen. Versuchen Sie also, Google oder andere Inspirationsquellen zu vermeiden. Das Gefühl, das Sie haben werden, wenn Sie dies für sich selbst gelöst haben, ist so gut wie nichts.
Schaltergehäuse
Wenn Sie ein interaktives Programm verwenden möchten und feststellen, dass Sie sich an einem Punkt mit mehreren Optionen befassen müssen, die aus einer Liste von Konstanten ausgewählt werden, ist Switch das, was Sie benötigen. Diese Situation tritt häufig beim Schreiben interaktiver Anwendungen auf, in denen Sie Dialoge wie folgt verwenden: „Wenn Sie dies tun möchten, drücken Sie das; Wenn Sie dies brauchen, drücken Sie das “und so weiter. Zum Beispiel zeigen wir Ihnen ein Programm, das Ihnen einen Ganzzahlwert zeigt, den Sie in Hex oder Octal einführen, je nach Ihrer Wahl.
#Include int main () char Option; int nummer; printf ("Bitte geben Sie die Nummer ein, die Sie konvertieren möchten.\N"); /*Bitte unterlassen von Gots () wegen seiner * unsichere "Funktionen" */ scanf ("%i", & nummer); printf ("Welche Art von Konvertierung brauchen Sie?\ n "); printf (" o 'o' für Oktal und 'x' für Hexadezimal.\N"); während((Option = getChar ()) != Eof && (Option = getChar ()) != '\ n') schalten(Möglichkeit) Fall 'o': printf ("Die Zahl in Oktal beträgt 0%o.\ n ", Nummer); brechen; Fall 'x': printf ("Die Zahl in Hex ist 0x%x.\ n ", Nummer); brechen; Standard: printf ("Option nicht gültig.\N"); brechen; zurückkehren 0;
Lassen Sie uns nun das Programm analysieren und sehen, was und wie es Dinge macht. Eine neu eingeführte hier ist die GetChar () -Funktion, wie in Stdio definiert.H . Es wird hier verwendet, um eine zu bekommen Einzelcharakter von der Benutzereingabe und dann das Zeichen in eine Variable schreiben. Wir hätten Option = getChar () einmal vor der Weile verwenden können, aber wir haben den Code wie diesen geschrieben, um zu betonen, wie Sie ihn verwenden können. Wir überlassen es Ihnen, herauszufinden, warum wir nach EOF und dem Newline -Charakter suchen, und wir empfehlen Ihnen, zu versuchen, zu sehen, was passiert, wenn Sie diese Schecks weglassen. Die Syntax einer Switch-Anweisung ist ziemlich einfach und selbsterklärend, also werden wir ziemlich kurz sein.
Wir verwenden Pause; In jedem Fall, weil die Schleife sonst bis zum nächsten Tag fortgesetzt wird (Tags sind das, was vor dem Dickdarm geschrieben ist). Die Standardeinstellung: Tag ist nicht obligatorisch, aber es ist nützlich, etwas für den Fall mit anderen Tags mit den vorhandenen Daten übereinzustimmen, und es wird auch als gute Programmierpraxis angesehen. Als eine weitere Übung empfehlen wir Ihnen, unseren Code unten mit scanf () umzuschreiben, anstatt GetChar () zu sehen und zu sehen, wie er geht. Wird es funktionieren?
tun/während
Wir sagten früher, dass während und für die Bewertung und für die Ausführung danach die Chancen besteht, dass die Anweisungen möglicherweise nie ausgeführt werden. Es wird Situationen geben, in denen Sie genau umgekehrt sein möchten, und in dieser Zeit, in der/während der Bühne eintritt. Der logische Fluss ist invertiert, im Vergleich zu, während, wie in Do (etwas), während (condition_is_true). Die Bewertung erfolgt also nach Die Ausführung, die mindestens eine Runde garantiert, bevor der Compiler erkennt, dass die Bedingung falsch ist (oder nicht).
Mal sehen, wie eine unendliche Schleife mit DO/while aussehen würde:
Tun printf ("Hallo!\N"); während(1);
Sie können einfach versuchen zu überprüfen!'Einmal, bevor er erkannte, dass der Ausdruck als falsch bewertet wird. DO/Während Konstruktionen normalerweise weniger verwendet werden als ihre Gegenstücke, aber Sie werden sehen, dass es Situationen gibt, in denen sie Ihr Leben leichter machen. Kannst du ein Beispiel geben?
Pause, weitermachen und gehen
Wir haben uns bereits vor dem Bruch "getroffen". Sie können es mit Schleifen oder Schaltkonstruktionen verwenden, anstatt weiterzumachen, was bei einem Switch keinen Sinn macht. Wir überlassen es Ihnen, einen Code zu schreiben, in dem Pause und Fortsetzung verwendet werden, und wir werden mit einem der „Feinde“ des C -Programmierers fortfahren: Goto. Ich habe angefangen, mit Basic zu programmieren, und ich zittere immer noch, wenn ich mich an die Verwendung von GOTO dort erinnere, und obwohl C es auch hat, wird seine Verwendung auf keinen Fall empfohlen, möglicherweise bis auf einige systembezogene Programme. Es wird nicht empfohlen, weil Sie bei GOTO Ihre Arbeit problemlos in Spaghetti -Code umwandeln können, das heißt Code, der sehr schwer zu lesen und zu debuggen ist, weil der Leser gezwungen ist, in verschiedene Abschnitte des Codes zu „springen“, um ihn zu verstehen. Aber aus Vollständigkeit funktioniert es so, wie es funktioniert. Sie deklarieren ein Etikett, danach weisen Sie ihm einige Anweisungen zu und Sie können es dann in verschiedenen Teilen Ihres Codes verwenden. Normalerweise können Sie mit einer benutzerdefinierten Funktion anstelle dessen davonkommen. Verwenden Sie also nur dann GOTO, wenn alles andere fehlschlägt.
Wenn(ERROR_UNKNOWN) gehe zu Fehler; /*[…]*/ Fehler: printf ("generischer Fehler!.\N");
Wenn Sie nun einen unbehandelten/unbekannten Fehler haben, können Sie das Fehler -GOTO -Label verwenden, um diese sehr hilfreiche Nachricht zu drucken. Vermeiden Sie es wieder wie die Pest. Es ist einfacher als Sie vielleicht erkennen, dass Sie sich daran gewöhnen und eine schlechte Angewohnheit schaffen, Spaghetti -Code zu schreiben. Wir können das nicht genug betonen.
Abschluss
Vorausgesetzt, Sie haben diesen Teil sorgfältig gelesen und versucht, die Herausforderungen zu lösen, die wir dargestellt haben, haben Sie jetzt einen weiteren Schritt im Land der C -Programmierung gemacht. Versuchen Sie, so viel Code wie möglich zu lesen und zu schreiben, und haben Sie keine Angst zu fragen, ob etwas schief geht.
Hier ist, was Sie als nächstes erwarten können:
- ICH. C Entwicklung unter Linux - Einführung
- Ii. Vergleich zwischen C und anderen Programmiersprachen
- III. Typen, Operatoren, Variablen
- Iv. Ablaufsteuerung
- V. Funktionen
- Vi. Zeiger und Arrays
- Vii. Strukturen
- Viii. Grundlegende I/O
- Ix. Codierungsstil und Empfehlungen
- X. Ein Programm erstellen
- Xi. Verpackung für Debian und Fedora
- Xii. Ein Paket in den offiziellen Debian -Repositories erhalten
Verwandte Linux -Tutorials:
- Dinge zu installieren auf Ubuntu 20.04
- Eine Einführung in Linux -Automatisierung, Tools und Techniken
- Dinge zu tun nach der Installation Ubuntu 20.04 fokale Fossa Linux
- Bash Scripting: Operatoren
- Dinge zu installieren auf Ubuntu 22.04
- Mint 20: Besser als Ubuntu und Microsoft Windows?
- Mastering -Bash -Skriptschleifen beherrschen
- Ubuntu 20.04 Leitfaden
- Dinge zu tun nach der Installation Ubuntu 22.04 Jammy Quallen…
- Hung Linux System? Wie man zur Befehlszeile entkommt und…