Grundlagen der Programmierung Prof. H. Mössenböck. 2. Einfache Programme

Ähnliche Dokumente
Einheit 2. Syntax und Semantik Einfache Programme Verzweigungen Schleifen. Syntax und Semantik von Programmiersprachen

Beschreibung von Programmiersprachen. Syntax und Semantik von Programmiersprachen. EBNF (Erweiterte Backus-Naur-Form) Syntax und Semantik von Java

JOHANNES KEPLER UNIVERSITY LINZ Research and teaching network

Grundsymbole. Kapitel 2: Einfache Programme. Liste aller Java-Schlüsselwörter. Schlüsselwörter und Struktursymbole. Lexikalische Einheiten

Grundlagen der Programmierung Prof. H. Mössenböck. 6. Methoden

2. Einfache Java-Programme Grundlagen der Programmierung 1 (Java)

Informatik Vorkurs - Vorlesung 2

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

Vorkurs Informatik WiSe 16/17

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Java - Zahlen, Wahrheitswerte und Zeichen. Leibniz Universität IT Services Anja Aue

Java für Anfänger Teil 3: Integer-Typen. Programmierkurs Manfred Jackel

Vorkurs Informatik WiSe 17/18

Javaprogrammierung mit NetBeans. Variablen, Datentypen, Methoden

Einstieg in die Informatik mit Java

2. Programmierung in C

Einstieg in die Informatik mit Java

Projekt 3 Variablen und Operatoren

Software Entwicklung 1

Java - Zahlen, Wahrheitswerte und Zeichen. Leibniz Universität IT Services Anja Aue

3. Java - Sprachkonstrukte I

Übungen zur Vorlesung Wissenschaftliches Rechnen I

8. Ausdrücke, Operatoren (einfache Typen)

Unterlagen. CPP-Uebungen-08/

3. Java - Sprachkonstrukte I

Java I Vorlesung Imperatives Programmieren

8. Ausdrücke, Operatoren (einfache Typen)

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

Gleitkommazahlen. JOHANNES KEPLER UNIVERSITY LINZ Research and teaching network Softwareentwicklung 1 (gtec) Hanspeter Mössenböck, Herbert Prähofer 74

Einführung in die Programmierung

Die einfachsten Anweisungen

Hello World! Eine Einführung in das Programmieren Variablen

Angewandte Mathematik und Programmierung

Kapitel 4. Programmierkurs. Datentypen. Arten von Datentypen. Wiederholung Kapitel 4. Birgit Engels, Anna Schulze WS 07/08

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

3. Java - Sprachkonstrukte I

JAVA-Datentypen und deren Wertebereich

Grundlagen der Informatik Ergänzungen WS 2007/2008 Prof. Dr. Rainer Lütticke

Informatik I - Einstiegskurs

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2

Grundlagen der Informatik 2. Typen

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 29

Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik Operatoren, Kommentare, Ein-/Ausgabe

Schwerpunkte. 8. Ausdrücke, Operatoren (einfache Typen) Beispiel: Schaltjahr Test. Einführendes Beispiel: Grundprobleme

Einführung in die Programmierung I. 8. Prozedurale Konzepte in Java, Teil1. Stefan Zimmer

Variablen. CoMa-Übung VIII TU Berlin. CoMa-Übung VIII (TU Berlin) Variablen / 15

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 12/13. Kapitel 3. Grunddatentypen, Ausdrücke und Variable

Die Klasse MiniJava ist in der Datei MiniJava.java definiert:

Grundlagen der Modellierung und Programmierung, Übung

5.3 Auswertung von Ausdrücken

Kapitel 4. Programmierkurs. Datentypen. Arten von Datentypen. Datentypen und Operatoren Ganzzahlige Numerische Datentypen Logischer Datentyp

Einfache Rechenstrukturen und Kontrollfluss

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

Einfache Rechenstrukturen und Kontrollfluß

Informatik I Tutorium WS 07/08

Ausdrücke der Programmiersprache Java

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

3. Grundanweisungen in Java

Ein String ist in Java eigentlich eine Klasse, wir können ihn aber zunächst als Datentyp betrachten, der zur Speicherung von Zeichenketten dient.

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

