Informatik I - Einstiegskurs

Ähnliche Dokumente
Martin Unold INFORMATIK. Geoinformatik und Vermessung

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

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

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

System.out.println("TEXT");

Java I Vorlesung Imperatives Programmieren

Martin Unold INFORMATIK. Geoinformatik und Vermessung

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

Eine JAVA Einführung ... Quellcode:... COMA Übung 3. T.Bosse. A.Griewank. Vorschau JAVA Programme Sprachen Kate

Martin Unold INFORMATIK. Geoinformatik und Vermessung

C++ Teil 2. Sven Groß. 16. Apr IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Apr / 22

Java - Schleifen. Bedingung. wiederhole. Anweisung Anweisung Anweisung. Leibniz Universität IT Services Anja Aue

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

II.1.1. Erste Schritte - 1 -

Primitive Datentypen

Vorkurs Informatik WiSe 17/18

Java: Eine kurze Einführung an Beispielen

CoMa 04. Java II. Paul Boeck. 7. Mai Humboldt Universität zu Berlin Institut für Mathematik. Paul Boeck CoMa 04 7.

Einstieg in die Informatik mit Java

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

Programmieren in C. Eine Einführung in die Programmiersprache C. Prof. Dr. Nikolaus Wulff

3. Anweisungen und Kontrollstrukturen

Arbeitsblätter für die Lehrveranstaltung OOP JAVA 1

Vorkurs Informatik WiSe 16/17

Unterlagen. CPP-Uebungen-08/

Objektorientiertes Programmieren (Java)

Umsetzung einer Klassenkarte in einer Programmiersprache

Martin Unold INFORMATIK. Geoinformatik und Vermessung

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

2 Eine einfache Programmiersprache

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = Euro ergeben.

Einstieg in die Informatik mit Java

Hello World. Javakurs 2014, 1. Vorlesung. Sebastian Schuck. basierend auf der Vorlage von Arne Kappen. wiki.freitagsrunde.org. 3.

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2

2 Eine einfache Programmiersprache

Einstieg in die Informatik mit Java

II.1.1. Erste Schritte - 1 -

FACHHOCHSCHULE AUGSBURG Hochschule für Technik, Wirtschaft und Gestaltung

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

Java-Applikationen (Java-Programme)

7. Einführung in C++ Programmieren / Algorithmen und Datenstrukturen 1 Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt

Imperative Programmierung in Java. Algorithmen und Datenstrukturen II 1

Tag 4 Repetitorium Informatik (Java)

Aufgabe 1.90: Ein Geschäft gibt ihren Kunden unterschiedliche Rabatte. Schreiben ein Programm, das folgende Rabattklassen vorsieht:

Klassenvariablen, Klassenmethoden

Einführung in die Programmierung mit Java

Java. CoMa-Übung II TU Berlin. CoMa-Übung II (TU Berlin) Java / 28

Erster Kontakt mit Java und Pseudocode

Tag 5. Repetitorium Informatik (Java) Dozent: Marius Kamp Lehrstuhl für Informatik 2 (Programmiersysteme)

Algorithmen implementieren. Implementieren von Algorithmen

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

Martin Unold INFORMATIK. Geoinformatik und Vermessung

1 Aufgaben 1.1 Objektorientiert: ("extended-hamster") Sammel-Hamster

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

1 Aufgaben 1.1 Umgebungsvariable setzen: CLASSPATH

Die einfachsten Anweisungen

Einführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 1 - Variablen und Kontrollstrukturen

Programmieren in C. Eine Einführung in die Programmiersprache C. Prof. Dr. Nikolaus Wulff

Übung 1: Installation + Test von Eclipse. Übung 2: Hello World

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

Projekt 3 Variablen und Operatoren

Vorkurs: Java-Einführung

Java 8. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Oktober 2014 JAV8

Programmierung mit Java

Einführung in die Programmierung für NF. Algorithmen, Datentypen und Syntax

Programmiervorkurs Einführung in Java Tag 1

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

Welche Informatik-Kenntnisse bringen Sie mit?

Elementare Konzepte von

Grundlagen der Programmierung Teil1 Einheit III Okt. 2010

pue13 January 28, 2017

Vorlesung Programmieren

Übungsblatt 1. Java Vorkurs (WS 2017)

Kurzeinführung in C99

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

Wie entwerfe ich ein Programm?

Übungen zur Vorlesung Wissenschaftliches Rechnen I. Grundelemente von Java. Eine Anweisung. wird mit dem Wertzuweisungsoperator = geschrieben.

Grundlagen der Programmierung

