Grundlagen der Programmierung Vorlesungsskript für das erste Semester Wirtschaftsinformatik

Größe: px
Ab Seite anzeigen:

Download "Grundlagen der Programmierung Vorlesungsskript für das erste Semester Wirtschaftsinformatik"

Transkript

1 Campus Hagen Fachbereich Technische Betriebswirtschaft Grundlagen der Programmierung Vorlesungsskript für das erste Semester Wirtschaftsinformatik Andreas de Vries und Volker Weiß Version: 15. September 2015 Dieses Skript unterliegt der Creative Commons License 4.0 (

2 Inhaltsverzeichnis 1 Grundlegende Sprachelemente von Java Einführung Das erste Programm: Ausgabe eines Textes Elemente eines Java-Programms Strings und Ausgaben Variablen, Datentypen und Operatoren Eingaben Zusammenfassung Prozedurale Programmierung Logik und Verzweigung Wiederholung durch Schleifen Statische Methoden Arrays Die for-each-schleife Mehrdimensionale Arrays Zusammenfassung Objektorientierte Programmierung Die Grundidee der Objektorientierung Klassendiagramme der UML Programmierung von Objekten Erzeugen von Objekten Fallbeispiel DJTools Zeit- und Datumfunktionen in Java Objekte in Interaktion: Fallbeispiel Konten Öffentlichkeit und Privatsphäre Vererbung Schnittstellen (Interfaces) Zusammenfassung Datenstrukturen: Collections Notation und Grundlagen Bedeutung sortierter Datenstrukturen Sortierung in Java Theoretische Konzepte für Datenstrukturen Java Collections Statische Methoden der Klasse Collections Zusammenfassender Überblick

3 Grundlagen der Programmierung 3 A Spezielle Themen 131 A.1 ASCII und Unicode A.2 Das Binärsystem A.3 javadoc, der Dokumentationsgenerator A.4 jar-archive: Ausführbare Dateien und Bibliotheken A.5 Formatierte Ausgabe mit HTML A.6 Call by reference und call by value A.7 enums Literaturverzeichnis 148

4 Vorwort Das vorliegende Skript umfasst den Stoff der Vorlesung Grundlagen der Programmierung im Rahmen des Bachelor-Studiengangs Wirtschaftsinformatik am Fachbereich Technische Betriebswirtschaft in Hagen. Es ist die inhaltliche Basis für die obligatorisch zu belegenden Praktika. Zwar ist das Skript durchaus zum Selbststudium geeignet, auch für Interessierte anderer Fachrichtungen oder Schüler, da keine besonderen Kenntnisse der Programmierung vorausgesetzt werden. Hervorzuheben ist aber die Erkenntnis: Schwimmen lernt man nicht allein durch Anschauen und Auswendiglernen der Bewegungsabläufe, sondern man muss ins Wasser! Ähnlich lernt man das Programmieren nur durch ständiges Arbeiten und Ausprobieren am Rechner. So trifft auch auf das Erlernen einer Programmiersprache das chinesische Sprichwort zu: Was man hört, das vergisst man. Was man sieht, daran kann man sich erinnern. Erst was man tut, kann man verstehen. Entsprechend kann dieses Skript nicht den Praktikumsbetrieb einer Hochschule ersetzen, in dem Aufgaben selbständig, aber unter Anleitung gelöst werden. Das Konzept. Die Straffung der Bachelor-Studiengänge gegenüber den traditionellen Diplomstudiengängen macht eine inhaltliche Modifikation auch der klassischen Programmierveranstaltungen im Rahmen des Informatikstudiums notwendig. Dies haben wir als Chance begriffen, das Thema der Datenstrukturen, deren theoretischer Betrachtung bisher ein breiter Raum eingeräumt wurde, direkt durch die praktische Arbeit mit ihnen einzuführen, also gerade in einer Programmierveranstaltung. Mit dem Collection-Framework von Java lässt sich dieses Vorhaben sehr gut umsetzen. Natürlich ist der knappen Zeit der Veranstaltung Tribut zu zollen, so dass wichtige Bereiche der Informatik hier nicht angesprochen werden können, so das Gebiet der Datenbanken, ohne die das heutige öffentliche und wirtschaftliche Leben nicht mehr funktionieren würde, oder das der Netzwerke, die insbesondere durch die Etablierung des Internet seit Mitte der 1990er Jahre zu einer Revolutionierung der Informationsflüsse unserer Gesellschaft geführt hat und weiter führen wird. Diese Inhalte werden in späteren Veranstaltungen des Studiums behandelt, für die diese Vorlesung die Grundlagen legt. Wenn Programmierung, welche Programmiersprache wählt man? Es gibt eine große Auswahl, so dass man Kriterien dazu benötigt. Eines dieser Kriterien ist, dass ein Programmieranfänger zunächst mit einer Compilersprache lernen sollte, da einerseits die Suche nach Ursachen für (nicht nur am Anfang) auftretende Fehler durch die Trennung von Syntax- und Laufzeitfehlern einfacher ist, andererseits wichtige Konzepte wie Typisierung in Interpretersprachen nicht vorkommen und daher ein Erlernen einer solchen Sprache nach Kenntnis einer Compilersprache viel einfacher ist als umgekehrt. Ein weiteres Kriterium ist sicherlich die Verbreitung einer Sprache; da zur Zeit ohne Zweifel die Familie der C-Syntax also Sprachen wie C, C++, 4

5 Grundlagen der Programmierung 5 Java, C#, aber auch Interpretersprachen wie JavaScript und PHP die meist verwendete ist, sollte es auch eine derartige Sprache sein. Die derzeit beste Wahl erscheint uns daher Java. Java ist der wohl optimale Kompromiss aus modernem Konzept, praktikabler Erlernbarkeit und vielfältiger Erweiterbarkeit in speziellere Anwendungsgebiete. Java ist in der relativ kurzen Zeit, die es existiert, zu dem großen Arsenal standardmäßig bereitgestellter Programme und Softwarekomponenten geworden, die Java API. Einen vollständigen und detaillierten Überblick kann man nur allmählich mit intensiver Arbeit am Rechner bekommen. Inhaltliches Ziel dieses Skripts ist die Vermittlung des Stoffs folgender Themen: Grundlegende Sprachelemente von Java. (Ausgaben, primitive Datentypen und Strings, Eingaben) Einführung in die prozedurale Programmmierung. (Verzweigungen, logische Operatoren, Schleifen, statische Methoden, Erstellen einfacher Algorithmen) Einführung in objektorientierte Programmmierung mit Java. (Objekte, Objektattribute und -methoden, Klassendiagramme nach UML, Interfaces) Insbesondere soll ein Einblick in die Mächtigkeit gewährt werden, die das Paradigma der Objektorientierung liefert. Die Sicht auf Objekte vereinfacht und lokalisiert viele komplexe Probleme radikal, so dass manches Mal komplizierte Lösungsalgorithmen in einfache Teilalgorithmen zerfallen. Anwendungsorientierte Einführung in Datenstrukturen. (Verkettete Listen, Bäume, Mengen, Zuordnungen) Literatur und Weblinks. Die Auswahl an Literatur zu Java ist immens, eine besondere Empfehlung auszusprechen ist fast unmöglich. Unter den deutschsprachigen Büchern sind die folgenden zu erwähnen, die dieses Skript ergänzen: das umfassende Lehrwerk Einführung in die Informatik von Gumm und Sommer [5], das Handbuch der Java-Programmierung von Guido Krüger [8], geeignet als Nachschlagewerk, und Java ist auch eine Insel von Christian Ullenboom [10], ein Überblick über fast alle Bereiche von Java. Sehr gründlich und detailliert sind das Java 5 Programmierhandbuch von Ulrike Böttcher und Dirk Frischalowski [1], sowie der zweibändige Grundkurs Programmieren in Java von Dietmar Ratz, Jens Scheffler und Detlef Seese [9]. Als Weblink sind die englischsprachigen Tutorials von Sun zu empfehlen, sie geben Überblick über verschiedene Themen von Java ( trails ): Daneben entwickelt sich aktuell ein interessanter Wiki unter wikibooks.org: Gerade zum Einstieg, aber auch in den fortgeschrittenen Themen ist es eine gute Ergänzung zu dem vorliegenden Skript. Hagen, den 15. September 2015 Andreas de Vries, Volker Weiß

6 Kapitel 1 Grundlegende Sprachelemente von Java 1.1 Einführung Java ist eine objektorientierte Programmiersprache. Viele ihrer Fähigkeiten und einen großen Teil der Syntax hat sie von C++ geerbt. Im Gegensatz zu C und C++ ist Java jedoch nicht darauf ausgelegt, möglichst kompakte und extrem leistungsfähige Programme zu erzeugen, sondern soll den Programmierer vor allem dabei unterstützen, sichere und fehlerfreie Programme zu schreiben. Daher sind einige der Fähigkeiten von C++ nicht übernommen worden, die zwar mächtig, aber auch fehlerträchtig sind. Viele Konzepte älterer objektorientierter Sprachen (wie z.b. Smalltalk) wurden übernommen. Java ist also keine wirklich neue Programmiersprache, sondern es vereint bewährte Konzepte früherer Sprachen. Siehe dazu auch den Stammbaum in 1950 Fortran 1960 ALGOL60 Cobol Lisp Basic BLISS BCPL C ALGOL68 Smalltalk Simula Ada Pascal Modula 2 PL/1 ML Prolog 1990 Hypercard* Visual Basic* Perl PHP C++ Python JavaScript Java Eiffel Delphi Oberon Ruby Miranda Haskell Erlang 2000 C# Groovy Scala Clojure 2010 Abbildung 1.1: Stammbaum der gängigen Programmiersprachen (*Visual Basic ist eine nur auf Windows- Systemen lauffähige Programmiersprache, Hypercard eine Makrosprache von Apple-MacIntosh). Abb Java wurde ab 1991 bei der Firma Sun Microsystems entwickelt. In einem internen Forschungsprojekt namens Green unter der Leitung von James Gosling sollte eine Programmiersprache zur Steuerung von Geräten der Haushaltselektronik entstehen. Gosling nannte die Sprache zunächst Oak, nach einer Eiche vor seinem Bürofenster. Als später entdeckt wurde, dass es bereits eine Programmiersprache Oak gab, wurde ihr angeblich in einem Café der Name Java gegeben. Java ist ein umgangssprachliches Wort für Kaffee. 6

7 Grundlagen der Programmierung 7 Da sich, entgegen den Erwartungen der Strategen von Sun, der Markt für intelligente Haushaltsgeräte nicht so schnell und tiefgreifend entwickelte, hatte das Green-Projekt große Schwierigkeiten. Es war in Gefahr, abgebrochen zu werden. Es war purer Zufall, dass in dieser Phase 1993 das World Wide Web (WWW) explosionsartig bekannt wurde. Bei Sun wurde sofort das Potential von Java erkannt, interaktive ( dynamische ) Web-Seiten zu erstellen. So wurde dem Projekt schlagartig neues Leben eingehaucht. Seinen Durchbruch erlebte Java, als die Firma Netscape Anfang 1995 bekanntgab, dass ihr Browser Navigator 2.0 (damals Marktführer) Java-Programme in Web-Seiten ausführen kann. Formal eingeführt wurde Java auf einer Konferenz von Sun im Mai Eine beispiellose Erfolgsgeschichte begann. Innerhalb weniger Jahre wurde Java zu einer weitverbreiteten Programmiersprache Wie funktioniert Java? Es gibt im wesentlichen zwei Möglichkeiten, selbst erstellte Programme auf einem Computer auszuführen: Man kann den Quellcode der jeweiligen Programmiersprache compilieren oder ihn interpretieren. Im ersten Fall wird ein Übersetzungsprogramm, der Compiler, verwendet, um aus dem Quelltext eine Datei zu erstellen, die von dem jeweiligen Betriebssystem ausgeführt werden kann; unter Windows z.b. haben solche ausführbaren Dateien die Endung.com oder.exe (für compiled oder executable). Im zweiten Fall wird der Quelltext von einem Interpreter sofort in den Arbeitsspeicher (RAM, random access memory) des Computers übersetzt und ausgeführt. Beispiele für Compilersprachen sind Pascal, C oder C++. Beispiele für Interpretersprachen sind Basic, Perl, PHP oder JavaScript. Ein Vorteil von Compilersprachen ist, dass ein compiliertes Programm schneller ( performanter ) als ein vergleichbares zu interpretierendes Programm abläuft, da die Übersetzung in die Maschinensprache des Betriebssystems ja bereits durchgeführt ist. Ein Interpreter dagegen geht das Programm zeilenweise durch und übersetzt es. Ein weiterer Vorteil der Compilierung aus der Sicht des Programmierers ist, dass ein Compiler Fehler der Syntax erkennt, also Verstöße gegen die Grammatikregeln der Programmiersprache. Man hat also bei einem compilierten Programm die Gewissheit, dass die Syntax korrekt ist. Bei einer Interpretersprache dagegen läuft bei einem Programmierfehler das Programm einfach nicht, und die Ursache ist nicht näher eingegrenzt. Es können sowohl Syntaxfehler, aber auch logische oder Laufzeitfehler (z.b. Division durch 0) vorhanden sein. Compilersprachen ermöglichen also eine sicherere Entwicklung. Andererseits haben Compilersprachen gegenüber Interpretersprachen einen großen Nachteil bezüglich der Plattformunbhängigkeit. Für jede Plattform, also jedes Betriebssystem (Windows, Linux, Mac OS), auf der das Programm laufen soll, muss eine eigene Compilerdatei erstellt werden; bei Interpretersprachen kann der Source-Code von dem ausführenden Rechner sofort interpretiert werden, (vorausgesetzt natürlich, der Interpreter ist auf dem Rechner vorhanden). Welche der beiden Ausführprinzipien verwendet Java? Nun, wie bei jedem vernünftigen Kompromiss beide! Der Source-Code eines Java-Programms steht in einer Textdatei mit der Endung.java. Er wird von einem Compiler namens javac in eine Datei umgewandelt, deren Namen nun die Endung.class trägt. Sie beinhaltet jedoch nicht, wie sonst bei compilierten Dateien üblich, ein lauffähiges Programm, sondern den so genannten Bytecode. Dieser Bytecode läuft auf keiner realen Maschine, sondern auf der virtuellen Maschine (J)VM. Das ist de facto ein Interpreter, der für jedes Betriebssystem den Bytecode in den RAM des Computers lädt und das Programm ablaufen lässt. Die Virtuelle Maschine wird durch den Befehl java aufgerufen und führt den Bytecode aus. Abb. 1.2 zeigt schematisch die einzelnen Schritte vom Quellcode bis zur Programmausführung. Die JVM ist Teil der Java Runtime Environment (JRE), die es für

8 8 Andreas de Vries Quelle.java javac (Compiler) Quelle.class java Virtual Machine für Windows Virtual Machine für Linux Virtual Machine für Mac Quelltext Bytecode JRE (Interpreter) Abbildung 1.2: Vom Quellcdode zur Ausführung eines Java-Programms (JRE = Java Runtime Environment) jedes gängige Betriebssystem gibt Installation der Java SDK-Umgebung Ein Java-Programm wird auch Klasse genannt. Um Java-Programme zu erstellen, benötigt man die Java 2 SDK-Umgebung für das Betriebssystem, unter dem Sie arbeiten möchten. (SDK = Software Development Kit) Es beinhaltet die notwendigen Programme, insbesondere den Compiler javac, den Interpreter java und die Virtuelle Maschine. Das J2SE ist erhältlich im Internet direkt von SUN unter (Die Beschreibung der Installation ist z.b. [8] 2.1 oder unter beschrieben.) Nach erfolgter Installation wird die Datei mit der Eingabe des Zeilenkommandos javac Klassenname.java compiliert. Entsprechend kann sie dann mit der Eingabe ausgeführt werden (ohne die Endung.class!). java Klassenname Erstellung von Java-Programmen Java-Programme werden als Text in Dateien eingegeben. Hierzu wird ein Texteditor oder eine integrierte Entwicklungsumgebung (IDE = Integrated Development Environment) wie Netbeans oder Eclipse, benutzt. Die IDE s sind geeignet für die fortgeschrittene Programmierung mit grafischen Bedienungselementen oder größeren Software-Projekten. Wir werden zunächst die einfache Programmerstellung mit einem Texteditor verwenden, um die Prinzipien des Kompilier- und Programmstartprozesses zu verdeutlichen. Später kann man mit etwas komfortableren Editoren wie dem Java-Editor (javaeditor.org) für Windows oder dem plattformunabhängigen jedit (jedit.org) arbeiten.

9 Grundlagen der Programmierung Die 4 Programmarten von Java Eine ganz neue Eigenart von Java ist es, dass es mehrere Arten von Programmen gibt, die erstellt werden können: Applikationen, Applets, Servlets und Midlets. Applikationen. Eine Applikation (lat. für Anwendung ) ist ein eigenständiges Programm, das nur die virtuelle Maschine als Interpreter braucht und stand-alone lauffähig ist ähnlich wie in anderen Programmiersprachen üblich. Applets. Ein Applet (engl. für kleine Applikation, Applikatiönchen ) ist ein Programm, das nur als Unterprogramm eines Webbrowsers läuft. Applets waren bei ihrer Einführung Mitte der 1990er Jahre eine enorme Innovation für das Web, sie ermöglichten Interaktivität und Animationen auf den bis dahin statischen Webseiten. Applets werden als Programme automatisch über das Web verteilt und innerhalb eines Webbrowsers, also lokal ausgeführt. Insbesondere können also rechenintensive Algorithmen auf dem Rechner des Anwenders ablaufen und belasten nicht den Webserver. Servlets. Ein Servlet ist ein Java-Programm, das ausschließlich als Unterprogramm eines Webservers läuft. Es ist somit das Gegenstück zu einem Applet, das innerhalb eines Browsers (dem Web-Client ) läuft. Ein Servlet erweitert die Funktionalität eines Webservers. Die möglichen Anwendungen von Servlets sind vielfältig. Sie ermöglichen webbasierte Lösungen für sichere und vertrauliche Zugänge zu einer Website, für Zugriffe auf Datenbanken und für individuelle interaktive Erstellung ganzer HTML-Dokumente. Eng verwandt mit Servlets sind JSP (Java Server Pages), Java-Programme, die in HTML- Seiten eingebettet sind und bei ihrer Aktivierung durch den Browser Servlets erzeugen. Midlets. Ein Midlet ist ein Java-Programm, das auf Mobilgeräten wie Handys oder Handhelds ablaufen kann. Das Wort Midlet ist abgeleitet von MID = mobile information device. Bei Programmen für Mobilgeräte ist zu beachten, dass solche Endgeräte nur wenig Speicher, eine geringe Performanz, eine kleine Tastatur und nur temporäre Verbindungen zum Netz haben. Midlets sind auf diese Besonderheiten abgestimmt. Sie sind den Applets ähnlich, es steht ihnen jedoch eine weit eingeschränktere Klassenbibliothek zur Verfügung. Eine Entwicklungsumgebung bietet SUN mit der J2ME (Java 2 Micro Edition), die das J2SDK benötigt. Entsprechend ist die Virtuelle Maschine abgespeckt, sie heißt KVM (das K steht für kilo, da der benötigte Speicher im Kilobyte-Bereich liegt, aktuell 80 KB). Weitere Informationen finden Sie unter: oder Keine Programmiersprache ermöglicht standardmäßig einen so breiten Funktionsumfang, wie ihn Java mit diesen Programmarten liefert. 1.2 Das erste Programm: Ausgabe eines Textes Wir beginnen mit einer einfachen Applikation, die eine Textzeile ausgibt. Dieses (mit einem beliebigen Texteditor) erstellte Programm ist als die Datei Willkommen.java abgespeichert und lautet:

10 10 Andreas de Vries 1 import javax.swing.joptionpane; 2 /** 3 * Ausdruck von 2 Zeilen in einem Dialogfenster 4 */ 5 public class Willkommen { 6 public static void main(string[] args) { 7 JOptionPane.showMessageDialog(null, "Willkommen zur\njava Programmierung!"); 8 9 Das Programm gibt nach dem Start das Fenster in Abbildung 1.3 auf dem Bildschirm aus. Abbildung 1.3: Ergebnis der Applikation Willkommen Wie kommt die Applikation ans Laufen? Wie in der Einleitung beschrieben (Abb. 1.2 auf S. 8), muss zunächst aus der Willkommen.java- Datei (dem Source-Code oder Quelltext) eine Willkommen.class-Datei im Bytecode mit dem Compiler javac erstellt werden, und zwar mit der Eingabe des Zeilenkommandos Entsprechend kann sie dann mit der Eingabe ausgeführt werden. javac Willkommen.java java Willkommen Ein erster Überblick: So funktioniert das Programm Bevor wir die einzelnen Programmbestandteile genauer betrachten, sollten wir uns die grobe Struktur einer Java-Applikation verdeutlichen. 1. Ein Java-Programm ist stets eine Klasse und beginnt mit den Schlüsselworten public class sowie dem Namen der Klasse (Zeile 5). 2. Ein Java-Programm ist in Einheiten gepackt, die Blöcke, die von geschweiften Klammern {... umschlossen sind und oft vorweg mit einer Bezeichnung versehen sind (z.b. public class Willkommen oder public static void main(... ). Zur Übersichtlichkeit sind die Blöcke stets geeignet einzurücken. 3. Der Startpunkt jeder Applikation ist die Methode main. Hier beginnt der Java-Interpreter (die virtuelle Maschine, siehe S. 7), die einzelnen Anweisungen auszuführen. Er arbeitet sie sequenziell, d.h. der Reihe nach, ab (Zeile 6). 4. Die Applikation besteht aus einer Anweisung (Zeile 7): Sie zeigt einen Text in einem Fenster an.

11 Grundlagen der Programmierung Um Spezialfunktionen zu verwenden, die von anderen Entwicklern erstellt wurden, kann man mit der Anweisung import bereits programmierte Klassen importieren. Eine Klasse ist in diesem Zusammenhang also so etwas wie Werkzeugkasten, aus dem wir fertig programmierte Werkzeuge (hier die Methode showmessagedialog aus JOptionPane) verwenden können. Eine der wenigen Klassen, die wir nicht importieren müssen, ist die Klasse System. Halten wir ferner fest, dass die Grobstruktur unserer kleinen Applikation durch das folgende Diagramm dargestellt werden kann. JOptionPane showmessagedialog() Willkommen main() Es ist ein Klassendiagramm. Es stellt grafisch dar, dass unsere Klasse Willkommen die Methode main hat und die Klasse JOptionPane kennt, deren Methode showmessagedialog sie verwendet Die Klassendeklaration und Klassennamen In der Zeile 5 beginnt die Klassendeklaration der Klasse Willkommen. Jedes Java-Programm besteht aus mindestens einer Klasse, die definiert ist von dem Porgrammierer. Die reservierten Worte public class eröffnen die Klassendeklaration in Java, direkt gefolgt von dem Klassennamen, hier Willkommen. Reservierte Wörter sind von Java selber belegt und erscheinen stets mit kleinen Buchstaben. Eine Liste aller reservierten Wörter in Java befindet sich in Tabelle 1.1 auf Seite 14 und am Anfang des Indexverzeichnisses des Skripts. Es gilt allgemein die Konvention, dass alle Klassennamen in Java mit einem Großbuchstaben beginnen und dass jedes neue Wort im Namen ebenfalls mit einem Großbuchstaben beginnt, z.b. BeispielKlasse oder JOptionPane (option = Auswahl, pane = Fensterscheibe; das J kennzeichnet alle so genannten Swing-Klassen ). Der Klassenname ist ein so genannter Identifier oder Bezeichner. Ein Bezeichner ist eine Folge von alphanumerischen Zeichen (Characters), also Buchstaben, Ziffern, dem Unterstrich (_) und dem Dollarzeichen ($). Ein Bezeichner darf nicht mit einer Ziffer beginnen und keine Leerzeichen enthalten. Erlaubt sind also Rakete1, oder $wert, oder _wert, oder Taste7. Demgegenüber sind 7Taste oder erste Klasse als Klassennamen nicht erlaubt. Im übrigen ist Java schreibungssensitiv (case sensitive), d.h. es unterscheidet strikt zwischen Groß- und Kleinbuchstaben a1 ist also etwas völlig Anderes als A1. Merkregel 1. Eine Klasse in Java muss in einer Datei abgespeichert werden, die genau so heißt wie die Klasse, mit der Erweiterung.java. Allgemein gilt folgende Konvention: Klassennamen beginnen mit einem Großbuchstaben und bestehen aus einem Wort. Verwenden Sie sprechende Namen, die andeuten, was die Klasse bedeutet. Im Gegensatz dazu werden Methodennamen und Variablen (siehe unten) klein geschrieben. In unserem ersten Programmbeispiel heißt die Datei Willkommen.java.

12 12 Andreas de Vries Der Programmstart: Die Methode main Wie startet eine Applikation in Java? Die zentrale Einheit einer Applikation, gewissermaßen die Steuerzentrale, ist die Methode main. Durch sie wird die Applikation gestartet, durch die dann alle Anweisungen ausgeführt werden, die in ihr programmiert sind. Die Zeile 6, public static void main(string[] args) (1.1) ist Teil jeder Java-Applikation. Java-Applikationen beginnen beim Ablaufen automatisch bei main. Die runden Klammern hinter main zeigen an, dass main eine Methode ist. Klassendeklarationen in Java enthalten normalerweise mehrere Methoden. Für Applikationen muss davon genau eine main heißen und so definiert sein wie in (1.1). Andernfalls wird der Java-Interpreter das Programm nicht ausführen. Nach dem Aufruf der Methode main mit dem Standardargument String[] args kommt der Methodenrumpf (method body), eingeschlossen durch geschweifte Klammern ({... ). Über den tieferen Sinn der langen Zeile public static void main (String[] args) sollten Sie sich zunächst nicht den Kopf zerbrechen. Nehmen Sie sie (für s erste) hin wie das Wetter! Eine allgemeine Applikation in Java muss also in jedem Fall die folgende Konstruktion beinhalten: public class Klassenname { public static void main( String[] args ) { Deklarationen und Anweisungen; Das ist also gewissermaßen die Minimalversion einer Applikation. In unserem Beispiel bewirkt die Methode main, dass der Text Willkommen zur Java-Programmierung ausgegeben wird Die import-anweisung des swing-pakets Im Gegensatz zu dem Paket java.lang muss eine Klasse aus einem anderen Pakete ausdrücklich mit ihrem Paketpfad angegeben werden. Im allgemeinen muss man das jedes Mal tun, wenn man die Klasse oder eine ihrer Methoden verwenden will. Man kann aber auch ein Paket importieren. Mit der import-anweisung in Zeile 1 wird die Klasse JOptionPane eingelesen und für das Programm benutzbar. JOptionPane ist eine Standardklasse von Java aus dem Paket javax.swing und stellt Dialogboxen, also Fenster zur Ein- und Ausgabe, zur Verfügung. Die Methode show- MessageDialog der Klasse JOptionPane in Zeile 7 öffnet eine Dialogbox namens message dialog, die den nach der Konstanten null in Anführungszeichen eingeschlossenen Text anzeigt, vgl. Abb Das reservierte Wort null ist an dieser Stelle ein Parameter, der im Wesentlichen die Position des Dialogfensters in der Mitte des Bildschirms festlegt. Die Titelzeile des Dialogfensters enthält einfach den String Message Dialogfenster Es gibt noch eine weitere Version der Methode showmessagedialog, die nicht mit zwei, sondern mit vier Parametern aufgerufen wird und mit denen man die erscheinenden Symbole variieren kann, beispielsweise durch die Anweisung JOptionPane.showMessageDialog(null, "Hallo?", "Frage", JOptionPane.PLAIN_MESSAGE);

13 Grundlagen der Programmierung 13 Der dritte Parameter (hier: "Frage") bestimmt den Text, der in der Titelleiste des Fensters erscheinen soll. Der vierte Parameter (JOptionPane.PLAIN_MESSAGE) ist ein Wert, der die Anzeige des Message-Dialogtyp bestimmt dieser Dialogtyp hier zeigt kein Icon (Symbol) links von der Nachricht an. Die möglichen Message-Dialogtypen sind in der folgenden Tabelle aufgelistet: Message-Dialogtyp int-wert Icon Bedeutung JOptionPane.ERROR_MESSAGE 0 Fehlermeldung JOptionPane.INFORMATION_MESSAGE 1 informative Meldung; der User kann sie nur wegklicken JOptionPane.WARNING_MESSAGE 2 Warnmeldung JOptionPane.QUESTION_MESSAGE 3 Fragemeldung JOptionPane.PLAIN_MESSAGE 1 Meldung ohne Icon (Statt der langen Konstantennamen kann man auch kurz den entsprechenden int-wert angeben.) Beispielsweise erscheint durch die Anweisung JOptionPane.showMessageDialog(null, "Hallo?", "Frage", JOptionPane.QUESTION_MESSAGE); oder kürzer JOptionPane.showMessageDialog(null, "Hallo?", "Frage", 3); ein Dialogfenster mit einem Fragezeichen als Symbol, dem Text "Hallo?" im Fenster und dem Text "Frage" in der Titelzeile. Das genaue Aussehen der Symbole hängt von dem jeweiligen Betriebssystem ab, unter Windows sehen sie anders als unter Linux oder OS X. 1.3 Elemente eines Java-Programms Anweisungen und Blöcke Jedes Programm besteht aus einer Folge von Anweisungen (instruction, statement), wohldefinierten kleinschrittigen Befehlen, die der Interpreter zur Laufzeit des Programms ausführt. Jede Anweisung wird in Java mit einem Semikolon (;) abgeschlossen. Wenn man Deklarationen und Anweisungen vergleicht, so stellt man fest, dass Deklarationen die Struktur des Programms festlegen, während die Anweisungen den zeitlichen Ablauf definieren: Ausdruck Wirkung Aspekt Deklarationen Speicherreservierung statisch (Struktur) Anweisung Tätigkeit dynamisch (Zeit) Anweisungen werden zu einem Block (block, compound statement) zusammengefasst, der durch geschweifte Klammern ({ und ) umschlossen ist. Innerhalb eines Blockes können sich weitere Blöcke befinden. Zu beachten ist, dass die dabei Klammern stets korrekt geschlossen sind. Die Blöcke eines Programms weisen also stets eine hierarchische logische Baumstruktur aufweisen.

14 14 Andreas de Vries Empfehlung 1. Zur besseren Lesbarkeit Ihres Programms und zur optischen Strukturierung sollten Sie jede Zeile eines Blocks stets gleich weit einrücken. Ferner sollten Sie bei der Öffnung eines Blockes mit { sofort die geschlossene Klammer eingeben. Auf diese Weise erhalten Sie sofort einen blockweise hierarchisch gegliederten Text. So können Sie gegebenenfalls bereits beim Schreiben falsche oder nicht gewollte Klammerungen (Blockbildungen!) erkennen und korrigieren. Falsche Klammerung ist keine kosmetische Unzulänglichkeit, das ist ein echter Programmierfehler. Es gibt zwei verbreitete Konventionen die öffnende Klammer zu platzieren: Nach der einen Konvention stellt man sie an den Anfang derjenigen Spalte, auf der sich der jeweils übergeordnete Block befindet, und der neue Block erscheint dann eingerückt in der nächsten Zeile, so wie in dem folgenden Beispiel. public class Willkommen {... Die andere Konvention zieht die Klammer zu der jeweiligen Anweisung in der Zeile darüber hoch, also public class Willkommen {... In diesem Skript wird vorwiegend die zweite der beiden Konventionen verwendet, obwohl die erste etwas lesbarer sein mag. Geschmackssache eben Reservierte Wörter und Literale Die Anweisungen eines Programms enthalten häufig reservierte Wörter oder Schlüsselwörter, die Bestandteile der Programmiersprache sind und eine bestimmte vorgegebene Bedeutung haben. Die in Java reservierten Wörter sind in Tabelle 1.1 zusammengefasst. abstract assert boolean break byte case catch char class continue default do double else enum extends final finally float for if implements import instanceof int interface long native new package private protected public return short static strictfp super switch synchronized this throw throws transient try void volatile while Literale false true null 0, 1, -2, 2.0 "Abc" In Java nicht verwendete reservierte Wörter byvalue cast const future generic goto inner operator outer rest var Tabelle 1.1: Die reservierten Wörter in Java Dazu gehören auch sogenannte Literale, die Konstanten true, false und null, deren Bedeutung wir noch kennen lernen werden. Allgemein versteht man unter einem Literal einen konstanten Wert, beispielsweise eine Zahl wie 14 oder 3.14, ein Zeichen wie a oder einen String ( Text ) wie "Hallo!". Daneben gibt es in Java reservierte Wörter, die für sich gar keine Bedeutung haben, sondern ausdrücklich (noch) nicht verwendet werden dürfen.

15 Grundlagen der Programmierung Kommentare Ein Kommentar (comment) wird in ein Programm eingefügt, um dieses zu dokumentieren und seine Lesbarkeit zu verbessern. Insbesondere sollen Kommetare es erleichtern, das Programm zu lesen und zu verstehen. Sie bewirken keine Aktion bei der Ausführung des Programms und werden vom Java-Compiler ignoriert. Es gibt drei verschiedene Arten, Kommentare in Java zu erstellen, die sich durch die Sonderzeichen unterscheiden, mit denen sie beginnen und ggf. enden müssen. //... Eine Kommentarart ist der einzeilige Kommentar, der mit dem Doppelslash // beginnt und mit dem Zeilenende endet. Er wird nicht geschlossen. Quellcode, der in derselben Zeile vor den Backslashs steht, wird jedoch vom Compiler ganz normal verarbeitet. /*... * / Es können auch mehrere Textzeilen umklammert werden: /* und * /, z.b.: /* Dies ist ein Kommentar, der sich über mehrere Zeilen erstreckt. */ /**... * / Die dritte Kommentarform /**... * / in den Zeilen 2 bis 4 ist der Dokumentationskommentar (documentation comment). Sie werden stets direkt vor den Deklarationen von Klassen, Attributen oder Methoden (wir werden noch sehen, was das alles ist...) geschrieben, um sie zu beschreiben. Die so kommentierten Deklarationen werden durch das Programm javadoc-programm automatisch verarbeitet. In Java werden Leerzeilen, genau wie Leerzeichen und Tab-Stops, vom Compiler nicht verarbeitet. Ein Leerzeichen trennt verschiedene Wörter, jedes weitere Leerzeichen direkt dahinter hat jedoch keine Wirkung. Zusätzliche Leerzeichen können und sollten also verwendet werden zur Strukturierung und Lesbarkeit des Programms import-anweisung Generell können fertige Java-Programme zur Verfügung gestellt werden. Dazu werden sie in Verzeichnissen, den sogenannten Paketen gespeichert. Beispielsweise sind die die Klassen des wichtigen Swing-Pakets javax.swing in dem Verzeichnis /javax/swing (bei UNIX-Systemen) bzw. \javax\swing (bei Windows-Systemen) gespeichert. 1 Insbesondere sind alle Programme des Java-API s in Paketen bereitgestellt. Um nun solche bereitgestellten Programme zu verwenden, müssen sie ausdrücklich importiert werden. Das geschieht mit der import-anweisung. Beispielsweise wird mit import javax.swing.*; Diese Anweisung muss stets am Anfang eines Programms stehen, wenn Programme aus dem entsprechenden Paket verwendet werden sollen. Das einzige Paket, das nicht eigens importiert werden muss, ist das Paket java.lang, welches die wichtigsten Basisklassen enthält. Die import-anweisungen sind die einzigen Anweisungen eines Java-Programms, die außerhalb eines Blocks stehen. 1 Sie werden die Verzeichnisse und Dateien jedoch auf Ihrem Rechner nicht finden: Sie sind in kompakte Dateien komprimiert und haben in der Regel die Endung.jar für Java Archive oder.zip für das gebräuchliche Zip-Archiv.

16 16 Andreas de Vries 1.4 Strings und Ausgaben Strings Der in die Anführungszeichen (") gesetzte Text ist ein String, also eine Kette von beliebigen Zeichen. In Java wird ein String stets durch die doppelten Anführungsszeichen eingeschlossen, also "... ein Text " Innerhalb der Anführungsszeichen kann ein beliebiges Unicode-Zeichen stehen (alles, was die Tastatur hergibt... ), also insbesondere Leerzeichen, aber auch Escape-Sequenzen wie das Steuerzeichen \n für Zeilenumbrüche oder \" für die Ausgabe von Anführungszeichen (s.u.). Escape-Sequenzen und Unicode Zur Darstellung von Steuerzeichen, wie z.b. einen Zeilenumbruch, aber auch von Sonderzeichen aus einer der internationalen Unicode-Tabellen, die Sie nicht auf Ihrer Tastatur haben, gibt es die Escape-Sequenzen: Das ist ein Backslash (\) gefolgt von einem (ggf. auch mehreren) Zeichen. Es gibt mehrere Escape-Sequenzen in Java, die wichtigsten sind in Tabelle 1.2 aufgelistet. Man kann also auch Anführungszeichen ausgeben: Escape- Bedeutung Beschreibung Zeichen \uxxxx Unicode das Unicode-Zeichen mit Hexadezimal-Code xxxx ( Code-Point ); z.b. \u222b ergibt \n line feed LF neue Zeile. Der Bildschirmcursor springt an den Anfang der nächsten Zeile \t horizontal führt einen Tabulatorsprung aus tab HT \\ \ Backslash \ \" " Anführungszeichen " \ Hochkomma (Apostroph) Tabelle 1.2: Wichtige Escape-Sequenzen in Java JOptionPane.showMessageDialog( null, "\"Zitat Ende\"" ); ergibt "Zitat Ende". Auch mathematische oder internationale Zeichen, die Sie nicht auf Ihrer Tastatur finden, können mit Hilfe einer Escape-Sequenz dargestellt werden. So ergibt beispielsweise JOptionPane.showMessageDialog(null, "2 \u222b x dx = x\u00b2\n\u2115 = \u05d0"); die Ausgabe 2 xdx = x 2 N = ℵ Eine Auflistung der möglichen Unicode-Zeichen und ihre jeweiligen Hexadezimalcodes finden Sie im WWW unter

17 Grundlagen der Programmierung Möglichkeiten der Ausgabe In unserer Applikation ist der Ausgabetext ein String. Durch die Methode JOptionPane.showMessageDialog(null,"...") kann so ein beliebiger String auf dem Bildschirm angezeigt werden. Ein spezieller String ist der leere String "". Er wird uns noch oft begegnen. Weitere einfache Möglichkeiten zur Ausgabe von Strings im Befehlszeilenfenster ( Konsole ) bieten die Anweisungen print, printf und println des Standard-Ausgabestroms System.out. Die Methode print gibt den eingegebenen String unverändert (und linksbündig) im Konsolenfenster aus, printf erzeugt eine formatierte Ausgabe. println steht für print line, also etwa in einer Zeile ausdrucken, und liefert dasselbe wie print, bewirkt jedoch nach der Ausgabe des Strings einen Zeilenumbruch. Beispiele: System.out.print("Hallo, Ihr 2"); System.out.println("Hallo, Ihr" + 2); System.out.printf("Hallo, Ihr %1$d", 2); Der printf-befehl wird hierbei mit einem sogenannten Format-String, der eine Art Schablone ist, in die Werte der nachfolgenden Argumente durch einen Format-Spezifizierer (format specifier) mit der Syntax % Argument-Index $ Konversionszeichen eingesetzt werden. Der Argument-Index zwischen % und $ gibt hierbei die Stelle des einzusetzenden Arguments in der Argumentliste an, beginnend bei %1$ für das erste Argument. Das Konversionszeichen bestimmt die Formatierung, beispielsweise: Konversions- Formatierte Ausgabe als... zeichen s String d ganze Zahl (Dezimalzahl) o Oktalzahl x bzw. X Hexadezimalzahl (mit Klein- bzw. Großbuchstaben) f Fließkommazahl (optional mit festen Nachkommastellen: %1$f.3) e Fließkommazahl in wissenschaftlicher Schreibweise (mit Exponent) Die Syntax des Format-Strings ist für den Anfänger nicht ganz übersichtlich und ist in der Klasse Formatter 2 im Paket java.util beschrieben. Eine zusammenfassende Beispielapplikation folgt, die alle drei Ausgabemöglichkeiten ausführt. import javax.swing.*; public class Ausgaben { public static void main(string[] args) { // Ausgabe im Konsolenfenster: System.out.print("Dies ist eine "); System.out.println("Ausgabe mit " + (4+3) + " Wörtern."); // formatierte Ausgabe im Konsolenfenster: System.out.printf("Dies ist %1$s Ausgabe mit %2$d Wörtern.\n", "eine", 4+3); System.out.printf("pi = %1$.3f \n", ); 2

18 18 Andreas de Vries // Ausgabe in eigenem Fenster: JOptionPane.showMessageDialog( null, "Die ist eine Ausgabe \nmit " " Wörtern." ); Die drei print-befehle geben auf der Konsole allerdings nur die ASCII-Zeichen aus, Umlaute oder Sonderzeichen können nicht ausgegeben werden. Die Ausgabe allgemeiner Unicode- Zeichen gelingt nur mit Hilfe von JOptionPane (bzw. anderen Swing-Klassen) Dokumentation der API Eine API (application programming Interface: Schnittstelle für die Programmierung von Anwendungsprogrammen ) ist allgemein eine Bibliothek von Routinen ( Methoden"), mit denen man über selbsterstellte Programme auf Funktionen des Betriebssystems oder einer Benutzeroberfläche zugegriffen werden kann. Jede Programmiersprache muss eine API für das jeweilige Betriebssystem bereitstellen, auf dem die erstelten Programme laufen sollen. Man nennt die Erstellung von Software auch Implementierung der Schnittstelle. 3 Die API von Java stellt dem Programmierer im Wesentlichen Programme (je nach Art Klassen und Interfaces genannt) zur Verfügung, gewissermaßen Werkzeugkästen, mit deren Werkzeugen verschiedene Funktionen ermöglicht werden. Das wichtigste dieser Werkzeuge ist die main-methode, die das Ablaufen einer Applikation ermöglicht. Weitere wichtige Klassen sind beispielsweise Math für mathematische Funktionen oder JOptionPane zur Programmierung von fensterbasierten Dialogen. Die Java-API besitzt eine detaillierte Dokumentation, die auf dem Webauftritt von SUN online unter dem Link API Specifications zugänglich ist: In Abbildung 1.4 ist ein Ausschnitt der Dokumentation für die Klasse Math gezeigt. Generell besteht eine Dokumentationsseite aus drei Bereichen, links unten sind die Klassen und Interfaces der API aufgelistet, links oben die Pakete (die Verzeichnisse der Klassen und Interfaces). In dem Hauptfenster erscheint nach dem Anklicken einer der Klassen deren Beschreibung. Man erkennt in dem Hauptfenster den unteren Teil der allgemeinen Beschreibung und die beiden für den Programmierer stets sehr wichtigen Elemente einer Klasse, ihre Attribute (fields) und Methoden. Die Attribute der Klasse Math beispielsweise sind die beiden Konstanten E und PI, während die alphabetisch ersten Methoden die Funktionen abs(a) den Absolutbetrag des Parameters a und acos(a) den arccos des Parameters a darstellen. In dem vorliegenden Skript werden generell nur die wichtigsten Elemente einer Klasse oder eines Interfaces beschrieben. Sie sollten daher beim Programmieren stets auch in der API-Dokumentation nachschlagen. Sie sollten sich sogar angewöhnen, beim Entwickeln von Java-Software mindestens zwei Fenster geöffnet haben, den Editor und die Dokumentation im Browser. Mathematische Funktionen und Konstanten Zusammengefasst stellt die Klasse Math also wesentliche Konstanten und mathematische Funktionen und Operationen für die Programmierung in Java bereit. Sie liefert die Konstanten 3 implementare lat. auffüllen

19 Grundlagen der Programmierung 19 Abbildung 1.4: Ausschnitt aus der API-Dokumentation für die Klasse Math. 1 Math.E // Euler sche Zahl e = k=0 k! 2, ( 1 4 Math.PI // Kreiszahl π = 16 k k=0 und u.a. die mathematischen Funktionen 8k k k k + 6 ) 3, Math.abs(x) // x Math.acos(x) // arccos x Math.asin(x) // arcsin x Math.atan(x) // arctan x Math.atan2(x,y) // arctan(x/y) Math.cos(x) // cos x Math.exp(x) // e x (e hoch x) Math.log(x) // ln x (natürlicher Logarithmus) Math.max(x,y) // Maximum von x und y Math.min(x,y) // Minimum von x und y Math.pow(x,y) // x y (x hoch y) Math.random() // Pseudozufallszahl z mit 0 z < 1 Math.round(x) // kaufmännische Rundung von x auf die nächste ganze Zahl Math.sin(x) // sin x Math.sqrt(x) // x Math.tan(x) // tan x 1.5 Variablen, Datentypen und Operatoren Zu Beginn des letzten Jahrhunderts gehörte das Rechnen mit Zahlen zu denjenigen Fähigkeiten, die ausschließlich intelligenten Wesen zugeschrieben wurden. Heute weiß jedes Kind, dass ein Computer viel schneller und verlässlicher rechnen kann als ein Mensch. Als intelligent werden heute gerade diejenigen Tätigkeiten angesehen, die früher eher als trivial galten: Gesichter

20 20 Andreas de Vries und Muster erkennen, Assoziationen bilden, sozial denken. Zukünftig werden Computer sicherlich auch diese Fähigkeiten erlernen, zumindest teilweise. Wir werden uns aber in diesem Skript auf die grundlegenden Operationen beschränken, die früher als intelligent galten und heute als Basis für alles Weitere dienen. Fangen wir mit den Grundrechenarten an. Wie jede Programmiersprache besitzt auch Java die Grundrechenoperationen. Sie bestehen wie die meisten Operationen aus einem Operator und zwei Operanden. Z.B. besteht die Operation 2+3 aus dem Operator + und den Operanden 2 und 3. Allgemein kann man eine Operation wie folgt definieren. Definition 1.1. Eine Operation ist gegeben durch einen Operator und mindestens einen Operanden. Hierbei ist ein Operator ein Zeichen, das die Operation symbolisiert, meist eine zweistellige Verknüpfung, und die Argumente dieser Verknüpfung heißen Operanden. Diese Definition einer Operation erscheint trivial, sie hat es jedoch in sich: Wendet man denselben Operator auf verschiedene Datentypen an, so kommen möglicherweise verschiedene Ergebnisse heraus. Wir werden das in der nächsten Applikation sehen. 1 import javax.swing.joptionpane; 2 /** 3 * Führt verschiedene arithmetische Operationen durch 4 */ 5 public class Arithmetik { 6 public static void main( String[] args ) { 7 int m, n, k; // ganze Zahlen 8 double x, y, z; // reelle Zahlen 9 String ausgabe = ""; 10 // diverse arithmetische Operationen: 11 k = * 4; 12 x = 14 / 4; y = 14 / 4.0; z = (double) 14 / 4; 13 n = 14 / 4; m = 14 % 4; 14 // Ausgabestring bestimmen: 15 ausgabe = "k = "+ k; 16 ausgabe = ausgabe + "\nx = "+ x + ", y = "+ y + ", z = "+ z; 17 ausgabe = ausgabe + "\nn = "+ n + ", m = "+ m; 18 JOptionPane.showMessageDialog( 19 null, ausgabe, "Ergebnis", JOptionPane.PLAIN_MESSAGE 20 ); Das Programm führt einige arithmetische Operationen aus. Auf den ersten Blick etwas überraschend ist die Ausgabe, siehe Abb. 1.5: Je nach Datentyp der Operanden ergibt der (scheinbar!) Abbildung 1.5: Die Applikation Arithmetik. gleiche Rechenoperator verschiedene Ergebnisse Variablen, Datentypen und Deklarationen Die Zeile 7 der obigen Applikation,

21 Grundlagen der Programmierung 21 int m, n, k; ist eine Deklaration. Der Bezeichner k ist der Name einer Variablen. Eine Variable ist ein Platzhalter, der eine bestimmte Stelle im Arbeitsspeicher (RAM) des Computers während der Laufzeit des Programms reserviert, siehe Abb Dort kann dann ein Wert gespeichert werden. RAM variablenname Abbildung 1.6: Die Deklaration der Variable variablenname bewirkt, dass im Arbeitsspeicher (RAM) eine bestimmte Anzahl von Speicherzellen reserviert wird. Die Größe des reservierten Speichers (= Anzahl der Speicherzellen) ist durch den Datentyp bestimmt. Vgl. Tabelle 1.3 (S. 22) Es ist nicht ein beliebig großer Wert möglich, denn dafür wäre ein unbegrenzter Speicherplatz notwendig: Die Menge der möglichen Werte wird durch den Datentyp festgelegt. In unserem Beispiel ist dieser Datentyp int, und der Wertebereich erstreckt sich von 2 31 bis Deklarationen werden mit einem Semikolon (;) beendet und können über mehrere Zeilen aufgesplittet werden. Man kann mehrere Variablen des gleichen Typs in einer einzigen Deklaration durch Kommas (,) getrennt deklarieren, oder jede einzeln. Man könnte also in unserem Beispiel genauso schreiben: int m; int n; int k; Ein Variablenname kann ein beliebiger gültiger Bezeichner sein, also eine beliebige Zeichenfolge, die nicht mit einer Ziffer beginnt und keine Leerzeichen enthält. Es ist üblich, Variablennamen (genau wie Methodennamen) mit einem kleinen Buchstaben zu beginnen. Variablen müssen stets mit ihrem Namen und ihrem Datentyp deklariert werden. In Zeile 7 besagt die Deklaration, dass die Variablen vom Typ int sind Der Zuweisungsoperator = Eine der grundlegendsten Anweisungen ist die Wertzuweisung. In Java wird die Zuweisung mit dem so genannten Zuweisungsoperator (assign operator) = bewirkt. In Zeile 11, k = * 4; bekommt die Variable k den Wert, der sich aus dem Term auf der rechten Seite ergibt, also 22. (Java rechnet Punkt vor Strichrechnung!) Der Zuweisungsoperator ist gemäß Def. 1.1 ein Operator mit zwei Operanden. Merkregel 2. Der Zuweisungsoperator = weist der Variablen auf seiner linken Seite den Wert des Ausdrucks auf seiner rechten Seite zu. Der Zuweisungsoperator = ist ein binärer Operator, er hat zwei Operanden (die linke und die rechte Seite).

22 22 Andreas de Vries Alle Operationen, also insbesondere Rechenoperationen, müssen stets auf der rechten Seite des Zuweisungsoperators stehen. Ein Ausdruck der Form k = ist also sinnvoll, aber eine Anweisung = k hat in Java keinen Sinn! Datentypen und Speicherkonzepte Variablennamen wie m oder n in der Arithmetik-Applikation beziehen sich auf bestimmte Stellen im Arbeitsspeicher des Computers. Jede Variable hat einen Namen, einen Typ, eine Größe und einen Wert. Bei der Deklaration am Beginn einer Klassendeklaration werden bestimmte Speicherzellen für die jeweilige Variable reserviert. Der Name der Variable im Programmcode verweist während der Laufzeit auf die Adressen dieser Speicherzellen. Woher weiß aber die CPU, wieviel Speicherplatz sie reservieren muss? Die acht sogenannten primitiven Datentypen bekommen in Java den in Tabelle 1.3 angegebenen Speichergrößen zugewiesen. Datentyp Größe Werte Bemerkungen boolean 1 Byte true, false char 2 Byte \u0000 bis \uffff Unicode, 2 16 Zeichen, stets in Apostrophs (!) byte 1 Byte 128 bis , ,...,2 7 1 short 2 Byte bis , ,..., int 4 Byte bis 2 31, ,..., Beispiele: 123, -23, 0x1A, 0b110 long 8 Byte bis 2 63, ,..., Beispiele: 123L, -23L, 0x1AL, 0b110L float 4 Byte ±1.4E-45 bis [ ±2 149, ±2 128 ] ± E+38 Beispiele: 1.0f, 1.F,.05F, 3.14E-5F double 8 Byte ±4.9E-324 bis [±2 1074, ± ] ± E+308 Beispiele: 1.0, 1.,.05, 3.14E-5 Tabelle 1.3: Die primitiven Datentypen in Java Wird nun einer Variable ein Wert zugewiesen, z.b. durch die Anweisung k = * 4; der Variablen k der berechnete Wert auf der rechte Seite des Zuweisungsoperators, so wird er in den für k reservierten Speicherzellen gespeichert. Insbesondere wird ein Wert, der eventuell vorher dort gepeichert war, überschrieben. Umgekehrt wird der Wert der Variablen k in der Anweisung ausgabe = "k = " + k; der Zeile 15 nur aus dem Speicher gelesen, aber nicht verändert. Der Zuweisungsoperator zerstört nur den Wert einer Variablen auf seiner linken Seite und ersetzt ihn durch den Wert der Operationen auf seiner rechten Seite. Eine Variable muss bei ihrem ersten Erscheinen in dem Ablauf eines Programms auf der linken Seite des Zuweisungsoperators stehen. Man sagt, sie muss initialisiert sein. Hat nämlich eine Variable keinen Wert und steht sie auf der rechten Seite des Zuweisungsoperators, so wird ein leerer Speicherplatz verwendet. In Java ist die Verarbeitung einer nichtinitialisierten Variablen ein Kompilierfehler. Würde man die Anweisung in Zeile 11 einfach auskommentieren, so würde die folgende Fehlermeldung beim Versuch der Kompilierung erscheinen: /Development/Arithmetik.java:11: variable k might not have been initialized

23 Grundlagen der Programmierung 23 ausgabe = "k = " + k; ^ 1 error Sie bedeutet, dass in Zeile 11 des Programms dieser Fehler auftritt. Merkregel 3. Eine Variable muss initialisiert werden. Zuweisungen von nichtinitialisierten Werten ergeben einen Kompilierfehler. Eine Variable wird initialisiert, indem sie ihre erste Anweisung eine Wertzuweisung ist, bei der sie auf der linken Seite steht. In der Applikation Arithmetik wird beispielsweise die Variable ausgabe direkt bei ihrer Deklaration initialisiert, hier mit dem leeren String: String ausgabe = ""; Datenkonvertierung mit dem Cast-Operator Man kann in einem laufenden Programm einen Wert eines gegebenen Datentyps in einen anderen explizit konvertieren, und zwar mit dem Cast-Operator (): Durch ( Datentyp ) Ausdruck wird der Wert des Ausdrucks in den Typ umgewandelt, der in den Klammern davor eingeschlossen ist. Beispielsweise castet man die Division der beiden int-werte 14 und 3 in eine Division von double-werten, indem man schreibt (double) 14 / 3. In diesem Falle ist die Wirkung exakt wie 14.0 / 3, man kann jedoch mit dem Cast-Operator auch Werte von Variablen konvertieren. So könnte man durch die beiden Zeilen double x = ; int n = (int) x; erreichen, dass die Variable n den int-wert 3 erhält. Der Cast-Operator kann nicht nur in primitive Datentypen konvertieren, sondern auch zwischen komplexen Datentypen ( Objekten, wie wir später noch kennen lernen werden). Der Cast-Operator bewirkt eine sogenannte explizite Typumwandlung, sie ist zu unterscheiden von der impliziten Typumwandlung, die automatisch geschieht. casten byte short int long float double char Ein solcher impliziter Cast geschieht zum Beispiel bei den Anweisungen double x = 1; (int double) oder int z = z ; (char int) Operatoren, Operanden, Präzedenz Tauchen in einer Anweisung mehrere Operatoren auf, so werden sie nach einer durch ihre Präzedenz (oder ihrer Wertigkeit) festgelegten Reihenfolge ausgeführt. Eine solche Präzedenz ist z.b. Punkt vor Strich, wie bei den Integer-Operationen in Zeile 14: Hier ist das Ergebnis wie erwartet 22. In Tabelle 1.4 sind die arithmetischen Operatoren und ihre Präzedenz aufgelistet. Arithmetische Ausdrücke in Java müssen in einzeiliger Form geschrieben werden. D.h., Ausdrücke wie a geteilt durch b müssen in Java als a / b geschrieben werden, so dass alle

24 24 Andreas de Vries Operator Operation Präzedenz () Klammern werden zuerst ausgewertet. Sind Klammern von Klammern umschlossen, werden sie von innen nach außen ausgewertet. *, /, % Multiplikation, Division, werden als zweites ausgewertet Modulus +, - Addition, Subtraktion werden zuletzt ausgewertet Tabelle 1.4: Die Präzedenz der arithmetischen Operatoren in Java. Mehrere Operatoren gleicher Präzedenz werden stets von links nach rechts ausgewertet. Konstanten, Variablen und Operatoren in einer Zeile sind. Eine Schreibweise wie a b ist nicht möglich. Dafür werden Klammern genau wie in algebraischen Termen zur Änderung der Rechenreihenfolge benutzt, so wie in a * (b + c). Operatoren hängen ab von den Datentypen ihrer Operanden In Anmerkung (3) sind die Werte für y und z auch wie erwartet, 3.5. Aber x = 3 Was geht hier vor? Die Antwort wird angedeutet durch die Operationen in Anmerkung (3): Der Operator / ist mit zwei Integer-Zahlen als Operanden nämlich eine Integer-Division oder eine ganzzahlige Division und gibt als Wert eine Integer-Zahl zurück. Und zwar ist das Ergebnis genau die Anzahl, wie oft der Nenner ganzzahlig im Zähler aufgeht, also ergibt 14 / 4 genau 3. Den Rest der ganzzahligen Division erhält man mit der modulo-operation %. Da mathematisch 14/4 = 3 Rest 2, ist 14 % 4 eben 2. Um nun die uns geläufige Division reeller Zahlen zu erreichen, muss mindestens einer der Operanden eine double- oder float-zahl sein. Die Zahl 14 wird zunächst stets als int-zahl interpretiert. Um sie als double-zahl zu markieren, gibt es mehrere Möglichkeiten: double s = 14.0, t = 14., u = 14d, v = 1.4e1; (1.2) String als Datentyp und Stringaddition Wie die dritte der Deklarationen in der Arithmetik-Applikation zeigt, ist ein String, neben den primitiven Datentypen aus Tab. 1.3, ein weiterer Datentyp. Dieser Datentyp ermöglicht die Darstellung eines allgemeinen Textes. In der Anweisung in Anmerkung (6) ausgabe = "k = " + k; (1.3) wird auf der rechten Seite eine neue (!) Operation + definiert, die Stringaddition oder Konkatenation (Aneinanderreihung). Diese Pluszeichen kann nämlich gar nicht die übliche Addition von Zahlen sein, da der erste der beiden Operanden "k = " ein String ist! Die Konkatenation zweier Strings "text1" und "text2" bewirkt, dass ihre Werte einfach aneinander gehängt werden, "text1" + "text2" "text1text2" (1.4) Hier ist die Reihenfolge der Operanden natürlich entscheidend (im Gegensatz zur Addition von Zahlen). Die Stringaddition "2" + "3" ein anderes Ergebnis liefert als die Addition 2+3: "2" + "3" "23", (1.5)

25 Grundlagen der Programmierung 25 Auch hier, ähnlich wie bei der unterschiedlichen Division von int und double-werten, haben zwei verschiedene Operatoren dasselbe Symbol. Das steckt hinter der Definition 1.1. Eine Eigentümlichkeit ist aber noch nicht geklärt: Was wird denn für k eingesetzt? Das ist doch ein int-wert und kein String. Die Antwort ist, dass der zur Laufzeit in dem Speicherbereich für k stehende Wert (also 22) automatisch in einen String umgeformt wird, "k = " + 22 "k = " + "22" "k = 22" (1.6) Nach Ausführung der Anweisung (6) steht also in der Variablen augabe der String "k = 22". Mit unserem bisherigen Wissen über den Zuweisungsoperator gibt nun der mathematisch gelesen natürlich völlig unsinnige Ausdruck bei Anmerkung (6), ausgabe = ausgabe + "\nx = " + x... ; einen Sinn: An den alten Wert von ausgabe wird der String "..." angehängt und als neuer Wert in den Speicherplatz für ausgabe gespeichert Spezielle arithmetische Operatoren Es gibt eine ganze Reihe von Operatoren, die häufig verwendete Anweisungen verkürzt darstellen. Wir geben Sie hier tabellarisch an. Zuweisungs- Wert für c, wenn operator Beispiel Bedeutung int c=11, x=4 += c += x; c = c + x; 15 -= c -= x; c = c - x; 7 *= c *= x; c = c * x; 44 /= c /= x; c = c / x; 2 %= c %= x; c = c % x; 3 So bewirkt als die Anweisung c += 4;, dass der beim Ausführen der Anweisung aktuelle Wert von c, beipielsweise 11, um 4 erhöht wird und den alten Wert überschreibt. Daneben gibt es in Java den Inkrementoperator ++ und den Dekrementoperator -. Wird eine Variable c um 1 erhöht, so kann man den Inkrementoperator c++ oder ++c anstatt der Ausdrücke c = c+1 oder c += 1 verwenden, wie aus der folgenden Tabelle ersichtlich. Operator Bezeichnung Beispiel Bedeutung ++ präinkrement ++c erhöht erst c um 1, und führt dann den Rest der Anweisung mit dem neuen Wert aus ++ postinkrement c++ führt erst die gesamte Anweisung aus und erhöht danach den Wert von c um 1 -- prädekrement --c erniedrigt erst c um 1, und führt dann den Rest der Anweisung mit dem neuen Wert aus -- postdekrement c-- führt erst die gesamte Anweisung aus und erniedrigt erst dann den Wert von c um 1 Besteht insbesondere eine Anweisung nur aus einem dieser Operatoren, so haben Prä- und Postoperatoren dieselbe Wirkung, also: c++; ++c; und c-; -c;. Verwenden Sie also diese Operatoren nur dann in einer längeren Anweisung, wenn Sie das folgende Programmbeispiel sicher verstanden haben! Da die Operatoren ++ und - nur einen Operanden haben, heißen sie unär (unary). Überlegen Sie, was in dem folgenden Beispielprogramm als ausgabe ausgegeben wird. import javax.swing.joptionpane;

26 26 Andreas de Vries /** Unterschied präinkrement - postinkrement. */ public class Inkrement { public static void main( String[] args ) { int c; String ausgabe = ""; // postinkrement c = 5; ausgabe += c + ", "; ausgabe += c++ + ", "; ausgabe += c + ", "; // präinkrement c = 5; ausgabe += c + ", "; ausgabe += ++c + ", "; ausgabe += c; // Ausgabe des Ergebnisses: JOptionPane.showMessageDialog( null, ausgabe, "prä- und postinkrement", JOptionPane.PLAIN_MESSAGE ); (Antwort: "5, 5, 6, 5, 6, 6") 1.6 Eingaben Bisher haben wir Programme betrachtet, in denen mehr oder weniger komplizierte Berechnungen durchgeführt wurden und die das Ergebnis ausgaben. Der Anwender konnte während des Ablaufs dieser Programme die Berechnung in keiner Weise beeinflussen. Eine wesentliche Eigenschaft benutzerfreundlicher Programmme ist es jedoch, durch Eingaben während der Laufzeit ihren Ablauf zu bestimmen. In der Regel wird der Benutzer durch Dialogfenster aufgefordert, die Notwendigen Daten einzugeben. Man nennt diese Art von Kommunikation auch Interaktion Strings addieren Unsere nächste Java-Applikation wird zwei Eingabestrings über die Tastatur einlesen und sie konkateniert (= aneinandergehängt) ausgeben. import javax.swing.*; // (1) /** * Addiert 2 einzugebende Strings */ public class StringAddition { public static void main( String[] args ) { // Eingabefelder aufbauen: JTextField[] feld = {new JTextField(), new JTextField(); // (2) Object[] msg = {"Erster Text:", feld[0], "Zweiter Text:", feld[1]; // Dialogfenster anzeigen: int click = JOptionPane.showConfirmDialog(null, msg, "Eingabe", 2); // Konkatenation der eingegebenen Texte: String ausgabe = feld[0].gettext() + feld[1].gettext(); // (3)

27 Grundlagen der Programmierung 27 // Ausgabe des konkatenierten Texts: JOptionPane.showMessageDialog( null, ausgabe, "Ergebnis", JOptionPane.PLAIN_MESSAGE // (4) ); Das Programm gibt nach dem Start das Fenster in Abbildung 1.7 auf dem Bildschirm aus. Abbildung 1.7: Die Applikation StringAddition. Links der Eingabedialog, rechts die Ausgabe. Wir bemerken zunächst, dass diesmal mit import javax.swing.* das gesamte Swing- Paket importiert wird, insbesondere also die Klasse JOptionPane. Ferner wird die Klasse StringAddition deklariert, der Dateiname für die Quelldatei ist also StringAddition.java Eingabedialoge Eingaben über Dialogfenster zu programmieren, insbesondere mit mehreren Eingabefeldern, ist im Allgemeinen eine nicht ganz einfache Aufgabe. In Java geht es relativ kurz, man benötigt allerdings drei Anweisungen (Anmerkung (2)), den Eingabeblock : // Eingabefelder aufbauen: JTextField[] feld = {new JTextField(), new JTextField(); Object[] msg = {"Erster Text:", feld[0], "Zweiter Text:", feld[1]; // Dialogfenster anzeigen: int click = JOptionPane.showConfirmDialog(null, msg, "Eingabe", 2); (1.7) Wir werden diese drei Anweisungen hier nur insoweit analysieren, um sie für unsere Zwecke als flexibles Dialogfenster einsetzen zu können. Um genau zu verstehen, wie sie funktionieren, fehlt uns zur Zeit noch das Hintergrundwissen. Die ersten zwei Anweisungen bauen die Eingabefelder und die dazugehörigen Texte auf. Beides sind Deklarationen mit einer direkten Wertzuweisung. Die erste Variable ist feld, und es ist ein so genanntes Array, eine durchnummerierte Liste vom Datentyp JTextField[]. Dieser Datentyp ist allerdings nicht primitiv, sondern eine Klasse, die im Paket javax.swing bereit gestellt wird. Das Array wird in diesem Programm mit zwei Textfeldern gefüllt, jeweils mit dem Befehl new JTextField(). Das erste Textfeld in diesem Array hat nun automatisch die Nummer 0, und man kann mit feld[0] darauf zugreifen, auf das zweite entsprechend mit feld[1]. In der zweiten Anweisung wird ein Array vom Typ Object[] deklariert, wieder mit einer direkten Wertzuweisung. Hier werden abwechselnd Strings und Textfelder aneinander gereiht, ihr Zusammenhang mit dem später angezeigten Dialogfenster ist in Abb. 1.8 dargestellt. Mit der dritten Anweisungszeile schließlich wird das Dialogfenster am Bildschirm angezeigt: int click = JOptionPane.showConfirmDialog(null, msg, "Eingabe", 2);

28 28 Andreas de Vries JTextField[] feld = {new JTextField(), new JTextField(); Object[] msg = {"Erster Text:", feld[0], "Zweiter Text:", feld[1]; Abbildung 1.8: Das durch den Eingabeblock erzeugte Dialogfenster Die Wirkung dieser Anweisung ist interessanterweise, dass sie den weiteren Ablauf des Programms solange anhält, bis der Anwender mit der Maus auf OK oder Abbrechen geklickt hat. Alle weiteren Anweisungen der Applikation, also ab Anweisung (3), werden also erst ausgeführt, wenn der Anwender den Dialog beendet hat. Man spricht daher von einem modalen Dialog. Danach kann man mit der Anweisung feld[n].gettext() auf den vom Anwender in das (n + 1)-te Textfeld eingetragenen Text zugreifen. Der Text ist in Java natürlich ein String. Ob der Anwender nun OK oder Abbrechen gedrückt hat, wird in der Variablen click gespeichert, bei OK hat sie den Wert 0, bei Abbrechen den Wert 2: OK click = 0, Abbrechen click = 2. (1.8) Zunächst benötigen wir diese Information noch nicht, in unserem obigen Programm ist es egal, welche Taste gedrückt wird. Aber diese Information wird wichtig für Programme, deren Ablauf durch die beiden Buttons gesteuert wird. Konkatenation von Strings In Anmerkung (3), String ausgabe = feld[0].gettext() + feld[1].gettext(); wird die Variable ausgabe deklariert und ihr direkt ein Wert zugewiesen, nämlich die Summe aus den beiden vom Anwender eingegebenen Texten, in Java also Strings. Natürlich kann man Strings nicht addieren wie Zahlen, eine Stringaddition ist nichts anderes als eine Aneinaderreihung. Man nenn sie auch Konkatenation. So ergibt die Konkatenation der Strings "Ach" und "! So!" z.b. "Ach" + "! So!" "Ach! So!" Zahlen addieren Unsere nächste Java-Applikation wird zwei Integer-Zahlen über die Tastatur einlesen und die Summe ausgeben. import javax.swing.*;

29 Grundlagen der Programmierung 29 /** * Addiert 2 einzugebende Integer-Zahlen. */ public class Addition { public static void main( String[] args ) { int zahl1, zahl2, // zu addierende Zahlen // (1) summe; // Summe von zahl1 und zahl2 String ausgabe; // Eingabefelder aufbauen: JTextField[] feld = {new JTextField(), new JTextField(); Object[] msg = {"Erste Zahl:", feld[0], "Zweite Zahl:", feld[1]; // Dialogfenster anzeigen: int click = JOptionPane.showConfirmDialog(null, msg, "Eingabe", 2); // Konvertierung der Eingabe von String nach int: zahl1 = Integer.parseInt( feld[0].gettext() ); // (2) zahl2 = Integer.parseInt( feld[1].gettext() ); // Addition der beiden Zahlen: summe = zahl1 + zahl2; // (3) ausgabe = "Die Summe ist " + summe; // (4) JOptionPane.showMessageDialog( null, ausgabe, "Ergebnis", JOptionPane.PLAIN_MESSAGE ); Konvertierung von Strings in Zahlen In großen Teilen ist dieses Programm identisch mit unserem Programm zur Stringaddition (Abb. 1.7). bis auf die Deklaration der int-variablen. Das Einlesen der Werte geschieht hier genau wie im zweiten Programm, nur dass der Informationstext in der Dialogbox jetzt etwas anders lautet: Der Anwender wird aufgefordert, ganze Zahlen einzugeben. Nun passiert bei der Eingabe aber Folgendes: Der Anwender gibt ganze Zahlen ein, die Textfelder feld[0] und feld[1] aber, denen der Wert übergeben wird, liefern mit feld[n].gettext() einen Wert vom Typ String. Wie passt das zusammen? Kurz gesagt liegt das daran, dass über Textfelder genau genommen nur Strings eingelesen werden können. Schließlich ist jede Eingabe von der Tastatur ein String, d.h. auch wenn jemand 5 oder eintippt, so empfängt das Programm immer einen String. Der feine aber eminent wichtige Unterschied zwischen als String und 3,1415 als Zahl ist vergleichbar mit dem zwischen einer Ziffernfolge und einer Zahl. Als Zahlen ergibt die Summe 5 + 3,1415 natürlich 8,1415 als Strings jedoch gilt "5" + "3.1415" = " "! Zahlen werden durch + arithmetisch addiert (was sonst?), aber Strings werden konkateniert. Unser Programm soll nun jedoch Integer-Zahlen addieren, empfängt aber über die Tastatur nur Strings. Was ist zu tun? Die Eingabestrings müssen konvertiert werden, d.h. ihr Stringwert muss in den Integerwert umgewandelt werden. Java stellt für diese Aufgabe eine Methode bereit, Integer.parseInt, eine Methode der Klasse Integer aus dem Paket java.lang. In der Zeile der Anmerkung (2),

30 30 Andreas de Vries zahl1 = Integer.parseInt( feld[0].gettext() ); gibt die Methode parseint den nach int konvertierten String aus dem Textfeld als int-wert an das Programm zurück, der dann sofort der int-variablen zahl1 zugewiesen wird. Entsprechend wird in der darauf folgenden Zeile der Wert des zweiten Textfeldes konvertiert und an die Variable zahl2 übergeben. Die Zeile der Anmerkung (3) summe = zahl1 + zahl2; besteht aus zwei Operatoren, = und +. Der +-Operator addiert die Werte der beiden Zahlen, der Zuweisungsoperator = weist diesen Wert der Vaiablen summe zu. Oder nicht so technisch formuliert: Erst wird die Summe zahl1 + zahl2 errechnet und der Wert dann an summe übergeben. In Anmerkung (4) schließlich wird das Ergebnis mit einem Text verknüpft, um ihn dann später am Bildschirm auszugeben. ausgabe = "Die Summe ist " + summe; Was geschieht hier? Die Summe eines Strings mit einer Zahl? Wenn Sie die Diskussion der obigen Abschnitte über Strings, Ziffernfolgen und Zahlen rekapitulieren, müssten Sie jetzt stutzig werden. String + Zahl? Ist das Ergebnis eine Zahl oder ein String? Die Antwort ist eindeutig: String + Zahl ergibt String! Java konvertiert automatisch...! Der +-Operator addiert hier also nicht, sondern konkateniert. Sobald nämlich der erste Operand von + ein String ist, konvertiert Java alle weiteren Operanden automatisch in einen String und konkateniert. Gibt beispielsweise der Anwender die Zahlen 13 und 7 ein, so ergibt sich die Wertetabelle 1.5 für die einzelnen Variablen unseres Programms. Zeitpunkt feld[0] feld[1] zahl1 zahl2 summe ausgabe vor Eingabe nach Eingabe von 13 und 7 "13" "7" nach Typkonvertierung (2) "13" "7" 13 7 nach Anmerkung (3) "13" "7" nach Anmerkung (4) "13" "7" "Die Summe ist 20" Tabelle 1.5: Wertetabelle für die Variablen im zeitlichen Ablauf des Programmms Konvertierung von String in weitere Datentypen Entsprechend der Anweisung Integer.parseInt() zur Konvertierung eines Strings in einen int- Wert gibt es so genannte parse-methoden für die anderen Datentypen für Zahlen, die alle nach dem gleichen Prinzip aufgebaut sind: Datentyp.parseDatentyp(... Text...) Beispielsweise wird durch Double.parseDouble("3.1415") der String "3.1415" in die double- Zahl konvertiert. Hierbei sind Integer und Double sogenannte Hüllklassen (wrapper classes). Zu jedem der primitiven Datentypen existiert solch eine Klasse.

31 Grundlagen der Programmierung Einlesen von Kommazahlen Ein häufiges Problem bei der Eingabe von Kommazahlen ist die kontinentaleuropäische Konvention des Dezimalkommas, nach der die Zahl π beispielsweise als 3,1415 geschrieben. Gibt ein Anwender jedoch eine Zahl mit einem Dezimalkomma ein, so entsteht bei Ausführung der parsedouble-methode ein Laufzeitfehler (eine Exception) und das Programm stürzt ab. Eine einfache Möglichkeit, solche Eingaben dennoch korrekt verarbeiten zu lassen, bietet die Methode replace der Klasse String. Möchte man in einem String s das Zeichen a durch b ersetzen, so schreibt man s = s.replace( a, b ); Beipielsweise ergibt s = "Affenhaar".replace( a, e ); den String "Affenheer". Mit Hilfe des replace-befehls kann man eine Eingabe mit einem möglichen Komma also zunächst durch einen Punkt ersetzen und erst dann zu einem double-wert konvertieren: double x;... x = Double.parseDouble( feld[0].gettext().replace(,,. ) ); Weitere Eingabemöglichkeiten Eingabefenster mit einem Textfeld Benötigt man nur eine einzige Eingabe, so gibt es eine etwas kürzere Möglichkeit als den Eingabeblock, nämlich die Methode showinputdialog der Klasse JOptionPane, die mit der Anweisung eingabe = JOptionPane.showInputDialog( "... Eingabeaufforderung..."); (falls eingabe vorher als String deklariert wurde) aufgerufen wird. Mit dem Eingabeblock wäre die entsprechende Eingabe also eingabe = feld[0].gettext(), d.h. das Aufbauen des Dialogfensters und das Abgreifen der Eingabe geschieht in einer einzigen Anweisung. Scanner-Eingaben über die Konsole Eine Möglichkeit, Eingaben über das Konsolenfenster einzulesen, bietet die folgende Konstruktion mit der Scanner-Klasse: Scanner sc = new Scanner(System.in); System.out.print("Eingabe: "); String ein = sc.next(); Möchte man mehrere Eingaben einlesen, so werden einfach weitere sc.next()-anweisungen angegeben. args-eingaben über die Konsole Eingaben, die bereits beim Start der Applikation einzugeben sind, können über die args- Parameter der main-methode durch die folgenden Anweisungen eingelesen werden: public class ArgsEingabe { public static void main(string[] args) { String ein1 = "", ein2 = "";

32 32 Andreas de Vries if ( args.length > 0 ) ein1 = args[0]; if ( args.length > 1 ) ein2 = args[1]; Um auf diese Weise zwei Eingaben zu machen, muss die Applikation mit den Daten aufgerufen werden, etwa: java ArgsEingabe Hallo Ihr Die verschiedenen Eingabestrings werden also einfach durch Leerzeichen getrennt hinter den Klassennamen geschrieben. Die Verallgemeinerung dieser Konstruktion für noch mehr Eingaben ist offensichtlich. Diese eher technische Eingabeart eignet sich sehr gut für den Programmierer, um während der Entwicklung eines Programms verschiedene Eingaben verarbeiten zu lassen. 1.7 Zusammenfassung Applikationen, Strings und Ausgaben Ein Java-Programm ist eine Klasse. Eine Klasse in Java muss in einer Datei abgespeichert werden, die genau so heißt wie die Klasse, mit der Erweiterung.java. (Ausnahme: Wenn mehrere Klassen in einer Datei definiert werden.) Klassennamen beginnen mit einem Großbuchstaben und bestehen aus einem Wort. Verwenden Sie sprechende Namen, die andeuten, was die Klasse bedeutet. Im Gegensatz dazu werden Methoden- und Variablennamen klein geschrieben. Java ist schreibungssensitiv (case sensitive), d.h. es wird zwischen Groß- und Kleinschreibung unterschieden. Eine Applikation benötigt die Methode main; sie heißt daher auch main-klasse. Die Methode main ist der Startpunkt für die Applikation. Sie enthält der Reihe nach alle Anweisungen, die ausgeführt werden sollen. Die Syntax für eine Applikation lautet: public class Klassenname { public static void main( String[] args ) { Deklarationen und Anweisungen; Kommentare sind Textabschnitte, die in den Quelltext eingefügt werden und vom Compiler nicht beachtet werden. Es gibt drei Kommentararten: //... einzeiliger Kommentar /*... * / Es können auch mehrerzeiliger Kommentar /**... * / Dokumentationskommentar (wird von javadoc automatisch verarbeitet)

33 Grundlagen der Programmierung 33 Ein String ist eine Kette von Unicode-Zeichen, die von Anführungszeichen (") umschlossen ist. Beispiele: "abc ijk", oder der leere String "". Die Ausgabe eines Strings "...Text..." geschieht mit der Anweisung javax.swing.joptionpane.showmessagedialog( null, "... Text... " ); bzw. einfach mit JOptionPane.showMessageDialog( null, "... Text..." ); wenn die Klasse JOptionPane mit import javax.swing.joptionpane; vor der Klassendeklaration importiert wurde. Eine weitere Ausgabe im Befelszeilenfenster ( Konsole ) geschieht durch die Anweisungen System.out.println("..."); oder System.out.print("..."); Der Unterschied der beiden Anweisungen besteht darin, dass println nach der Ausgabe des Strings einen Zeilenumbruch ausführt. Variablen, Datentypen und Operatoren Der Datentyp für Strings ist in Java die Klasse String. In Java gibt es acht primitive Datentypen, boolean für Boolesche Werte, char für einzelne Unicode-Zeichen, byte, short, int und long für ganze Zahlen, float und double für reelle Zahlen Die Datentypen unterscheiden sich in ihrer Speichergröße und in ihrem Wertebereich. Werte können in Variablen gespeichert werden. Eine Variable ist ein Name, der ein zusammenhängendes Wort ohne Sonderzeichen ist und auf einen bestimmten Speicherbereich verweist. Variablen müssen deklariert werden, d.h. sie müssen vor einer Wertzuweisung einem eindeutigen Datentyp zugeordnet sein. Variablen müssen initialisiert werden, bevor man sie benutzen kann. Verwendung nichtinitialisierter Variablen in einer Zuweisung auf der rechten Seite führt zu einer Fehlermeldung. Ein Operator ist durch seine Wirkung auf seine Operanden definiert. Insbesondere kann ein Operator zwar dieselbe Bezeichnung wie ein anderer haben, aber eine ganz andere Wirkung besitzen. Z.B. bedeutet + für zwei Zahlen eine Addition, für zwei Strings eine Konkatenation, oder / für zwei int-werte eine ganzzahlige Division, für mindestens einen double-wert aber eine Division reeller Zahlen. Operatoren haben eine Rangfolge (Präzedenz), die bestimmt, welcher der Operatoren in einer Anweisung zuerst bearbeitet wird. Haben Operatoren den gleichen Rang, wird von links nach rechts (bzw. bei Klammern von innen nach außen) bewertet.

34 34 Andreas de Vries Java kennt die Rechenoperationen +, -, *, /, %. Die Division zweier int- oder long-werte ist in Java automatisch eine ganzzahlige Division, d.h. 14/4 ergibt 3. Der cast-operator konvertiert primitive Datentypen in andere primitive Datentypen. Z.B. wird (int) 3.14 zum integer-wert 3. Der cast-operator kann auch komplexe Datentypen (Objekte) in andere komplexe Datentypen konvertieren. Mit den modifizierten Zuweisungsoperatoren +=, -=, * =, /=, %= wird der Wert der Variablen auf der linken Seite durch ihren Wert vor der Anweisung um die entsprechende Operation mit dem Wert auf der rechten Seite aktualisiert. Der Inkrementoperator ++ erhöht den Wert der direkt vor oder hinter ihm stehenden Variablen um 1, der Dekrementoperator - erniedrigt ihn um 1. Stehen die Operatoren allein in einer Anweisung, so ist ihre Wirkung gleich, also c++; ++c; und c-; -c;. Die Klasse Math in dem Standardpaket java.lang (welches man nicht importieren muss) liefert die gängigen mathematischen Funktionen, z.b. sin und cos oder pow. Man verwendet sie durch den Aufruf Math.sin(3.14) oder Math.pow(Math.PI, 0.5). Eine Liste der Funktionen und der für sie zu verwendenden Syntax (welche Parameter mit welchen Datentypen erforderlich und welcher Datentyp des Ergebnisses zu erwarten ist) finden in der API-Dokumentation, online unter java.sun.com. Die Klasse DecimalFormat aus dem Paket java.text ermöglicht mit der Anweisung java.text.decimalformat variable = java.text.decimalformat( "#,##0.00" ); die Ausgabe einer double-zahl x mit genau zwei Nachkommastellen mittels variable.format( x ); Eingaben Eine Eingabe von Daten kann mit dem Eingabeblock geschehen: // Eingabefelder aufbauen: JTextField[] feld = {new JTextField(), new JTextField(); Object[] msg = {"Erster Text:", feld[0], "Zweiter Text:", feld[1]; // Dialogfenster anzeigen: int click = JOptionPane.showConfirmDialog(null, msg, "Eingabe", 2); Dazu muss das Paket mit import javax.swing.*; vor der Klassendeklaration importiert werden. Ebenso kann eine Eingabe mit String ein = JOptionPane.showInputDialog( "... Text..." ); oder über das Konsolenfenster mit der Scanner-Klasse und ihrer Methode next() durchgeführt werden.

35 Grundlagen der Programmierung 35 Ein eingegebener Wert ist zunächst immer ein String. Um ihn als Zahl zu speichern, muss er konvertiert werden. Die Konvertierung von einem String in einen int bzw. double-wert geschieht mit den Methoden Integer.parseInt("...") bzw. Double.parseDouble("...") Zur Darstellung des Ablaufs eines Programms, in dem Variablen verschiedene Werte annehmen, eignen sich Wertetabellen. Der Operator + hat abhängig von seinen Operanden verschiedene Wirkung. Sei op1 + op2 gegeben. Dann gilt: Ist der erste Operand op1 ein String, so versucht der Java-Interreter, den zweiten Operanden op2 in einen String zu konvertieren und konkateniert beide Strings. Sind beide Operanden Zahlen (also jeweils von einem der primitiven Datentypen byte, short, int, long, float, double), so werden sie addiert. Hierbei wird der Ergebniswert in den größeren der beiden Operandentypen konvertiert, also z.b. int + double ergibt double. Ist op1 eine Zahl und op2 ein String, so kommt es zu einem Kompilierfehler.

36 Kapitel 2 Prozedurale Programmierung In diesem Kapitel beschäftigen wir uns mit den Grundlagen von Algorithmen. Ein Algorithmus, oder eine Routine, ist eine exakt definierte Prozedur zur Lösung eines gegebenen Problems, also eine genau angegebene Abfolge von Anweisungen oder Einzelschritten. Im Rahmen der Objektorientierung bildet ein Algorithmus eine Methode. Bei einem Algorithmus spielen die zeitliche Abfolge der Anweisungen, logische Bedingungen (Abb. 2.1) und Wiederholungen eine wesentliche Rolle. Das Wort Algorithmus leitet Abbildung 2.1: Für einen korrekt funktionierenden Algorithmus spielen Logik und zeitliche Reihenfolge der Einzelschritte eine wesentliche Rolle. c 1989 Michael Bedard The Failure of Marxism sich ab von dem Namen des bedeutenden persisch-arabischen Mathematikers Al-Chwarizmi 1 (ca. 780 ca. 850). Dessen mathematisches Lehrbuch Über das Rechnen mit indischen Ziffern, um 825 erschienen und etwa 300 Jahre später (!) vom Arabischen ins Lateinische übersetzt, beschrieb das Rechnen mit dem im damaligen Europa unbekannten Dezimalsystem der Inder. 2 Auf diese Weise wurde das Wort Algorithmus zu einem Synonym für Rechenverfahren. 2.1 Logik und Verzweigung Die Verzweigung Die Verzweigung (auch: Selektion, Auswahlstruktur oder if-anweisung) eine Anweisung, die abhängig von einer Bedingung zwischen alternativen Anweisungsfolgen auswählt. In Java hat sie die folgende Syntax: George Ifrah: The Universal History of Numbers. John Wiley & Sons, New York 2000, S

Die Programmiersprache Java. Dr. Wolfgang Süß Thorsten Schlachter

Die Programmiersprache Java. Dr. Wolfgang Süß Thorsten Schlachter Die Programmiersprache Java Dr. Wolfgang Süß Thorsten Schlachter Eigenschaften von Java Java ist eine von der Firma Sun Microsystems entwickelte objektorientierte Programmiersprache. Java ist......a simple,

Mehr

Vorkurs Informatik WiSe 15/16

Vorkurs Informatik WiSe 15/16 Java 1 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe, 12.10.2015 Technische Universität Braunschweig, IPS Überblick Organisatorisches Arbeitsablauf Hello! 12.10.2015 Dr. Werner Struckmann / Stephan

Mehr

Hello World. Javakurs 2014, 1. Vorlesung. Sebastian Schuck. basierend auf der Vorlage von Arne Kappen. wiki.freitagsrunde.org. 3.

Hello World. Javakurs 2014, 1. Vorlesung. Sebastian Schuck. basierend auf der Vorlage von Arne Kappen. wiki.freitagsrunde.org. 3. Hello World Javakurs 2014, 1. Vorlesung Sebastian Schuck basierend auf der Vorlage von Arne Kappen wiki.freitagsrunde.org 3. März 2014 This work is licensed under the Creative Commons Attribution-ShareAlike

Mehr

Einführung in Java. PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005

Einführung in Java. PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005 Einführung in Java PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005 Gliederung 1. Was ist Java / Geschichte von Java 2. Prinzip der Plattformunabhängigkeit 3. Wie kommt man vom Quellcode zum Programm

Mehr

Java Einführung Programmcode

Java Einführung Programmcode Java Einführung Programmcode Inhalt dieser Einheit Programmelemente Der erste Programmcode Die Entwicklungsumgebung: Sun's Java Software Development Kit (SDK) Vom Code zum Ausführen des Programms 2 Wiederholung:

Mehr

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden. Einfache Ein- und Ausgabe mit Java 1. Hallo-Welt! Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden. /** Die Klasse hello sendet einen

Mehr

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = 0.51129 Euro ergeben.

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = 0.51129 Euro ergeben. Aufgabe 1.30 : Schreibe ein Programm DM_in_Euro.java zur Umrechnung eines DM-Betrags in Euro unter Verwendung einer Konstanten für den Umrechnungsfaktor. Das Programm soll den DM-Betrag als Parameter verarbeiten.

Mehr

1. Der Einstieg in Java. Was heißt Programmieren?

1. Der Einstieg in Java. Was heißt Programmieren? 1. Der Einstieg in Java Lernziele: Am Ende dieses Kapitels sollen Sie wissen, aus welchen Bestandteilen ein Java-Programm besteht, Java-Programme übersetzen und ausführen können, Möglichkeiten der Kommentierung

Mehr

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein.

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein. Schritt 1: Installation des Javacompilers JDK. Der erste Start mit Eclipse Bevor Sie den Java-Compiler installieren sollten Sie sich vergewissern, ob er eventuell schon installiert ist. Gehen sie wie folgt

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Objektorientierte Programmierung 1 Geschichte Dahl, Nygaard: Simula 67 (Algol 60 + Objektorientierung) Kay et al.: Smalltalk (erste rein-objektorientierte Sprache) Object Pascal, Objective C, C++ (wiederum

Mehr

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2 Java Einführung VARIABLEN und DATENTYPEN Kapitel 2 Inhalt dieser Einheit Variablen (Sinn und Aufgabe) Bezeichner Datentypen, Deklaration und Operationen Typenumwandlung (implizit/explizit) 2 Variablen

Mehr

Java-Schulung Grundlagen

Java-Schulung Grundlagen Java-Schulung Grundlagen Java 2 Standard Edition JDK 5 / 6 31.05.2008 Marcel Wieczorek 1 Themenübersicht Basiswissen Objektorientierung Datentypen Fehlerbehandlung Sonstiges Einführung Klassen, Strings

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java objektorientierte Programmierung 2 2 Zusammenhang Klasse-Datei In jeder *.java Datei kann es genau eine public-klasse geben wobei Klassen- und Dateiname übereinstimmen. Es können

Mehr

Applications Applets (eingeschränkte Rechte)

Applications Applets (eingeschränkte Rechte) 1 Arten von Java-Programmen Man unterscheidet 2 verschiedene Arten von Java-Programmen: Applications Applets (eingeschränkte Rechte) Erstere sind eigenständige Programme. Letztere sind "kleine" Programme,

Mehr

Einführung in die C-Programmierung

Einführung in die C-Programmierung Einführung in die C-Programmierung Warum C? Sehr stark verbreitet (Praxisnähe) Höhere Programmiersprache Objektorientierte Erweiterung: C++ Aber auch hardwarenahe Programmierung möglich (z.b. Mikrokontroller).

Mehr

Einführung in PHP. (mit Aufgaben)

Einführung in PHP. (mit Aufgaben) Einführung in PHP (mit Aufgaben) Dynamische Inhalte mit PHP? 2 Aus der Wikipedia (verkürzt): PHP wird auf etwa 244 Millionen Websites eingesetzt (Stand: Januar 2013) und wird auf etwa 80 % aller Websites

Mehr

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE16-Rekursion (Stand 09.12.2011) Aufgabe 1: Implementieren Sie in Java ein Programm, das solange einzelne Zeichen vom Terminal einliest, bis ein #-Zeichen

Mehr

Programmieren I. Prinzipieller Ablauf. Eigenschaften von JAVA. Source-Code Javac Bytecode. Java Virtual Machine (Java, Browser, Appletviewer)

Programmieren I. Prinzipieller Ablauf. Eigenschaften von JAVA. Source-Code Javac Bytecode. Java Virtual Machine (Java, Browser, Appletviewer) Programmieren I Grundlagen von JAVA Dr. Klaus Höppner Hello World in JAVA Hochschule Darmstadt WS 2007/2008 Elementare Datentypen 1 / 17 2 / 17 Eigenschaften von JAVA Prinzipieller Ablauf Plattform-und

Mehr

Übungen zu C++ Kapitel 1

Übungen zu C++ Kapitel 1 Übungen zu C++ Kapitel 1 Aufgabe 1 Ergänze den Text. a) Die sechs logischen Einheiten eines Computers sind Eingabe-Einheit, Ausgabe-Einheit, RAM, ALU, CPU, Plattenspeicher. b) Die Programme, welche Hochsprachenprogramme

Mehr

1. Formulieren Sie den Algorithmus <Bedienung eines Getränkeautomaten> nach den oben genannten Kriterien.

1. Formulieren Sie den Algorithmus <Bedienung eines Getränkeautomaten> nach den oben genannten Kriterien. Java 1 Einführung Grundlegende Übungsaufgaben Arbeitsauftrag 1.1 1. Formulieren Sie den Algorithmus nach den oben genannten Kriterien. Beispiel: Bedienung eines Getränkeautomaten

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 22 Einstieg in die Informatik mit Java Grundlagen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 22 1 Kommentare 2 Bezeichner für Klassen, Methoden, Variablen 3 White

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java Vorlesung vom 18.4.07, Grundlagen Übersicht 1 Kommentare 2 Bezeichner für Klassen, Methoden, Variablen 3 White Space Zeichen 4 Wortsymbole 5 Interpunktionszeichen 6 Operatoren 7 import Anweisungen 8 Form

Mehr

Programmieren was ist das genau?

Programmieren was ist das genau? Programmieren was ist das genau? Programmieren heisst Computerprogramme herstellen (von griechisch programma für Vorschrift). Ein Computerprogramm ist Teil der Software eines Computers. Als Software bezeichnet

Mehr

Einführung in die C++ Programmierung für Ingenieure

Einführung in die C++ Programmierung für Ingenieure Einführung in die C++ Programmierung für Ingenieure MATTHIAS WALTER / JENS KLUNKER Universität Rostock, Lehrstuhl für Modellierung und Simulation 14. November 2012 c 2012 UNIVERSITÄT ROSTOCK FACULTY OF

Mehr

Übungen zur Vorlesung Einführung in die Informatik Wintersemester 2010/11

Übungen zur Vorlesung Einführung in die Informatik Wintersemester 2010/11 Übungen zur Vorlesung Einführung in die Informatik Wintersemester 2010/11 Fakultät für Informatik Lehrstuhl 1 Dr. Lars Hildebrand Carla Delgado-Battenfeld Fatih Gedikli Tobias Marschall Benjamin Schowe

Mehr

Objektorientierte Programmierung. Kapitel 12: Interfaces

Objektorientierte Programmierung. Kapitel 12: Interfaces 12. Interfaces 1/14 Objektorientierte Programmierung Kapitel 12: Interfaces Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2012/13 http://www.informatik.uni-halle.de/ brass/oop12/

Mehr

1. Der Einstieg in Java

1. Der Einstieg in Java 1. Der Einstieg in Java Was heißt Programmieren? 1. Der Einstieg in Java Lernziele: Am Ende dieses Kapitels sollen Sie wissen, aus welchen Bestandteilen ein Java-Programm besteht, Java-Programme übersetzen

Mehr

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java: Technische Informatik für Ingenieure (TIfI) WS 2005/2006, Vorlesung 9 II. Grundlagen der Programmierung Ekkart Kindler Funktionen und Prozeduren Datenstrukturen 9. Datenstrukturen Daten zusammenfassen

Mehr

Autor: Michael Spahn Version: 1.0 1/10 Vertraulichkeit: öffentlich Status: Final Metaways Infosystems GmbH

Autor: Michael Spahn Version: 1.0 1/10 Vertraulichkeit: öffentlich Status: Final Metaways Infosystems GmbH Java Einleitung - Handout Kurzbeschreibung: Eine kleine Einführung in die Programmierung mit Java. Dokument: Autor: Michael Spahn Version 1.0 Status: Final Datum: 23.10.2012 Vertraulichkeit: öffentlich

Mehr

Einführung zum Arbeiten mit Microsoft Visual C++ 2010 Express Edition

Einführung zum Arbeiten mit Microsoft Visual C++ 2010 Express Edition In den nachfolgenden Schritten finden Sie beschrieben, wie Sie in der Entwicklungsumgebung Microsoft Visual Studio 2010 eine Projektmappe, ein Projekt und einen ersten Quellcode erstellen, diesen kompilieren,

Mehr

5 DATEN. 5.1. Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu

5 DATEN. 5.1. Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu Daten Makro + VBA effektiv 5 DATEN 5.1. Variablen Variablen können beliebige Werte zugewiesen und im Gegensatz zu Konstanten jederzeit im Programm verändert werden. Als Variablen können beliebige Zeichenketten

Mehr

Prinzipien der Softwareentwicklung S. Strahringer

Prinzipien der Softwareentwicklung S. Strahringer Gliederung 1 Einführung Was ist ein Programm? Vorteile (und Nachteile) von PHP Erste PHP-Programme Ausführung von PHP-Programmen 2 Grundbegriffe der Programmierung Anweisungen, Variablen, Datentypen und

Mehr

Einführung in Eclipse und Java

Einführung in Eclipse und Java Universität Bayreuth Lehrstuhl für Angewandte Informatik IV Datenbanken und Informationssysteme Prof. Dr.-Ing. Jablonski Einführung in Eclipse und Java Dipl.Inf. Manuel Götz Lehrstuhl für Angewandte Informatik

Mehr

Pakete dienen dazu, die Software eines Projektes in größere inhaltlich zusammengehörige Bereiche mit eigenem Namen einzuteilen (siehe Java API).

Pakete dienen dazu, die Software eines Projektes in größere inhaltlich zusammengehörige Bereiche mit eigenem Namen einzuteilen (siehe Java API). Paketdeklaration Paketdeklaration package Bezeichner ; Pakete dienen dazu, die Software eines Projektes in größere inhaltlich zusammengehörige Bereiche mit eigenem Namen einzuteilen (siehe Java API). Ein

Mehr

Computeranwendung und Programmierung (CuP)

Computeranwendung und Programmierung (CuP) Computeranwendung und Programmierung (CuP) VO: Peter Auer (Informationstechnologie) UE: Norbert Seifter (Angewandet Mathematik) Organisatorisches (Vorlesung) Vorlesungszeiten Montag 11:15 12:45 Freitag

Mehr

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

Java Kurs für Anfänger Einheit 4 Klassen und Objekte Java Kurs für Anfänger Einheit 4 Klassen und Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 13. Juni 2009 Inhaltsverzeichnis klasse

Mehr

JAVA als erste Programmiersprache Semesterkurs

JAVA als erste Programmiersprache Semesterkurs JAVA als erste Programmiersprache Semesterkurs 0 - Einstieg WS 2012 / 2013 Prof. Dr. Bodo Kraft Prof. Dr. Bodo Kraft FH Aachen University of Applied Sciences Fachbereich Medizintechnik und Technomathematik

Mehr

Einführung in Javadoc

Einführung in Javadoc Einführung in Javadoc Johannes Rinn http://java.sun.com/j2se/javadoc Was ist Javadoc? Javadoc ist ein Werkzeug, dass eine standardisierte Dokumentation für die Programmiersprache Java unterstützt. Vorteil:

Mehr

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Objektorientierte Programmierung für Anfänger am Beispiel PHP Objektorientierte Programmierung für Anfänger am Beispiel PHP Johannes Mittendorfer http://jmittendorfer.hostingsociety.com 19. August 2012 Abstract Dieses Dokument soll die Vorteile der objektorientierten

Mehr

Einführung in die Java- Programmierung

Einführung in die Java- Programmierung Einführung in die Java- Programmierung Dr. Volker Riediger Tassilo Horn riediger horn@uni-koblenz.de WiSe 2012/13 1 Wichtig... Mittags keine Pommes... Praktikum A 230 C 207 (Madeleine + Esma) F 112 F 113

Mehr

Tutorium Rechnerorganisation

Tutorium Rechnerorganisation Woche 2 Tutorien 3 und 4 zur Vorlesung Rechnerorganisation 1 Christian A. Mandery: KIT Universität des Landes Baden-Württemberg und nationales Grossforschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu

Mehr

GameGrid mit BlueJ Seite 1

GameGrid mit BlueJ Seite 1 GameGrid mit BlueJ Seite 1 GameGrid mit BlueJ BlueJ ist eine Java-Entwicklungsumgebung mit einer einfachen Benutzeroberfläche. Dem Benutzer stehen ein einfacher Texteditor mit Syntaxhervorhebung und ein

Mehr

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Konstruktor, Statische Methoden Packages Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Initialisierung von Datenstrukturen

Mehr

GEONET Anleitung für Web-Autoren

GEONET Anleitung für Web-Autoren GEONET Anleitung für Web-Autoren Alfred Wassermann Universität Bayreuth Alfred.Wassermann@uni-bayreuth.de 5. Mai 1999 Inhaltsverzeichnis 1 Technische Voraussetzungen 1 2 JAVA-Programme in HTML-Seiten verwenden

Mehr

Tutorium Informatik 1. Aufgabe 2: Formatierte Ein- und Ausgabe

Tutorium Informatik 1. Aufgabe 2: Formatierte Ein- und Ausgabe Tutorium Informatik 1 Aufgabe 2: Formatierte Ein- und Ausgabe Fachbereich: Elektrotechnik Inhaltsverzeichnis 1 Aufgabe 1 2 Benötigte Funktionen und Schlüsselwörter 2 Robert Halas / FH Regensburg - 2003

Mehr

Programmiervorkurs. Organisation: Steffen Gebert, Alexander Wolff. Tutoren: Jürgen Zöller, Jonathan Stoll. Wintersemester 2012/2013

Programmiervorkurs. Organisation: Steffen Gebert, Alexander Wolff. Tutoren: Jürgen Zöller, Jonathan Stoll. Wintersemester 2012/2013 Programmiervorkurs Wintersemester 2012/2013 Organisation: Steffen Gebert, Alexander Wolff Tutoren: Jürgen Zöller, Jonathan Stoll Kontakt (für Organisatorisches, Fehler auf Folien...): Steffen Gebert steffen.gebert@informatik.uni-wuerzburg.de

Mehr

M. Graefenhan 2000-12-07. Übungen zu C. Blatt 3. Musterlösung

M. Graefenhan 2000-12-07. Übungen zu C. Blatt 3. Musterlösung M. Graefenhan 2000-12-07 Aufgabe Lösungsweg Übungen zu C Blatt 3 Musterlösung Schreiben Sie ein Programm, das die Häufigkeit von Zeichen in einem eingelesenen String feststellt. Benutzen Sie dazu ein zweidimensionales

Mehr

Das Typsystem von Scala. L. Piepmeyer: Funktionale Programmierung - Das Typsystem von Scala

Das Typsystem von Scala. L. Piepmeyer: Funktionale Programmierung - Das Typsystem von Scala Das Typsystem von Scala 1 Eigenschaften Das Typsystem von Scala ist statisch, implizit und sicher 2 Nichts Primitives Alles ist ein Objekt, es gibt keine primitiven Datentypen scala> 42.hashCode() res0:

Mehr

Einführung in die Programmierung

Einführung in die Programmierung Technische Universität München WS 2003/2004 Institut für Informatik Prof. Dr. Christoph Zenger Testklausur Einführung in die Programmierung Probeklausur Java (Lösungsvorschlag) 1 Die Klasse ArrayList In

Mehr

Einführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein (kmk@informatik.uni-kiel.

Einführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein (kmk@informatik.uni-kiel. Java Crashkurs Kim-Manuel Klein (kmk@informatik.uni-kiel.de) May 7, 2015 Quellen und Editoren Internet Tutorial: z.b. http://www.java-tutorial.org Editoren Normaler Texteditor (Gedit, Scite oder ähnliche)

Mehr

Step by Step Webserver unter Windows Server 2003. von Christian Bartl

Step by Step Webserver unter Windows Server 2003. von Christian Bartl Step by Step Webserver unter Windows Server 2003 von Webserver unter Windows Server 2003 Um den WWW-Server-Dienst IIS (Internet Information Service) zu nutzen muss dieser zunächst installiert werden (wird

Mehr

JAVA. Ein kurzer Überblick. Thomas Karp

JAVA. Ein kurzer Überblick. Thomas Karp JAVA Ein kurzer Überblick Thomas Karp WAS IST JAVA? Java ist eine fast rein objektorientierte Sprache nicht JavaScript eine professionelle Sprache eine im Unterricht weit verbreitete Sprache für verschiedene

Mehr

1 Vom Problem zum Programm

1 Vom Problem zum Programm Hintergrundinformationen zur Vorlesung GRUNDLAGEN DER INFORMATIK I Studiengang Elektrotechnik WS 02/03 AG Betriebssysteme FB3 Kirsten Berkenkötter 1 Vom Problem zum Programm Aufgabenstellung analysieren

Mehr

schnell und portofrei erhältlich bei beck-shop.de DIE FACHBUCHHANDLUNG mitp/bhv

schnell und portofrei erhältlich bei beck-shop.de DIE FACHBUCHHANDLUNG mitp/bhv Roboter programmieren mit NXC für Lego Mindstorms NXT 1. Auflage Roboter programmieren mit NXC für Lego Mindstorms NXT schnell und portofrei erhältlich bei beck-shop.de DIE FACHBUCHHANDLUNG mitp/bhv Verlag

Mehr

Java Kurs für Anfänger Einheit 5 Methoden

Java Kurs für Anfänger Einheit 5 Methoden Java Kurs für Anfänger Einheit 5 Methoden Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 22. Juni 2009 Inhaltsverzeichnis Methoden

Mehr

Objektorientierte Programmierung OOP Programmieren mit Java

Objektorientierte Programmierung OOP Programmieren mit Java Aufgaben: 2 JDK/SDK/JRE und Java Entwicklungswerkzeuge Objektorientierte Programmierung OOP Programmieren mit Java 1. Installation von Java 2. Erstes Java Programm Hello World 3. Dreimal Hallo Olten 2

Mehr

4 Aufzählungen und Listen erstellen

4 Aufzählungen und Listen erstellen 4 4 Aufzählungen und Listen erstellen Beim Strukturieren von Dokumenten und Inhalten stellen Listen und Aufzählungen wichtige Werkzeuge dar. Mit ihnen lässt sich so ziemlich alles sortieren, was auf einer

Mehr

Programmieren lernen mit Groovy Allgemeines Programme und ihre Ausführung

Programmieren lernen mit Groovy Allgemeines Programme und ihre Ausführung Programmieren lernen mit Groovy Allgemeines Programme und ihre Ausführung Seite 1 Allgemeines Dozent Dr. Th. Letschert Lernziel Einführung in die Software-Entwicklung und Programmierung Kenntnisse einer

Mehr

IT-Basics 2. DI Gerhard Fließ

IT-Basics 2. DI Gerhard Fließ IT-Basics 2 DI Gerhard Fließ Wer bin ich? DI Gerhard Fließ Telematik Studium an der TU Graz Softwareentwickler XiTrust www.xitrust.com www.tugraz.at Worum geht es? Objektorientierte Programmierung Konzepte

Mehr

Mediator 9 - Lernprogramm

Mediator 9 - Lernprogramm Mediator 9 - Lernprogramm Ein Lernprogramm mit Mediator erstellen Mediator 9 bietet viele Möglichkeiten, CBT-Module (Computer Based Training = Computerunterstütztes Lernen) zu erstellen, z. B. Drag & Drop

Mehr

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 18

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 18 Kapitel 3 Datentypen und Variablen Seite 1 von 18 Datentypen - Einführung - Für jede Variable muss ein Datentyp festgelegt werden. - Hierdurch werden die Wertemenge und die verwendbaren Operatoren festgelegt.

Mehr

Anleitung zur Installation und Verwendung von eclipseuml 2.1.0

Anleitung zur Installation und Verwendung von eclipseuml 2.1.0 Anleitung zur Installation und Verwendung von eclipseuml 2.1.0 In dieser Anleitung wird die Installation und Verwendung von Omodo eclipseuml 2.1.0 beschrieben. eclipseuml ist eine Zusatzsoftware für Eclipse,

Mehr

1. Java Grundbegriffe

1. Java Grundbegriffe 1. Java Grundbegriffe Geschichte von Java Programmieren mit Java Interpretieren vs. Kompilieren Java Byte-Code Jave Virtual Machine Arbeitsmaterialien Allgemeine Informatik 2 SS09 Folie 1.1 Java, eine

Mehr

Übungsblatt 3: Algorithmen in Java & Grammatiken

Übungsblatt 3: Algorithmen in Java & Grammatiken Humboldt-Universität zu Berlin Grundlagen der Programmierung (Vorlesung von Prof. Bothe) Institut für Informatik WS 15/16 Übungsblatt 3: Algorithmen in Java & Grammatiken Abgabe: bis 9:00 Uhr am 30.11.2015

Mehr

Vorlesung Informatik II

Vorlesung Informatik II Vorlesung Informatik II Universität Augsburg Wintersemester 2011/2012 Prof. Dr. Bernhard Bauer Folien von: Prof. Dr. Robert Lorenz Lehrprofessur für Informatik 02. JAVA: Erstes Programm 1 Das erste Java-Programm

Mehr

Klausurteilnehmer. Wichtige Hinweise. Note: Klausur Informatik Programmierung, 17.09.2012 Seite 1 von 8 HS OWL, FB 7, Malte Wattenberg.

Klausurteilnehmer. Wichtige Hinweise. Note: Klausur Informatik Programmierung, 17.09.2012 Seite 1 von 8 HS OWL, FB 7, Malte Wattenberg. Klausur Informatik Programmierung, 17.09.2012 Seite 1 von 8 Klausurteilnehmer Name: Matrikelnummer: Wichtige Hinweise Es sind keinerlei Hilfsmittel zugelassen auch keine Taschenrechner! Die Klausur dauert

Mehr

Abschnitt 12: Strukturierung von Java-Programmen: Packages

Abschnitt 12: Strukturierung von Java-Programmen: Packages Abschnitt 12: Strukturierung von Java-Programmen: Packages 12. Strukturierung von Java-Programmen: Packages 12.1 Strukturierung durch Packages 12.2 Zugriffsspezifikationen 12.3 Zusammenfassung 12 Strukturierung

Mehr

4D Server v12 64-bit Version BETA VERSION

4D Server v12 64-bit Version BETA VERSION 4D Server v12 64-bit Version BETA VERSION 4D Server v12 unterstützt jetzt das Windows 64-bit Betriebssystem. Hauptvorteil der 64-bit Technologie ist die rundum verbesserte Performance der Anwendungen und

Mehr

Vorkurs C++ Programmierung

Vorkurs C++ Programmierung Vorkurs C++ Programmierung Klassen Letzte Stunde Speicherverwaltung automatische Speicherverwaltung auf dem Stack dynamische Speicherverwaltung auf dem Heap new/new[] und delete/delete[] Speicherklassen:

Mehr

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster Es gibt in Excel unter anderem die so genannten Suchfunktionen / Matrixfunktionen Damit können Sie Werte innerhalb eines bestimmten Bereichs suchen. Als Beispiel möchte ich die Funktion Sverweis zeigen.

Mehr

Grundlagen. Kapitel 1

Grundlagen. Kapitel 1 Grundlagen Dieses Kapitel umfasst grundlegende Fragen und Aufgaben zur Erstellung von C++-Programmen. Hierzu zählen auch das Inkludieren von Header-Dateien Eine Header-Datei beinhaltet Informationen, die

Mehr

CSS-Grundlagen. Etwas über Browser. Kapitel. Die Vorbereitung

CSS-Grundlagen. Etwas über Browser. Kapitel. Die Vorbereitung Kapitel 1 Die Vorbereitung Vorgängerversionen. Bald darauf folgte dann schon die Version 4, die mit einer kleinen Bearbeitung bis vor Kurzem 15 Jahre unverändert gültig war. All das, was du die letzten

Mehr

Grundlagen der Programmierung UE

Grundlagen der Programmierung UE Grundlagen der Programmierung UE Research and teaching network GdP UE H. Prähofer, R. Wolfinger 1 Vortragende Dr. Herbert Praehofer (G1 u. G2) Mag. Reinhard Wolfinger (G3 u. G4) Institute for System Software

Mehr

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen Binäre Bäume 1. Allgemeines Binäre Bäume werden grundsätzlich verwendet, um Zahlen der Größe nach, oder Wörter dem Alphabet nach zu sortieren. Dem einfacheren Verständnis zu Liebe werde ich mich hier besonders

Mehr

5. Tutorium zu Programmieren

5. Tutorium zu Programmieren 5. Tutorium zu Programmieren Dennis Ewert Gruppe 6 Universität Karlsruhe Institut für Programmstrukturen und Datenorganisation (IPD) Lehrstuhl Programmierparadigmen WS 2008/2009 c 2008 by IPD Snelting

Mehr

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck Javadoc Programmiermethodik Eva Zangerle Universität Innsbruck Überblick Einführung Java Ein erster Überblick Objektorientierung Vererbung und Polymorphismus Ausnahmebehandlung Pakete und Javadoc Spezielle

Mehr

Die Programmiersprache C99: Zusammenfassung

Die Programmiersprache C99: Zusammenfassung Die Programmiersprache C99: Zusammenfassung Jörn Loviscach Versionsstand: 7. Dezember 2010, 19:30 Die nummerierten Felder sind absichtlich leer, zum Ausfüllen in der Vorlesung. Videos dazu: http://www.youtube.com/joernloviscach

Mehr

Institut für Programmierung und Reaktive Systeme 26. April 2013. Programmieren II. 10. Übungsblatt

Institut für Programmierung und Reaktive Systeme 26. April 2013. Programmieren II. 10. Übungsblatt Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 26. April 2013 Programmieren II 10. Übungsblatt Hinweis: Insgesamt werden in diesem Semester fünf

Mehr

Interaktive Medien Richtlinien für das Codieren Version vom 18. Juni 2014

Interaktive Medien Richtlinien für das Codieren Version vom 18. Juni 2014 Interaktive Medien Richtlinien für das Codieren Version vom 18. Juni 2014 Martin Vollenweider Dateinamen im Internet Da wir im Internet in gemischten Hard- und Softwareumgebungen (z.b. Windows, Unix, Macintosh,

Mehr

Version 0.3. Installation von MinGW und Eclipse CDT

Version 0.3. Installation von MinGW und Eclipse CDT Version 0.3 Installation von MinGW und Eclipse CDT 1. Stellen Sie fest, ob Sie Windows in der 32 Bit Version oder in der 64 Bit Version installiert haben. 2. Prüfen Sie, welche Java Runtime vorhanden ist.

Mehr

Handbuch B4000+ Preset Manager

Handbuch B4000+ Preset Manager Handbuch B4000+ Preset Manager B4000+ authentic organ modeller Version 0.6 FERROFISH advanced audio applications Einleitung Mit der Software B4000+ Preset Manager können Sie Ihre in der B4000+ erstellten

Mehr

Suche schlecht beschriftete Bilder mit Eigenen Abfragen

Suche schlecht beschriftete Bilder mit Eigenen Abfragen Suche schlecht beschriftete Bilder mit Eigenen Abfragen Ist die Bilderdatenbank über einen längeren Zeitraum in Benutzung, so steigt die Wahrscheinlichkeit für schlecht beschriftete Bilder 1. Insbesondere

Mehr

Robot Karol für Delphi

Robot Karol für Delphi Robot Karol für Delphi Reinhard Nitzsche, OSZ Handel I Version 0.1 vom 24. Januar 2003 Zusammenfassung Nach der Einführung in die (variablenfreie) Programmierung mit Robot Karol von Freiberger und Krško

Mehr

Artikel Schnittstelle über CSV

Artikel Schnittstelle über CSV Artikel Schnittstelle über CSV Sie können Artikeldaten aus Ihrem EDV System in das NCFOX importieren, dies geschieht durch eine CSV Schnittstelle. Dies hat mehrere Vorteile: Zeitersparnis, die Karteikarte

Mehr

Upgrade auf die Standalone Editionen von Acronis Backup & Recovery 10. Technische Informationen (White Paper)

Upgrade auf die Standalone Editionen von Acronis Backup & Recovery 10. Technische Informationen (White Paper) Upgrade auf die Standalone Editionen von Acronis Backup & Recovery 10 Technische Informationen (White Paper) Inhaltsverzeichnis 1. Über dieses Dokument... 3 2. Überblick... 3 3. Upgrade Verfahren... 4

Mehr

Installation und Inbetriebnahme von Microsoft Visual C++ 2010 Express

Installation und Inbetriebnahme von Microsoft Visual C++ 2010 Express Howto Installation und Inbetriebnahme von Microsoft Visual C++ 2010 Express Peter Bitterlich Markus Langer 12. Oktober 2012 Zusammenfassung Dieses Dokument erklärt Schritt für Schritt die Installation

Mehr

4. AUSSAGENLOGIK: SYNTAX. Der Unterschied zwischen Objektsprache und Metasprache lässt sich folgendermaßen charakterisieren:

4. AUSSAGENLOGIK: SYNTAX. Der Unterschied zwischen Objektsprache und Metasprache lässt sich folgendermaßen charakterisieren: 4. AUSSAGENLOGIK: SYNTAX 4.1 Objektsprache und Metasprache 4.2 Gebrauch und Erwähnung 4.3 Metavariablen: Verallgemeinerndes Sprechen über Ausdrücke von AL 4.4 Die Sprache der Aussagenlogik 4.5 Terminologie

Mehr

Grundlagen der Programmierung UE

Grundlagen der Programmierung UE Grundlagen der Programmierung UE Research and teaching network GdP UE H. Prähofer, M Löberbauer 1 Vortragende Dipl.-Ing. Markus Löberbauer (G1) Dr. Herbert Praehofer (G2 u. G3) Institute for System Software

Mehr

Objektorientiertes Programmieren mit Suse Linux

Objektorientiertes Programmieren mit Suse Linux Objektorientiertes Programmieren mit Suse Linux Zum Programmieren werden 2 Komponenten benötigt: 1. einen Editor zur Eingabe des Quellcodes 2. einen Compiler, der den Quellcode in die Maschinensprache

Mehr

14.4.2016. Technische Hochschule Georg Agricola WORKSHOP TEIL 3. IKT (Informations- und Kommunikationstechnik) an einer MorseApp erklärt

14.4.2016. Technische Hochschule Georg Agricola WORKSHOP TEIL 3. IKT (Informations- und Kommunikationstechnik) an einer MorseApp erklärt 14.4.2016 Technische Hochschule Georg Agricola WORKSHOP TEIL 3 IKT (Informations- und Kommunikationstechnik) an einer MorseApp erklärt Inhaltsverzeichnis 1. Kurzfassung zur Projekterstellung... 2 2. Morse-Tabelle...

Mehr

Die Formatierungsregeln (die so genannte Wiki-Syntax) für Texte in DokuWiki sind zu großen Teilen die selben, wie in anderen Wiki-Systemen.

Die Formatierungsregeln (die so genannte Wiki-Syntax) für Texte in DokuWiki sind zu großen Teilen die selben, wie in anderen Wiki-Systemen. DokuWiki Kurzanleitung DokuWiki ein sehr einfach zu installierendes und anzuwendendes Wiki und bietet einige Funktionen, welche das Erstellen von Hypertexten, Dokumentationen und Präsentation von Projekten

Mehr

Zahlensysteme: Oktal- und Hexadezimalsystem

Zahlensysteme: Oktal- und Hexadezimalsystem 20 Brückenkurs Die gebräuchlichste Bitfolge umfasst 8 Bits, sie deckt also 2 8 =256 Möglichkeiten ab, und wird ein Byte genannt. Zwei Bytes, also 16 Bits, bilden ein Wort, und 4 Bytes, also 32 Bits, formen

Mehr

Informationen zur Verwendung von Visual Studio und cmake

Informationen zur Verwendung von Visual Studio und cmake Inhaltsverzeichnis Informationen zur Verwendung von Visual Studio und cmake... 2 Erste Schritte mit Visual Studio... 2 Einstellungen für Visual Studio 2013... 2 Nutzung von cmake... 6 Installation von

Mehr

Java 7. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Dezember 2011 JAV7

Java 7. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Dezember 2011 JAV7 Java 7 Elmar Fuchs Grundlagen Programmierung 1. Ausgabe, Dezember 2011 JAV7 5 Java 7 - Grundlagen Programmierung 5 Kontrollstrukturen In diesem Kapitel erfahren Sie wie Sie die Ausführung von von Bedingungen

Mehr

Starten Sie Eclipse: Hier tragen sie Ihr Arbeitsverzeichnis ein. Zu Hause z.b. c:\workspace.

Starten Sie Eclipse: Hier tragen sie Ihr Arbeitsverzeichnis ein. Zu Hause z.b. c:\workspace. Starten Sie Eclipse: Abgesehen vom Kommandozeilenfenster, auf welches wir später eingehen, öffnet sich ein Dialog (in der FH vermutlich nicht, überspringen Sie in diesem Fall): Hier tragen sie Ihr Arbeitsverzeichnis

Mehr

Prinzipien Objektorientierter Programmierung

Prinzipien Objektorientierter Programmierung Prinzipien Objektorientierter Programmierung Valerian Wintner Inhaltsverzeichnis 1 Vorwort 1 2 Kapselung 1 3 Polymorphie 2 3.1 Dynamische Polymorphie...................... 2 3.2 Statische Polymorphie........................

Mehr

Computeria Solothurn

Computeria Solothurn Computeria Solothurn Seniorinnen und Senioren entdecken den Computer und das Internet Sich mit «TeamViewer» von einem Supporter helfen lassen Diese Anleitung und die Illustrationen wurden unter Mac OS

Mehr

2 Einfache Rechnungen

2 Einfache Rechnungen 2 Einfache Rechnungen 2.1 Zahlen Computer, auch bekannt als Rechner, sind sinnvoller eingesetzt, wenn sie nicht nur feste Texte ausgeben, sondern eben auch rechnen. Um das Rechnen mit Zahlen zu verstehen,

Mehr

Berner Fachhochschule Hochschule für Technik und Informatik HTI. Kapitel 1. Einstieg in Java. Dr. Elham Firouzi 06.09.10 1

Berner Fachhochschule Hochschule für Technik und Informatik HTI. Kapitel 1. Einstieg in Java. Dr. Elham Firouzi 06.09.10 1 Kapitel 1 Einstieg in Java Dr. Elham Firouzi 06.09.10 1 1 : Einstieg in Java Einleitung Ein erstes Beispiel Berner Fachhochschule Entwicklung von Java-Programmen Applikationen Applets Vor und Nachteile

Mehr

CADEMIA: Einrichtung Ihres Computers unter Linux mit Oracle-Java

CADEMIA: Einrichtung Ihres Computers unter Linux mit Oracle-Java CADEMIA: Einrichtung Ihres Computers unter Linux mit Oracle-Java Stand: 21.02.2015 Java-Plattform: Auf Ihrem Computer muss die Java-Plattform, Standard-Edition der Version 7 (Java SE 7) oder höher installiert

Mehr