You are on page 1of 7

1 - Erste Schritte

Grundlagen der Informatik


Wintersemester 2014/15
Friedrich-Alexander-Universitt Erlangen-Nrnberg

Was wollen wir eigentlich erreichen?

Dies sind die in der obenstehenden Vorlesung verwendeten Folien. Sie sind ausschlielich fr den persnlichen Gebrauch zur
Prfungsvorbereitung bestimmt. Eine Verffentlichung, Vervielfltigung oder Weitergabe ist ohne unsere schriftliche
Zustimmung nicht gestattet.
Die Folie wurde von F. Bauer und R. Grosso vom Lehrstuhl fr Informatik 9 erstellt.
Friedrich-Alexander-Universitt Erlangen-Nrnberg
Erlangen, 07. Oktober 2014 F. Bauer

Und das Ziel wre?

Was ist Objektorientiertes Programmieren


Programmierung in Anlehnung an die Realitt:
In der realen Welt sind wir von Objekten umgeben
Jedes Objekt hat einen Zustand (Wieviel Liter Benzin sind noch im Tank)
und kann auf Signale/Nachrichten reagieren (Beschleunigen, wenn das Gaspedal getreten wird)
Komplexe Aufgaben knnen durch Nachrichtenaustausch/Kommunikation zwischen verschiedenen
Objekten erfllt werden (Fuballmanschaft)
Einzelne Objekte knnen nach Typen (oder Klassen) verallgemeinert werden (jedes Auto hat einen
Energiespeicher, z.B. Tank oder Batterie)

Erfahrung mit der praktischen Anwendung der


Objektorientierten Programmierung vermitteln

Fahrer

Gib Gas!

(Frank)

Auto
(Kfer)

bertragen auf Programmiersprache


Verallgemeinerung (auch Abstraktion oder Klassifizierung) verwenden, um die Realitt im Rechner
abzubilden
Dazu mssen wir folgendes beherrschen:
Klassen von Objekten beschreiben
Zustnde fr einzelne Objekte speichern
Nachrichten senden und empfangen

Wintersemester 2014/15 | F. Bauer | https://gdi.cs.fau.de | Grundlagen der Informatik

Wintersemester 2014/15 | F. Bauer | https://gdi.cs.fau.de | Grundlagen der Informatik

Was ist Objektorientiertes Programmieren


bertragen auf Programmiersprache
Verallgemeinerung (auch Abstraktion oder Klassifizierung) verwenden um die Realitt im Rechner
abzubilden
Dazu mssen wir folgendes beherrschen:
Klassen von Objekten beschreiben
Zustnde fr einzelne Objekte speichern
Nachrichten senden und Empfangen

1 - Erste Schritte
Mein erstes Programm

OOP ist ein Hochsprachenkonzept


Art der Programmierung in OOP ist weit davon entfernt, wie die Maschine funktioniert
Erst zeigen wir deshalb, was in einer Maschine passiert
dann wie man prozedural programmiert
dann fhren wir davon ausgehend die OOP ein
und lernen ganz zum Ende, wie man Techniken der OOP fr typische Probleme verwenden kann.

Wintersemester 2014/15 | F. Bauer | https://gdi.cs.fau.de | Grundlagen der Informatik

Mein erstes Programm

Mein erstes Programm

Maschinen verstehen nur Maschinencode.

Maschinen verstehen nur Maschinencode.

Menschen knnen damit aber nur schlecht umgehen. Deswegen schreibt man Programme nicht direkt im
Maschinencode, sondern in Hochsprachen, z.B. Java.

Wie erstellt man ein Maschinencode?


1. Quellcode in einer Programmiersprache (z.B. Java) schreiben (mit Texteditor, nicht mit Word!!)
2. bersetzer (engl. Compiler) bersetzt das Programm aus menschenlesbarer Form in eine
maschinenlesbare
3. Programm kann von der Maschine ausgefhrt werden

Wintersemester 2014/15 | F. Bauer | https://gdi.cs.fau.de | Grundlagen der Informatik

Wintersemester 2014/15 | F. Bauer | https://gdi.cs.fau.de | Grundlagen der Informatik

Hallo Welt

Bestandteile eines Programmes

Inhalt einer Textdatei mit der Bezeichnung HalloWelt.java:

1
2
3
4
5

Eine ffentliche (public) Klasse (class), die


denselben Namen wie die Datei in der sie
gespeichert ist (HalloWelt) trgt.

public class HalloWelt {


public static void main(String[] args) {
System.out.println("Hallo Welt!");
}
}

1
2
3
4
5

Das Programm erzeugt die folgende Ausgabe:

Hallo Welt!

