<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki.freitagsrunde.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Seba</id>
	<title>FreitagsrundenWiki - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.freitagsrunde.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Seba"/>
	<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/Spezial:Beitr%C3%A4ge/Seba"/>
	<updated>2026-05-08T23:09:58Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.31.16</generator>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=CAcert&amp;diff=18791</id>
		<title>CAcert</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=CAcert&amp;diff=18791"/>
		<updated>2012-06-11T15:41:35Z</updated>

		<summary type="html">&lt;p&gt;Seba: /* Assurer */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''CAcert''' ist eine Zertifizierungsstelle für kostenlose S/MIME- und SSL-Serverzertifikate. Für personalisierte Zertifikate muss man sich gegenüber CAcert authentifizieren, dafür wurde ein &amp;quot;[[Web of Trust]]&amp;quot; geschaffen, in dem bereits ausreichend authentifizierte CAcert-Benutzer, die sogenannten &amp;quot;Assurer&amp;quot; andere Teilnehmer bestätigen können. Das ganze funktioniert über ein Punktesystem und je mehr Punkte man erhält, desto mehr Rechte hat man und kann dann z.B. für sich selber personalisierte S/MIME-Zertfikate erhalten oder ab einer gewissen Punktzahl auch andere Teilnehmer bestätigen.&lt;br /&gt;
&lt;br /&gt;
Das wichtigste Ziel von CAcert ist, daß ihr [https://www.cacert.org/index.php?id=3 Root-Zertifikat] von den Browser-Herstellern in ihre Produkte aufgenommen wird, damit bei SSL-verschlüsselten Seiten, deren Schlüssel von CAcert unterschrieben wurden, zukünftig keine Warnhinweise mehr angezeigt werden, so wie man es schon von den großen kommerziellen Zertifizierungsstellen her kennt.&lt;br /&gt;
&lt;br /&gt;
== Die Freitagsrunde bestätigt dich ==&lt;br /&gt;
Einige von uns und unseren Ehemaligen sind CAcert-Assurer&amp;lt;!-- bzw. gerade dabei, die benötigten Punkte zu erhalten--&amp;gt;. Unser Ziel ist es, dass Interessierte bei uns direkt alle benötigten Punkte für die Nutzung von CAcert erhalten können, vorausgesetzt natürlich die Identität konnte nach den Regeln von CAcert überprüft werden (zwei gültige amtliche Ausweisdokumente, mindestens eins mit Lichtbild).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Wir können zur Zeit max. 100 Punkte vergeben (mehr geht per Web of Trust nicht), so dass du selbst sofort ein Assurer wirst. Bei Interesse oder für Fragen und Hinweise, sind für unter [mailto:cacert@freitagsrunde.org cacert@freitagsrunde.org] erreichbar. Da nicht immer alle Assurer freitags da sind, bitte unbedingt vorher per E-Mail ([mailto:cacert@freitagsrunde.org cacert@freitagsrunde.org]) anmelden, um unnötige Wege zu vermeiden.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Derzeit gibt es leider nicht immer Assurer, die regelmäßig bei den Treffen der Freitagsrunde anwesend sind. Eine Bestätigung ist daher im Moment am besten auf Anfrage möglich. Alle aktiven Assurer erreichst Du per E-Mail ([mailto:cacert@freitagsrunde.org cacert@freitagsrunde.org]).&lt;br /&gt;
&lt;br /&gt;
== Assurer ==&lt;br /&gt;
* [[Benutzer:Mutax|Florian Streibelt]] (35 Punkte CAcert)&lt;br /&gt;
* Sebastian Lohff (35 Punkte CAcert)&lt;br /&gt;
* Sebastian Dyroff (30 Punkte CAcert)&lt;br /&gt;
* Alexander Kührmann (25 Punkte CAcert)&lt;br /&gt;
* [[Benutzer:Bmay|Bernd May]] (10 Punkte CAcert)&lt;br /&gt;
* [[Benutzer:Loofmann|Stefan Laufmann]] (10 Punkte CAcert)&lt;br /&gt;
* Andrew Karpow (10 Punkte CAcert)&lt;br /&gt;
* Nico Suhl (10 Punkte CAcert)&lt;br /&gt;
* [[Benutzer:jungnickel|Tim Jungnickel]] (10 Punkte CAcert)&lt;br /&gt;
&lt;br /&gt;
==== Nicht mehr regelmäßig anwesend: ====&lt;br /&gt;
* [[Benutzer:Martin Häcker|Martin Häcker]] (35 Punkte CAcert)&lt;br /&gt;
* [[Benutzer:Thomas|Thomas Kaschwig]] (35 Punkte CAcert)&lt;br /&gt;
* [[Benutzer:Felix|Felix Schwarz]] (35 Punkte CAcert)&lt;br /&gt;
* [[Benutzer:dStulle|Daniel Sturm]] (35 Punkte CAcert)&lt;br /&gt;
* [[Benutzer:Cleeus|Kai Dietrich]] (25 Punkte CAcert)&lt;br /&gt;
* [[Benutzer:Dan|Dan Levin]] (20 Punkte CAcert)&lt;br /&gt;
* [[Benutzer:buchholz|Robert Buchholz]] (15 Punkte CAcert)&lt;br /&gt;
* [[Benutzer:Felixf|Felix Friedrich]] (35 Punkte CAcert)&lt;br /&gt;
* [[Benutzer:Bastla|Sebastian Lange]] (35 Punkte CAcert)&lt;br /&gt;
* [[Benutzer:BjörnL|Björn Lohrmann]] (10 Punkte CAcert)&lt;br /&gt;
&lt;br /&gt;
== Wo und wann findet das ganze statt? ==&lt;br /&gt;
&lt;br /&gt;
Wir sind eine Studierendeninitiative, die sich regelmäßig am Freitag trifft, daher auch unser Name. &lt;br /&gt;
&amp;lt;!-- Die CAcert-Zertifizierung führen wir i.d.R. vor oder nach dem Treffen durch, in Ausnahmefällen können wir jedoch auch individuelle Termine vereinbaren. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Wo? ===&lt;br /&gt;
&lt;br /&gt;
 Technische Universität Berlin&lt;br /&gt;
 Raum [[FR 5518]]&lt;br /&gt;
 Franklinstr. 28/29&lt;br /&gt;
 10587 Berlin&lt;br /&gt;
&lt;br /&gt;
=== Wann? ===&lt;br /&gt;
&lt;br /&gt;
Unsere Sitzung beginnt jeden Freitag um 13 Uhr und geht bis ca. 15:00. Während des Treffen führen wir keine Assurings durch. Nach dem Treffen ist ein Assuring aber nach Absprache möglich. Bitte unbdeingt vorher per E-Mail anmelden und abklären, wann genau Assurer da sind - die 'Personaldecke' ist derzeit recht dünn.&lt;br /&gt;
&lt;br /&gt;
== Wie funktionierts? ==&lt;br /&gt;
&lt;br /&gt;
Du zeigst uns deine Personaldokumente (mind. ein amtlicher Ausweis, zwei stark bevorzugt), füllst das CAcert-Formular aus. Solltest du auf den Ausweisen erkennbar sein, vergeben wir anschließend die Punkte und tragen das auf der CAcert-Webseite ein. Fertig. Das ganze dauert idR. etwa 10-15 Minuten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Was soll ich mitbringen? ==&lt;br /&gt;
&lt;br /&gt;
# Zwei gültige amtliche Ausweisdokumente (z.B. Personalausweis + Führerschein). Wichtig: Auf mindestens einem Bild solltest du gut zu erkennen sein.&lt;br /&gt;
# Für Thawte-Zertifizierungen: Eine Kopie (Vorder- und Rückseite) deiner Personaldokumente. &lt;br /&gt;
# Für Thawte-Zertifizierungen: Im [https://www.thawte.com/cgi/personal/wot/directory.exe?node=397 Notary-Listing bei Thawte] [https://www.thawte.com/cgi/personal/wot/wotpermission.exe?add=esLj9v2MdTCJh2t4JAMazCA&amp;amp;ref=25&amp;amp;return=directory.exe&amp;amp;node=397 &amp;quot;Felix Schwarz&amp;quot; freischalten] (&amp;quot;allow this notary to view your details&amp;quot;).&lt;br /&gt;
# [http://www.cacert.org/cap.php?lang=de_DE CAcert-Formulare] haben wir da, du kannst sie aber natürlich auch schon vorher bei CAcert herunterladen und ausfüllen. Die [https://www.thawte.com/en/wot/tngerman.pdf Thawte-Formulare] sind etwas versteckter, aber ebenfalls erhältlich.&lt;br /&gt;
# Du solltest bereits einen Account bei [https://www.cacert.org/ CAcert] besitzen (gleiches gilt natürlich für [http://www.thawte.com/wot/index.html Thawte]).&lt;br /&gt;
# Dich selbst.&lt;br /&gt;
&lt;br /&gt;
== Was muss ich danach noch machen? ==&lt;br /&gt;
&lt;br /&gt;
Wenn du bei uns schon die maximalen 100 Punkte bekommen hast, gibt es eigentlich für dich nicht mehr viel zu machen. Allerdings fänden wir es schön, wenn du folgende Bitten befolgen würdest:&lt;br /&gt;
# Mit 100 Punkten bist du selbst Assurer, kannst also andere bestätigen. Bitte missbrauche deine neue Macht nicht und prüfe die Identität der Leute, die du zertifizierst.&lt;br /&gt;
# Ein Projekt wie CAcert lebt davon, dass es möglichst viele Assurer gibt. Da du jetzt auch einer bist, trage dich doch in die Assurer-Liste ein, damit dich andere finden (dies ist standardmäßig nicht der Fall): Einloggen bei CAcert - Meine Details - Mein Listeneintrag.&lt;br /&gt;
# Installiere das [https://www.cacert.org/index.php?id=3 CAcert-Rootzertifikat] auf Systemen, die du ev. betreust (Familie, Freunde, Verwandte), um für größere Akzeptanz zu werben.&lt;br /&gt;
# Werbe allgemein für CAcert, so dass z.B. auch Foren-Bekannte etc. sich das CAcert-Rootzertifikat installieren.&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* https://www.cacert.org/&lt;br /&gt;
* http://wiki.cacert.org/&lt;br /&gt;
&lt;br /&gt;
[[Kategorie: Kryptologie]]&lt;/div&gt;</summary>
		<author><name>Seba</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=Memes&amp;diff=17194</id>
		<title>Memes</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=Memes&amp;diff=17194"/>
		<updated>2011-11-30T20:42:05Z</updated>

		<summary type="html">&lt;p&gt;Seba: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* 1000&lt;br /&gt;
* &amp;quot;Steht schon auf SomeChan&amp;quot;&lt;br /&gt;
* &amp;quot;Frag Pamela&amp;quot;&lt;br /&gt;
* &amp;quot;Will jemand was von der EN-Cafete?&amp;quot; &amp;quot;Ruf hier nie wieder an!&amp;quot;&lt;/div&gt;</summary>
		<author><name>Seba</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=Kassensystem&amp;diff=17038</id>
		<title>Kassensystem</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=Kassensystem&amp;diff=17038"/>
		<updated>2011-11-16T17:45:38Z</updated>

		<summary type="html">&lt;p&gt;Seba: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Diese Seite ist im Rahmen der Erstellung eines ''Kassensystems''  für die Freitagsrunde entstanden. Die Grundidee war dabei für den  Touchscreen (oder eine andere Plattform) in unserem Raum eine Software  zu erstellen, mit der mehrere Nutzer ihren Getränkekonsum und die dabei  entstehenden Kosten verwalten können. Um die Anforderungen an ein solches System zu sammeln und zu koordinieren ist dieses Seite da.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= k4ever =&lt;br /&gt;
k4ever ist die aktuelle implementation des Kassensystems der Freitagsrunde. Momentan befindet es sich noch sehr stark in Entwicklung, ist aber vollständig Funktionsfähig. Der Kern ist die Webseite http://k4ever.freitagsrunde.org, auf der jedes Item gekauft, der Kontostand und Einstellungen verwaltet werden kann. Für Requests von außen kann die REST-Api benutzt werden. Diese ist ausführlich Dokumentiert: https://k4ever.freitagsrunde.org/media/docs/index.html&lt;br /&gt;
&lt;br /&gt;
Für die Weiterentwicklung steht ein Trac bereit&lt;br /&gt;
* Code: git clone git://git.someserver.de/git/k4ever&lt;br /&gt;
* Trac/Bugs: http://k4ever.someserver.de&lt;br /&gt;
&lt;br /&gt;
== Plugins ==&lt;br /&gt;
* Gnome-Panel: Kassenstand anzeigen, dropdown menü für aktionen? Regelmäßige Updates.&lt;br /&gt;
** Tom arbeitet dran:&lt;br /&gt;
** Schnellkaufen der fünf am meisten gekauften Items des Users&lt;br /&gt;
** Einloggen mit Authblob || (username &amp;amp;&amp;amp; password)&lt;br /&gt;
** Mitmachen -&amp;gt; E-Mail&lt;br /&gt;
* Panic Button: Für Mate kaufen. Fenster-Global-Hotkey strg+alt+M(ate)?&lt;br /&gt;
* Android App: Obviously&lt;br /&gt;
** Widget für Matekauf&lt;br /&gt;
** Widget für Kontostandanzeige (Kombination möglich)&lt;br /&gt;
** Die drei Faces (Meistgekauft, Von dir meistgekauft, zuletzt gekauft) in der App&lt;br /&gt;
* Achievements: &amp;quot;n* Mate gekauft&amp;quot;, &amp;quot;Mate-Spreeee!&amp;quot;, &amp;quot;Uuultra-Mate!&amp;quot;, &amp;quot;Allstar&amp;quot;, &amp;quot;KontoMaster (incremental)&amp;quot;, &amp;quot;IceMan!/Frosty&amp;quot;, &amp;quot;Promille&amp;quot;, &amp;quot;13,37€, 42,21€, 23€...90,01€&amp;quot;, &amp;quot;Achievement-Farmer(n-mal)&amp;quot;, &lt;br /&gt;
* Statistik: Kalorien, Timetable - wann häufig gekauft,&lt;br /&gt;
&lt;br /&gt;
== Fehlende Barcodes ==&lt;br /&gt;
* Eis&lt;br /&gt;
* Opalix&lt;br /&gt;
* Spendenbuttons&lt;br /&gt;
* Sticker&lt;br /&gt;
* Tkroenert&lt;br /&gt;
&lt;br /&gt;
== Policy für Gastaccounts ==&lt;br /&gt;
Gäste können in k4ever auf Anfrage einen Account bekommen, wenn er denn benötigt wird, d.h. wenn man öfters da ist. Der Accountname setzt sich dann aus g_ und einem Nickname (möglichst kein allgemeiner Name wie &amp;quot;Hans&amp;quot; oder &amp;quot;Peter&amp;quot;) zusammen. Gäste sollten keinen negativen Kontostand haben, dies wird aber vom Kassensystem nicht enforced.&lt;br /&gt;
&lt;br /&gt;
= Hochkomplexe Planungsideen =&lt;br /&gt;
&lt;br /&gt;
WARNUNG WARNUNG WARNUNG&lt;br /&gt;
Ab diesen Punkt sind hauptsächlich Utopien und Planungsideen zu finden&lt;br /&gt;
==Generelle Fragen==&lt;br /&gt;
&lt;br /&gt;
=== soll das Kassensystem auch für Besucher sein ===&lt;br /&gt;
&lt;br /&gt;
* Pro&lt;br /&gt;
** Zusammenrechner bei groesseren Bestellungen.&lt;br /&gt;
** Man sieht wieviel Geld in der BAR-Kasse seien sollte.&lt;br /&gt;
&lt;br /&gt;
* Con&lt;br /&gt;
** zu aufwändig&lt;br /&gt;
&lt;br /&gt;
: Im Abschnitt Rollen steht ein Vorschlag für die Lösung des Problems&lt;br /&gt;
&lt;br /&gt;
==Anforderungen==&lt;br /&gt;
&lt;br /&gt;
===harte Anforderungen===&lt;br /&gt;
&lt;br /&gt;
''Das soll das System unbedingt leisten''&lt;br /&gt;
* Der Frundler soll eine Übersicht bekommen was er der Frunde schuldet / wieviel Restguthaben er noch hat&lt;br /&gt;
* Überwachen der maximalen Kalorienzufuhr pro Tag/woche - überwachen eines Ernährungsplanes&lt;br /&gt;
* Verhindern von Indikationen nach ICD-10 Klassifikation F15.3 (langsames Ausschleichen)&lt;br /&gt;
* Verhinderung von Über und Unterdosierung von 1,3,7-Trimethyl-3,7-dihydro-1H-purin-2,6-dion&lt;br /&gt;
&lt;br /&gt;
===weiche Anforderungen===&lt;br /&gt;
&lt;br /&gt;
''sind für die 1.x-Reihe nicht ganz so wichtig''&lt;br /&gt;
&lt;br /&gt;
* Fremdbuchungen à la &amp;quot;bring mir mal was mit&amp;quot; (gleich Feld [Gebucht von] oder so mit einbauen)&lt;br /&gt;
* Das Getränk wird am Terminal per Barcode-Scan eingegeben&lt;br /&gt;
* Anstatt einer Frunden-geldkarte wird  per RFID die Mensakarte genommen&lt;br /&gt;
* Getränke/Speisekarte als PDF exportierbar machen um sie an den Kühlschrank zu hängen&lt;br /&gt;
* Achivement-System für z.B. 10 Mate in Reihe/Tag (oder ggf. Gesundheitswarnung)&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
==Interface/Plattform==&lt;br /&gt;
Für die Umsetzung sollte zumindest klar sein was später rauskommen soll:&lt;br /&gt;
* Touchscreen&lt;br /&gt;
** muss erst wieder Touch haben --[[Benutzer:Jörg F|Jörg F]] 10:47, 26. Sep. 2010 (CEST)&lt;br /&gt;
*** leider läuft der Touch nur unter nem extrem alten X --[[Benutzer:Jungnickel|Jungnickel]] 10:57, 26. Sep. 2010 (CEST)&lt;br /&gt;
****  Ja und nein. Ich habe ihn in der Konsole mit gpm zum Laufen gebracht,  gpm kann einen socket für X zur Verfügung stellen, wo die Daten  rausfallen. Also gpm als Proxy. --[[Benutzer:Mutax|Florian]] 14:19, 26. Sep. 2010 (CEST)&lt;br /&gt;
***** Das ist ne gute idee... warum nicht gleich auf X verzichten? In der C-Base haben sie auch nur text-mode interfaces fuer ihr kassensystem, und jeder ist zufrieden mit. Ist doch viel geekiger :D --[[Benutzer:Andrew|Andy[DE]]]&lt;br /&gt;
** für jeden zugänglich --[[Benutzer:Jörg F|Jörg F]] 10:47, 26. Sep. 2010 (CEST)&lt;br /&gt;
** Leichter Zugang für Gäste und schnelle Mate trinker/käufer --[[Benutzer:Jungnickel|Jungnickel]] 10:57, 26. Sep. 2010 (CEST)&lt;br /&gt;
* Browser&lt;br /&gt;
** man muss nen Laptop mit Internet dabei haben --[[Benutzer:Jörg F|Jörg F]] 10:47, 26. Sep. 2010 (CEST)&lt;br /&gt;
** es können parallel Getränke gekauft werden --[[Benutzer:Jungnickel|Jungnickel]] 10:57, 26. Sep. 2010 (CEST)&lt;br /&gt;
** den Verbrauch und Kontostand sollte einsehbar sein ohne an den Touchscreen zu gehen. --[[Benutzer:Jungnickel|Jungnickel]] 10:57, 26. Sep. 2010 (CEST)&lt;br /&gt;
** Komplexere Seiten (Geld aufladen etc) sind vllt. leichter für den Browser zu implementieren--[[Benutzer:Jungnickel|Jungnickel]] 10:57, 26. Sep. 2010 (CEST)&lt;br /&gt;
* Konsole&lt;br /&gt;
** wird wohl eher nicht angenommen da zu aufwändig&lt;br /&gt;
&lt;br /&gt;
==Use cases==&lt;br /&gt;
''Der Warenverwaltungsaspekt fehlt hier noch völlig''&lt;br /&gt;
&lt;br /&gt;
''Man sollte hier vielleicht sowas wie die (nummerierten) Haupt-Usecases rauspellen und unten dran eine Liste mit den Varianten stellen (die CLI-Fälle sind vermtl. alle Varianten der Kiosk-Fälle)''&lt;br /&gt;
&lt;br /&gt;
# Frundler konsumiert:&lt;br /&gt;
## Der Frundler authentifiziert sich am System&lt;br /&gt;
## Der Frundler sagt dem System er kauft ein Getränk&lt;br /&gt;
## Das System belastet das Konto des Frundlers mit dem genommenen Getränk&lt;br /&gt;
# Gast konsumiert:&lt;br /&gt;
## Der Gast sagt dem System er kauft ein Getränk.&lt;br /&gt;
## Der Gast legt den zum Getränk passenden Betrag in die Barkasse&lt;br /&gt;
## Der Gast nimmt sich das Getränk&lt;br /&gt;
# Bucher laedt Frundlerkonto auf &lt;br /&gt;
## Der Frundler gibt dem Bucher $Geld Euro&lt;br /&gt;
## Der Bucher authentifiziert sich am System&lt;br /&gt;
## Er hebt den Betrag vom Buchungskonto ab&lt;br /&gt;
## Er laedt das Geld auf das Frundlerkonto&lt;br /&gt;
# Bucher leeren Kasse&lt;br /&gt;
## Der Bucher authentifiziert sich am System&lt;br /&gt;
## Der Bucher nimmt das Geld aus der Barkasse&lt;br /&gt;
## Der Bucher bucht das Geld vom Barkassenkonto auf sein Konto&lt;br /&gt;
# Bucher gibt Geld an Kassenwart weiter&lt;br /&gt;
## Der Bucher gibt dem Kassenwart (auch per Banktransfer) das gewartete Geld&lt;br /&gt;
## Der Kassenwart authentifiziert sich am System&lt;br /&gt;
## Er entlastet das Konto des Buchers&lt;br /&gt;
&lt;br /&gt;
CLI-Fälle der obigen Varianten (alle?)&lt;br /&gt;
&lt;br /&gt;
''Folgende Faelle werden nur vom Admin im Auftrag des Getraenkewartes durchgefuehrt''&lt;br /&gt;
* Ein neues Getränk anlegen&lt;br /&gt;
* Den Preis eines Getränks verändern&lt;br /&gt;
&lt;br /&gt;
===Rollen===&lt;br /&gt;
Es gibt also folgende Rollen:&lt;br /&gt;
Rollen: Gast, Frundler, Bucher, Kassenwart&lt;br /&gt;
&lt;br /&gt;
'''Kommentare:'''&lt;br /&gt;
*  Brauchen wir wirklich einen Bucher und einen Kassenwart (als Rolle)?  Die Rolle des Buchers scheint mir überflüssig und auch für den Bucher zu  stressig. Da eh auch jeder einfach so ohne zu Bezahlen Mate klauen  könnte, wäre ein Bucher der wie ein Barman darauf achtet ob wirklich  bezahlt wird schon zuviel Stasi. Ich denke da wir eh darauf vertrauen  (müssen), dass die Leute bezahlen, is ein Bucher überflüssig??? Wenn der  Bucher rausfällt, dann fliegt vllt. auch der Kassenwart mit raus, da  der ohne den Bucher keine Aufgabe mehr hat. --[[Benutzer:Jungnickel|Jungnickel]] 09:24, 25. Sep. 2010 (CEST)&lt;br /&gt;
::  Der Kassenwart hat Zugriff aufs Bankkonto der Frunde. Von diesem Konto  werden die Getraenke bezahlt. Auf dieses Konto muss irgendwie das  bezahlte Geld auch wieder kommen... (darum finde ich seine Rolle  wichtig).  Bucher hingegen koennte jeder werden. Der Bucher hat aber  dafuer zu sorgen, dass nicht zuviel Bargeld in der Frunde ''herrumliegt''. Darum finde ich das Bargeld-aufladen eines frundenkontos in Form direkter Bezahlung an den Bucher schon sinnvoll! --[[Benutzer:Tkroenert|Tkroenert]] 12:18, 10. Okt. 2010 (CEST)&lt;br /&gt;
:::  Okay, klar dafür brauchen wir einen Kassenwart, aber an welcher Stelle  der was mit dem System zutun hat hab ich noch nicht geblickt. Zahlung  per Überweisung fand ich auch eine interessante Sache. Das Problem mit  der Rolle des Buchers ist, dass ich scheinbar nur mein Konto aufladen  kann wenn der Bucher da ist. Ich würde da auch vorschlagen: jeder ist  Bucher und kann sein Konto aufladen indem er 10€ (oder überweist) in die  Kasse wirft und dies in seinem Konto vermerkt. Also eine Rolle Bucher  der nur dafür da ist das Geld einzusacken und es auf die  unterschiedlichen Konten aufzuladen brauchen wir nicht oder? Dass können  die Frundler auch selbst machen. --[[Benutzer:Jungnickel|Jungnickel]] 13:19, 10. Okt. 2010 (CEST)&lt;br /&gt;
:::: Wenn jmd. sein Konto auflaedt, dann wahrschein mit 10EUR oder  20EUR. Wenn nun ein paar Leute mal ihr Konto aufladen liegen schnell  100Euro in der Frunde. Ich sehe das ungern - nicht das ich jmd. der  Keymembers nicht vertraue.. es gibt nur momente wo mir viele unbekannte  in der Frunde auch mal sind.  Und um nun Geld aus der Frunde aufs Konto  zu bekommen gibs den Bucher. Jeder koennte das sein.. klar! Aber eben  nicht jeder hat die ganzen daten.. also gibs dieses als Rolle. bzw.: Es  kann auch mehrere Bucher geben ; )   Und wegen ueberweisen: Das ist  natuerlich was anderes!! --[[Benutzer:Tkroenert|Tkroenert]] 23:54, 15. Okt. 2010 (CEST)&lt;br /&gt;
::::: Nur um wirklich letzte Klarheiten auszuräumen: Was unterscheidet den View eines Frundlers von dem eines Buchers am System? Was kann der Bucher mehr als der Frundler (am System)? --[[Benutzer:Jungnickel|Jungnickel]] 09:54, 16. Okt. 2010 (CEST)&lt;br /&gt;
:::::: Wenn jetzt JEDER Bucher wäre dann würde diese Klasse doch ad absurdum geführt. Wenn wir den Frundlern nicht vertrauen dann macht das alles keinen Sinn. Warum überweist man nicht &amp;quot;einfach&amp;quot; reales Geld von seinem Realen Konto auf das Reale Konto der frunde? Und trägt das dann selbst ins System ein? Das Bar zahlen kann man ja immernoch nebenher machen. Aber das würde den Bargeld bestand in der Frunde drastisch reduzieren. Dazu kommt die möglichkeit der dauerüberweisung. Natürlich müsste dann ein &amp;quot;Kassenwart&amp;quot; den Geld bestand zwischen Bargeld inner Frunde und Geld eingang aufm Konto überprüfen. Wobei man ja bei der Einzahlung eine $Var nehmen könnte Bar/Überweisung, und das system hält es für den Kassenwart getrennt vor wie viel in der Dose liegen müsste und was aufs Konto gekommen sein müsste.--[[Benutzer:Timmeey|Timmeey]] 22:49, 18. Okt. 2010 (CEST)&lt;br /&gt;
* Wenn der Gast eine Gast-Karte  bekommt (die quasi immer neben dem Scanner liegt), fliegt auch der Gast  als Akteur raus, da er dann wie ein Frundler gehandled werden kann. Der  Gast bezahlt eh immer in Bar, das wissen wir ja. --[[Benutzer:Jungnickel|Jungnickel]] 09:34, 25. Sep. 2010 (CEST)&lt;br /&gt;
:: ja, das ist eine gute Loesung! --[[Benutzer:Tkroenert|Tkroenert]] 23:54, 15. Okt. 2010 (CEST)&lt;br /&gt;
&lt;br /&gt;
==Modelle==&lt;br /&gt;
Objekt: Karte, Konto.&amp;lt;br /&amp;gt;&lt;br /&gt;
Konto-Aspekte:&lt;br /&gt;
* Quota (von -x bis +y)&lt;br /&gt;
* Quota ist Attribut eines Kontos (einfacher als nach Kontentypen zu differenzieren)&lt;br /&gt;
* immer einer Karte zugeordnet (ist das im Fall des Master-Kontos angemessen?)&lt;br /&gt;
* jede Karte kann auf ein zugeordnetes Konto verweisen (&amp;quot;Konsumkonto&amp;quot;)&lt;br /&gt;
* es gibt Karten die zusätzlich noch ein Bucherkonto haben&lt;br /&gt;
* intervall wieviel/welche getränke von letztem Zeitpunkt getrunken wurden angeben&lt;br /&gt;
&lt;br /&gt;
Den letzten Punkt würde ich noch zurückhalten, bis das Getränkeproblem s.w.u. gelöst ist&lt;br /&gt;
&lt;br /&gt;
===Subtypen und so===&lt;br /&gt;
&lt;br /&gt;
Subtypen von Konto: Kasse, Frundler, Bucher, Gast&lt;br /&gt;
&lt;br /&gt;
Es   erscheint am einfachsten, im System nicht weiter zwischen  verschiedenen  Kontentypen zu differenzieren. Das Quota etwa kann ja  ruhig wie oben  geschrieben als Attribut am Konto kleben, beim  Notifizieren wird uns  sicher ähnliches einfallen. Um dennoch für uns  zwischen den  verschiedenen Zwecken der Konten zu unterscheiden, bekommt  jedes Konto  noch ein Namensattribut.&lt;br /&gt;
&lt;br /&gt;
===Getränke===&lt;br /&gt;
&lt;br /&gt;
Hier   liegt noch einiges im Argen: Wir wollen mit Sicherheit die   verschiedenen verfügbaren Getränketypen (Mate, Cola, ...) in einer   Tabelle speichern, und daraus u.A. das manuelle Getränkemenü zu   generieren etc.&lt;br /&gt;
Da steht dann auch der Preis dran. Dann gibt es zwei Möglichkeiten:&lt;br /&gt;
*  keine abgeschlossene Transaktion verweist auf ein solches Getränk   (sonst ändert sich die Transaktion, wenn das Getränk einen anderen   &amp;quot;Preis&amp;quot; bekommt)&lt;br /&gt;
* wenn wir den &amp;quot;Preis&amp;quot; für Mate erhöhen, legen wir mehrere Mate-Einträge   an, einmal mit altem Preis, einmal mit neuem, und konsumieren kann man   nur nach aktuellem Preis, die alte erscheint nicht im Menü&lt;br /&gt;
&lt;br /&gt;
Beides ist irgendwie häßlich. Vorschläge?&lt;br /&gt;
&lt;br /&gt;
* Warum nicht den Preis beim Erstellen der Transaktion ins Transaktionsobjekt kopieren?&lt;br /&gt;
*  Getränkeobjekte und Preisobjekte getrennt anlegen. Preise sind einem   Getränkeobjekt zugeordnet und haben nebem einem Preis ein Startdatum.   Somit können alle Preisänderungen problemlos nachvollzogen werden und   nichts wird redundant gespeichert. So habe ich das bei meiner   Getränkekasse gelöst. (externer Kommentar von tblank@gmx.net)&lt;br /&gt;
&lt;br /&gt;
==weitere Aspekte==&lt;br /&gt;
===Logging===&lt;br /&gt;
* Jede Transaktion, wer von wo nach wo wie viel und wann und aus welchem Anlass erscheint im System. (auch wenn welches Getränk)&lt;br /&gt;
**  Bitte versuchen das Prinzip der Datensparksamkeit nicht zu vergessen.  Daten die nicht gespeichert sind können auch nicht wegkommen --[[Benutzer:Bmay|Bmay]] 19:48, 10. Okt. 2010 (CEST)&lt;br /&gt;
* Löschen von Transaktionen solange sie noch nicht commited ist (Session nicht vorbei) ist möglich&lt;br /&gt;
* Wie sieht ein Commit in der Logik aus?&lt;br /&gt;
* Sonstige Löschvorgänge von Transaktionen ist nicht möglich&lt;br /&gt;
**  Ich nehme an, damit ist das Löschen durch den Nutzer selbst gemeint.  Ein &amp;quot;Storno&amp;quot; sollte zumindest der Admin und ggF. der Bucher können um  Irrtümer zu korrigieren, für Testzwecke, etc. --[[Benutzer:Bmay|Bmay]] 19:48, 10. Okt. 2010 (CEST)&lt;br /&gt;
:: Loeschmoeglichkeit der in den letzten n Minuten getaetigten Buchungsvorgaenge wuerde alle Probleme loesen.. --[[Benutzer:Tkroenert|Tkroenert]] 23:54, 15. Okt. 2010 (CEST)&lt;br /&gt;
* Frundler kann seine kürzlich gekauften Getränke einsehen.&lt;br /&gt;
:: History ueber getaetigte Buchungen... --[[Benutzer:Tkroenert|Tkroenert]] 23:54, 15. Okt. 2010 (CEST)&lt;br /&gt;
** Auch hier wieder, Datensparksamkeit. Eine Möglichkeit zum Abruf eines digitalen Kontoauszugs wäre gut - danach kann die entsprechende Liste wieder gelöscht oder zumindest verschlüsselt zum Backup abgespeichert werden. --[[Benutzer:Bmay|Bmay]] 19:48, 10. Okt. 2010 (CEST)&lt;br /&gt;
===Notification===&lt;br /&gt;
* Kassenwart muss über Geldübergabe an Bucher benachrichtigt werden&lt;br /&gt;
** Eventuell lässt sich hier eine Mail, Jabber, Statusneet, whatever Lösung basteln --[[Benutzer:Bmay|Bmay]] 19:48, 10. Okt. 2010 (CEST)&lt;br /&gt;
* Bei MaxBetrag in Kasse muessen die Bucher benachrichtigt werden&lt;/div&gt;</summary>
		<author><name>Seba</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=C-Kurs/Tron/Musterl%C3%B6sung&amp;diff=16280</id>
		<title>C-Kurs/Tron/Musterlösung</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=C-Kurs/Tron/Musterl%C3%B6sung&amp;diff=16280"/>
		<updated>2011-09-05T23:11:34Z</updated>

		<summary type="html">&lt;p&gt;Seba: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Für Tron gibt es zu jedem Unterpunkt der Aufgabe auch eine Lösung.&lt;br /&gt;
&lt;br /&gt;
[http://docs.freitagsrunde.org/Veranstaltungen/ckurs_2010/loesungen/tron-loesung/ Komplettlösung] - Die komplette Lösung inkl. aller Schritte + Makefile&lt;br /&gt;
&lt;br /&gt;
[http://docs.freitagsrunde.org/Veranstaltungen/ckurs_2010/loesungen/tron-loesung/tron-loesung.tar.gz tron-loesung.tar.gz] - Die komplette Lösung nochmal als .tar.gz&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://docs.freitagsrunde.org/Veranstaltungen/ckurs_2010/loesungen/tron-loesung/steps/01-tron.c 01-tron.c] - SDL initlaisieren&lt;br /&gt;
&lt;br /&gt;
[http://docs.freitagsrunde.org/Veranstaltungen/ckurs_2010/loesungen/tron-loesung/steps/02-tron.c 02-tron.c] - SDL Events&lt;br /&gt;
&lt;br /&gt;
[http://docs.freitagsrunde.org/Veranstaltungen/ckurs_2010/loesungen/tron-loesung/steps/03-tron.c 03-tron.c] - Zustandsvariablen&lt;br /&gt;
&lt;br /&gt;
[http://docs.freitagsrunde.org/Veranstaltungen/ckurs_2010/loesungen/tron-loesung/steps/04-tron.c 04-tron.c] - Zeichnen der Spieler&lt;br /&gt;
&lt;br /&gt;
[http://docs.freitagsrunde.org/Veranstaltungen/ckurs_2010/loesungen/tron-loesung/steps/05-tron.c 05-tron.c] - Bewegen der Spieler&lt;br /&gt;
&lt;br /&gt;
[http://docs.freitagsrunde.org/Veranstaltungen/ckurs_2010/loesungen/tron-loesung/steps/06-tron.c 06-tron.c] - Kollisionen erkennen und behandeln&lt;br /&gt;
&lt;br /&gt;
[http://docs.freitagsrunde.org/Veranstaltungen/ckurs_2010/loesungen/tron-loesung/steps/07-tron.c 07-tron.c] - Tastatureingabe zu Richtungswechsel&lt;br /&gt;
&lt;br /&gt;
[http://docs.freitagsrunde.org/Veranstaltungen/ckurs_2010/loesungen/tron-loesung/steps/08-tron.c 08-tron.c] - Punkte / Komplett&lt;/div&gt;</summary>
		<author><name>Seba</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=C-Kurs/Tron/Musterl%C3%B6sung&amp;diff=16276</id>
		<title>C-Kurs/Tron/Musterlösung</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=C-Kurs/Tron/Musterl%C3%B6sung&amp;diff=16276"/>
		<updated>2011-09-05T18:05:49Z</updated>

		<summary type="html">&lt;p&gt;Seba: Die Seite wurde neu angelegt: „Für Tron gibt es zu jedem Unterpunkt der Aufgabe auch eine Lösung.  [http://docs.freitagsrunde.org/Veranstaltungen/ckurs_2010/loesungen/tron-loesung/ Komplettl…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Für Tron gibt es zu jedem Unterpunkt der Aufgabe auch eine Lösung.&lt;br /&gt;
&lt;br /&gt;
[http://docs.freitagsrunde.org/Veranstaltungen/ckurs_2010/loesungen/tron-loesung/ Komplettlösung] - Die komplette Lösung inkl. aller Schritte + Makefile&lt;br /&gt;
&lt;br /&gt;
[http://docs.freitagsrunde.org/Veranstaltungen/ckurs_2010/loesungen/tron-loesung/tron-loesung.tar.gz tron-loesung.tar.gz] - Die komplette Lösung nochmal als .tar.gz&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://docs.freitagsrunde.org/Veranstaltungen/ckurs_2010/loesungen/tron-loesung/steps/01-tron.c 01-tron.c] - SDL initlaisieren&lt;br /&gt;
&lt;br /&gt;
[http://docs.freitagsrunde.org/Veranstaltungen/ckurs_2010/loesungen/tron-loesung/steps/02-tron.c 02-tron.c] - SDL Events&lt;br /&gt;
&lt;br /&gt;
[http://docs.freitagsrunde.org/Veranstaltungen/ckurs_2010/loesungen/tron-loesung/steps/03-tron.c 03-tron.c] - Zustandsvariablen&lt;br /&gt;
&lt;br /&gt;
[http://docs.freitagsrunde.org/Veranstaltungen/ckurs_2010/loesungen/tron-loesung/steps/04-tron.c 04-tron.c] - Zeichnen der Spieler&lt;br /&gt;
&lt;br /&gt;
[http://docs.freitagsrunde.org/Veranstaltungen/ckurs_2010/loesungen/tron-loesung/steps/05-tron.c 05-tron.c] - Bewegen der Spieler&lt;br /&gt;
&lt;br /&gt;
[http://docs.freitagsrunde.org/Veranstaltungen/ckurs_2010/loesungen/tron-loesung/steps/06-tron.c 06-tron.c] - Kollisionen erkennen und behandeln&lt;br /&gt;
&lt;br /&gt;
[http://docs.freitagsrunde.org/Veranstaltungen/ckurs_2010/loesungen/tron-loesung/steps/07-tron.c 07-tron.c] - Punkte / Komplett&lt;/div&gt;</summary>
		<author><name>Seba</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=CAcert&amp;diff=16094</id>
		<title>CAcert</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=CAcert&amp;diff=16094"/>
		<updated>2011-07-15T14:11:06Z</updated>

		<summary type="html">&lt;p&gt;Seba: /* Assurer */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''CAcert''' ist eine Zertifizierungsstelle für kostenlose S/MIME- und SSL-Serverzertifikate. Für personalisierte Zertifikate muss man sich gegenüber CAcert authentifizieren, dafür wurde ein &amp;quot;[[Web of Trust]]&amp;quot; geschaffen, in dem bereits ausreichend authentifizierte CAcert-Benutzer, die sogenannten &amp;quot;Assurer&amp;quot; andere Teilnehmer bestätigen können. Das ganze funktioniert über ein Punktesystem und je mehr Punkte man erhält, desto mehr Rechte hat man und kann dann z.B. für sich selber personalisierte S/MIME-Zertfikate erhalten oder ab einer gewissen Punktzahl auch andere Teilnehmer bestätigen.&lt;br /&gt;