Java Übung. Übung 2. Werner Gaulke. 19. April Universität Duisburg-Essen Kommedia, Übung EinPro SS06, Einführung in Java - Übung.

C# - Einführung in die Programmiersprache Bedingte Anweisungen und Schleifen

Eine kleine Befehlssammlung für Java Teil1

Primitive Datentypen, Eingaben, Kontrollstrukturen und Methodendeklaration

Variablen, Konstanten und Datentypen

Repetitorium Informatik (Java)

Einführung in die Programmierung mit VBA

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

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

Vorlesung Programmieren

C++ - Einführung in die Programmiersprache Schleifen

Java Cheatsheet. Mehrzeiliger Kommentar (beginnt mit /* und endet mit */)

Javakurs für Anfänger

EINFÜHRUNG IN DIE PROGRAMMIERUNG

1 Klassen anlegen und Objekte erzeugen

Einstieg in die Informatik mit Java

Einführung in die C-Programmierung

Programme erstellen in Java

Java Einführung Programmcode

Intensivübung zu Algorithmen und Datenstrukturen

Transkript:

Informatik I - Einstiegskurs Dr. Henrik Brosenne Georg-August-Universität Göttingen Institut für Informatik Basiert auf dem Einstiegskurs im Wintersemester 2009/10 von Markus Osterhoff Wintersemester 2012/13

Inhalt Einstiegskurs Programmiersprachen Bedingungen Schleifen Compilermeldungen, typische Fehler

Programmiersprachen Programme sagen dem Computer, was er tun soll. Aber wie sagt es der Benutzer? Beispiel Star Trek IV, Zurück in die Gegenwart Scott: Computer! Computer? Hallo Computer!... Tastatur, wie rückständig!

Editor Compiler Ausführung Editor Der Quellcode wird vom Programmierer in einem Editor geschrieben und als Datei (datei.java) abgespeichert. Compiler Der Quellcode wird vom Compiler (javac) in einen Bytecode (datei.class) übersetzt, der weitgehend betriebssystem- und plattformunabhängig ist, aber noch kein maschinenverständliches Programm. Java Virtual Machine (JVM) Der Bytecode kann mit der JVM java ausgeführt werden. Das Programm wird zur Laufzeit interpretiert und so auf der jeweiligen Maschine (Prozessor + Betriebssystem) lauffähig.

Editor Compiler Ausführung $ cat > Hallo.java javac Hallo.java Bytecode file: Hallo.class 0000000010011110100011111 0110110110000111010110010 1010101101110100001101111 1110000111101000010001001 1101000111010101110111011 0000011011010110111110100 0000000000010110010011010 1010000111101111010110011 1000110111000011011110000 Quellcode file: Hallo.java class Hallo { public static void main(string args[]) { } } System.out.println( "Hallo Welt!" ); java Hallo Grundgerüst Ausführung

HelloWorld $ cat -n HelloWorld.java 1 class HelloWorld { 2 public static void main ( String [] args ) { 3 System. out. println (" Hallo Einstiegswelt!"); 4 } 5 } $ javac HelloWorld.java $ java HelloWorld Hallo Einstiegswelt!

HelloWorld 1 class HelloWorld { 2 public static void main ( String [] args ) { 3 System. out. println (" Hallo Einstiegswelt!"); 4 } 5 } class HelloWorld {... } eine Klasse mit dem Namen HelloWorld wird erstellt

HelloWorld 1 class HelloWorld { 2 public static void main ( String [] args ) { 3 System. out. println (" Hallo Einstiegswelt!"); 4 } 5 } public static void main (...) {... } Dies ist das Hauptprogramm, der Einstiegspunkt. Details zu dem unverständlichen Blah-Blah in Info I.

HelloWorld 1 class HelloWorld { 2 public static void main ( String [] args ) { 3 System. out. println (" Hallo Einstiegswelt!"); 4 } 5 } System.out.println("Hallo"); Eine Anweisung: Eine bestimmte Funktion, System.out.println, wird aufgerufen. Ergebnis: Der Text wird ausgegeben.

HelloWorld 1 class HelloWorld { 2 public static void main ( String [] args ) { 3 System. out. println (" Hallo Einstiegswelt!"); 4 } 5 } "Hallo Einstiegswelt!" Dies ist ein String-Literal, ein im Quellcode hart eincodierter Text.

HelloWorld 1 class HelloWorld { 2 public static void main ( String [] args ) { 3 System. out. println (" Hallo Einstiegswelt!"); 4 } 5 } "Hallo Einstiegswelt!" Strings, Zeichenketten, stehen in Anführungszeichen.

