Praktische Informatik 1

Ähnliche Dokumente
PROCESSING EINE ZUSAMMENFASSUNG. Created by Michael Kirsch & Beat Rossmy

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Beispiele für Ausdrücke. Der imperative Kern. Der imperative Kern. Imperativer Kern - Kontrollstrukturen. Deklarationen mit Initialisierung

Praktische Informatik 1

Gedächtnis. Während der Abarbeitung eines Algorithmus müssen sich Dinge gemerkt werden bzw. auf Dingen wird gerechnet. Zugriff.

1.2 Attribute und Methoden Aufbau einer Java-Klasse:

float: Fließkommazahl nach IEEE 754 Standard mit 32 bit

Einstieg in die Informatik mit Java

1 Aufgaben 1.1 Umgebungsvariable setzen: CLASSPATH

Teil 5 - Java. Programmstruktur Operatoren Schlüsselwörter Datentypen

Klassen als Datenstrukturen

Inhaltsverzeichnis. Grundlagen und Einführung (1. Band) 1

Klausur Grundlagen der Programmierung

3. Anweisungen und Kontrollstrukturen

Repetitorium Informatik (Java)

7. Objektorientierung. Informatik II für Verkehrsingenieure

Objektorientierung. Marc Satkowski 20. November C# Kurs

3. Klassen Statische Komponenten einer Klasse. Klassenvariablen

Elementare Konzepte von

Vorkurs Informatik WiSe 16/17

Institut für Programmierung und Reaktive Systeme. Java 2. Markus Reschke

Java Zusammenfassung. Basisdatentypen ganzzahlig: Byte, Short, Integer, Long Fließkomma: Float, Double Zeichen: Character Wahrheitswerte: Boolean

Erste Java-Programme (Scopes und Rekursion)

Informatik II Prüfungsvorbereitungskurs

Algorithmen als systematische Vorgehensweisen zur Lösung eines formal definierten Problems

Klassenmethoden. Klassenvariablen. Für das Auslesen des Studentenzählers definieren wir eine öffentliche Klassenmethode:

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)

Computeranwendung und Programmierung (CuP)

Algorithmen als systematische Vorgehensweisen zur Lösung eines formal definierten Problems

Tag 8 Repetitorium Informatik (Java)

1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen

Programmiertechnik Klassenvariablen & Instantiierung

RO-Tutorien 3 / 6 / 12

Einstieg in die Informatik mit Java

Informatik I - Einstiegskurs

Klassen und Objekte. Einführung in Java. Folie 1 von Mai Ivo Kronenberg

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)

Klassen und Objekte. Klassen sind Vorlagen für Objekte. Objekte haben. Attribute. Konstruktoren. Methoden. Merkblatt

Einstieg in die Informatik mit Java

1. Erste Schritte 2. Einfache Datentypen 3. Anweisungen und Kontrollstrukturen 4. Verifikation 5. Reihungen (Arrays)

C++ - Objektorientierte Programmierung Konstruktoren und Destruktoren

Einführung Datentypen Verzweigung Schleifen. Java Crashkurs. Kim-Manuel Klein May 4, 2015

Methoden. Gerd Bohlender. Einstieg in die Informatik mit Java, Vorlesung vom

Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 1. Teil

2 Eine einfache Programmiersprache

Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 1. Teil

2 Eine einfache Programmiersprache. Variablen. Operationen Zuweisung. Variablen

Grundelemente objektorientierter Sprachen (1)

Javakurs für Anfänger

Geoinformatik und Vermessung Prüfung 502 : Informatik (JAVA)

Grundelemente objektorientierter Sprachen (1)

Geoinformatik und Vermessung Prüfung 502 : Informatik (JAVA)

Programmieren I + II Regeln der Code-Formatierung

RO-Tutorien 15 und 16

2 Eine einfache Programmiersprache

Umsetzung einer Klassenkarte in einer Programmiersprache

Vorkurs Informatik WiSe 17/18

Intensivübung zu Algorithmen und Datenstrukturen

Einstieg in die Informatik mit Java

Programmieren I + II Regeln der Code-Formatierung

7. Übung Informatik II - Objektorientierte Programmierung

Einführung in die Programmierung für NF MI. Übung 07

Das diesem Dokument zugrundeliegende Vorhaben wurde mit Mitteln des Bundesministeriums für Bildung und Forschung unter dem Förderkennzeichen

Einführung in C. EDV1-04C-Einführung 1

Präzedenz von Operatoren

Übungen zu Programmieren - Code-Formatierung -

Fakultät IV Elektrotechnik/Informatik

Java: Eine kurze Einführung an Beispielen

Informatik II. Woche 10, Giuseppe Accaputo

JavaScript. Dies ist normales HTML. Hallo Welt! Dies ist JavaScript. Wieder normales HTML.

