Multimedia im Überblick/ Ergänzung/ Programmierung

Aus Wikibooks
Zur Navigation springen Zur Suche springen


Geschichte[Bearbeiten]

Mit der Entwicklung von Maschinen und deren Weiterentwicklung im Laufe der Jahrzehnte im 20. Jahrhundert entstanden aus einfachen elektrischen Schaltungen komplizierte Systeme aus elektronischen Bauelementen.

Schon bei den einfachen elektrischen Schaltungen galt wie bei der jetzigen Maschinensprache der Zustand „Strom aus“ ist „0“ und „Strom ein“ bedeutet „1“. Den ersten Automaten wurden diese meist einfachen aber sich oft wiederholende Befehle mit Lochkarten oder gelochten Bändern eingespeist. Diese Befehlsketten bestehend aus „z.B.: 1001101111011001000101“ mussten vorher mühsam erstellt werden und waren für das menschliche Denken bei langen Abfolgen von Befehlen nicht mehr überschaubar.

Die Lösung dieses Schnittstellenproblems war die Annäherung an die menschliche Sprache. Das Ziel war die Programmierung der Maschinen mit einer Sprache die unserer Kommunikation untereinander ähnlich ist. Damit war die Möglichkeit einer leichteren Entwicklung von Arbeitsprozessen gegeben.

Es entstanden einige Vorläufer der jetzigen Programmiersprachen aus denen sich eine Vielzahl von weiteren darauf aufbauenden Sprachen entwickelte.

Programme[Bearbeiten]

Nach dem Einsatz von maschinennahen Assemblersprachen zur Programmierung von automatisierten Arbeitsschritten entstand im Laufe der folgenden Jahrzehnte eine Vielzahl von Programmiersprachen. Daraus entwickelte sich das Konzept der „Imperativen Programmierung“. Als Beispiel wird die BASIC-Programmierung gezeigt.

10 INPUT “LAENGE“; L 20 INPUT “BREITE“; B 30 INPUT “HOEHE“; H 40 F=(L*B+L*H+B*H)*2 50 V=L*B*H 60 PRINT “FLAECHE= “;F 70 PRINT “VOLUMEN= “;V 80 END

Die “Imperative Programmierung” versteht ein Programm als Folge von Befehlen, die vom Rechner in einer definierten Reihenfolge durchläuft. Typische Programmiersprachen dafür sind “Pascal“ und “C“. Darin enthalten waren schon Variablen zur Speicherung von Zwischenergebnissen und Sprungelemente wie “goto“ sowie auch Kontrollflusselemente wurden eingeführt, wie Schleifen “for next“ oder Verzweigungen “if then“.

Aus der „imperativen Programmierung“ entwickelte sich die “Prozedurale Programmierung“. Der Ansatz ist die Computerprogramme in Teilaufgaben aufzubauen. Der kleinste Schritt im Programm ist die Anweisung. Das Programm schreitet von Anweisung zu Anweisung hindurch bei der Ausführung. Ein Pascal-Programm wird als Beispiel gezeigt:

PROGRAM Quader; USES Crt; VAR X,Y,Z,F,V: Real; BEGIN ReadLn(X); ReadLn(Y); ReadLn(Z); F:= (L*B+L*H+B*H)*2 V:= L*B*H WriteLn(’Flaeche= ’,F); WriteLn(’Volumen= ’,V); END;

So erhoffte man sich schon die Widerverwendbarkeit und die vereinfachte Gestaltung des Programmcodes. Was nicht immer gelang.

Nach dem Einsatz von maschinennahen Assemblersprachen zur Programmierung von automatisierten Arbeitsschritten entstand im Laufe der folgenden Jahrzehnte eine Vielzahl von Programmiersprachen. Daraus entwickelte sich das Konzept der „Imperativen Programmierung“. Als Beispiel wird die BASIC-Programmierung gezeigt.

10 INPUT “LAENGE“; L 20 INPUT “BREITE“; B 30 INPUT “HOEHE“; H 40 F=(L*B+L*H+B*H)*2 50 V=L*B*H 60 PRINT “FLAECHE= “;F 70 PRINT “VOLUMEN= “;V 80 END