HelloWorld 1 class HelloWorld { 2 public static void main ( String [] args ) { 3 System. out. println (" Hallo Einstiegswelt!"); 4 } 5 } System.out.println(... ) Dieser Aufruf einer Java-Bibliothek kann Texte und Zahlen ausgeben.

HalloKommentar 1 class HalloKommentar { 2 /* Hier beginnt das Hauptprogramm */ 3 public static void main ( String [] args ) { 4 System. out. println (" Hallo Einstiegswelt!"); 5 // Wir haben eine Meldung ausgegeben 6 } 7 /* Hier endet das Hauptprogramm */ 8 } $ javac HalloKommentar.java $ java HalloKommentar Hallo Kommentar! Zwischen /* und */ steht ein Kommentar; dieser ist für den Menschen und wird vom Compiler ignoriert. Alles ab // bis zum Zeilenende ist ebenfalls ein Kommentar.

HalloKommentar Kommentare dienen dem Programmierer, sich in seinem Wust von Programmzeilen zurechtzufinden, dienen anderen Programmierern, zu verstehen, was in einem Programm passiert. Erfahrungswert. Nach drei Wochen hat man alles über sein Programm vergessen, egal wie gut man es mal kannte. Möglichst gute Variablennamen. Möglichst aussagekräftig kommentieren.

HalloGrafZahl 1 class HalloGrafZahl { 2 public static void main ( String [] args ) { 3 System. out. println (" Hallo Graf Zahl!"); 4 System. out. println (1337 + 42); 5 } 6 } $ javac HalloGrafZahl.java $ java HalloGrafZahl Hallo Graf Zahl! 1379

HalloVariable 1 class HalloVariable { 2 public static void main ( String [] args ) { 3 int sieben = 7; 4 System. out. println ( sieben ); 5 } 6 } $ javac HalloVariable.java $ java HalloVariable 7 int sieben = 7; Eine Variable vom Typ int (Integer = Ganzzahl) wird angelegt und mit dem Wert 7 initialisiert.

HalloFormel 1 class HalloFormel { 2 public static void main ( String [] args ) { 3 double pi = 3.14159; 4 int fuenf = 5; 5 double umfang ; 6 7 umfang = 2 * pi * fuenf ; 8 System. out. println ( " Umfang = " + umfang ); 9 } 10 } $ javac HalloFormel.java $ java HalloFormel Umfang = 31.4159 double pi = 3.14159; Eine Variable vom Typ double (Gleitkommazahl) wird angelegt und mit dem Wert 3.14159 initialisiert. double umfang; Eine Variable vom Typ double (Gleitkommazahl) wird angelegt.

HalloFormel 1 class HalloFormel { 2 public static void main ( String [] args ) { 3 double pi = 3.14159; 4 int fuenf = 5; 5 double umfang ; 6 7 umfang = 2 * pi * fuenf ; 8 System. out. println ( " Umfang = " + umfang ); 9 } 10 } $ javac HalloFormel.java $ java HalloFormel Umfang = 31.4159 umfang = 2 * pi * fuenf; Die Berechnung wird ausgeführt, das Ergebnis wird in der Variablen umfang gespeichert.

HalloFormel 1 class HalloFormel { 2 public static void main ( String [] args ) { 3 double pi = 3.14159; 4 int fuenf = 5; 5 double umfang ; 6 7 umfang = 2 * pi * fuenf ; 8 System. out. println ( " Umfang = " + umfang ); 9 } 10 } $ javac HalloFormel.java $ java HalloFormel Umfang = 31.4159 System.out.println("Umfang" + umfang); Die Addition von einem String mit einer Zahl ist ein String. Die Zahl wird als Zeichenkette im Zehnersystem dargestellt.

Vorsicht, Fallen! Java achtet auf Groß- und Kleinschreibung Linux achtet auf Groß- und Kleinschreibung $ javac programmdatei.java Endung! $ java klassenname keine Endung!

Konzepte: Variablen, Datentypen Ein Programm, in dem alle Zahlen fest einprogrammiert sind, ist langweilig. Der Benutzer muss Eingaben machen können / es müssen Dateien eingelesen werden können. Zwischenergebnisse müssen gespeichert werden. Variablen benannte Speicherbereiche Es gibt unterschiedliche Arten von Zahlen Zum Beispiel ganze Zahlen (int) und Gleitkommazahlen (double). Es gibt auch Zeichenketten (String) und Boolsche Ausdrücke (bool: true, false). Datentypen

Konstanten int: Ganze Zahlen, dezimale Schreibweise, keine Anführungszeichen: 1, 42, -17 double: Reelle zahlen, Punkt statt Komma: 3.14159, -17.5, 0.0 String: Zeichenketten zwischen Anführungszeichen: "Hallo Welt", "3.14159", "" Der Wert steht zur Compile-Zeit fest.

Variablen Deklaration: double PI; Zuweisung: PI = 3.14159; Deklaration + Zuweisung (Initialisierung): double E = 2.718; Bei einem String: String grussworte = "Liebe Programmierer";

Variablen Und was kann man damit machen? Ausgeben: String grussworte = "Liebe Programmierer"; System.out.println(grussworte); Neu zuweisen: int ganzezahl = 3; ganzezahl = 42; Rechnen!

Operatoren Rechnen! Java kennt natürlich die vier Grundrechenarten : int b, c, summe, differenz, produkt, quotient; oder alternativ: double b, c, summe, differenz, produkt, quotient; summe = b+c; differenz = b-c; produkt = b*c; quotient = b/c;

Operatoren summe = b+c; differenz = b-c; produkt = b*c; quotient = b/c; Der Wert, der aktuell in der Variablen b gespeichert ist, wird abgerufen. Der Wert, der aktuell in der Variablen c gespeichert ist, wird abgerufen. Die mathematische Operation wird ausgeführt. Das Ergebnis wird in der Variablen (z.b. summe) gespeichert der Variablen wird ein neuer Wert zugewiesen.

Der Zuweisungsoperator int b = 3, c = 7; int summe = 11; summe = b+c; Der Zuweisungsoperator ist kein mathematisches Gleichheitszeichen! Es wird zugewiesen; der Wert von summe spielt keine Rolle! Dies ist kein Vergleich!

Inkrement-/Dekrementoperatoren int i = 1; i = i+1; i++; In Zählschleifen wird eine Variable bei jedem Durchlauf um 1 erhöht. Dies ist relativ viel zu schreiben, kommt sehr häufig vor es gibt eine abkürzende Schreibweise, die (fast) jeder Programmierer versteht: i++ Der Wert der Variablen i wird ausgelesen; es wird 1 addiert; das Ergebnis wird der Variablen i zugewiesen. Analog: i--

Operatoren mit Strings String text = "Das Ergebnis lautet " double radius = 5; double umfang = 2*3.14159*radius; System.out.println( text + umfang ); Die Addition von Zeichenketten ist die Konkatenation (das Aneinanderhängen) Die Addition von Zeichenketten mit Zahlen ist das Anhängen der dezimalen Schreibweise der Zahl an den String.

Inhalt Einstiegskurs Programmiersprachen Bedingungen Schleifen Compilermeldungen, typische Fehler

Bedingungen Java-Programme werden Anweisung für Anweisung ausgeführt: tue dies; tue das; nun dies; mache jenes; rechne aus; gib aus; Man braucht Kontrollstrukturen Alternativen (Abzweigungen, Entscheidungen) Wiederholungen (Schleifen)

Alternativen Alternativen tue dies; tue das; nun dies; WENN diesebedingungerfülltist: tuedieses; SONST: tuejenes; mache jenes; rechne aus; gib aus;

Alternativen { tue dies hier; und das noch; und jenes; } tue dies; tue das; tue jenes; if ( x == 1 ) else { oder halt dies; und dann das; und schließlich mich; } und immer das hier; und dann auch noch dieses; höre auf;

Alternativen Alternative if -- else 1 class ifelsetest { 2 public static void main () { 3 int a = 3; 4 int b = 7; 5 6 if (a == b) 7 System. out. println ("a und b sind gleich "); 8 else 9 System. out. println ("a und b sind anders "); 10 } 11 } Nur wenn die Bedingung erfüllt (== true) ist, wird die nächste Anweisung ausgeführt. Ist die Bedingung jedoch nicht erfüllt (== false), wird die Anweisung übersprungen. Stattdessen wird die Anweisung hinter else ausgeführt.

Alternativen Der else-zweig ist optional: 1 class iftest { 2 public static void main () { 3 int m = 3; 4 int n = 7; 5 6 if (m < n) 7 System. out. println ("m ist kleiner als n."); 8 } 9 }

Nach if bzw. else wird genau eine Anweisung ausgeführt. Ist das nicht meistens zu wenig? Ein Block von Anweisungen ist eine Anweisung. Mehrere Anweisungen lassen sich zu einem Block zusammenfassen.

Alternativen Mehrere Anweisungen lassen sich zu einem Block zusammenfassen: 1 class Block { 2 public static void main ( String [] args ) { 3 if ( 1 == 2 ) { 4 System. out. println ("1 ist gleich 2."); 5 System. out. println (" Das ist falsch."); 6 } 7 else { 8 System. out. println ("1 ist ungleich 2."); 9 System. out. println (" Das ist richtig."); 10 } 11 } 12 } $ javac block.java ; java Block 1 ist ungleich 2. Das ist richtig. Ein Block wird durch geschweifte Klammern definiert. Auch die Klassendefinition und die Main-Funktion sind ein Block!

Der Vergleichsoperator Erinnerung: Der Zuweisungsoperator, = int b = 3, c = 7; int summe = 11; summe = b+c; Die Zuweisung wird ausgeführt, es findet kein Vergleich statt. Neu: Der Vergleichsoperator, == if ( summe == b+c )...else...

Inhalt Einstiegskurs Programmiersprachen Bedingungen Schleifen Compilermeldungen, typische Fehler

Konzepte: Schleifen Eine Alternativen kann die eine oder die andere Anweisung einmal ausführen. Eine Schleife kann eine Anweisung (oder einen Block von Anweisungen) mehrmals ausführen. Beispiel 1 class Nullkommaeins { 2 public static void main ( String [] args ) { 3 double nke = 0.1; 4 double sum = 0.0; 5 int i; 6 7 for (i =0; i <10; i ++) 8 sum = sum + nke ; 9 10 System. out. println (" Summe : " + sum ); 11 } 12 }

Konzepte: Schleifen vor der Schleife Initialisierung Schleifen-Bedingung ; for ( i=0 ; i<10 ; i++ ) System.out.println( i ); ; Erhöhung des Zählers Schleifen-Durchlauf nach der Schleife

Konzepte: Schleifen for ( i=0 ; i<10 ; i++ ) anweisung; for wird typischerweise für Zählschleifen verwendet: i=0 ein Index (Zählvariable) wird initialisiert i<10 solange eine Bedingung erfüllt ist, wird anweisung; die Anweisung (oder der Block) wiederholt i++ nach jedem Schleifendurchlauf (vor dem nächsten Test der Bedingung) wird der Wert von i um 1 erhöht

Schleifen: Beispiele for ( i=0 ; i<10 ; i++ ) System.out.println( i ); Die Zahlen von 0 bis 9 werden zeilenweise ausgegeben.

Schleifen: Beispiele for ( i=10 ; i>0 ; i-- ) System.out.println( i ); Die Zahlen von 10 bis 1 werden zeilenweise ausgegeben.

Schleifen: Beispiele for ( i=10 ; i>0 ; i-- ) System.out.println( 2*i + 1 ); Die Zahlen von 21 bis 3 werden in Zweierschritten zeilenweise ausgegeben.

Schleifen: Beispiele for ( i=1 ; i<11 ; i++ ) System.out.println( i + " " + 2*i ); Es werden immer zwei Zahlen nebeneinander ausgegeben, die erste zählt von 1 bis 10 die zweite zählt in Zweierschritten von 2 bis 20.

weitere Schleifen while (bedingung)... Ähnlich zu for, aber nur ein Argument do... while (bedingung); Ähnlich zu while, aber Test nach dem Durchlauf for (String s: args)... Ein Iterator über ein Feld von Objekten

Inhalt Einstiegskurs Programmiersprachen Bedingungen Schleifen Compilermeldungen, typische Fehler

Compilermeldungen, typische Fehler KLASSE.java:1: class, interface, or enum expected CLASS KLASSE { class wird klein geschrieben

Compilermeldungen, typische Fehler KLASSE.java:2: ; expected PUBLIC STATIC VOID main(string[] args) { public static void wird klein geschrieben

Compilermeldungen, typische Fehler KLASSE.java:6: not a statement for (i=0, i<13; i++) Semikolon, kein Komma

Compilermeldungen, typische Fehler KLASSE.java:7: not a statement for (j==i; j>0; j--) Zuweisungsoperator!

Compilermeldungen, typische Fehler KLASSE.java:13: ) expected System.out.println("Ergebnis: " result); KLASSE.java:13: illegal start of expression System.out.println("Ergebnis: " result); Konkatenation mit +

Compilermeldungen, typische Fehler 1 public static int xxx ( int m, int n) { 2 if (m == 0) 3 return 1; 4 if (n == 0) 5 return 2; 6 if (m!= 0 && n!= 0) 7 return 3; 8 } fehler2.java:8: missing return statement javac erkennt nicht die Logik: das dritte if ist automatisch erfüllt