public class HalloWelt {


public static void main(String[] args) {
System.out.println("Hallo Welt!");
}
}

Kein UI, keine Fenster, nur eine einfache


Textausgabe auf der Konsole.

Wintersemester 2014/15 | F. Bauer | https://gdi.cs.fau.de | Grundlagen der Informatik

Bestandteile eines Programmes

10

Bestandteile eines Programmes

Eine ffentliche (public) Klasse (class), die


denselben Namen wie die Datei in der sie
gespeichert ist (HalloWelt) trgt.

1
2
3
4
5

Wintersemester 2014/15 | F. Bauer | https://gdi.cs.fau.de | Grundlagen der Informatik

Eine ffentliche (public) Klasse (class), die


denselben Namen wie die Datei in der sie
gespeichert ist (HalloWelt) trgt.

public class HalloWelt {


public static void main(String[] args) {
System.out.println("Hallo Welt!");
}
}

1
2
3
4
5

Eine ffentliche (public) statische (static)


Methode in der Klasse HalloWelt

Fr den Moment kann man


sich Klassen als Container fr
Methoden eines Programms
vorstellen

public class HalloWelt {


public static void main(String[] args) {
System.out.println("Hallo Welt!");
}
}

Eine ffentliche (public) statische (static)


Methode in der Klasse HalloWelt

Die Anweisung(en) die man


dem Rechner erteilen will

Fr den Moment kann


man sich Methoden als
Container fr die Anweisungen
die ein Programm dem
Rechner erteilt vorstellen
Wintersemester 2014/15 | F. Bauer | https://gdi.cs.fau.de | Grundlagen der Informatik

11

Wintersemester 2014/15 | F. Bauer | https://gdi.cs.fau.de | Grundlagen der Informatik

12

Bestandteile eines Programmes

Warum immer { und } ?


Geschweifte Klammern {} definieren in Java einen sogenannten Scope (dt.: Bereich).

Mit System.out.println() wird eine Ausgabe auf der Konsole erzeugt. Ausgegeben wird dabei die
Zeichenkette, die in Klammern angegeben ist (hier Hallo Welt). Zeichenketten werden in Java immer
von doppelten Anfhrungszeichen umschlossen!

1
2
3
4
5

Umgangssprachlich gesagt legen sie eine Zugehrigkeit fest


Die Klammer in Zeile 1 sagt, dass alles, was jetzt kommt, zur Klasse HalloWelt gehrt.
Die Klammer in Zeile 5 schliet die Klasse ab, alles danach gehrt nicht mehr zu HalloWelt
Die Klammern in Zeile 2 und 4 legen die Zugehrigkeit zur Methode fest.

public class HalloWelt {


public static void main(String[] args) {
System.out.println("Hallo Welt!");
}
}

1
2
3
4
5

Neben System.out.println() gibt es noch System.out.print(). Erstere erzeugt nach dem angegebenen
Text einen Zeilenumbruch, die zweite nicht.

1
2
3

System.out.print("Hallo "); // kein Zeilenumbruch


System.out.println("Welt"); // mit Zeilenumbruch
System.out.println("!"); // mit Zeilenumbruch

Hallo Welt
!

Wintersemester 2014/15 | F. Bauer | https://gdi.cs.fau.de | Grundlagen der Informatik

13

public class HalloWelt {


public static void main(String[] args) {
System.out.println("Hallo Welt!");
}
}

Wintersemester 2014/15 | F. Bauer | https://gdi.cs.fau.de | Grundlagen der Informatik

Programme
Java-Anwendungen
bestehen aus einer oder mehreren Klassen,
jede Klasse steht in einer eigenen Datei, die den Namen der Klasse und die Endung .java hat
(mindestens) eine dieser Klassen hat eine main-Methode

1 - Erste Schritte
Bestandteile von Programmen

Die Ausfhrung des Programms erfolgt strikt sequentiell:


beginnt in der ersten Zeile der main-Methode und
endet in der letzten Zeile der main-Methode
die dazwischenliegenden Befehle werden der Reihe nach ausgefhrt.
In der main-Methode kann man z. B.
Text und Variablen ausgeben,
Variablen, Konstanten und Felder anlegen,
Ausdrcke berechnen und ihren Wert einer Variablen zuweisen,
for/while-Schleifen oder if-Anweisungen programmieren,
vorhandene oder eigene Methoden aufrufen,
uvm.
1 public class HalloWelt {
2
public static void main(String[] args) {
3
System.out.println("Hallo Welt!");
4
}
5 }
Wintersemester 2014/15 | F. Bauer | https://gdi.cs.fau.de | Grundlagen der Informatik

15

14

Quellcode

Beispielprogramm

