<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki.stageing.freitagsrunde.org//api.php?action=feedcontributions&amp;feedformat=atom&amp;user=84.191.230.14</id>
	<title>FreitagsrundenWiki - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.stageing.freitagsrunde.org//api.php?action=feedcontributions&amp;feedformat=atom&amp;user=84.191.230.14"/>
	<link rel="alternate" type="text/html" href="wiki.stageing.freitagsrunde.org//Spezial:Beitr%C3%A4ge/84.191.230.14"/>
	<updated>2026-10-29T15:15:32Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.45.6</generator>
	<entry>
		<id>wiki.stageing.freitagsrunde.org//index.php?title=Martin_H%C3%A4cker/Java_Kurs/Tag_1&amp;diff=6693</id>
		<title>Martin Häcker/Java Kurs/Tag 1</title>
		<link rel="alternate" type="text/html" href="wiki.stageing.freitagsrunde.org//index.php?title=Martin_H%C3%A4cker/Java_Kurs/Tag_1&amp;diff=6693"/>
		<updated>2006-03-01T10:07:48Z</updated>

		<summary type="html">&lt;p&gt;84.191.230.14: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= LE 1: Hello, World! =&lt;br /&gt;
&lt;br /&gt;
== Organisatorisches ==&lt;br /&gt;
* Was Passiert&lt;br /&gt;
* Wann passiert was&lt;br /&gt;
* Wie passierts&lt;br /&gt;
* Vorstellung&lt;br /&gt;
* Was ist das genau&lt;br /&gt;
* Wer sind wir: Freiwillig, Umsonst&lt;br /&gt;
* Ziel des Kurses&lt;br /&gt;
* Was sie am Ende können sollen&lt;br /&gt;
* Gruppeneinteilung&lt;br /&gt;
** am Ende der ersten Vorlesung&lt;br /&gt;
** Vorher per e-mail&lt;br /&gt;
&#039;&#039;&#039;Jemand vom Rechnerbetrieb soll bitte da sein, damit wir Login-Probleme lösen können&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Inhalt (Vorgehen, Beispiele, Ideen) ==&lt;br /&gt;
=== Methodik ===&lt;br /&gt;
&lt;br /&gt;
Was ist &#039;&#039;&#039;Programmieren?&#039;&#039;&#039;&lt;br /&gt;
* imperativ (prozedural) vs. funktionales Programmieren&lt;br /&gt;
** relation problem &amp;lt;-&amp;gt; lösung / kochrezept&lt;br /&gt;
* Zustandsmaschine&lt;br /&gt;
* Einführung nach [http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-9.html#%25_chap_1 SICP Kapitel 1] (bis &amp;quot;Programming in Lisp&amp;quot;)&lt;br /&gt;
** &#039;&#039;Damit ist die Philosophie von Programmieren gemeint&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Drei Dinge, die wichtig sind für Programmierer:&lt;br /&gt;
* Primitive Ausdrücke&lt;br /&gt;
* Kombinationsmöglichkeiten&lt;br /&gt;
* Abstraktionsmöglichkeiten&lt;br /&gt;
&lt;br /&gt;
=== Java ===&lt;br /&gt;
==== Wie fangen wir Java an ====&lt;br /&gt;
* Werte und operatoren +,*,/,-, % (?)&lt;br /&gt;
* Wenige Variablentypen int, String, (double)&lt;br /&gt;
* Zuweisung&lt;br /&gt;
* &amp;lt;, &amp;gt;, ==, &amp;lt;=, &amp;gt;=&lt;br /&gt;
* if&lt;br /&gt;
&lt;br /&gt;
* Methoden vorgeben: Input, Output&lt;br /&gt;
&lt;br /&gt;
* Was passiert da, wieso erst Compilieren, dann ausführen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Alter Plan ====&lt;br /&gt;
&#039;&#039;&#039;Aufbau eines Java-Programms&#039;&#039;&#039;&lt;br /&gt;
* Variablen und Identifier-Namen&lt;br /&gt;
** Variablendeklaration - Namen vergeben für Dinge, die man berechnet hat!&lt;br /&gt;
** Lokale Namen und wieso: (vielleicht?) [http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-4.html#%25_toc_%25_sec_Temp_41]&lt;br /&gt;
* Literale&lt;br /&gt;
* Datenstrukturen und Typen:&lt;br /&gt;
** Primitive &lt;br /&gt;
** String: einführen mit dem Hinweis, dass bei den Primitiven alles normal sei, während bei String &amp;quot;alles anders&amp;quot; ist. Dann später diesen Unterschied aufgreifen. (String ist ja nun &amp;quot;immutable&amp;quot;, trotzdem?)&lt;br /&gt;
** Arrays (?)&lt;br /&gt;
&lt;br /&gt;
Ein Beispiel bringen und daran erklären, was primitive Ausdrücke, Kombinationen und Abstraktionsmöglichkeiten sind (evtl. langsam entwickeln):&lt;br /&gt;
 class Test {&lt;br /&gt;
 	static void print(double aNumber) {&lt;br /&gt;
 		System.out.println(&amp;quot;&amp;gt; &amp;quot; + aNumber);&lt;br /&gt;
 	}&lt;br /&gt;
 &lt;br /&gt;
 	public static void main(String [] arguments) {&lt;br /&gt;
 		print(3 * 4);&lt;br /&gt;
 		print(7 + 23 * 8 - 3);&lt;br /&gt;
 		// ....&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Zuweisung, einfache Operatoren (+, *, &amp;lt;=, %)&lt;br /&gt;
* ++ oder += (?)&lt;br /&gt;
* Kommentare&lt;br /&gt;
&lt;br /&gt;
* if, else&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;javac&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Methodik ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Fehlermeldungen lesen und verstehen&#039;&#039;&#039;&lt;br /&gt;
* Klammer vergessen&lt;br /&gt;
* Semikolon vergessen&lt;br /&gt;
* Klasse heißt anders als Datei&lt;br /&gt;
* Compiler falsch aufgerufen&lt;br /&gt;
&lt;br /&gt;
== Übungsaufgaben ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;cd&#039;&#039; üben&lt;br /&gt;
* Hello World eintippen (kate, gedit, nano, ..)&lt;br /&gt;
* javac / java benutzen&lt;br /&gt;
* Ergebnisse sehen&lt;br /&gt;
* Fehler einbauen, Fehler finden (laufzeit/compilezeit)&lt;br /&gt;
* Einige Expressions angeben und die Teilnehmer sollen feststellen, was die ausgeben/berechnen würden&lt;br /&gt;
* Das gleiche dann nochmal mit if/else&lt;br /&gt;
* Einen mathematischen Ausdruck in Java übersetzen&lt;br /&gt;
&lt;br /&gt;
= LE 2: Standardkonstrukte in Java (Robert und Sven) =&lt;br /&gt;
Übungs-Aufgaben inklusive Vorgaben und Musterlösung [http://user.cs.tu-berlin.de/~svens/files/le2_ue.tar.gz LE2UEB]&lt;br /&gt;
== Inhalt ==&lt;br /&gt;
=== Methodik ===&lt;br /&gt;
* Wichtigkeit, dass man Programme in verständliche und sinnvolle Teile unterteilt: [http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-10.html#%25_sec_1.1.8 Procedures as Black-Box Abstractions]&lt;br /&gt;
&lt;br /&gt;
=== Java ===&lt;br /&gt;
* &#039;&#039;&#039;Typen&#039;&#039;&#039;&lt;br /&gt;
** boolean&lt;br /&gt;
** was wir im ersten Teil weggelassen haben?&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Methoden&#039;&#039;&#039;:&lt;br /&gt;
** Namend&lt;br /&gt;
** Aufruf&lt;br /&gt;
** Parameter und Rückgabe -&amp;gt; Call by Value&lt;br /&gt;
** main&lt;br /&gt;
** return&lt;br /&gt;
** Nachtrag Datenstrukturen: void&lt;br /&gt;
** Beispiel: System.out.println()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Blöcke&#039;&#039;&#039;&lt;br /&gt;
** if-else&lt;br /&gt;
*** Formulieren von Bedingungen für if, while&lt;br /&gt;
** while&lt;br /&gt;
*** Schleife als zweite Lösung für duplikation von Code&lt;br /&gt;
*** Diskussion Schleife &amp;lt;-&amp;gt; Rekursion???&lt;br /&gt;
** Weitere Schleifenkonstrukte später - gar nicht?&lt;br /&gt;
*** for&lt;br /&gt;
*** continue&lt;br /&gt;
*** break&lt;br /&gt;
&lt;br /&gt;
* Anwendung von Schleifen&lt;br /&gt;
* Rekursion &amp;lt;-&amp;gt; Schleifen (Beispiel)&lt;br /&gt;
* Warum/wann Schleifen?&lt;br /&gt;
** als Alternative zu Akkumulator Parametern (Vergleich zu OPAL)&lt;br /&gt;
** wenn die Anzahl der Durchläufe nicht konstant ist&lt;br /&gt;
** als Luxus - Bsp: for( int i = 0; i &amp;lt; 3; i++ )&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Gute Namen&#039;&#039;&#039;&lt;br /&gt;
** Abstrakter Gedanke: Für den Computer ists wurscht, wie man das was man meint aufschreibt. Wir Menschen dagegen sind von sowaas verwirrt:&lt;br /&gt;
 class _{static long _&lt;br /&gt;
 (long __,long  ___) {&lt;br /&gt;
 return __==0 ?___+ 1:&lt;br /&gt;
 ___==0?_(__-1,1):_(__&lt;br /&gt;
 -1,_(__, ___-1)) ;  }&lt;br /&gt;
 static  {int _=2 ,___&lt;br /&gt;
 = 2;System.out.print(&lt;br /&gt;
 &amp;quot;a(&amp;quot;+_+&#039;,&#039;+___+ &amp;quot;)=&amp;quot;+&lt;br /&gt;
 _ (_,  ___) ) ;System&lt;br /&gt;
 .exit(1);}}//(C) Ulli&lt;br /&gt;
&lt;br /&gt;
Wir können uns aber helfen indem wir das so schreiben:&lt;br /&gt;
 /** @see: http://de.wikipedia.org/wiki/Ackermann-Funktion */&lt;br /&gt;
 class AckermannFunctionDemo {&lt;br /&gt;
 	static long ackermann(long n, long  m) {&lt;br /&gt;
 		if (n == 0) {&lt;br /&gt;
 			return m + 1;&lt;br /&gt;
 		}&lt;br /&gt;
 		else if (m == 0) {&lt;br /&gt;
 			return ackermann(n - 1, 1)&lt;br /&gt;
 		}&lt;br /&gt;
 		else {&lt;br /&gt;
 			return ackermann(n - 1, ackermann(n, m - 1));&lt;br /&gt;
 		}&lt;br /&gt;
 	}&lt;br /&gt;
 	static void main {&lt;br /&gt;
 		int n = 2, m = 2;&lt;br /&gt;
 		System.out.print(&amp;quot;ackermann(&amp;quot; + n + &#039;,&#039; + m + &amp;quot;) = &amp;quot; &lt;br /&gt;
 			+ ackermann(n, m));&lt;br /&gt;
 		System.exit(1);&lt;br /&gt;
 	}&lt;br /&gt;
 }//(C) Ulli + Martin&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Testen: wie testet man ob und wie etwas geht? (Java Ausprobieren)&lt;br /&gt;
** assert-Methode selber schreiben -&amp;gt; Später!&lt;br /&gt;
* Werte ausgeben! -&amp;gt; printf-Debugging&lt;br /&gt;
** Variablen haben unterschiedliche Werte während das Program läuft!&lt;br /&gt;
&lt;br /&gt;
== Übungsaufgaben ==&lt;br /&gt;
&lt;br /&gt;
* Methoden definieren, die bestimmte Eigenschaften haben&lt;br /&gt;
* Beispiele dann Abtippen und ausprobieren&lt;br /&gt;
* Sie sollen Nachfragen, wenn sie was anderes hatten (oder sowas)&lt;br /&gt;
* Verschiedene Eingabewerte&lt;br /&gt;
* erste Endlosschleife&lt;/div&gt;</summary>
		<author><name>84.191.230.14</name></author>
	</entry>
</feed>