Praktische Informatik 1

Slides:



Advertisements
Ähnliche Präsentationen
ALP II: Objektorientierte Programmierung Sommersemester 2006
Advertisements

der Universität Oldenburg
3. Operatoren und Ausdrücke
Forschungszentrum caesar
Einführung in die Programmierung Zusammenfassung
Variablen und Datentypen
Verteilte Software - Java - Prozedurale Programmierung 1
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Indirekte Adressierung
Java: Referenzen und Zeichenketten
Java: Grundlagen der Objektorientierung
Klassenvariable. Da man für jede Kuh bzw. jede Henne auf dem Markt den gleichen Preis für ein Liter Milch, bzw. den gleichen Preis für ein Ei bekommt,
Objekte und Arbeitsspeicher
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 3 Klassen, Objekte, Arrays und Kontrollstrukturen Sommersemester 2003 Lars Bernard.
Imperative Programmierung
Java-Kurs - 2. Übung Entwicklungsumgebung Struktur von Programmen
Zusammenfassung Vorwoche
DVG Klassen und Objekte
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Sitzung 3: Klassen, Objekte, Arrays und Kontrollstrukturen
Grundkonzepte Java - Klassendefinition
Informatik 1 Übung 2.
Programmieren Kapitel 3 – Variablen.
Kontrollstrukturen Verwendung: Steuerung des Ablaufs.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Java und Eclipse.
EPROG Tutorium Einheit 4 Klassen und Objekte. Wiederholung Schleifen do... while while for break/continue Strings String char Methoden für Strings Arrays.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Abteilung für Telekooperation Übung Softwareentwicklung 1 für Wirtschaftsinformatik Dr. Wieland Schwinger
Variablenkonzept Klassisch, in Java Basistyp
Informatik II Grundlagen der Programmierung Programmieren in C Programmstrukturen / Kontrollstrukturen Hochschule Fulda – FB ET Sommersemester 2014.
EPROG Tutorium #3 Philipp Effenberger
Einführung in PHP 5.
CuP - Java Vierte Vorlesung Entspricht ungefähr Kapitel 2.1 des Skriptums Montag, 14. Oktober 2002.
CuP - Java Sechste Vorlesung Entspricht ungefähr Kapitel 3. 1 – 3
Programmieren in C Grundlagen C 2
BMEVIEEA100 Grundlagen der Programmierung
Vorlesung 3. if else Anweisung if (Ausdruck) Anweisung1 else Anweisung2 Ausdruck hat einen von 0 verschiedenen Wert, so wird Anweisung 1 ausgeführt. Bei.
PHP: Operatoren und Kontrollstrukturen
PI Burgenland Java und JavaScript 1. Teil
Hochschule Fulda – FB ET Sommersemester 2014
Programmieren in C Grundlagen C 2
Java Syntaxdiagramme Buchstabe A B Z a z ... Ziffer
Java-Kurs - 3. Übung Hausaufgabe Arrays For-Schleifen.
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
Diskrete Mathematik I Vorlesung 2 Arrays.
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
Einführung in die Programmierung mit Java
Programmierkurs JavaUE 4 Anweisungen und ProgrammeDietrich BolesSeite 1 Programmierkurs Java Dr. Dietrich Boles Teil Imperative Programmierung Unterrichtseinheit.
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
Variablen und Datentypen
TRUE und FALSE in C Der Wert 0 steht für FALSE Jeder von 0 verschiedene Wert steht für TRUE FALSE wird als 0 dargestellt TRUE wird als 1 dargestellt.
Variablen und Operatoren. C++ Teil 2: Grundstrukturen Variablen Operatoren Kontrollstrukturen Funktionen Header-Dateien Pointer und Referenzen.
Java Programme nur ein bisschen objektorientiert.
Einführung in die Programmierung mit Java
Konstruktoren.
Hello World! Javakurs 2013 Arne Kappen
Datentypen: integer, char, string, boolean
Aufgaben zu Rückgabewerten
Java-Kurs - 4. Übung weitere Kontrollstrukturen
Datentypen: integer, char, string, boolean
Java-Kurs - 2. Übung primitive Datentypen, Konstanten
Einführung in die Programmierung
Variable: typ varName = Wert Kiste: Art Aufschrift  Inhalt
Unterschiedliche Kontrollstrukturen
SS 04 Christiane Rauh Christian Hellinger
Unterschiedliche Arten von Kontrollstrukturen
Implementieren von Klassen
Schleifen Datenfelder (Arrays) Verzweigungen
 Präsentation transkript:

Praktische Informatik 1 Prof. Dr. H. Schlingloff 9. 1. 2008