Sprachregeln
Wie fr eine natrliche Sprache gibt es auch fr eine Programmiersprache einen fest vorgegebenen
Wortschatz und eine Grammatik. Diese Regeln muss man auswendig knnen.

Das Problem beim Programmieren ist nicht das Anwenden der Regeln, sondern das bersetzen eines
natrlichsprachlichen Problemes in eine Folge von Anweisungen, die ein Rechner ausfhren kann.
Dieser Transfer muss praktisch gebt werden!!!

Layout und Syntax-Highlighting


Syntaxhervorhebung oder Syntax-Highlighting bezeichnet die Darstellung bestimmter Wrter und
Zeichenkombinationen in unterschiedlichen Farben, Schriftarten und -stile.

Aber Achtung!

Computer sind streng und dumm!

Das Text-Layout bezeichnet lediglich die optische Formatierung des Quelltextes, z.B. Leerzeilen,
Einrckungen, Zeilenumbruch, etc. Das Layout beeinflusst nicht die Lauffhigkeit eines Programmes.
Layout und Syntax-Highlighting vereinfachen die Lesbarkeit des Quelltextes.

Aufgabe: Gegeben sei eine natrliche Zahl n. Berechnen Sie das Produkt der natrlichen Zahlen von 1
bis n und geben Sie dies auf der Konsole aus.

public class HalloWelt {


public static void main(String[] args) {
System.out.println("Hallo Welt!");
}
1 public class HalloWelt{
}
2 public static void main(String[]
Gltig, aber unleserlich, weil
3 args){
schlecht formatiert und ohne
4 System.out.println("Hallo Welt!");}}
Einfrbungen
1
2
3
4
5

Wintersemester 2014/15 | F. Bauer | https://gdi.cs.fau.de | Grundlagen der Informatik

Vom Problem zum Programm


Aufgabenspezifikation: genaue Beschreibung des Problems, das gelst werden soll.
Entwurf: Spezifikation der Arbeitsschritte zur Lsung der Aufgabe.
Implementierung: Quelltext schreiben und kompilieren (bersetzen).
Test: berprfung der Ergebnisse und Beheben von Fehlern (debuggen).

17

Beispielprogramm

18

Beispielprogramm

Aufgabe: Gegeben sei eine natrliche Zahl n. Berechnen Sie das Produkt der natrlichen Zahlen von 1
bis n und geben Sie dies auf der Konsole aus.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

Wintersemester 2014/15 | F. Bauer | https://gdi.cs.fau.de | Grundlagen der Informatik

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

/**
* Die Klasse <code>Fakultaet</code> berechnet die
* Fakult
at-Funktion f
ur eine Nat
urliche Zahl n.
* @author Frank Bauer
*/
public class Fakultaet {
public static void main(String[] args) {
int faq = 1;
int n = 4;
for (int i = 1; i <= n; i++) {
faq *= i;
}
System.out.println("Fakultaet(" + n + ") = " + faq);
}
}

/**
* Die Klasse <code>Fakultaet</code> berechnet die
* Fakult
at-Funktion f
ur eine Nat
urliche Zahl n.
* @author Frank Bauer
*/
public class Fakultaet {
public static void main(String[] args) {
int faq = 1;
int n = 4;
for (int i = 1; i <= n; i++) {
faq *= i;
}
System.out.println("Fakultaet(" + n + ") = " + faq);
}
}

Programmelemente
Zeilen 6 + 15: Definition der Klasse Fakultaet

Fakultaet(4) = 24

Wintersemester 2014/15 | F. Bauer | https://gdi.cs.fau.de | Grundlagen der Informatik

19

Wintersemester 2014/15 | F. Bauer | https://gdi.cs.fau.de | Grundlagen der Informatik

20

Beispielprogramm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

Beispielprogramm

