Programmierung

Programmierung ist die Entwicklung von Computerprogrammen ( Software ) für die Datenverarbeitung auf einem Computer unter Verwendung einer Programmiersprache . Der Zweck des Programms ist in der Regel etwas zu empfangen Eingang -Daten, eine Aufgabe , auf diese (z. B. Berechnung, Druck, Kommunikation mit der führen Datenbank ) und als Ergebnis zurückgeben einige Ausgangsdaten.

Der Programmiervorgang 

Die Entwicklung eines Programms ist ein Prozess des Schreibens Quellcode , Testen , Debuggen (auch als Debugging , eng. Debugging ) und die Wartung des Quellcodes. Das Programm ist in der Regel im Klartext in einer schriftlichen Programmiersprache , die eine definierte Syntax für den Code. Wenn es eine compileret Sprache übersetzt ( compileres ) erste Quellcode der Maschinencode oder ein anderer Code mehr maskinnær. In dieser Zusammenstellung entdeckt auch mögliche Syntaxfehler. Übersetzte Maschinencode kann dann von dem Computer ausgeführt werden. Wenn es eine ist interpretiert Sprache, läuft der Interpreter das Programm direkt aus dem Quellcode, und nur während der Fahrt, ob irgendeine Syntaxfehler erkannt.

Die Programmierung ist ein Teil der gesamten Systementwicklungsprozess , und die Voraussetzung für die Programmierung ist , dass die erste eine Analyse , welche Anforderungen ist das System für die Benutzer erfüllen müssen. Dies wird in einer beschriebenen Anforderungsspezifikation . Nach der Auslegung des Systems und implementierte Programmierung.

Es gibt eine Debatte darüber , ob die Verschlüsselung von Programmen ist eine Kunst , ein Handwerk oder technischen Disziplin. Allgemein als gute Programmier auf eine gemessene Nutzung aller drei ist das Ziel , eine effiziente Softwarelösung zu produzieren , die weiterentwickelt werden kann. Die Disziplin unterscheidet sich von vielen anderen technischen Berufen als Programmierer in der Regel nicht über eine Lizenz oder den Nachweis eines standardisierten (oder öffentlich geregelt) Zertifizierung müssen sich „Programmierer“ zu nennen oder auch „Software – Ingenieur“.

Datentypen 

Die Daten in einem Programm muss zu einem bestimmten gehören Datentyp . Die Datentypen , die verwendet werden können , hängt von der Programmiersprache, aber grob gesagt, sie können unterteilt werden in :

Primitive Datentypen

  • ganze Zahl
    Hier gibt es mehrere Arten von der Größe integer je ein Bedarf wurde der Lage sein, zu berechnen.
  • dezimal
    Hier gibt es auch verschiedene Arten auf der Notwendigkeit , dass die Berechnungsgenauigkeit abhängig (eng. Precision ) von Dezimalstellen.
  • Wahrheitswert ( boolean )
    Diese können nur annehmen , zwei Werte, wahr oder falsch .
  • Zeichnen / Charakter
    Kann eingestellt werden, jedes Zeichen in dem Zeichen, dass die Anwendung verwendet.
  • Pointing (eng. Pointer )
    Enthält einen Verweis auf eine Variable und tatsächlich besteht aus variabelens Adresse im Speicher.

Composite-Datentypen

  • Textzeichenfolge
    Eine Textzeichenfolge (eng. String ) ist ein Stück Text aus einer Anzahl von aus Zeichen ( Zeichen ). Grundsätzlich sind alle Eingabedaten und Ausgabedaten für ein Programm dieser Art, so muss das Programm in diese translatiert werden. integer.
  • Feld
    Ist eine statische, angegeben Sammlung von Variablen des gleichen Datentyps.
  • Post (eng. Die Bilanz )
    Besteht aus Feldern von anderen Datentyp. Darin spiegelt sich unter anderem ein Datensatz in einer Datenbank -Tabelle.

Objekte

  • Objekt
    Eine erweiterte Art von Daten, die in modernen objektorientierten Programmierung ein Typ mit beiden Daten und Verhalten. In einer objektorientierten Sprache umfasst ein Objekt von anderen zusammengesetzten Datentypen.

Operatoren

Um zu den einzelnen Arten von Daten stützen setzt Ausdruck zu regnen , die von Datenwerten und besteht Operatoren . Die Betreiber können unterteilt werden:

  • Arithmetic Betreiber , die auf numerische Werte zählen.
  • Verkettungs , die zwei Strings zusammengesetzt werden in einem.
  • Logische Operatoren , die Werte und zählt auf Wahrheitswerte vergleichen.

