GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Gewusst wie:Einführung in die Programmierung – Variablen, Typen und Datenbearbeitung

Anleitungsserie

Dies ist Teil 3 einer 5-teiligen Serie zur Einführung in die Programmierung

  1. Einführung in die Programmierung:Erste Schritte
  2. Einführung in die Programmierung:Ihr erstes Programm
  3. Einführung in die Programmierung:Variablen, Typen und Datenbearbeitung
  4. Einführung in die Programmierung:Flusskontrolle
  5. Einführung in die Programmierung:Objektorientierte Programmierung

Zurück zu unserem Programm

In den beiden vorherigen Artikeln dieser Reihe haben Sie im Durchschnitt eine Codezeile pro Artikel geschrieben. In diesem fügen wir eine weitere Zeile hinzu, aber wir werden auch die Zeilen ändern, die wir bereits haben, weil wir jetzt anfangen werden, über Variablen und Datentypen zu sprechen.

Das Ziel dieses Artikels ist es, Ihnen etwas über Variablen und Typen beizubringen und wie man diese manipuliert, um ein Programm zu erstellen, das mehr kann, als nur „Hallo Welt!“ auszugeben.

Wir haben viel zu berichten, also halten Sie Ihre Finger bereit und los geht's.
.

Variablen verwenden

Unser aktuelles Programm bleibt mit nur zwei Codezeilen außergewöhnlich einfach:

Console.WriteLine("Hello World!");
Console.ReadLine();

Die erste Zeile gibt einen Text an die Konsole aus und die zweite liest eine Zeile des Benutzers vor. Aber wo endet diese Linie, die wir eingegeben haben? Derzeit fällt es einfach ins Nichts, weil wir nichts tun, um es abzurufen, also ändern wir das sofort.

Ändern Sie die zweite Zeile so, dass sie wie folgt aussieht:

String input = Console.ReadLine();

Was wir hier tun, ist zu sagen, dass „String-Eingabe“ (was auch immer das sein mag) dem zugewiesen werden sollte, was aus der Methode ReadLine kommt auf der Console aufgerufen statische Klasse.

Wir verwenden das Gleichheitszeichen, um Werte in C# und vielen ähnlichen Sprachen zuzuweisen. Dem, was auf der linken Seite des Gleichheitszeichens steht, wird der Wert zugewiesen, der auf der rechten Seite steht.

Die beiden Wörter in String input haben unterschiedliche Bedeutungen. String bezeichnet die Art des Werts und input ist der Name, den wir verwenden, um den Wert darzustellen. Was wir hier tun, ist das Erstellen einer Variablen „Eingabe“ genannt, die einen Typ hat von „String“. Ich werde Typen später in diesem Artikel erklären.

Beim Programmieren verwenden wir Variablen, um Daten im Speicher zu halten, damit wir sie leicht manipulieren können. Sie verwenden dies auch in Ihrem täglichen Leben, ohne es eigentlich eine Variable zu nennen. Denken Sie zum Beispiel an „Ihr Telefon“, das einfach eine einfache Möglichkeit ist, sich den Namen für ein bestimmtes elektronisches Gerät zu merken, das sich im Laufe der Zeit ändern kann. Oder betrachten Sie den „US-Dollar-Euro-Wechselkurs“. Sie müssen sich nicht ständig an diesen Kurs erinnern, und er ändert sich schnell, daher finden Sie es wahrscheinlich einfacher, ihn mit dem Namen als mit dem Wert zu bezeichnen.

Variablen ermöglichen es uns, auf ein bestimmtes Datenelement mit dem Namen statt mit dem Wert zu verweisen, unabhängig davon, was der Wert ist oder ob er sich ändert. In unserem Programm sind die Daten alles, was der Benutzer eingibt, bevor er Enter drückt Schlüssel. Der Name, den wir diesem bestimmten Datenelement geben, ist in diesem Fall „Eingabe“, aber wir können es anders nennen. Tatsächlich gibt es eine ganze Reihe von Mustern nur für die Benennung von Variablen, und Sie werden wahrscheinlich später in Ihrer Karriere davon sehr verwirrt sein.
.