Grundlagen. Übungen. Klassen, Attribute, Assoziationen, Methoden. Grundlagen_Klassen_Attribute_Assoziationen_Methoden.odt. Christine Janischek

Primitive Datentypen, Eingaben, Kontrollstrukturen und Methodendeklaration

Organisatorisches. Folien (u.a.) gibt's auf der Lva-Homepage zum Download

Einstieg in die Informatik mit Java

Algorithmen und Datenstrukturen II

Operatoren für elementare Datentypen Bedingte Anweisungen Schleifen. Operatoren für elementare Datentypen Bedingte Anweisungen Schleifen

2 Eine einfache Programmiersprache

Kapitel 3. Programmierkurs. Arten von Anweisungen. 3.1 Was sind Anweisungen?

Anweisungen zur Ablaufsteuerung

Java Methoden. Informatik 1 für Nebenfachstudierende Grundmodul. Kai-Steffen Hielscher Folienversion: 1. Februar 2017

AuD-Tafelübung T-B5b

2 Eine einfache Programmiersprache

1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen

Welche Informatik-Kenntnisse bringen Sie mit?

Kleines Java-Glossar zum Praktikum Einführung in das Programmieren

Tag 7 Repetitorium Informatik (Java)

EINFÜHRUNG IN DIE PROGRAMMIERUNG

Beuth Hochschule Parameter-Übergabe-Mechanismen WS17/18, S. 1

Einführung in die Programmierung mit BlueJ

Transkript:

Praktische Informatik 1 Imperative Programmierung und Objektorientierung Karsten Hölscher und Jan Peleska Wintersemester 2011/2012

Was bisher geschah... Konzepte: Klassen und ihre...... Instanzen, die Objekte Methoden und ihre Parameter Eine erste Programmierübung in Java: Ausfüllen von Methoden mit... Zuweisungen if-else-anweisungen for-schleifen return-anweisung Operatoren +,-,<<,>>,>>>...

Was bisher geschah... Tutorieneinschreibe-Chaos Sorry! Unklarheit bzgl. Aufgabenblatt 1 nochmal Sorry!

Was nun geschieht... ABER alles wird besser Abgabe Blatt 1 Donnerstag, 17. November 2011 Abgaben generell Ausgabe Dienstag Abgabe Donnerstag der Folgewoche

Welche Systematik steckt dahinter - Aufbau von Programmiersprachen Strukturmechanismen: Wie kann sehr viel Code in verständliche Komponenten zerlegt werden? Primitive Datentypen: Welche Basis-Datentypen stellt die Programmiersprache zur Verfügung, um Variablen dieser Typen einzuführen? Typerzeugungsmechanismen: Wie kann man aus vorhandenen Datentypen neue, komplexere, bilden? Deklaration und dynamische Erzeugung/Vernichtung: Wie können Variablen eingeführt werden -- wie können Objekte zur Laufzeit dynamisch neu erzeugt oder vernichtet werden?

Aufbau von Programmiersprachen Kausalordnung von Anweisungen: Wie kann beschrieben werden, ob Anweisungen nacheinander oder nebenläufig ( parallel zu einander ) ausgeführt werden? Zuweisungen ( Zuweisungs-Anweisung ): Wie lassen sich Werte zwischen Variablen übertragen? Zuweisungen sind typisch für imperative Programmiersprachen; funktionale Programmiersprachen (z.b. Lisp) kommen ohne Zuweisungsbefehle aus

Aufbau von Programmiersprachen Kontrollstrukturen: Wie kann die sequenzielle oder nebenläufige Abarbeitung von Anweisungen unterbrochen werden, um die Programmausführung an anderer Stelle fortzusetzen? Ausdrücke und Operatoren: Wie lassen sich Variablen und Konstanten unter Zuhilfenahme von Operatoren zu komplexeren Ausdrücken zusammensetzen, um beispielsweise Berechnungen, verknüpfte logische Bedingungen oder das Zusammensetzen von Texten zu beschreiben?

Aufbau von Programmiersprachen Sprachmerkmal Wir haben in Java bereits dazu gesehen Es gibt in Java dazu noch (werden wir später kennenlernen) Strukturmechanismen Dateien, Klassen, Methoden, Blöcke Packages Primitive Datentypen int, float, boolean, char,... Typerzeugungsmechanismen Klassen Arrays, Enumerations (Aufzählungstypen) Kausalordnung von Anweisungen Sequenzielle Folge von Anweisungen ; Thread-Aktivierung (nebenläufig ausgeführte Folge von Anweisungen)

Aufbau von Programmiersprachen Sprachmerkmal Wir haben in Java bereits dazu gesehen Es gibt in Java dazu noch (werden wir später kennenlernen) Zuweisungen <variable> = <Ausdruck> Kontrollstrukturen if, for, return while, do-while, goto, switch Ausdrücke und Operatoren +,-,<<,>>,>>>, ~... %,/,*,!,^,... Deklaration und dynamische Erzeugung/Vernichtung <Typ> <Variablenname>; <Klasse> <Var> = new <Klasse>();