Darüber hinaus ist die individuelle Programmierung eine Reihe von zusätzlichen Operatoren mit Sprachsätze und Datentypen (insbesondere die Objekte) zu behandeln.

Ein wichtiger Teil einer Programmiersprache ist seine operatorprioritet (oder -hierarki ) , die die Reihenfolge der einzelnen Betreiber , wenn mehrere verschiedene im gleichen Ausdruck zu verwenden.

Variablen und Konstanten 

Ein Datenwert wird in einem oder mehreren häufig platziert variable ( Platzhalter ). Eine Variable wird durch einen gekennzeichnet alphanumerischen Variablennamen und einem bestimmten Datentyp, aber die tatsächliche Wert kann während des Programms ändern. Wenn Sie einen Platzhalter benötigen , die den Wert nicht ändern müssen, die meisten Sprachen die Möglichkeit , eine zu definieren konstant .

Die Sätze

Um ihre Ziele durch das Programm einige zu erreichen Algorithmen , die Sequenzen von Berechnungen sind. Die einzelnen Schritte der Sprache Implementierung eines Algorithmus Sätze genannt , die im wesentlichen unterteilt werden in :

  • Variablendeklarationen, in dem Sie eine Variable erstellen und den Datentyp festgelegt.
  • Allocations (eng. Zuordnung ) , wo Sie eine Variable einen bestimmten Datenwert geben können im gleichen Satz berechnet werden.
  • Branchen , wo eine Wahrheit Ausdruck bestimmt , ob das Programm die eine oder andere Gruppe von Phrasen durchführen.
  • Loops , wo eine Wahrheit Ausdruck für die Anzahl , wie oft wesentlich ist , Sie haben eine Gruppe von Phrasen auszuführen.
  • Funktionsaufruf , wo eine Gruppe von verbundenen Berechnungen in einem separaten Thread (gesammelt Funktion , Verfahren , Verfahren ), die dann genannt aus anderen Teilen des Programms.

Branchen 

Die Zweige sind einige der grundlegendsten in einem Programm, weil die Basis von Computerberechnungen nur Zweige , wo überall ausgewertet , ob etwas wahr oder falsch ist. Einem Algorithmus ist nicht einfach eine lineare Sequenz von Berechnungen, aber je nach den Berechnungen der gegebenen Daten kann variieren, muss man auf zu prüfen , ob eine Bedingung erfüllt ist oder nicht. Jede Verzweigung beginnt daher mit einer Bedingung. Zweige können auch in eine andere eingebettet werden (eng. Nested ), so können Sie drei oder mehr Straßen der bestimmten Stelle im Algorithmus gehen.

Ein Stück Programmierung in BASIC mit Beispielen von GOTO Sätze.

In den ältesten Programmiersprachen Umsetzung auch Verzweigungen Etiketten mit (eng. Labels ) bei bestimmten Phrasen oder Zeilennummern mit kombinierten GOTO – Sätze, die im Programm gesagt , wo Sie gehen sollten. GOTO Sätze könnte jedoch leicht zu Fehlern im Programmablauf führen, weil jeder „Zweigniederlassung“ einer Niederlassung sollte eine sein GOTO Verlust der Küste sowohl auf dem Ast zu starten und zu beenden. Heute gibt es andere Möglichkeiten , um zu zeigen , dass eine Gruppe von Sätzen gehören zusammen in einer „branch“. Normalerweise verwenden Sie die Schlüsselwörter wie IF ... THEN ... ELSE ... eine Verzweigung zu implementieren, oder SWITCH ... , SELECT ... usw. an einer breiteren Verzweigung.

Loops 

Wenn eine Gruppe von Sätzen mehrmals durchgeführt werden, führt man eine Schleife in dem Programm. ein Wieder verwenden , um einen Zustand jedes Mal ausgewertet werden Iteration der Schleife beginnt oder endet. Ein sehr wichtiges Element bei der Programmierung einer Schleife ist , um sicherzustellen , dass die Gruppe von Phrasen in der Schleife , die Daten in einer Weise ändert , die die Bedingung zu einem bestimmten Zeitpunkt das Programm bewirkt , dass von der Schleife weg zu springen. Wenn nicht, geht das Programm in eine Endlosschleife mit fatalen Folgen für die Umsetzung.