Debugging mit Breakpoints

Sie können dies jetzt ausprobieren, aber bevor Sie dies tun, möchte ich Ihnen einen Visual Studio-Trick zeigen, der als Haltepunkt bezeichnet wird . Ein Haltepunkt ermöglicht es Ihnen, die Ausführung eines Programms zu stoppen und zu sehen, welche Codezeile ausgeführt wird – es erlaubt Ihnen sogar, von diesem Punkt an Zeile für Zeile durch den Code zu gehen.

Um einen Haltepunkt zu erstellen, bewegen Sie entweder Ihren Cursor auf die erste Zeile Ihres Codes und drücken Sie F9 oder klicken Sie in den Rand links neben den Zeilennummern auf die Zeile, in der Sie Ihren Haltepunkt setzen möchten. Wenn Sie es richtig gemacht haben, sollte die gesamte Zeile rot werden und Sie sollten einen roten Kreis am Rand erhalten.

Abbildung 1:Haltepunkt hinzugefügt

Beachten Sie, dass der Haltepunkt die Ausführung vorher stoppt die Linie, auf die Sie es setzen. Außerdem funktionieren Haltepunkte nur, wenn Sie Ihre Anwendung über ein Entwicklungstool wie Visual Studio ausführen. Wenn Sie also Ihre Haltepunkte nicht entfernen, bevor Sie Ihre Anwendung verteilen, ist das vollkommen in Ordnung.

Drücken Sie nun F5 oder die Schaltfläche Start im Menü und beobachten Sie, wie Ihre Anwendung gestartet wird. Unmittelbar danach sollte Visual Studio wieder auftauchen und Ihnen die nächste auszuführende Zeile gelb anzeigen.

Abbildung 2:Haltepunkttreffer

An dieser Stelle können Sie die Ausführung Schritt für Schritt steuern und die Ergebnisse im Konsolenfenster beobachten. Um einen Schritt voraus zu gehen, drücken Sie F10 im Visual Studio. Bringen Sie das Konsolenfenster nach vorne und beobachten Sie, dass Ihr Code jetzt eine Zeile weitergegangen ist und jetzt "Hello World!" wie erwartet im Fenster angezeigt.

Abbildung 3:Nächste ausgeführte Befehlszeile

Hinweis:Programmierer bezeichnen diesen Vorgang des Einhängens in Ihren Code während der Ausführung oft als „Debugging“. Dieser Prozess ist ein Beispiel für die Art des Debuggens, das Sie durchführen können, um zu überprüfen, ob Ihr Code wie erwartet funktioniert.

.
Gehen Sie in Visual Studio noch einmal durch Ihren Code. Beachten Sie, dass dabei automatisch das Konsolenfenster erscheint. Dieses Ereignis tritt auf, weil die Konsole Eingaben vom Benutzer benötigt, wenn Console.ReadLine() ausgeführt wird Methode.

Geben Sie einen beliebigen Text ein und drücken Sie Enter . Wenn Sie dies tun, wird Visual Studio wieder angezeigt, denn jetzt, da Sie die Eingabe bereitgestellt haben, kann die Ausführung fortgesetzt werden, und wir gehen immer noch nur schrittweise durch den Code.

In diesem Visual Studio-Fenster möchte ich Ihre Aufmerksamkeit auf den unteren Teil des Bildschirms lenken, wo Sie eine Registerkarte namens „Lokale“ sehen sollten. Wenn Sie es nicht finden können, können Sie es öffnen, indem Sie zum Menü gehen und Debug->Windows->Locals auswählen oder CTRL+D drücken und dann L .

Sobald Sie das Locals-Fenster öffnen, sollten Sie sehen, dass es dort eine Variable namens „input“ gibt, deren Wert auf den Wert eingestellt ist, den Sie im Konsolenfenster eingegeben haben. In meinem Fall habe ich „Hallo!“ eingegeben.

Abbildung 4:Debug Locals

