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

Gewusst wie:Einführung in die Programmierung – Ihr erstes Programm

Anleitungsserie

Dies ist Teil 2 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

Du bist zurück!

Es ist großartig, Sie wiederzusehen, und ich hoffe, Sie haben ausgiebig gefeiert, nachdem Sie den ersten Artikel dieser Serie bei Atlantic.NET abgeschlossen haben, in dem Sie Ihr erstes Programm erstellt und ausgeführt haben, während Sie erfahren haben, wie das, was Sie erstellen, von menschenlesbarem Code zu Maschinen wird Anweisungen.

Keine Sorge, wenn Sie diesen Artikel noch nicht gelesen haben, können Sie dies jetzt tun. Ich warte hier auf deine Rückkehr.

In diesem Teil der Serie werden wir dieses erste Programm näher untersuchen und uns darauf konzentrieren, mehr Konzepte der Programmierung und Softwareentwicklung zu verstehen. Insbesondere werden wir uns Input und Output ansehen und Ihnen ein Konzept namens Objektorientierung vorstellen , und erkunden Sie, wie und warum wir komplexen Code mithilfe von Abstraktion verstecken wollen .

Kommen wir zur Sache, ja?
.

In „Hello World!“ graben

Im vorherigen Artikel haben wir ein sehr einfaches „Hello World!“ erstellt. Programm, das aus zwei Codezeilen besteht, die wir selbst geschrieben haben. Es gab zusätzliche Codezeilen, aber Visual Studio hat sie für uns generiert, und sie sind spezifisch für den Programmtyp, den wir erstellen, und die Sprache, die wir verwenden, also lassen Sie uns vorerst nicht mehr Zeit damit verbringen.

Die beiden Zeilen, die wir hinzugefügt haben, konzentrieren sich jedoch speziell auf Ausgabe und Eingabe, also lassen Sie uns sie genauer untersuchen.

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

Ignorieren der Console. (lesen Sie:„Konsolenpunkt“) Teil der Zeilen für den Moment, Sie können sehen, dass es eine Anweisung an die Maschine gibt, eine Zeile zu schreiben und dann eine Zeile zu lesen. In einem Konsolenprogramm oder einer Anwendung wie der, die wir gerade erstellen, sind dies zwei der wichtigsten Möglichkeiten, mit dem Benutzer zu interagieren; wir geben etwas auf dem Konsolenbildschirm mit Console.WriteLine aus und erhalten Sie Eingaben vom Benutzer mit Console.Readline . Das Ergebnis sieht in etwa so aus wie in Abbildung 1 unten.

Abbildung 1:Konsolenausgabe

Diese Konsolenanwendung ist nur eine von vielen Arten von Anwendungen, die wir erstellen können. Unterschiedliche Anwendungstypen erfordern unterschiedliche Eingabe- und Ausgabeansätze. Wenn wir zum Beispiel eine einfache Webseite bauen, gibt es keine Konsole, von und zu der wir mit dem Benutzer interagieren können. Die Webseite ist nur ein statisches Stück Text und vielleicht ein paar Bilder. Obwohl ein Programm es erzeugen kann, ist es immer noch nicht sehr interaktiv, so wie wir Interaktivität in einer Konsolenanwendung aufbauen.

Hinweis:In den frühen Tagen des Internets gab es eine Methode namens CGI (Common Gateway Interface), mit der Sie Konsolenanwendungen wie diese direkt auf einer Webseite platzieren und mit ihnen über die URL interagieren konnten.

.

Ein Beispiel für Webseitencode

Eine Webseite hat eine völlig andere Methode des interaktiven Verhaltens. Schauen Sie sich zum Beispiel den folgenden Webseitencode an – und machen Sie sich keine Sorgen, wenn Ihnen dieser völlig fremd ist:

<html>
<head>
<title>Hello World!</title>
</head>
<body>
<h1>Hello world!</h1>
</body>
</html>

Diese Webseite präsentiert dem Benutzer einfach eine Überschrift mit der Aufschrift „Hallo Welt!“. und nicht viel mehr, wie unten.

Abbildung 2:Webseite „Hello World“