3. Operatoren und Ausdrücke

Programmiervorkurs Einführung in Java Tag 1

Tutoraufgabe 1 (Zweierkomplement): Lösung: Programmierung WS16/17 Lösung - Übung 2

Sprachkonstrukte. Einführung in Java. Folie 1 von Mai Ivo Kronenberg

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

Einstieg in die Informatik mit Java

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

Fragenkatalog ESOP WS 16/17

Grunddatentypen, Ausdrücke und Variablen

Modellierung und Programmierung 1

Programmieren 1 C Überblick

Die Sprache C# Datentypen, Speicherverwaltung Grundelemente der Sprache. Dr. Beatrice Amrhein

3. Operatoren und Ausdrücke

Modul Entscheidungsunterstützung in der Logistik. Einführung in die Programmierung mit C++ Übung 2

1 Aufgaben 1.1 Umgebungsvariable setzen: CLASSPATH

1 Klassen anlegen und Objekte erzeugen

Grundlagen der Informatik 2. Operatoren

II.1.1. Erste Schritte - 1 -

3. Operatoren und Ausdrücke

4.2 Gleitkommazahlen. Der Speicherbedarf (in Bits) ist üblicherweise. In vielen Anwendungen benötigt man gebrochene Werte. Physikalische Größen

Java-Applikationen (Java-Programme)

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

Kapitel 3. Grunddatentypen, Ausdrücke und Variable

Programmiervorkurs. Wintersemester 2013/2014

Einstieg in die Informatik mit Java

Einführung in Java. Silke Trißl Wissensmanagement in der Bioinformatik. Linux, Unix, Windows, Macintosh, Kann aus Bausteinen zusammengesetzt werden

2 Eine einfache Programmiersprache

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Programmieren und Problemlösen Java-Sprachkonstrukte. Java-Sprachkonstrukte. Übung Altersberechner. Namen und Bezeichner. Namen und Bezeichner

Java ist statisch typisiert, d.h., Variablen, Ergebnisse von Ausdrücken, etc. haben einen Datentyp, der schon bei der Kompilierung festgelegt wird.

Operatoren und Ausdrücke

Kapitel 05. Datentypen. Fachgebiet Knowledge Engineering Prof. Dr. Johannes Fürnkranz

Ganze Zahlen, Ausdrücke Variablen/Konstanten

Wie entwerfe ich ein Programm?

Transkript:

Grundlagen der Programmierung Prof. H. Mössenböck 2. Einfache Programme

Grundsymbole Namen bezeichnen Variablen, Typen,... in einem Programm - bestehen aus Buchstaben, Ziffern und "_" - beginnen mit Buchstaben - beliebig lang - Groß-/Kleinschreibung signifikant Schlüsselwörter - heben Programmteile hervor - dürfen nicht als Namen verwendet werden Zahlen - ganze Zahlen (dezimal oder hexadezimal) - Gleitkommazahlen x x17 myvar my_var if while 376 0x1A5 3.14 dezimal 1*16 2 +10*16 1 +5*16 0 Gleitkommazahl Zeichenketten (Strings) - beliebige Zeichenfolgen zwischen Hochkommas - dürfen nicht über Zeilengrenzen gehen - " in der Zeichenkette wird als \" geschrieben "a simple string" "sie sagte \"Hallo\"" 2

Variablendeklarationen Jede Variable muss vor ihrer Verwendung deklariert werden - macht den Namen und den Typ der Variablen bekannt - Compiler reserviert Speicherplatz für die Variable int x; short a, b; deklariert eine Variable x vom Typ int (integer) deklariert 2 Variablen a und b vom Typ short (short integer) Ganzzahlige Typen byte 8-Bit-Zahl -2 7.. 2 7-1 (-128.. 127) short 16-Bit-Zahl -2 15.. 2 15-1 (-32768.. 32767) int 32-Bit-Zahl -2 31.. 2 31-1 (-2 147 483 648.. 2 147 483 647) long 64-Bit-Zahl -2 63.. 2 63-1 Initialisierungen int x = 100; short a = 0, b = 1; deklariert int-variable x; weist ihr den Anfangswert 100 zu deklariert 2 short-variablen a und b mit Anfangswerten 3