Die Registerkarte Locals zeigt Variablen an, die Ihnen zur Verwendung im aktuellen Bereich zur Verfügung stehen. Bevor wir jedoch beginnen, diese Daten zu manipulieren und zu verwenden, ist es wichtig, das Konzept der Variablentypen zu verstehen.
.

Variablentypen:Statisch und Dynamisch

Sie sehen, es gibt zwei Herangehensweisen an das, was Programmierer „Eintippen“ nennen, und keiner hat etwas mit dem Drücken von Tasten auf einer Tastatur zu tun. Beide Ansätze haben Stärken und Schwächen. Und nein, ich werde Ihnen nicht sagen, was am besten ist; Sie werden viel Zeit haben, das selbst festzustellen, und vielleicht werden Sie verstehen, warum einige Programmierer eine fast fanatische Vorliebe für das eine gegenüber dem anderen entwickeln.

Die beiden Ansätze sind statisch und dynamisch tippen. C#, die Sprache, die Sie in diesen Artikeln verwenden, ist eine statisch typisierte Sprache, während andere beliebte Sprachen wie JavaScript dynamisch typisierte Sprachen sind. Lassen Sie mich den Unterschied erklären.

Sie haben bereits bemerkt, dass wir bei der Erstellung der Variablen „input“ entschieden haben, dass es sich um einen String handelt Variable. String ist ein Begriff, der angibt, welche Art von Daten in die Variable aufgenommen werden können. Sie können einer Variablen keine inkompatiblen Daten hinzufügen, da Visual Studio – oder technisch gesehen der Compiler, der Ihren Programmiercode in Maschinencode übersetzt – Einspruch erhebt und die Zusammenarbeit verweigert.

Ein String ist nur ein Stück Text und kann fast alles enthalten, was sinnvoll ist, wenn wir den Benutzer auffordern, ein beliebiges Stück Text einzugeben. Es gibt jedoch ein potenzielles Problem, wenn wir anfangen möchten, mit unseren Daten zu arbeiten.

Angenommen, wir möchten den Benutzer bitten, sein Alter einzugeben, und bestimmte Funktionen einschränken, wenn der Benutzer beispielsweise jünger als 13 Jahre ist.

Wie stellen Sie fest, ob „Hallo!“ ist kleiner als 13? Sie können nicht, weil es keine Möglichkeit gibt, mit einem Stück Text zu rechnen. „Tomate“ plus 45 ergibt keinen Sinn.

Eine Situation wie diese ist der Grund, warum statisch typisierte Sprachen unterschiedliche Variablentypen haben. Wir können wissen, ob wir arithmetische oder andere Operationen mit den Daten durchführen können, bevor wir das Programm überhaupt an den Benutzer senden.

In statisch typisierten Sprachen wie C#, VisualBasic und Java müssen Sie im Voraus definieren, was eine Variable enthalten kann, und Sie können Ihr Programm nicht erstellen oder kompilieren, ohne sich an diese Regeln zu halten. Im Gegenzug wird Ihnen garantiert, dass Sie Apples nicht mit 3,42 vergleichen oder herauszufinden versuchen, ob es legal ist, Alkohol an eine Person zu verkaufen, die „Sie nichts angeht“ Jahre alt.

In dynamisch typisierten Sprachen erhalten Sie keine solchen Garantien. Stattdessen arbeiten Sie einfach mit Variablen, die jede Art von Daten enthalten können. Ein Beispiel für dynamisch typisierte Sprachen ist JavaScript. In JavaScript müssen Programmierer überprüfen, ob die erhaltenen Daten einen erwarteten Wert haben, da ihr Code abstürzen kann, wenn sie versuchen, „ja“ mit 18 zu addieren oder zu vergleichen.

Hinweis:Sie können in den meisten Sprachen tatsächlich „Ja“ zu 18 hinzufügen, je nachdem, wie Sie es tun. Am Ende werden Sie jedoch höchstwahrscheinlich „ja18“ erhalten, was wahrscheinlich nicht das ist, was Sie erwarten.