Alleine kann diese Webseite – oder sogar jede andere Webseite – nicht viel bewirken. Um Interaktivität zu schaffen, können Browser Befehlsanweisungen durch Sprachen wie JavaScript interpretieren, um die Webseite auf verschiedene Weise zu manipulieren, einschließlich der Manipulation des Webseitenlayouts, des Inhalts und der Struktur.

Beispielsweise verwende ich unten in Abbildung 3 JavaScript auf einer HTML-Seite, um dem Benutzer ein Benachrichtigungsfeld anzuzeigen. Beachten Sie, dass ich Visual Studio verwende, um die HTML-Seite und auch das JavaScript zu bearbeiten.

Abbildung 3:JavaScript-Warnung auf der Seite „Hello World“

Eine Möglichkeit, wie eine Webseite Informationen von einem Benutzer abrufen kann, sind Webseitenformulare. Diese sehen vielleicht nicht wie Ihre typischen Papierformulare aus, aber das ist das Schöne am Web; es muss nicht langweilig und dümmlich sein, es kann umwerfend und verlockend aussehen (obwohl die Konfiguration, die erforderlich ist, um ein umwerfendes und verlockendes Aussehen zu erzielen, hier nicht möglich ist!).

Unabhängig vom Aussehen können Formulare bestimmte Informationen vom Benutzer abrufen, die ein Browser dann irgendwohin senden kann. Wenn wir zum Beispiel irgendwo ein Programm haben, das die Eingaben von einer Webseite lesen kann, können wir den Browser veranlassen, den Inhalt der Formulare an dieses Programm zu senden.
.

Ereignisgesteuerte Programmierung

Ein anderer Ansatz besteht darin, die Formulardaten in Kombination mit JavaScript zu verwenden, damit die Webseite selbst die Daten des Benutzers verarbeitet. Anstatt das JavaScript beispielsweise immer Hallo Welt anzeigen zu lassen, können wir es ganz einfach die Eingaben des Benutzers in einem Formular anzeigen lassen.

Abbildung 4:Dynamische JavaScript-Warnung

Machen Sie sich hier nicht allzu viele Gedanken über den Code, aber beachten Sie, dass wir im Gegensatz zu unserer Konsolenanwendung, wo der Ablauf des Programms im Allgemeinen Zeile für Zeile von Anfang bis Ende ist, auf dieser Webseite etwas verwenden, das als event- getriebene Programmierung , indem Code auf auftretende Ereignisse reagiert. Im obigen Beispiel das Ereignis onblur passiert, wenn sich die Aufmerksamkeit vom Eingabefeld weg verschiebt, und wir können Code schreiben, um auf dieses Ereignis zu reagieren und die Warnung anzuzeigen.

Unabhängig davon werden Sie hier schnell ein bestimmtes Muster erkennen, das die Grenzen von Plattformen, Sprachen und Frameworks überschreitet. Das Programm beginnt damit, dass es dem Benutzer eine Information präsentiert, und dann sendet der Benutzer irgendwie Anweisungen an das Programm. In einer Konsolenanwendung erfolgt dieser Austausch über Befehle wie Console.WriteLine und Console.ReadLine . Im Web findet dieser Austausch statt, indem eine HTML-Seite präsentiert wird und der Benutzer aufgefordert wird, ein Formular auszufüllen.

Als Programmierer werden Sie schnell lernen, dass Ihre Arbeit als Programmierer in allen Sprachen, Plattformen und Tools sehr ähnlich ist. Die Syntax kann sich zwischen den Sprachen unterscheiden, und Sie haben möglicherweise unterschiedliche Ansätze, wie Sie in Bezug auf den Programmablauf denken, aber hinter allem ist der Computer, den Sie steuern, derselbe. Es unterliegt derselben Logik, unabhängig davon, in welcher Sprache Sie es manipulieren.

Sobald Sie das erkennen, haben Sie vielleicht Ihre Matrix Moment, in dem Sie über den Code hinaus in die Maschine und die dahinter stehende Logik sehen und plötzlich verstehen, wie Sie die Maschine auf jede gewünschte Weise steuern können, indem Sie jede Sprache, jede Plattform und jedes Tool verwenden.