Auch Schleifen wurden in den ältesten Programmiersprachen implementiert werden. GOTO Phrasen und wie in einem Zweig könnte sein , komplex zu platzieren GOTO korrekt im Programm – Sätze. Heute Schleifen mit Keywords so implementiert. WHILE ... DO ... , REPEAT ... UNTIL ... oder FOR ... NEXT ... .

Funktionsaufruf 

Wenn Sie die gleiche Art von Berechnungen an mehreren Stellen in einem Programm, oder wenn eine Gruppe von Phrasen ausführen müssen , so viel Zeit hören zusammen als die Sätze um sie herum , dass Sie den Wunsch haben, „sie in packen“, ist es vorteilhaft , erstellen Sie eine Funktion (auch bekannt Verfahren , (Teil-) Routine , Methode ). Die Funktion kann eine bis mehrere Parameter , wie beispielsweise dem „Eingabedaten“, empfangen und kann daher ein Ergebnis als „Ausgangsdaten“ zurückzukehren. Die Orte , in dem Programm , in dem die Berechnungen durchgeführt werden, implementieren sie als Aufruf der Funktion mit einigen aktuellen Werte als Parameter, und eine mögliche Rückgabewert der Funktionsaufruf kann dann abholen und arbeiten. Ein Vorteil der Funktionen ist , dass Variablen erstellt nur aus Gründen der Berechnungen innerhalb der Funktion deklariert werden lokal in der Funktion, so dass andere Teile des Programms kann nicht manipulieren, geschweige denn , sie sehen.

Funktionsaufruf war schwierig zu implementieren, da nur hatte GOTO verfügbar Sätze. Es könnte mit wenig Daten Disziplin für alle Variablen, auch auf lokaler Ebene in der Funktion, könnte im Prinzip durchgeführt werden überall (verwendet werden global ). Mindestens beide Parameter mit und Rückgabewerte ( die Schnittstelle zwischen dem rufenden Stelle im Programm und Funktion), verwendet , um sowohl innerhalb als auch außerhalb der Funktionsgruppe von Sätzen. Schließlich sollte eine Variable sein, die das Label Programm zeigte sollte zurückkehren , wenn die Funktion beendet wurde. Noch komplexer war , dass , wenn Sie einen so genannten zu tun waren Rekursion , wo eine Funktion intern in ihren Berechnungen selbst nennt. Da jeder Funktionsaufruf an das aufrufende Stelle im Programm finden konnte, musste man programmatisch eine Begrenzung der Anzahl der machen rekursive Anrufe, die in der anderen sein könnte.

Strukturierte Programmierung

Die umfangreiche Verwendung von GOTO – Sätze bei der Umsetzung von Verzweigungen, Schleifen und Funktionsaufrufe könnte sehr leicht zu verwirrend führen Spaghetti – Code . Insbesondere die Grenzen der Funktionsaufrufe , die die Notwendigkeit hervorgerufen zu „einschließen“ , eine Gruppe von verbundenen Sätze in einem Block , zum Beispiel. mit einer eingeklammerten BEGIN ... END Strukturen oder andere Arten von Klammern. Solche Blöcke sind beide um die Sätze , die in dem einen Zweig und eine Iteration in einer Schleife durchgeführt werden, aber sie sind besonders nützliche Funktionen, die Parameter zu erklären, Rückgabewerte, lokale Variablen. Zusammen mit der neuen Sprache mit solchen Einrichtungen aufgetreten programmeringsparadigmet strukturierte Programmierung .

In den meisten Sprachen für die strukturierte Programmierung entworfen haben auch die Möglichkeit , eine Funktion innerhalb der „Körper“ einer anderen Funktion zu deklarieren. Auf diese Weise kann eine Funktion enthalten , die nicht nur lokale Variablen, sondern auch lokale Funktionen. Es wird in der Regel sagen , dass die lokalen Variablen oder Funktionen in einer Funktion kann von außen nicht „gesehen“ werden kann; Sie sprechen über , dass ihr Umfang nur die Funktion selbst oder Funktionen innerhalb der Funktion deklariert ist. In Sprachen , die automatisch gelten nicht, ist es auf den Programmierer selbst Daten Disziplin bei der Verwendung von Variablen bereitstellt. Neben der Vermeidung der Verwendung von GOTO – Sätze Konsistenz über Variablen und Funktionen Umfang wahrscheinlich der wichtigste Weg zu vermeiden Spaghetti – Code in die strukturierte Programmierung.

Komplexität 

