Einführung in die Programmierung mit Java © 2010, Université de Fribourg Prénom Nom 2 Agenda Einführung in die Programmiersprachen 2. Und Java? 3. Die Grundlagen der Programmierung 4. Unser erstes Programm in Java 1. © 2010, Université de Fribourg 3 Einführung in die Programmiersprachen Was ist ein Algorithmus? Welche Sprache versteht ein Computer? Was ist ein Programm? Was ist eine Programmiersprache? …und Java? Was macht Java hier? © 2010, Université de Fribourg 4 Definitionen Algorithmus: endliche Reihe von Regeln welche in einer bestimmten Ordnung auf eine endliche Menge von Daten angewandt wird, um nach einer endlichen Anzahl Schritte zu einem Resultat zu gelangen. Daten: strukturierte Form der Informationen. Programm: übersetzte Form eines Algorithmus in eine vom Computer verstandene Sprache. Ein Programm ist eine Reihe von Anweisungen, welche die Operationen die auf die Daten angewandt werden, definiert. Problem Methode Algorithmus Programm © 2010, Université de Fribourg 5 Algorithmus Das Wort Algorithmus stammt aus dem Mittelalter und ist der lateinische Name des persischen Mathematikers al-Khuwārizmī (~783-850). Das Prinzip eines Algorithmus ist hingegen schon seit der Antike bekannt (Bsp: Euklidischer Algorithmus, bekannt seit 300 v. Chr.). © 2010, Université de Fribourg 6 Beispiel aus dem täglichen Leben Wie macht man Kaffee? 1. Wasser zum sieden bringen. 2. Kaffee in die Tasse geben. 3. Heisses Wasser in die Tasse geben. Kochrezept © 2010, Université de Fribourg 7 Eigenschaften von Algorithmen Algorithmen sind unabhängig vom Computer der sie ausführt. Algorithmen sind unabhängig von der Sprache in die sie übersetzt werden. Man kann sie auf Deutsch formulieren, mit Hilfe von Diagrammen oder als pseudo-code. © 2010, Université de Fribourg 8 Beispiel eines Algorithmus Problem: Wie berechnet man die Zinsen und den Kontostand nach einem Jahr mit festem Zinssatz? Eingabe: Ausgabe: Kontostand am Anfang des Jahres Zinssatz Abgeworfene Zinsen, Neuer Kontostand Algorithmus: 1. 2. 3. Den Kontostand mit dem Zinssatz multiplizieren und durch 100 teilen Den unter 1. erhaltenen Betrag zum Kontostand hinzufügen Die Resultate von 1. und 2. ausgeben. © 2010, Université de Fribourg 9 Algorithmen definieren Das vorangegangene Beispiel zeigt drei Schritte, die in den meisten Problemlösungen vorkommen: 1. Das Problem verstehen und die Daten (Input) erkennen. 2. Definieren welche Antwort (Output) man erwartet. 3. Festlegen wie die Daten behandelt werden müssen, um das gewünschte Resultat zu erhalten. Problem Methode Algorithmus Programm © 2010, Université de Fribourg 10 Algorithmen: Methodik Eine Technik um komplizierte Probleme lösen zu können, ist die top-down Methode. Prinzip: Zerkleinern des Problems in kleinere Einheiten die einfacher sind und separat behandelt werden; Jede dieser Einheiten wird ihrerseits wieder in kleiner Stücke aufgeteilt. Es ist wichtig zu wissen wann man aufhören muss! Sobald der Algorithmus steht, muss man ihn noch in eine von Computer verstandene Sprache übersetzen? Problem Methode Algorithmus Programm © 2010, Université de Fribourg 11 Die Maschinensprache Der Prozessor spricht eine spezielle Sprache, die Maschinensprache. Dabei handelt es sich um Daten wie sie beim Prozessor ankommen, das heisst eine Folge von 0 und 1 (man nennt sie auch binär-daten). Berechne den Durchscnitt ! 01101011001 Wir können diese Sprache nicht verstehen. Deshalb brauchen wir eine andere Sprache, mit der wir mit dem Computer kommunizieren können. Diese Zwischensprache nennt man Programmiersprache. © 2010, Université de Fribourg 12 Compiler Kode der in dieser Zwischensprache geschrieben ist, muss in Maschinensprache übersetzt werden, bevor der Prozessor den Anweisungen folgen kann. Diese Programme werden vom Compiler in Maschinensprache übersetzt. Eine Programmiersprache ist für uns Menschen ein Mittel, um einem Computer Anweisungen zu geben. Berechne den Durchschnitt ! 01101011001 Für alle Noten Berechne die Summe; Berechen die Anzahl; Durchschnitt = Summe/Anzahl Compiler © 2010, Université de Fribourg 13 Programme Ein Informatik Programm ist eine Folge von Anweisungen, welche vom Computer ausgeführt werden. Die Anweisungen werden eine nach der anderen ausgeführt. Die Anweisungen werden in einer Programmiersprache geschrieben. Wie man ein Programm schreibt, hängt stark von der gewählten Programmiersprache ab, denn es gibt viele Programmiersprachen. Zusätzlich muss der richtige Compiler ausgewählt werden. Jede Programmiersprache hat ihren eigenen Compiler. © 2010, Université de Fribourg 14 Quellkode Ein Programm ist eine einfache Textdatei, geschrieben mit einem Editor oder Textverarbeitungsprogramm. Man nennt diese Datei Quelldatei. Die Quelldatei enthält mehrere Linien Kode. Man nennt diese Linien Quellkode. Die Quelldatei muss kompilierbar sein. Der Compiler baut eine ausführbare Datei. Sie enthält alles was es braucht um selbständig zu funktionieren (unter Microsoft Windows enden diese Dateien mit .exe). © 2010, Université de Fribourg 15 Agenda Einführung in die Programmiersprachen 2. Und Java? 3. Die Grundlagen der Programmierung 4. Unser erstes Programm in Java 1. © 2010, Université de Fribourg 16 Die Sprache Java Java ist eine Programmiersprache Die wurde von den Angestellten der Sun Microsystems kreiert, unter anderem von James Gosling. Java wurde erstmals am 23 Mai 1995 offiziell präsentiert. "Duke" ist das Maskottchen der Programmiersprache Java. Java ist ein enormer technischer Erfolg. Die Sprache Java wird seit mindestens 10 Jahren in der ganzen Welt gebraucht. Natürlich auch in der Schweiz… © 2010, Université de Fribourg 17 Java ist überall Heutzutage ist Java überall. Man findet Java auf über 2 Billionen Maschinen in der ganzen Welt. © 2010, Université de Fribourg 18 Der Java Ansatz Java ist anders: Quellcode (.java) wird in Bytecode (.class) übersetzt. Bytecode ist eine Zwischensprache und ist portabel auf andere Betriebssysteme. Eine Maschine versteht Java, wenn sie die virtuelle Maschine von Java (JVM) installiert hat. © 2010, Université de Fribourg 19 Die virtuelle Maschine von Java "Write Once, Run Anywhere"™ Quellcode wird in eine .java Datei geschrieben. Der Compiler übersetzt den Quellcode in Bytecode und speichert ihn in einer .class Datei. Dieser Bytecode wird von der virtuellen Maschine Java (JVM) ausgeführt. Die JVM ist für alles Betriebssysteme verfügbar. Ein Java Programm wird demnach einmal geschrieben und kompiliert und kann dann beliebig ausgeführt werden. Man sagt dass Java portabel ist. © 2010, Université de Fribourg 20 Java-Plattform Java ist ein Programmiersprache. Sie wird von einer EntwicklungsUmgebung begleitet die aus folgenden Teilen besteht: Die virtuelle Maschine Ein Compiler Eine Kollektion von Bibliotheken (wiederverwendbare(r) Kode/Programme die dem Entwickler zur Verfügung stehen) Werkzeuge, Beispiele, Umgebungen und vieles mehr… Man nennt eine solche Umgebung Plattform. © 2010, Université de Fribourg 21 Java-Plattform Java EE – Enterprise Edition: Umfasst “Client - Server” Technologien. Java SE – Standard Edition: Umfasst Technologien um Einzelplatz-Anwendung zu schreiben. Java ME – Micro Edition: Umfasst Technologien welche es erlauben tragbare Geräte zu programmieren (Natel, PDA usw.). Diese Geräte haben meistens begrenze Ressourcen. © 2010, Université de Fribourg 22 Agenda Einführung in die Programmiersprachen 2. Und Java? 3. Die Grundlagen der Programmierung 4. Unser erstes Programm in Java 1. © 2010, Université de Fribourg 23 Grundlagen der Programmierung Sehen wir uns nun einige Grundkonzepte der Programmierung an: Variabeln Zuordnung Kontrollstrukturen (if...else und for) Funktionen © 2010, Université de Fribourg true 24 Variabeln 6.14 fini x nom Typ Name Wert réel x 6.14 texte nom karin booléen fini true Variabel: Abstraktion eines Ortes im Speicher durch einen Namen identifiziert, man kann ihr im Laufe der Zeit verschiedene Werte (Information) zuordnen, besitzt einen Typ. © 2010, Université de Fribourg 25 Zuordnung 6.14 x Zuordnung: Operation die einen Wert in einer Variable speichert. Der gespeicherte Wert ist oft das Resultat der Evaluation eines Ausdrucks (Expression). Eine Variable dient dazu, eine Information für einen späteren Gebrauch zu speichern. So liesst es sich: y = 0 liesst sich "y wird der Wert 0 zugeschrieben" y = 0 Variable Konstante ohne Namen x = 3 + Pi Variable Konstante ohne Namen Konstante Mit Namen © 2010, Université de Fribourg 26 Beispiele in Java Deklarieren einer Variable: ihr einen Namen und einen Typ geben int x; int y; int sum; Einer Variable einen Wert zuordnen: x = 3; y = 4; sum = x + y; © 2010, Université de Fribourg Sequentielles Ausführen von Instruktionen 27 Der normale Ausführungsfluss ist sequentiell: nach dem Ausführen einer elementaren Instruktion, wird anschliessend die gleich darauffolgende Instruktion im Programm aktiv. Mit der Hilfe von Kontrollinstruktionen ist es möglich, diesen linearen Verlauf abzuändern: bedingte (konditionelle) Instruktionen Instruktionen für „Repetition“ oder „Iteration“ oder Schlaufen © 2010, Université de Fribourg 28 Bedingte (konditionelle) Instruktion Durch die Evaluation einer Bedingung (Kondition) wird bestimmt, ob der folgende Instruktionsblock ausgeführt wird oder nicht. Das Resultat der Bedingung ist typischerweise boolesch (true / false). Weiche: Wenn-Dann-Sonst wenn Bedingung dann Instruktion1 [sonst Instruktion2] ende_wenn © 2010, Université de Fribourg 29 IF Struktur Die IF Struktur ist: if (expression1) { Befehle1 } else if (expression2) { Befehle2 } else Befehle3 } Befehle1 Befehle2 Befehle3 if expression1 liesst sich „wenn expression1 wahr ist". Die Abschnitte else if und else sind optional. © 2010, Université de Fribourg 30 Beispiel in Java Algorithmus „Maximum zweier ganzen Zahlen": int x; int y; int max; x = 123; y = 456; if (x > y) { max = x; } else { max = y; } © 2010, Université de Fribourg 31 Iterative Instruktion Erlaubt es, den gleichen Instruktionsblock mehrmals hintereinander auszuführen. Diese Instruktion evaluiert eine Repetitionsbedingung die entscheidet, ob der Instruktionsblock noch einmal ausgeführt wird oder nicht („man geht aus der Schlaufe“). wahr falsch Solange eine Bedingung erfüllt ist solange Bedingung mache Instruktionen ende_solange © 2010, Université de Fribourg 32 FOR Struktur Die FOR Struktur erlaubt eine Instruktion n mal zu wiederholen. wahr falsch for (Initialisierung; Bedingung; Inkrement) { Befehle } Initialisierung wird einmal am Anfang der Schlaufe ausgeführt. Solange Bedingung wahr ist, werden die Befehle ausgeführt. Das Inkrement wird nach jeder Iteration ausgeführt; oft inkrementiert dieser Ausdruck einen Wert. © 2010, Université de Fribourg 33 Beispiele in Java Algorithmus „die n ersten Zahlen aufsummieren“: int sum; sum = 0; for (int i = 1; i < 6; i++) { sum = sum + i; } Algorithmus „Anzahl e‘s in einem Wort ": String s; s = "Donaudampfschiffahrtsgesellschaft"; int count; count = 0; for ( int i = 0; i < s.length(); i++ ) { if ( s.charAt(i) == 'e' ) { count++; } } © 2010, Université de Fribourg 34 Methoden Man kann einen Teil eines Kodes als Methode oder Funktion definieren. Eine Funktion ist also ein Unterprogramm, das Eingaben (Parameter oder Input) und eine Ausgabe (Output) hat. Die Funktionen erlauben ein Programm zu zerlegen und zu strukturieren. Funktionen werden auch Methoden oder Prozeduren genannt. Eine Programmiersprache stellt mehrere Funktionen zur Verfügung (mathematisch, Umgang mit Daten, …). © 2010, Université de Fribourg 35 Deklaration einer Methode Eine Methode wird wie folgt deklariert: returnType methodName(paramType p, ...) { commands } returnType ist der Typ des Rückgabewerts der Methode methodName ist der Name der Methode paramType und p sind der Typ und Name des ersten Parameters der Methode (formeller Parameter) commands repräsentiert den Körper der Methode, das sind die Instruktionen die in dieser Methode ausgeführt werden. Danach kann die Methode aufgerufen werden, indem man ihr aktuelle Parameter übergibt: methodName(x,…); © 2010, Université de Fribourg 36 Beispiele in Java Deklaration der Methode, die den grösseren Wert zweier ganzer Zahlen zurückgibt: int max(int a, int b) { if (a > b) { return a; } else { return b; } } Aufruf der Methode: max(123, 456); Andere Beispiele: boolean isEven(int x); String reverse(String s); int average(int a, int b); © 2010, Université de Fribourg 37 … FRAGEN ? PAUSE ! © 2010, Université de Fribourg