.
In statisch typisierten Sprachen werden Sie außerdem feststellen, dass alle Methoden einen bestimmten Datentyp zurückgeben – oder in manchen Fällen überhaupt nichts. Zum Beispiel Console.ReadLine() -Methode gibt einen String-Wert zurück, daher funktioniert es hervorragend, unsere String input festzulegen Variable in die Ausgabe dieser Methode, genau wie wir es getan haben.

Was passiert jedoch, wenn wir den Benutzer bitten möchten, eine Zahl zwischen 1 und 10 auszuwählen, weil wir diese Zahl später für etwas verwenden möchten? Beginnen wir mit der Entwicklung eines einfachen Spiels und schauen, sollen wir?
.

Ein Ratespielprogramm

Das Spiel, das wir bauen werden, ist ein Ratespiel. Wir wählen eine Geheimzahl zwischen 1 und 10 aus und bitten den Benutzer dann, zu erraten, um welche Zahl es sich handelt. Wir werden dieses Spiel später weiter entwickeln, sodass der Benutzer vorerst nur einmal raten muss und somit eine Chance von 10 % hat, es richtig zu machen. Tatsächlich werden wir in diesem Artikel nicht einmal testen, ob sie korrekt sind, da dies Bedingungen und Flusskontrolle beinhalten würde, die Konzepte sind, die wir noch nicht lernen werden.

Erstens wird der Variablentyp für eine Zahl ohne Dezimalstellen Ganzzahl oder int genannt kurz. Ein int kann sehr große Zahlen aufnehmen, die normalerweise durch den CPU-Architekturtyp begrenzt sind, wobei eine 32-Bit-CPU ganze Zahlen bis zu etwa 4,4 Milliarden aufnehmen kann. Darüber hinaus können wir andere Variablentypen verwenden. Für unsere einfachen Beispiele jedoch ein regulärer int wird gut funktionieren.

Für alle Arten von Variablen können wir einfache Werte direkt zuweisen. Zum Beispiel:

int value = 10; 
string name = “Frank”;

Wir können auch Operationen auf Variablen ausführen, solange sie „sinnvoll“ sind. Beispielsweise können Sie zwei ganzzahlige Werte addieren.

int value1 = 10;
int value2 = 3;
int value3 = value1+value2;

Die in der Variablen „value3“ gespeicherte Ganzzahl ist 13, nachdem der Codeabschnitt, der diese Zeilen enthält, diesen Punkt durchlaufen hat.

Wir können auch Werte aus dem Rückgabewert von Methoden zuweisen. Versuchen wir einfach, das Ergebnis von Console.ReadLine() zuzuweisen Methode in ein int , sollen wir? Stoppen Sie die Ausführung Ihres Programms, falls Sie dies noch nicht getan haben. Wir werden jetzt unsere beiden Codezeilen wie folgt aktualisieren:

Console.WriteLine("Guess a number between 1 and 10:");
int input = Console.ReadLine();

Wenn Sie dies tun, erhalten Sie einen Fall mit den roten Schnörkeln (wie unten in Abbildung 5 gezeigt) und eine Fehlermeldung in der Fehlerliste, die besagt, dass „Type ‚string‘ to ‚int‘ nicht implizit konvertiert werden kann“.

Abbildung 5:Ein Fall der roten Schnörkel

Wir erhalten diesen Fehler, weil der Wert aus Console.ReadLine() kommt ist ein String, und der Compiler kann nicht garantieren, dass er das, was ein Benutzer eingeben kann, in eine Zahl umwandeln kann. Ein Benutzer könnte „NEIN!“ eingeben. zum Beispiel, und es gibt keine Möglichkeit, diese Eingabe in eine Zahl umzuwandeln.

Natürlich gibt es Möglichkeiten, dieses Problem zu umgehen. Wir können den Compiler zwingen, alles, was hereinkommt, als von einem bestimmten Typ zu akzeptieren. Tatsächlich können wir dies mit allen Arten tun. Es ist ein Prozess namens Casting .