Die “Imperative Programmierung” versteht ein Programm als Folge von Befehlen, die vom Rechner in einer definierten Reihenfolge durchläuft. Typische Programmiersprachen dafür sind “Pascal“ und “C“. Darin enthalten waren schon Variablen zur Speicherung von Zwischenergebnissen und Sprungelemente wie “goto“ sowie auch Kontrollflusselemente wurden eingeführt, wie Schleifen “for next“ oder Verzweigungen “if then“.

Aus der „imperativen Programmierung“ entwickelte sich die “Prozedurale Programmierung“. Der Ansatz ist die Computerprogramme in Teilaufgaben aufzubauen. Der kleinste Schritt im Programm ist die Anweisung. Das Programm schreitet von Anweisung zu Anweisung hindurch bei der Ausführung. Ein Pascal-Programm wird als Beispiel gezeigt:

PROGRAM Quader; USES Crt; VAR X,Y,Z,F,V: Real; BEGIN ReadLn(X); ReadLn(Y); ReadLn(Z); F:= (L*B+L*H+B*H)*2 V:= L*B*H WriteLn(’Flaeche= ’,F); WriteLn(’Volumen= ’,V); END;

So erhoffte man sich schon die Widerverwendbarkeit und die vereinfachte Gestaltung des Programmcodes. Was nicht immer gelang.

Objektorientierte Programmierung[Bearbeiten]

Der nächste Schritt um die Eigenschaften zu erfüllen war zur „objektorientierten Programmierung“. Als Beispiel wird die Java-Programmierung verwendet.

Java ist Programmiersprache der Firma Sun, die im Jahr 1995 erstmals angekündigt wurde. Der ursprüngliche Name war Oak.

Was ist Java?[Bearbeiten]

Java ist eine objektorientierte, plattformunabhängige Programmiersprache, die für zahlreiche Betriebssystem- und Prozessor-Plattformen verfügbar ist. Java erreicht die Plattformunabhängigkeit, indem der Compiler keinen prozessorspezifischen Maschinensprachecode erzeugt, sondern einen prozessorunabhängigen Java-Bytecode, der zur Laufzeit der Anwendung von einem Just-in-Time-Compiler in Maschinencode übersetzt wird.

Was bedeutet Objektorientiert?[Bearbeiten]

Es ist möglich, bereits verwendete Programmteile wieder zu verwenden, ohne dass diese wieder neu geschrieben werden müssen. Die Grundidee der objektorientierten Programmierung ist, Daten und Funktionen, die auf diese Daten angewendet werden können, möglichst eng in einem so genannten Objekt zusammenzufassen und nach außen hin zu kapseln, so dass Methoden fremder Objekte diese Daten nicht versehentlich manipulieren können.

Was ist ein Just-in-time-compiler?[Bearbeiten]

Der JIT-Compiler übersetzt während der Laufzeit bei Bedarf den Bytecode in einen nativen Maschinen-Code (also ein Code, den der Prozessor direkt verarbeiten kann).

Klassen, Objekte, Methoden[Bearbeiten]

class BankKonto { public static void main (String)[] args) }

BankKonto … Klasse public static void … Methode (Bezeichnung) main … Methode String … Variable, steht für eine Methode

Klassen:[Bearbeiten]

Die Klasse ist ein Mittel zur Beschreibung der Eigenschaften von Objekten der realen Welt mit denen sich das Programm befassen soll. Die Klasse hat Eigenschaften und Fähigkeiten. Diese nennt man Datenfelder (fields) und Methoden. Gemeinsam bilden sie die Attribute einer Klasse (members). Die Klasse erhält Eigenschaften durch Deklaration der Datenfelder, die die Objekte dieser Klasse zum Speichern von Informationen verwenden können. Deklarationen geben sowohl den Namen als auch den Typ des Datenfeldes an.

z.B. Klassenaufbau: class BankKonto //Klasse BankKonto { float fHaben; //Variablendeklaration float fSoll; int intNummer;

public void auszahlen(float Betrag) //Methode { … } }

Objekte:[Bearbeiten]

Ein Objekt ist die konkrete Ausprägung einer Klassenbeschreibung. Werden neue Objekte einer Klasse erzeugt, heißt das „Instanz“ einer Klasse erzeugen. Die Identität (Objektreferenz) wird in einer Variable gespeichert. BankKonto bk = new BankKonto(Nummer)

Methoden:[Bearbeiten]