/**
* Die Klasse <code>Fakultaet</code> berechnet die
* Fakult
at-Funktion f
ur eine Nat
urliche Zahl n.
* @author Frank Bauer
*/
public class Fakultaet {
public static void main(String[] args) {
int faq = 1;
int n = 4;
for (int i = 1; i <= n; i++) {
faq *= i;
}
System.out.println("Fakultaet(" + n + ") = " + faq);
}
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

Programmelemente
Zeilen 6 + 15: Definition der Klasse Fakultaet
Zeilen 7 + 14: Definition der main-Methode

Wintersemester 2014/15 | F. Bauer | https://gdi.cs.fau.de | Grundlagen der Informatik

Programmelemente
Zeilen 6 + 15: Definition der Klasse Fakultaet
Zeilen 7 + 14: Definition der main-Methode
Zeilen 8 - 13: Programmanweisungen

21

Beispielprogramm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

/**
* Die Klasse <code>Fakultaet</code> berechnet die
* Fakult
at-Funktion f
ur eine Nat
urliche Zahl n.
* @author Frank Bauer
*/
public class Fakultaet {
public static void main(String[] args) {
int faq = 1;
int n = 4;
for (int i = 1; i <= n; i++) {
faq *= i;
}
System.out.println("Fakultaet(" + n + ") = " + faq);
}
}

Wintersemester 2014/15 | F. Bauer | https://gdi.cs.fau.de | Grundlagen der Informatik

22

Kommentare
Kommentare werden vom Compiler (bersetzer) und damit auch von der Maschine ignoriert. Kommentare
sind vor allem in greren Softwareprojekten und Teams unabdingbar!

/**
* Die Klasse <code>Fakultaet</code> berechnet die
* Fakult
at-Funktion f
ur eine Nat
urliche Zahl n.
* @author Frank Bauer
*/
public class Fakultaet {
public static void main(String[] args) {
int faq = 1;
int n = 4;
for (int i = 1; i <= n; i++) {
faq *= i;
}
System.out.println("Fakultaet(" + n + ") = " + faq);
}
}

Sie dienen dazu:


das Programm zu dokumentieren oder
Teile des Programmcodes kurzzeitig zu deaktivieren (auskommentieren).

Programmelemente
Zeilen 6 + 15: Definition der Klasse Fakultaet
Zeilen 7 + 14: Definition der main-Methode
Zeilen 8 - 13: Programmanweisungen
Zeilen 1 - 5: Kommentar (fr JavaDoc)

Wintersemester 2014/15 | F. Bauer | https://gdi.cs.fau.de | Grundlagen der Informatik

23

Wintersemester 2014/15 | F. Bauer | https://gdi.cs.fau.de | Grundlagen der Informatik

24

Kommentare

Kommentare

Kommentare werden vom Compiler (bersetzer) und damit auch von der Maschine ignoriert. Kommentare
sind vor allem in greren Softwareprojekten und Teams unabdingbar!

Kommentare werden vom Compiler (bersetzer) und damit auch von der Maschine ignoriert. Kommentare
sind vor allem in greren Softwareprojekten und Teams unabdingbar!

Sie dienen dazu:


das Programm zu dokumentieren oder
Teile des Programmcodes kurzzeitig zu deaktivieren (auskommentieren).

Sie dienen dazu:


das Programm zu dokumentieren oder
Teile des Programmcodes kurzzeitig zu deaktivieren (auskommentieren).

Kommentararten:
Zeilenkommentare

Kommentararten:
Zeilenkommentare

int a = 10; // Der Zeilenkommentar geht bis zum Ende der Zeile

int a = 10; // Der Zeilenkommentar geht bis zum Ende der Zeile

Mehrzeilige

1
2
3
4

Wintersemester 2014/15 | F. Bauer | https://gdi.cs.fau.de | Grundlagen der Informatik

25

Kommentare

Kommentare

/*
* Dies ist ein Standard-Kommentar.
* Er kann
uber mehrere Zeilen gehen.
*/

Wintersemester 2014/15 | F. Bauer | https://gdi.cs.fau.de | Grundlagen der Informatik

26

Kommentare

Kommentare werden vom Compiler (bersetzer) und damit auch von der Maschine ignoriert. Kommentare
sind vor allem in greren Softwareprojekten und Teams unabdingbar!
Sie dienen dazu:
das Programm zu dokumentieren oder
Teile des Programmcodes kurzzeitig zu deaktivieren (auskommentieren).

1
2
3
4
5

/**
* Die Klasse <code>Fakultaet</code> berechnet die
* Fakult
at-Funktion f
ur eine Nat
urliche Zahl n.
* @author Frank Bauer
*/

Obiger JavaDoc-Kommentar erzeugt die untenstehende Dokumentation des Programmcodes


Kommentararten:
Zeilenkommentare
1

int a = 10; // Der Zeilenkommentar geht bis zum Ende der Zeile

Mehrzeilige

1
2
3
4

Kommentare

/*
* Dies ist ein Standard-Kommentar.
* Er kann
uber mehrere Zeilen gehen.
*/

JavaDoc-Kommentare

1
2
3
4
5

/**
* Die Klasse <code>Fakultaet</code> berechnet die
* Fakult
at-Funktion f
ur eine Nat
urliche Zahl n.
* @author Frank Bauer
*/

Wintersemester 2014/15 | F. Bauer | https://gdi.cs.fau.de | Grundlagen der Informatik

27

Wintersemester 2014/15 | F. Bauer | https://gdi.cs.fau.de | Grundlagen der Informatik

28