&lt;br /&gt;
Das wichtigste Ziel von CAcert ist, daß ihr [https://www.cacert.org/index.php?id=3 Root-Zertifikat] von den Browser-Herstellern in ihre Produkte aufgenommen wird, damit bei SSL-verschlüsselten Seiten, deren Schlüssel von CAcert unterschrieben wurden, zukünftig keine Warnhinweise mehr angezeigt werden, so wie man es schon von den großen kommerziellen Zertifizierungsstellen her kennt.&lt;br /&gt;
&lt;br /&gt;
== Die Freitagsrunde bestätigt dich ==&lt;br /&gt;
Einige von uns und unseren Ehemaligen sind CAcert-Assurer&amp;lt;!-- bzw. gerade dabei, die benötigten Punkte zu erhalten--&amp;gt;. Unser Ziel ist es, dass Interessierte bei uns direkt alle benötigten Punkte für die Nutzung von CAcert erhalten können, vorausgesetzt natürlich die Identität konnte nach den Regeln von CAcert überprüft werden (zwei gültige amtliche Ausweisdokumente, mindestens eins mit Lichtbild).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Wir können zur Zeit max. 100 Punkte vergeben (mehr geht per Web of Trust nicht), so dass du selbst sofort ein Assurer wirst. Bei Interesse oder für Fragen und Hinweise, sind für unter [mailto:cacert@freitagsrunde.org cacert@freitagsrunde.org] erreichbar. Da nicht immer alle Assurer freitags da sind, bitte unbedingt vorher per E-Mail ([mailto:cacert@freitagsrunde.org cacert@freitagsrunde.org]) anmelden, um unnötige Wege zu vermeiden.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Derzeit gibt es leider nicht immer Assurer, die regelmäßig bei den Treffen der Freitagsrunde anwesend sind. Eine Bestätigung ist daher im Moment am besten auf Anfrage möglich. Alle aktiven Assurer erreichst Du per E-Mail ([mailto:cacert@freitagsrunde.org cacert@freitagsrunde.org]).&lt;br /&gt;
&lt;br /&gt;
== Assurer ==&lt;br /&gt;
* [[Benutzer:Mutax|Florian Streibelt]] (35 Punkte CAcert)&lt;br /&gt;
* Sebastian Dyroff (10 Punkte CAcert)&lt;br /&gt;
* [[Benutzer:Bmay|Bernd May]] (10 Punkte Cacert)&lt;br /&gt;
* Sebastian Lohff (25 Punkte CAcert)&lt;br /&gt;
* Alexander Kührmann (25 Punkte CAcert)&lt;br /&gt;
&lt;br /&gt;
==== Nicht mehr regelmäßig anwesend: ====&lt;br /&gt;
* [[Benutzer:Martin Häcker|Martin Häcker]] (35 Punkte CAcert)&lt;br /&gt;
* [[Benutzer:Thomas|Thomas Kaschwig]] (35 Punkte CAcert)&lt;br /&gt;
* [[Benutzer:Felix|Felix Schwarz]] (35 Punkte CAcert)&lt;br /&gt;
* [[Benutzer:dStulle|Daniel Sturm]] (35 Punkte CAcert)&lt;br /&gt;
* [[Benutzer:Cleeus|Kai Dietrich]] (25 Punkte CAcert)&lt;br /&gt;
* [[Benutzer:Dan|Dan Levin]] (20 Punkte CAcert)&lt;br /&gt;
* [[Benutzer:buchholz|Robert Buchholz]] (15 Punkte CAcert)&lt;br /&gt;
* [[Benutzer:Felixf|Felix Friedrich]] (35 Punkte CAcert)&lt;br /&gt;
* [[Benutzer:Bastla|Sebastian Lange]] (35 Punkte CAcert)&lt;br /&gt;
* [[Benutzer:BjörnL|Björn Lohrmann]] (10 Punkte CAcert)&lt;br /&gt;
&lt;br /&gt;
== Wo und wann findet das ganze statt? ==&lt;br /&gt;
&lt;br /&gt;
Wir sind eine Studierendeninitiative, die sich regelmäßig am Freitag trifft, daher auch unser Name. &lt;br /&gt;
&amp;lt;!-- Die CAcert-Zertifizierung führen wir i.d.R. vor oder nach dem Treffen durch, in Ausnahmefällen können wir jedoch auch individuelle Termine vereinbaren. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Wo? ===&lt;br /&gt;
&lt;br /&gt;
 Technische Universität Berlin&lt;br /&gt;
 Raum [[FR 5518]]&lt;br /&gt;
 Franklinstr. 28/29&lt;br /&gt;
 10587 Berlin&lt;br /&gt;
&lt;br /&gt;
=== Wann? ===&lt;br /&gt;
&lt;br /&gt;
Unsere Sitzung beginnt jeden Freitag um 13 Uhr und geht bis ca. 15:00. Während des Treffen führen wir keine Assurings durch. Nach dem Treffen ist ein Assuring aber nach Absprache möglich. Bitte unbdeingt vorher per E-Mail anmelden und abklären, wann genau Assurer da sind - die 'Personaldecke' ist derzeit recht dünn.&lt;br /&gt;
&lt;br /&gt;
== Wie funktionierts? ==&lt;br /&gt;
&lt;br /&gt;
Du zeigst uns deine Personaldokumente (mind. ein amtlicher Ausweis, zwei stark bevorzugt), füllst das CAcert-Formular aus. Solltest du auf den Ausweisen erkennbar sein, vergeben wir anschließend die Punkte und tragen das auf der CAcert-Webseite ein. Fertig. Das ganze dauert idR. etwa 10-15 Minuten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Was soll ich mitbringen? ==&lt;br /&gt;
&lt;br /&gt;
# Zwei gültige amtliche Ausweisdokumente (z.B. Personalausweis + Führerschein). Wichtig: Auf mindestens einem Bild solltest du gut zu erkennen sein.&lt;br /&gt;
# Für Thawte-Zertifizierungen: Eine Kopie (Vorder- und Rückseite) deiner Personaldokumente. &lt;br /&gt;
# Für Thawte-Zertifizierungen: Im [https://www.thawte.com/cgi/personal/wot/directory.exe?node=397 Notary-Listing bei Thawte] [https://www.thawte.com/cgi/personal/wot/wotpermission.exe?add=esLj9v2MdTCJh2t4JAMazCA&amp;amp;ref=25&amp;amp;return=directory.exe&amp;amp;node=397 &amp;quot;Felix Schwarz&amp;quot; freischalten] (&amp;quot;allow this notary to view your details&amp;quot;).&lt;br /&gt;
# [http://www.cacert.org/cap.php?lang=de_DE CAcert-Formulare] haben wir da, du kannst sie aber natürlich auch schon vorher bei CAcert herunterladen und ausfüllen. Die [https://www.thawte.com/en/wot/tngerman.pdf Thawte-Formulare] sind etwas versteckter, aber ebenfalls erhältlich.&lt;br /&gt;
# Du solltest bereits einen Account bei [https://www.cacert.org/ CAcert] besitzen (gleiches gilt natürlich für [http://www.thawte.com/wot/index.html Thawte]).&lt;br /&gt;
# Dich selbst.&lt;br /&gt;
&lt;br /&gt;
== Was muss ich danach noch machen? ==&lt;br /&gt;
&lt;br /&gt;
Wenn du bei uns schon die maximalen 100 Punkte bekommen hast, gibt es eigentlich für dich nicht mehr viel zu machen. Allerdings fänden wir es schön, wenn du folgende Bitten befolgen würdest:&lt;br /&gt;
# Mit 100 Punkten bist du selbst Assurer, kannst also andere bestätigen. Bitte missbrauche deine neue Macht nicht und prüfe die Identität der Leute, die du zertifizierst.&lt;br /&gt;
# Ein Projekt wie CAcert lebt davon, dass es möglichst viele Assurer gibt. Da du jetzt auch einer bist, trage dich doch in die Assurer-Liste ein, damit dich andere finden (dies ist standardmäßig nicht der Fall): Einloggen bei CAcert - Meine Details - Mein Listeneintrag.&lt;br /&gt;
# Installiere das [https://www.cacert.org/index.php?id=3 CAcert-Rootzertifikat] auf Systemen, die du ev. betreust (Familie, Freunde, Verwandte), um für größere Akzeptanz zu werben.&lt;br /&gt;
# Werbe allgemein für CAcert, so dass z.B. auch Foren-Bekannte etc. sich das CAcert-Rootzertifikat installieren.&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* https://www.cacert.org/&lt;br /&gt;
* http://wiki.cacert.org/&lt;br /&gt;
&lt;br /&gt;
[[Kategorie: Kryptologie]]&lt;/div&gt;</summary>
		<author><name>Seba</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=CAcert&amp;diff=16089</id>
		<title>CAcert</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=CAcert&amp;diff=16089"/>
		<updated>2011-07-12T23:46:01Z</updated>

		<summary type="html">&lt;p&gt;Seba: /* Die Freitagsrunde bestätigt dich */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''CAcert''' ist eine Zertifizierungsstelle für kostenlose S/MIME- und SSL-Serverzertifikate. Für personalisierte Zertifikate muss man sich gegenüber CAcert authentifizieren, dafür wurde ein &amp;quot;[[Web of Trust]]&amp;quot; geschaffen, in dem bereits ausreichend authentifizierte CAcert-Benutzer, die sogenannten &amp;quot;Assurer&amp;quot; andere Teilnehmer bestätigen können. Das ganze funktioniert über ein Punktesystem und je mehr Punkte man erhält, desto mehr Rechte hat man und kann dann z.B. für sich selber personalisierte S/MIME-Zertfikate erhalten oder ab einer gewissen Punktzahl auch andere Teilnehmer bestätigen.&lt;br /&gt;
&lt;br /&gt;
Das wichtigste Ziel von CAcert ist, daß ihr [https://www.cacert.org/index.php?id=3 Root-Zertifikat] von den Browser-Herstellern in ihre Produkte aufgenommen wird, damit bei SSL-verschlüsselten Seiten, deren Schlüssel von CAcert unterschrieben wurden, zukünftig keine Warnhinweise mehr angezeigt werden, so wie man es schon von den großen kommerziellen Zertifizierungsstellen her kennt.&lt;br /&gt;
&lt;br /&gt;
== Die Freitagsrunde bestätigt dich ==&lt;br /&gt;
Einige von uns und unseren Ehemaligen sind CAcert-Assurer&amp;lt;!-- bzw. gerade dabei, die benötigten Punkte zu erhalten--&amp;gt;. Unser Ziel ist es, dass Interessierte bei uns direkt alle benötigten Punkte für die Nutzung von CAcert erhalten können, vorausgesetzt natürlich die Identität konnte nach den Regeln von CAcert überprüft werden (zwei gültige amtliche Ausweisdokumente, mindestens eins mit Lichtbild).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Wir können zur Zeit max. 100 Punkte vergeben (mehr geht per Web of Trust nicht), so dass du selbst sofort ein Assurer wirst. Bei Interesse oder für Fragen und Hinweise, sind für unter [mailto:cacert@freitagsrunde.org cacert@freitagsrunde.org] erreichbar. Da nicht immer alle Assurer freitags da sind, bitte unbedingt vorher per E-Mail ([mailto:cacert@freitagsrunde.org cacert@freitagsrunde.org]) anmelden, um unnötige Wege zu vermeiden.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Derzeit gibt es leider nicht immer Assurer, die regelmäßig bei den Treffen der Freitagsrunde anwesend sind. Eine Bestätigung ist daher im Moment am besten auf Anfrage möglich. Alle aktiven Assurer erreichst Du per E-Mail ([mailto:cacert@freitagsrunde.org cacert@freitagsrunde.org]).&lt;br /&gt;
&lt;br /&gt;
== Assurer ==&lt;br /&gt;
* [[Benutzer:Mutax|Florian Streibelt]] (35 Punkte CAcert)&lt;br /&gt;
* Sebastian Dyroff (10 Punkte CAcert)&lt;br /&gt;
* [[Benutzer:Bmay|Bernd May]] (10 Punkte Cacert)&lt;br /&gt;
* Sebastian Lohff (20 Punkte CAcert)&lt;br /&gt;
&lt;br /&gt;
==== Nicht mehr regelmäßig anwesend: ====&lt;br /&gt;
* [[Benutzer:Martin Häcker|Martin Häcker]] (35 Punkte CAcert)&lt;br /&gt;
* [[Benutzer:Thomas|Thomas Kaschwig]] (35 Punkte CAcert)&lt;br /&gt;
* [[Benutzer:Felix|Felix Schwarz]] (35 Punkte CAcert)&lt;br /&gt;
* [[Benutzer:dStulle|Daniel Sturm]] (35 Punkte CAcert)&lt;br /&gt;
* [[Benutzer:Cleeus|Kai Dietrich]] (25 Punkte CAcert)&lt;br /&gt;
* [[Benutzer:Dan|Dan Levin]] (20 Punkte CAcert)&lt;br /&gt;
* [[Benutzer:buchholz|Robert Buchholz]] (15 Punkte CAcert)&lt;br /&gt;
* [[Benutzer:Felixf|Felix Friedrich]] (35 Punkte CAcert)&lt;br /&gt;
* [[Benutzer:Bastla|Sebastian Lange]] (35 Punkte CAcert)&lt;br /&gt;
* [[Benutzer:BjörnL|Björn Lohrmann]] (10 Punkte CAcert)&lt;br /&gt;
&lt;br /&gt;
== Wo und wann findet das ganze statt? ==&lt;br /&gt;
&lt;br /&gt;
Wir sind eine Studierendeninitiative, die sich regelmäßig am Freitag trifft, daher auch unser Name. &lt;br /&gt;
&amp;lt;!-- Die CAcert-Zertifizierung führen wir i.d.R. vor oder nach dem Treffen durch, in Ausnahmefällen können wir jedoch auch individuelle Termine vereinbaren. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Wo? ===&lt;br /&gt;
&lt;br /&gt;
 Technische Universität Berlin&lt;br /&gt;
 Raum [[FR 5518]]&lt;br /&gt;
 Franklinstr. 28/29&lt;br /&gt;
 10587 Berlin&lt;br /&gt;
&lt;br /&gt;
=== Wann? ===&lt;br /&gt;
&lt;br /&gt;
Unsere Sitzung beginnt jeden Freitag um 13 Uhr und geht bis ca. 15:00. Während des Treffen führen wir keine Assurings durch. Nach dem Treffen ist ein Assuring aber nach Absprache möglich. Bitte unbdeingt vorher per E-Mail anmelden und abklären, wann genau Assurer da sind - die 'Personaldecke' ist derzeit recht dünn.&lt;br /&gt;
&lt;br /&gt;
== Wie funktionierts? ==&lt;br /&gt;
&lt;br /&gt;
Du zeigst uns deine Personaldokumente (mind. ein amtlicher Ausweis, zwei stark bevorzugt), füllst das CAcert-Formular aus. Solltest du auf den Ausweisen erkennbar sein, vergeben wir anschließend die Punkte und tragen das auf der CAcert-Webseite ein. Fertig. Das ganze dauert idR. etwa 10-15 Minuten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Was soll ich mitbringen? ==&lt;br /&gt;
&lt;br /&gt;
# Zwei gültige amtliche Ausweisdokumente (z.B. Personalausweis + Führerschein). Wichtig: Auf mindestens einem Bild solltest du gut zu erkennen sein.&lt;br /&gt;
# Für Thawte-Zertifizierungen: Eine Kopie (Vorder- und Rückseite) deiner Personaldokumente. &lt;br /&gt;
# Für Thawte-Zertifizierungen: Im [https://www.thawte.com/cgi/personal/wot/directory.exe?node=397 Notary-Listing bei Thawte] [https://www.thawte.com/cgi/personal/wot/wotpermission.exe?add=esLj9v2MdTCJh2t4JAMazCA&amp;amp;ref=25&amp;amp;return=directory.exe&amp;amp;node=397 &amp;quot;Felix Schwarz&amp;quot; freischalten] (&amp;quot;allow this notary to view your details&amp;quot;).&lt;br /&gt;
# [http://www.cacert.org/cap.php?lang=de_DE CAcert-Formulare] haben wir da, du kannst sie aber natürlich auch schon vorher bei CAcert herunterladen und ausfüllen. Die [https://www.thawte.com/en/wot/tngerman.pdf Thawte-Formulare] sind etwas versteckter, aber ebenfalls erhältlich.&lt;br /&gt;
# Du solltest bereits einen Account bei [https://www.cacert.org/ CAcert] besitzen (gleiches gilt natürlich für [http://www.thawte.com/wot/index.html Thawte]).&lt;br /&gt;
# Dich selbst.&lt;br /&gt;
&lt;br /&gt;
== Was muss ich danach noch machen? ==&lt;br /&gt;
&lt;br /&gt;
Wenn du bei uns schon die maximalen 100 Punkte bekommen hast, gibt es eigentlich für dich nicht mehr viel zu machen. Allerdings fänden wir es schön, wenn du folgende Bitten befolgen würdest:&lt;br /&gt;
# Mit 100 Punkten bist du selbst Assurer, kannst also andere bestätigen. Bitte missbrauche deine neue Macht nicht und prüfe die Identität der Leute, die du zertifizierst.&lt;br /&gt;
# Ein Projekt wie CAcert lebt davon, dass es möglichst viele Assurer gibt. Da du jetzt auch einer bist, trage dich doch in die Assurer-Liste ein, damit dich andere finden (dies ist standardmäßig nicht der Fall): Einloggen bei CAcert - Meine Details - Mein Listeneintrag.&lt;br /&gt;
# Installiere das [https://www.cacert.org/index.php?id=3 CAcert-Rootzertifikat] auf Systemen, die du ev. betreust (Familie, Freunde, Verwandte), um für größere Akzeptanz zu werben.&lt;br /&gt;
# Werbe allgemein für CAcert, so dass z.B. auch Foren-Bekannte etc. sich das CAcert-Rootzertifikat installieren.&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* https://www.cacert.org/&lt;br /&gt;
* http://wiki.cacert.org/&lt;br /&gt;
&lt;br /&gt;
[[Kategorie: Kryptologie]]&lt;/div&gt;</summary>
		<author><name>Seba</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=CAcert&amp;diff=16033</id>
		<title>CAcert</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=CAcert&amp;diff=16033"/>
		<updated>2011-06-20T12:35:20Z</updated>

		<summary type="html">&lt;p&gt;Seba: /* Assurer */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''CAcert''' ist eine Zertifizierungsstelle für kostenlose S/MIME- und SSL-Serverzertifikate. Für personalisierte Zertifikate muss man sich gegenüber CAcert authentifizieren, dafür wurde ein &amp;quot;[[Web of Trust]]&amp;quot; geschaffen, in dem bereits ausreichend authentifizierte CAcert-Benutzer, die sogenannten &amp;quot;Assurer&amp;quot; andere Teilnehmer bestätigen können. Das ganze funktioniert über ein Punktesystem und je mehr Punkte man erhält, desto mehr Rechte hat man und kann dann z.B. für sich selber personalisierte S/MIME-Zertfikate erhalten oder ab einer gewissen Punktzahl auch andere Teilnehmer bestätigen.&lt;br /&gt;
&lt;br /&gt;
Das wichtigste Ziel von CAcert ist, daß ihr [https://www.cacert.org/index.php?id=3 Root-Zertifikat] von den Browser-Herstellern in ihre Produkte aufgenommen wird, damit bei SSL-verschlüsselten Seiten, deren Schlüssel von CAcert unterschrieben wurden, zukünftig keine Warnhinweise mehr angezeigt werden, so wie man es schon von den großen kommerziellen Zertifizierungsstellen her kennt.&lt;br /&gt;
&lt;br /&gt;
== Die Freitagsrunde bestätigt dich ==&lt;br /&gt;
Einige von uns und unseren Ehemaligen sind CAcert-Assurer&amp;lt;!-- bzw. gerade dabei, die benötigten Punkte zu erhalten--&amp;gt;. Unser Ziel ist es, dass Interessierte bei uns direkt alle benötigten Punkte für die Nutzung von CAcert erhalten können, vorausgesetzt natürlich die Identität konnte nach den Regeln von CAcert überprüft werden (zwei gültige amtliche Ausweisdokumente, mindestens eins mit Lichtbild).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Wir können zur Zeit max. 100 Punkte vergeben (mehr geht per Web of Trust nicht), so dass du selbst sofort ein Assurer wirst. Bei Interesse oder für Fragen und Hinweise, sind für unter [mailto:cacert@freitagsrunde.org cacert@freitagsrunde.org] erreichbar. Da nicht immer alle Assurer freitags da sind, bitte unbedingt vorher per E-Mail ([mailto:cacert@freitagsrunde.org cacert@freitagsrunde.org]) anmelden, um unnötige Wege zu vermeiden.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Derzeit gibt es leider keinen Assurer, der regelmäßig bei den Treffen der Freitagsrunde anwesend ist. Eine Bestätigung ist daher im Moment nicht möglich. Alle aktiven Assurer erreichst Du per E-Mail ([mailto:cacert@freitagsrunde.org cacert@freitagsrunde.org]).&lt;br /&gt;
&lt;br /&gt;
== Assurer ==&lt;br /&gt;
* [[Benutzer:Mutax|Florian Streibelt]] (35 Punkte CAcert)&lt;br /&gt;
* Sebastian Dyroff (10 Punkte CAcert)&lt;br /&gt;
* [[Benutzer:Bmay|Bernd May]] (10 Punkte Cacert)&lt;br /&gt;
* Sebastian Lohff (20 Punkte CAcert)&lt;br /&gt;
&lt;br /&gt;
==== Nicht mehr regelmäßig anwesend: ====&lt;br /&gt;
* [[Benutzer:Martin Häcker|Martin Häcker]] (35 Punkte CAcert)&lt;br /&gt;
* [[Benutzer:Thomas|Thomas Kaschwig]] (35 Punkte CAcert)&lt;br /&gt;
* [[Benutzer:Felix|Felix Schwarz]] (35 Punkte CAcert)&lt;br /&gt;
* [[Benutzer:dStulle|Daniel Sturm]] (35 Punkte CAcert)&lt;br /&gt;
* [[Benutzer:Cleeus|Kai Dietrich]] (25 Punkte CAcert)&lt;br /&gt;
* [[Benutzer:Dan|Dan Levin]] (20 Punkte CAcert)&lt;br /&gt;
* [[Benutzer:buchholz|Robert Buchholz]] (15 Punkte CAcert)&lt;br /&gt;
* [[Benutzer:Felixf|Felix Friedrich]] (35 Punkte CAcert)&lt;br /&gt;
* [[Benutzer:Bastla|Sebastian Lange]] (35 Punkte CAcert)&lt;br /&gt;
* [[Benutzer:BjörnL|Björn Lohrmann]] (10 Punkte CAcert)&lt;br /&gt;
&lt;br /&gt;
== Wo und wann findet das ganze statt? ==&lt;br /&gt;
&lt;br /&gt;
Wir sind eine Studierendeninitiative, die sich regelmäßig am Freitag trifft, daher auch unser Name. &lt;br /&gt;
&amp;lt;!-- Die CAcert-Zertifizierung führen wir i.d.R. vor oder nach dem Treffen durch, in Ausnahmefällen können wir jedoch auch individuelle Termine vereinbaren. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Wo? ===&lt;br /&gt;
&lt;br /&gt;
 Technische Universität Berlin&lt;br /&gt;
 Raum [[FR 5518]]&lt;br /&gt;
 Franklinstr. 28/29&lt;br /&gt;
 10587 Berlin&lt;br /&gt;
&lt;br /&gt;
=== Wann? ===&lt;br /&gt;
&lt;br /&gt;
Unsere Sitzung beginnt jeden Freitag um 13 Uhr und geht bis ca. 15:00. Während des Treffen führen wir keine Assurings durch. Nach dem Treffen ist ein Assuring aber nach Absprache möglich. Bitte unbdeingt vorher per E-Mail anmelden und abklären, wann genau Assurer da sind - die 'Personaldecke' ist derzeit recht dünn.&lt;br /&gt;
&lt;br /&gt;
== Wie funktionierts? ==&lt;br /&gt;
&lt;br /&gt;
Du zeigst uns deine Personaldokumente (mind. ein amtlicher Ausweis, zwei stark bevorzugt), füllst das CAcert-Formular aus. Solltest du auf den Ausweisen erkennbar sein, vergeben wir anschließend die Punkte und tragen das auf der CAcert-Webseite ein. Fertig. Das ganze dauert idR. etwa 10-15 Minuten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Was soll ich mitbringen? ==&lt;br /&gt;
&lt;br /&gt;
# Zwei gültige amtliche Ausweisdokumente (z.B. Personalausweis + Führerschein). Wichtig: Auf mindestens einem Bild solltest du gut zu erkennen sein.&lt;br /&gt;
# Für Thawte-Zertifizierungen: Eine Kopie (Vorder- und Rückseite) deiner Personaldokumente. &lt;br /&gt;
# Für Thawte-Zertifizierungen: Im [https://www.thawte.com/cgi/personal/wot/directory.exe?node=397 Notary-Listing bei Thawte] [https://www.thawte.com/cgi/personal/wot/wotpermission.exe?add=esLj9v2MdTCJh2t4JAMazCA&amp;amp;ref=25&amp;amp;return=directory.exe&amp;amp;node=397 &amp;quot;Felix Schwarz&amp;quot; freischalten] (&amp;quot;allow this notary to view your details&amp;quot;).&lt;br /&gt;
# [http://www.cacert.org/cap.php?lang=de_DE CAcert-Formulare] haben wir da, du kannst sie aber natürlich auch schon vorher bei CAcert herunterladen und ausfüllen. Die [https://www.thawte.com/en/wot/tngerman.pdf Thawte-Formulare] sind etwas versteckter, aber ebenfalls erhältlich.&lt;br /&gt;
# Du solltest bereits einen Account bei [https://www.cacert.org/ CAcert] besitzen (gleiches gilt natürlich für [http://www.thawte.com/wot/index.html Thawte]).&lt;br /&gt;
# Dich selbst.&lt;br /&gt;
&lt;br /&gt;
== Was muss ich danach noch machen? ==&lt;br /&gt;
&lt;br /&gt;
Wenn du bei uns schon die maximalen 100 Punkte bekommen hast, gibt es eigentlich für dich nicht mehr viel zu machen. Allerdings fänden wir es schön, wenn du folgende Bitten befolgen würdest:&lt;br /&gt;
# Mit 100 Punkten bist du selbst Assurer, kannst also andere bestätigen. Bitte missbrauche deine neue Macht nicht und prüfe die Identität der Leute, die du zertifizierst.&lt;br /&gt;
# Ein Projekt wie CAcert lebt davon, dass es möglichst viele Assurer gibt. Da du jetzt auch einer bist, trage dich doch in die Assurer-Liste ein, damit dich andere finden (dies ist standardmäßig nicht der Fall): Einloggen bei CAcert - Meine Details - Mein Listeneintrag.&lt;br /&gt;
# Installiere das [https://www.cacert.org/index.php?id=3 CAcert-Rootzertifikat] auf Systemen, die du ev. betreust (Familie, Freunde, Verwandte), um für größere Akzeptanz zu werben.&lt;br /&gt;
# Werbe allgemein für CAcert, so dass z.B. auch Foren-Bekannte etc. sich das CAcert-Rootzertifikat installieren.&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* https://www.cacert.org/&lt;br /&gt;
* http://wiki.cacert.org/&lt;br /&gt;
&lt;br /&gt;
[[Kategorie: Kryptologie]]&lt;/div&gt;</summary>
		<author><name>Seba</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=Datei:Seba.jpg&amp;diff=15046</id>
		<title>Datei:Seba.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=Datei:Seba.jpg&amp;diff=15046"/>
		<updated>2010-09-25T17:46:15Z</updated>

		<summary type="html">&lt;p&gt;Seba: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Seba</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=C-Kurs/Tron&amp;diff=14937</id>
		<title>C-Kurs/Tron</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=C-Kurs/Tron&amp;diff=14937"/>
		<updated>2010-09-17T13:31:15Z</updated>

		<summary type="html">&lt;p&gt;Seba: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Datei:Tron-screenshot.png|miniatur|300px|So in etwa soll dann unser Spiel aussehen]]Hier wollen wir euch mal ein wenig SDL zeigen - am Beispiel von Tron. SDL steht für &amp;quot;Simple Direct media Layer&amp;quot; und kümmert sich um Tastatureingaben und um ein Zeichenfenster (eigentlich um noch viel mehr, [[#Further_reading_oder_.22Was_kann_SDL_denn_noch.3F.22|siehe unten]). SDL ist Plattformunabhängig, ihr könnt euren Code also sowohl unter Linux als auch unter Windows oder Mac compilen und ausführen.  &lt;br /&gt;
&lt;br /&gt;
Tron: Tron ist ein kleines Spiel für zwei (oder mehr) Spieler, dass ihr vielleicht aus dem Film Tron oder dem spiel Amagetronad kennt. In unserer Zwei-Spieler 2D Variante startet jeder Spieler als ein Punkt auf dem Spielfeld. Während des Spieles zieht jeder Spieler eine Linie hinter sich her. Fährt man irgendwo gegen (gegnerische Linie, eigene Linie, Bildschirmrand), so hat man verloren und eine neue Runde beginnt.&lt;br /&gt;
&lt;br /&gt;
Das ganze machen wir Schritt für Schritt, vom Initialisieren des Fensters über abarbeiten der Tastatur-Events und erkennen der Kollisionen bis hin zum zeichnen des Feldes.&lt;br /&gt;
Falls ihr mehr über eine der SDL Funktionen wissen wollt (also alle Funktionen/Datenstrukturen, die mit SDL_ anfangen), könnt ihr entweder auf http://www.libsdl.org/cgi/docwiki.cgi gucken oder (falls ihr ein Unix-Artiges Betriebssystem mit installiertem SDL habt) einfach &amp;quot;man FUNKTION&amp;quot; (z.B. man SDL_Init) in eine Konsole eingeben um hilfe zu dieser Funktion zu bekommen. Ich werde an entsprechenden Stellen einfach (man funktion) als Hinweis schreiben, dass man mit dieser Funktion noch mehr anstellen könnte.&lt;br /&gt;
&lt;br /&gt;
== Was ihr braucht == &lt;br /&gt;
* SDL mit Development-Headers (unter Debian/Ubuntu heißt das Paket libsdl1.2-dev)&lt;br /&gt;
* Die beiden Hilfs-Funktionen um Pixel von zu setzen/lesen (putpixel/getpixel). Diese könnt ihr hier ([http://docs.freitagsrunde.org/Veranstaltungen/ckurs_2010/aufgaben/tron/pixel.h pixel.h]/[http://docs.freitagsrunde.org/Veranstaltungen/ckurs_2010/aufgaben/tron/pixel.c pixel.c]) von uns downloaden oder auch von http://www.libsdl.org/cgi/docwiki.cgi/Pixel_Access .&lt;br /&gt;
&lt;br /&gt;
== Ein erstes Fenster ==&lt;br /&gt;
Fangen wir mit unserem Fenster an.&lt;br /&gt;
&lt;br /&gt;
=== SDL Initialisieren ===&lt;br /&gt;
Zu Beginn müssen wir das SDL Headerfile und unsere pixel.h includen.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 #include &amp;lt;SDL/SDL.h&amp;gt;&lt;br /&gt;
 #include &amp;quot;pixel.h&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In der Main-Funktion rufen wir zu aller erst die Initialisierungsfunktion von SDL auf:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SDL_Init(SDL_INIT_EVERYTHING);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Der einfachheit halber Initialisieren wir alles, was SDL zu bieten hat. Man kann ggf. nur Teilsysteme initialisieren (man SDL_Init), das ist für uns aber gerade nicht so wichtig.&lt;br /&gt;
&lt;br /&gt;
Als nächstes müssen wir SDL sagen, dass wir ein Fenster haben wollen und wie groß dieses sein soll. Das machen wir mit der Funktion ''SDL_Surface *SDL_SetVideoMode(int width, int height, int bpp, Uint32 flags)''. Wir geben der Funktion die gewünschten Parameter für das Fenster und SDL gibt uns ein ''SDL_Surface'' (dieser Typ hält in SDL eine Grafik, in diesem Fall unser Fenster).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 SDL_Surface *screen = SDL_SetVideoMode(640, 480, 32, SDL_SWSURFACE);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Oookay.. SDL gibt uns hier ein&lt;br /&gt;
* 640 Pixel breites&lt;br /&gt;
* 480 Pixel hohes Fenster mit&lt;br /&gt;
* 32 Bits pro Pixel (hat was mit der Farbtiefe zu tun, für uns nicht so wichtig, das passt schon so)&lt;br /&gt;
* als SDL_SW_SURFACE (soll heißen wir benutzen keine Hardwarebeschleunigung)&lt;br /&gt;
Für den letzten Parameter, also die Window Flags, gibt es viele verschiedene Parameter (man SDL_VideoMode) die man einfach miteinaner verunden könnte (z.B. SDL_HWSURFACE | SDL_FULLSCREEN für Vollbild mit Hardwarebeschleunigung), aber auch das ist für uns gerade nicht wichtig.&lt;br /&gt;
&lt;br /&gt;
Zu guter letzt rufen wir am Ende der main-Funktion noch ein ''SDL_Quit()'' auf, damit SDL sich deinitialisiert, wenn wir das Programm beenden.&lt;br /&gt;
&lt;br /&gt;
Nun wollen wir unser Grundgerüst ausprobieren. Damit wenn wir das Programm starten das Fenster nicht sofort wieder zu geht packen wir hinter die Initialisierung (aber vor das ''SDL_Quit()'') ein ''SDL_Delay(5000)'' (''SDL_Delay'' nimmt die zeit in Millisekunden, d.h. der Aufruf wartet 5 Sekunden). Und nun Compilen und ausprobieren!&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
gcc -Wall tron.c pixel.c -lSDL -o tron &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Falls ihr (wie ich) zu faul seid das jedes mal einzugeben könnt ihr auch folgendes Makefile benutzen (soll heißen in die Datei Makefile pasten) und dann nur noch make bzw. make run eingeben.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CFLAGS=`sdl-config --cflags` -Wall&lt;br /&gt;
LDFLAGS=`sdl-config --libs`&lt;br /&gt;
OBJ=tron.o pixel.c&lt;br /&gt;
&lt;br /&gt;
.PHONY: clean run&lt;br /&gt;
&lt;br /&gt;
tron: $(OBJ)&lt;br /&gt;
&lt;br /&gt;
run: tron&lt;br /&gt;
	./tron&lt;br /&gt;
&lt;br /&gt;
clean:&lt;br /&gt;
	rm -f *.o tron&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Jetzt solltet ihr für 5 Sekunden ein Fenster sehen, welches sich dann wieder schliesst.&lt;br /&gt;
&lt;br /&gt;
=== SDL Events ===&lt;br /&gt;
Ein sich nach einiger Zeit wieder schliessendes Fenster bringt uns natürlich nicht so viel. Was wir wollen ist mit SDL zu interagieren. Wir wollen wissen, ob jemand eine Taste auf der Tastatur gedrückt hat oder das Fenster schliessen wollte. All das sagt uns SDL mit sog. *Events*. Davon gibt es viele für alle möglichen gegebenheiten (man SDL_Event), aber wir wollen als erstes nur den Fall des sich schliessenden Fensters betrachten.&lt;br /&gt;
&lt;br /&gt;
Als erstes brauchen wir eine Variable vom Typ ''SDL_Event'' in der wir das Event speichern. Um SDL nach einen Event zu fragen übergeben wir ''int SDL_PollEvent(SDL_Event*)'' eine Referenz zu dieser Variable.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 SDL_Event event;&lt;br /&gt;
 SDL_PollEvent(&amp;amp;event);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
''SDL_PollEvent'' hat als Rückgabewert 1, wenn es ein Event gefunden hat und 0, falls es kein neues Event gab. ''SDL_Event event'' ist ein struct, in event.type steht der Typ des aktuellen events. Für unser Spiel sind folgende Events wichtig (Dies sind dann auch die Werte, welche in event.type stehen): SDL_QUIT falls das Programm beendet werden soll und SDL_KEYDOWN, falls eine Taste auf der Tastatur gedrückt wurde.&lt;br /&gt;
&lt;br /&gt;
Schreibt nun in die main-Methode eine while-Schleife. In dieser Schleife sollen SDL-Events abgefragt werden (unser sog. Event-Loop). Wenn ein SDL_QUIT-Event auftritt soll das Programm beendet werden. Damit die while-Schleife nicht all eure CPU-Zeit frisst solltet ihr mit ''SDL_Delay'' eine Verzögerung von 10-50 Millisekunden einbauen.&lt;br /&gt;
&lt;br /&gt;
Nun kann man das Fenster über das ihm gegebene X (bei entsprechendem Windowmanager *hust*) schliessen. Horray, unser Fenster hört auf uns!&lt;br /&gt;
&lt;br /&gt;
== Tron ==&lt;br /&gt;
&lt;br /&gt;
=== Zustandsvariablen ===&lt;br /&gt;
Es wird Zeit, dass wir zu unserem Spiel kommen. Ein Spieler in Tron hat in etwa folgende Eigenschaften:&lt;br /&gt;
* eine Position (x/y)&lt;br /&gt;
* eine Richtung (up, down, left, right)&lt;br /&gt;
* Punktestand&lt;br /&gt;
* Farbe des Spielers (Definiert als Rot/Grün/Blau-Wert von 0-255)&lt;br /&gt;
Für Position und Punke können wir jeweils den Typ int wählen. Für die Farbe nehmen wir ''SDL_Color'' (das ist ein von SDL definiertes struct mit drei Uint8 r, g und b für den Farbwert rot, grün und blau (man SDL_Color)). Bei der Richtung könnt ihr euch überlegen, ob ihr lieber ein *enum* nehmen wollt anstatt eines ints. Wir packen diese Werte in ein struct Player, damit wir später Funktionen nur einmal schreiben müssen und dann für jeden Spieler jeweils einmal aufrufen können.&lt;br /&gt;
&lt;br /&gt;
Schreibt nun eine Funktion ''void initPlayers()'' welche die Variablen der beiden Spieler initialisiert (und ihnen auch eine schöne Farbe gibt ;). Die Startposition der Spieler machen wir abhängig von der Spielfeldgröße. Ich schlage halbe Höhe des Feldes als Y-Koordinate und 1/3 bzw. 2/3 der Breite als Startposition vor. Hier ein Codeschnipsel, wie ihr an das ''SDL_Surface'' vom Fenster und an dessen Höhe/Breite kommt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 [...]&lt;br /&gt;
 SDL_Surface *screen = SDL_GetVideoSurface();&lt;br /&gt;
 int hoehe = screen-&amp;gt;h;&lt;br /&gt;
 int breite = screen-&amp;gt;w;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Der Rückgabewert von ''SDL_GetVideoSurface'' ist hierbei mit dem von ''SDL_SetVideoMode'' identisch (halt der Zeichenbereich unseres Fensters).&lt;br /&gt;
&lt;br /&gt;
Ruft nun ''initPlayers()'' in eurer main-Methode nach dem Initialisieren von SDL auf (sonst ist der Rückgabewert von ''SDL_GetVideoSurface()'' nicht definiert und ihr habt keine Fensterhöhe/breite).&lt;br /&gt;
&lt;br /&gt;
=== Zeichnen der Spieler ===&lt;br /&gt;
Nun wollen wir anfangen unsere beiden Spieler zu zeichnen und sich bewegen zu lassen. Dazu setzen wir den Pixel, auf dem der Spieler sich gerade befindet auf seine Farbe.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 putpixel(SDL_Surface *screen, int x, int y, Uint32 pixel);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Da putpixel einen Uint32 als Farbwert erwartet müssen wir unser ''SDL_Color'' wohl umwandeln. Dies passiert mit der Funktion&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 Uint32 SDL_MapRGB(SDL_PixelFormat *fmt, Uint8 r, Uint8 g, Uint8 b);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
wobei mit ''SDL_PixelFormat'' das PixelFormat unseres screens gemeint ist (screen-&amp;gt;format (man SDL_Surface)).&lt;br /&gt;
&lt;br /&gt;
* Schreibt eine Funktion ''Uint32 color2rgb(SDL_Color)'' welche ein ''SDL_Color'' in den entsprechenden ''Uint32'' umwandelt.&lt;br /&gt;
* Schreibt eine Funktion ''void paintPlayer(struct Player*)'' welche einen Spieler zeichnet.&lt;br /&gt;
&lt;br /&gt;
Wichtig: Eure Zeichenoperationen (also alles, was etwas in das Fenster bringt) werden erst sichtbar, wenn ihr SDL sagt, dass ihr eure &amp;quot;Änderungen&amp;quot; sehen wollt. Der einfachheit halber benutzt nach euren Zeichenoperationen ''int SDL_Flip(screen)'' (wobei screen unser Fenster (SDL_Surface*) ist) um dies zu tun (wer hier mehr drüber wissen will kann sich mal ''SDL_UpdateRect'' anschauen).&lt;br /&gt;
&lt;br /&gt;
Nun zeichnet in eurer main-Methode vor dem Event-Loop die beiden Spieler und startet das Programm. Jetzt können wir unsere beiden Spieler als Pixel sehen.&lt;br /&gt;
&lt;br /&gt;
=== Bewegen der Spieler ===&lt;br /&gt;
Ohne Bewegung wird das alles auf Dauer ziemlich langweilig. Deshalb brauchen wir eine Funktion ''void movePlayer(struct Player*)'', welche abhängig von der Richtung des Spielers dessen Position verändert. Diese Funktion müssen wir nun in unserem Event-loop unterbringen. Wenn wir kein Event haben, dann wollen wir unsere Spieler beide bewegen (movePlayer), beide zeichnen (paintPlayer), unseren Bildschirm aktualisieren (''SDL_Flip'') und dann ein wenig warten (''SDL_Delay'').&lt;br /&gt;
&lt;br /&gt;
Wenn das Fertig ist und wir unser Programm starten, dann sehen wir, dass beide Spieler sich in ihre Richtung bewegen und sich ggf. übermalen. Sobald aber einer aus dem Bildschirm verschwindet passieren komische Sachen: Entweder sie kommen auf der anderen Seite wieder raus oder unser Programm stürzt ab. Hmmmm, da fehlt uns wohl...&lt;br /&gt;
&lt;br /&gt;
=== Kollisionen erkennen und behandeln ===&lt;br /&gt;
In unserem Spiel gibt es drei Arten von Kollision&lt;br /&gt;
* Ein Spieler fährt aus dem Fenster raus&lt;br /&gt;
* Ein Spieler fährt gegen eine Linie (eine Eigene oder eines Gegners)&lt;br /&gt;
* Beide Spieler befinden sich auf der gleichen Position (unentschieden!)&lt;br /&gt;
&lt;br /&gt;
Die ersten beiden Fälle wollen wir mit der Funktion behandeln ''int playerCollided(struct Player*)''. Die Soll überprüfen, ob der Spieler in seiner aktuellen Position ausserhalb des Bildschirms ist oder ob dort schon einer vor ihm war. Letzteres könnt ihr leicht überprüfen, indem ihr guckt, ob an dieser Stelle ein schwarzer Pixel ist (soll heißen: leeres Spielfeld). Das könnt ihr überprüfen, indem ihr schaut, ob der Wert, den ''Uint32 getpixel(SDL_Surface *screen, int x, inty)'' zurückliefert dem entspricht, was ''SDL_MapRGB'' für Schwarz (0, 0, 0) zurückgibt. Die Funktion soll 1 für Kollision und 0 für keine Kollision zurückgeben.&lt;br /&gt;
&lt;br /&gt;
Nun brauchen wir die Funktion ''int gotCollison()'' welche 0 für keine Kollision, 1 für Player1 kollidiert, 2 für Player2 kollidiert und 3 für Unentschieden zurückgibt. Benutzt hierzu ''playerCollided()'' um herauszufinden, ob ein Spieler kollidiert ist und implementiert ausserdem den 3. Fall. &lt;br /&gt;
&lt;br /&gt;
Aber was machen wir, wenn wir eine Kollision erkannt haben? Wir setzen alles wieder auf den Startzustand. Also brauchen wir eine Funktion ''void resetGame()'' die&lt;br /&gt;
* Unser Fenster komplett schwärzt (uns von den alten Linien befreit)&lt;br /&gt;
* Die Spieler auf ihre Startpositionen setzt (Richtung nicht vergessen!)&lt;br /&gt;
* Die beiden Spieler zeichnet&lt;br /&gt;
&lt;br /&gt;
Zum Schwärzen des Bildschirms könnt ihr ''SDL_FillRect(screen, NULL, SDL_MapRGB(screen-&amp;gt;format, 0, 0, 0))'' benutzen (man SDL_FillRect). NULL steht hierbei für das zu füllende Rechteck - wir übergeben keines, denn dadurch wird automatisch der gesamte Bildschirm angenommen.&lt;br /&gt;
&lt;br /&gt;
Nun kombinieren wir all diese schönen Funktionen miteinander in unserem Event-loop in unserer main-methode:&lt;br /&gt;
* Fortbewegen beider Spieler&lt;br /&gt;
* Überprüfen, ob eine Kollision stattfand&lt;br /&gt;
* Wenn ja: Dem jeweiligen Spieler, der nicht Kollidiert ist, einen Punkt geben und das Spielfeld resetten&lt;br /&gt;
* Wenn nicht: Beide Spieler auf ihrer neuen Position zeichnen&lt;br /&gt;
* Den Bildschirm updaten (&amp;quot;flippen&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Puh! Nun haben wir es aber auch schon fast geschafft. Fehlt nur noch die Bewegung der Spieler und eine Punkteanzeige.&lt;br /&gt;
&lt;br /&gt;
=== Tastatureingaben zu Richtungswechsel ===&lt;br /&gt;
Um die Richtung eines Spielers zu wechseln müssen wir ihm eigentlich nur einen anderen Wert in seine Richtungsvariable schreiben. Den Rest macht dann schon unsere movePlayer-Funktion im Event-Loop. Aber wie kriegen wir raus, welche Taste gedrückt wurde? Genau, per Event. Momentan dümpelt in unserer Event-Abfrage nur unser SDL_QUIT-Event rum. Nun wollen wir ausserdem gucken, ob es sich nich doch um ein SDL_KEYDOWN-Event handelt. Wenn es eines ist (event.type == SDL_KEYDOWN, schon vergessen?), steht in event.key.keysym.sym die Taste, die gedrückt wurde. sym ist vom Typ SDLKey. Alle benutzbaren Tasten findet ihr unter (man SDLKey), aber momentan sollten SDLK_LEFT, SDLK_RIGHT, SDLK_UP, SDLK_DOWN, SDLK_a, SDLK_w, SDLK_s und SDLK_d reichen.&lt;br /&gt;
&lt;br /&gt;
Also: Behandelt das SDL_KEYDOWN Event, schaut ob eine Taste für einen der Spieler gedrückt wurde und behandelt diese. Wenn ihr das Spiel etwas einfacher machen wollt, dann passt auf, das kein Spieler in sich selbst steuern kann (d.h. keine 180° Wendung, also z.B. von left zu right wechseln).&lt;br /&gt;
&lt;br /&gt;
Tja, nun habt ihr ein spielbares (und Plattformunabhängiges) Multiplayer 2D Tron Spiel!&lt;br /&gt;
&lt;br /&gt;
=== Punkte? ===&lt;br /&gt;
Naja gut, was noch fehlt ist eine Punkteanzeige. Die realisieren wir ganz einfach über unseren Fenstertitel. Den kann man mit&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 SDL_WM_SetCaption(&amp;quot;Mein tolles Fenster!1!!&amp;quot;, 0);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
setzen.&lt;br /&gt;
&lt;br /&gt;
Schreibt eine Funktion ''void updateWindowTitle()'' welche (z.B. mit sprintf) einen Titel für das Fenster (z.B. C-Kurs Tron) und dahinter den aktuellen Punktestand zusammensetzt und unserem Fenster diesen gibt. Diese Funktion muss immer aufgerufen werden, wenn sich der Punktestand verändert (und natürlich auch einmal am Anfang). Sucht euch einen schönen Platz dafür aus.&lt;br /&gt;
&lt;br /&gt;
== Bonusrunde == &lt;br /&gt;
Wer jetzt noch nicht genug hat...&lt;br /&gt;
&lt;br /&gt;
=== Einsteiger-Bonus: Quit on Esc ===&lt;br /&gt;
Das Spiel soll sich beenden, wenn jemand Escape drückt.&lt;br /&gt;
&lt;br /&gt;
=== Bonus: Fenster resizen ===&lt;br /&gt;
Macht das Fenster vergrößerbar bzw. verkleinerbar! Denkt dran, dass bei einer neuen Runde die Spieler auch an der Richtigen stelle Anfangen (falls ihr diese Werte direkt als Zahlen reingeschrieben habt).&lt;br /&gt;
&lt;br /&gt;
=== Bonus: Ein Torus als Spielfeld ===&lt;br /&gt;
Warum sollte man an der Spielwand crashen? Man könnte doch an der jeweils anderen Seite des Feldes herauskommen...&lt;br /&gt;
&lt;br /&gt;
=== Bonus Bonus: Massive Multiplayer ===&lt;br /&gt;
Baut das Spiel so um, dass man beim Starten auf der Kommandozeile eine Spielerzahl übergeben kann (z.B. 2-4 Spieler). Damit es nich zu eng auf der Tastatur wird könnte es nützlich sein, wenn ihr das Spiel so umschreibt, dass man nur noch zwei Tasten für Links/Rechts hat um den Spieler zu kontrollieren (Megabonus: Ausser ihr baut Maus+Joysticksupport ein).&lt;br /&gt;
&lt;br /&gt;
== Further reading oder &amp;quot;Was kann SDL denn noch?&amp;quot; ==&lt;br /&gt;
SDL hat noch einige interessante Zusatzmodule&lt;br /&gt;
* SDL_Image - Kann ein haufen Bildformate laden und in ein SDL_Surface packen (von sich aus kann SDL nur .bmp)&lt;br /&gt;
* SDL_Mixer - SDL Soundausgabe&lt;br /&gt;
* SDL_Net - SDL Netzwerkbibliothek&lt;br /&gt;
Ausserdem kann SDL ziemlich einfach geladene Bilder auf den Bildschirm bringen (man SDL_BlitSurface), Tastatur/Maus/Joystick eingabe behandeln, Musik/Soundeffekte zusammenmixen oder auch (mit der entsprechenden Bibliothek) Netzwerkkram machen. Gerne wird es für 2D Spiele benutzt (z.B. supertux, xmame, frozen-bubbles, ...), aber auch als Wrapper für OpenGL (sauerbraten, der Quake3 Linux Port, warsow, armagetronad...); teilweise nutzen auch einige Anwendungen SDL (mplayer, virtualbox, dosbox, ...). &lt;br /&gt;
&lt;br /&gt;
Einsteigerfreundliche SDL-Tutorials:&lt;br /&gt;
* http://www.lazyfoo.net/SDL_tutorials/index.php&lt;br /&gt;
* http://www.libsdl.org/cgi/docwiki.cgi/&lt;br /&gt;
* http://www.libsdl.org/cgi/docwiki.cgi/Using_OpenGL_With_SDL&lt;br /&gt;
&lt;br /&gt;
Happy Hacking ;)&lt;/div&gt;</summary>
		<author><name>Seba</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=C-Kurs/%C3%9Cbungsaufgaben&amp;diff=14856</id>
		<title>C-Kurs/Übungsaufgaben</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=C-Kurs/%C3%9Cbungsaufgaben&amp;diff=14856"/>
		<updated>2010-09-14T18:39:29Z</updated>

		<summary type="html">&lt;p&gt;Seba: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wir haben jeder Aufgabe eine Einschätzung ihrer Schwierigkeit auf einer Skala von 1 bis 10 vorangestellt. Bei dieser Einschätzung sind wir von einem Gehirn ausgegangen, für welches das jeweilige Themengebiet völlig neu ist, das jedoch schon ein ganz gutes Verständnis dafür hat wie eine Programmiersprache denn so funktioniert. &lt;br /&gt;
Entsprechend kann eine schwer bewertete Aufgabe aus einem frühen Themengebiet für manch einen sehr einfach oder eine leicht bewertete aus einem späten Themengebiet für einen anderen sehr schwer sein. Es ist nur ein Wert, der euch helfen soll eure nächste Aufgabe zu wählen. &lt;br /&gt;
&lt;br /&gt;
Falls ihr Anmerkungen zu den Aufgaben habt, könnt ihr die Diskussionsseiten der jeweiligen Aufgaben nutzen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Schwierigkeitsgrade ==&lt;br /&gt;
&lt;br /&gt;
#  Reines Tutorial. Man muss nicht viel selbst denken&lt;br /&gt;
#  ...&lt;br /&gt;
#  Leichte Übungsaufgabe. Studies, die noch eher unsicher sind werden hier gut begleitet.&lt;br /&gt;
#  ...&lt;br /&gt;
#  Typische Aufgabe. Man muss den Kopf benutzen, bekommt an schwierigen Stellen aber Hilfestellungen.&lt;br /&gt;
#  ...&lt;br /&gt;
#  Herausfordernd, eher etwas für Studies die etwas fitter sind.&lt;br /&gt;
#  ...&lt;br /&gt;
#  Auch erfahrene Programmierer werden hier ein bis zwei Übungen beschäftigt sein&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
#  Tja, die Idee war da. Wir finden sie auch gut, aber es könnte wirklich anstrengend werden.&lt;br /&gt;
&lt;br /&gt;
== Die Aufgaben ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;2&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#D8D8D8&amp;quot;&lt;br /&gt;
 !Aufgabe&lt;br /&gt;
 !Schwierigkeit&lt;br /&gt;
 !Vorwissen&lt;br /&gt;
 !Lerneffekte&lt;br /&gt;
 !Bearbeiter&lt;br /&gt;
 !Korrektur gelesen&lt;br /&gt;
 !Musterlösung&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Von der Konsole zum HelloWorld | Von der Konsole zum HelloWorld]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1. VL&lt;br /&gt;
 | Konsole benutzen, Hello World&lt;br /&gt;
 | Sebastian D.&lt;br /&gt;
 | [[Benutzer:Mario|Mario]] (2009), &lt;br /&gt;
 | &lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Fakultät | Fakultät]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1. VL&lt;br /&gt;
 | Schleifen&lt;br /&gt;
 | Sebastian D.&lt;br /&gt;
 | Daniel (2009), &lt;br /&gt;
 |  &lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2010/Pythagoras-Triplet | Pythagoras-Triplet]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1. VL&lt;br /&gt;
 | Schleifen &amp;lt;br&amp;gt; if-Bedingungen&lt;br /&gt;
 | Gabriel P.&lt;br /&gt;
 | seba(2010)&lt;br /&gt;
 | [[Ckurs2010/Pythagoras-Triplet/Musterloesung | Pythagoras-Triplet]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Fibonacci-Folge|Fibonacci-Folge]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1. VL&lt;br /&gt;
 | Funktionen &amp;lt;br&amp;gt; Rekursion&lt;br /&gt;
 | Paul B.&lt;br /&gt;
 | [[Benutzer:Mario|Mario]] (2010)&lt;br /&gt;
 | [[Ckurs2009/Fibonacci-Folge/Musterlösung | Fibonacci-Folge]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/digitalesSchloesserKnacken|digitales Schloesser knacken]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1. VL&lt;br /&gt;
 | Kontrollstrukturen &amp;lt;br&amp;gt;Bitweise Operatoren&lt;br /&gt;
 | Paul B.&lt;br /&gt;
 | Eugen R. (2010)&lt;br /&gt;
 | [[Ckurs2009/digitalesSchloesserKnacken/Musterlösung | digitales Schloesser knacken]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Rekursives_arbeiten|Rekursives Arbeiten]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3-5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1. VL&lt;br /&gt;
 | Bekannte Operatoren wie + durch Funktionen succ und neg nachbilden&lt;br /&gt;
 | Eugen R.&lt;br /&gt;
 | Paul B.(2010)&lt;br /&gt;
 | [[Ckurs2009/Rekursives_arbeiten/Musterlösung | Rekursives Arbeiten]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Base64 | Base64]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |6&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1. VL&lt;br /&gt;
 | Operatoren&lt;br /&gt;
 | Sebastian D.&lt;br /&gt;
 | Paul B.(2010)&lt;br /&gt;
 | [[Ckurs2009/Base64/Musterlösung | Base64]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/EingabeAusgabe | Ein- und Ausgabe]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Einlesen von Benutzereingaben&amp;lt;br&amp;gt;Ausgabe derselben&lt;br /&gt;
 | [[Benutzer:Mario|Mario]]&lt;br /&gt;
 | nion (2009), &lt;br /&gt;
 | [[Ckurs2009/EingabeAusgabe/Musterlösung | Ein- und Ausgabe]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Taschenrechner | Taschenrechner]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Eingabe+Ausgabe&amp;lt;br&amp;gt;Mathematische Operatoren&lt;br /&gt;
 | [[Benutzer:Mario|Mario]]&lt;br /&gt;
 | [[Benutzer:Tkroenert|TKroenert]] (2009), &lt;br /&gt;
 | [[Ckurs2009/Taschenrechner/Musterlösung | Taschenrechner]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/VerschachtelteSchleifen | Verschachtelte Schleifen]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Umgang mit mehreren verschachtelten Schleifen&lt;br /&gt;
 | [[Benutzer:Dank|Daniel K.]]&lt;br /&gt;
 | AlexanderK (2009), &lt;br /&gt;
 |&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Glückspiel | Glücksspiel]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Anwenden von Fallunterscheidungen und Einlesen von Werten aus der Konsole&lt;br /&gt;
 | [[Benutzer:Dank|Daniel K.]]&lt;br /&gt;
 | AlexanderK (2009), &lt;br /&gt;
 | [[Ckurs2009/Glückspiel/Musterlösung | Glückspiel]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Wochentag | Wochentagsrechnung]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Einlesen von Benutzereingaben&amp;lt;br&amp;gt;Mathematikverständniss&lt;br /&gt;
 | [[Benutzer:Mario|Mario]]&lt;br /&gt;
 | nion (Musterlösung noch nicht vorhanden)  (2009), &lt;br /&gt;
 | &lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Taschenrechner2.0 | Taschenrechner ''2.0'']]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |8&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Knobeln&amp;lt;br&amp;gt;Komplexes Aufgaben lösen&lt;br /&gt;
 | [[Benutzer:Mario|Mario]]&lt;br /&gt;
 | Martin K. (2009), &lt;br /&gt;
 | [[Ckurs2009/Taschenrechner2.0/Musterlösung | Taschenrechner ''2.0'']]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Call by reference | Call by reference]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Einfache Anwendung von &amp;amp;/*&lt;br /&gt;
 | sping&lt;br /&gt;
 | nion (2009), Alex K. (2010)&lt;br /&gt;
 | [[Ckurs2009/Call by reference/Musterlösung | Call by reference]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2010/String to Double | String to Double]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Original-Dokumentation anwenden (Opengroup, man pages)&amp;lt;br&amp;gt;Pointer auf Pointer&amp;lt;br&amp;gt;Const correctness&amp;lt;br&amp;gt;Strings&lt;br /&gt;
 | sping&lt;br /&gt;
 | Eugen R. (2010)&lt;br /&gt;
 | vorhanden&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Text processing | Text processing]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4, 6&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Strings&amp;lt;br&amp;gt;Pointer-Arithmetik&amp;lt;br&amp;gt;Pointer auf Pointer&amp;lt;br&amp;gt;Refactoring&lt;br /&gt;
 | sping&lt;br /&gt;
 | [[Benutzer:Mario|Mario]] (2009), &lt;br /&gt;
 | [[Ckurs2009/Text processing/Musterlösung | Text processing]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Palindrome | Palindrome]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Pointer und Strings&lt;br /&gt;
 | [[Benutzer:Dank|Daniel K.]]&lt;br /&gt;
 | nion (2009), &lt;br /&gt;
 | [[Ckurs2009/Palindrome/Musterlösung | Palindrome ]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs/Buchstaben_zählen | Buchstaben zählen]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Array, Dateien lesen&lt;br /&gt;
 | Alex K.&lt;br /&gt;
 | Gabriel (2010)&lt;br /&gt;
 | vorhanden&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/(Pointer) Swapping | (Pointer) Swapping]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Pointer und Arrays benutzen, generisches swap&lt;br /&gt;
 | Katrin&lt;br /&gt;
 | Katrin (2010, wird nochmal überarbeitet bzw. mit mehr erklärendem Text versehen)&lt;br /&gt;
 | [[Ckurs2009/(Pointer) Swapping/Musterlösung | (Pointer) Swapping]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Matrizenmultiplikation | Matrizenmultiplikation]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |6&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Mehrdimensionale Arrays&amp;lt;br&amp;gt;const correctness&lt;br /&gt;
 | sping&lt;br /&gt;
 | [[Benutzer:Mario|Mario]] (2009), &lt;br /&gt;
 | [[Ckurs2009/Matrizenmultiplikation/Musterlösung | Matrizenmultiplikation]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs/DreiD | 3D mit C]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |6-9&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Mathematische Rechenoperationen, Algorithmik&lt;br /&gt;
 | AndreasF&lt;br /&gt;
 | &lt;br /&gt;
 | vorhanden&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Arrayuebergabe | Arrayuebergabe]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4/5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4. VL&lt;br /&gt;
 | Einlesen von Benutzereingaben&amp;lt;br&amp;gt;Pointer und Pointerarithmetik&lt;br /&gt;
 | nion&lt;br /&gt;
 | Martin K. (2009), &lt;br /&gt;
 | [[Ckurs2009/Arrayuebergabe/Musterlösung | Arrayuebergabe]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Studentendatenbank | Studentendatenbank]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4. VL&lt;br /&gt;
 | struct, Pointer, Arrays&lt;br /&gt;
 | AlexanderK&lt;br /&gt;
 | Gabriel (2010)&lt;br /&gt;
 | [[Ckurs2009/Studentendatenbank/Musterlösung | Studentendatenbank]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2010/Punktstrukturen| Punktstrukturen]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2-3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4. VL&lt;br /&gt;
 | Structs, Unions, Pointer&lt;br /&gt;
 | [[Benutzer:Mutax|Florian]] (2010)&lt;br /&gt;
 | Alex K. (2010)&lt;br /&gt;
 |  -&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Sammelbestellung | Sammelbestellung]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2-5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4. VL&lt;br /&gt;
 | Listen, Pointer, Speicherverwaltung&lt;br /&gt;
 | [[Benutzer:Mutax|Florian]]&lt;br /&gt;
 | [[Benutzer:Mario|Mario]] (2009), &lt;br /&gt;
 |  [[Ckurs2009/Sammelbestellung/Musterlösung | Sammelbestellung]] &lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Zahlen_sagen | Zahlen sagen]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4. VL&lt;br /&gt;
 | Umgang mit Zeichenketten&lt;br /&gt;
 | Martin K.&lt;br /&gt;
 | Paul B. (w.i.p.)&lt;br /&gt;
 | [[Ckurs2009/Zahlen_sagen/Musterlösung | Zahlen sagen]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Compiler, Präprozessor, Header Files | Compiler, Präprozessor, Header Files]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5. VL&lt;br /&gt;
 | Arbeiten mit mehreren Quellcode-Dateien, Kompilieren und Linken, Header-Dateien und #include, debugging-Makro verwenden&lt;br /&gt;
 | Katrin&lt;br /&gt;
 | AndyF (2010)&lt;br /&gt;
 | [https://wiki.freitagsrunde.org/Ckurs2009/Vortrag05 siehe Folien]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Bus Error | Bus Error]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |8&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5. VL&lt;br /&gt;
 | Pointer, wie entsteht ein bus error&lt;br /&gt;
 | Katrin&lt;br /&gt;
 | [[Benutzer:Mario|Mario]] (2010)&lt;br /&gt;
 | [[Ckurs2009/Bus Error/Musterlösung | Bus Error]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/BubbleSortDebug | BubbleSort Debugging]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |6. VL&lt;br /&gt;
 | Debuggen eines Programmes mit gdb&lt;br /&gt;
 | aeichner&lt;br /&gt;
 |&lt;br /&gt;
 | [[Ckurs2009/BubbleSortDebug/Musterlösung | BubbleSort Debugging]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Debug | Debugging]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1-8&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |6. VL&lt;br /&gt;
 | Debuggen einer Anwendung nach Wahl&lt;br /&gt;
 | aeichner&lt;br /&gt;
 |&lt;br /&gt;
 | &lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Code Layout | Code Layout]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |7. VL&lt;br /&gt;
 | Kleinere Codeschipsel mit kleinen Unsauberkeiten&lt;br /&gt;
 | Daniel&lt;br /&gt;
 | [[Benutzer:Tkroenert|TKroenert]] (2010)&lt;br /&gt;
 | [[Ckurs2009/Code Layout/Musterlösung | Code Layout]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Refactoring | Refactoring]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5-9&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |7. VL&lt;br /&gt;
 | Wie verbessere ich den Quellcode eines Programmes.&lt;br /&gt;
 | Daniel&lt;br /&gt;
 | &lt;br /&gt;
 | [[Ckurs2009/Refactoring/Musterlösung | Refactoring]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Cat | Cat]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |6&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Arbeiten mit Dateien&amp;lt;br&amp;gt;Kommandozeilenparameter&lt;br /&gt;
 | nion&lt;br /&gt;
 | sping (2009), &lt;br /&gt;
 | vorhanden&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Pong | Pong]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |7&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |9.VL (eigentlich 2.VL)&lt;br /&gt;
 | allgemeiner Programmablauf, fortgeschrittene Konsolenausgaben/eingaben&lt;br /&gt;
 | AlexanderK&lt;br /&gt;
 | seba(2010)&lt;br /&gt;
 | vorhanden &lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Buchhaltung | Buchhaltung]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |6&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5.VL&lt;br /&gt;
 | Lesen aus Dateien&lt;br /&gt;
 | reiner&lt;br /&gt;
 | AndyF (2010)&lt;br /&gt;
 | &lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/StringArraySortieren | StringArraySortieren]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |8&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Konsolparameter, Funktionspointer, stdlib&lt;br /&gt;
 | reiner&lt;br /&gt;
 |&lt;br /&gt;
 | vorhanden&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs/integral | integral]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Funktionspointer&lt;br /&gt;
 | reiner&lt;br /&gt;
 | [[Benutzer:Tkroenert|TKroenert]] (2010)&lt;br /&gt;
 | [[Ckurs/integral/Musterlösung | Musterloesung]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs/forschleife | forschleife]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |6. VL&lt;br /&gt;
 | Bug (zum Knobeln)&lt;br /&gt;
 | reiner&lt;br /&gt;
 | nion (2009), [[Benutzer:Tkroenert|TKroenert]] (2010)&lt;br /&gt;
 | vorhanden&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs/libgdsl | GDSL]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5-7&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |9. VL&lt;br /&gt;
 | Anwendung der Generic Data Structures Library&lt;br /&gt;
 | martin&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/StdLib | Standard C Library]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |9. VL&lt;br /&gt;
 | Recherche in der Standard C Bibliothek&lt;br /&gt;
 | martin&lt;br /&gt;
 | &lt;br /&gt;
 |&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs/Tron | Tron]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |7-8&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4. VL&lt;br /&gt;
 | SDL (Simple Directmedia Layer) kennen lernen, graphische Ausgabe&lt;br /&gt;
 | seba&lt;br /&gt;
 |&lt;br /&gt;
 | vorhanden&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Kleine und große Probleme ==&lt;br /&gt;
&lt;br /&gt;
* Die Tubit-Accounts haben nicht /bin/bash als shell, so dass die &amp;lt;strong&amp;gt;Cursortasten&amp;lt;/strong&amp;gt; nicht funktionieren. Workaround: als erstes Kommando 'bash' eingeben, man sieht dann auch in welchem Verzeichnis man gerade ist.&lt;br /&gt;
* wenn man nur den Promt 'bash-0.12' oder so erhält, also ohne das Verzeichnis in dem man ist, folgendes Kommando eingeben: &amp;lt;tt&amp;gt;export PS1='\u@\h:\w$ '&amp;lt;/tt&amp;gt; oder zum dauerhaften Speichern: &amp;lt;tt&amp;gt; echo &amp;quot;export PS1='\u@\h:\w$ '&amp;quot; &amp;gt;&amp;gt; ~/.bashrc &amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Musterlösungen ==&lt;br /&gt;
Die Lösungen zu den Aufgaben werden nach den jeweiligen Übungen hier veröffentlicht. Falls dies nicht geschieht, bitte den zuständigen Tutor fragen.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[Ckurs2009/Feedback|Feedback zum Kurs 2009]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:CKurs]]&lt;br /&gt;
[[Kategorie:CKurs Aufgaben]]&lt;/div&gt;</summary>
		<author><name>Seba</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=C-Kurs/Pythagoras-Triplet/Musterl%C3%B6sung&amp;diff=14855</id>
		<title>C-Kurs/Pythagoras-Triplet/Musterlösung</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=C-Kurs/Pythagoras-Triplet/Musterl%C3%B6sung&amp;diff=14855"/>
		<updated>2010-09-14T18:12:16Z</updated>

		<summary type="html">&lt;p&gt;Seba: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int main(int argc, char **argv) {&lt;br /&gt;
    int a, b, c;&lt;br /&gt;
    for(a=0; a&amp;lt;998; a++) {&lt;br /&gt;
        for(b=a+1; b&amp;lt;999; b++) {&lt;br /&gt;
            for(c=b+1; c&amp;lt;1000; c++) {&lt;br /&gt;
                if(a*a+b*b==c*c &amp;amp;&amp;amp; a+b+c==1000) {&lt;br /&gt;
                    printf(&amp;quot;Found: %d %d %d\n&amp;quot;, a, b, c);&lt;br /&gt;
                    return 0;&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    return 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Seba</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=C-Kurs/Pythagoras-Triplet/Musterl%C3%B6sung&amp;diff=14854</id>
		<title>C-Kurs/Pythagoras-Triplet/Musterlösung</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=C-Kurs/Pythagoras-Triplet/Musterl%C3%B6sung&amp;diff=14854"/>
		<updated>2010-09-14T18:11:06Z</updated>

		<summary type="html">&lt;p&gt;Seba: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int main(int argc, char **argv) {&lt;br /&gt;
    int a, b, c;&lt;br /&gt;
    for(a=0; a&amp;lt;997; a++) {&lt;br /&gt;
        for(b=a+1; b&amp;lt;998; b++) {&lt;br /&gt;
            for(c=b+1; c&amp;lt;999; c++) {&lt;br /&gt;
                if(a*a+b*b==c*c &amp;amp;&amp;amp; a+b+c==1000) {&lt;br /&gt;
                    printf(&amp;quot;Found: %d %d %d\n&amp;quot;, a, b, c);&lt;br /&gt;
                    return 0;&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    return 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Seba</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=C-Kurs/%C3%9Cbungsaufgaben&amp;diff=14851</id>
		<title>C-Kurs/Übungsaufgaben</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=C-Kurs/%C3%9Cbungsaufgaben&amp;diff=14851"/>
		<updated>2010-09-14T17:02:32Z</updated>

		<summary type="html">&lt;p&gt;Seba: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wir haben jeder Aufgabe eine Einschätzung ihrer Schwierigkeit auf einer Skala von 1 bis 10 vorangestellt. Bei dieser Einschätzung sind wir von einem Gehirn ausgegangen, für welches das jeweilige Themengebiet völlig neu ist, das jedoch schon ein ganz gutes Verständnis dafür hat wie eine Programmiersprache denn so funktioniert. &lt;br /&gt;
Entsprechend kann eine schwer bewertete Aufgabe aus einem frühen Themengebiet für manch einen sehr einfach oder eine leicht bewertete aus einem späten Themengebiet für einen anderen sehr schwer sein. Es ist nur ein Wert, der euch helfen soll eure nächste Aufgabe zu wählen. &lt;br /&gt;
&lt;br /&gt;
Falls ihr Anmerkungen zu den Aufgaben habt, könnt ihr die Diskussionsseiten der jeweiligen Aufgaben nutzen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Schwierigkeitsgrade ==&lt;br /&gt;
&lt;br /&gt;
#  Reines Tutorial. Man muss nicht viel selbst denken&lt;br /&gt;
#  ...&lt;br /&gt;
#  Leichte Übungsaufgabe. Studies, die noch eher unsicher sind werden hier gut begleitet.&lt;br /&gt;
#  ...&lt;br /&gt;
#  Typische Aufgabe. Man muss den Kopf benutzen, bekommt an schwierigen Stellen aber Hilfestellungen.&lt;br /&gt;
#  ...&lt;br /&gt;
#  Herausfordernd, eher etwas für Studies die etwas fitter sind.&lt;br /&gt;
#  ...&lt;br /&gt;
#  Auch erfahrene Programmierer werden hier ein bis zwei Übungen beschäftigt sein&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
#  Tja, die Idee war da. Wir finden sie auch gut, aber es könnte wirklich anstrengend werden.&lt;br /&gt;
&lt;br /&gt;
== Die Aufgaben ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;2&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#D8D8D8&amp;quot;&lt;br /&gt;
 !Aufgabe&lt;br /&gt;
 !Schwierigkeit&lt;br /&gt;
 !Vorwissen&lt;br /&gt;
 !Lerneffekte&lt;br /&gt;
 !Bearbeiter&lt;br /&gt;
 !Korrektur gelesen&lt;br /&gt;
 !Musterlösung&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Von der Konsole zum HelloWorld | Von der Konsole zum HelloWorld]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1. VL&lt;br /&gt;
 | Konsole benutzen, Hello World&lt;br /&gt;
 | Sebastian D.&lt;br /&gt;
 | [[Benutzer:Mario|Mario]] (2009), &lt;br /&gt;
 | &lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Fakultät | Fakultät]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1. VL&lt;br /&gt;
 | Schleifen&lt;br /&gt;
 | Sebastian D.&lt;br /&gt;
 | Daniel (2009), &lt;br /&gt;
 |  &lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2010/Pythagoras-Triplet | Pythagoras-Triplet]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1. VL&lt;br /&gt;
 | Schleifen &amp;lt;br&amp;gt; if-Bedingungen&lt;br /&gt;
 | Gabriel P.&lt;br /&gt;
 | seba(in arbeit)&lt;br /&gt;
 | [[Ckurs2010/Pythagoras-Triplet/Musterloesung | Pythagoras-Triplet]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Fibonacci-Folge|Fibonacci-Folge]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1. VL&lt;br /&gt;
 | Funktionen &amp;lt;br&amp;gt; Rekursion&lt;br /&gt;
 | Paul B.&lt;br /&gt;
 | [[Benutzer:Mario|Mario]] (2010)&lt;br /&gt;
 | [[Ckurs2009/Fibonacci-Folge/Musterlösung | Fibonacci-Folge]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/digitalesSchloesserKnacken|digitales Schloesser knacken]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1. VL&lt;br /&gt;
 | Kontrollstrukturen &amp;lt;br&amp;gt;Bitweise Operatoren&lt;br /&gt;
 | Paul B.&lt;br /&gt;
 | Eugen R. (2010)&lt;br /&gt;
 | [[Ckurs2009/digitalesSchloesserKnacken/Musterlösung | digitales Schloesser knacken]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Rekursives_arbeiten|Rekursives Arbeiten]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3-5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1. VL&lt;br /&gt;
 | Bekannte Operatoren wie + durch Funktionen succ und neg nachbilden&lt;br /&gt;
 | Eugen R.&lt;br /&gt;
 | Paul B.(2010)&lt;br /&gt;
 | [[Ckurs2009/Rekursives_arbeiten/Musterlösung | Rekursives Arbeiten]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Base64 | Base64]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |6&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1. VL&lt;br /&gt;
 | Operatoren&lt;br /&gt;
 | Sebastian D.&lt;br /&gt;
 | Paul B.(2010)&lt;br /&gt;
 | [[Ckurs2009/Base64/Musterlösung | Base64]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/EingabeAusgabe | Ein- und Ausgabe]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Einlesen von Benutzereingaben&amp;lt;br&amp;gt;Ausgabe derselben&lt;br /&gt;
 | [[Benutzer:Mario|Mario]]&lt;br /&gt;
 | nion (2009), &lt;br /&gt;
 | [[Ckurs2009/EingabeAusgabe/Musterlösung | Ein- und Ausgabe]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Taschenrechner | Taschenrechner]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Eingabe+Ausgabe&amp;lt;br&amp;gt;Mathematische Operatoren&lt;br /&gt;
 | [[Benutzer:Mario|Mario]]&lt;br /&gt;
 | [[Benutzer:Tkroenert|TKroenert]] (2009), &lt;br /&gt;
 | [[Ckurs2009/Taschenrechner/Musterlösung | Taschenrechner]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/VerschachtelteSchleifen | Verschachtelte Schleifen]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Umgang mit mehreren verschachtelten Schleifen&lt;br /&gt;
 | [[Benutzer:Dank|Daniel K.]]&lt;br /&gt;
 | AlexanderK (2009), &lt;br /&gt;
 |&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Glückspiel | Glücksspiel]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Anwenden von Fallunterscheidungen und Einlesen von Werten aus der Konsole&lt;br /&gt;
 | [[Benutzer:Dank|Daniel K.]]&lt;br /&gt;
 | AlexanderK (2009), &lt;br /&gt;
 | [[Ckurs2009/Glückspiel/Musterlösung | Glückspiel]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Wochentag | Wochentagsrechnung]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Einlesen von Benutzereingaben&amp;lt;br&amp;gt;Mathematikverständniss&lt;br /&gt;
 | [[Benutzer:Mario|Mario]]&lt;br /&gt;
 | nion (Musterlösung noch nicht vorhanden)  (2009), &lt;br /&gt;
 | &lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Taschenrechner2.0 | Taschenrechner ''2.0'']]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |8&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Knobeln&amp;lt;br&amp;gt;Komplexes Aufgaben lösen&lt;br /&gt;
 | [[Benutzer:Mario|Mario]]&lt;br /&gt;
 | Martin K. (2009), &lt;br /&gt;
 | [[Ckurs2009/Taschenrechner2.0/Musterlösung | Taschenrechner ''2.0'']]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Call by reference | Call by reference]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Einfache Anwendung von &amp;amp;/*&lt;br /&gt;
 | sping&lt;br /&gt;
 | nion (2009), &lt;br /&gt;
 | [[Ckurs2009/Call by reference/Musterlösung | Call by reference]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2010/String to Double | String to Double]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Original-Dokumentation anwenden (Opengroup, man pages)&amp;lt;br&amp;gt;Pointer auf Pointer&amp;lt;br&amp;gt;Const correctness&amp;lt;br&amp;gt;Strings&lt;br /&gt;
 | sping&lt;br /&gt;
 | Eugen R. (2010)&lt;br /&gt;
 | vorhanden&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Text processing | Text processing]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4, 6&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Strings&amp;lt;br&amp;gt;Pointer-Arithmetik&amp;lt;br&amp;gt;Pointer auf Pointer&amp;lt;br&amp;gt;Refactoring&lt;br /&gt;
 | sping&lt;br /&gt;
 | [[Benutzer:Mario|Mario]] (2009), &lt;br /&gt;
 | [[Ckurs2009/Text processing/Musterlösung | Text processing]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Palindrome | Palindrome]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Pointer und Strings&lt;br /&gt;
 | [[Benutzer:Dank|Daniel K.]]&lt;br /&gt;
 | nion (2009), &lt;br /&gt;
 | [[Ckurs2009/Palindrome/Musterlösung | Palindrome ]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs/Buchstaben_zählen | Buchstaben zählen]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Array, Dateien lesen&lt;br /&gt;
 | Alex K.&lt;br /&gt;
 | Gabriel (2010)&lt;br /&gt;
 | vorhanden&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/(Pointer) Swapping | (Pointer) Swapping]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Pointer und Arrays benutzen, generisches swap&lt;br /&gt;
 | Katrin&lt;br /&gt;
 | Katrin (2010, wird nochmal überarbeitet bzw. mit mehr erklärendem Text versehen)&lt;br /&gt;
 | [[Ckurs2009/(Pointer) Swapping/Musterlösung | (Pointer) Swapping]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Matrizenmultiplikation | Matrizenmultiplikation]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |6&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Mehrdimensionale Arrays&amp;lt;br&amp;gt;const correctness&lt;br /&gt;
 | sping&lt;br /&gt;
 | [[Benutzer:Mario|Mario]] (2009), &lt;br /&gt;
 | [[Ckurs2009/Matrizenmultiplikation/Musterlösung | Matrizenmultiplikation]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs/DreiD | 3D mit C]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |6-9&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Mathematische Rechenoperationen, Algorithmik&lt;br /&gt;
 | AndreasF&lt;br /&gt;
 | &lt;br /&gt;
 | vorhanden&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Arrayuebergabe | Arrayuebergabe]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4/5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4. VL&lt;br /&gt;
 | Einlesen von Benutzereingaben&amp;lt;br&amp;gt;Pointer und Pointerarithmetik&lt;br /&gt;
 | nion&lt;br /&gt;
 | Martin K. (2009), &lt;br /&gt;
 | [[Ckurs2009/Arrayuebergabe/Musterlösung | Arrayuebergabe]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Studentendatenbank | Studentendatenbank]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4. VL&lt;br /&gt;
 | struct, Pointer, Arrays&lt;br /&gt;
 | AlexanderK&lt;br /&gt;
 | Gabriel (2010)&lt;br /&gt;
 | [[Ckurs2009/Studentendatenbank/Musterlösung | Studentendatenbank]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2010/Punktstrukturen| Punktstrukturen]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2-3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4. VL&lt;br /&gt;
 | Structs, Unions, Pointer&lt;br /&gt;
 | [[Benutzer:Mutax|Florian]] (2010)&lt;br /&gt;
 | - &lt;br /&gt;
 |  -&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Sammelbestellung | Sammelbestellung]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2-5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4. VL&lt;br /&gt;
 | Listen, Pointer, Speicherverwaltung&lt;br /&gt;
 | [[Benutzer:Mutax|Florian]]&lt;br /&gt;
 | [[Benutzer:Mario|Mario]] (2009), &lt;br /&gt;
 |  [[Ckurs2009/Sammelbestellung/Musterlösung | Sammelbestellung]] &lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Zahlen_sagen | Zahlen sagen]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4. VL&lt;br /&gt;
 | Umgang mit Zeichenketten&lt;br /&gt;
 | Martin K.&lt;br /&gt;
 | Paul B. (w.i.p.)&lt;br /&gt;
 | [[Ckurs2009/Zahlen_sagen/Musterlösung | Zahlen sagen]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Compiler, Präprozessor, Header Files | Compiler, Präprozessor, Header Files]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5. VL&lt;br /&gt;
 | Arbeiten mit mehreren Quellcode-Dateien, Kompilieren und Linken, Header-Dateien und #include, debugging-Makro verwenden&lt;br /&gt;
 | Katrin&lt;br /&gt;
 | AndyF (2010)&lt;br /&gt;
 | [https://wiki.freitagsrunde.org/Ckurs2009/Vortrag05 siehe Folien]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Bus Error | Bus Error]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |8&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5. VL&lt;br /&gt;
 | Pointer, wie entsteht ein bus error&lt;br /&gt;
 | Katrin&lt;br /&gt;
 | [[Benutzer:Mario|Mario]] (2010)&lt;br /&gt;
 | [[Ckurs2009/Bus Error/Musterlösung | Bus Error]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/BubbleSortDebug | BubbleSort Debugging]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |6. VL&lt;br /&gt;
 | Debuggen eines Programmes mit gdb&lt;br /&gt;
 | aeichner&lt;br /&gt;
 |&lt;br /&gt;
 | [[Ckurs2009/BubbleSortDebug/Musterlösung | BubbleSort Debugging]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Debug | Debugging]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1-8&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |6. VL&lt;br /&gt;
 | Debuggen einer Anwendung nach Wahl&lt;br /&gt;
 | aeichner&lt;br /&gt;
 |&lt;br /&gt;
 | &lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Code Layout | Code Layout]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |7. VL&lt;br /&gt;
 | Kleinere Codeschipsel mit kleinen Unsauberkeiten&lt;br /&gt;
 | Daniel&lt;br /&gt;
 | [[Benutzer:Tkroenert|TKroenert]] (2010)&lt;br /&gt;
 | [[Ckurs2009/Code Layout/Musterlösung | Code Layout]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Refactoring | Refactoring]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5-9&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |7. VL&lt;br /&gt;
 | Wie verbessere ich den Quellcode eines Programmes.&lt;br /&gt;
 | Daniel&lt;br /&gt;
 | &lt;br /&gt;
 | [[Ckurs2009/Refactoring/Musterlösung | Refactoring]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Cat | Cat]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |6&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Arbeiten mit Dateien&amp;lt;br&amp;gt;Kommandozeilenparameter&lt;br /&gt;
 | nion&lt;br /&gt;
 | sping (2009), &lt;br /&gt;
 | vorhanden&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Pong | Pong]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |7&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |9.VL (eigentlich 2.VL)&lt;br /&gt;
 | allgemeiner Programmablauf, fortgeschrittene Konsolenausgaben/eingaben&lt;br /&gt;
 | AlexanderK&lt;br /&gt;
 | seba(2010)&lt;br /&gt;
 | vorhanden &lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Buchhaltung | Buchhaltung]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |6&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5.VL&lt;br /&gt;
 | Lesen aus Dateien&lt;br /&gt;
 | reiner&lt;br /&gt;
 | AndyF (2010)&lt;br /&gt;
 | &lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/StringArraySortieren | StringArraySortieren]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |8&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Konsolparameter, Funktionspointer, stdlib&lt;br /&gt;
 | reiner&lt;br /&gt;
 |&lt;br /&gt;
 | vorhanden&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs/integral | integral]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Funktionspointer&lt;br /&gt;
 | reiner&lt;br /&gt;
 | [[Benutzer:Tkroenert|TKroenert]] (2010)&lt;br /&gt;
 | [[Ckurs/integral/Musterlösung | Musterloesung]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs/forschleife | forschleife]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |6. VL&lt;br /&gt;
 | Bug (zum Knobeln)&lt;br /&gt;
 | reiner&lt;br /&gt;
 | nion (2009), [[Benutzer:Tkroenert|TKroenert]] (2010)&lt;br /&gt;
 | vorhanden&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs/libgdsl | GDSL]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5-7&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |9. VL&lt;br /&gt;
 | Anwendung der Generic Data Structures Library&lt;br /&gt;
 | martin&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/StdLib | Standard C Library]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |9. VL&lt;br /&gt;
 | Recherche in der Standard C Bibliothek&lt;br /&gt;
 | martin&lt;br /&gt;
 | &lt;br /&gt;
 |&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs/Tron | Tron]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |7-8&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4. VL&lt;br /&gt;
 | SDL (Simple Directmedia Layer) kennen lernen, graphische Ausgabe&lt;br /&gt;
 | seba&lt;br /&gt;
 |&lt;br /&gt;
 | vorhanden&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Kleine und große Probleme ==&lt;br /&gt;
&lt;br /&gt;
* Die Tubit-Accounts haben nicht /bin/bash als shell, so dass die &amp;lt;strong&amp;gt;Cursortasten&amp;lt;/strong&amp;gt; nicht funktionieren. Workaround: als erstes Kommando 'bash' eingeben, man sieht dann auch in welchem Verzeichnis man gerade ist.&lt;br /&gt;
* wenn man nur den Promt 'bash-0.12' oder so erhält, also ohne das Verzeichnis in dem man ist, folgendes Kommando eingeben: &amp;lt;tt&amp;gt;export PS1='\u@\h:\w$ '&amp;lt;/tt&amp;gt; oder zum dauerhaften Speichern: &amp;lt;tt&amp;gt; echo &amp;quot;export PS1='\u@\h:\w$ '&amp;quot; &amp;gt;&amp;gt; ~/.bashrc &amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Musterlösungen ==&lt;br /&gt;
Die Lösungen zu den Aufgaben werden nach den jeweiligen Übungen hier veröffentlicht. Falls dies nicht geschieht, bitte den zuständigen Tutor fragen.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[Ckurs2009/Feedback|Feedback zum Kurs 2009]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:CKurs]]&lt;br /&gt;
[[Kategorie:CKurs Aufgaben]]&lt;/div&gt;</summary>
		<author><name>Seba</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=C-Kurs/%C3%9Cbungsaufgaben&amp;diff=14850</id>
		<title>C-Kurs/Übungsaufgaben</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=C-Kurs/%C3%9Cbungsaufgaben&amp;diff=14850"/>
		<updated>2010-09-14T16:44:46Z</updated>

		<summary type="html">&lt;p&gt;Seba: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wir haben jeder Aufgabe eine Einschätzung ihrer Schwierigkeit auf einer Skala von 1 bis 10 vorangestellt. Bei dieser Einschätzung sind wir von einem Gehirn ausgegangen, für welches das jeweilige Themengebiet völlig neu ist, das jedoch schon ein ganz gutes Verständnis dafür hat wie eine Programmiersprache denn so funktioniert. &lt;br /&gt;
Entsprechend kann eine schwer bewertete Aufgabe aus einem frühen Themengebiet für manch einen sehr einfach oder eine leicht bewertete aus einem späten Themengebiet für einen anderen sehr schwer sein. Es ist nur ein Wert, der euch helfen soll eure nächste Aufgabe zu wählen. &lt;br /&gt;
&lt;br /&gt;
Falls ihr Anmerkungen zu den Aufgaben habt, könnt ihr die Diskussionsseiten der jeweiligen Aufgaben nutzen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Schwierigkeitsgrade ==&lt;br /&gt;
&lt;br /&gt;
#  Reines Tutorial. Man muss nicht viel selbst denken&lt;br /&gt;
#  ...&lt;br /&gt;
#  Leichte Übungsaufgabe. Studies, die noch eher unsicher sind werden hier gut begleitet.&lt;br /&gt;
#  ...&lt;br /&gt;
#  Typische Aufgabe. Man muss den Kopf benutzen, bekommt an schwierigen Stellen aber Hilfestellungen.&lt;br /&gt;
#  ...&lt;br /&gt;
#  Herausfordernd, eher etwas für Studies die etwas fitter sind.&lt;br /&gt;
#  ...&lt;br /&gt;
#  Auch erfahrene Programmierer werden hier ein bis zwei Übungen beschäftigt sein&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
#  Tja, die Idee war da. Wir finden sie auch gut, aber es könnte wirklich anstrengend werden.&lt;br /&gt;
&lt;br /&gt;
== Die Aufgaben ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;2&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#D8D8D8&amp;quot;&lt;br /&gt;
 !Aufgabe&lt;br /&gt;
 !Schwierigkeit&lt;br /&gt;
 !Vorwissen&lt;br /&gt;
 !Lerneffekte&lt;br /&gt;
 !Bearbeiter&lt;br /&gt;
 !Korrektur gelesen&lt;br /&gt;
 !Musterlösung&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Von der Konsole zum HelloWorld | Von der Konsole zum HelloWorld]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1. VL&lt;br /&gt;
 | Konsole benutzen, Hello World&lt;br /&gt;
 | Sebastian D.&lt;br /&gt;
 | [[Benutzer:Mario|Mario]] (2009), &lt;br /&gt;
 | &lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Fakultät | Fakultät]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1. VL&lt;br /&gt;
 | Schleifen&lt;br /&gt;
 | Sebastian D.&lt;br /&gt;
 | Daniel (2009), &lt;br /&gt;
 |  &lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2010/Pythagoras-Triplet | Pythagoras-Triplet]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1. VL&lt;br /&gt;
 | Schleifen &amp;lt;br&amp;gt; if-Bedingungen&lt;br /&gt;
 | Gabriel P.&lt;br /&gt;
 | &lt;br /&gt;
 | [[Ckurs2010/Pythagoras-Triplet/Musterloesung | Pythagoras-Triplet]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Fibonacci-Folge|Fibonacci-Folge]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1. VL&lt;br /&gt;
 | Funktionen &amp;lt;br&amp;gt; Rekursion&lt;br /&gt;
 | Paul B.&lt;br /&gt;
 | [[Benutzer:Mario|Mario]] (2010)&lt;br /&gt;
 | [[Ckurs2009/Fibonacci-Folge/Musterlösung | Fibonacci-Folge]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/digitalesSchloesserKnacken|digitales Schloesser knacken]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1. VL&lt;br /&gt;
 | Kontrollstrukturen &amp;lt;br&amp;gt;Bitweise Operatoren&lt;br /&gt;
 | Paul B.&lt;br /&gt;
 | Eugen R. (2010)&lt;br /&gt;
 | [[Ckurs2009/digitalesSchloesserKnacken/Musterlösung | digitales Schloesser knacken]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Rekursives_arbeiten|Rekursives Arbeiten]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3-5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1. VL&lt;br /&gt;
 | Bekannte Operatoren wie + durch Funktionen succ und neg nachbilden&lt;br /&gt;
 | Eugen R.&lt;br /&gt;
 | Paul B.(2010)&lt;br /&gt;
 | [[Ckurs2009/Rekursives_arbeiten/Musterlösung | Rekursives Arbeiten]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Base64 | Base64]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |6&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1. VL&lt;br /&gt;
 | Operatoren&lt;br /&gt;
 | Sebastian D.&lt;br /&gt;
 | Paul B.(2010)&lt;br /&gt;
 | [[Ckurs2009/Base64/Musterlösung | Base64]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/EingabeAusgabe | Ein- und Ausgabe]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Einlesen von Benutzereingaben&amp;lt;br&amp;gt;Ausgabe derselben&lt;br /&gt;
 | [[Benutzer:Mario|Mario]]&lt;br /&gt;
 | nion (2009), &lt;br /&gt;
 | [[Ckurs2009/EingabeAusgabe/Musterlösung | Ein- und Ausgabe]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Taschenrechner | Taschenrechner]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Eingabe+Ausgabe&amp;lt;br&amp;gt;Mathematische Operatoren&lt;br /&gt;
 | [[Benutzer:Mario|Mario]]&lt;br /&gt;
 | [[Benutzer:Tkroenert|TKroenert]] (2009), &lt;br /&gt;
 | [[Ckurs2009/Taschenrechner/Musterlösung | Taschenrechner]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/VerschachtelteSchleifen | Verschachtelte Schleifen]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Umgang mit mehreren verschachtelten Schleifen&lt;br /&gt;
 | [[Benutzer:Dank|Daniel K.]]&lt;br /&gt;
 | AlexanderK (2009), &lt;br /&gt;
 |&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Glückspiel | Glücksspiel]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Anwenden von Fallunterscheidungen und Einlesen von Werten aus der Konsole&lt;br /&gt;
 | [[Benutzer:Dank|Daniel K.]]&lt;br /&gt;
 | AlexanderK (2009), &lt;br /&gt;
 | [[Ckurs2009/Glückspiel/Musterlösung | Glückspiel]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Wochentag | Wochentagsrechnung]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Einlesen von Benutzereingaben&amp;lt;br&amp;gt;Mathematikverständniss&lt;br /&gt;
 | [[Benutzer:Mario|Mario]]&lt;br /&gt;
 | nion (Musterlösung noch nicht vorhanden)  (2009), &lt;br /&gt;
 | &lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Taschenrechner2.0 | Taschenrechner ''2.0'']]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |8&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Knobeln&amp;lt;br&amp;gt;Komplexes Aufgaben lösen&lt;br /&gt;
 | [[Benutzer:Mario|Mario]]&lt;br /&gt;
 | Martin K. (2009), &lt;br /&gt;
 | [[Ckurs2009/Taschenrechner2.0/Musterlösung | Taschenrechner ''2.0'']]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Call by reference | Call by reference]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Einfache Anwendung von &amp;amp;/*&lt;br /&gt;
 | sping&lt;br /&gt;
 | nion (2009), &lt;br /&gt;
 | [[Ckurs2009/Call by reference/Musterlösung | Call by reference]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2010/String to Double | String to Double]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Original-Dokumentation anwenden (Opengroup, man pages)&amp;lt;br&amp;gt;Pointer auf Pointer&amp;lt;br&amp;gt;Const correctness&amp;lt;br&amp;gt;Strings&lt;br /&gt;
 | sping&lt;br /&gt;
 | Eugen R. (2010)&lt;br /&gt;
 | vorhanden&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Text processing | Text processing]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4, 6&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Strings&amp;lt;br&amp;gt;Pointer-Arithmetik&amp;lt;br&amp;gt;Pointer auf Pointer&amp;lt;br&amp;gt;Refactoring&lt;br /&gt;
 | sping&lt;br /&gt;
 | [[Benutzer:Mario|Mario]] (2009), &lt;br /&gt;
 | [[Ckurs2009/Text processing/Musterlösung | Text processing]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Palindrome | Palindrome]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Pointer und Strings&lt;br /&gt;
 | [[Benutzer:Dank|Daniel K.]]&lt;br /&gt;
 | nion (2009), &lt;br /&gt;
 | [[Ckurs2009/Palindrome/Musterlösung | Palindrome ]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs/Buchstaben_zählen | Buchstaben zählen]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Array, Dateien lesen&lt;br /&gt;
 | Alex K.&lt;br /&gt;
 | Gabriel (2010)&lt;br /&gt;
 | vorhanden&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/(Pointer) Swapping | (Pointer) Swapping]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Pointer und Arrays benutzen, generisches swap&lt;br /&gt;
 | Katrin&lt;br /&gt;
 | Katrin (2010, wird nochmal überarbeitet bzw. mit mehr erklärendem Text versehen)&lt;br /&gt;
 | [[Ckurs2009/(Pointer) Swapping/Musterlösung | (Pointer) Swapping]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Matrizenmultiplikation | Matrizenmultiplikation]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |6&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Mehrdimensionale Arrays&amp;lt;br&amp;gt;const correctness&lt;br /&gt;
 | sping&lt;br /&gt;
 | [[Benutzer:Mario|Mario]] (2009), &lt;br /&gt;
 | [[Ckurs2009/Matrizenmultiplikation/Musterlösung | Matrizenmultiplikation]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs/DreiD | 3D mit C]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |6-9&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Mathematische Rechenoperationen, Algorithmik&lt;br /&gt;
 | AndreasF&lt;br /&gt;
 | &lt;br /&gt;
 | vorhanden&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Arrayuebergabe | Arrayuebergabe]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4/5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4. VL&lt;br /&gt;
 | Einlesen von Benutzereingaben&amp;lt;br&amp;gt;Pointer und Pointerarithmetik&lt;br /&gt;
 | nion&lt;br /&gt;
 | Martin K. (2009), &lt;br /&gt;
 | [[Ckurs2009/Arrayuebergabe/Musterlösung | Arrayuebergabe]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Studentendatenbank | Studentendatenbank]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4. VL&lt;br /&gt;
 | struct, Pointer, Arrays&lt;br /&gt;
 | AlexanderK&lt;br /&gt;
 | Gabriel (2010)&lt;br /&gt;
 | [[Ckurs2009/Studentendatenbank/Musterlösung | Studentendatenbank]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2010/Punktstrukturen| Punktstrukturen]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2-3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4. VL&lt;br /&gt;
 | Structs, Unions, Pointer&lt;br /&gt;
 | [[Benutzer:Mutax|Florian]] (2010)&lt;br /&gt;
 | - &lt;br /&gt;
 |  -&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Sammelbestellung | Sammelbestellung]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2-5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4. VL&lt;br /&gt;
 | Listen, Pointer, Speicherverwaltung&lt;br /&gt;
 | [[Benutzer:Mutax|Florian]]&lt;br /&gt;
 | [[Benutzer:Mario|Mario]] (2009), &lt;br /&gt;
 |  [[Ckurs2009/Sammelbestellung/Musterlösung | Sammelbestellung]] &lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Zahlen_sagen | Zahlen sagen]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4. VL&lt;br /&gt;
 | Umgang mit Zeichenketten&lt;br /&gt;
 | Martin K.&lt;br /&gt;
 | Paul B. (w.i.p.)&lt;br /&gt;
 | [[Ckurs2009/Zahlen_sagen/Musterlösung | Zahlen sagen]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Compiler, Präprozessor, Header Files | Compiler, Präprozessor, Header Files]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5. VL&lt;br /&gt;
 | Arbeiten mit mehreren Quellcode-Dateien, Kompilieren und Linken, Header-Dateien und #include, debugging-Makro verwenden&lt;br /&gt;
 | Katrin&lt;br /&gt;
 | AndyF (2010)&lt;br /&gt;
 | [https://wiki.freitagsrunde.org/Ckurs2009/Vortrag05 siehe Folien]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Bus Error | Bus Error]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |8&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5. VL&lt;br /&gt;
 | Pointer, wie entsteht ein bus error&lt;br /&gt;
 | Katrin&lt;br /&gt;
 | [[Benutzer:Mario|Mario]] (2010)&lt;br /&gt;
 | [[Ckurs2009/Bus Error/Musterlösung | Bus Error]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/BubbleSortDebug | BubbleSort Debugging]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |6. VL&lt;br /&gt;
 | Debuggen eines Programmes mit gdb&lt;br /&gt;
 | aeichner&lt;br /&gt;
 |&lt;br /&gt;
 | [[Ckurs2009/BubbleSortDebug/Musterlösung | BubbleSort Debugging]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Debug | Debugging]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1-8&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |6. VL&lt;br /&gt;
 | Debuggen einer Anwendung nach Wahl&lt;br /&gt;
 | aeichner&lt;br /&gt;
 |&lt;br /&gt;
 | &lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Code Layout | Code Layout]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |7. VL&lt;br /&gt;
 | Kleinere Codeschipsel mit kleinen Unsauberkeiten&lt;br /&gt;
 | Daniel&lt;br /&gt;
 | [[Benutzer:Tkroenert|TKroenert]] (2010)&lt;br /&gt;
 | [[Ckurs2009/Code Layout/Musterlösung | Code Layout]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Refactoring | Refactoring]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5-9&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |7. VL&lt;br /&gt;
 | Wie verbessere ich den Quellcode eines Programmes.&lt;br /&gt;
 | Daniel&lt;br /&gt;
 | &lt;br /&gt;
 | [[Ckurs2009/Refactoring/Musterlösung | Refactoring]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Cat | Cat]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |6&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Arbeiten mit Dateien&amp;lt;br&amp;gt;Kommandozeilenparameter&lt;br /&gt;
 | nion&lt;br /&gt;
 | sping (2009), &lt;br /&gt;
 | vorhanden&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Pong | Pong]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |7&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |9.VL (eigentlich 2.VL)&lt;br /&gt;
 | allgemeiner Programmablauf, fortgeschrittene Konsolenausgaben/eingaben&lt;br /&gt;
 | AlexanderK&lt;br /&gt;
 | seba(2010)&lt;br /&gt;
 | vorhanden &lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Buchhaltung | Buchhaltung]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |6&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5.VL&lt;br /&gt;
 | Lesen aus Dateien&lt;br /&gt;
 | reiner&lt;br /&gt;
 | AndyF (2010)&lt;br /&gt;
 | &lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/StringArraySortieren | StringArraySortieren]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |8&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Konsolparameter, Funktionspointer, stdlib&lt;br /&gt;
 | reiner&lt;br /&gt;
 |&lt;br /&gt;
 | vorhanden&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs/integral | integral]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Funktionspointer&lt;br /&gt;
 | reiner&lt;br /&gt;
 | [[Benutzer:Tkroenert|TKroenert]] (2010)&lt;br /&gt;
 | [[Ckurs/integral/Musterlösung | Musterloesung]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs/forschleife | forschleife]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |6. VL&lt;br /&gt;
 | Bug (zum Knobeln)&lt;br /&gt;
 | reiner&lt;br /&gt;
 | nion (2009), [[Benutzer:Tkroenert|TKroenert]] (2010)&lt;br /&gt;
 | vorhanden&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs/libgdsl | GDSL]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5-7&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |9. VL&lt;br /&gt;
 | Anwendung der Generic Data Structures Library&lt;br /&gt;
 | martin&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/StdLib | Standard C Library]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |9. VL&lt;br /&gt;
 | Recherche in der Standard C Bibliothek&lt;br /&gt;
 | martin&lt;br /&gt;
 | &lt;br /&gt;
 |&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs/Tron | Tron]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |7-8&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4. VL&lt;br /&gt;
 | SDL (Simple Directmedia Layer) kennen lernen, graphische Ausgabe&lt;br /&gt;
 | seba&lt;br /&gt;
 |&lt;br /&gt;
 | vorhanden&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Kleine und große Probleme ==&lt;br /&gt;
&lt;br /&gt;
* Die Tubit-Accounts haben nicht /bin/bash als shell, so dass die &amp;lt;strong&amp;gt;Cursortasten&amp;lt;/strong&amp;gt; nicht funktionieren. Workaround: als erstes Kommando 'bash' eingeben, man sieht dann auch in welchem Verzeichnis man gerade ist.&lt;br /&gt;
* wenn man nur den Promt 'bash-0.12' oder so erhält, also ohne das Verzeichnis in dem man ist, folgendes Kommando eingeben: &amp;lt;tt&amp;gt;export PS1='\u@\h:\w$ '&amp;lt;/tt&amp;gt; oder zum dauerhaften Speichern: &amp;lt;tt&amp;gt; echo &amp;quot;export PS1='\u@\h:\w$ '&amp;quot; &amp;gt;&amp;gt; ~/.bashrc &amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Musterlösungen ==&lt;br /&gt;
Die Lösungen zu den Aufgaben werden nach den jeweiligen Übungen hier veröffentlicht. Falls dies nicht geschieht, bitte den zuständigen Tutor fragen.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[Ckurs2009/Feedback|Feedback zum Kurs 2009]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:CKurs]]&lt;br /&gt;
[[Kategorie:CKurs Aufgaben]]&lt;/div&gt;</summary>
		<author><name>Seba</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=C-Kurs/Tron&amp;diff=14848</id>
		<title>C-Kurs/Tron</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=C-Kurs/Tron&amp;diff=14848"/>
		<updated>2010-09-14T16:40:00Z</updated>

		<summary type="html">&lt;p&gt;Seba: hat „Ckurs2009/Tron“ nach „Ckurs/Tron“ verschoben&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Datei:Tron-screenshot.png|miniatur|300px|So in etwa soll dann unser Spiel aussehen]]Hier wollen wir euch mal ein wenig SDL zeigen - am Beispiel von Tron. SDL steht für &amp;quot;Simple Direct media Layer&amp;quot; und kümmert sich um Tastatureingaben und um ein Zeichenfenster (eigentlich um noch viel mehr, siehe unten FIXME). SDL ist Plattformunabhängig, ihr könnt euren Code also sowohl unter Linux als auch unter Windows oder Mac compilen und ausführen.  &lt;br /&gt;
&lt;br /&gt;
Tron: Tron ist ein kleines Spiel für zwei (oder mehr) Spieler, dass ihr vielleicht aus dem Film Tron oder dem spiel Amagetronad kennt. In unserer Zwei-Spieler 2D Variante startet jeder Spieler als ein Punkt auf dem Spielfeld. Während des Spieles zieht jeder Spieler eine Linie hinter sich her. Fährt man irgendwo gegen (gegnerische Linie, eigene Linie, Bildschirmrand), so hat man verloren und eine neue Runde beginnt.&lt;br /&gt;
&lt;br /&gt;
Das ganze machen wir Schritt für Schritt, vom Initialisieren des Fensters über abarbeiten der Tastatur-Events und erkennen der Kollisionen bis hin zum zeichnen des Feldes.&lt;br /&gt;
Falls ihr mehr über eine der SDL Funktionen wissen wollt (also alle Funktionen/Datenstrukturen, die mit SDL_ anfangen), könnt ihr entweder auf http://www.libsdl.org/cgi/docwiki.cgi gucken oder (falls ihr ein Unix-Artiges Betriebssystem mit installiertem SDL habt) einfach &amp;quot;man FUNKTION&amp;quot; (z.B. man SDL_Init) in eine Konsole eingeben um hilfe zu dieser Funktion zu bekommen. Ich werde an entsprechenden Stellen einfach (man funktion) als Hinweis schreiben, dass man mit dieser Funktion noch mehr anstellen könnte.&lt;br /&gt;
&lt;br /&gt;
== Was ihr braucht == &lt;br /&gt;
* SDL mit Development-Headers (unter Debian/Ubuntu heißt das Paket libsdl1.2-dev)&lt;br /&gt;
* Die beiden Hilfs-Funktionen um Pixel von zu setzen/lesen (putpixel/getpixel). Diese könnt ihr hier (pixel.h/pixel.c FIXME) von uns downloaden oder auch von http://www.libsdl.org/cgi/docwiki.cgi/Pixel_Access .&lt;br /&gt;
&lt;br /&gt;
== Ein erstes Fenster ==&lt;br /&gt;
Fangen wir mit unserem Fenster an.&lt;br /&gt;
&lt;br /&gt;
=== SDL Initialisieren ===&lt;br /&gt;
Zu Beginn müssen wir das SDL Headerfile und unsere pixel.h includen.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 #include &amp;lt;SDL/SDL.h&amp;gt;&lt;br /&gt;
 #include &amp;quot;pixel.h&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In der Main-Funktion rufen wir zu aller erst die Initialisierungsfunktion von SDL auf:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SDL_Init(SDL_INIT_EVERYTHING);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Der einfachheit halber Initialisieren wir alles, was SDL zu bieten hat. Man kann ggf. nur Teilsysteme initialisieren (man SDL_Init), das ist für uns aber gerade nicht so wichtig.&lt;br /&gt;
&lt;br /&gt;
Als nächstes müssen wir SDL sagen, dass wir ein Fenster haben wollen und wie groß dieses sein soll. Das machen wir mit der Funktion ''SDL_Surface *SDL_SetVideoMode(int width, int height, int bpp, Uint32 flags)''. Wir geben der Funktion die gewünschten Parameter für das Fenster und SDL gibt uns ein ''SDL_Surface'' (dieser Typ hält in SDL eine Grafik, in diesem Fall unser Fenster).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 SDL_Surface *screen = SDL_SetVideoMode(640, 480, 32, SDL_SWSURFACE);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Oookay.. SDL gibt uns hier ein&lt;br /&gt;
* 640 Pixel breites&lt;br /&gt;
* 480 Pixel hohes Fenster mit&lt;br /&gt;
* 32 Bits pro Pixel (hat was mit der Farbtiefe zu tun, für uns nicht so wichtig, das passt schon so)&lt;br /&gt;
* als SDL_SW_SURFACE (soll heißen wir benutzen keine Hardwarebeschleunigung)&lt;br /&gt;
Für den letzten Parameter, also die Window Flags, gibt es viele verschiedene Parameter (man SDL_VideoMode) die man einfach miteinaner verunden könnte (z.B. SDL_HWSURFACE | SDL_FULLSCREEN für Vollbild mit Hardwarebeschleunigung), aber auch das ist für uns gerade nicht wichtig.&lt;br /&gt;
&lt;br /&gt;
Zu guter letzt rufen wir am Ende der main-Funktion noch ein ''SDL_Quit()'' auf, damit SDL sich deinitialisiert, wenn wir das Programm beenden.&lt;br /&gt;
&lt;br /&gt;
Nun wollen wir unser Grundgerüst ausprobieren. Damit wenn wir das Programm starten das Fenster nicht sofort wieder zu geht packen wir hinter die Initialisierung (aber vor das ''SDL_Quit()'') ein ''SDL_Delay(5000)'' (''SDL_Delay'' nimmt die zeit in Millisekunden, d.h. der Aufruf wartet 5 Sekunden). Und nun Compilen und ausprobieren!&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
gcc -Wall tron.c pixel.c -lSDL -o tron &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Falls ihr (wie ich) zu faul seid das jedes mal einzugeben könnt ihr auch folgendes Makefile benutzen (soll heißen in die Datei Makefile pasten) und dann nur noch make bzw. make run eingeben.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CFLAGS=`sdl-config --cflags` -Wall&lt;br /&gt;
LDFLAGS=`sdl-config --libs`&lt;br /&gt;
OBJ=tron.o pixel.c&lt;br /&gt;
&lt;br /&gt;
.PHONY: clean run&lt;br /&gt;
&lt;br /&gt;
tron: $(OBJ)&lt;br /&gt;
&lt;br /&gt;
run: tron&lt;br /&gt;
	./tron&lt;br /&gt;
&lt;br /&gt;
clean:&lt;br /&gt;
	rm -f *.o tron&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Jetzt solltet ihr für 5 Sekunden ein Fenster sehen, welches sich dann wieder schliesst.&lt;br /&gt;
&lt;br /&gt;
=== SDL Events ===&lt;br /&gt;
Ein sich nach einiger Zeit wieder schliessendes Fenster bringt uns natürlich nicht so viel. Was wir wollen ist mit SDL zu interagieren. Wir wollen wissen, ob jemand eine Taste auf der Tastatur gedrückt hat oder das Fenster schliessen wollte. All das sagt uns SDL mit sog. *Events*. Davon gibt es viele für alle möglichen gegebenheiten (man SDL_Event), aber wir wollen als erstes nur den Fall des sich schliessenden Fensters betrachten.&lt;br /&gt;
&lt;br /&gt;
Als erstes brauchen wir eine Variable vom Typ ''SDL_Event'' in der wir das Event speichern. Um SDL nach einen Event zu fragen übergeben wir ''int SDL_PollEvent(SDL_Event*)'' eine Referenz zu dieser Variable.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 SDL_Event event;&lt;br /&gt;
 SDL_PollEvent(&amp;amp;event);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
''SDL_PollEvent'' hat als Rückgabewert 1, wenn es ein Event gefunden hat und 0, falls es kein neues Event gab. ''SDL_Event event'' ist ein struct, in event.type steht der Typ des aktuellen events. Für unser Spiel sind folgende Events wichtig (Dies sind dann auch die Werte, welche in event.type stehen): SDL_QUIT falls das Programm beendet werden soll und SDL_KEYDOWN, falls eine Taste auf der Tastatur gedrückt wurde.&lt;br /&gt;
&lt;br /&gt;
Schreibt nun in die main-Methode eine while-Schleife. In dieser Schleife sollen SDL-Events abgefragt werden (unser sog. Event-Loop). Wenn ein SDL_QUIT-Event auftritt soll das Programm beendet werden. Damit die while-Schleife nicht all eure CPU-Zeit frisst solltet ihr mit ''SDL_Delay'' eine Verzögerung von 10-50 Millisekunden einbauen.&lt;br /&gt;
&lt;br /&gt;
Nun kann man das Fenster über das ihm gegebene X (bei entsprechendem Windowmanager *hust*) schliessen. Horray, unser Fenster hört auf uns!&lt;br /&gt;
&lt;br /&gt;
== Tron ==&lt;br /&gt;
&lt;br /&gt;
=== Zustandsvariablen ===&lt;br /&gt;
Es wird Zeit, dass wir zu unserem Spiel kommen. Ein Spieler in Tron hat in etwa folgende Eigenschaften:&lt;br /&gt;
* eine Position (x/y)&lt;br /&gt;
* eine Richtung (up, down, left, right)&lt;br /&gt;
* Punktestand&lt;br /&gt;
* Farbe des Spielers (Definiert als Rot/Grün/Blau-Wert von 0-255)&lt;br /&gt;
Für Position und Punke können wir jeweils den Typ int wählen. Für die Farbe nehmen wir ''SDL_Color'' (das ist ein von SDL definiertes struct mit drei Uint8 r, g und b für den Farbwert rot, grün und blau (man SDL_Color)). Bei der Richtung könnt ihr euch überlegen, ob ihr lieber ein *enum* nehmen wollt anstatt eines ints. Wir packen diese Werte in ein struct Player, damit wir später Funktionen nur einmal schreiben müssen und dann für jeden Spieler jeweils einmal aufrufen können.&lt;br /&gt;
&lt;br /&gt;
Schreibt nun eine Funktion ''void initPlayers()'' welche die Variablen der beiden Spieler initialisiert (und ihnen auch eine schöne Farbe gibt ;). Die Startposition der Spieler machen wir abhängig von der Spielfeldgröße. Ich schlage halbe Höhe des Feldes als Y-Koordinate und 1/3 bzw. 2/3 der Breite als Startposition vor. Hier ein Codeschnipsel, wie ihr an das ''SDL_Surface'' vom Fenster und an dessen Höhe/Breite kommt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 [...]&lt;br /&gt;
 SDL_Surface *screen = SDL_GetVideoSurface();&lt;br /&gt;
 int hoehe = screen-&amp;gt;h;&lt;br /&gt;
 int breite = screen-&amp;gt;w;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Der Rückgabewert von ''SDL_GetVideoSurface'' ist hierbei mit dem von ''SDL_SetVideoMode'' identisch (halt der Zeichenbereich unseres Fensters).&lt;br /&gt;
&lt;br /&gt;
Ruft nun ''initPlayers()'' in eurer main-Methode nach dem Initialisieren von SDL auf (sonst ist der Rückgabewert von ''SDL_GetVideoSurface()'' nicht definiert und ihr habt keine Fensterhöhe/breite).&lt;br /&gt;
&lt;br /&gt;
=== Zeichnen der Spieler ===&lt;br /&gt;
Nun wollen wir anfangen unsere beiden Spieler zu zeichnen und sich bewegen zu lassen. Dazu setzen wir den Pixel, auf dem der Spieler sich gerade befindet auf seine Farbe.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 putpixel(SDL_Surface *screen, int x, int y, Uint32 pixel);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Da putpixel einen Uint32 als Farbwert erwartet müssen wir unser ''SDL_Color'' wohl umwandeln. Dies passiert mit der Funktion&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 Uint32 SDL_MapRGB(SDL_PixelFormat *fmt, Uint8 r, Uint8 g, Uint8 b);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
wobei mit ''SDL_PixelFormat'' das PixelFormat unseres screens gemeint ist (screen-&amp;gt;format (man SDL_Surface)).&lt;br /&gt;
&lt;br /&gt;
* Schreibt eine Funktion ''Uint32 color2rgb(SDL_Color)'' welche ein ''SDL_Color'' in den entsprechenden ''Uint32'' umwandelt.&lt;br /&gt;
* Schreibt eine Funktion ''void paintPlayer(struct Player*)'' welche einen Spieler zeichnet.&lt;br /&gt;
&lt;br /&gt;
Wichtig: Eure Zeichenoperationen (also alles, was etwas in das Fenster bringt) werden erst sichtbar, wenn ihr SDL sagt, dass ihr eure &amp;quot;Änderungen&amp;quot; sehen wollt. Der einfachheit halber benutzt nach euren Zeichenoperationen ''int SDL_Flip(screen)'' (wobei screen unser Fenster (SDL_Surface*) ist) um dies zu tun (wer hier mehr drüber wissen will kann sich mal ''SDL_UpdateRect'' anschauen).&lt;br /&gt;
&lt;br /&gt;
Nun zeichnet in eurer main-Methode vor dem Event-Loop die beiden Spieler und startet das Programm. Jetzt können wir unsere beiden Spieler als Pixel sehen.&lt;br /&gt;
&lt;br /&gt;
=== Bewegen der Spieler ===&lt;br /&gt;
Ohne Bewegung wird das alles auf Dauer ziemlich langweilig. Deshalb brauchen wir eine Funktion ''void movePlayer(struct Player*)'', welche abhängig von der Richtung des Spielers dessen Position verändert. Diese Funktion müssen wir nun in unserem Event-loop unterbringen. Wenn wir kein Event haben, dann wollen wir unsere Spieler beide bewegen (movePlayer), beide zeichnen (paintPlayer), unseren Bildschirm aktualisieren (''SDL_Flip'') und dann ein wenig warten (''SDL_Delay'').&lt;br /&gt;
&lt;br /&gt;
Wenn das Fertig ist und wir unser Programm starten, dann sehen wir, dass beide Spieler sich in ihre Richtung bewegen und sich ggf. übermalen. Sobald aber einer aus dem Bildschirm verschwindet passieren komische Sachen: Entweder sie kommen auf der anderen Seite wieder raus oder unser Programm stürzt ab. Hmmmm, da fehlt uns wohl...&lt;br /&gt;
&lt;br /&gt;
=== Kollisionen erkennen und behandeln ===&lt;br /&gt;
In unserem Spiel gibt es drei Arten von Kollision&lt;br /&gt;
* Ein Spieler fährt aus dem Fenster raus&lt;br /&gt;
* Ein Spieler fährt gegen eine Linie (eine Eigene oder eines Gegners)&lt;br /&gt;
* Beide Spieler befinden sich auf der gleichen Position (unentschieden!)&lt;br /&gt;
&lt;br /&gt;
Die ersten beiden Fälle wollen wir mit der Funktion behandeln ''int playerCollided(struct Player*)''. Die Soll überprüfen, ob der Spieler in seiner aktuellen Position ausserhalb des Bildschirms ist oder ob dort schon einer vor ihm war. Letzteres könnt ihr leicht überprüfen, indem ihr guckt, ob an dieser Stelle ein schwarzer Pixel ist (soll heißen: leeres Spielfeld). Das könnt ihr überprüfen, indem ihr schaut, ob der Wert, den ''Uint32 getpixel(SDL_Surface *screen, int x, inty)'' zurückliefert dem entspricht, was ''SDL_MapRGB'' für Schwarz (0, 0, 0) zurückgibt. Die Funktion soll 1 für Kollision und 0 für keine Kollision zurückgeben.&lt;br /&gt;
&lt;br /&gt;
Nun brauchen wir die Funktion ''int gotCollison()'' welche 0 für keine Kollision, 1 für Player1 kollidiert, 2 für Player2 kollidiert und 3 für Unentschieden zurückgibt. Benutzt hierzu ''playerCollided()'' um herauszufinden, ob ein Spieler kollidiert ist und implementiert ausserdem den 3. Fall. &lt;br /&gt;
&lt;br /&gt;
Aber was machen wir, wenn wir eine Kollision erkannt haben? Wir setzen alles wieder auf den Startzustand. Also brauchen wir eine Funktion ''void resetGame()'' die&lt;br /&gt;
* Unser Fenster komplett schwärzt (uns von den alten Linien befreit)&lt;br /&gt;
* Die Spieler auf ihre Startpositionen setzt (Richtung nicht vergessen!)&lt;br /&gt;
* Die beiden Spieler zeichnet&lt;br /&gt;
&lt;br /&gt;
Zum Schwärzen des Bildschirms könnt ihr ''SDL_FillRect(screen, NULL, SDL_MapRGB(screen-&amp;gt;format, 0, 0, 0))'' benutzen (man SDL_FillRect). NULL steht hierbei für das zu füllende Rechteck - wir übergeben keines, denn dadurch wird automatisch der gesamte Bildschirm angenommen.&lt;br /&gt;
&lt;br /&gt;
Nun kombinieren wir all diese schönen Funktionen miteinander in unserem Event-loop in unserer main-methode:&lt;br /&gt;
* Fortbewegen beider Spieler&lt;br /&gt;
* Überprüfen, ob eine Kollision stattfand&lt;br /&gt;
* Wenn ja: Dem jeweiligen Spieler, der nicht Kollidiert ist, einen Punkt geben und das Spielfeld resetten&lt;br /&gt;
* Wenn nicht: Beide Spieler auf ihrer neuen Position zeichnen&lt;br /&gt;
* Den Bildschirm updaten (&amp;quot;flippen&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Puh! Nun haben wir es aber auch schon fast geschafft. Fehlt nur noch die Bewegung der Spieler und eine Punkteanzeige.&lt;br /&gt;
&lt;br /&gt;
=== Tastatureingaben zu Richtungswechsel ===&lt;br /&gt;
Um die Richtung eines Spielers zu wechseln müssen wir ihm eigentlich nur einen anderen Wert in seine Richtungsvariable schreiben. Den Rest macht dann schon unsere movePlayer-Funktion im Event-Loop. Aber wie kriegen wir raus, welche Taste gedrückt wurde? Genau, per Event. Momentan dümpelt in unserer Event-Abfrage nur unser SDL_QUIT-Event rum. Nun wollen wir ausserdem gucken, ob es sich nich doch um ein SDL_KEYDOWN-Event handelt. Wenn es eines ist (event.type == SDL_KEYDOWN, schon vergessen?), steht in event.key.keysym.sym die Taste, die gedrückt wurde. sym ist vom Typ SDLKey. Alle benutzbaren Tasten findet ihr unter (man SDLKey), aber momentan sollten SDLK_LEFT, SDLK_RIGHT, SDLK_UP, SDLK_DOWN, SDLK_a, SDLK_w, SDLK_s und SDLK_d reichen.&lt;br /&gt;
&lt;br /&gt;
Also: Behandelt das SDL_KEYDOWN Event, schaut ob eine Taste für einen der Spieler gedrückt wurde und behandelt diese. Wenn ihr das Spiel etwas einfacher machen wollt, dann passt auf, das kein Spieler in sich selbst steuern kann (d.h. keine 180° Wendung, also z.B. von left zu right wechseln).&lt;br /&gt;
&lt;br /&gt;
Tja, nun habt ihr ein spielbares (und Plattformunabhängiges) Multiplayer 2D Tron Spiel!&lt;br /&gt;
&lt;br /&gt;
=== Punkte? ===&lt;br /&gt;
Naja gut, was noch fehlt ist eine Punkteanzeige. Die realisieren wir ganz einfach über unseren Fenstertitel. Den kann man mit&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 SDL_WM_SetCaption(&amp;quot;Mein tolles Fenster!1!!&amp;quot;, 0);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
setzen.&lt;br /&gt;
&lt;br /&gt;
Schreibt eine Funktion ''void updateWindowTitle()'' welche (z.B. mit sprintf) einen Titel für das Fenster (z.B. C-Kurs Tron) und dahinter den aktuellen Punktestand zusammensetzt und unserem Fenster diesen gibt. Diese Funktion muss immer aufgerufen werden, wenn sich der Punktestand verändert (und natürlich auch einmal am Anfang). Sucht euch einen schönen Platz dafür aus.&lt;br /&gt;
&lt;br /&gt;
== Bonusrunde == &lt;br /&gt;
Wer jetzt noch nicht genug hat...&lt;br /&gt;
&lt;br /&gt;
=== Einsteiger-Bonus: Quit on Esc ===&lt;br /&gt;
Das Spiel soll sich beenden, wenn jemand Escape drückt.&lt;br /&gt;
&lt;br /&gt;
=== Bonus: Fenster resizen ===&lt;br /&gt;
Macht das Fenster vergrößerbar bzw. verkleinerbar! Denkt dran, dass bei einer neuen Runde die Spieler auch an der Richtigen stelle Anfangen (falls ihr diese Werte direkt als Zahlen reingeschrieben habt).&lt;br /&gt;
&lt;br /&gt;
=== Bonus: Ein Torus als Spielfeld ===&lt;br /&gt;
Warum sollte man an der Spielwand crashen? Man könnte doch an der jeweils anderen Seite des Feldes herauskommen...&lt;br /&gt;
&lt;br /&gt;
=== Bonus Bonus: Massive Multiplayer ===&lt;br /&gt;
Baut das Spiel so um, dass man beim Starten auf der Kommandozeile eine Spielerzahl übergeben kann (z.B. 2-4 Spieler). Damit es nich zu eng auf der Tastatur wird könnte es nützlich sein, wenn ihr das Spiel so umschreibt, dass man nur noch zwei Tasten für Links/Rechts hat um den Spieler zu kontrollieren (Megabonus: Ausser ihr baut Maus+Joysticksupport ein).&lt;br /&gt;
&lt;br /&gt;
== Further reading oder &amp;quot;Was kann SDL denn noch?&amp;quot; ==&lt;br /&gt;
SDL hat noch einige interessante Zusatzmodule&lt;br /&gt;
* SDL_Image - Kann ein haufen Bildformate laden und in ein SDL_Surface packen (von sich aus kann SDL nur .bmp)&lt;br /&gt;
* SDL_Mixer - SDL Soundausgabe&lt;br /&gt;
* SDL_Net - SDL Netzwerkbibliothek&lt;br /&gt;
Ausserdem kann SDL ziemlich einfach geladene Bilder auf den Bildschirm bringen (man SDL_BlitSurface), Tastatur/Maus/Joystick eingabe behandeln, Musik/Soundeffekte zusammenmixen oder auch (mit der entsprechenden Bibliothek) Netzwerkkram machen. Gerne wird es für 2D Spiele benutzt (z.B. supertux, xmame, frozen-bubbles, ...), aber auch als Wrapper für OpenGL (sauerbraten, der Quake3 Linux Port, warsow, armagetronad...); teilweise nutzen auch einige Anwendungen SDL (mplayer, virtualbox, dosbox, ...). &lt;br /&gt;
&lt;br /&gt;
Einsteigerfreundliche SDL-Tutorials:&lt;br /&gt;
* http://www.lazyfoo.net/SDL_tutorials/index.php&lt;br /&gt;
* http://www.libsdl.org/cgi/docwiki.cgi/&lt;br /&gt;
* http://www.libsdl.org/cgi/docwiki.cgi/Using_OpenGL_With_SDL&lt;br /&gt;
&lt;br /&gt;
Happy Hacking ;)&lt;/div&gt;</summary>
		<author><name>Seba</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=C-Kurs_2009/Tron&amp;diff=14849</id>
		<title>C-Kurs 2009/Tron</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=C-Kurs_2009/Tron&amp;diff=14849"/>
		<updated>2010-09-14T16:40:00Z</updated>

		<summary type="html">&lt;p&gt;Seba: hat „Ckurs2009/Tron“ nach „Ckurs/Tron“ verschoben&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Ckurs/Tron]]&lt;/div&gt;</summary>
		<author><name>Seba</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=W%C3%BCnsche_ans_Rechnernetz&amp;diff=14772</id>
		<title>Wünsche ans Rechnernetz</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=W%C3%BCnsche_ans_Rechnernetz&amp;diff=14772"/>
		<updated>2010-09-06T18:40:56Z</updated>

		<summary type="html">&lt;p&gt;Seba: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Diese Seite soll alle Wünsche an die Rechnernetze vom IRB und TUBIT sammeln.&lt;br /&gt;
&lt;br /&gt;
Die Liste enthält auch Software die bereits überall vorhanden sein könnte. Dies wurde nicht geprüft.&lt;br /&gt;
&lt;br /&gt;
* Pidgin - Multiplatform Messanger (ICQ, IRC, MSN, Jabber,...) - erleichtert Kommunikation&lt;br /&gt;
* ein stabiler Firefox (besonders unter Solaris nicht gegeben)&lt;br /&gt;
* Scilab und MATLAB - werden in manchen Studiengängen für Labore gebraucht&lt;br /&gt;
** Scilab bitte nur in der Version 4.1.2 weil sonst bestimmte &lt;br /&gt;
* &amp;quot;Build essentials&amp;quot; - alles was man zum bauen von software braucht&lt;br /&gt;
** libncurses-dev auf den ubuntukisten (vllt gleich build-essential)&lt;br /&gt;
** ar auf den solaris kisten&lt;br /&gt;
** libsdl1.2-dev libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-net1.2-dev&lt;br /&gt;
Komponenten nichtmehr funktionieren in den aktuelleren Versionen&lt;br /&gt;
* eclipse - unter Windows schon vorhanden, aber fehlt noch unter Linux!? vllt dazu gleich Plugins:&lt;br /&gt;
** CDT-Projekt (C/C++)&lt;br /&gt;
** TeXlipse (LaTeX)&lt;br /&gt;
* auf jedem Rechner sollte ein LaTeX Editor installiert sein, z.B.&lt;br /&gt;
** Kile&lt;br /&gt;
** für Ubuntu das Tex-Plugin für Gedit&lt;br /&gt;
** TexMaker (Plattfomunabhängig)&lt;br /&gt;
* PSpice (für Elektrotechniker sinnvoll)&lt;br /&gt;
* Eagle (für Elektrotechniker sinnvoll)&lt;br /&gt;
* OpenOffice&lt;br /&gt;
* JavaJDK (Javaprogrammierung)&lt;br /&gt;
* Thunderbird (E-Mails)&lt;br /&gt;
* GIMP (oder anderes Bildbearbeitungsprogramm)&lt;br /&gt;
* MARS MIPS simulator (oder ein anderer MIPS Simulator)&lt;/div&gt;</summary>
		<author><name>Seba</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=C-Kurs/Tron&amp;diff=14770</id>
		<title>C-Kurs/Tron</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=C-Kurs/Tron&amp;diff=14770"/>
		<updated>2010-09-06T18:12:43Z</updated>

		<summary type="html">&lt;p&gt;Seba: Die Seite wurde neu angelegt: „So in etwa soll dann unser Spiel aussehenHier wollen wir euch mal ein wenig SDL zeigen - am Beispiel von Tron. SDL st...“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Datei:Tron-screenshot.png|miniatur|300px|So in etwa soll dann unser Spiel aussehen]]Hier wollen wir euch mal ein wenig SDL zeigen - am Beispiel von Tron. SDL steht für &amp;quot;Simple Direct media Layer&amp;quot; und kümmert sich um Tastatureingaben und um ein Zeichenfenster (eigentlich um noch viel mehr, siehe unten FIXME). SDL ist Plattformunabhängig, ihr könnt euren Code also sowohl unter Linux als auch unter Windows oder Mac compilen und ausführen.  &lt;br /&gt;
&lt;br /&gt;
Tron: Tron ist ein kleines Spiel für zwei (oder mehr) Spieler, dass ihr vielleicht aus dem Film Tron oder dem spiel Amagetronad kennt. In unserer Zwei-Spieler 2D Variante startet jeder Spieler als ein Punkt auf dem Spielfeld. Während des Spieles zieht jeder Spieler eine Linie hinter sich her. Fährt man irgendwo gegen (gegnerische Linie, eigene Linie, Bildschirmrand), so hat man verloren und eine neue Runde beginnt.&lt;br /&gt;
&lt;br /&gt;
Das ganze machen wir Schritt für Schritt, vom Initialisieren des Fensters über abarbeiten der Tastatur-Events und erkennen der Kollisionen bis hin zum zeichnen des Feldes.&lt;br /&gt;
Falls ihr mehr über eine der SDL Funktionen wissen wollt (also alle Funktionen/Datenstrukturen, die mit SDL_ anfangen), könnt ihr entweder auf http://www.libsdl.org/cgi/docwiki.cgi gucken oder (falls ihr ein Unix-Artiges Betriebssystem mit installiertem SDL habt) einfach &amp;quot;man FUNKTION&amp;quot; (z.B. man SDL_Init) in eine Konsole eingeben um hilfe zu dieser Funktion zu bekommen. Ich werde an entsprechenden Stellen einfach (man funktion) als Hinweis schreiben, dass man mit dieser Funktion noch mehr anstellen könnte.&lt;br /&gt;
&lt;br /&gt;
== Was ihr braucht == &lt;br /&gt;
* SDL mit Development-Headers (unter Debian/Ubuntu heißt das Paket libsdl1.2-dev)&lt;br /&gt;
* Die beiden Hilfs-Funktionen um Pixel von zu setzen/lesen (putpixel/getpixel). Diese könnt ihr hier (pixel.h/pixel.c FIXME) von uns downloaden oder auch von http://www.libsdl.org/cgi/docwiki.cgi/Pixel_Access .&lt;br /&gt;
&lt;br /&gt;
== Ein erstes Fenster ==&lt;br /&gt;
Fangen wir mit unserem Fenster an.&lt;br /&gt;
&lt;br /&gt;
=== SDL Initialisieren ===&lt;br /&gt;
Zu Beginn müssen wir das SDL Headerfile und unsere pixel.h includen.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 #include &amp;lt;SDL/SDL.h&amp;gt;&lt;br /&gt;
 #include &amp;quot;pixel.h&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In der Main-Funktion rufen wir zu aller erst die Initialisierungsfunktion von SDL auf:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SDL_Init(SDL_INIT_EVERYTHING);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Der einfachheit halber Initialisieren wir alles, was SDL zu bieten hat. Man kann ggf. nur Teilsysteme initialisieren (man SDL_Init), das ist für uns aber gerade nicht so wichtig.&lt;br /&gt;
&lt;br /&gt;
Als nächstes müssen wir SDL sagen, dass wir ein Fenster haben wollen und wie groß dieses sein soll. Das machen wir mit der Funktion ''SDL_Surface *SDL_SetVideoMode(int width, int height, int bpp, Uint32 flags)''. Wir geben der Funktion die gewünschten Parameter für das Fenster und SDL gibt uns ein ''SDL_Surface'' (dieser Typ hält in SDL eine Grafik, in diesem Fall unser Fenster).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 SDL_Surface *screen = SDL_SetVideoMode(640, 480, 32, SDL_SWSURFACE);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Oookay.. SDL gibt uns hier ein&lt;br /&gt;
* 640 Pixel breites&lt;br /&gt;
* 480 Pixel hohes Fenster mit&lt;br /&gt;
* 32 Bits pro Pixel (hat was mit der Farbtiefe zu tun, für uns nicht so wichtig, das passt schon so)&lt;br /&gt;
* als SDL_SW_SURFACE (soll heißen wir benutzen keine Hardwarebeschleunigung)&lt;br /&gt;
Für den letzten Parameter, also die Window Flags, gibt es viele verschiedene Parameter (man SDL_VideoMode) die man einfach miteinaner verunden könnte (z.B. SDL_HWSURFACE | SDL_FULLSCREEN für Vollbild mit Hardwarebeschleunigung), aber auch das ist für uns gerade nicht wichtig.&lt;br /&gt;
&lt;br /&gt;
Zu guter letzt rufen wir am Ende der main-Funktion noch ein ''SDL_Quit()'' auf, damit SDL sich deinitialisiert, wenn wir das Programm beenden.&lt;br /&gt;
&lt;br /&gt;
Nun wollen wir unser Grundgerüst ausprobieren. Damit wenn wir das Programm starten das Fenster nicht sofort wieder zu geht packen wir hinter die Initialisierung (aber vor das ''SDL_Quit()'') ein ''SDL_Delay(5000)'' (''SDL_Delay'' nimmt die zeit in Millisekunden, d.h. der Aufruf wartet 5 Sekunden). Und nun Compilen und ausprobieren!&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
gcc -Wall tron.c pixel.c -lSDL -o tron &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Falls ihr (wie ich) zu faul seid das jedes mal einzugeben könnt ihr auch folgendes Makefile benutzen (soll heißen in die Datei Makefile pasten) und dann nur noch make bzw. make run eingeben.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CFLAGS=`sdl-config --cflags` -Wall&lt;br /&gt;
LDFLAGS=`sdl-config --libs`&lt;br /&gt;
OBJ=tron.o pixel.c&lt;br /&gt;
&lt;br /&gt;
.PHONY: clean run&lt;br /&gt;
&lt;br /&gt;
tron: $(OBJ)&lt;br /&gt;
&lt;br /&gt;
run: tron&lt;br /&gt;
	./tron&lt;br /&gt;
&lt;br /&gt;
clean:&lt;br /&gt;
	rm -f *.o tron&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Jetzt solltet ihr für 5 Sekunden ein Fenster sehen, welches sich dann wieder schliesst.&lt;br /&gt;
&lt;br /&gt;
=== SDL Events ===&lt;br /&gt;
Ein sich nach einiger Zeit wieder schliessendes Fenster bringt uns natürlich nicht so viel. Was wir wollen ist mit SDL zu interagieren. Wir wollen wissen, ob jemand eine Taste auf der Tastatur gedrückt hat oder das Fenster schliessen wollte. All das sagt uns SDL mit sog. *Events*. Davon gibt es viele für alle möglichen gegebenheiten (man SDL_Event), aber wir wollen als erstes nur den Fall des sich schliessenden Fensters betrachten.&lt;br /&gt;
&lt;br /&gt;
Als erstes brauchen wir eine Variable vom Typ ''SDL_Event'' in der wir das Event speichern. Um SDL nach einen Event zu fragen übergeben wir ''int SDL_PollEvent(SDL_Event*)'' eine Referenz zu dieser Variable.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 SDL_Event event;&lt;br /&gt;
 SDL_PollEvent(&amp;amp;event);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
''SDL_PollEvent'' hat als Rückgabewert 1, wenn es ein Event gefunden hat und 0, falls es kein neues Event gab. ''SDL_Event event'' ist ein struct, in event.type steht der Typ des aktuellen events. Für unser Spiel sind folgende Events wichtig (Dies sind dann auch die Werte, welche in event.type stehen): SDL_QUIT falls das Programm beendet werden soll und SDL_KEYDOWN, falls eine Taste auf der Tastatur gedrückt wurde.&lt;br /&gt;
&lt;br /&gt;
Schreibt nun in die main-Methode eine while-Schleife. In dieser Schleife sollen SDL-Events abgefragt werden (unser sog. Event-Loop). Wenn ein SDL_QUIT-Event auftritt soll das Programm beendet werden. Damit die while-Schleife nicht all eure CPU-Zeit frisst solltet ihr mit ''SDL_Delay'' eine Verzögerung von 10-50 Millisekunden einbauen.&lt;br /&gt;
&lt;br /&gt;
Nun kann man das Fenster über das ihm gegebene X (bei entsprechendem Windowmanager *hust*) schliessen. Horray, unser Fenster hört auf uns!&lt;br /&gt;
&lt;br /&gt;
== Tron ==&lt;br /&gt;
&lt;br /&gt;
=== Zustandsvariablen ===&lt;br /&gt;
Es wird Zeit, dass wir zu unserem Spiel kommen. Ein Spieler in Tron hat in etwa folgende Eigenschaften:&lt;br /&gt;
* eine Position (x/y)&lt;br /&gt;
* eine Richtung (up, down, left, right)&lt;br /&gt;
* Punktestand&lt;br /&gt;
* Farbe des Spielers (Definiert als Rot/Grün/Blau-Wert von 0-255)&lt;br /&gt;
Für Position und Punke können wir jeweils den Typ int wählen. Für die Farbe nehmen wir ''SDL_Color'' (das ist ein von SDL definiertes struct mit drei Uint8 r, g und b für den Farbwert rot, grün und blau (man SDL_Color)). Bei der Richtung könnt ihr euch überlegen, ob ihr lieber ein *enum* nehmen wollt anstatt eines ints. Wir packen diese Werte in ein struct Player, damit wir später Funktionen nur einmal schreiben müssen und dann für jeden Spieler jeweils einmal aufrufen können.&lt;br /&gt;
&lt;br /&gt;
Schreibt nun eine Funktion ''void initPlayers()'' welche die Variablen der beiden Spieler initialisiert (und ihnen auch eine schöne Farbe gibt ;). Die Startposition der Spieler machen wir abhängig von der Spielfeldgröße. Ich schlage halbe Höhe des Feldes als Y-Koordinate und 1/3 bzw. 2/3 der Breite als Startposition vor. Hier ein Codeschnipsel, wie ihr an das ''SDL_Surface'' vom Fenster und an dessen Höhe/Breite kommt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 [...]&lt;br /&gt;
 SDL_Surface *screen = SDL_GetVideoSurface();&lt;br /&gt;
 int hoehe = screen-&amp;gt;h;&lt;br /&gt;
 int breite = screen-&amp;gt;w;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Der Rückgabewert von ''SDL_GetVideoSurface'' ist hierbei mit dem von ''SDL_SetVideoMode'' identisch (halt der Zeichenbereich unseres Fensters).&lt;br /&gt;
&lt;br /&gt;
Ruft nun ''initPlayers()'' in eurer main-Methode nach dem Initialisieren von SDL auf (sonst ist der Rückgabewert von ''SDL_GetVideoSurface()'' nicht definiert und ihr habt keine Fensterhöhe/breite).&lt;br /&gt;
&lt;br /&gt;
=== Zeichnen der Spieler ===&lt;br /&gt;
Nun wollen wir anfangen unsere beiden Spieler zu zeichnen und sich bewegen zu lassen. Dazu setzen wir den Pixel, auf dem der Spieler sich gerade befindet auf seine Farbe.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 putpixel(SDL_Surface *screen, int x, int y, Uint32 pixel);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Da putpixel einen Uint32 als Farbwert erwartet müssen wir unser ''SDL_Color'' wohl umwandeln. Dies passiert mit der Funktion&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 Uint32 SDL_MapRGB(SDL_PixelFormat *fmt, Uint8 r, Uint8 g, Uint8 b);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
wobei mit ''SDL_PixelFormat'' das PixelFormat unseres screens gemeint ist (screen-&amp;gt;format (man SDL_Surface)).&lt;br /&gt;
&lt;br /&gt;
* Schreibt eine Funktion ''Uint32 color2rgb(SDL_Color)'' welche ein ''SDL_Color'' in den entsprechenden ''Uint32'' umwandelt.&lt;br /&gt;
* Schreibt eine Funktion ''void paintPlayer(struct Player*)'' welche einen Spieler zeichnet.&lt;br /&gt;
&lt;br /&gt;
Wichtig: Eure Zeichenoperationen (also alles, was etwas in das Fenster bringt) werden erst sichtbar, wenn ihr SDL sagt, dass ihr eure &amp;quot;Änderungen&amp;quot; sehen wollt. Der einfachheit halber benutzt nach euren Zeichenoperationen ''int SDL_Flip(screen)'' (wobei screen unser Fenster (SDL_Surface*) ist) um dies zu tun (wer hier mehr drüber wissen will kann sich mal ''SDL_UpdateRect'' anschauen).&lt;br /&gt;
&lt;br /&gt;
Nun zeichnet in eurer main-Methode vor dem Event-Loop die beiden Spieler und startet das Programm. Jetzt können wir unsere beiden Spieler als Pixel sehen.&lt;br /&gt;
&lt;br /&gt;
=== Bewegen der Spieler ===&lt;br /&gt;
Ohne Bewegung wird das alles auf Dauer ziemlich langweilig. Deshalb brauchen wir eine Funktion ''void movePlayer(struct Player*)'', welche abhängig von der Richtung des Spielers dessen Position verändert. Diese Funktion müssen wir nun in unserem Event-loop unterbringen. Wenn wir kein Event haben, dann wollen wir unsere Spieler beide bewegen (movePlayer), beide zeichnen (paintPlayer), unseren Bildschirm aktualisieren (''SDL_Flip'') und dann ein wenig warten (''SDL_Delay'').&lt;br /&gt;
&lt;br /&gt;
Wenn das Fertig ist und wir unser Programm starten, dann sehen wir, dass beide Spieler sich in ihre Richtung bewegen und sich ggf. übermalen. Sobald aber einer aus dem Bildschirm verschwindet passieren komische Sachen: Entweder sie kommen auf der anderen Seite wieder raus oder unser Programm stürzt ab. Hmmmm, da fehlt uns wohl...&lt;br /&gt;
&lt;br /&gt;
=== Kollisionen erkennen und behandeln ===&lt;br /&gt;
In unserem Spiel gibt es drei Arten von Kollision&lt;br /&gt;
* Ein Spieler fährt aus dem Fenster raus&lt;br /&gt;
* Ein Spieler fährt gegen eine Linie (eine Eigene oder eines Gegners)&lt;br /&gt;
* Beide Spieler befinden sich auf der gleichen Position (unentschieden!)&lt;br /&gt;
&lt;br /&gt;
Die ersten beiden Fälle wollen wir mit der Funktion behandeln ''int playerCollided(struct Player*)''. Die Soll überprüfen, ob der Spieler in seiner aktuellen Position ausserhalb des Bildschirms ist oder ob dort schon einer vor ihm war. Letzteres könnt ihr leicht überprüfen, indem ihr guckt, ob an dieser Stelle ein schwarzer Pixel ist (soll heißen: leeres Spielfeld). Das könnt ihr überprüfen, indem ihr schaut, ob der Wert, den ''Uint32 getpixel(SDL_Surface *screen, int x, inty)'' zurückliefert dem entspricht, was ''SDL_MapRGB'' für Schwarz (0, 0, 0) zurückgibt. Die Funktion soll 1 für Kollision und 0 für keine Kollision zurückgeben.&lt;br /&gt;
&lt;br /&gt;
Nun brauchen wir die Funktion ''int gotCollison()'' welche 0 für keine Kollision, 1 für Player1 kollidiert, 2 für Player2 kollidiert und 3 für Unentschieden zurückgibt. Benutzt hierzu ''playerCollided()'' um herauszufinden, ob ein Spieler kollidiert ist und implementiert ausserdem den 3. Fall. &lt;br /&gt;
&lt;br /&gt;
Aber was machen wir, wenn wir eine Kollision erkannt haben? Wir setzen alles wieder auf den Startzustand. Also brauchen wir eine Funktion ''void resetGame()'' die&lt;br /&gt;
* Unser Fenster komplett schwärzt (uns von den alten Linien befreit)&lt;br /&gt;
* Die Spieler auf ihre Startpositionen setzt (Richtung nicht vergessen!)&lt;br /&gt;
* Die beiden Spieler zeichnet&lt;br /&gt;
&lt;br /&gt;
Zum Schwärzen des Bildschirms könnt ihr ''SDL_FillRect(screen, NULL, SDL_MapRGB(screen-&amp;gt;format, 0, 0, 0))'' benutzen (man SDL_FillRect). NULL steht hierbei für das zu füllende Rechteck - wir übergeben keines, denn dadurch wird automatisch der gesamte Bildschirm angenommen.&lt;br /&gt;
&lt;br /&gt;
Nun kombinieren wir all diese schönen Funktionen miteinander in unserem Event-loop in unserer main-methode:&lt;br /&gt;
* Fortbewegen beider Spieler&lt;br /&gt;
* Überprüfen, ob eine Kollision stattfand&lt;br /&gt;
* Wenn ja: Dem jeweiligen Spieler, der nicht Kollidiert ist, einen Punkt geben und das Spielfeld resetten&lt;br /&gt;
* Wenn nicht: Beide Spieler auf ihrer neuen Position zeichnen&lt;br /&gt;
* Den Bildschirm updaten (&amp;quot;flippen&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Puh! Nun haben wir es aber auch schon fast geschafft. Fehlt nur noch die Bewegung der Spieler und eine Punkteanzeige.&lt;br /&gt;
&lt;br /&gt;
=== Tastatureingaben zu Richtungswechsel ===&lt;br /&gt;
Um die Richtung eines Spielers zu wechseln müssen wir ihm eigentlich nur einen anderen Wert in seine Richtungsvariable schreiben. Den Rest macht dann schon unsere movePlayer-Funktion im Event-Loop. Aber wie kriegen wir raus, welche Taste gedrückt wurde? Genau, per Event. Momentan dümpelt in unserer Event-Abfrage nur unser SDL_QUIT-Event rum. Nun wollen wir ausserdem gucken, ob es sich nich doch um ein SDL_KEYDOWN-Event handelt. Wenn es eines ist (event.type == SDL_KEYDOWN, schon vergessen?), steht in event.key.keysym.sym die Taste, die gedrückt wurde. sym ist vom Typ SDLKey. Alle benutzbaren Tasten findet ihr unter (man SDLKey), aber momentan sollten SDLK_LEFT, SDLK_RIGHT, SDLK_UP, SDLK_DOWN, SDLK_a, SDLK_w, SDLK_s und SDLK_d reichen.&lt;br /&gt;
&lt;br /&gt;
Also: Behandelt das SDL_KEYDOWN Event, schaut ob eine Taste für einen der Spieler gedrückt wurde und behandelt diese. Wenn ihr das Spiel etwas einfacher machen wollt, dann passt auf, das kein Spieler in sich selbst steuern kann (d.h. keine 180° Wendung, also z.B. von left zu right wechseln).&lt;br /&gt;
&lt;br /&gt;
Tja, nun habt ihr ein spielbares (und Plattformunabhängiges) Multiplayer 2D Tron Spiel!&lt;br /&gt;
&lt;br /&gt;
=== Punkte? ===&lt;br /&gt;
Naja gut, was noch fehlt ist eine Punkteanzeige. Die realisieren wir ganz einfach über unseren Fenstertitel. Den kann man mit&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 SDL_WM_SetCaption(&amp;quot;Mein tolles Fenster!1!!&amp;quot;, 0);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
setzen.&lt;br /&gt;
&lt;br /&gt;
Schreibt eine Funktion ''void updateWindowTitle()'' welche (z.B. mit sprintf) einen Titel für das Fenster (z.B. C-Kurs Tron) und dahinter den aktuellen Punktestand zusammensetzt und unserem Fenster diesen gibt. Diese Funktion muss immer aufgerufen werden, wenn sich der Punktestand verändert (und natürlich auch einmal am Anfang). Sucht euch einen schönen Platz dafür aus.&lt;br /&gt;
&lt;br /&gt;
== Bonusrunde == &lt;br /&gt;
Wer jetzt noch nicht genug hat...&lt;br /&gt;
&lt;br /&gt;
=== Einsteiger-Bonus: Quit on Esc ===&lt;br /&gt;
Das Spiel soll sich beenden, wenn jemand Escape drückt.&lt;br /&gt;
&lt;br /&gt;
=== Bonus: Fenster resizen ===&lt;br /&gt;
Macht das Fenster vergrößerbar bzw. verkleinerbar! Denkt dran, dass bei einer neuen Runde die Spieler auch an der Richtigen stelle Anfangen (falls ihr diese Werte direkt als Zahlen reingeschrieben habt).&lt;br /&gt;
&lt;br /&gt;
=== Bonus: Ein Torus als Spielfeld ===&lt;br /&gt;
Warum sollte man an der Spielwand crashen? Man könnte doch an der jeweils anderen Seite des Feldes herauskommen...&lt;br /&gt;
&lt;br /&gt;
=== Bonus Bonus: Massive Multiplayer ===&lt;br /&gt;
Baut das Spiel so um, dass man beim Starten auf der Kommandozeile eine Spielerzahl übergeben kann (z.B. 2-4 Spieler). Damit es nich zu eng auf der Tastatur wird könnte es nützlich sein, wenn ihr das Spiel so umschreibt, dass man nur noch zwei Tasten für Links/Rechts hat um den Spieler zu kontrollieren (Megabonus: Ausser ihr baut Maus+Joysticksupport ein).&lt;br /&gt;
&lt;br /&gt;
== Further reading oder &amp;quot;Was kann SDL denn noch?&amp;quot; ==&lt;br /&gt;
SDL hat noch einige interessante Zusatzmodule&lt;br /&gt;
* SDL_Image - Kann ein haufen Bildformate laden und in ein SDL_Surface packen (von sich aus kann SDL nur .bmp)&lt;br /&gt;
* SDL_Mixer - SDL Soundausgabe&lt;br /&gt;
* SDL_Net - SDL Netzwerkbibliothek&lt;br /&gt;
Ausserdem kann SDL ziemlich einfach geladene Bilder auf den Bildschirm bringen (man SDL_BlitSurface), Tastatur/Maus/Joystick eingabe behandeln, Musik/Soundeffekte zusammenmixen oder auch (mit der entsprechenden Bibliothek) Netzwerkkram machen. Gerne wird es für 2D Spiele benutzt (z.B. supertux, xmame, frozen-bubbles, ...), aber auch als Wrapper für OpenGL (sauerbraten, der Quake3 Linux Port, warsow, armagetronad...); teilweise nutzen auch einige Anwendungen SDL (mplayer, virtualbox, dosbox, ...). &lt;br /&gt;
&lt;br /&gt;
Einsteigerfreundliche SDL-Tutorials:&lt;br /&gt;
* http://www.lazyfoo.net/SDL_tutorials/index.php&lt;br /&gt;
* http://www.libsdl.org/cgi/docwiki.cgi/&lt;br /&gt;
* http://www.libsdl.org/cgi/docwiki.cgi/Using_OpenGL_With_SDL&lt;br /&gt;
&lt;br /&gt;
Happy Hacking ;)&lt;/div&gt;</summary>
		<author><name>Seba</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=Datei:Tron-screenshot.png&amp;diff=14769</id>
		<title>Datei:Tron-screenshot.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=Datei:Tron-screenshot.png&amp;diff=14769"/>
		<updated>2010-09-06T17:40:39Z</updated>

		<summary type="html">&lt;p&gt;Seba: Screenshot für die C-Kurs SDL/Tron Aufgabe&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Screenshot für die C-Kurs SDL/Tron Aufgabe&lt;/div&gt;</summary>
		<author><name>Seba</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=Javakurs/%C3%9Cbungsaufgaben&amp;diff=13580</id>
		<title>Javakurs/Übungsaufgaben</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=Javakurs/%C3%9Cbungsaufgaben&amp;diff=13580"/>
		<updated>2010-03-21T16:38:59Z</updated>

		<summary type="html">&lt;p&gt;Seba: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wir haben jeder Aufgabe eine Einschätzung ihrer Schwierigkeit auf einer Skala von 1 bis 10 vorangestellt. Bei dieser Einschätzung sind wir von einem Gehirn ausgegangen, für welches das jeweilige Themengebiet völlig neu ist, das jedoch schon ein ganz gutes Verständnis dafür hat wie eine Programmiersprache denn so funktioniert. &lt;br /&gt;
Entsprechend kann eine schwer bewertete Aufgabe aus einem frühen Themengebiet für manch einen sehr einfach oder eine leicht bewertete aus einem späten Themengebiet für einen anderen sehr schwer sein. Es ist nur ein Wert, der euch helfen soll eure nächste Aufgabe zu wählen. Einen kleinen Überblick zu den Schwierigkeitsgraden findet ihr ganz unten auf dieser Seite.&lt;br /&gt;
&lt;br /&gt;
Falls ihr Anmerkungen zu den Aufgaben habt, könnt ihr die Diskussionsseiten der jeweiligen Aufgaben nutzen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Die Aufgaben ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;2&amp;quot;&lt;br /&gt;
 |- bgcolor=&amp;quot;#D8D8D8&amp;quot;&lt;br /&gt;
 !Aufgabe&lt;br /&gt;
 !Schwierigkeit&lt;br /&gt;
 !Vorwissen&lt;br /&gt;
 !Lerneffekte&lt;br /&gt;
 ! Überprüfer(Status)&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Von der Console zum HelloWorld | Vom Arbeiten mit der Konsole bis &amp;quot;Hallo Welt&amp;quot;]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1. VL&lt;br /&gt;
 | Einfaches Arbeiten mit der Kommandozeile &amp;lt;br&amp;gt; Kompilieren und Ausführen von Javacode&lt;br /&gt;
 | seba (okay)&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Variablen_und_Zuweisungen | Variablen und Zuweisungen]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1. VL&lt;br /&gt;
 | Deklarieren und definieren von Variablen&amp;lt;br&amp;gt;grundlegende Regeln der Codeformatierung&lt;br /&gt;
 | sdyroff (ok)&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Cowsay | Cowsay oder &amp;quot;Wie macht die Kuh?&amp;quot;]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1. VL&lt;br /&gt;
 | etwas mehr Bildschirmausgabe&amp;lt;br&amp;gt;schöne Graphiken&lt;br /&gt;
 | tkroenert (okay)&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Kassenbon | Erstellen eines Kassenbons]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1. VL&lt;br /&gt;
 | Arbeiten mit Variablen&amp;lt;br&amp;gt;Fallunterscheidungen&lt;br /&gt;
 | AndyF (ok)&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Javamenue | Ein eigenes Menü]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1. VL&lt;br /&gt;
 | Lesen von Benutzereingaben über die Konsole&amp;lt;br&amp;gt;Fallunterscheidungen&lt;br /&gt;
 | sdyroff (ok)&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Glücksspiel | Glücksspiel]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1. VL&lt;br /&gt;
 | Anwenden von Fallunterscheidungen &lt;br /&gt;
 | sdyroff (ok)&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Arrays | Quickies Arrays]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Verwenden von Arrays&lt;br /&gt;
 | andy (okay)&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Verschachtelte_Schleifen | Verschachtelte Schleifen]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Umgang mit mehreren verschachtelten Schleifen&lt;br /&gt;
 | andy (okay)&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Primzahlenaufgabe | Primzahlen]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2-5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Geschicktes Einsetzen von Schleifen und Arrays&lt;br /&gt;
 | andy (okay) &amp;lt;!-- === Andy ==== bei der Primzahl ist teil b leicht schafbar wenn man a gemacht hat deshalb keine musterlösung --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Wetterstation | Wetterstation]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Schleifen und Arrays&lt;br /&gt;
 | andy (okay)&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Geometrie | Geometrie]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Methoden schreiben&amp;lt;br&amp;gt;schreiben mathematischer Funktionen&lt;br /&gt;
 | AndyF (ok)&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Zweierpotenzen | Zweierpotenzen]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Schleifen und Arrays&lt;br /&gt;
 | andy (okay)&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Schleifen_und_Modulo | Schleifen und Modulo]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Verwendung von Schleifen&amp;lt;br&amp;gt;Benutzung des Modulo-Operators&lt;br /&gt;
 | andy(okay)&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Methoden | Quickies zu Methoden]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Verwenden von Methoden&lt;br /&gt;
 | andy (okay)&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/MathematischeMethoden | Eigene Methoden]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Schreiben eigener Methoden&lt;br /&gt;
 | andy (okay)&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Schaltjahr | Schaltjahr]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Schreiben von Methoden&amp;lt;br&amp;gt;Fallunterscheidungen&amp;lt;br&amp;gt;Benutzerinteraktion&lt;br /&gt;
 | andy (okay) &amp;lt;!-- === Andy === Zusatzaufgabe keine Musterlösung, ist aber auch einfach zu lösen--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Crack_the_Password | Crack the Password]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2/3. VL&lt;br /&gt;
 | Passwörter knacken ;-)&lt;br /&gt;
 | seba (okay)&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Rekursion_vs._Iteration | Rekursion vs. Iteration]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Fehler finden&lt;br /&gt;
 | mars [ok]&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Lineare_Funktionen | Lineare Funktionen]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Verwendung von Methoden&amp;lt;br&amp;gt;Schleifen und Arrays&lt;br /&gt;
 | mars [ok]&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Fibonacci | Fibonaccizahlen]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Schleifen und Arrays&lt;br /&gt;
 | mars [ok]&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Brainfuck | Brainfuck vs Turingmaschine]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Arbeiten mit Arrays&amp;lt;br&amp;gt;Allgemeinwissen :-)&lt;br /&gt;
 | andy (working on) casten????&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Gau%C3%9F-Algorithmus | Gauß-Algorithmus]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |6&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Arrays und Matrizen&lt;br /&gt;
 | sdyroff (ok)&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Zahlenumrechner | Zahlenumrechner]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |6&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Arbeiten mit Methoden&amp;lt;br&amp;gt;mathematisches Denken&lt;br /&gt;
 | andy (okay)&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Javakurs 2007/Democracy | Der Fehler im System]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Fehler finden&lt;br /&gt;
 | mars [ok]&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Quersumme | Spaß mit Quersummen]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5 - 7&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Benutzung des Modulo-Operators&amp;lt;br&amp;gt;Auslagern von Funktionalität in Methoden&lt;br /&gt;
 | AndyF (ok)&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Appleman | Appleman und Fraktale]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |7&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Schleifen, Umgang mit Fließkommazahlen&lt;br /&gt;
 | AndyF (gradDabei), ÜBB-Link funkt. nicht&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/DiffusionLimitedAggregation | Diffusion Limited Aggregation]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | 2-dimensionale Arrays, Methoden, Schleifen&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Palindrome | Palindrome]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4. VL&lt;br /&gt;
 | Entwurf von Programmen&amp;lt;br&amp;gt;Parameterübergabe beim Programmaufruf&lt;br /&gt;
 | Jörg (okay)&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Hangman | Hangman]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4. VL&lt;br /&gt;
 | Entwurf von Programmen&amp;lt;br&amp;gt;Arbeiten mit Methoden&lt;br /&gt;
 | Jörg (dabei)&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/SelectionSort | Selection Sort]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4. VL&lt;br /&gt;
 | Verstehen von komplexeren Algorithmen&amp;lt;br&amp;gt;Schleifen und Arrays&amp;lt;br&amp;gt;(Hilfs-)Methoden&lt;br /&gt;
 | Jörg (dabei)&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Cäsar-Chiffre | Chiffrierung/Dechiffrierung (Cäsar)]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |9&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4. VL&lt;br /&gt;
 | eigenständiges Problemlösen. &amp;lt;br&amp;gt; Alle Konzepte des Kurses&lt;br /&gt;
 | mars [checking]&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Abzaehlspiel | Abzählspiel]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |7&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4. VL&lt;br /&gt;
 | Analyse von Aufgabenstellungen&amp;lt;br&amp;gt;Entwurf eines komplexen Programms von Grund auf&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Javakurs2006/Rennschnecke | Schneckenrennen]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5. VL&lt;br /&gt;
 | Objektorientierte Programmierung&lt;br /&gt;
 | seba(dabei)&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Studentendatenbank_LE5 | Studentendatenbank]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5. VL&lt;br /&gt;
 | Vertiefung in objektorientiertes Programmieren&lt;br /&gt;
 | seba (okay)&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Multiarray| Mehrdimensionale Arrays]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |10&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5. VL&lt;br /&gt;
 | Methoden, Schleifen, Arrays&amp;lt;br&amp;gt;Objektorientierung&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Canvas | Virtuelles Canvas mit 3D-Objekten]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |6. VL&lt;br /&gt;
 | Arbeiten mit Methoden&amp;lt;br&amp;gt;mathematisches Denken&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Doom | ASCII DOOM ]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |8&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |6. VL&lt;br /&gt;
 | Vertiefung in objektorientierte Programmierung&amp;lt;br&amp;gt;Benutzung der Java-API&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Textwordcount | Texte lesen und analysieren]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |7&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |6. VL&lt;br /&gt;
 | eigenständiges Problemlösen&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Aufgaben als PDF ==&lt;br /&gt;
Alle Aufgaben als PDFs in einem Paket mit den Vorgaben gibt es hier:&lt;br /&gt;
&lt;br /&gt;
[http://docs.freitagsrunde.org/Veranstaltungen/javakurs_2009/aufgaben2009.tar.gz http://docs.freitagsrunde.org/Veranstaltungen/javakurs_2009/aufgaben2009.tar.gz] (Stand: 24.03.2009 8:45)&lt;br /&gt;
&lt;br /&gt;
== Schwierigkeitsgrade ==&lt;br /&gt;
&lt;br /&gt;
#  Reines Tutorial. Man muss nicht viel selbst denken&lt;br /&gt;
#  ...&lt;br /&gt;
#  Leichte Übungsaufgabe. Studies, die noch eher unsicher sind werden hier gut begleitet.&lt;br /&gt;
#  ...&lt;br /&gt;
#  Typische Aufgabe. Man muss den Kopf benutzen, bekommt an schwierigen Stellen aber Hilfestellungen.&lt;br /&gt;
#  ...&lt;br /&gt;
#  Herausfordernd, eher etwas für Studies die etwas fitter sind.&lt;br /&gt;
#  ...&lt;br /&gt;
#  Auch erfahrene Programmierer weden hier ein bis zwei Übungen beschäftigt sein&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
#  Tja, die Idee war da. Wir finden sie auch gut, aber es könnte wirklich anstrengend werden.&lt;br /&gt;
&lt;br /&gt;
== Kleine und große Probleme ==&lt;br /&gt;
&lt;br /&gt;
- Die Tubit-Accounts haben nicht /bin/bash als shell, so dass die &amp;lt;strong&amp;gt;Cursortasten&amp;lt;/strong&amp;gt; nicht funktionieren. Workaround: als erstes Kommando 'bash' eingeben, man sieht dann auch in welchem Verzeichnis man gerade ist.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[Javakurs_2009/Feedback|Feedback zum Kurs 2009]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Java]]&lt;br /&gt;
[[Kategorie:Java_Aufgaben]]&lt;/div&gt;</summary>
		<author><name>Seba</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=Javakurs_2010&amp;diff=13465</id>
		<title>Javakurs 2010</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=Javakurs_2010&amp;diff=13465"/>
		<updated>2010-03-17T17:03:11Z</updated>

		<summary type="html">&lt;p&gt;Seba: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&lt;br /&gt;
Auch dieses Jahres bietet die Freitagsrunde wieder einen Javakurs an!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Der Kurs findet vom &amp;lt;strong&amp;gt;22.03.2010&amp;lt;/strong&amp;gt;  bis einschließlich dem &amp;lt;strong&amp;gt;25.03.2010&amp;lt;/strong&amp;gt; statt.&amp;lt;br&amp;gt;&lt;br /&gt;
Er richtet sich vor allem an Programmieranfänger, dennoch ist wirklich jeder herzlich willkommen der an Java interessiert ist.&lt;br /&gt;
&lt;br /&gt;
Die Vorlesungen finden in Raum H2032 statt.&amp;lt;br&amp;gt;&lt;br /&gt;
Die offenen Übungen finden voraussichtlich in den Räumen TEL106 und TEL206 statt. &lt;br /&gt;
&lt;br /&gt;
Der Kurs ist kostenlos. Aufgrund der immensen Nachfrage müssen wir die Anmeldung leider schließen.&lt;br /&gt;
&lt;br /&gt;
== ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;2&amp;quot;&lt;br /&gt;
 |- bgcolor=&amp;quot;#D8D8D8&amp;quot;&lt;br /&gt;
 !Zeit&lt;br /&gt;
 !Mo 22.03.2010&lt;br /&gt;
 !Di 23.03.2010&lt;br /&gt;
 !Mi 24.03.2010&lt;br /&gt;
 !Do 25.03.2010&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 |10:15-11:15&lt;br /&gt;
 |bgcolor=&amp;quot;#E8E8E8&amp;quot; |[[Javakurs 2010/Vortrag01 | Hello World]]&lt;br /&gt;
 |bgcolor=&amp;quot;#E8E8E8&amp;quot; |[[Javakurs 2010/Vortrag03 | Methoden und Testen]]&lt;br /&gt;
 |bgcolor=&amp;quot;#E8E8E8&amp;quot; |[[Javakurs 2010/Vortrag04 | Von der Aufgabe zum Code]]&lt;br /&gt;
 |bgcolor=&amp;quot;#E8E8E8&amp;quot; |[[Javakurs 2010/Vortrag06 | Vererbung]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 |11:30-13:15&lt;br /&gt;
 |Übung&lt;br /&gt;
 |Übung&lt;br /&gt;
 |Übung&lt;br /&gt;
 |Übung&lt;br /&gt;
 |- bgcolor=&amp;quot;#FFFFFF&amp;quot;&lt;br /&gt;
 |13:15-14:15&lt;br /&gt;
 |Mittagspause&lt;br /&gt;
 |Mittagspause&lt;br /&gt;
 |Mittagspause&lt;br /&gt;
 |Mittagspause&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 |14:15-15:15&lt;br /&gt;
 |[[Javakurs 2010/Vortrag02 | Schleifen und Felder]]&lt;br /&gt;
 | bgcolor=&amp;quot;#F5F5F5&amp;quot; rowspan=2 | Übung&lt;br /&gt;
 |[[Javakurs 2010/Vortrag05 | Objekte und Kapselung]]&lt;br /&gt;
 | bgcolor=&amp;quot;#F5F5F5&amp;quot; rowspan=2 |Übung&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 |15:30-17:30&lt;br /&gt;
 | Übung&lt;br /&gt;
 | Übung&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''[[Javakurs/Übungsaufgaben | --&amp;gt; Zu den Übungsaufgaben &amp;lt;-- ]]'''&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ==&lt;br /&gt;
&lt;br /&gt;
== Warum teilnehmen? ==&lt;br /&gt;
Der Javakurs richtet sich an Programmieranfänger, die gerne Java lernen möchten. Wir haben uns zum Ziel gesetzt, möglichst gut verständliche und vor allem motivierende Lehre zu machen weil wir glauben, dass die Uni-Lehre manchmal zu langweilig ist und deshalb viele Studenten unnötigerweise Probleme haben. Lernen sollte Spass machen, nicht anstrengen. Folglich dient der Kurs auch nicht der direkten Vorbereitung auf Tests oder Klausuren.&lt;br /&gt;
&lt;br /&gt;
Hauptsächlich hoffen wir damit den Teilnehmern von MPGI2 einen Kickstart für ihre Vorlesung zu geben, weil es je nach Dozent und Zuhörer manchmal zu schnell und manchmal zu langsam geht. Allerdings steht der Kurs jedem offen!&lt;br /&gt;
&lt;br /&gt;
Wenn du also einfach gerne Java lernen möchtest, dann bist du herzlich eingeladen!&lt;br /&gt;
&lt;br /&gt;
Der Kurs beruht ursprünglich auf der Initiative einiger StudentInnen und wissenschaftlicher Mitarbeiter. Er ist aus der Erfahrung entstanden, dass viele Informatiker in den Übungsaufgaben des 2. Semesters nicht unbedingt Probleme mit dem Stoff des Semesters selbst haben, sich jedoch sehr beim Erlernen der Sprache Java quälen. Die Situation hat sich seitdem zwar etwas geändert, aber vielen, gerade Studenten aus Informatik-fremden Studiengängen ist immer noch die Sprache selbst und nicht die Algorithmen eine Hürde.&lt;br /&gt;
&lt;br /&gt;
Der Kurs wird wie im letzten Jahr komplett von engagierten StudentInnen geplant und durchgeführt. Insgesamt stehen euch in den Übungen zwölf TutorInnen mit Rat und Tat zur Seite, im Schnitt also einer für fünf bis zehn Studentierende. Aus den Reihen der TutorInnen rekrutieren sich auch unsere Vortragenden in den Vorlesungen. Inzwischen haben wir einiges an Erfahrung sammeln können, überarbeiten aber jedes Jahr die Vorträge neu und unterziehen sie einem Peer-Review Prozess. Wir hoffen, dass wir damit einen möglichst hohe Qualität bieten können.&lt;br /&gt;
&lt;br /&gt;
Der Kurs kann in der Kürze der Zeit bei weitem nicht alle Aspekte von Java beleuchten, hierfür sind weiterführende Lehrveranstaltungen und das Lehrpersonal der Uni da. Er stellt jedoch eine gute Starthilfe dar und hilft vor allem StudentInnen denen der Umgang mit Programmiersprachen noch ein wenig fremd ist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Es gibt für diesen Kurs keinerlei Scheine oder sonstige Anrechnung.'''&lt;br /&gt;
&lt;br /&gt;
Es gibt auch keinerlei Anwesenheitspflicht. Dementsprechend entspannt ist allerdings auch die Atmosphäre. :)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Teilnahmevoraussetzungen ==&lt;br /&gt;
Der Javakurs ist für absolute Programmieranfänger konzipiert. Wir setzen keinerlei Programmierkenntnisse voraus. Was wir allerdings voraussetzen sind rudimentäre Kentnisse wie man einen Computer bedient. Wir bringen euch nicht bei wie ihr eine Datei öffnet oder einen Browser bedient.&lt;br /&gt;
&lt;br /&gt;
Die zweite Voraussetzung ist eine Möglichkeit bzw. ein Account um in den Übungsräumen zu arbeiten. Die Übungen finden in den Rechnerräumen des IRB statt. In diese Rechner kann man sich mit einem TubIT- oder CS-Account einloggen. Wenn du noch keinen TubIT oder CS-Account hast bist du vermutlich auch nicht Student an der TU Berlin. Dann ist die einfachste Lösung für Dich deinen eigenen Laptop mitzubringen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Anmeldung ==&lt;br /&gt;
Um Anmeldung unter &lt;br /&gt;
[http://anmeldung.freitagsrunde.org http://anmeldung.freitagsrunde.org] &lt;br /&gt;
wird zur besseren Planbarkeit gebeten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Termine &amp;amp; Räume == &lt;br /&gt;
Der Javakurs findet vom Montag, den 22.03.2010 bis einschließlich Donnerstag, den 25.03.2010 statt.&amp;lt;br&amp;gt;&lt;br /&gt;
Die Vorlesungen finden im H2032 statt, die Übungen im TEL106 und TEL206.&lt;br /&gt;
&lt;br /&gt;
== Inhalte ==&lt;br /&gt;
&lt;br /&gt;
=== Vorlesungen ===&lt;br /&gt;
&lt;br /&gt;
Eine Übersicht über die Inhalte der Vorlesungen folgt in Kürze.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== offene Übungen ===&lt;br /&gt;
&lt;br /&gt;
Der praktische Teil des Kurses orientiert sich vor allem daran was ihr selbst ausprobieren wollt.&amp;lt;br&amp;gt;&lt;br /&gt;
Ihr bestimmt selbst in welchem Schwierigkeitsgrad ihr lernen wollt und wie hoch euer Arbeitspensum ist.&lt;br /&gt;
Die folgenden Übungsaufgaben sind als Vorschläge zu verstehen aus denen ihr auswählen könnt, was und vor allem wie viel davon ihr versuchen wollt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;'''[[Javakurs/Übungsaufgaben | --&amp;gt; Zu den Übungsaufgaben &amp;lt;-- ]]'''&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ansprechpartner ==&lt;br /&gt;
Solltet ihr Fragen zu Organisatorischem haben sind wir unter&lt;br /&gt;
&amp;lt;email&amp;gt;javakurs2010@freitagsrunde.org&amp;lt;/email&amp;gt;&lt;br /&gt;
gerne für euch da!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [[Javakurs 2010/Tutorenportal]]&lt;br /&gt;
* [[Javakurs2008| Seiten des Javakurses 2008]]&lt;br /&gt;
* [[Javakurs2009| Seiten des Javakurses 2009]]&lt;br /&gt;
* [[Javakurs/Übungsaufgaben|Übungsaufgaben]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie: Veranstaltungen der Freitagsrunde]]&lt;/div&gt;</summary>
		<author><name>Seba</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=Javakurs_2010&amp;diff=13464</id>
		<title>Javakurs 2010</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=Javakurs_2010&amp;diff=13464"/>
		<updated>2010-03-17T17:02:47Z</updated>

		<summary type="html">&lt;p&gt;Seba: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&lt;br /&gt;
Auch dieses Jahres bietet die Freitagsrunde wieder einen Javakurs an!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Der Kurs findet vom &amp;lt;strong&amp;gt;22.03.2010&amp;lt;/strong&amp;gt;  bis einschließlich dem &amp;lt;strong&amp;gt;25.03.2010&amp;lt;/strong&amp;gt; statt.&amp;lt;br&amp;gt;&lt;br /&gt;
Er richtet sich vor allem an Programmieranfänger, dennoch ist wirklich jeder herzlich willkommen der an Java interessiert ist.&lt;br /&gt;
&lt;br /&gt;
Die Vorlesungen finden in Raum H2032 statt.&amp;lt;br&amp;gt;&lt;br /&gt;
Die offenen Übungen finden voraussichtlich in den Räumen TEL106 und TEL206 statt. &lt;br /&gt;
&lt;br /&gt;
Der Kurs ist kostenlos. Aufgrund der immensen Nachfrage müssen wir die Anmeldung leider schliessen.&lt;br /&gt;
&lt;br /&gt;
== ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;2&amp;quot;&lt;br /&gt;
 |- bgcolor=&amp;quot;#D8D8D8&amp;quot;&lt;br /&gt;
 !Zeit&lt;br /&gt;
 !Mo 22.03.2010&lt;br /&gt;
 !Di 23.03.2010&lt;br /&gt;
 !Mi 24.03.2010&lt;br /&gt;
 !Do 25.03.2010&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 |10:15-11:15&lt;br /&gt;
 |bgcolor=&amp;quot;#E8E8E8&amp;quot; |[[Javakurs 2010/Vortrag01 | Hello World]]&lt;br /&gt;
 |bgcolor=&amp;quot;#E8E8E8&amp;quot; |[[Javakurs 2010/Vortrag03 | Methoden und Testen]]&lt;br /&gt;
 |bgcolor=&amp;quot;#E8E8E8&amp;quot; |[[Javakurs 2010/Vortrag04 | Von der Aufgabe zum Code]]&lt;br /&gt;
 |bgcolor=&amp;quot;#E8E8E8&amp;quot; |[[Javakurs 2010/Vortrag06 | Vererbung]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 |11:30-13:15&lt;br /&gt;
 |Übung&lt;br /&gt;
 |Übung&lt;br /&gt;
 |Übung&lt;br /&gt;
 |Übung&lt;br /&gt;
 |- bgcolor=&amp;quot;#FFFFFF&amp;quot;&lt;br /&gt;
 |13:15-14:15&lt;br /&gt;
 |Mittagspause&lt;br /&gt;
 |Mittagspause&lt;br /&gt;
 |Mittagspause&lt;br /&gt;
 |Mittagspause&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 |14:15-15:15&lt;br /&gt;
 |[[Javakurs 2010/Vortrag02 | Schleifen und Felder]]&lt;br /&gt;
 | bgcolor=&amp;quot;#F5F5F5&amp;quot; rowspan=2 | Übung&lt;br /&gt;
 |[[Javakurs 2010/Vortrag05 | Objekte und Kapselung]]&lt;br /&gt;
 | bgcolor=&amp;quot;#F5F5F5&amp;quot; rowspan=2 |Übung&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 |15:30-17:30&lt;br /&gt;
 | Übung&lt;br /&gt;
 | Übung&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''[[Javakurs/Übungsaufgaben | --&amp;gt; Zu den Übungsaufgaben &amp;lt;-- ]]'''&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ==&lt;br /&gt;
&lt;br /&gt;
== Warum teilnehmen? ==&lt;br /&gt;
Der Javakurs richtet sich an Programmieranfänger, die gerne Java lernen möchten. Wir haben uns zum Ziel gesetzt, möglichst gut verständliche und vor allem motivierende Lehre zu machen weil wir glauben, dass die Uni-Lehre manchmal zu langweilig ist und deshalb viele Studenten unnötigerweise Probleme haben. Lernen sollte Spass machen, nicht anstrengen. Folglich dient der Kurs auch nicht der direkten Vorbereitung auf Tests oder Klausuren.&lt;br /&gt;
&lt;br /&gt;
Hauptsächlich hoffen wir damit den Teilnehmern von MPGI2 einen Kickstart für ihre Vorlesung zu geben, weil es je nach Dozent und Zuhörer manchmal zu schnell und manchmal zu langsam geht. Allerdings steht der Kurs jedem offen!&lt;br /&gt;
&lt;br /&gt;
Wenn du also einfach gerne Java lernen möchtest, dann bist du herzlich eingeladen!&lt;br /&gt;
&lt;br /&gt;
Der Kurs beruht ursprünglich auf der Initiative einiger StudentInnen und wissenschaftlicher Mitarbeiter. Er ist aus der Erfahrung entstanden, dass viele Informatiker in den Übungsaufgaben des 2. Semesters nicht unbedingt Probleme mit dem Stoff des Semesters selbst haben, sich jedoch sehr beim Erlernen der Sprache Java quälen. Die Situation hat sich seitdem zwar etwas geändert, aber vielen, gerade Studenten aus Informatik-fremden Studiengängen ist immer noch die Sprache selbst und nicht die Algorithmen eine Hürde.&lt;br /&gt;
&lt;br /&gt;
Der Kurs wird wie im letzten Jahr komplett von engagierten StudentInnen geplant und durchgeführt. Insgesamt stehen euch in den Übungen zwölf TutorInnen mit Rat und Tat zur Seite, im Schnitt also einer für fünf bis zehn Studentierende. Aus den Reihen der TutorInnen rekrutieren sich auch unsere Vortragenden in den Vorlesungen. Inzwischen haben wir einiges an Erfahrung sammeln können, überarbeiten aber jedes Jahr die Vorträge neu und unterziehen sie einem Peer-Review Prozess. Wir hoffen, dass wir damit einen möglichst hohe Qualität bieten können.&lt;br /&gt;
&lt;br /&gt;
Der Kurs kann in der Kürze der Zeit bei weitem nicht alle Aspekte von Java beleuchten, hierfür sind weiterführende Lehrveranstaltungen und das Lehrpersonal der Uni da. Er stellt jedoch eine gute Starthilfe dar und hilft vor allem StudentInnen denen der Umgang mit Programmiersprachen noch ein wenig fremd ist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Es gibt für diesen Kurs keinerlei Scheine oder sonstige Anrechnung.'''&lt;br /&gt;
&lt;br /&gt;
Es gibt auch keinerlei Anwesenheitspflicht. Dementsprechend entspannt ist allerdings auch die Atmosphäre. :)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Teilnahmevoraussetzungen ==&lt;br /&gt;
Der Javakurs ist für absolute Programmieranfänger konzipiert. Wir setzen keinerlei Programmierkenntnisse voraus. Was wir allerdings voraussetzen sind rudimentäre Kentnisse wie man einen Computer bedient. Wir bringen euch nicht bei wie ihr eine Datei öffnet oder einen Browser bedient.&lt;br /&gt;
&lt;br /&gt;
Die zweite Voraussetzung ist eine Möglichkeit bzw. ein Account um in den Übungsräumen zu arbeiten. Die Übungen finden in den Rechnerräumen des IRB statt. In diese Rechner kann man sich mit einem TubIT- oder CS-Account einloggen. Wenn du noch keinen TubIT oder CS-Account hast bist du vermutlich auch nicht Student an der TU Berlin. Dann ist die einfachste Lösung für Dich deinen eigenen Laptop mitzubringen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Anmeldung ==&lt;br /&gt;
Um Anmeldung unter &lt;br /&gt;
[http://anmeldung.freitagsrunde.org http://anmeldung.freitagsrunde.org] &lt;br /&gt;
wird zur besseren Planbarkeit gebeten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Termine &amp;amp; Räume == &lt;br /&gt;
Der Javakurs findet vom Montag, den 22.03.2010 bis einschließlich Donnerstag, den 25.03.2010 statt.&amp;lt;br&amp;gt;&lt;br /&gt;
Die Vorlesungen finden im H2032 statt, die Übungen im TEL106 und TEL206.&lt;br /&gt;
&lt;br /&gt;
== Inhalte ==&lt;br /&gt;
&lt;br /&gt;
=== Vorlesungen ===&lt;br /&gt;
&lt;br /&gt;
Eine Übersicht über die Inhalte der Vorlesungen folgt in Kürze.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== offene Übungen ===&lt;br /&gt;
&lt;br /&gt;
Der praktische Teil des Kurses orientiert sich vor allem daran was ihr selbst ausprobieren wollt.&amp;lt;br&amp;gt;&lt;br /&gt;
Ihr bestimmt selbst in welchem Schwierigkeitsgrad ihr lernen wollt und wie hoch euer Arbeitspensum ist.&lt;br /&gt;
Die folgenden Übungsaufgaben sind als Vorschläge zu verstehen aus denen ihr auswählen könnt, was und vor allem wie viel davon ihr versuchen wollt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;'''[[Javakurs/Übungsaufgaben | --&amp;gt; Zu den Übungsaufgaben &amp;lt;-- ]]'''&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ansprechpartner ==&lt;br /&gt;
Solltet ihr Fragen zu Organisatorischem haben sind wir unter&lt;br /&gt;
&amp;lt;email&amp;gt;javakurs2010@freitagsrunde.org&amp;lt;/email&amp;gt;&lt;br /&gt;
gerne für euch da!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [[Javakurs 2010/Tutorenportal]]&lt;br /&gt;
* [[Javakurs2008| Seiten des Javakurses 2008]]&lt;br /&gt;
* [[Javakurs2009| Seiten des Javakurses 2009]]&lt;br /&gt;
* [[Javakurs/Übungsaufgaben|Übungsaufgaben]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie: Veranstaltungen der Freitagsrunde]]&lt;/div&gt;</summary>
		<author><name>Seba</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=Javakurs/%C3%9Cbungsaufgaben&amp;diff=13424</id>
		<title>Javakurs/Übungsaufgaben</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=Javakurs/%C3%9Cbungsaufgaben&amp;diff=13424"/>
		<updated>2010-03-06T00:30:37Z</updated>

		<summary type="html">&lt;p&gt;Seba: /* Die Aufgaben */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wir haben jeder Aufgabe eine Einschätzung ihrer Schwierigkeit auf einer Skala von 1 bis 10 vorangestellt. Bei dieser Einschätzung sind wir von einem Gehirn ausgegangen, für welches das jeweilige Themengebiet völlig neu ist, das jedoch schon ein ganz gutes Verständnis dafür hat wie eine Programmiersprache denn so funktioniert. &lt;br /&gt;