Fähigkeiten einer Klasse werden mit einer oder mehreren Methoden ausgedrückt. Diese Instruktionen bezeichnet man auch als Anweisungen. Diese sind in folgende Kategorien unterteilt:

  • Aufruf (call, invocation), veranlasst die Ausführung einer Methode
  • Zuweisung (assignment), ändert den Zustand einer Variablen durch Einsetzen eines anderen, gleichartigen Wertes
  • Wiederholung (repetition), führt bestimmt Anweisungen immer wieder aus
  • Auswahl (selection), entscheidet ob bestimmte Anweisungen ausgeführt werden oder nicht
  • Ausnahme (exception), entdeckt ungewöhnliche Vorgänge und reagiert darauf

Variablen:[Bearbeiten]

Variablen dienen dazu, Daten im Hauptspeicher eines Programms abzulegen, gegebenenfalls zu lesen oder zu verändern. In Java gibt es drei Typen von Variablen:

  • Instanzvariablen, die im Rahmen einer Klassendefinition definiert und zusammen mit den Objekt angelegt werden.
  • Klassenvariablen, die ebenfalls im Rahmen einer Klassendefinition definiert werden, aber unabhängig von einem konkreten Objekt existieren.
  • Lokale Variablen, die innerhalb einer Methode oder eines Blocks definiert werden und nur dort existieren.

Variablendeklaration und Initialisierung:[Bearbeiten]

Eine Variable wird im Programm mit ihrem Namen deklariert. Beim Ausführen der Deklaration wird für die Variable Speicher angelegt, der einen Wert eines bestimmten Typs aufnehmen kann. Durch die Initialisierung erhält die Variable bei der Deklaration erstmals einen Wert, danach können andere Werte an die Variable zugewiesen werden.

Bsp. Variablendeklaration und Initialisierung: int intNummer; intNummer = 9;

Der Typ einer Variablen wird in ihrer Deklaration festgelegt. Es ist entweder ein Grundtyp oder ein Referenztyp, der durch den Namen einer Klasse angegeben wird. Zu den Referenztypen gehören Objekte, Strings und Arrays. Solche Variablen werden mit null initialisiert, wenn keine andere Initialisierung angegeben ist. Weiters gibt es eine vordefinierte Konstante null, die eine leere Referenz bezeichnet.

Grundtypen:[Bearbeiten]

int Ganzzahl Speicherumfang 32Bit
long Ganzzahl Speicherumfang 64Bit
short Ganzzahl Speicherumfang 16Bit
byte Ganzzahl Speicherumfang 8Bit
double Gleitpunktzahl Speicherumfang 64Bit
float Gleitpunktzahl Speicherumfang 32Bit
char Zeichen Speicherumfang 16 Bit
boolean Wahrheitswerte

Boolsche Werte[Bearbeiten]

In Programmen entscheiden Bedingungen (Boolscher Ausdruck) darüber, welche Alternative weiter verfolgt werden soll. Eine Bedingung ergibt den Wert wahr (true) oder falsch (false). Bollsche Ausdrücke verwenden zum Vergleich der Ergebnisse numerische Ausdrücke – die sechs Vergleichsoperatoren:

== gleich
!= ungleich
> größer als
< kleiner als
>= größer oder gleich
<= kleiner oder gleich

Boolsche Operatoren[Bearbeiten]

& und
Ι oder
^ exklusives oder (x or)
! nicht

Damit:

(x & y) wahr x wahr und y wahr
(x I y) wahr x wahr oder y wahr

Rangfolge: wenn keine Klammern sind, wird & immer vor | ausgewertet

Zeichen und Zeichenreihen – char[Bearbeiten]

In Java ist eine Zeichenreihe ein Objekt, und ein einzelnes Zeichen in Anführungszeichen, z.B. ’a’, ist auch eine Zeichenreihe. Für einzelne Zeichen stellt Java einen einfacheren Datentyp zur Verfügung, nämlich char. Dieser umfasst alle auf der Tastatur vorkommenden Buchstaben, Zahlen und Symbole. Weiters können mit den Fluchtzeichen noch einige weitere Symbole dargestellt werden:

\b Backspace
\t Tabulator
\n Neue Zeile
\f Neue Seite
\r Zurück zum Seitenanfang

Arithmetische Operatoren[Bearbeiten]

Java kennt die üblichen arithmetischen Operatoren, nämlich Addition, Subtraktion, Multiplikation, Division und den Restwertoperator. Arithmetische Operatoren erwarten numerische Operanden und liefern einen numerischen Rückgabewert.