Wenn wir Variablentypen umwandeln, wird der Compiler sein Bestes tun, um von einem Variablentyp in einen anderen zu konvertieren. Diese Umwandlung kann zum Beispiel funktionieren, wenn Sie eine Dezimalzahl haben und eine ganze Zahl wollen.

decimal decimalvalue = 3.14M;
int integervalue = decimalvalue;

Die erste Zeile weist der decimal den Wert 3,14 zu Variable namens decimalvalue . Die zweite Zeile versucht, diesen Dezimalwert einer ganzen Zahl zuzuweisen.

Hinweis:Das M ist nur ein Hinweis für den Compiler, dass wir einen Dezimalwert erstellen, da es, um noch mehr Verwirrung zu stiften, mehrere Arten von decimal gibt Werten, einschließlich doppelter Genauigkeit und Gleitkommawerten. Es ist zwar nützlich zu wissen, aber keiner dieser Punkte ist etwas, worüber Sie sich in diesem Artikel Gedanken machen müssen.

.
Wenn Sie diese Zeilen in Visual Studio eingeben, werden Sie feststellen, dass wir auch jetzt wegen einer decimal einen Fall von Schnörkeln erhalten value passt nicht in einen int Wert. Wenn wir es versuchen würden, würden wir die .14 verlieren und nur noch 3 als Wert von integervalue haben .

Dieses Verhalten kann genau das sein, was wir wollen. In diesem Fall können wir die decimal umwandeln Wert zu einem int , wodurch der Compiler effektiv gezwungen wird, die explizite Konvertierung eines Dezimalwerts in einen ganzzahligen Wert zu akzeptieren. Dazu stellen wir dem Wert den gewünschten Typ in Klammern voran. Vergleichen Sie diese Codezeilen mit denen von oben.

decimal decimalvalue = 3.14M;
int integervalue = (int)decimalvalue;

Jetzt verschwinden unsere Visual Studio-Schnörkel und der Compiler ist zufrieden. Wir verlieren einige Details in den Zahlen, aber Sie können sicher sein, dass dies das ist, was Sie wollen.

In C# verlangt der Compiler, dass Sie Werte umwandeln, wenn die Möglichkeit eines Datenverlusts besteht, z. B. wenn Sie von einem Dezimalwert zu einem ganzzahligen Wert wechseln. Es akzeptiert jedoch gerne eine kompatible Konvertierung, wenn keine Gefahr von Datenverlust besteht. Wenn Sie versucht haben, einen int zuzuweisen Wert auf eine decimal Geben Sie zum Beispiel ein, dass Sie keinen Streit vom Compiler bekommen würden.

Bisher kommen wir einer Lösung unseres Problems jedoch nicht wirklich nahe. Wir können versuchen, den String-Wert von Console.ReadLine() umzuwandeln in ein int , aber der Compiler wird sich darüber beschweren, dass er einen Stringwert nicht automatisch in eine Ganzzahl konvertieren kann (wie unten in Abbildung 6 gezeigt), da es keine Möglichkeit gibt, im Voraus zu garantieren, dass es möglich ist, das, was vom Benutzer kommt, in eine Zahl umzuwandeln.

Abbildung 6:Fehler beim Casting von String in Int

Fürchte dich nicht, denn es gibt einen besseren Weg, dies zu lösen! Die Lösung verwendet eine statische Methode, um den Zeichenfolgenwert in eine ganze Zahl zu zerlegen, und sie befindet sich direkt im int typ selbst. Als solches können wir int.Parse aufrufen -Methode senden, was auch immer von Console.ReadLine() kommt -Methode und erhalten eine Ganzzahl zurück.

Aktualisieren wir also Ihren Programmcode so, dass er den Benutzer zuerst auffordert, die Daten einzugeben, und dann die Daten in einer String abruft Variable namens „Text“ und schließlich „Text“ in eine Ganzzahl zu zerlegen.

Console.WriteLine("Guess a number between 1 and 10:");
string text = Console.ReadLine();
int input = int.Parse(text);