Entsprechend kann eine schwer bewertete Aufgabe aus einem frühen Themengebiet für manch einen sehr einfach oder eine leicht bewertete aus einem späten Themengebiet für einen anderen sehr schwer sein. Es ist nur ein Wert, der euch helfen soll eure nächste Aufgabe zu wählen. Einen kleinen Überblick zu den Schwierigkeitsgraden findet ihr ganz unten auf dieser Seite.&lt;br /&gt;
&lt;br /&gt;
Falls ihr Anmerkungen zu den Aufgaben habt, könnt ihr die Diskussionsseiten der jeweiligen Aufgaben nutzen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Die Aufgaben ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;2&amp;quot;&lt;br /&gt;
 |- bgcolor=&amp;quot;#D8D8D8&amp;quot;&lt;br /&gt;
 !Aufgabe&lt;br /&gt;
 !Schwierigkeit&lt;br /&gt;
 !Vorwissen&lt;br /&gt;
 !Lerneffekte&lt;br /&gt;
 ! Überprüfer(Status)&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Von der Console zum HelloWorld | Vom Arbeiten mit der Konsole bis &amp;quot;Hallo Welt&amp;quot;]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1. VL&lt;br /&gt;
 | Einfaches Arbeiten mit der Kommandozeile &amp;lt;br&amp;gt; Kompilieren und Ausführen von Javacode&lt;br /&gt;
 | seba (okay)&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Variablen_und_Zuweisungen | Variablen und Zuweisungen]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1. VL&lt;br /&gt;
 | Deklarieren und definieren von Variablen&amp;lt;br&amp;gt;grundlegende Regeln der Codeformatierung&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Cowsay | Cowsay oder &amp;quot;Wie macht die Kuh?&amp;quot;]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1. VL&lt;br /&gt;
 | etwas mehr Bildschirmausgabe&amp;lt;br&amp;gt;schöne Graphiken&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Kassenbon | Erstellen eines Kassenbons]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1. VL&lt;br /&gt;
 | Arbeiten mit Variablen&amp;lt;br&amp;gt;Fallunterscheidungen&lt;br /&gt;
 | &lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Javamenue | Ein eigenes Menü]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1. VL&lt;br /&gt;
 | Lesen von Benutzereingaben über die Konsole&amp;lt;br&amp;gt;Fallunterscheidungen&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Glücksspiel | Glücksspiel]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1. VL&lt;br /&gt;
 | Anwenden von Fallunterscheidungen &lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Arrays | Quickies Arrays]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Verwenden von Arrays&lt;br /&gt;
 | &lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Verschachtelte_Schleifen | Verschachtelte Schleifen]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Umgang mit mehreren verschachtelten Schleifen&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Primzahlenaufgabe | Primzahlen]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2-5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Geschicktes Einsetzen von Schleifen und Arrays&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Wetterstation | Wetterstation]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Schleifen und Arrays&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Geometrie | Geometrie]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Methoden schreiben&amp;lt;br&amp;gt;schreiben mathematischer Funktionen&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Zweierpotenzen | Zweierpotenzen]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Schleifen und Arrays&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Schleifen_und_Modulo | Schleifen und Modulo]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Verwendung von Schleifen&amp;lt;br&amp;gt;Benutzung des Modulo-Operators&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Methoden | Quickies zu Methoden]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Verwenden von Methoden&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/MathematischeMethoden | Eigene Methoden]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Schreiben eigener Methoden&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Schaltjahr | Schaltjahr]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Schreiben von Methoden&amp;lt;br&amp;gt;Fallunterscheidungen&amp;lt;br&amp;gt;Benutzerinteraktion&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Crack_the_Password | Crack the Password]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2/3. VL&lt;br /&gt;
 | Passwörter knacken ;-)&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Rekursion_vs._Iteration | Rekursion vs. Iteration]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Fehler finden&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Lineare_Funktionen | Lineare Funktionen]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Verwendung von Methoden&amp;lt;br&amp;gt;Schleifen und Arrays&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Fibonacci | Fibonaccizahlen]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Schleifen und Arrays&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Brainfuck | Brainfuck vs Turingmaschine]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Arbeiten mit Arrays&amp;lt;br&amp;gt;Allgemeinwissen :-)&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Gau%C3%9F-Algorithmus | Gauß-Algorithmus]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |6&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Arrays und Matrizen&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Zahlenumrechner | Zahlenumrechner]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |6&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Arbeiten mit Methoden&amp;lt;br&amp;gt;mathematisches Denken&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Javakurs 2007/Democracy | Der Fehler im System]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Fehler finden&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Quersumme | Spaß mit Quersummen]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5 - 7&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Benutzung des Modulo-Operators&amp;lt;br&amp;gt;Auslagern von Funktionalität in Methoden&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Appleman | Appleman und Fraktale]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |7&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Schleifen, Umgang mit Fließkommazahlen&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/DiffusionLimitedAggregation | Diffusion Limited Aggregation]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | 2-dimensionale Arrays, Methoden, Schleifen&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Palindrome | Palindrome]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4. VL&lt;br /&gt;
 | Entwurf von Programmen&amp;lt;br&amp;gt;Parameterübergabe beim Programmaufruf&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Hangman | Hangman]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4. VL&lt;br /&gt;
 | Entwurf von Programmen&amp;lt;br&amp;gt;Arbeiten mit Methoden&lt;br /&gt;
 | &lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/SelectionSort | Selection Sort]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4. VL&lt;br /&gt;
 | Verstehen von komplexeren Algorithmen&amp;lt;br&amp;gt;Schleifen und Arrays&amp;lt;br&amp;gt;(Hilfs-)Methoden&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Cäsar-Chiffre | Chiffrierung/Dechiffrierung (Cäsar)]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |9&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4. VL&lt;br /&gt;
 | eigenständiges Problemlösen. &amp;lt;br&amp;gt; Alle Konzepte des Kurses&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Abzaehlspiel | Abzählspiel]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |7&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4. VL&lt;br /&gt;
 | Analyse von Aufgabenstellungen&amp;lt;br&amp;gt;Entwurf eines komplexen Programms von Grund auf&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Javakurs2006/Rennschnecke | Schneckenrennen]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5. VL&lt;br /&gt;
 | Objektorientierte Programmierung&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Studentendatenbank_LE5 | Studentendatenbank]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5. VL&lt;br /&gt;
 | Vertiefung in objektorientiertes Programmieren&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Multiarray| Mehrdimensionale Arrays]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |10&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5. VL&lt;br /&gt;
 | Methoden, Schleifen, Arrays&amp;lt;br&amp;gt;Objektorientierung&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Canvas | Virtuelles Canvas mit 3D-Objekten]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |6. VL&lt;br /&gt;
 | Arbeiten mit Methoden&amp;lt;br&amp;gt;mathematisches Denken&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Doom | ASCII DOOM ]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |8&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |6. VL&lt;br /&gt;
 | Vertiefung in objektorientierte Programmierung&amp;lt;br&amp;gt;Benutzung der Java-API&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Textwordcount | Texte lesen und analysieren]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |7&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |6. VL&lt;br /&gt;
 | eigenständiges Problemlösen&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Aufgaben als PDF ==&lt;br /&gt;