Konstantendeklarationen Initialisierte "Variablen", deren Wert man nicht mehr ändern kann static final int max = 100; Zweck - bessere Lesbarkeit max ist lesbarer als 100 - bessere Wartbarkeit wenn die Konstante mehrmals vorkommt und geändert werden muss, dann muss das nur an 1 Stelle erfolgen Konstantendeklaration muss auf Klassenebene stehen (s. später) 4

Kommentare Geben Erläuterungen zum Programm Zeilenendekommentare - beginnen mit // - gehen bis zum Zeilenende Klammerkommentare - durch /*... */ begrenzt - können über mehrere Zeilen gehen - dürfen nicht geschachtelt werden - oft zum "Auskommentieren" von Programmteilen int sum; // total sales int totalsales; /* Das ist ein längerer Kommentar, der über mehrere Zeilen geht */ Sinnvoll kommentieren! - alles kommentieren, was Erklärung bedarf - statt unklares Programm mit Kommentar, besser klares Programm ohne Kommentar - nicht kommentieren, was ohnehin schon im Programm steht; folgendes ist z.b. unsinnig int sum; // Summe 5

Sprache in Kommentaren und Namen Deutsch + einfacher Englisch + meist kürzer + passt besser zu den englischen Schlüsselwörtern (if, while,...) + Programm kann international verteilt werden (z.b. über das Web) Jedenfalls: Deutsch und Englisch nicht mischen!! 6

Namenswahl für Variablen und Konstanten Einige Tipps lesbare aber nicht zu lange Namen z.b. sum, width Hilfsvariablen, die man nur über kurze Strecken braucht, eher kurz: z.b. i, j, x Variablen, die man im ganzen Programm braucht, eher länger: z.b. inputtext mit Kleinbuchstaben beginnen, Worttrennung durch Großbuchstaben oder "_" z.b. inputtext, input_text Englisch oder Deutsch? 7

Zuweisungen Variable x = y + 1 ; Ausdruck 1. berechne den Ausdruck 2. speichere seinen Wert in der Variablen Bedingung: linke und rechte Seite müssen zuweisungskompatibel sein - müssen dieselben Typen haben, oder - Typ links Typ rechts Beispiele int i, j; short s; byte b; i = j; // ok: derselbe Typ Hierarchie der ganzzahligen Typen i = 300; // ok (Zahlkonstanten sind int) b = 300; // falsch: 300 passt nicht in byte long int short byte i = s; // ok s = i; // falsch Statische Typenprüfung: Compiler prüft: - dass Variablen nur erlaubte Werte enthalten - dass auf Werte nur erlaubte Operationen ausgeführt werden 8

Arithmetische Ausdrücke Vereinfachte Grammatik Expr = Operand {BinaryOperator Operand}. Operand = [UnaryOperator] ( identifier number "(" Expr ")" ). z.b.: - x + 3 * (y + 1) Binäre Operatoren + Addition - Subtraktion * Multiplikation / Division, Ergebnis ganzzahlig 5/3 = 1 (-5)/3 = -1 5/(-3) = -1 (-5)/(-3) = 1 % Modulo (Divisionsrest) 5%3 = 2 (-5)%3 = -2 5%(-3) = 2 (-5)%(-3) = -2 Unäre Operatoren + Identität (+x = x) - Vorzeichenumkehr 9

Typregeln in arithm. Ausdrücken Vorrangregeln - Punktrechnung (*, /, %) vor Strichrechnung (+, -), z.b. 2 + 3 * 4 = 14 - Operatoren auf gleicher Stufe werden von links nach rechts ausgewertet (a + b + c) - Unäre Operatoren binden stärker als binäre z.b.: -2 * 4 + 3 ergibt -5 Typregeln Operandentypen Ergebnistyp byte, short, int, long - wenn mindestens 1 Operand long ist long - sonst int Beispiele short s; int i; long x; x = x + i; i = s + 1; s = s + 1; s = (short)(s + 1); // long // int (1 ist vom Typ int) // falsch! // Typumwandlung nötig Typumwandlung (type cast) (type)expression - wandelt Typ von expression in type um - dabei kann etwas abgeschnitten werden i (short)i 10