Sobald Sie dies getan haben, sollten alle Ihre Schnörkel verschwinden und Ihr Programm sollte wie erwartet ausgeführt werden. Fühlen Sie sich frei, nach der letzten Zeile einen Haltepunkt zu setzen, um die Ausführung zu stoppen und Ihre Variablen zu überprüfen. Sehen Sie, was passiert, wenn Sie während der Ausführung eine Nummer eingeben.

Abbildung 7:Gültige Ausführung

Sie werden sehen, dass „input“ jetzt einen Wert von 3 zeigt, während „text“ in meinem Fall einen Wert von „3“ hat (beachten Sie die doppelten Anführungszeichen; doppelte Anführungszeichen bedeuten einen String-Wert).

Aber was passiert, wenn wir etwas anderes als eine Zahl eingeben? Nun, wenn Sie statt einer Nummer so etwas wie „Hallo“ eingeben, stürzt das Programm ab. In Visual Studio stoppt die Ausführung und informiert Sie über eine Ausnahme, wie unten in Abbildung 8 gezeigt.

Abbildung 8:Ungültige Ausführung

Als Programmierer wollen wir nicht, dass unsere Software abstürzt, also müssen wir diesen Fehler behandeln. Wir werden das jedoch für den nächsten Artikel aufheben, weil es beinhaltet, den Ablauf des Programms zu manipulieren, und wir haben bereits ziemlich viel behandelt, um zu diesem Punkt zu gelangen.
.

Variablen, Typen und manipulierende Datenzusammenfassung

Jetzt ist es an der Zeit, diesen dritten Artikel abzuschließen, und obwohl wir nur eine weitere Codezeile geschrieben haben, haben wir eine Menge neues Material behandelt. Keine Sorge, als ich vor vielen Jahren anfing, das zu lernen, gab es auch für mich viele verwirrende Aspekte.

In diesem Artikel haben wir das Konzept von Variablen behandelt und uns mit Datentypen befasst und erklärt, wann und warum Datentypen wichtig sind. Sie haben gelernt, wie man Variablen erstellt und sogar Daten durch Casting von einem Typ in einen anderen umwandelt. Sie haben etwas über das schrittweise Debuggen, Haltepunkte und das Untersuchen verfügbarer Variablen in Visual Studio gelernt.

Sie sollten auch beachten, dass die Dinge, die Sie jetzt gelernt haben, in allen Sprachen und Plattformen sehr verbreitet sind, und ich habe darauf geachtet, unterschiedliche Konzepte einzuführen und zu erklären, wie z. B. statische versus dynamische Eingabe.

Im nächsten Artikel werden wir uns mit der Ablaufsteuerung befassen, damit Sie lernen können, wie Sie die Ausführung Ihres Programms steuern und verschiedene Bedingungen überprüfen können, um zu bestimmen, was das Programm als Nächstes tun soll.

Anleitungsserie

Dies ist Teil 3 einer 5-teiligen Serie zur Einführung in die Programmierung

  1. Einführung in die Programmierung:Erste Schritte
  2. Einführung in die Programmierung:Ihr erstes Programm
  3. Einführung in die Programmierung:Variablen, Typen und Datenbearbeitung
  4. Einführung in die Programmierung:Flusskontrolle
  5. Einführung in die Programmierung:Objektorientierte Programmierung

Linux
  1. Linux-Umgebungsvariablen:Lesen und Festlegen auf einem Linux-VPS

  2. C-Programmier-Tutorial 4 - Variablen und Speicher

  3. Warum Daten wichtig sind und wie man sie schützt

  4. So setzen/erstellen Sie Umgebungs- und Shell-Variablen in Linux

  5. So sichern und wiederherstellen Sie RabbitMQ-Daten und -Konfigurationen

Einführung in VPN und hier erfahren Sie, wie Sie es unter Linux verwenden

So setzen und löschen Sie Umgebungsvariablen unter Linux

Gewusst wie:Einführung in die Programmierung – Erste Schritte

Gewusst wie:Einführung in die Programmierung – Objektorientierte Programmierung

Gewusst wie:Einführung in die Programmierung – Flusssteuerung

Gewusst wie:Objektorientierte Programmierung – Konstruktoren und Vererbung