15
Programmierkurs Birgit Engels, Anna Schulze ZAIK Universit ¨ at zu K ¨ oln WS 07/08 1 / 69 Kapitel 2 Grundlagen der Java Programmierung Was macht ein Java Programm aus? Sprachbestandteile Ein erstes Programm Hauptbestandteile eines Java-Programms Vom Programmtext zur Ausf ¨ uhrung Lesbarkeit des Programmtextes/Programmierstil Einfache Ein- und Ausgabe (Text) Import-Anweisung Ein Programm mit Ein- und Ausgabe 2 2.1 Was macht ein Java Programm aus? Ein Java-Programm ist zun ¨ achst eine Textdatei, die mit einem Texteditor erstellt und bearbeitet wird und die Endung .java besitzt. Da Java eine “Sprache” darstellt, unterscheiden wir: Syntax: Formale Regeln bzw. “Grammatik”, nach denen zwischen zul ¨ assigem und ung ¨ ultigem Programmcode unterschieden wird. Semantik: Inhalt des Programms, d.h. Bedeutung des Programmcodes. 3 / 69 Fehlerhafte Programme Syntaxfehler: Der Compiler kann den Programmcode nicht korrekt ¨ ubersetzen. Meist gibt der Compiler Hinweise auf den formalen Fehler. Deshalb sind diese Fehler meist “einfach” zu finden und zu beseitigen. Semantikfehler: Der Compiler ¨ ubersetzt das Programm korrekt. Das ¨ ubersetzte Programm arbeitet aber nicht so wie beabsichtigt. Semantikfehler sind i.a. schwieriger zu beseitigen, insbesondere bei großen Programmen. Fehlersuche durch genaue Analyse und Tests des Programms. 4