* Multiplikation
/ Division
+ Addition
- Subtraktion
% Restwertoperator (Rest einer Division)

Wie in der Mathematik werden Multiplikation und Division vor Addition und Subtraktion ausgewertet. Wichtig ist dabei, auf Klammern zu achten!

Ausgabe:[Bearbeiten]

System.out.println();

System … Klasse out … Objekt in der Variablen println … Methode

Diese Anweisung mit leerer Klammer bedeutet Leerzeile. Diese kann auch mit /n (new line) dargestellt werden. Wenn in der Klammer unter Anführungszeichen etwas drinnen steht, wird dieses ausgegeben.

z.B. System.out.println(“Hello World“);

Vererbung[Bearbeiten]

Durch Vererbung werden bestehende Klassen weiterverwendet und zusätzlich erweitert.

	class GehaltsKonto extends BankKonto	//Klasse GehaltsKonto erweitert 
	{						//mit BankKonto
		float fLimit;   		//Deklaration der Variable fLimit

		public boolean pruefeLimit(float AuszahlungsBetrag)	//Methode
	{
		
	}
}

Datenkapselung[Bearbeiten]

Dafür werden Zugriffsbezeichner für Klassen, Methoden oder Variablen verwendet. z.B. public, private, protected Damit wird die Sichtbarkeit nach außen gesteuert und unerwünschte Zugriffe und Änderungen von Attributen können verhindert werden. Nur durch spezielle Schnittstellen (Methoden) können Änderungen durchgeführt werden.

z.B. Datenkapselung:

public class BankKonto
{
	private float fHaben;
	private float fSoll;
	private int intNummer;

	public void auszahlen(float Betrag)
	{
		fSoll = fSoll + Betrag;
	}

	public void einzahlen(float Betrag)
	{
		fHaben = fHaben + Betrag;
	}

	public void ueberweisen(float Betrag)
	{
		fHaben = fHaben  Betrag;
	}
}

Syntax:[Bearbeiten]

ScreenJava.JPG

Wichtig ist, beim Programmieren auf die Syntax zu achten. Der großen Vorteil, den Eclipse bietet, besteht darin, dass während des Programmierens bereits auf Fehler hingewiesen wird. Diese Hinweise sieht man entweder rot unterwellt bzw. als rotes Kreuz am linken Seitenrand. Um die Fehlermeldung lesen zu können, bedarf es zwar einiger Übung, aber mit der Zeit bekommt man ein Gefühl dafür, was der Fehler sein könnte.

Was ist die Syntax?[Bearbeiten]

Syntax sind die Regeln, die beim Programmieren einzuhalten sind, ähnlich wie die Grammatik in einer Sprache.

  • Geöffnete Klammern müssen wieder geschlossen werden
  • wenn mehrere Wörter in einer Variable deklariert werden, müssen diese zusammengeschrieben werden, das neue Wort muss großgeschrieben werden

z.B. int intNummer = 9; float fLimit = 8000;

  • Nach Deklarationen und Initialisierungen muss ein Semikolon (;) gesetzt werden
  • Einrückungen für bessere Lesbarkeit des Programms
  • auf natürliche Sprache, Namen und Abkürzungen achten
  • auf Groß/Kleinschreibung achten
  • Klassen beginnen immer mit Großbuchstaben
  • Variablen, Methoden, Objekte beginnen immer mit Kleinbuchstaben
  • Konstanten bestehen ausschließlich aus Großbuchstaben
  • Keine Umlaute und Sonderzeichen verwenden
  • vor allem, wenn man noch nicht so gut programmieren kann, sollte man genügend Kommentare einbauen
//  für einzeilige Kommentare, /* für mehrzeilige Kommentare */

Quellen[Bearbeiten]

BISHOP, J. (2000): Java lernen. München, Addison-Wesley-Verlag.
KRÜGER, G. (2002): Handbuch der Java-Programmierung. München, Addison-Wesley-Verlag
LOUIS D., MÜLLER P. (2000): Jetzt lerne ich Java, Markt & Technik
SEEBOERGER-WEICHSELBAUM M. (2002): Das Einsteigerseminar Java 2, Verlag Moderne Industrie AG & Co. KG
KASSERA W., KASSERA V.(1993): Turbo Pascal 7.0 Das Kompendium, Markt & Technik