Strukturierte Programmierung eröffnet auch mehr Möglichkeiten für die Arbeit mit abstrakten Datentypen , dh komplexe Datenstrukturen mit Hilfe der. Referenztypen (Zeiger / Zeiger), Post-Typen und Besonderheiten werden optimiert durchzuführen, zum Beispiel. Einsetzen für einzelne Angebote oder suchen. Mit der größeren Möglichkeiten sich auch größere Notwendigkeit , die Wirksamkeit eines Programms zu beurteilen, insbesondere im Hinblick auf die Algorithmuskomplexität . Dies bezieht sich auf eine Beurteilung des Ausmaßes , in dem die Berechnungszeit des Algorithmus zunimmt , wenn die Datenmenge zunimmt. Dies gab den Programmierer Werkzeuge , um die wirksamsten Algorithmus für sein Programm zu identifizieren.

Objektorientierte Programmierung 

In den ersten Computern interagierten Benutzer eine textbasierte Verwendung von Kommandozeilen – Schnittstelle an den Computer – Betriebssystem . [1] Auf einer Kommandozeilen – Aufruf, zum Beispiel. Programm durch seinen Namen von beliebigen Parametern als Eingabe gefolgt eingeben. Wenn das Programm seine Aufgabe erfüllt hat, antwortet er mit einem beliebigen Text – Ausgabe zurück und ermöglicht dem Benutzer einen neuen Befehl einzugeben. In dem Fall einer sogenannten linearen Kommunikation zwischen dem Benutzer und dem Computer , auf dem eine von ihnen die ganze Zeit für die andere warten.

Mit dem Aufkommen von Computern mit einer grafischen Benutzeroberfläche (GUI, der von der Wiese. Grafische Benutzeroberfläche ), Eingang und Ausgang wesentlich komplexer. Der Benutzer kann nicht nur die Texteingabe mehrere Orte auf dem Bildschirm liefern, aber es wird auch über verschiedene Geräte wie kommuniziert Tastatur , Maus und Scanner , und es gibt keine Regeln für die Reihenfolge , nach denen Kommunikation stattfindet. Der Computer führt mehrere Threads .

Dadurch erhöhte sich die Entwicklung der objektorientierten Programmierung . Diese Programmierparadigma der Arbeit mit dem Konzept eines Objektes , die definiert ist als Ganzes mit Identität, Zustand und Verhalten . [2]Derartige Objekte können beispielsweise einzelne Komponenten sein , die ein Bildschirm unterteilt ist, und die verschiedenen Teile der Hardware durch den Benutzer verwendet. Aber es kann auch Objekte oder Konzepte aus dem IT – System sein Problembereich , der Teil der Umgebung des Systems muss das System widerspiegeln. Es ist die Aufgabe der objektorientierte Analyse und Design zu identifizieren , welche aufgenommen werden , um Objekte.

Darüber hinaus kann ein Objekt eine erweiterte Datenstruktur sein, eine dynamische Sammlung von Variablen des gleichen Datentyp, optimiert für die Suche oder sortieren oder schnelle Einsetzen und Entfernen von Elementen zu manipulieren.

Klassen

In der objektorientierten Programmierung spaltete den Programmcode in Klassen , die jeweils mit einem eigenen gut definierten Verantwortlichkeiten im Programm. Ein Objekt ist eine Instanz ( Beispiel ) der Klasse. Ein Objekt kann somit als eine Variable in dem Programm zu sehen ist, und die Klasse ist Variablentyp. Der Zustand des Objekts wird beschrieben ist . Member – Variable , die nur in der Regel hat Umfang in der Klasse. Das Verhalten des Objekts wird unter Verwendung beschrieben ist . Methods , Funktionen mit Parametern , die von außen und die manipuliert medlemsvariablene aufgerufen werden kann. Schließlich wird die Identität des Objekts zu sichern durch andere Teile des Programms hat nur dieses Objekt als Variable in Form einer Referenz an das Objekt. Zwei variable in verschiedenen Teilen des Programms kann tatsächlich ein und dasselbe Objekt in Wechselwirkung mit.

Objektorientierte Programmierung hat drei Grundprinzipien:

  1. Verkapselung
    Die Aufgabe des Staates ist von außen nicht sichtbar, aber sein Verhalten wird durch eine bestimmt Schnittstelle von Methoden , die die Außenwelt (durch Methodenaufruf) verwendet.
  2. Erbschaft
    Die Klassendefinitionen von Variablen und Methoden kann erweitert werden , um eine neue Klasse zu definieren. Sie sagen , dass eine Unterklasse von einer übergeordneten Klasse erbt . Somit ist es eine Aufgabe der Subklasse auch eine Instanz der Oberklasse.
  3. Polymorphismus
    Zwei Unterklassen mit der gleichen Superklasse können die gleiche Methode von der übergeordneten Klasse erben, sondern zeigen ein anderes Verhalten , wenn die Methode aufgerufen wird. Jeder hat seine eigene Implementierung des Verfahrens, und möglicherweise überschreiben die Super Durchführung des Verfahrens.