Increment und Decrement Variablenzugriff kombiniert mit Addition/Subtraktion x++ nimmt den Wert von x und erhöht x anschließend um 1 ++x erhöht x um 1 und nimmt anschließend den erhöhten Wert x-- nimmt den Wert von x und erniedrigt x anschließend um 1 --x erniedrigt x um 1 und nimmt anschließend den erniedrigten Wert Beispiele x = 1; y = x++ * 3; // x = 2, y = 3 entspricht: y = x * 3; x = x + 1; x = 1; y = ++x * 3; // x = 2, y = 6 entspricht: x = x + 1; y = x * 3; Kann auch als eigenständige Anweisung verwendet werden x = 1; x++; // x = 2 entspricht: x = x + 1; Darf nur auf Variablen angewendet werden (nicht auf Ausdrücke) y = (x + 1)++; // falsch! 11

Multiplikation/Division mit Zweierpotenzen Mit Shift-Operationen effizient implementierbar Multiplikation x * 2 x * 4 x * 8 x * 16... x << 1 x << 2 x << 3 x << 4... x / 2 x / 4 x / 8 x / 16... Division x >> 1 x >> 2 x >> 3 x >> 4... Division nur bei positiven Zahlen durch Shift ersetzbar Beispiele x = 3; 0000 0011 x = x << 2; // 12 0000 1100 x = -3; 1111 1101 x = x << 1; // -6 1111 1010 x = 15; 0000 1111 x = x >> 2; // 3 0000 0011 12

Zuweisungsoperatoren Arithmetischen Operationen lassen sich mit Zuweisung kombinieren += -= *= /= %= Kurzform x += y; x -= y; x *= y; x /= y; x %= y; Langform x = x + y; x = x - y; x = x * y; x = x / y; x = x % y; Spart Schreibarbeit, ist aber nicht schneller als die Langform 13

Eingabe und Ausgabe von Werten Eingabe von der Tastatur Eingabe von einer Datei Programm Ausgabe auf den Bildschirm Ausgabe auf eine Datei Eingabe int x = In.readInt(); // liest eine Zahl vom Eingabestrom if (In.done())... // liefert true oder false, je nachdem, ob Lesen erfolgreich war In.open("MyFile.txt"); // öffnet Datei als neuen Eingabestrom In.close(); // schließt Datei und kehrt zum alten Eingabestrom zurück Ausgabe Out.print(x); // gibt x auf dem Ausgabestrom aus (x kann von bel. Typ sein) Out.println(x); // gibt x aus und beginnt eine neue Zeile Out.open("MyFile.txt"); // öffnet Datei als neuen Ausgabestrom Out.close(); // schließt Datei und kehrt zum alten Ausgabestrom zurück http://ssw.jku.at/javabuch 14

Besonderheiten zur Eingabe Eingabe von Tastatur Eintippen von: 12 100 füllt Lesepuffer Programm: Return-Taste int x = In.readInt(); // liest 12 int y = In.readInt(); // liest 100 int z = In.readInt(); // blockiert, bis Lesepuffer wieder gefüllt ist Ende der Eingabe: Eingabe von Strg-Z in leere Zeile Eingabe von Datei kein Lesepuffer, In.readInt() liest direkt von der Datei Ende der Eingabe wird automatisch erkannt (kein Strg-Z nötig) 15

Grundstruktur von Java-Programmen class ProgramName { public static void main (String[] arg) {... // Deklarationen... // Anweisungen } Text muss in einer Datei namens ProgramName.java stehen } Beispiel class Sample { public static void main (String[] arg) { Out.print("Geben Sie 2 Zahlen ein: "); int a = In.readInt(); int b = In.readInt(); Out.print("Summe = "); Out.println(a + b); } } Text steht in Datei Sample.java 16

Übersetzen und Ausführen mit JDK Übersetzen C:\> cd MySamples C:\MySamples> javac Sample.java wechselt ins Verzeichnis mit der Quelldatei erzeugt Datei Sample.class Ausführen C:\MySamples> java Sample Geben Sie 2 Zahlen ein: 3 4 Summe = 7 ruft main-methode der Klasse Sample auf Eingabe mit Return-Taste abschließen 17