naiver Ticketautomat zu modellieren: Ticketautomat mit einer Ticketart Kunde kann Geld einwerfen Automat summiert eingeworfenes Geld Kunde kann Ticket anfordern, sobald korrekter Betrag erreicht ist

Klassenaufbau äußerer Teil Zugriffsmodifikator Schlüsselwort Klassenname public class Ticketautomat { // innerer Teil } Klammern

Klassenaufbau innerer Teil Attribute Konstruktoren Methoden public class Klassenname { Attribute Konstruktoren Methoden }

Attribute jedes Objekt reserviert Platz für Attributwerte t1:ticketautomat preis bishergezahlt gesamtsumme t2:ticketautomat preis bishergezahlt gesamtsumme Attribute sind Variablen

Kommentare Erläuterungen für menschliche Leser kein Einfluss auf Funktionalität einzeilig von hier bis zum Zeilenende! // Der Ticketpreis private int preis; mehrzeilig /* Diese Klasse modelliert einen einfachen Ticketautomaten. Der Preis für... */

Semikolon Semikolon schließt Anweisungen ab Attributdeklaration ist Anweisung: Zugriffsmodifikator Typ Attributname; private int preis; Vereinbarung: Attribute vorerst immer private!

Konstruktor Konstruktor dient der Initialisierung d.h. Objekt wird in gültigen Zustand versetzt Konstruktorkopf hat keinen Rückgabetyp: Zugriffsmodifikator Klassenname( Parameterliste ) public Ticketautomat( int ticketpreis ) genereller Aufbau: Konstruktorkopf { // Anweisungen }

Konstruktor Klasse kann mehrere Konstruktoren haben: unterschiedliche Parameterlisten Typreihenfolge! public Kreis(int xkoor, int ykoor) public Kreis(int xkoor, int radius) public Kreis(int radius, String farbe) = kein Konstruktor definiert Standardkonstruktor: public Klassenname() {}

Sichtbarkeit (engl. Scope) wo im Quelltext ist Variable zugreifbar Parameter sind Variablen! Sichtbarkeit formale Parameter Attribute nur im Rumpf der Methode gesamte Klassendefinition

Lebensdauer wie lange existiert Variable Lebensdauer formaler Parameter Attribute auf Ausführungszeit der Methode beschränkt nach Ausführung sind Werte verloren! Lebensdauer des Objekts

Zuweisung Werte werden mittels Zuweisungen in Variablen gespeichert: variable = ausdruck preis = ticketpreis; Zuweisungsoperator Wert des Ausdrucks rechts wird in Variable links gespeichert Variablen speichern immer nur einen Wert vorheriger Wert geht verloren!

Zuweisung Eine Zuweisung ist eine Anweisung Semikolon! Typ des Ausdrucks rechts muss zum Typ der Variable links passen: int preis = 500; int preis = hello ; int preis = false;

Datenübergabe mit Parameter (A) Parameterübergabe (B) Zuweisung

Methoden Methoden implementieren das Verhalten von Objekten Methoden bestehen aus Kopf und Rumpf Kopf: Zugriffsmodifikator und Signatur public int gibpreis() Rumpf: Deklarationen und Anweisungen { } return preis; Block

getter -Methoden sondieren den Objektstatus d.h. liefern Informationen über den Zustand Rückgabeanweisung: return preis; Ausführung einer Methode endet mit Rückgabe! Ergebnistyp muss mit Rückgabeanweisung übereinstimmen! public int gibs() { return hello ; } public int gibs() { return 500; }

getter -Methoden sondieren den Objektstatus d.h. liefern Informationen über den Zustand Rückgabeanweisung: return preis; Ausführung einer Methode endet mit Rückgabe! Ergebnistyp muss mit Rückgabeanweisung übereinstimmen! public int gibs() { return hello ; } public int gibs() { return 500; }

setter -Methoden ändern den Objektstatus d.h. verändern den Wert von Attributen bishergezahlt = bishergezahlt + betrag; typischerweise ohne Rückgabe public void geldeinwerfen(int betrag) { } optional spezielle Anweisung return; beendet Ausführung der Methode ohne Rückgabe

Operator arithmetischer Operator bishergezahlt = bishergezahlt + betrag; Operatoren sind Methoden in anderer Schreibweise a + b entspricht int plus(int a, int b) Operatoren haben einen Typ + : int x int int - : int x int int * : int x int int / : int x int int % : int x int int

Ausgabe System.out.println() gibt Parameter auf Konsole aus System.out.println( hello world! ); gibt aus: hello world!

Stringkonkatenation + im Kontext von Zeichenketten bewirkt Konkatenation ( + ist überladen ) System.out.println(5 + cent ); gibt aus: 5 cent Quiz: Was ist die Ausgabe von System.out.println(5 + 6 + cent );