Wo stehen wir? Kapitel 5: Applikative Programmierung -entfällt- 4.3 Geschichte von Java 4.4 Programmierumgebungen am Beispiel Eclipse Kapitel 5: Applikative Programmierung -entfällt- Kapitel 6: Konzepte imperativer Sprachen 6.1 Variablen, Datentypen, Ausdrücke 6.2 Anweisungen und Kontrollstrukturen 6.3 Sichtbarkeit und Lebensdauer von Variablen 6.4 Rekursion und Iteration, Kellerprinzip

Beispiel: Fakultätsfunktion Methodendeklaration static int fakRek(int x) { return (x<=0) ? 1 : x * fakRek(x-1); } static int fakIt(int x) { int result = 1; while (x>0) { result *= x--; }; return result; Methodenaufruf arithmetischer Operator Parameter Bedingter Term (Bedingung) ? ja : nein lokale Variable Zuweisungsoperator Vergleichsoperator Multiplikation mit Zuweisung Dekrement-Operation

6.1 Variablen, Datentypen, Ausdrücke Mini-Javakurs http://java.sun.com/docs/books/tutorial/java/nutsandbolts/index.html Variablen - entsprechen (Gruppen von) Speicherzellen - haben einen festgelegten Datentyp Methoden haben Parameter (Ein/Ausgabevariablen) Methoden können lokale Variablen haben Jedes Objekt hat Instanzvariablen (nicht statisch) Klassen können Klassenvariablen besitzen (statisch) Instanzvariablen und Klassenvariablen heißen Datenfelder

Beispiel public class Main { static double wechselkurs = 1.32; Klassenvariable public class Main { static double wechselkurs = 1.32; int betrag = 7; static int zehnCentStücke(double p) { int cent = (int)((p-(int)(p)) * 100); return((cent==20) ? 1 : 0) ;} public static void main(String[] args) { double p = 2.70; System.out.print("p= "); System.out.println(p); } Instanzvariable Parameter lokale Variable

Java-Datentypen Zahlen: int, byte, short, long, float, double (43.8F, 2.4e5) Zeichen: char (z.B. `x´) Sonderzeichen `\n´, `\”´, `\\´, `\uFFF0´ Zeichenreihen (Strings): “Infor” + “matik” Wahrheitswerte: boolean (true, false) „Leerer Typ“ void Literale

Datendeklarationen boolean result = true; char capitalC = 'C'; byte b = 100; short s = 10000; int i = 100000; int decVal = 26; int octVal = 032; int hexVal = 0x1a; double d1 = 123.4; double d2 = 1.234e2; float f1 = 123.4f; String s = "ABCDE";

Reihungen (Arrays) Variable für mehrere gleichförmige Daten class ArrayDemo { public static void main(String[] args) { int[] anArray; // eine Reihung ganzer Zahlen anArray = new int[10]; // Speicherallokation anArray[8] = 500; System.out.println("Element at index 8: " + anArray[8]); } }

Ausdrücke und Anweisungen Der Rumpf einer Methode besteht aus einem Block, d.h. einer Folge von Anweisungen (statements). Bei der Ausführung werden diese der Reihe nach abgearbeitet. Die wichtigste Art von Anweisungen sind Ausdrücke (expressions). Bei ihrer Auswertung liefern sie einen Wert ab und können per Nebeneffekt den Inhalt von Variablen verändern.

Ausdrücke (gekürzt) Expression::=Expr1 [AssignmentOperator Expr1] Expr1::=Expr2 [? Expression : Expr1] Expr2 ::=Expr3 {Infixop Expr3} Infixop::= + | * | < | == | != | || | && | … Expr3::= PrefixOp Expr3 | ( Expr | Type ) Expr3 | Primary {Selector} {PostfixOp} Prefixop::= ++ | -- | ! | ~ |+ | - Primary::= ( Expression ) | Literal | new Creator | Identifier { . Identifier }[ IdentifierSuffix] | … vgl. http://java.sun.com/docs/books/jls/, Kap. 18

Beispiele 17 + 4 x = x + 1 b = b != !b a += (a = 3) v[i] != other.v[i] cube[17][x+3][++y] "Länge = " + ia.length + "," + ia[0].length + " Meter"

Definierte Zuweisung Java verlangt, dass jede lokale Variable vor ihrer Verwendung initialisiert wurde, und zwar so, dass es statisch erkennbar ist. Diese Bedingung wird vom Compiler überprüft. public class Analyse { public int korrekt() {int x; if (17+4==21){x=1;}; return x; } } public class Analyse2 { public int inkorrekt() {int x; int i=5; if (i==5){x=1;}; return x; } }

Java-Operatoren arithmetische: +, -, *, /, %, ++ und –– / und % sind (ganzzahlige) Division und Rest ++ und –– als Post- und Präfixoperatoren; a++ erhöht a um 1 und ergibt a, während ++a den Wert a+1 liefert + auch zur Konkatenation von Zeichenreihen! relationale: ==, !=, <, <=, > und >= == und != vergleichen bei Objekten nur Referenzen! logische: !, &&, ||, &, | und ^ a || b wertet b nur aus falls a nicht gilt

weitere Operatoren Zuweisungsoperatoren = , +=, -=, *=, /=, %, &=, |=, ^=, <<=, >>= und >>>= dreistellige Fallunterscheidung x? y: z Bitoperatoren ~, |, &, ^, >>, >>> und << Operatoren new und instanceof a instanceof b gibt an, ob Objekt a eine Instanz der Klasse b oder einer ihrer Unterklassen ist Operatoren für Member- und Array-Zugriff MeineKlasse.meinDatenfeld meinArray[7]

|| versus | Dies ist kein Beispiel für gute Programmierung! public class Demo { static public int sampleMethod() int i = 0; boolean b = ++i==i++ || ++i==i++; return i; } Dies ist kein Beispiel für gute Programmierung! Seiteneffekte möglichst wenig verwenden!

>> versus >>> >> Bitshift mit Vorzeichen >>> vorzeichenloser Rechts-Shift Bit-Shifts nur mit Vorsicht verwenden! public class Rechtsshift { static int i = -64; static int j = i>>2; static int k = i>>>2; }

Typisierung Alle Operatoren in Java sind strikt typisiert, d.h., es wird geprüft, ob der Typ dem verlangten entspricht. Z.B. kann << nicht auf float oder String angewendet werden. Zur Typumwandlung gibt es entsprechende Casting-Operatoren; z.B. (int)3.14 // ergibt 3 (double)3.14f // Ausweitung Bestimmte Typen sind inkompatibel (z.B. boolean und int)

Auswertung von Ausdrücken Ausdrücke werden gemäß den „üblichen“ Operator-Präzedenz-Regeln ausgewertet Die Reihenfolge der Auswertung von Ausdrücken beeinflusst das Ergebnis. Beispiel int i=2, j = (i=3)*i; // ergibt 9 !!! Schlechter Programmierstil !!! Regeln: linker vor rechter Operator, dann Operation gemäß Klammerung gemäß Hierarchie

6.2 Anweisungen und Kontrollstrukturen Leere Anweisung ; Block (mit {…} geklammerte Folge darf auch geschachtelt werden Lokale Variablendeklaration Ausdrucksanweisung Zuweisung Inkrement und Dekrement Methodenaufruf Instanzerzeugung

Fallunterscheidungen if-Anweisung if (ausdruck) anweisung; [else anweisung;] üblicherweise Anweisungsblock hängendes else gehört zum innersten if switch-Anweisung switch (ausdruck) { {case constant : anweisung} [default: anweisung] Konstante ergibt Sprungziel

Kontrollflusselemente while- und do-Schleife while (ausdruck) anweisung; do anweisung; while (ausdruck); for-Schleife for (init; test; update) anweisung; init darf mehrere Anweisungen (mit Komma getrennt!) enthalten, auch gar keine for (int i=0; i<10; i++){ … i…;}; break, continue und return continue verlässt den Schleifendurchlauf break verlässt die Schleife komplett

6.3 Sichtbarkeit und Lebensdauer von Variablen Unter der Sichtbarkeit (Skopus) einer Variablen versteht man den Bereich im Quellcode, in dem dieser Variablenname verwendet werden darf. Der Gültigkeitsbereich ist derjenige Teil der Sichtbarkeit, in der man auf den Inhalt der Variablen zugreifen kann Die Lebensdauer ist die Zeitspanne, während der für die Variable Speicherplatz reserviert werden muss Für jede der verschiedenen Variablenarten gibt es detaillierte Festlegungen hierzu.

Beispiel public class xyz { int x; public xyz() x = 1; } public int sampleMethod(int y) int z = 2; return x + y + z;

Verschattung Lokale Variablen werden in einem Block (einer Folge von Anweisungen) deklariert und sind nur für diesen verwendbar. Lokale Variable sind ab ihrer Deklaration bis zum Ende des Blocks oder der Methode sichtbar. Instanzvariable können von gleichnamigen lokalen Variablen verschattet werden, d.h., sie sind sichtbar aber nicht gültig. Verschattung ist hilfreich, um das Lokalitätsprinzip zu unterstützen (z.B. in Laufanweisungen). In Java ist es nicht erlaubt, dass lokale Variablen sich gegenseitig oder Methodenparameter verschatten

Beispiel public class xyz { int x; public xyz() { x = 1; } public int sampleMethod(int y) { int x = 2; return x + y;