Mit diesen Grundsätzen sind wir zum Beispiel in der Lage. erhalten eine GUI um das gewünschte Verhalten zu zeigen. Wenn Sie eine bestimmte Komponente anders zu verhalten wollen, definieren Sie eine neue Klasse, die von dieser Komponente erbt und eine neue Implementierung der Methoden geben.

Die meisten Kodierungsoptionen in der strukturierten Programmierung wird auch auf die objektorientierte Programmierung übertragen. Allerdings ist die Möglichkeit , eine Funktion lokal in einer anderen Funktion zu definieren , nicht auf eine Klasse Methoden übertragen. Im Gegensatz dazu gibt es in einer Klasse definieren eine andere sogenannte innere Klasse, die in vielerlei Hinsicht verwendet werden , wenn in der strukturierten Programmierung lokalen Funktionen verwenden würde.

Verantwortlichkeiten

In einem Programm mit vielen Klassen kann oft schwierig sein, genau zu bestimmen, welche Aufgaben für die Klassen geteilt werden. Eine allgemeine Regel in dieser Ausgabe – das ist im Grunde ein Designproblem ist – ist, dass Sie die Klasse zu lassen, die die notwendigen Informationen verfügt, Aufgabe. Das bedeutet, dass, wenn beispielsweise. ein Laufzeitfehler in einer Klasse, und die Klasse über ausreichend Informationen, um den Fehler zu behandeln, die sich selbst verwalten die anstelle des Sendens, das Problem auf eine andere Klasse zu schaffen.

Eine weitere allgemeine Regel ist , dass, wenn möglich, lassen Sie die Abhängigkeit zwischen zwei Klassen gehen nur in eine Richtung , in der „Abhängigkeit“ bedeutet , dass der Code in einer Klasse ist abhängig von der Kenntnis der zweiten Klasse – Schnittstelle. In der objektorientierten Programmierung kann nämlich schaffen Spaghetti – Code . Zum Beispiel. verlockend sein , ein GUI – Fenster zu definieren , die Pflege Daten braucht , um auch die Bereitstellung einer Benutzeroberfläche zusätzlich zu bewerten , dass der Benutzer in eingibt, und speichert sie in einer Datenbank. Dies kann angemessen sein , wenn es nur wenige Arten von Daten in einem System sind, aber wenn zum Beispiel. viele Verbindungen zwischen Daten in einer Datenbank , die mehrere GUI – Fenster für Benutzereingaben erfordert, kann es so viele Abhängigkeiten zwischen den verschiedenen Klassen sein, erschwert es die Wartung des Codes. Es ist die Lösung zu erhalten eine angemessene Aufteilung der Verantwortlichkeiten auf jeder Klasse gemacht.

Eine solche Aufteilung, zum Beispiel. in der so genannten 3-Schichten – Modell (engl. 3-Tier – Modell ), auch MVC (von engl. genannt Model-View-Control ). In einem solchen Willen , die Aufgaben zu organisieren , wie folgt:

  • Modell: Hier definieren Sie Klassen, die die Klassen in den Themenbereich reflektieren. Die Klassen werden in erster Linie Daten speichern und auswerten, die Daten von außen empfängt. Wo immer möglich, sollten die Klassen hierarchisch aufgeteilt werden, so dass die Abhängigkeit geht nur „down“.
  • Anzeigen: Diese steht für Benutzerschnittstelle, entwickelt, um Daten für die einzelnen Objekte in dem Modell bereitzustellen. Der Unterricht hier muss Kenntnisse haben über eine oder mehrere Klassen im Modell. Die einzige Auswertung der eingegebenen Daten in dem Ausmaß, dass sie offensichtlich nicht nützlich sein kann.
  • Steuerung: Das muss Geschäftsprozesse im Programm verwalten und haben Kenntnisse sowohl das Modell und die Benutzeroberfläche. Darüber hinaus abrufen die Daten über das Modell aus einer Datenbank und liefern sie an die Benutzeroberfläche, und es ist, Daten über das Modell in der Datenbank zu speichern.