Bis dahin gibt es jedoch noch viel zu lernen. Lassen Sie uns kurz zu unserem Programm zurückkehren, denn es gibt einige zusätzliche Dinge, die ich Ihnen zeigen möchte.
.

Klassen, Objekte und Methoden – Ach du meine Güte!

Wir beginnen mit dem „Konsolenpunkt“-Teil der beiden Zeilen.

Console.WriteLine("Hello World!");

Die Console part ist ein Verweis auf eine statische Klasse, die als Teil des System-Namespace enthalten ist, und….

Oh, warte… Das ergibt noch keinen Sinn. Ich muss zuerst ein wenig über Klassen und Objekte sprechen. Ich sollte wahrscheinlich viel über Klassen sprechen und Objekte , aber konzentrieren wir uns zunächst auf ein grundlegendes Verständnis dessen, was Objektorientierung ist, da sie in allen Programmiersprachen weit verbreitet ist.

Objektorientierung ist eine Programmieridee, bei der Sie programmatische Darstellungen von realen Objekten erstellen und dann mit diesen Objekten interagieren sollten, als wären sie echt. Diese Definition ist nicht sehr genau, aber fürs Erste reicht sie uns aus.

In erster Linie erreichen wir diese Interaktion mit Objekten durch zwei Komponententypen namens Eigenschaften und Methoden . Die guten Nachrichten? Eine davon verwenden Sie bereits:die Methode. In unserem Programm hier die WriteLine und ReadLine Befehle sind die Methoden. Eigenschaften, die wir in diesem Artikel nicht wirklich behandeln, beschreiben, was ein Objekt ist, während Methoden beschreiben, was ein Objekt tun kann.

Methoden in der Objektorientierung werden an Objekte oder in einigen Fällen an Klassen angehängt. Wir werden später in dieser Serie viel mehr über Methoden erfahren, aber stellen Sie sich Methoden vorerst als Aktionen vor, die Objekte ausführen können.

Außerdem können Sie sich den Unterschied zwischen Klassen und Objekten als den Unterschied zwischen einem Kuchenrezept und einem Kuchen vorstellen, wobei das Rezept die Klasse und der Kuchen das Objekt ist. Die Klasse definiert, wie Sie ein Objekt herstellen, genauso wie ein Rezept definiert, wie Sie einen Kuchen backen.

Es ist jedoch etwas nutzlos, ein Rezept zu haben, aber nie etwas daraus zu machen. Ein Kuchen hingegen kann ohne Rezept nicht existieren. Daher existieren Klassen und Objekte wie Rezepte und Kuchen im Einklang.

Wo diese Analogie etwas komplexer wird, wenn es um das geht, was wir statische Klassen nennen . Diese Klassen oder Rezepte sind statisch, weil sie als tatsächliche Dinge existieren. Tatsächlich können Sie nicht einmal Objekte daraus erstellen; Sie existieren nur als Rezepte und haben nur statische Methoden. Um die Sache noch komplizierter zu machen, können wir statische Methoden für reguläre Klassen verwenden! Noch verwirrt? Denken Sie an Douglas Adams:

Keine Panik!

.
In unserer Kuchenanalogie kann eine statische Methode für ein Rezept etwas sein, das nichts mit dem Kuchen selbst, aber auch nicht unbedingt mit dem Rezept zu tun hat. Beispielsweise können Sie an das Rezept eine statische Methode namens PointMeToTheKitchen anhängen das wird Ihnen – ich bin sicher, Sie können es erraten – den Weg zur Küche weisen. Der Kuchen kann in jeder Küche gebacken werden und das Rezept ist nicht davon abhängig, in einer bestimmten Küche zu einem Kuchen verarbeitet zu werden.

Um fair zu sein, eine bessere – und noch komplexere – Situation wäre, wenn Sie eine statische Klasse namens Baking hätten das alle notwendigen Dinge im Zusammenhang mit dem Backen mit einer Reihe statischer Methoden behandelt, und das die PointMeToTheKitchen Methode würde dort wahrscheinlich besser passen. Tatsächlich haben wir die gleiche Verwendung mit unserem aktuellen Programm.