Grundlagen der Java Programmierung Programmierkurs€¦ · Programmierkurs Birgit Engels, Anna Schulze ZAIK Universit at zu K oln WS 07/08 1/69 Kapitel 2 Grundlagen der Java Programmierung

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

  • Programmierkurs

    Birgit Engels, Anna Schulze

    ZAIKUniversität zu Köln

    WS 07/08

    1 / 69

    Kapitel 2

    Grundlagen der Java ProgrammierungWas macht ein Java Programm aus?SprachbestandteileEin erstes ProgrammHauptbestandteile eines Java-ProgrammsVom Programmtext zur AusführungLesbarkeit des Programmtextes/ProgrammierstilEinfache Ein- und Ausgabe (Text)Import-AnweisungEin Programm mit Ein- und Ausgabe

    2 / 69

    2.1 Was macht ein Java Programm aus?

    Ein Java-Programm ist zunächst eine Textdatei, die mit einemTexteditor erstellt und bearbeitet wird und die Endung .javabesitzt. Da Java eine “Sprache” darstellt, unterscheiden wir:

    Syntax: Formale Regeln bzw. “Grammatik”, nach denenzwischen zulässigem und ungültigem Programmcodeunterschieden wird.

    Semantik: Inhalt des Programms, d.h. Bedeutung desProgrammcodes.

    3 / 69

    Fehlerhafte Programme

    Syntaxfehler: Der Compiler kann den Programmcode nicht korrektübersetzen. Meist gibt der Compiler Hinweise auf denformalen Fehler. Deshalb sind diese Fehler meist“einfach” zu finden und zu beseitigen.

    Semantikfehler: Der Compiler übersetzt das Programm korrekt.Das übersetzte Programm arbeitet aber nicht so wiebeabsichtigt. Semantikfehler sind i.a. schwieriger zubeseitigen, insbesondere bei großen Programmen.Fehlersuche durch genaue Analyse und Tests desProgramms.

    4 / 69

  • 2.2 Sprachbestandteile

    Wie jede höhere Programmiersprache besteht Java aus:

    Schlüsselwörtern (“Wortschatz”)

    reservierten Zeichen (“Satzzeichen”)

    Namen vordefinierter Datenstrukturen, Objekte

    Namen selbst definierter Datenstrukturen, Objekte undFunktionen/Methoden

    Kommentaren

    5 / 69

    Reservierte Schlüsselwörter

    abstract double interface switchassert else long synchronizedboolean extends native thisbreak final new throwbyte finally package throwscase float private transientcatch for protected trychar goto public voidclass if return volatileconst implements short whilecontinue import staticdefault instanceof strictfpdo int super

    6 / 69

    Reservierte Zeichen

    // bzw. /* */: Einleitung für Kommentare.

    { } : Gliederung des Programmtextes.

    ;: Abschluss einer Anweisung.

    + - . . . : Arithmetische Operatoren.

    >= : Schiebeoperatoren.

    und weitere . . .

    7 / 69

    Regeln für selbstdefinierte Namen

    Namen (auch “Bezeichner” genannt) bestehen aus:

    Buchstaben a–z, A–Z

    Ziffern (Zahlen) 0–9

    Unterstrichen

    Sie müssen mit einem Buchstaben oder beginnen.Namen, die mit beginnen, sollten vermieden werden.

    Sie dürfen nicht mit einem Schlüsselwort übereinstimmen.

    Die Länge ist i.a. nicht beschränkt.Zu lange oder zu kurze Namen sollten aber vermieden werden.

    Namen dürfen keine Leerzeichen enthalten.

    Zwischen Gross- und Kleinschreibung wird unterschieden!

    8 / 69

  • Namensgebung

    Beispiele:

    anzahl, knoten1, vertex, . . .:Bedeutung ersichtlich, nicht zu kurz nicht zu lang,Konvention: Kleinschreibung.

    anzKnoten, anz knoten, noVerts, . . .:Zusammengesetzt, aber mit Gross-/Kleinschreibung bzw.gut lesbar, spezifiziert “Anzahl” wegen Eindeutigkeit.anzVerts, noVertices, . . . nicht so gut, da

    Sprachgemisch bzw. länger als nötig.

    i, j, k, p x, p y :Sehr kurze Bezeichnungen für Laufvariablen, sehr kurzzeitig(“lokal”) benötigte Variablen. Mathematische Schreibweise fürmathematische Objekte (Koordinaten des Punktes p).

    9 / 69

    Bedeutung der Namensgebung

    Macht die Struktur des Problems bzw. Algorithmus klarer.

    Macht Programme gut/intuitiv lesbar/erweiterbar/wartbar.

    Beides hilft semantische Fehler zu vermeiden/verbessern.

    10 / 69

    2.3 Ein erstes Programm

    Ziele

    groben Aufbau eines Programms kennenlernen

    groben Aufbau einer Methode kennenlernen

    die Methode public static void main(String[] args)

    Abschluss eines jeden Befehls mit ;

    11 / 69

    Der Programmtext “Hello World!” : HelloWorld.java

    1. /* Programmierkurs WS0708

    2. * ZAIK, AFS : RS, BE, AS

    3. */

    4. public class HelloWorld

    5. {

    6. public static void main(String[] args)

    7. {

    8. // Ausgabe

    9. System.out.println(‘‘Hello World!’’);

    10. }

    11. }

    Hello World!

    12 / 69

  • Der Programmtext “Hello World!” : HelloWorld.java

    1. /* Programmierkurs WS0708

    2. * ZAIK, AFS : RS, BE, AS

    3. */

    4. public class HelloWorld

    5. {

    6. public static void main(String[] args)

    7. {

    8. // Ausgabe

    9. System.out.println(‘‘Hello World!’’);

    10. }

    11. }

    Hello World!

    Kommentare:Mehrzeilig (lang/global),Einzeilig (kurz/lokal).

    13 / 69

    Der Programmtext “Hello World!” : HelloWorld.java

    1. /* Programmierkurs WS0708

    2. * ZAIK, AFS : RS, BE, AS

    3. */

    4. public class HelloWorld

    5. {

    6. public static void main(String[] args)

    7. {

    8. // Ausgabe

    9. System.out.println(‘‘Hello World!’’);

    10. }

    11. }

    Hello World!

    Einleitung der Klassende-finition + öffnende undschließende Klammer

    .

    14 / 69

    Der Programmtext “Hello World!” : HelloWorld.java

    1. /* Programmierkurs WS0708

    2. * ZAIK, AFS : RS, BE, AS

    3. */

    4. public class HelloWorld

    5. {

    6. public static void main(String[] args)

    7. {

    8. // Ausgabe

    9. System.out.println(‘‘Hello World!’’);

    10. }

    11. }

    Hello World!

    Methode main gibt es injedem Java Programm ge-nau einmal (wieder mitöffnender und schließenderKlammer).

    15 / 69

    Der Programmtext “Hello World!” : HelloWorld.java

    1. /* Programmierkurs WS0708

    2. * ZAIK, AFS : RS, BE, AS

    3. */

    4. public class HelloWorld

    5. {

    6. public static void main(String[] args)

    7. {

    8. // Ausgabe

    9. System.out.println(‘‘Hello World!’’);

    10. }

    11. }

    Hello World!

    Einziger “richtiger” Be-fehl: Veranlasst Ausgabe.

    Befehle enden mitSemikolon ;.

    16 / 69

  • Der Programmtext “Hello World!” : HelloWorld.java

    1. /* Programmierkurs WS0708

    2. * ZAIK, AFS : RS, BE, AS

    3. */

    4. public class HelloWorld

    5. {

    6. public static void main(String[] args)

    7. {

    8. // Ausgabe

    9. System.out.println(‘‘Hello World!’’);

    10. }

    11. }

    Hello World!

    Output auf dem Bildschirm

    17 / 69

    Zeilennummern und Output

    ZeilennummernI dienen lediglich der Orientierung auf den FolienI werden im Editor nicht mit eingegeben

    OutputI dient lediglich der Erläuterung des Programms auf den FolienI wird im Editor nicht mit eingegeben

    18 / 69

    Klassendefinition

    public class HelloWorld { ...}

    Objektorientierung: Ein “Objekt” ist für uns zunächst konkreteine Klasse. (Feinheiten später!)

    Daher muss jedes Programm von einer Klasse, hier classHelloWorld “umgeben” sein, d.h. der Programmtext stehtzwischen den geschweiften Klammern der Klassendefinition.

    Schlüsselwort public (öffentlich) bedeutet, dass diese Klassevon beliebigen anderen benutzt werden darf.

    Eine (öffentliche) Klasse sollte in einer gleichnamigen Datei,hier HelloWorld.java gespeichert sein.

    Ein Klassenname sollte mit einem Grossbuchstaben beginnen.

    19 / 69

    Hauptmethode

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

    Eine Klasse kann viele Methoden umfassen, deren Aufbauprinzipiell immer gleich ist, jedoch nur eine Hauptmethode mitdem Methodennamen main.

    Hinter dem Methodennamen folgt in Klammern eineArgumentliste.

    Hinter der Argumentliste folgt ein Paar geschweifteKlammern, die Anweisungen umschließen.

    Besonderheit von main : Soll die JVM ein Programm in Form einerKlasse X ausführen, so wird genau die Hauptmethode der Klassegesucht und abgearbeitet.

    20 / 69

  • Schlüsselworte

    Die genaue Bedeutung und Verwendung einiger Schlüsselwortewird später behandelt, daher werden sie hier nur kurz erwähnt.

    Schlüsselwort public (öffentlich) bedeutet, dass dieseMethode von beliebigen anderen Klassen benutzt werden darf.

    Schlüsselwort void (leer) bedeutet, dass die Methode keinenRückgabewert hat.

    Schlüsselwort static (statisch) bedeutet, dass dies eineKlassenmethode ist.

    21 / 69

    Befehl/Anweisung

    System.out.println(‘‘Hello World!’’);

    Ist hier der Aufruf einer Methode println mit dem Argument“Hello World!”.

    Veranlasst die Ausgabe von Hello World! in einer Zeilegefolgt von einem Zeilenumbruch auf die Konsole(Standardausgabe).

    println besteht wieder aus einer Menge von Anweisungen,die wir nicht sehen, da es eine vordefinierte Methode ist.

    22 / 69

    Zugriffsoperator

    Ein weiteres (besonderes) reserviertes Zeichen in Java ist derPunkt . als sogenannter Zugriffsoperator. Beispiel

    System.out.println(‘‘Hello World!’’);:

    Die Methode println muss wie jede Methode innerhalb einerKlasse definiert sein.

    Diese Klasse ist die Klasse out (verantwortlich für Ausgabe):out[.=etwas aus der Klasse]println().

    Die Klasse out ist innerhalb der Klasse System(Systemaufgaben) definiert:System.(= besitzt die Methode/Klasse)out.(=

    besitzt die Methode/Klasse)println().

    System.out.println() ist voll qualifizierter Name der Methodeprintln(). Um Methoden der eigene Klasse aufzurufen, reicht dereinfache Methodenname.

    23 / 69

    2.5 Vom Programmtext zur Ausführung

    Wir nutzen zur Eingabe des Programmtextes einen Editor(Nutzung klar :) und zum Kompilieren/Ausführung des Programmseine Kommandozeileneingabe:

    1. Bearbeiten und Speichern des Programms unter.java.

    2. Übersetzen (Kompilieren) des Programms (einfachsteMöglichkeit) mit javac .java.Es entsteht eine (unleserliche) Datei .class.

    3. Ausführen des Programms mit java .

    24 / 69

  • Arbeiten auf der Konsole unter Linux

    Kompilieren/Ausführung desProgramms durchKommandozeileneingabe:

    Öffnen einer “Konsole”.entspricht: Eingabeaufforderung, Terminal, ...spezieller: Shell, noch spezieller Bash, ...

    Eingabe eines Befehls (ggf. mit Optionen, Parametern).

    Abschluss mit Return.

    25 / 69

    Nützliche Befehle I

    Kommando Effekt

    ls Listet alle Dateien in diesem Verzeichnis auf.

    cd path Wechselt in den mit path angegebenen Ordner.Der Pfad wird immer vom aktuellenVerzeichnis aus interpretiert.

    cd \path Wechselt in den mit path angegebenen Ordner.Der Pfad wird jetzt von der Verzeichniswurzelausgehend interpretiert.

    cd .. Wechselt in den Elternordner des aktuellen Ordners.cd $HOME Wechselt in das Home(-Verzeichnis) des Benutzers.

    26 / 69

    Nützliche Befehle II

    Kommando Effekt

    mkdir name Legt im aktuellen Verzeichnis einenneuen Ordner namens name an.

    cp file path Kopiert die Datei filean die Stelle path.

    cp file file1 Legt eine Kopie der Datei fileunter dem Namen file1 an.

    cp -r/R path path1 Kopiert das ganze Verzeichnispath samt Inhalt nach path1.

    cp -r/R path . Kopiert das ganze Verzeichnispath nach “hier”, d.h. in dasakltuelle Verzeichnis.

    27 / 69

    Nützliche Befehle III

    Kommando Effekt

    rm file Die Datei file wird gelöscht.rm -r/R name Das Verzeichnis name wird mit allen

    Unterverzeichnissen und Dateien gelöscht.

    rmdir name Das leere (!) Verzeichnis name wird gelöscht.

    mv file file1 Benennt die Datei file in file1 um.(Die Endung wird nicht automatisch beibehalten!)

    mv file path Verschiebt die Datei die Datei filean die Stelle path.

    mv name name1 Benennt das Verzeichnis name in name1 um.

    28 / 69

  • Hilfsoptionen

    Hilfsoptionen zu einzelnen Befehlen (nicht bei allen verfügbar):

    Kommando Effekt

    man command Zeigt “Manual Page” (Handbuch)des Befehls command an.

    command -h/-help/- -help Zeigt Optionen/Benutzungdes Befehls command an.

    29 / 69

    Tipps

    Durch Drücken der Tab-Taste werden unvollständigeingegebene Befahle ergänzt, falls eindeutig möglich. (Sonstwerden mehrere Möglichkeiten oder gar nichts angezeigt.)

    Pfeiltasten (↑, ↓) können vorherige/ spätere Kommandoswieder ausgewählt werden.

    Soll das gleiche Kommando für viele Dateien mit ähnlicheNamen ausgeführt werden, können sogenannte wild cardsPlatzhalter, z.B. “*” benutzt werden, um die unterschiedlichenNamensteile zu ersetzen. Der Befehl, wird dann für alleDateien ausgeführt, die in das Namensmuster passen.Beispiel:

    Kommando Effekt

    cp java/*.java . Kopiert alle Dateien mit Endung“.java” nach hier.

    30 / 69

    Java-Kommandos

    Kommando Effekt

    javac file.java Kompiliert file.java.Erzeugt Datei file.class.

    java file Führt die kompilierte Dateifile.class aus.

    31 / 69

    Das SSH-Kommando

    Das Secure Shell Kommando (ssh) dient dem Einloggen aufRechnern über das Netzwerk.

    Wird zur Zeit im Pool selbst verwendet, um sich vom eigenenArbeitsplatzrechner auf einen Server einzuloggen.

    Kann auch von eigenem Rechner mit entsprechendemNetzzugang genutzt werden, um auf den Server zu gelangen.

    Kommando:

    Kommando Effekt

    ssh username@servername Erzeugt (nach Passworteingabefür username) eine Konsoleauf dem Server servername.

    32 / 69

  • SSH von zu Hause/Server

    Unter Linux ist meist ssh standardmässig installiert, d.h. aufder heimischen Konsole kann man sich mit ssh- Kommandoauf den Uni-Server einloggen.

    Unter Windows installiert man meist einen SSH-Client extra(siehe Website).

    Servernamen:

    sunfire.rrz.uni-koeln.de

    dialog.rrz.uni-koeln.de

    33 / 69

    Das SCP-Kommando

    Das SCP Kommando (scp) ist das Netzwerk-Pendant zumeinfachen Kopier-Kommando (cp).

    Kann auf einer heimischen Linuxkonsole (standard mässig)direkt zum kopieren von Dateien in sein Uni-Home auf demUni-Server verwendet werden.

    Wird unter Windows meistens von graphischen Oberflchenbenutzt/unterstützt (siehe SSH-Client, Website).

    34 / 69

    Verwendung von scp

    Kommando Effekt

    scp username@servername : path/file . Lädt die Datei filevom Server aufden eigenen Rechner.

    scp file username@servername : path . Lädt die Datei filevom eigenen Rechnerauf den Server.

    35 / 69

    Hinweis zu scp

    Liegt die Datei file direkt im Uni-Home entfällt path. Der Pfadpath wird ansonsten relativ zum Home-Verzeichnis angegeben

    Beispiel: xxx.java liegt im Homeverzeichnis, UnterverzeichnisJavaKram. Folgender Befehl kopiert die Datei auf den eigenenRechner:

    scp username@servername : JavaKram/xxx .java .

    Bei Benutzung von ssh im PC-Pool müssen Dateien nicht hin undher kopiert werden!!! Auf dem Server stehen die gleichen Dateien(Home-Verzeichnis) zur Verfügung wie am Arbeitsplatzrechner!!!

    36 / 69

  • 2.5 Vom Programmtext zur Ausführung

    Wir nutzen zur Eingabe des Programmtextes einen Editor(Nutzung klar :) und zum Kompilieren/Ausführung des Programmseine Kommandozeileneingabe:

    1. Bearbeiten und Speichern des Programms unter.java.

    2. Übersetzen (Kompilieren) des Programms (einfachsteMöglichkeit) mit javac .java.Es entsteht eine (unleserliche) Datei .class.

    3. Ausführen des Programms mit java .

    37 / 69

    Erste Hindernisse

    Falls bei Schritt 2 Fehler auftreten:

    Command not found oder Ähnliches:Kein Java-Compiler installiert oder javac wird nicht gefunden(liegt nicht im vordefinierten Pfad).

    Abhilfe: Mit which javac (Linux) bzw. where javac(Windows) den Pfad suchen und mit Pfad aufrufen bzw. Pfadsetzen.Falls kein Java-Compiler gefunden: Installation...

    cannot read: .java oder Ähnliches:Die zu kompilierende Datei liegt nicht im aktuellenVerzeichnis. Abhilfe: Mit cd in das entsprechendeVerzeichnis wechseln oder mit javac -classpath .java kompilieren.

    Letztere Möglichkeit wird auch beim Verwenden von Paketen(später) angewendet.

    38 / 69

    Kompilier-Fehler

    Am häufigsten treten jedoch vom Compiler gemeldete Syntaxfehlerauf.

    Diese sind meist mit Zeilenangabe versehene Kurzbeschreibung zurFehlersuche im Programmtext.

    Häufige Fehler sind:

    Tippfehler

    Vergessene “;” “{” “}”

    Fehlende/Mehrfache Deklaration (später)

    Falscher Methodenaufruf (später)

    39 / 69

    Laufzeit-Fehler

    Auch bei Schritt 3 treten Fehler auf:

    Class definition not found oder Ähnliches:Pfadprobleme oder Ähnliches (s.o.)

    Fehler beim Linken/Einbinden von mehreren selbsdefiniertenKlassen (mehrere Dateien), Pfadprobleme, Bibliotheken(Später).

    Semantikfehler: Unerwartetes Ergebnis, Programm “stürztab”.

    Hinweise zur Benutzung des Compilers (Optionen, Linken, etc.)mit:javac --help

    40 / 69

  • 2.6 Lesbarkeit des Programmcodes

    Kommentare

    erläutern Programm

    verbessern Lesbarkeit

    werden vom Compiler ignoriert

    einzeilige Kommentare werden mit // eingeleitet

    mehrzeilige Kommentare beginnen mit /* und enden mit */

    Wichtig:In eigenen Programmen oft und ausführlichkommentieren!

    41 / 69

    Kürzere Formulierung möglich

    Java-Programme werden durch die Zeilenstruktur undExtra-Leerzeichen nicht beeinflußt.

    Ausnahme: Mit // eingeleitete Kommentare enden mit demZeilenumbruch!

    Daher: Obige Funktion könnte man kürzer formulieren:

    public class HelloWorld { public static void main(String[]

    args) { System.out.println(‘‘Hello World!’’); }}

    Nicht empfehlenswert !

    42 / 69

    Lesbarkeit

    Durch Einfügen von Leerzeilen und durch Einrückung kann dieLesbarkeit stark gesteigert werden.

    Deshalb sollte man Folgendes beachten:

    Durch Leerzeilen sinnvoll gliedern

    Nur ein Befehl je Zeile

    Jedes { und } in eine eigene Zeile

    Nach jedem { um 2 Zeichen einrücken

    Geht ein Befehl über mehrere Zeilen, die folgenden Zeileneinrücken

    43 / 69

    Groß- und Kleinschreibung

    Java ist case-sensitive, unterscheidet also zwischen Groß-und Kleinbuchstaben!

    X ist nicht dasselbe wie x, Main() ist nicht dasselbe wie main()

    44 / 69

  • 2.7 Einfache Ein- und Ausgabe

    Schon bekannt: Ein Ausgabe-Befehl:

    System.out.println(‘‘Ausgabe und Zeilenumbruch‘‘)

    I System: Automatisch in jedem Java-Programm verfügbareKlasse (Standardbibliothek).

    I out: Instanz der Klasse PrintStream, automatisch in Systementhalten, Verknüpft mit Standardausgabe (Bildschirm).

    Abgewandelte Ausgabe-Befehle:

    System.out.println(): Zeilenumbruch

    System.out.print(‘‘Ausgabe‘‘): Ausgabe

    System.out.print(’’\ n‘‘): Zeilenumbruch

    45 / 69

    Ausgabe - Tipps

    System.out.println(’’Die Zeile ist zuuuuuu‘‘

    +’’lang.‘‘):

    Die Zeile ist zuuuuuu lang.

    int var=1; System.out.println(’’var=‘‘ +var+ ’’

    Okay.‘‘):

    var=1 Okay.

    Ausgaben sind einfache Mittel zur Suche nach logischenFehlern:

    I Ausgabe einer Variablen: Hat sie den richtigen Wert ?I Ausgabe in bestimmter Zeile: Wird das Programm bis hierhin

    abgearbeitet ?

    46 / 69

    Eingabe

    Um eine Eingabe von der Kommandozeile einzulesen und inunserem Programm zu verarbeiten, benötigen wir weiterevordefinierte Java-Klassen:

    BufferedReader, InpuStreamReader:2 Klassen, um Zeichenketten (gepuffert) einzulesen.

    System.in:Das Objekt in aus der Klasse System.

    Ein vorbereitendes Programmstück:

    BufferedReader in = new BufferedReader (

    new InputStreamReader(System.in) );

    Eigentlicher Einlese-Befehl:String name = in.readLine();

    47 / 69

    2.8 Import-Anweisung

    Die beschriebene Eingabe-Klassen, gehören nicht zu denautomatisch ansprechbaren Klassen.

    Sie gehören zum ”Paket“ java.io

    Diese Paket muss explizit im Programmtext angegebenwerden, um die Eingabe-Klassen zu verwenden.

    Alle Elemente dieses Paketes werden mit folgender Anweisung(Importanweisungen) eingebunden:

    import io.*;

    48 / 69

  • Import-Anweisung

    Sogenannte Importanweisungen stehen immer als erstes(außerhalb der Klassendefinition) im Programmtext.

    Dort werden Sie vom (Prä)prozessor gefunden und verarbeitet.

    49 / 69

    2.9 Ein Programm mit Ein- und Ausgabe

    Ziele

    Eingabe als komplexere Anweisung anwenden können.

    Import-Anweisung benutzen, da für Eingabe notwendig.

    Erste Ausnahme/Exception.

    Erste Verwendung einer Variable.

    50 / 69

    Ein Grussprogramm I: Greets.java

    1. /* Programmierkurs WS0708 AFS RS, BE, AS */

    2. import java.io.*;

    3. public class Greets

    4. {

    5. public static void main(String[] args)

    6. throws IOException

    7. {

    8. BufferedReader in = new BufferedReader

    9. ( new InputStreamReader(System.in) );

    10. System.out.println( ’’What’s your name ? ‘‘);

    51 / 69

    Ein Grussprogramm I: Greets.java

    1. /* Programmierkurs WS0708 AFS RS, BE, AS */

    2. import java.io.*;

    3. public class Greets

    4. {

    5. public static void main(String[] args)

    6. throws IOException

    7. {

    8. BufferedReader in = new BufferedReader

    9. ( new InputStreamReader(System.in) );

    10. System.out.println( ’’What’s your name ? ‘‘);

    Import-Anweisung vorKlassendefinition!

    52 / 69

  • Ein Grussprogramm I: Greets.java

    1. /* Programmierkurs WS0708 AFS RS, BE, AS */

    2. import java.io.*;

    3. public class Greets

    4. {

    5. public static void main(String[] args)

    6. throws IOException

    7. {

    8. BufferedReader in = new BufferedReader

    9. ( new InputStreamReader(System.in) );

    10. System.out.println( ’’What’s your name ? ‘‘);

    Ausnahme: Fehler-behandlung Wirdbei Verwendung derEingabe- Klassenverlangt (Später).

    53 / 69

    Ein Grussprogramm I: Greets.java

    1. /* Programmierkurs WS0708 AFS RS, BE, AS */

    2. import java.io.*;

    3. public class Greets

    4. {

    5. public static void main(String[] args)

    6. throws IOException

    7. {

    8. BufferedReader in = new BufferedReader

    9. ( new InputStreamReader(System.in) );

    10. System.out.println( ’’What’s your name ? ‘‘);

    Lange Befehle: 2-zeiligund eingerückt.

    54 / 69

    Grussprogramm II

    1. // Tastatureingabe einlesen!

    2. String name = in.readLine();

    3. System.out.println();

    4. System.out.println(’’Buon Giorno,‘‘+ name);

    5. }

    6. }

    55 / 69

    Grussprogramm II

    1. // Tastatureingabe einlesen!

    2. String name = in.readLine();

    3. System.out.println();

    4. System.out.println(’’Buon Giorno,‘‘+ name);

    5. }

    6. }

    Einlesen in Variablename vom Typ String.

    56 / 69

  • Grussprogramm II

    1. // Tastatureingabe einlesen!

    2. String name = in.readLine();

    3. System.out.println();

    4. System.out.println(’’Buon Giorno,‘‘+ name);

    5. }

    6. }

    What’s your name ?

    57 / 69

    Grussprogramm II

    1. // Tastatureingabe einlesen!

    2. String name = in.readLine();

    3. System.out.println();

    4. System.out.println(’’Buon Giorno,‘‘+ name);

    5. }

    6. }

    What’s your name ?

    Nemo ←↩

    58 / 69

    Grussprogramm II

    1. // Tastatureingabe einlesen!

    2. String name = in.readLine();

    3. System.out.println();

    4. System.out.println(’’Buon Giorno,‘‘+ name);

    5. }

    6. }

    What’s your name ?

    NemoBuon Giorno, Nemo

    59 / 69