Alle Aufgaben als PDFs in einem Paket mit den Vorgaben gibt es hier:&lt;br /&gt;
&lt;br /&gt;
[http://docs.freitagsrunde.org/Veranstaltungen/javakurs_2009/aufgaben2009.tar.gz http://docs.freitagsrunde.org/Veranstaltungen/javakurs_2009/aufgaben2009.tar.gz] (Stand: 24.03.2009 8:45)&lt;br /&gt;
&lt;br /&gt;
== Schwierigkeitsgrade ==&lt;br /&gt;
&lt;br /&gt;
#  Reines Tutorial. Man muss nicht viel selbst denken&lt;br /&gt;
#  ...&lt;br /&gt;
#  Leichte Übungsaufgabe. Studies, die noch eher unsicher sind werden hier gut begleitet.&lt;br /&gt;
#  ...&lt;br /&gt;
#  Typische Aufgabe. Man muss den Kopf benutzen, bekommt an schwierigen Stellen aber Hilfestellungen.&lt;br /&gt;
#  ...&lt;br /&gt;
#  Herausfordernd, eher etwas für Studies die etwas fitter sind.&lt;br /&gt;
#  ...&lt;br /&gt;
#  Auch erfahrene Programmierer weden hier ein bis zwei Übungen beschäftigt sein&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
#  Tja, die Idee war da. Wir finden sie auch gut, aber es könnte wirklich anstrengend werden.&lt;br /&gt;
&lt;br /&gt;
== Kleine und große Probleme ==&lt;br /&gt;
&lt;br /&gt;
- Die Tubit-Accounts haben nicht /bin/bash als shell, so dass die &amp;lt;strong&amp;gt;Cursortasten&amp;lt;/strong&amp;gt; nicht funktionieren. Workaround: als erstes Kommando 'bash' eingeben, man sieht dann auch in welchem Verzeichnis man gerade ist.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[Javakurs_2009/Feedback|Feedback zum Kurs 2009]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Java]]&lt;br /&gt;
[[Kategorie:Java_Aufgaben]]&lt;/div&gt;</summary>
		<author><name>Seba</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=Javakurs2007/Kommandohilfe&amp;diff=13423</id>
		<title>Javakurs2007/Kommandohilfe</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=Javakurs2007/Kommandohilfe&amp;diff=13423"/>
		<updated>2010-03-05T23:52:07Z</updated>

		<summary type="html">&lt;p&gt;Seba: /* mv */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Dont Panic ==&lt;br /&gt;
