Sitzung: Jeden Freitag in der Vorlesungszeit ab 16 Uhr c. t. im MAR 0.005. In der vorlesungsfreien Zeit unregelmäßig (Jemensch da?). Macht mit!

Martin Häcker/Java Kurs/Tag 1

<- Zurück zur Übersicht

LE 1: Hello, World!

Vortragende: Robert Lubkoll, Felix Schwarz

Organisatorisches

  • Was Passiert
  • Wann passiert was
  • Wie passierts
  • Vorstellung
  • Was ist das genau
  • Wer sind wir: Freiwillig, Umsonst
  • Ziel des Kurses
  • Was sie am Ende können sollen
  • Gruppeneinteilung
    • am Ende der ersten Vorlesung
    • Vorher per e-mail

Jemand vom Rechnerbetrieb soll bitte da sein, damit wir Login-Probleme lösen können

weitere Ideen

  • Lernende einbeziehen durch Befragung mit Zetteln, was sie sich vorstellen unter "Programmieren"
  • Kommentare //, /* */, /** */
  • String: Vormerken, das man hier später klar macht das das auch Objekte und daher Referenzen sind - erstmal ists aber egal, da sie eh Immutable sind


Inhalt (Vorgehen, Beispiele, Ideen)

Java

Wie fangen wir Java an

  • Hello world

grobe Struktur der "Umgebung": keine .sign/.impl Datei sondern nur eine .java

Bildchen für Was ist Was? Syntax zerlegen. system.out.println();

  • compilieren:

Was passiert da, wieso erst Compilieren, dann ausführen? javac java

was für Fehler können auftreten? .class Klasse heißt anders als Datei Compiler falsch aufgerufen

Entscheiden: Zuerst in println rechnen oder zuerst Variablen einführen. Semikolons,

  • Variablentyp (int) -> Syntax der Deklaration

Wie darf ein Variablenname aussehen? (Buchstaben,Zahlen, _ )

  • Zuweisung -> Syntax

man kann Zahlen > 32 direkt eingeben !

  • Werte und operatoren +,*,- -> Syntax
int zahl1 = 7;
int zahl2 = 42;
int ergebnis = zahl1 + zahl2;
System.out.println(ergebnis);

Zuweisung nach Deklaration. Variableninhalte ändern sich durch Zuweisung. Zeigen mit sysout.

Das selbe GANZ kurz nochmal mit anderen Operatoren.

Sauberes Programmieren

  • Variablen und Identifier-Namen
    • Variablendeklaration - Namen vergeben für Dinge, die man berechnet hat!


String deklarieren mit "bla" , kein Anführungszeichen im "..."

verknüpfen von Strings (+)

komplizierteres Sysout an selbem Programm

  • nicht explizit einführen, sondern nur im If mit Fallunterscheidung

erweitertes Miniprogramm zur Fallunterscheidung

  • <, >, ==, <=, >= Operatoren

if mit Operatoren und anderen Variablen

  • if -> Syntax

Minniprogramm zur Fallunterscheidung

boolean auwahl = true;
if(auswahl) then {
 System.out.println("auswahl war true");
else{
 System.out.println("auswahl war false");
}
  • Blöcke/Gültigkeit von Variablen
  • Kompliziertere Bedingungen (&&, ||, !)
  • (double) mit Punkt als Trennzeichen.
  • Division mit / und das bei int gerundet wird
  • Kommentare

Fehlermeldungen lesen und verstehen

  • Klammer vergessen
  • Semikolon vergessen
  • Klasse heißt anders als Datei
  • Compiler falsch aufgerufen

Übungsaufgaben

Aufgaben

Handout Kommandohilfe

Zusammenfassung des Vortrages

  • cd üben (ist drin)
  • Hello World eintippen (kate, gedit, nano, ..) (ist drin)
  • javac / java benutzen (ist drin)
  • Ergebnisse sehen (ist drin)
  • Einige Expressions angeben und die Teilnehmer sollen feststellen, was die ausgeben/berechnen würden
  • Das gleiche dann nochmal mit if/else
  • Einen mathematischen Ausdruck in Java übersetzen
  • Fehler einbauen, Fehler finden (laufzeit/compilezeit)
  • Beispiele für Anfängeraufgaben

Zusätzliche Vorschläge

Folgendes sollte in der VL oder Übung angesprochen werden:

-- Robert Buchholz 01:17, 17. Mär 2006 (CET)

LE 2: Methoden und Schleifen (RobertB und Sven)

LE2 Übung mit Zusatzaufgaben und Musterlösung sind leider nichtmehr verfuegbar.

TODO:

  • LE1 aufgabe benutzen. (delayed)

Benötigete Zeiten:

<noch niemand hats probiert?>

Inhalt

Methodik

  • Wichtigkeit, dass man Programme in verständliche und sinnvolle Teile unterteilt:
  • Quelltextverkürzung durch schleifen
    • nicht minimierung auf kosten der verständlichkeit
    • was ist aufgabe des entwicklers?
    • und was ist aufgabe des compilers? (vllt. auch nicht?)
    • evtl. ist eine eigene methode sinnvoller/verständlicher?

Java

  • Typen
    • Arrays
      • warum, wie und probleme
    • void
    • char?
  • Methoden:
    • Namen
    • Aufruf
    • Parameter und Rückgabe -> Call by Value
    • main
    • return
    • Nachtrag Datenstrukturen: void
    • Beispiel: System.out.println()
  • Schleifen
    • Blöcke
    • while
      • Formulieren von Bedingungen
      • Schleife als zweite Lösung für duplikation von Code
      • Diskussion Schleife <-> Rekursion
  • Anwendung von Schleifen
  • Rekursion <-> Schleifen (Beispiel)
  • Warum/wann Schleifen?
    • als Alternative zu Akkumulator Parametern (Vergleich zu OPAL)
    • wenn die Anzahl der Durchläufe nicht konstant ist
    • for schleife, wann und wozu, einfache beispiele: for(int i = 0; i < 3; i++)
  • Gute Namen
    • Abstrakter Gedanke: Für den Computer ists wurscht, wie man das was man meint aufschreibt. Wir Menschen dagegen lassen und leicht verwirren
    • abwägen zwischen
      • aussagekraft des namens
      • häufigkeit im code
      • kommentar zu variable(nnamen)
      • länge des namens
  • Testen
  • was ist testen?
    • überprüfung von einigen randwerten => nachdenken ist erforderlich um interessante fälle zu finden
    • testen ist nicht verifizieren
  • wie in java?
    • System.out.println(..);
    • auskommentieren und schrittweises testen
  • was wird getestet?
    • ausgabe von arrays komplex
    • ausgabe von werten mit text verknüpfen
    • Variablen haben unterschiedliche Werte während das Program läuft!

assertTrue-Methode selber schreiben

Übungsaufgaben

  • Methoden definieren, die bestimmte Eigenschaften haben
  • Beispiele dann Abtippen und ausprobieren
  • Sie sollen Nachfragen, wenn sie was anderes hatten (oder sowas)
  • Verschiedene Eingabewerte
  • erste Endlosschleife
  • Fehler für die eingeführten elemente

<- Zurück zur Übersicht