Um es noch einmal zu wiederholen:
* Sie verwenden Klassen, um Objekte zu erstellen, so wie Sie Rezepte verwenden, um Kuchen zu erstellen.
* Objekte haben Methoden und Eigenschaften, die definieren, was sie können bzw. was sie sind.
* Klassen können statische Methoden haben, die außerhalb jedes Objekts existieren.
* Statische Klassen existieren außerhalb von allem und existieren für sich. Sie können sie nicht zum Erstellen von Objekten verwenden.

Gegen Ende der Serie werden wir viel mehr Zeit mit der Objektorientierung verbringen. Fürs Erste, wenn ich das wiederhole, die Console Teil unserer beiden Zeilen ist eine statische Klasse, Sie wissen, dass es eine Klasse ist, die unabhängig von jedem Objekt existiert und dass sie auch statische Methoden enthält.
.

Abstrahieren der Details

Schauen Sie sich noch einmal unsere Linien an:

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

Console ist eine statische Klasse. Sein Hauptzweck besteht darin, Ihnen Zugriff auf das zu geben, was Sie zum Umgang mit der Konsole benötigen, genau wie ein Baking -Klasse würde verwendet, um Ihnen Zugriff auf Backwerkzeuge zu geben.

Wenn wir in C# und vielen ähnlichen Sprachen einen Punkt schreiben, rufen wir die Methode auf, die durch die folgenden Klammern oder eine Eigenschaft gekennzeichnet ist. Effektiv sagen wir:„Hey, Konsolenklasse, lass mich deine WriteLine ausführen Methode, bitte“.

Hinweis:Einige Sprachen verwenden hierfür möglicherweise eine andere Notation. Beispielsweise können Sie in C++ -> verwenden anstelle eines Punktes in bestimmten Kontexten, und Perl 5 verwendet -> konsequent.