&lt;br /&gt;
Du erhältst zu jedem Befehl in Unix eine ausfürliche Hilfe durch:&lt;br /&gt;
&lt;br /&gt;
* man Befehl&lt;br /&gt;
&lt;br /&gt;
oft kürzer auch mittels&lt;br /&gt;
&lt;br /&gt;
* Befehl -h&lt;br /&gt;
&lt;br /&gt;
oder&lt;br /&gt;
&lt;br /&gt;
* Befehl --help&lt;br /&gt;
&lt;br /&gt;
Wenn das alles nichts hilft, weil du z.B. noch nicht so fit in Englisch bist, versuchs bei Google ;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Die elementarsten Unixkommandos in Kürze ===&lt;br /&gt;
&lt;br /&gt;
==== cd ====&lt;br /&gt;
&lt;br /&gt;
* cd ..	# Wechsel in Mutterverzeichnis&lt;br /&gt;
* cd foo # Wechsel ins Verzeichnis foo, welches sich im aktuellen Verzeichnis befinden muss&lt;br /&gt;
* cd ../foo/bar	# Wechsel ins Verzeichnis bar, welches in foo liegt, welches im Mutterverzeichnis liegt&lt;br /&gt;
* cd ~ # Wechsel ins Homedirectory&lt;br /&gt;
&lt;br /&gt;
==== mkdir ====&lt;br /&gt;
&lt;br /&gt;
* mkdir ./foo # erzeugt das Verzeichnis foo im aktuellen Verzeichniss&lt;br /&gt;
&lt;br /&gt;
==== cp ====&lt;br /&gt;
&lt;br /&gt;
* cp source_file target_file # Kopiert source_file nach target_file&lt;br /&gt;
&lt;br /&gt;
==== mv ====&lt;br /&gt;
&lt;br /&gt;
* mv source_file target_file # Verschiebt source_file nach target_file (wird auch zum umbenennen benutzt)&lt;br /&gt;
&lt;br /&gt;
==== rm ====&lt;br /&gt;
&lt;br /&gt;
* rm foo # Löscht die Datei foo&lt;br /&gt;
&lt;br /&gt;
==== rmdir ====&lt;br /&gt;
&lt;br /&gt;
* rmdir foo # Löscht das Verzeichis foo. Der Ordner muss vorher leer sein.&lt;br /&gt;
* rm -r foo # Löscht das Verzeichis foo und seinen Inhalt&lt;br /&gt;
&lt;br /&gt;
==== tar ====&lt;br /&gt;
(entnommen aus tar --help)&lt;br /&gt;
&lt;br /&gt;
* tar -tvf archive.tar         # List all files in archive.tar verbosely.&lt;br /&gt;
* tar -cf archive.tar foo bar # Create archive.tar from files foo and bar.&lt;br /&gt;
* tar -xf archive.tar # Extract all files from archive.tar.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Java]]&lt;/div&gt;</summary>
		<author><name>Seba</name></author>
		
	</entry>
</feed>