.
Hinter den Kulissen, die Console Die Klasse ruft dann unter Verwendung der von uns bereitgestellten Parameter (eine wörtliche Textzeichenfolge „Hello World! “.

In der nächsten Zeile rufen wir dieselbe statische Klasse Console auf wieder, und dieses Mal bitten wir es, seine ReadLine aufzurufen Methode. Im Gegenzug weist das Programm die Konsole an, zu warten, bis wir Enter drücken bevor Sie im Programm fortfahren. In unserem Fall wird diese Eingabe das Programm abschließen und einfach verlassen.

Wir können auf die komplizierten Details der Funktionsweise der Konsole eingehen, aber das ist an dieser Stelle nicht wirklich relevant. Denken Sie daran, dass wir nicht mehr hier sind, um Konsolenprogrammierung zu lernen, als um C# zu lernen; Wir lernen Programmierkonzepte. Als solches nenne ich es „geheimen Voodoo“ – obwohl es sicherlich nicht so ist – einfach weil es für uns in diesem Kontext weit genug fortgeschritten ist, dass es genauso gut Magie sein könnte.

Was Sie jedoch wissen sollten, ist, dass diese beiden einfachen Befehle hinter den Kulissen tatsächlich eine große Anzahl von Aufgaben ausführen. Zum Beispiel nur um die Parameter zu interpretieren, die Sie in WriteLine übergeben Methode muss der Computer der Zeichenfolge eine bestimmte Speicherposition zuweisen, diese Zeichen in diese Zeichenfolge laden und die Ausführung des aktuellen Programms auf diese bestimmte Speicherstelle verweisen.

Die CPU muss dann all diese Speicherbits auslesen, herausfinden, in welchem ​​​​Kontext sie läuft, das Betriebssystem aufrufen (das wiederum die spezifische Hardware aufrufen muss, die Sie haben), um die Signale ein- oder auszuschalten die jedem Pixel auf Ihrem Bildschirm den entsprechenden Farbwert verleihen. Und dieser kleine Ausflug ist nicht einmal eine ganz genaue oder vollständige Darstellung dessen, was vor sich geht.

All diese Dinge passieren, weil Sie ein paar Zeichen in Visual Studio geschrieben und eine Schaltfläche gedrückt haben. Dieser Blick hinter die Kulissen zeigt ein weiteres sehr wichtiges Programmierprinzip namens Abstraktion . Kurz gesagt, wir möchten die komplizierten Details einer Operation verbergen und mit einer benutzerfreundlichen Methode damit interagieren. Für die Ausgabe von Inhalten an die Konsole verstecken wir alle wichtigen Details in einer Methode namens WriteLine .

Zwei Hauptvorteile der Abstraktion sind, dass wir viel weniger Code schreiben können und dass wir auch besseren Code schreiben, da wir nicht jedes Mal denselben Code wiederholen müssen, um dieselben Ergebnisse zu erzielen. Hinter den Kulissen die Ergebnisse, die wir mit unserer einfachen WriteLine erzielen und ReadLine Code kann Hunderte von Codezeilen umfassen. Den ganzen Code schreiben zu müssen, erhöht die Wahrscheinlichkeit, Fehler zu machen, erheblich.

Um genau zu sein, ist es in unserem Beispiel hier das .NET-Team von Microsoft, das die Details für uns verbirgt. Im Gegenzug geben sie uns eine stark vereinfachte Oberfläche, mit der wir unsere Anwendungen programmieren können. Mischen Sie die Wörter in diesem Satz ein wenig und Sie könnten es sogar eine Anwendungsprogrammierschnittstelle oder API nennen.

Andere Frameworks haben auch APIs. Zum Beispiel ist jQuery eine API, die viele wichtige Details darüber abstrahiert, wie JavaScript mit Inhalten auf einer Webseite interagiert, wie Animationen, Formularvalidierungen, Inhaltsmanipulationen und so weiter. OpenGL ist eine API, die die Interaktion mit Grafikhardware abstrahiert.

Es gibt buchstäblich Tausende von APIs, mit denen Sie komplizierte Aktivitäten ausführen können. Atlantic.NET hat auch eine API zur Verwaltung Ihrer Cloud-Server, sodass Sie, sobald Sie sich mit der Programmierung vertraut gemacht haben, Programme erstellen können, die die Instanzen in Ihrem Atlantic.NET-Konto starten, auflisten, erstellen oder beenden.

Hinweis:Die Atlantic.NET-APIs erfordern die Arbeit mit einer sogenannten RESTful-Schnittstelle, was den Rahmen dieser Einführungsartikel etwas sprengen würde.

.

Ihr erster Programmabschluss

Sie mussten in diesem Artikel viel lernen, aber jetzt ist es an der Zeit, eine Pause einzulegen. Wir haben ausführlich besprochen, wie die Ein- und Ausgabe funktioniert, und Ihnen eine Einführung in die objektorientierte Programmierung gegeben. Sie haben auch gelernt, wie wichtig Abstraktion ist und wie sie uns hilft, Fehler zu vermeiden und unser Code-Schreiben zu vereinfachen. Sie haben gesehen, wie Webseiten und Konsolenanwendungen unterschiedliche, aber ähnliche Ein- und Ausgabeansätze verwenden, und haben zumindest einen flüchtigen Blick auf einen völlig anderen Programmieransatz geworfen, der als ereignisgesteuerte Programmierung bezeichnet wird.

Im nächsten Artikel werden wir unser Programm erweitern, indem wir Variablen und Datentypen einführen, und Sie werden beginnen, ein sehr einfaches Ratespiel zu erstellen, indem Sie diese Konzepte zusammen mit dem, was Sie bereits gelernt haben, verwenden.

Anleitungsserie

Dies ist Teil 2 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. Programmiersprache C - Einführung

  2. So stellen Sie Ihren ersten Pod in einem Kubernetes-Cluster bereit

  3. Debian – Wie kräuselt man den gesamten Webseiteninhalt?

  4. So greifen Sie auf Ihre Plesk-Anmeldeseite zu

  5. Wie Sie Ihr erstes Qt-Programm in Debian 10 schreiben und ausführen

So installieren Sie Firefox Quantum und beschleunigen Ihr Surfen im Internet

So verbinden Sie sich über SSH mit Ihrem Webserver

So konfigurieren Sie Ihr Raspberry Pi OS, um es zum ersten Mal zu verwenden

Gewusst wie:Einführung in die Programmierung – Ihr erstes Programm

Gewusst wie:Einführung in die Programmierung – Flusssteuerung

So richten Sie Ihre erste WordPress-Website ein