<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki.stageing.freitagsrunde.org//api.php?action=feedcontributions&amp;feedformat=atom&amp;user=95.89.48.219</id>
	<title>FreitagsrundenWiki - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.stageing.freitagsrunde.org//api.php?action=feedcontributions&amp;feedformat=atom&amp;user=95.89.48.219"/>
	<link rel="alternate" type="text/html" href="wiki.stageing.freitagsrunde.org//Spezial:Beitr%C3%A4ge/95.89.48.219"/>
	<updated>2026-11-02T06:36:28Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.45.6</generator>
	<entry>
		<id>wiki.stageing.freitagsrunde.org//index.php?title=Opal_f%C3%BCr_Linux/Unix&amp;diff=12852</id>
		<title>Opal für Linux/Unix</title>
		<link rel="alternate" type="text/html" href="wiki.stageing.freitagsrunde.org//index.php?title=Opal_f%C3%BCr_Linux/Unix&amp;diff=12852"/>
		<updated>2009-11-03T15:30:30Z</updated>

		<summary type="html">&lt;p&gt;95.89.48.219: ...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hier gibt es fertige Pakete für die gängigsten Linux-Distributionen und andere Unix-Derivate. Wenn ihr Linux verwenden wollt und falls ihr Linux noch nicht auf eurem Rechner installiert habt, könnt ihr einfach [[Opalix]] verwenden, es liefert euch eine komplette Linuxumgebung, ohne es dauerhaft installieren zu müssen. &lt;br /&gt;
&lt;br /&gt;
Falls ihr eine Distribution einsetzt, die hier nicht aufgeführt ist, und gerne ein Paket kompilieren würdet, euch aber nicht so ganz sicher seid, wie das geht, dann wendet euch an &amp;lt;email&amp;gt;opalix@freitagsrunde.org&amp;lt;/email&amp;gt;. Wir helfen euch gerne!&lt;br /&gt;
&lt;br /&gt;
Allerdings muss man leider auch anmerken, dass der Opal-Buildprozess sehr schlecht organisiert ist. So wird z.B. nicht zwischen Kompilation- und Installationsphase unterschieden und die generierten Scripte unterstützen DESTDIR nicht, was aber eigentlich eine zwingende Voraussetzung für ein vernünftiges Packaging in den Distributionen ist. Diese Probleme machen es nicht einfach, Pakete zu erstellen.&lt;br /&gt;
&lt;br /&gt;
Und noch ein Bad-Code-Hinweis: Das gesamte System, angefangen vom build-Prozess bis hin zum Opalinterpreter, geht hart davon aus, auf einem 32-Bit System zu laufen. D.h. bei Hashfunktionen wird darauf vertraut, dass es einen Überlauf nach 32 Bit gibt. &amp;lt;b&amp;gt;Daher ist es unmöglich Opal auf einem 64-Bit-System zum Laufen zu bekommen&amp;lt;/b&amp;gt;. Einzig in einem 32-Bit chroot ist die Verwendung möglich. &lt;br /&gt;
&lt;br /&gt;
= Hinweis zum Selber-Kompilieren =&lt;br /&gt;
&lt;br /&gt;
Mit aktuellen gcc/glibc-Versionen (&amp;gt;=4.0) kompiliert OPAL &amp;lt;= 2.3j nicht mehr, da eine obsolete Funktion entfernt wurde. Ab Version 2.3k funktioniert es wieder.&lt;br /&gt;
&lt;br /&gt;
Dirk Reckmann und Stephan Frank (ÜBB Gruppe), haben uns einen [http://opalix.freitagsrunde.org/rpm/patches/CLK_TCK.patch Patch] für die älteren Quellen zum Übersetzen des OCS mit gcc 4.1 zur Verfügung gestellt.&lt;br /&gt;
Diesen könnt ihr einfach einspielen durch:&lt;br /&gt;
 cd &amp;lt;OPAL_UNPACK_DIRECTORY&amp;gt;/ocs&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;wget http://opalix.freitagsrunde.org/rpm/patches/CLK_TCK.patch&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 patch -p0 &amp;lt; CLK_TCK.patch&lt;br /&gt;
&lt;br /&gt;
= SuSE =&lt;br /&gt;
Das Paket installiert OPAL nach &amp;lt;code&amp;gt;/opt/ocs&amp;lt;/code&amp;gt;. Damit ihr &amp;lt;code&amp;gt;oasys&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;ocs&amp;lt;/code&amp;gt; benutzen könnt, müsst ihr die folgende Zeile in die Datei &amp;lt;code&amp;gt;$HOME/.bashrc&amp;lt;/code&amp;gt; eintragen:&lt;br /&gt;
&lt;br /&gt;
    export PATH=/opt/ocs/bin:$PATH &lt;br /&gt;
&lt;br /&gt;
==Aktuelle Versionen==&lt;br /&gt;
Unsere Pakete für aktuelle Versionen von SuSE (siehe auch [[Opal_f%C3%BCr_Linux#C_Compiler_fehlt | Bekannte Probleme/Lösungen]] weiter unten).&lt;br /&gt;
&lt;br /&gt;
* SuSE 11.0: [http://opalix.freitagsrunde.org/rpm/opal_suse11.00.tar.gz opal_suse11.00.tar.gz] ([http://opalix.freitagsrunde.org/rpm/MD5SUMS Prüfsumme]) Vielen Dank an Rene Waidt&lt;br /&gt;
* SuSE 10.1: [http://opalix.freitagsrunde.org/rpm/opal-2.3j-1.i386.suse10.1.rpm opal-2.3j-1.i386.suse10.1.rpm] ([http://opalix.freitagsrunde.org/rpm/MD5SUMS Prüfsumme])&lt;br /&gt;
* SuSE 10.0: [http://opalix.freitagsrunde.org/rpm/opal-2.3j-1.i386.suse10.0.rpm opal-2.3j-1.i386.suse10.0.rpm] ([http://opalix.freitagsrunde.org/rpm/MD5SUMS Prüfsumme])&lt;br /&gt;
&lt;br /&gt;
== Alte Versionen ==&lt;br /&gt;
Zusätzlich zu den Paketen für aktuelle SuSE Versionen gibt es auch noch Pakete für ältere Versionen auf dem Server.&lt;br /&gt;
&lt;br /&gt;
* SuSE 9.2: [http://opalix.freitagsrunde.org/rpm/opal-2.3j-1.i586.suse9.2.rpm opal-2.3j-1.i586.suse9.2.rpm] ([http://opalix.freitagsrunde.org/rpm/MD5SUMS Prüfsumme])&lt;br /&gt;
* SuSE 9.1: [http://opalix.freitagsrunde.org/rpm/opal-2.3j-1.i386.rpm opal-2.3j-1.i386.rpm] ([http://opalix.freitagsrunde.org/rpm/MD5SUMS Prüfsumme])&lt;br /&gt;
* SuSE 9.0: [http://opalix.freitagsrunde.org/rpm/alte_versionen/opal-2.3h-2.i686.suse9.0.rpm opal-2.3h-2.i686.suse9.0.rpm] ([http://opalix.freitagsrunde.org/rpm/alte_versionen/MD5SUMS Prüfsumme]) &lt;br /&gt;
&lt;br /&gt;
= Fedora =&lt;br /&gt;
Das Paket installiert OPAL nach &amp;lt;code&amp;gt;/opt/ocs&amp;lt;/code&amp;gt;, damit ihr an der Shell die Kommandos benutzen könnt, müsst ihr die folgende Zeile in eure &amp;lt;code&amp;gt;.bashrc&amp;lt;/code&amp;gt; eintragen:&lt;br /&gt;
&lt;br /&gt;
    export PATH=/opt/ocs/bin:$PATH &lt;br /&gt;
&lt;br /&gt;
Laut Berichten gibt es Probleme zwischen SELinux und dem Opalinterpreter oasys. Vermutlich hilft hier ein Deaktivieren von SELinux für Opal bzw. das Erstellen von korrekten Regeln.&lt;br /&gt;
* &#039;&#039;&#039;Fedora Core 6&#039;&#039;&#039;: &amp;lt;br&amp;gt; [http://opalix.freitagsrunde.org/rpm/opal-2.3j-1.fc6.i386.rpm opal-2.3j-1.fc6.i386.rpm] ([http://opalix.freitagsrunde.org/rpm/MD5SUMS Prüfsumme]) Vielen Dank an Dennis Schickhaus.&lt;br /&gt;
* &#039;&#039;&#039;Fedora Core 5&#039;&#039;&#039;: &amp;lt;br&amp;gt; [http://opalix.freitagsrunde.org/rpm/opal-2.3k-1.fc5.i386.rpm opal-2.3k-1.fc5.i386.rpm] ([http://opalix.freitagsrunde.org/rpm/MD5SUMS Prüfsumme]) Vielen Dank an Christoph Höger. &amp;lt;br&amp;gt; [http://opalix.freitagsrunde.org/rpm/opal-2.3j-1.fc5.i386.rpm opal-2.3j-1.fc5.i386.rpm] ([http://opalix.freitagsrunde.org/rpm/MD5SUMS Prüfsumme]) Vielen Dank an Dennis Schickhaus.&lt;br /&gt;
* &#039;&#039;&#039;Fedora Core 3&#039;&#039;&#039;: &amp;lt;br&amp;gt; [http://opalix.freitagsrunde.org/rpm/opal-2.3j-1.FC-3.i386.rpm opal-2.3j-1.FC-3.i386.rpm] ([http://opalix.freitagsrunde.org/rpm/MD5SUMS Prüfsumme]) Vielen Dank an Christoph Höger.&lt;br /&gt;
&lt;br /&gt;
= Andere RPM-basierte Distributionen =&lt;br /&gt;
&lt;br /&gt;
* Quellpaket: [http://opalix.freitagsrunde.org/rpm/opal-2.3j-1.src.rpm opal-2.3j-1.src.rpm] ([http://opalix.freitagsrunde.org/rpm/MD5SUMS Prüfsumme])&lt;br /&gt;
&lt;br /&gt;
Wenn Ihr Opal auf einer anderen RPM-basierten Distribution neukompilieren wollt, könnt Ihr das SRPM-Paket benutzen. Einfach an der Shell&lt;br /&gt;
&lt;br /&gt;
    rpmbuild --rebuild --target i386 opal-2.3j-1.src.rpm &lt;br /&gt;
&lt;br /&gt;
ausführen. Ihr benötigt dabei die Pakete &amp;lt;code&amp;gt;tcl-devel&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;tk-devel&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;xfree86-devel&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;flex&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;readline-devel&amp;lt;/code&amp;gt;. Wenn ihr neue Pakete baut, wäre es nett, wenn ihr sie hier anderen zur Verfügung stellt. Sagt einfach unter &amp;lt;email&amp;gt;opalix@freitagsrunde.org&amp;lt;/email&amp;gt; Bescheid, wo sie zu finden sind.&lt;br /&gt;
&lt;br /&gt;
Alternativ könnt ihr auch das Paket komplett neu aus den Sourcen erstellen. Dazu benötigt ihr das so genannte spec-file. Falls ihr Fragen habt, wie ihr damit ein Paket kompiliert, wendet euch einfach an &amp;lt;email&amp;gt;opalix@freitagsrunde.org&amp;lt;/email&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* spec file: [http://opalix.freitagsrunde.org/rpm/opal-2.3j-1.spec opal-2.3j-1.spec]&lt;br /&gt;
&lt;br /&gt;
= Debian =&lt;br /&gt;
Das Paket für Debian enthält die aktuelle Version 2.3j.&lt;br /&gt;
Es gibt ein &amp;lt;code&amp;gt;apt-get&amp;lt;/code&amp;gt; Repository, das man mit folgenden Zeilen in der Datei /etc/apt/sources.list einstellen kann:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
deb http://opalix.freitagsrunde.org/debian-rep ./&lt;br /&gt;
deb-src http://opalix.freitagsrunde.org/debian-rep ./&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Das Package heißt ocs und lässt sich mit&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt-get install ocs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
installieren.&lt;br /&gt;
Vielen Dank an Marco Ziech für seine Zeit und Mühe, das Paket und Repository zu erstellen!&lt;br /&gt;
!Achtung, das Paket verträgt sich nicht mit dem Paket cscope, da beide /usr/bin/ocs ausliefern, cscope deinstallieren oder Paket fixen!&lt;br /&gt;
&lt;br /&gt;
= Ubuntu =&lt;br /&gt;
Prinzipiell könnt ihr das [http://opalix.freitagsrunde.org/debian-rep/ocs_2.3j-1_i386.deb Paket für Debian] unter Ubuntu einsetzen. In Einzelfällen kann es zu Problemen kommen, die ein [[Opal unter Ubuntu kompilieren|Kompilieren aus den Quellen]] erforderlich machen. Generell ist das Verwenden des Pakets vorzuziehen, da das Selbst-Kompilieren nicht immer einfach ist. In jedem Fall ist es erforderlich, das Paket &amp;quot;build-essential&amp;quot; installiert zu haben.&lt;br /&gt;
 &lt;br /&gt;
Allerdings ist zu beachten das das Debian Paket bei dem Versuch es auf einem 64-Bit System zu installieren, einen Fehler ausgibt, da es für ein 32-bit System gedacht ist.(wrong architecture).&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;8.10 (Intrepid Ibex)&#039;&#039;&#039;: Das manuelle herunterladen und installieren des Debian-Pakets funktioniert problemlos. Es sollten jedoch vorher alle Abhängigkeiten (siehe unten) installiert worden sein.&lt;br /&gt;
* &#039;&#039;&#039;8.04 LTS (Hardy Heron)&#039;&#039;&#039;: Das manuelle herunterladen und installieren des Debian-Pakets funktioniert problemlos. Es sollten jedoch vorher alle Abhängigkeiten (siehe unten) installiert worden sein.&lt;br /&gt;
* &#039;&#039;&#039;7.04 (Feisty Fawn)&#039;&#039;&#039;: Das manuelle herunterladen und installieren des Debian-Pakets funktioniert problemlos. Es sollten jedoch vorher alle Abhängigkeiten (siehe unten) installiert worden sein.&lt;br /&gt;
* &#039;&#039;&#039;6.10 (Edgy Eft)&#039;&#039;&#039;: Das Paket für Debian, bezogen über das Repository, funktioniert gut. Das Selbstkompilieren der Version 2.3k verlief fehlerlos.&lt;br /&gt;
* &#039;&#039;&#039;6.06 (Dapper Drake)&#039;&#039;&#039;: Das Paket für Debian funktioniert definitiv unter Dapper Drake. Es ist dem Selbstkompilieren vorzuziehen, da es mehrere Berichte über Compiler-Inkompatibilitäten unter Dapper Drake gibt.&lt;br /&gt;
* &#039;&#039;&#039;5.10 (Breezy Badger)&#039;&#039;&#039;: Da es anscheinend Probleme mit den Paketen von Debian unter Ubuntu 5.10 gibt, ist  hier anscheinend eine Installationen aus den Quellen nötig. Nähere Informationen findet ihr auf der Seite [[Opal unter Ubuntu kompilieren]].&lt;br /&gt;
&lt;br /&gt;
== Paket Installation ==&lt;br /&gt;
Es gibt zwei Möglichkeiten, dass Paket für Debian zu Installieren.&lt;br /&gt;
&lt;br /&gt;
Entweder man lädt das Paket manuell herunter und installiert es mit dpkg:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget http://opalix.freitagsrunde.org/debian-rep/ocs_2.3j-1_i386.deb&lt;br /&gt;
sudo dpkg -i ocs_2.3j-1_i386.deb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nutzer mit einem 64-Bit System können Probleme beim Installieren haben. Abhilfe schafft es die Überprüfung der richtigen System Architektur zu überspringen. Achtung: Das überspringen der Überprüfung garantiert nicht das das Programm einwandfrei läuft. In den meisten Fällen wird OPAL, wenn es auf diese Weise installiert wird, nicht funktionieren. Meist müssen auch noch weitere Abhänigkeiten installiert werden. [http://wiki.ubuntuusers.de/64bit-Architektur#32-Bit-Programme-erzwingen Weite Infos und zur Installation ] von 32-bit Programmen unter 64-bit&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget http://opalix.freitagsrunde.org/debian-rep/ocs_2.3j-1_i386.deb&lt;br /&gt;
sudo dpkg -i --force-architecture ocs_2.3j-1_i386.deb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alternativ kann man wie bei Debian das Repository &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
deb http://opalix.freitagsrunde.org/debian-rep ./&lt;br /&gt;
deb-src http://opalix.freitagsrunde.org/debian-rep ./&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
hinzufügen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Per GUI&#039;&#039;&#039;:&lt;br /&gt;
* Startleiste -&amp;gt; System -&amp;gt; Systemverwaltung -&amp;gt; Synaptic-Paketverwaltung starte&lt;br /&gt;
* In der Synaptic-Paketverwaltung im Menu Einstellungen -&amp;gt; Paketquellen&lt;br /&gt;
* Im Paketquellen-Fenster auf hinzufügen und benutzerdefiniert anklicken&lt;br /&gt;
* Repository-Zeilen nacheinadner eintragen und FERTIG&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Zu Fuß&#039;&#039;&#039;:&lt;br /&gt;
* Datei /etc/apt/sources.list im Editor öffnen&lt;br /&gt;
* Repository-Zeilen (siehe oben) in die Datei eintragen und FERTIG&lt;br /&gt;
&lt;br /&gt;
Nach diesem Prozedere muß Opal noch installiert werden:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@ubuntulinux &amp;gt; sudo apt-get install ocs &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vielleicht muß vorher noch ein apt-get update gemacht werden:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@ubuntulinux &amp;gt; sudo apt-get update &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
FERTIG.&lt;br /&gt;
&lt;br /&gt;
Sollte es Probleme geben, stellt bitte sicher, dass die zur Funktion notwendigen Pakete installiert sind:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-get install gcc make libc6-dev tk8.4 tcl8.4 libreadline5-dev libncurses5-dev flex-old&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Gentoo =&lt;br /&gt;
Ein ebuild gibt&#039;s im Overlay von rbu:&lt;br /&gt;
 # emerge -av layman # (Dort den Anweisungen folgen, um Layman auch einzurichten)&lt;br /&gt;
 # layman -f&lt;br /&gt;
 # layman -a rbu&lt;br /&gt;
 # emerge dev-lang/opal&lt;br /&gt;
&lt;br /&gt;
Da das Ebuild maskiert ist, sind an dieser Stelle eventuell noch weitere Schritte nötig; die Installation maskierter Ebuilds ist hier erklärt: [http://www.gentoo.org/doc/de/handbook/handbook-x86.xml?part=3&amp;amp;chap=3#doc_chap3 Nutzung maskierter Pakete].&lt;br /&gt;
&lt;br /&gt;
Leider kompiliert Opal nur unter 32-Bit-Umgebungen. Falls du mit 64 bit arbeitest, kannst du es in einer [http://www.gentoo.org/proj/en/base/amd64/howtos/chroot.xml 32 Bit Chroot kompilieren], und dann dort laufen lassen.&lt;br /&gt;
&lt;br /&gt;
= FreeBSD =&lt;br /&gt;
Es gibt einen FreeBSD-Port um OCS kompilieren zu können:&lt;br /&gt;
&lt;br /&gt;
 $ su&lt;br /&gt;
 # cd /usr/ports/lang/ocs&lt;br /&gt;
 # make install clean&lt;br /&gt;
&lt;br /&gt;
Alternativ kann man sich ein bereits kompiliertes Paket installieren&lt;br /&gt;
&lt;br /&gt;
 $ su&lt;br /&gt;
 # pkg_add -r ocs&lt;br /&gt;
&lt;br /&gt;
Sowohl Kompilierer als auch Interpreter funktionieren einwandfrei.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Opalix in Vier Schritten aus Windows aus installieren  =&lt;br /&gt;
&lt;br /&gt;
Diese Methode ist sehr hilfreich für diejenigen die sich mit Linuxinstallationen, Partitionsmanagement und Bootloadern nicht auskennen!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Schritt 1:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Letztes development-release von Wubi [http://wubi-installer.org/devel/minefield/Wubi-9.04-rev134.exe herunterladen]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Schritt 2:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Opalix Live-CD ISO [http://opalix.freitagsrunde.org/iso/Opalix2009.iso herunterladen] (Wubi und ISO müssen sich im gleichen Ordner befinden!)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Schritt 3:&#039;&#039;&#039;&lt;br /&gt;
GANZ WICHITG: Internetverbindung deaktivieren/trennen!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Schritt 4:&#039;&#039;&#039;&lt;br /&gt;
Wubi ausführen. Die Sprache muss die gleiche sein wie die des Windows OS.&lt;br /&gt;
&lt;br /&gt;
Desktop Enviroment: Ubuntu (da Opalix auf Ubuntu basiert)&lt;br /&gt;
&lt;br /&gt;
Dem Installer folgen und beim Neustart im Bootmanager Ubuntu wählen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Fertig&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Bekannte Probleme/Lösungen =&lt;br /&gt;
&lt;br /&gt;
== C Compiler fehlt ==&lt;br /&gt;
&#039;&#039;&#039;Symptom&#039;&#039;&#039;: Ihr erhaltet eine Fehlermeldung, die ungefähr so aussieht:&lt;br /&gt;
&lt;br /&gt;
 checking Binom.sign&lt;br /&gt;
 checking Binom.impl&lt;br /&gt;
 compiling Binom.impl&lt;br /&gt;
 /opt/ocs/lib/oasys/ccompiler: line 17: /usr/local/bin/gcc: No such file or directory&lt;br /&gt;
 /opt/ocs/lib/oasys/ccompiler: line 17: exec: /usr/local/bin/gcc: cannot execute: No such file or directory&lt;br /&gt;
 ERROR [C compiler]: /opt/ocs/lib/oasys/ccompiler exited abnormally&lt;br /&gt;
 aborted&lt;br /&gt;
&lt;br /&gt;
Auf einigen neueren Systemen (Ubuntu 5.10, SuSE 10.0) kommt es zu noch nicht genau geklärten Problemen von OCS mit der [[WikiPedia:GNU_Compiler_Collection|Gnu Compiler Collection (gcc)]]. OCS benötigt den C Compiler (ggf. zusätzlich installiern) und kann ihn dennoch nicht finden, so dass es zu diesem Fehler kommt. Wir haben noch nicht herausgefunden, woher der Fehler genau rührt, da er nicht auf allen Systemen reproduzierbar ist, aber es gibt einen Workaround.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lösung/Workaround&#039;&#039;&#039;: Das Paket gcc installieren. Eventuell muss noch ein Symlink gesetzt werden, damit Opal den Compiler auch findet.&lt;br /&gt;
  ln -s `which gcc` /usr/local/bin/gcc # als root&lt;br /&gt;
&lt;br /&gt;
2.Workaround: einfach mal im Homeverzeichnis die Dateien (*.impl und *.sign speichern) und dort dann &amp;quot;oasys&amp;quot; ausführen.&lt;br /&gt;
&lt;br /&gt;
== Libraries fehlen ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 $ oasys&lt;br /&gt;
 oasys version 1.1e (ocs version 2.3j), (c) 1989-2001 The OPAL Group, TU Berlin&lt;br /&gt;
 &amp;gt; a WhatsThat.sign&lt;br /&gt;
 loading WhatsThat.sign&lt;br /&gt;
 loading WhatsThat.impl&lt;br /&gt;
 &amp;gt;f WhatsThat.impl&lt;br /&gt;
 WhatsThat.impl&amp;gt;e WhatsThat(2)&lt;br /&gt;
 starting evaluator process&lt;br /&gt;
 /usr/bin/ld: crti.o: No such file: No such file or directory&lt;br /&gt;
 collect2: ld returned 1 exit status&lt;br /&gt;
 evaluator: cannot create transient shared object `/tmp/file7HXogh.so&#039; for `./OCS/WhatsThat.o&#039;&lt;br /&gt;
 connection lost&lt;br /&gt;
&lt;br /&gt;
Lösung: Paket &#039;&#039;&#039;build-essential&#039;&#039;&#039; installieren, z.B. mittels&lt;br /&gt;
 apt-get install build-essential&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Opal]]&lt;/div&gt;</summary>
		<author><name>95.89.48.219</name></author>
	</entry>
	<entry>
		<id>wiki.stageing.freitagsrunde.org//index.php?title=Opal_f%C3%BCr_Linux/Unix&amp;diff=12851</id>
		<title>Opal für Linux/Unix</title>
		<link rel="alternate" type="text/html" href="wiki.stageing.freitagsrunde.org//index.php?title=Opal_f%C3%BCr_Linux/Unix&amp;diff=12851"/>
		<updated>2009-11-03T15:29:43Z</updated>

		<summary type="html">&lt;p&gt;95.89.48.219: 64bit-Problem&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hier gibt es fertige Pakete für die gängigsten Linux-Distributionen und andere Unix-Derivate. Wenn ihr Linux verwenden wollt und falls ihr Linux noch nicht auf eurem Rechner installiert habt, könnt ihr einfach [[Opalix]] verwenden, es liefert euch eine komplette Linuxumgebung, ohne es dauerhaft installieren zu müssen. &lt;br /&gt;
&lt;br /&gt;
Falls ihr eine Distribution einsetzt, die hier nicht aufgeführt ist, und gerne ein Paket kompilieren würdet, euch aber nicht so ganz sicher seid, wie das geht, dann wendet euch an &amp;lt;email&amp;gt;opalix@freitagsrunde.org&amp;lt;/email&amp;gt;. Wir helfen euch gerne!&lt;br /&gt;
&lt;br /&gt;
Allerdings muss man leider auch anmerken, dass der Opal-Buildprozess sehr schlecht organisiert ist. So wird z.B. nicht zwischen Kompilation- und Installationsphase unterschieden und die generierten Scripte unterstützen DESTDIR nicht, was aber eigentlich eine zwingende Voraussetzung für ein vernünftiges Packaging in den Distributionen ist. Diese Probleme machen es nicht einfach, Pakete zu erstellen.&lt;br /&gt;
&lt;br /&gt;
Und noch ein Bad-Code-Hinweis: Das gesamte System, angefangen vom build-Prozess bis hin zum Opalinterpreter, geht hart davon aus, auf einem 32-Bit System zu laufen. D.h. bei Hashfunktionen wird darauf vertraut, dass es einen Überlauf nach 32 Bit gibt. Daher ist es unmöglich Opal auf einem 64-Bit-System zum laufen zu bekommen. Einzig in einem 32-Bit chroot ist die Verwendung möglich. &lt;br /&gt;
&lt;br /&gt;
= Hinweis zum Selber-Kompilieren =&lt;br /&gt;
&lt;br /&gt;
Mit aktuellen gcc/glibc-Versionen (&amp;gt;=4.0) kompiliert OPAL &amp;lt;= 2.3j nicht mehr, da eine obsolete Funktion entfernt wurde. Ab Version 2.3k funktioniert es wieder.&lt;br /&gt;
&lt;br /&gt;
Dirk Reckmann und Stephan Frank (ÜBB Gruppe), haben uns einen [http://opalix.freitagsrunde.org/rpm/patches/CLK_TCK.patch Patch] für die älteren Quellen zum Übersetzen des OCS mit gcc 4.1 zur Verfügung gestellt.&lt;br /&gt;
Diesen könnt ihr einfach einspielen durch:&lt;br /&gt;
 cd &amp;lt;OPAL_UNPACK_DIRECTORY&amp;gt;/ocs&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;wget http://opalix.freitagsrunde.org/rpm/patches/CLK_TCK.patch&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 patch -p0 &amp;lt; CLK_TCK.patch&lt;br /&gt;
&lt;br /&gt;
= SuSE =&lt;br /&gt;
Das Paket installiert OPAL nach &amp;lt;code&amp;gt;/opt/ocs&amp;lt;/code&amp;gt;. Damit ihr &amp;lt;code&amp;gt;oasys&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;ocs&amp;lt;/code&amp;gt; benutzen könnt, müsst ihr die folgende Zeile in die Datei &amp;lt;code&amp;gt;$HOME/.bashrc&amp;lt;/code&amp;gt; eintragen:&lt;br /&gt;
&lt;br /&gt;
    export PATH=/opt/ocs/bin:$PATH &lt;br /&gt;
&lt;br /&gt;
==Aktuelle Versionen==&lt;br /&gt;
Unsere Pakete für aktuelle Versionen von SuSE (siehe auch [[Opal_f%C3%BCr_Linux#C_Compiler_fehlt | Bekannte Probleme/Lösungen]] weiter unten).&lt;br /&gt;
&lt;br /&gt;
* SuSE 11.0: [http://opalix.freitagsrunde.org/rpm/opal_suse11.00.tar.gz opal_suse11.00.tar.gz] ([http://opalix.freitagsrunde.org/rpm/MD5SUMS Prüfsumme]) Vielen Dank an Rene Waidt&lt;br /&gt;
* SuSE 10.1: [http://opalix.freitagsrunde.org/rpm/opal-2.3j-1.i386.suse10.1.rpm opal-2.3j-1.i386.suse10.1.rpm] ([http://opalix.freitagsrunde.org/rpm/MD5SUMS Prüfsumme])&lt;br /&gt;
* SuSE 10.0: [http://opalix.freitagsrunde.org/rpm/opal-2.3j-1.i386.suse10.0.rpm opal-2.3j-1.i386.suse10.0.rpm] ([http://opalix.freitagsrunde.org/rpm/MD5SUMS Prüfsumme])&lt;br /&gt;
&lt;br /&gt;
== Alte Versionen ==&lt;br /&gt;
Zusätzlich zu den Paketen für aktuelle SuSE Versionen gibt es auch noch Pakete für ältere Versionen auf dem Server.&lt;br /&gt;
&lt;br /&gt;
* SuSE 9.2: [http://opalix.freitagsrunde.org/rpm/opal-2.3j-1.i586.suse9.2.rpm opal-2.3j-1.i586.suse9.2.rpm] ([http://opalix.freitagsrunde.org/rpm/MD5SUMS Prüfsumme])&lt;br /&gt;
* SuSE 9.1: [http://opalix.freitagsrunde.org/rpm/opal-2.3j-1.i386.rpm opal-2.3j-1.i386.rpm] ([http://opalix.freitagsrunde.org/rpm/MD5SUMS Prüfsumme])&lt;br /&gt;
* SuSE 9.0: [http://opalix.freitagsrunde.org/rpm/alte_versionen/opal-2.3h-2.i686.suse9.0.rpm opal-2.3h-2.i686.suse9.0.rpm] ([http://opalix.freitagsrunde.org/rpm/alte_versionen/MD5SUMS Prüfsumme]) &lt;br /&gt;
&lt;br /&gt;
= Fedora =&lt;br /&gt;
Das Paket installiert OPAL nach &amp;lt;code&amp;gt;/opt/ocs&amp;lt;/code&amp;gt;, damit ihr an der Shell die Kommandos benutzen könnt, müsst ihr die folgende Zeile in eure &amp;lt;code&amp;gt;.bashrc&amp;lt;/code&amp;gt; eintragen:&lt;br /&gt;
&lt;br /&gt;
    export PATH=/opt/ocs/bin:$PATH &lt;br /&gt;
&lt;br /&gt;
Laut Berichten gibt es Probleme zwischen SELinux und dem Opalinterpreter oasys. Vermutlich hilft hier ein Deaktivieren von SELinux für Opal bzw. das Erstellen von korrekten Regeln.&lt;br /&gt;
* &#039;&#039;&#039;Fedora Core 6&#039;&#039;&#039;: &amp;lt;br&amp;gt; [http://opalix.freitagsrunde.org/rpm/opal-2.3j-1.fc6.i386.rpm opal-2.3j-1.fc6.i386.rpm] ([http://opalix.freitagsrunde.org/rpm/MD5SUMS Prüfsumme]) Vielen Dank an Dennis Schickhaus.&lt;br /&gt;
* &#039;&#039;&#039;Fedora Core 5&#039;&#039;&#039;: &amp;lt;br&amp;gt; [http://opalix.freitagsrunde.org/rpm/opal-2.3k-1.fc5.i386.rpm opal-2.3k-1.fc5.i386.rpm] ([http://opalix.freitagsrunde.org/rpm/MD5SUMS Prüfsumme]) Vielen Dank an Christoph Höger. &amp;lt;br&amp;gt; [http://opalix.freitagsrunde.org/rpm/opal-2.3j-1.fc5.i386.rpm opal-2.3j-1.fc5.i386.rpm] ([http://opalix.freitagsrunde.org/rpm/MD5SUMS Prüfsumme]) Vielen Dank an Dennis Schickhaus.&lt;br /&gt;
* &#039;&#039;&#039;Fedora Core 3&#039;&#039;&#039;: &amp;lt;br&amp;gt; [http://opalix.freitagsrunde.org/rpm/opal-2.3j-1.FC-3.i386.rpm opal-2.3j-1.FC-3.i386.rpm] ([http://opalix.freitagsrunde.org/rpm/MD5SUMS Prüfsumme]) Vielen Dank an Christoph Höger.&lt;br /&gt;
&lt;br /&gt;
= Andere RPM-basierte Distributionen =&lt;br /&gt;
&lt;br /&gt;
* Quellpaket: [http://opalix.freitagsrunde.org/rpm/opal-2.3j-1.src.rpm opal-2.3j-1.src.rpm] ([http://opalix.freitagsrunde.org/rpm/MD5SUMS Prüfsumme])&lt;br /&gt;
&lt;br /&gt;
Wenn Ihr Opal auf einer anderen RPM-basierten Distribution neukompilieren wollt, könnt Ihr das SRPM-Paket benutzen. Einfach an der Shell&lt;br /&gt;
&lt;br /&gt;
    rpmbuild --rebuild --target i386 opal-2.3j-1.src.rpm &lt;br /&gt;
&lt;br /&gt;
ausführen. Ihr benötigt dabei die Pakete &amp;lt;code&amp;gt;tcl-devel&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;tk-devel&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;xfree86-devel&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;flex&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;readline-devel&amp;lt;/code&amp;gt;. Wenn ihr neue Pakete baut, wäre es nett, wenn ihr sie hier anderen zur Verfügung stellt. Sagt einfach unter &amp;lt;email&amp;gt;opalix@freitagsrunde.org&amp;lt;/email&amp;gt; Bescheid, wo sie zu finden sind.&lt;br /&gt;
&lt;br /&gt;
Alternativ könnt ihr auch das Paket komplett neu aus den Sourcen erstellen. Dazu benötigt ihr das so genannte spec-file. Falls ihr Fragen habt, wie ihr damit ein Paket kompiliert, wendet euch einfach an &amp;lt;email&amp;gt;opalix@freitagsrunde.org&amp;lt;/email&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* spec file: [http://opalix.freitagsrunde.org/rpm/opal-2.3j-1.spec opal-2.3j-1.spec]&lt;br /&gt;
&lt;br /&gt;
= Debian =&lt;br /&gt;
Das Paket für Debian enthält die aktuelle Version 2.3j.&lt;br /&gt;
Es gibt ein &amp;lt;code&amp;gt;apt-get&amp;lt;/code&amp;gt; Repository, das man mit folgenden Zeilen in der Datei /etc/apt/sources.list einstellen kann:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
deb http://opalix.freitagsrunde.org/debian-rep ./&lt;br /&gt;
deb-src http://opalix.freitagsrunde.org/debian-rep ./&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Das Package heißt ocs und lässt sich mit&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt-get install ocs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
installieren.&lt;br /&gt;
Vielen Dank an Marco Ziech für seine Zeit und Mühe, das Paket und Repository zu erstellen!&lt;br /&gt;
!Achtung, das Paket verträgt sich nicht mit dem Paket cscope, da beide /usr/bin/ocs ausliefern, cscope deinstallieren oder Paket fixen!&lt;br /&gt;
&lt;br /&gt;
= Ubuntu =&lt;br /&gt;
Prinzipiell könnt ihr das [http://opalix.freitagsrunde.org/debian-rep/ocs_2.3j-1_i386.deb Paket für Debian] unter Ubuntu einsetzen. In Einzelfällen kann es zu Problemen kommen, die ein [[Opal unter Ubuntu kompilieren|Kompilieren aus den Quellen]] erforderlich machen. Generell ist das Verwenden des Pakets vorzuziehen, da das Selbst-Kompilieren nicht immer einfach ist. In jedem Fall ist es erforderlich, das Paket &amp;quot;build-essential&amp;quot; installiert zu haben.&lt;br /&gt;
 &lt;br /&gt;
Allerdings ist zu beachten das das Debian Paket bei dem Versuch es auf einem 64-Bit System zu installieren, einen Fehler ausgibt, da es für ein 32-bit System gedacht ist.(wrong architecture).&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;8.10 (Intrepid Ibex)&#039;&#039;&#039;: Das manuelle herunterladen und installieren des Debian-Pakets funktioniert problemlos. Es sollten jedoch vorher alle Abhängigkeiten (siehe unten) installiert worden sein.&lt;br /&gt;
* &#039;&#039;&#039;8.04 LTS (Hardy Heron)&#039;&#039;&#039;: Das manuelle herunterladen und installieren des Debian-Pakets funktioniert problemlos. Es sollten jedoch vorher alle Abhängigkeiten (siehe unten) installiert worden sein.&lt;br /&gt;
* &#039;&#039;&#039;7.04 (Feisty Fawn)&#039;&#039;&#039;: Das manuelle herunterladen und installieren des Debian-Pakets funktioniert problemlos. Es sollten jedoch vorher alle Abhängigkeiten (siehe unten) installiert worden sein.&lt;br /&gt;
* &#039;&#039;&#039;6.10 (Edgy Eft)&#039;&#039;&#039;: Das Paket für Debian, bezogen über das Repository, funktioniert gut. Das Selbstkompilieren der Version 2.3k verlief fehlerlos.&lt;br /&gt;
* &#039;&#039;&#039;6.06 (Dapper Drake)&#039;&#039;&#039;: Das Paket für Debian funktioniert definitiv unter Dapper Drake. Es ist dem Selbstkompilieren vorzuziehen, da es mehrere Berichte über Compiler-Inkompatibilitäten unter Dapper Drake gibt.&lt;br /&gt;
* &#039;&#039;&#039;5.10 (Breezy Badger)&#039;&#039;&#039;: Da es anscheinend Probleme mit den Paketen von Debian unter Ubuntu 5.10 gibt, ist  hier anscheinend eine Installationen aus den Quellen nötig. Nähere Informationen findet ihr auf der Seite [[Opal unter Ubuntu kompilieren]].&lt;br /&gt;
&lt;br /&gt;
== Paket Installation ==&lt;br /&gt;
Es gibt zwei Möglichkeiten, dass Paket für Debian zu Installieren.&lt;br /&gt;
&lt;br /&gt;
Entweder man lädt das Paket manuell herunter und installiert es mit dpkg:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget http://opalix.freitagsrunde.org/debian-rep/ocs_2.3j-1_i386.deb&lt;br /&gt;
sudo dpkg -i ocs_2.3j-1_i386.deb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nutzer mit einem 64-Bit System können Probleme beim Installieren haben. Abhilfe schafft es die Überprüfung der richtigen System Architektur zu überspringen. Achtung: Das überspringen der Überprüfung garantiert nicht das das Programm einwandfrei läuft. In den meisten Fällen wird OPAL, wenn es auf diese Weise installiert wird, nicht funktionieren. Meist müssen auch noch weitere Abhänigkeiten installiert werden. [http://wiki.ubuntuusers.de/64bit-Architektur#32-Bit-Programme-erzwingen Weite Infos und zur Installation ] von 32-bit Programmen unter 64-bit&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget http://opalix.freitagsrunde.org/debian-rep/ocs_2.3j-1_i386.deb&lt;br /&gt;
sudo dpkg -i --force-architecture ocs_2.3j-1_i386.deb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alternativ kann man wie bei Debian das Repository &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
deb http://opalix.freitagsrunde.org/debian-rep ./&lt;br /&gt;
deb-src http://opalix.freitagsrunde.org/debian-rep ./&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
hinzufügen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Per GUI&#039;&#039;&#039;:&lt;br /&gt;
* Startleiste -&amp;gt; System -&amp;gt; Systemverwaltung -&amp;gt; Synaptic-Paketverwaltung starte&lt;br /&gt;
* In der Synaptic-Paketverwaltung im Menu Einstellungen -&amp;gt; Paketquellen&lt;br /&gt;
* Im Paketquellen-Fenster auf hinzufügen und benutzerdefiniert anklicken&lt;br /&gt;
* Repository-Zeilen nacheinadner eintragen und FERTIG&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Zu Fuß&#039;&#039;&#039;:&lt;br /&gt;
* Datei /etc/apt/sources.list im Editor öffnen&lt;br /&gt;
* Repository-Zeilen (siehe oben) in die Datei eintragen und FERTIG&lt;br /&gt;
&lt;br /&gt;
Nach diesem Prozedere muß Opal noch installiert werden:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@ubuntulinux &amp;gt; sudo apt-get install ocs &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vielleicht muß vorher noch ein apt-get update gemacht werden:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@ubuntulinux &amp;gt; sudo apt-get update &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
FERTIG.&lt;br /&gt;
&lt;br /&gt;
Sollte es Probleme geben, stellt bitte sicher, dass die zur Funktion notwendigen Pakete installiert sind:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-get install gcc make libc6-dev tk8.4 tcl8.4 libreadline5-dev libncurses5-dev flex-old&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Gentoo =&lt;br /&gt;
Ein ebuild gibt&#039;s im Overlay von rbu:&lt;br /&gt;
 # emerge -av layman # (Dort den Anweisungen folgen, um Layman auch einzurichten)&lt;br /&gt;
 # layman -f&lt;br /&gt;
 # layman -a rbu&lt;br /&gt;
 # emerge dev-lang/opal&lt;br /&gt;
&lt;br /&gt;
Da das Ebuild maskiert ist, sind an dieser Stelle eventuell noch weitere Schritte nötig; die Installation maskierter Ebuilds ist hier erklärt: [http://www.gentoo.org/doc/de/handbook/handbook-x86.xml?part=3&amp;amp;chap=3#doc_chap3 Nutzung maskierter Pakete].&lt;br /&gt;
&lt;br /&gt;
Leider kompiliert Opal nur unter 32-Bit-Umgebungen. Falls du mit 64 bit arbeitest, kannst du es in einer [http://www.gentoo.org/proj/en/base/amd64/howtos/chroot.xml 32 Bit Chroot kompilieren], und dann dort laufen lassen.&lt;br /&gt;
&lt;br /&gt;
= FreeBSD =&lt;br /&gt;
Es gibt einen FreeBSD-Port um OCS kompilieren zu können:&lt;br /&gt;
&lt;br /&gt;
 $ su&lt;br /&gt;
 # cd /usr/ports/lang/ocs&lt;br /&gt;
 # make install clean&lt;br /&gt;
&lt;br /&gt;
Alternativ kann man sich ein bereits kompiliertes Paket installieren&lt;br /&gt;
&lt;br /&gt;
 $ su&lt;br /&gt;
 # pkg_add -r ocs&lt;br /&gt;
&lt;br /&gt;
Sowohl Kompilierer als auch Interpreter funktionieren einwandfrei.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Opalix in Vier Schritten aus Windows aus installieren  =&lt;br /&gt;
&lt;br /&gt;
Diese Methode ist sehr hilfreich für diejenigen die sich mit Linuxinstallationen, Partitionsmanagement und Bootloadern nicht auskennen!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Schritt 1:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Letztes development-release von Wubi [http://wubi-installer.org/devel/minefield/Wubi-9.04-rev134.exe herunterladen]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Schritt 2:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Opalix Live-CD ISO [http://opalix.freitagsrunde.org/iso/Opalix2009.iso herunterladen] (Wubi und ISO müssen sich im gleichen Ordner befinden!)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Schritt 3:&#039;&#039;&#039;&lt;br /&gt;
GANZ WICHITG: Internetverbindung deaktivieren/trennen!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Schritt 4:&#039;&#039;&#039;&lt;br /&gt;
Wubi ausführen. Die Sprache muss die gleiche sein wie die des Windows OS.&lt;br /&gt;
&lt;br /&gt;
Desktop Enviroment: Ubuntu (da Opalix auf Ubuntu basiert)&lt;br /&gt;
&lt;br /&gt;
Dem Installer folgen und beim Neustart im Bootmanager Ubuntu wählen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Fertig&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Bekannte Probleme/Lösungen =&lt;br /&gt;
&lt;br /&gt;
== C Compiler fehlt ==&lt;br /&gt;
&#039;&#039;&#039;Symptom&#039;&#039;&#039;: Ihr erhaltet eine Fehlermeldung, die ungefähr so aussieht:&lt;br /&gt;
&lt;br /&gt;
 checking Binom.sign&lt;br /&gt;
 checking Binom.impl&lt;br /&gt;
 compiling Binom.impl&lt;br /&gt;
 /opt/ocs/lib/oasys/ccompiler: line 17: /usr/local/bin/gcc: No such file or directory&lt;br /&gt;
 /opt/ocs/lib/oasys/ccompiler: line 17: exec: /usr/local/bin/gcc: cannot execute: No such file or directory&lt;br /&gt;
 ERROR [C compiler]: /opt/ocs/lib/oasys/ccompiler exited abnormally&lt;br /&gt;
 aborted&lt;br /&gt;
&lt;br /&gt;
Auf einigen neueren Systemen (Ubuntu 5.10, SuSE 10.0) kommt es zu noch nicht genau geklärten Problemen von OCS mit der [[WikiPedia:GNU_Compiler_Collection|Gnu Compiler Collection (gcc)]]. OCS benötigt den C Compiler (ggf. zusätzlich installiern) und kann ihn dennoch nicht finden, so dass es zu diesem Fehler kommt. Wir haben noch nicht herausgefunden, woher der Fehler genau rührt, da er nicht auf allen Systemen reproduzierbar ist, aber es gibt einen Workaround.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lösung/Workaround&#039;&#039;&#039;: Das Paket gcc installieren. Eventuell muss noch ein Symlink gesetzt werden, damit Opal den Compiler auch findet.&lt;br /&gt;
  ln -s `which gcc` /usr/local/bin/gcc # als root&lt;br /&gt;
&lt;br /&gt;
2.Workaround: einfach mal im Homeverzeichnis die Dateien (*.impl und *.sign speichern) und dort dann &amp;quot;oasys&amp;quot; ausführen.&lt;br /&gt;
&lt;br /&gt;
== Libraries fehlen ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 $ oasys&lt;br /&gt;
 oasys version 1.1e (ocs version 2.3j), (c) 1989-2001 The OPAL Group, TU Berlin&lt;br /&gt;
 &amp;gt; a WhatsThat.sign&lt;br /&gt;
 loading WhatsThat.sign&lt;br /&gt;
 loading WhatsThat.impl&lt;br /&gt;
 &amp;gt;f WhatsThat.impl&lt;br /&gt;
 WhatsThat.impl&amp;gt;e WhatsThat(2)&lt;br /&gt;
 starting evaluator process&lt;br /&gt;
 /usr/bin/ld: crti.o: No such file: No such file or directory&lt;br /&gt;
 collect2: ld returned 1 exit status&lt;br /&gt;
 evaluator: cannot create transient shared object `/tmp/file7HXogh.so&#039; for `./OCS/WhatsThat.o&#039;&lt;br /&gt;
 connection lost&lt;br /&gt;
&lt;br /&gt;
Lösung: Paket &#039;&#039;&#039;build-essential&#039;&#039;&#039; installieren, z.B. mittels&lt;br /&gt;
 apt-get install build-essential&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Opal]]&lt;/div&gt;</summary>
		<author><name>95.89.48.219</name></author>
	</entry>
	<entry>
		<id>wiki.stageing.freitagsrunde.org//index.php?title=Eduroam_und_Android&amp;diff=12806</id>
		<title>Eduroam und Android</title>
		<link rel="alternate" type="text/html" href="wiki.stageing.freitagsrunde.org//index.php?title=Eduroam_und_Android&amp;diff=12806"/>
		<updated>2009-10-25T13:30:11Z</updated>

		<summary type="html">&lt;p&gt;95.89.48.219: Artikel ist in den WLAN-Artikel integriert&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[WLAN]]&lt;/div&gt;</summary>
		<author><name>95.89.48.219</name></author>
	</entry>
	<entry>
		<id>wiki.stageing.freitagsrunde.org//index.php?title=Eduroam&amp;diff=12805</id>
		<title>Eduroam</title>
		<link rel="alternate" type="text/html" href="wiki.stageing.freitagsrunde.org//index.php?title=Eduroam&amp;diff=12805"/>
		<updated>2009-10-25T13:29:59Z</updated>

		<summary type="html">&lt;p&gt;95.89.48.219: Artikel ist in den ELAN-Artikel integriert&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[WLAN]]&lt;/div&gt;</summary>
		<author><name>95.89.48.219</name></author>
	</entry>
	<entry>
		<id>wiki.stageing.freitagsrunde.org//index.php?title=WLAN&amp;diff=12804</id>
		<title>WLAN</title>
		<link rel="alternate" type="text/html" href="wiki.stageing.freitagsrunde.org//index.php?title=WLAN&amp;diff=12804"/>
		<updated>2009-10-25T13:28:58Z</updated>

		<summary type="html">&lt;p&gt;95.89.48.219: Eduroam und Android integriert.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;An der TU-Berlin gibt es mehrere unterschiedliche Wlan-Netze, die Zugang zum Internet vermitteln. Diese Netze werden&lt;br /&gt;
derzeit durch das campusweit verfügbare eduroam-Netzwerk abgelöst, das den Zugang auch an anderen europäischen Hochschulen &lt;br /&gt;
mit dem Account der TU ermöglicht.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= eduroam (und TU-Berlin_802.1x) =&lt;br /&gt;
&lt;br /&gt;
Mit eduroam ist es zum ersten Mal möglich europaweit an fast jeder Uni deren Wlan zu nutzen. Die Netzwerkname der Wlan-APs lauten eduroam oder TU-Berlin_802.1x (dieser letzter sollte am aussterben sein).&lt;br /&gt;
Hier die [http://www.tubit.tu-berlin.de/wlan/zugang_und_anleitungen/?tx_jppageteaser_pi1%5BbackId%5D=33918 Tubit-Anleitung] für Windows,Mac und diverse Handys.&lt;br /&gt;
&lt;br /&gt;
Speziell für Linux :&lt;br /&gt;
&lt;br /&gt;
Zu beachten:&lt;br /&gt;
# Die TU Berlin verwendet ein von der Telekom CA 2 unterschriebenes Zertifikat, welches noch nicht im SecureW2 integriert ist.&lt;br /&gt;
# Einige Einstellungen sind folgende: &lt;br /&gt;
#* Identity: &amp;quot;tubIT-Nutzerkonto&amp;quot;@tu-berlin.de&lt;br /&gt;
#* Password: das zum Account gehörige Passwort&lt;br /&gt;
#* Anonymous Identity: anonymous@tu-berlin.de&lt;br /&gt;
&lt;br /&gt;
== Network Manager (Gnome) ==&lt;br /&gt;
&lt;br /&gt;
Siehe: [http://www.tubit.tu-berlin.de/fileadmin/a40000000/msch4000/Screenshot/802.1X/802.1x_unter_GNOME__linux_.png Anleitung] von tubIT.&lt;br /&gt;
&lt;br /&gt;
== wicd/wpa_supplicant ==&lt;br /&gt;
&lt;br /&gt;
wicd hat diese Verschlüsselung nicht standardmäßig, aber es ist möglich sie hinzufügen dank templates&lt;br /&gt;
&lt;br /&gt;
Editiere/erschaffe &#039;&#039;/etc/wicd/encryption/templates/eduroam&#039;&#039; und füge (aus [http://www.tubit.tu-berlin.de/wlan/installation/8021x/linux/ wpa_supplicant.conf]) :&lt;br /&gt;
&lt;br /&gt;
 name = eurodam&lt;br /&gt;
 author = tsaitgaist &lt;br /&gt;
 version = 1&lt;br /&gt;
 require identity *Identity password *Password&lt;br /&gt;
 -----&lt;br /&gt;
 ctrl_interface=/var/run/wpa_supplicant&lt;br /&gt;
 update_config=0&lt;br /&gt;
 eapol_version=1&lt;br /&gt;
 network={&lt;br /&gt;
         ssid=&amp;quot;$_ESSID&amp;quot;&lt;br /&gt;
         scan_ssid=1&lt;br /&gt;
         key_mgmt=WPA-EAP&lt;br /&gt;
         eap=TTLS&lt;br /&gt;
         identity=&amp;quot;$_IDENTITY&amp;quot;&lt;br /&gt;
         password=&amp;quot;$_PASSWORD&amp;quot;&lt;br /&gt;
         anonymous_identity=&amp;quot;anonymous@tu-berlin.de&amp;quot;&lt;br /&gt;
         phase1=&amp;quot;peaplabel=0&amp;quot;&lt;br /&gt;
         phase2=&amp;quot;auth=PAP&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
$_ESSID, $_IDENTITY und $_PASSWORD sind entsprechend anzupassen, z.b.:&lt;br /&gt;
ssid=&amp;quot;eduroam&amp;quot;, identity=&amp;quot;blahfasel@tu-berlin.de&amp;quot;...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Das template muss aktiv werden&lt;br /&gt;
&lt;br /&gt;
 echo &amp;quot;eduroam&amp;quot; | sudo tee -a /etc/wicd/encryption/templates/active&lt;br /&gt;
&lt;br /&gt;
wicd neu starten&lt;br /&gt;
&lt;br /&gt;
 sudo /etc/init.d/wicd restart&lt;br /&gt;
&lt;br /&gt;
Jetzt nur noch die Verschlüsseleung von der List vom GUI wählen und Identity/Password füllen&lt;br /&gt;
&lt;br /&gt;
Hinweis: Bei gentoo-Nutzern kann es zu Problemen kommen, wenn der wpa_supplicant mit gnutls gelinkt wird, da die Primzahlen&lt;br /&gt;
der Authentifizierung zu klein sind...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Eduroam und Android ==&lt;br /&gt;
&lt;br /&gt;
Diese Anleitung basiert auf den Erfahrungen mit einem Samsung Galaxy, die Konfiguration lässt sich aber auch für andere Geräte nutzen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Voraussetzung ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Zwingende Voraussetzung um das Eduroamnetz in der Uni mit seinem Android Handy nutzen zu können ist, dass man Root-Zugriff auf dem Telefon hat. Um diesen zu bekommen gibt es diverse Anleitungen, je nach Handymodell. Eine für das Samsung Galaxy findet man zum Beispiel hier [http://www.receptorblog.com/wordpress/german-howto-root-fur-das-samsung-galaxy/] .&lt;br /&gt;
&lt;br /&gt;
Aber Achtung, dabei kann das Gerät beschädigt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Wifihelper ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Samsung Galaxy Nutzer springen bitte direkt zur wpa_supplicant Variante.&lt;br /&gt;
&lt;br /&gt;
Wenn der Root-Zugriff möglich ist, kann man sich aus dem Android Market die Wifihelper App herunterladen. Diese gibt es in einer kostenlosen und in einer kostenpflichtigen Version. Die kostenlose reicht für diesen Zweck.&lt;br /&gt;
Innerhalb dieser könnt ihr ganz bequem die Einstellungen vornehmen.&lt;br /&gt;
&lt;br /&gt;
  SSID: eduroam&lt;br /&gt;
  Connection Mode: Infrastructure&lt;br /&gt;
  Wifi Security: WPA Enterprise&lt;br /&gt;
  Authentication: PEAP&lt;br /&gt;
  Phase 2 Authentication: MSCHAPv2&lt;br /&gt;
  Anonymous ID: anonymous@tu-berlin.de&lt;br /&gt;
  Identity: Tubitlogin inkl. @tu-berlin.de&lt;br /&gt;
  Password: selbsterklärend&lt;br /&gt;
&lt;br /&gt;
Das Ganze wird in die wpa_supplicant.conf geschrieben. Wenn man dann Wlan aktiviert und in der Nähe des eduroam ist, wird automatisch eine Verbindung hergestellt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== wpa_supplicant ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Falls Variante 1 nicht funktioniert oder man ein Samsung Galaxy hat, muss nach folgendem Schema vorgegangen werden. Das Mobiltelefon wird mit dem Rechner per Usb verbunden.&lt;br /&gt;
Zunächst braucht man die Config fürs Wlannetz:&lt;br /&gt;
&lt;br /&gt;
  network={&lt;br /&gt;
        ssid=&amp;quot;eduroam&amp;quot;&lt;br /&gt;
        scan_ssid=1&lt;br /&gt;
        proto=WPA&lt;br /&gt;
        key_mgmt=WPA-EAP&lt;br /&gt;
        pairwise=TKIP&lt;br /&gt;
        group=TKIP&lt;br /&gt;
        eap=TTLS&lt;br /&gt;
        anonymous_identity=&amp;quot;anonymous@tu-berlin.de&amp;quot;&lt;br /&gt;
        identity=&amp;quot;benutzername@tu-berlin.de&amp;quot;&lt;br /&gt;
        password=&amp;quot;passwort&amp;quot;&lt;br /&gt;
        phase2=&amp;quot;auth=PAP&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Diese muss in die wpa_supplicant.conf im Verzeichnis /data/misc/wifi/ auf eurem Telefon eingfügt werden.&lt;br /&gt;
&lt;br /&gt;
Das geht folgendermaßen:&lt;br /&gt;
&lt;br /&gt;
Ihr müsst nun oben genannte Config in die wpa_supplicant.conf eintragen. Dazu öffnet ihr ein Terminal. Wechselt in das Verzeichnis „tools“ im Android SDK und führt dann folgende Kommandos aus:&lt;br /&gt;
&lt;br /&gt;
  sudo ./adb shell&lt;br /&gt;
  su&lt;br /&gt;
  echo &#039;hier fügt ihr die Config ein&#039; &amp;gt; /data/misc/wifi/wpa_supplicant.conf (Wichtig, es müssen &#039; sein und nicht „“)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Samsung Galaxy ===&lt;br /&gt;
&lt;br /&gt;
Ihr müsst nun oben genannte Config in die bcm_supp.conf eintragen. Dazu öffnet ihr ein Terminal. Wechselt in das Verzeichnis „tools“ im Android SDK und führt dann folgende Kommandos aus:&lt;br /&gt;
&lt;br /&gt;
  sudo ./adb shell&lt;br /&gt;
  su&lt;br /&gt;
  echo &#039;hier fügt ihr die Config ein&#039; &amp;gt; /data/misc/wifi/bcm_supp.conf (Wichtig, es müssen &#039; sein und nicht „“)&lt;br /&gt;
&lt;br /&gt;
Danach 2 mal Strg+D drücken und das Mobiltelefon kann wieder vom Rechner entfernt werden.&lt;br /&gt;
&lt;br /&gt;
Sicherheitshalber das Gerät neustarten und wenn man in die Nähe des eduroam kommt, sollte sich eine Verbindung aufbauen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= alte Wlan- Netze =&lt;br /&gt;
&lt;br /&gt;
Die alten Netze zeichnen sich dadurch aus, dass sie zunächst ein unverschlüsseltes WLAN mit privaten Adressen zur Verfügung stellen.&lt;br /&gt;
Man startet dann einen VPN-Client und erhält darüber Zugang zum Internet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Das IRB im FR ==&lt;br /&gt;
VPN Server: prima.cs.tu-berlin.de . Um mit diesem ein VPN aufzubauen braucht ihr einen Zugang zum [[IRB VPN]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== TU-Berlin_VPN und VPN/WEB (und oft Kabelnetzwerk) ==&lt;br /&gt;
&lt;br /&gt;
Dieses WLAN der tubIT war in den Gebäuden H, MA, HFT, EN stark ausgebaut und war auf den gesamten Campus geplant.&lt;br /&gt;
Es nutzte das [[ZRZ VPN|VPN der tubIT]], der support ist mittlerweile jedoch eingestellt. Zum Einsatz kam Anfangs der &lt;br /&gt;
Cisco VPN-Client, später wurde parallel ein Zugang via openvpn ermöglicht. Das Wlan selbst ist nicht verschlüsselt, die Daten&lt;br /&gt;
laufen aber durch das verschlüsselte VPN.&lt;br /&gt;
&lt;br /&gt;
Anleitungen: [http://www.tubit.tu-berlin.de/wlan/zugang_und_anleitungen/?tx_jppageteaser_pi1%5BbackId%5D=33918 Tubit-Anleitung]&lt;br /&gt;
&lt;br /&gt;
Der Zugang via openvpn kann auch aus beliebigen anderen Netzen genutzt werden, um einen verschlüsselten Tunnel in das Uninetz aufzubauen &lt;br /&gt;
und so in einem anderen öffentlichen Wlan (bei einem Hotspot, in einem Hotel, etc) eine gesicherte Verbindung zu erhalten oder von aussen&lt;br /&gt;
auf Angebote innerhalb der Uni zuzugreifen, die nur aus dem Uninetz freigegeben sind. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== openvpn deamon ===&lt;br /&gt;
&lt;br /&gt;
Openvpn installieren (aptitude oder apt-get):&lt;br /&gt;
 sudo aptitude install openvpn&lt;br /&gt;
&lt;br /&gt;
Konfiguration runterladen:&lt;br /&gt;
 sudo wget http://www.tubit.tu-berlin.de/fileadmin/a40000000/msch4000/Software/OpenVPN/tubit.ovpn -vO /etc/openvpn/tubit.conf&lt;br /&gt;
 sudo wget http://www.tubit.tu-berlin.de/fileadmin/a40000000/msch4000/Software/OpenVPN/tubITChain.crt -vO /etc/openvpn/tubITChain.crt&lt;br /&gt;
&lt;br /&gt;
Hierbei dient der Parameter -v der Anzeige, was der wget dabei macht (z.B. die Verbindung abbrechen weil die URL nicht stimmt, oder alles in Ordnung, usw.) und der Parameter O zur Angabe eines Output-Dateipfads.&lt;br /&gt;
&lt;br /&gt;
Daemon starten:&lt;br /&gt;
 sudo /etc/init.d/openvpn start&lt;br /&gt;
&lt;br /&gt;
und Daten eingeben (Username ohne den @tu-berlin.de)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Anmerkung: Wer openvpn auch für andere Netzwerke nutzt, kann statt des obigen Aufrufs auch&lt;br /&gt;
 sudo /etc/init.d/openvpn start &amp;lt;vpnname&amp;gt;&lt;br /&gt;
eingeben um nur das VPN für das mit vpnname benannte Netzwerk aufzubauen.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Um zu sehen ob die Verbinden erfolgreich gebaut wurde, einfach prüfen ob das Netzwerk Interface tap0 existiert:&lt;br /&gt;
 ifconfig&lt;br /&gt;
&lt;br /&gt;
Um openvpn am Ende zu schließen:&lt;br /&gt;
 sudo /etc/init.d/openvpn stop&lt;br /&gt;
&#039;&#039;Anmerkung: bzw. alternativ&lt;br /&gt;
 sudo /etc/init.d/openvpn stop &amp;lt;vpnname&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== openvpn client ===&lt;br /&gt;
&lt;br /&gt;
Der daemon ist nicht sehr gesprächig. Der Klient ist, um Probleme zu finden, besser geeignet (die Konfiguration ist die gleiche)&lt;br /&gt;
 sudo openvpn --config /etc/openvpn/tubit.conf --ca /etc/openvpn/tubITChain.crt&lt;br /&gt;
&lt;br /&gt;
=== Network Manager (Gnome) ===&lt;br /&gt;
Erst müssen das Paket openvpn und ein Plugin für den Network Manager (unter Ubuntu: network-manager-openvpn) installiert werden.&lt;br /&gt;
Anschließend fügt man im Network Manager eine neue VPN-Verbindung vom Typ: Openvpn.&lt;br /&gt;
Folgende Einstellungen müssen gesetzt werden: &lt;br /&gt;
* Gateway: openvpn1.tubit.tu-berlin.de &lt;br /&gt;
* Type(Authentifizierungsart): Passwort&lt;br /&gt;
* User Name: benutzer@tu-berlin.de&lt;br /&gt;
* Password: Tubit-PW&lt;br /&gt;
* CA Certificate: wie oben tubITChain.crt unter /etc/openvpn speichern und hier auswählen.&lt;br /&gt;
* Advanced: LZO und Tap_device aktivieren&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
=== kvpnc ===&lt;br /&gt;
&lt;br /&gt;
todo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== DNS (für VPN/WEB) ===&lt;br /&gt;
&lt;br /&gt;
Die Konfiguration des DNS ist ein wenig gewöhnungsbedürftig und hat sicherlich noch Potential verbessert zu werden.&lt;br /&gt;
&lt;br /&gt;
Das eigentliche Problem besteht hier darin, dass im WLAN der Uni, also noch vor Aufbau der VPN-Verbindung, ein anderer DNS-Server genutzt wird, als später im VPN. Da die Adressvergabe im WLAN per DHCP erfolgt, dass regelmässig erneuert werden muss, kann es dann zu dem unschönen Effekt kommen, dass die DNS-Konfiguratin des VPN-Tunnels durch die eigentlich falsche Konfiguration der Wlan-Schnittstelle überschrieben wird.&lt;br /&gt;
&lt;br /&gt;
Würde schon vor Aufbau der VPN-Verbindung ein offener DNS-Server genutzt werden, würde dies zu zwei unschönen Effekten führen. Erstens würde man wahnsinnig, weil man denkt, man sei im Internet, aber kann keine Seite erreichen, und zweitens kann die Hinweisseite mit den Anleitungen nicht angezeigt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Wenn man mit dem Wlan TU-Berlin_VPN oder VPN/WEB verbunden ist ohne einen VPN-Tunnel aufgebaut zu haben, wird man immer auf die  [http://www.tubit.tu-berlin.de/wlan/zugang_und_anleitungen/?tx_jppageteaser_pi1%5BbackId%5D=33918 Tubit-Anleitung] Seite geleitet. &lt;br /&gt;
* Ist der DNS-Server des Tunnels falsch konfiguriert, wir man auch nachdem die VPN Verbindung errichtet ist zu [http://130.149.4.173/ dieser] Seite weitergeleitet.&lt;br /&gt;
* Bricht der Tunnel zusammen, wird man auch entsprechend weitergeleitet.&lt;br /&gt;
&lt;br /&gt;
Man kann versuchen, nach dem Aufbau der VPN-Verbindung die DNS-Server manuell fest vorzugeben, indem man an erster Stelle den für externe Adressen zuständigen Server setzt und an die zweite Stelle den Server, der die vpn-server adresse auflösen kann. Der erste Server ist hier der von der TU-Berlin - er ist auf jeden Fall der am schnellsten erreichbare.&lt;br /&gt;
&lt;br /&gt;
* DNS1 : 130.149.4.20&lt;br /&gt;
* DNS2 : 172.23.0.36 (zweite Position, sonst wird nur [http://130.149.4.173/ das] erscheinen)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Uni-ABC]]&lt;br /&gt;
[[Kategorie:Fakultäts-ABC]]&lt;/div&gt;</summary>
		<author><name>95.89.48.219</name></author>
	</entry>
	<entry>
		<id>wiki.stageing.freitagsrunde.org//index.php?title=Kickerturnier_2009/orga&amp;diff=12788</id>
		<title>Kickerturnier 2009/orga</title>
		<link rel="alternate" type="text/html" href="wiki.stageing.freitagsrunde.org//index.php?title=Kickerturnier_2009/orga&amp;diff=12788"/>
		<updated>2009-10-21T00:22:28Z</updated>

		<summary type="html">&lt;p&gt;95.89.48.219: /* Aktuelles: */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Aktuelles: ==&lt;br /&gt;
&lt;br /&gt;
Fürs nächste Treffen bitte alle eintragen unter: &amp;lt;br&amp;gt;&lt;br /&gt;
http://www.doodle.com/x7y4ha2n82dkyxiz&lt;br /&gt;
&lt;br /&gt;
sobald der termin feststeht erfolgt info per mailingliste!&lt;br /&gt;
&lt;br /&gt;
== Ort: ==&lt;br /&gt;
&lt;br /&gt;
*a Tel Mensa (Studentenwerk: Tom, Jannes)&lt;br /&gt;
*b Tel 19. stock ( Dirk, sebastian D. [+ kicker Inet])&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Zeit: ==&lt;br /&gt;
&lt;br /&gt;
* Fr. 13.11.09&lt;br /&gt;
* 18.00h&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Preise: ==&lt;br /&gt;
&lt;br /&gt;
* Pokale aus E-Schrott (Xenia, Thaddaeus)&lt;br /&gt;
* Kasten Mate&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Regeln (Marc): ==&lt;br /&gt;
&lt;br /&gt;
Ich habe mich bemüht die Regeln so einfach wie möglich zu halten.&lt;br /&gt;
&lt;br /&gt;
- Eine Mannschaft besteht aus 2 Mitspielern.&lt;br /&gt;
&lt;br /&gt;
- Es kann nur eine gerade Anzahl an Manschaften am Turnier teilnehmen, die sich bis zu einer    bestimmten Uhrzeit in der Tel Mensa angemeldet haben sollten. D.h. wer antanzt, wenn das Turnier schon begonnen hat, hat schlechte Karten um noch mitzuspielen. &lt;br /&gt;
&lt;br /&gt;
- Bei einer ungeraden Anzahl an Mannschaften wird die Letzte aufgesplittet, sodass zwei 1-Mann-Mannschaften entstehen.&lt;br /&gt;
&lt;br /&gt;
- Alle Mannschaften werden in 4 Gruppen eingeteilt. (a,b,c &amp;amp; d)&lt;br /&gt;
&lt;br /&gt;
- Vorrunde: &lt;br /&gt;
&lt;br /&gt;
... Fortsetzung folg ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Kicker ==&lt;br /&gt;
&lt;br /&gt;
* 1 x 4!  [DONE]&lt;br /&gt;
* 1 x Dai [] (Dandy, Lars)&lt;br /&gt;
* 1 x SwT [DONE] (Robert, Tibor). Ansprechpartner: Thomas Göthel&lt;br /&gt;
* 1 x Cafe Erdreich [] (Jonathan, )&lt;br /&gt;
* 1 x Inet [] (s.o.)&lt;br /&gt;
&lt;br /&gt;
== Schiri/Moderator ==&lt;br /&gt;
&lt;br /&gt;
Jannes, Tibor, Felix&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Promo ==&lt;br /&gt;
&lt;br /&gt;
* Plakate machen (Tibor)&lt;br /&gt;
* Plakate aufhängen (alle)&lt;br /&gt;
&lt;br /&gt;
Infos für Flyer und Plakate: (to be continued)&lt;br /&gt;
Gewinne &lt;br /&gt;
Preise der Getränke?&lt;br /&gt;
Anmeldung für Nichtstudenten bis zum ##.##.2009&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Einlass organisieren ==&lt;br /&gt;
&lt;br /&gt;
Mario, Torben&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Termin zum noch mal treffen organisieren (Bernd) ==&lt;br /&gt;
&lt;br /&gt;
Bitte alle eintragen unter: &amp;lt;br&amp;gt;&lt;br /&gt;
http://www.doodle.com/x7y4ha2n82dkyxiz&lt;/div&gt;</summary>
		<author><name>95.89.48.219</name></author>
	</entry>
	<entry>
		<id>wiki.stageing.freitagsrunde.org//index.php?title=Subversion_im_CS-Netz&amp;diff=12665</id>
		<title>Subversion im CS-Netz</title>
		<link rel="alternate" type="text/html" href="wiki.stageing.freitagsrunde.org//index.php?title=Subversion_im_CS-Netz&amp;diff=12665"/>
		<updated>2009-10-05T11:36:04Z</updated>

		<summary type="html">&lt;p&gt;95.89.48.219: Diskussion verlinkt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Dieser Guide beschreibt, wie man eine Software zur [[WikiPedia:Versionskontrolle|Versionskontrolle]] namens [http://subversion.tigris.org/ Subversion (SVN)] einsetzt. [[WikiPedia:Subversion (Software)|Subversion]] ermöglicht mehreren Nutzern, gleichzeitig an den gleichen Dateien zu arbeiten und so vor allem Quellcode und Textdateien zentral zu organisieren und zu speichern.&lt;br /&gt;
&lt;br /&gt;
Diese Anleitung beschreibt allerdings nur die Grundlagen, wie ein SVN Repository im [[IRB|CS-Netz]] eingerichtet wird. Grundlagen in der Software werden nicht gelegt, dafür sollte weitere Literatur dienen.&lt;br /&gt;
&lt;br /&gt;
Für das Repository braucht man nur Speicher im Home-Verzeichnis, die SVN-Software auf dem Server (ist installiert) und zu Hause (siehe unten). Sollen mehrere Benutzer auf das Repository zugreifen können, muss außerdem eine Gruppe im CS-Netz existieren oder angelegt werden. Am Ende steht optional die Einrichtung von Commit-E-Mails.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;ACHTUNG:&amp;lt;/strong&amp;gt; Das Anlegen der Gruppe und die Rechtevergabe funktioniert so nur mit den klassischen CS-Accounts. Nutzer der TubIT-Konten können sich unter Umständen durch Konfiguration ihres AFS-Verzeichnisses behelfen. Derzeit liegen uns jedoch noch keine Erfahrungsberichte vor. Eine kleine Einführung in die Rechtevergabe siehe [[Tubit-AFS]]. Auch die [[Diskussion:Subversion_im_CS-Netz|Diskussion]] zu diesem Artikel enthält einige Hinweise.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Konventionen ==&lt;br /&gt;
$USER ist der Benutzername desjenigen, der das Repository einrichtet, z.B. &#039;&#039;&#039;buchholz&#039;&#039;&#039;. &amp;lt;br /&amp;gt;&lt;br /&gt;
$HOME ist das Home-Verzeichnis des Benutzers, z.B. &#039;&#039;&#039;/home/buchholz&#039;&#039;&#039; (bekommt man mit &#039;&#039;&#039;pwd&#039;&#039;&#039; raus). &amp;lt;br /&amp;gt;&lt;br /&gt;
Falls jedoch andere Benutzer auf das Repo-Verzeichnis zugreifen können sollen, sollte man den tatsächlichen Pfad &#039;&#039;&#039;/pool/user/buchholz&#039;&#039;&#039; benutzen.  &amp;lt;br /&amp;gt;&lt;br /&gt;
$HOST ist der Server, auf dem das SVN laufen soll, z.B. &#039;&#039;&#039;condesa.cs.tu-berlin.de&#039;&#039;&#039;. &amp;lt;br /&amp;gt;&lt;br /&gt;
$GROUP ist die Gruppe, die Zugriff auf das SVN haben soll, z.B. &#039;&#039;&#039;mycoolsvngroup&#039;&#039;&#039;. &amp;lt;br /&amp;gt;&lt;br /&gt;
$MYREPO ist der Name des Repositorys, das eingerichtet werden soll, z.B. &#039;&#039;&#039;mpgi1&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Fettdruck&#039;&#039;&#039; bedeutet immer, dass eine Ersetzung durch einen konkreten Wert nötig ist.&lt;br /&gt;
&lt;br /&gt;
== Über die SVN-Installation im CS-Netz ==&lt;br /&gt;
&lt;br /&gt;
Stand September 2007: Wir nutzen hier die Version 1.4.3 installiert in &#039;&#039;&#039;/opt/csw/bin&#039;&#039;&#039;. (Standardmäßig in $PATH eingetragen)&lt;br /&gt;
&lt;br /&gt;
== Schritt 1: Login und Einrichten der Gruppe ==&lt;br /&gt;
Wir verbinden uns zum gewählten Host und richten die Gruppe und die Nutzer ein.&lt;br /&gt;
&lt;br /&gt;
 ssh &#039;&#039;&#039;$HOST&#039;&#039;&#039;&lt;br /&gt;
 grp -setup &#039;&#039;&#039;$GROUP&#039;&#039;&#039;&lt;br /&gt;
 grp -invite &#039;&#039;&#039;$GROUP&#039;&#039;&#039; user1 user2 user3... # Einladen der Nutzer ($USER selbst ist schon drin)&lt;br /&gt;
&lt;br /&gt;
Die Nutzer bekommen daraufhin eine E-Mail und müssen der Gruppe [[SSH|via Terminal]] beitreten. Die Aktualisierung der Gruppendatenbank dauert eine Weile (etwa 1 Stunde).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Anmerkung&#039;&#039;&#039;: Es ist auch denkbar, das gesamte SVN für die Allgemeinheit freizugeben,&lt;br /&gt;
dann müssen wir keine Gruppe erstellen und es ist auch nicht nötig, nacher die Gruppenberechtigungen&lt;br /&gt;
mittels chgrp zu ändert. Aufgrund einer erhöhten Sicherheit (Nicht jeder &lt;br /&gt;
kann in das Repository schreiben, sondern nur Gruppenmitglieder) sollten wir jedoch&lt;br /&gt;
eine Gruppe einrichten.&lt;br /&gt;
&lt;br /&gt;
== Schritt 2: Einrichten des SVNs ==&lt;br /&gt;
Nun erstellen wir die nötigen Verzeichnisse und ein Repository.&lt;br /&gt;
&lt;br /&gt;
 mkdir &#039;&#039;&#039;$HOME&#039;&#039;&#039;/svn-repo&lt;br /&gt;
 cd &#039;&#039;&#039;$HOME&#039;&#039;&#039;/svn-repo&lt;br /&gt;
 svnadmin create &#039;&#039;&#039;$MYREPO&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Es müssen entsprechende Rechte für das neue Verzeichnis gesetzt werden.&lt;br /&gt;
Dies funktioniert aber erst, wenn mindestens ein Mitglied, welches mit grp -invite eingeladen wurde der Gruppe beigetreten ist:&lt;br /&gt;
* Execute für jeden, damit er in das Home-Verzeichnis wechseln kann.&lt;br /&gt;
* Group-Read und -Write, wo nötig.&lt;br /&gt;
 chmod o+x . ..&lt;br /&gt;
 chgrp -R &#039;&#039;&#039;$GROUP&#039;&#039;&#039; &#039;&#039;&#039;$MYREPO&#039;&#039;&#039;&lt;br /&gt;
 chmod -R o-rwx &#039;&#039;&#039;$MYREPO&#039;&#039;&#039;&lt;br /&gt;
 chmod -R g+rX &#039;&#039;&#039;$MYREPO&#039;&#039;&#039;&lt;br /&gt;
 chmod -R g+u &#039;&#039;&#039;$MYREPO&#039;&#039;&#039;/db&lt;br /&gt;
 chmod g+s &#039;&#039;&#039;$MYREPO&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Schritt 3: Checkout des Repositorys ==&lt;br /&gt;
&lt;br /&gt;
Die URL des Repositorys lautet:&lt;br /&gt;
 svn+ssh://&#039;&#039;&#039;$MEINCSNAME&#039;&#039;&#039;@&#039;&#039;&#039;$HOST&#039;&#039;&#039;/&#039;&#039;&#039;$HOME&#039;&#039;&#039;/svn-repo/$MYREPO&lt;br /&gt;
z.B.&lt;br /&gt;
 svn+ssh://post@condesa.cs.tu-berlin.de/home/buchholz/svn-repo/mpgi1&lt;br /&gt;
&lt;br /&gt;
=== Clients ===&lt;br /&gt;
&lt;br /&gt;
Das Repo kann unter Linux/Solaris ausgecheckt werden mittels&lt;br /&gt;
 svn co &#039;&#039;&#039;$REPO_URL&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Unter Windows empfehle ich [http://tortoisesvn.tigris.org/ TortoiseSVN] als Explorer-Plugin.&lt;br /&gt;
&lt;br /&gt;
Es gibt für Windows, Linux und Solaris auch ein Eclipse-Plugin dafür: [http://subclipse.tigris.org/ Subclipse].&lt;br /&gt;
&lt;br /&gt;
== Schritt 4: Einrichten von Commit-Mails (optional) ==&lt;br /&gt;
&lt;br /&gt;
Commit-E-Mails bieten die Möglichkeit, über Commits aller Nutzer benachrichtigt zu werden. Sie enthalten neben der Commit-Log-Nachricht und einer Liste aller veränderten Dateien auch eine genaue Übersicht der Änderungen als Unified Diff.&lt;br /&gt;
&lt;br /&gt;
 cd &#039;&#039;&#039;$MYREPO&#039;&#039;&#039;/hooks&lt;br /&gt;
 cp post-commit{.tmpl,}&lt;br /&gt;
 chmod ug+x post-commit&lt;br /&gt;
&lt;br /&gt;
Die Datei &#039;&#039;&#039;post-commit&#039;&#039;&#039; dann in einem Text-Editor öffnen (z.B. pico) und folgende Zeile editieren:&lt;br /&gt;
 commit-email.pl &amp;quot;$REPOS&amp;quot; &amp;quot;$REV&amp;quot; commit-watchers@example.org&lt;br /&gt;
Sie sollte etwa so aussehen:&lt;br /&gt;
 /home/pub/bin/svn-commit-email.pl &amp;quot;$REPOS&amp;quot; &amp;quot;$REV&amp;quot; \&lt;br /&gt;
    --from &amp;quot;&#039;&#039;&#039;$USER&#039;&#039;&#039;@cs.tu-berlin.de&amp;quot; -s &amp;quot;[&#039;&#039;&#039;$MYREPO&#039;&#039;&#039;] SVN-Commit:&amp;quot; \&lt;br /&gt;
    email1@cs.tu-berlin.de,gruppenmitglied2@web.de,emerge_moo@yahoo.com&lt;br /&gt;
Wobei die letzten E-Mail-Adressen die Empfänger der E-Mail sind, durch Kommata getrennt. Die \ sollen hier nur andeuten, dass es sich eigentlich um eine einzige Zeile handelt, also die \ weglassen und alles als eine Zeile eingeben.&lt;br /&gt;
&lt;br /&gt;
== Schritt 5: Und nun? ==&lt;br /&gt;
&lt;br /&gt;
Ich empfehle als Einstieg und zur Vertiefung sehr das [http://svnbook.red-bean.com/nightly/en/index.html SVNBook] (auch in verschiedenen Formaten, Versionen und Sprachen [http://svnbook.red-bean.com/ zum Download]). Insbesondere die ersten Kapitel sollte man verstanden haben.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Schritt zurück: Ich brauche Hilfe! ==&lt;br /&gt;
Vielleicht hat jemand schon deine Frage beantwortet? Schau doch mal auf der [[Diskussion:Subversion im CS-Netz|Diskussions-Seite]] nach.&lt;br /&gt;
&lt;br /&gt;
Neue Fragen bitte [http://wiki.freitagsrunde.org/index.php?title=Diskussion:Subversion_im_CS-Netz&amp;amp;action=edit&amp;amp;section=new auf der Diskussionsseite stellen]. Danke.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie: Fakultäts-ABC]]&lt;br /&gt;
[[Kategorie: Überleben im Fakultätsnetz]]&lt;/div&gt;</summary>
		<author><name>95.89.48.219</name></author>
	</entry>
	<entry>
		<id>wiki.stageing.freitagsrunde.org//index.php?title=Diskussion:QISPOS&amp;diff=12641</id>
		<title>Diskussion:QISPOS</title>
		<link rel="alternate" type="text/html" href="wiki.stageing.freitagsrunde.org//index.php?title=Diskussion:QISPOS&amp;diff=12641"/>
		<updated>2009-09-27T21:09:46Z</updated>

		<summary type="html">&lt;p&gt;95.89.48.219: Die Seite wurde neu angelegt: „* grmpf - sind diese Wartungsarbeiten _immer_ (im Sinne von täglich) zwischen 22:00 und 8:00? * Warum sehe ich keinen Menüpunkt der wie Noten aussieht?“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* grmpf - sind diese Wartungsarbeiten _immer_ (im Sinne von täglich) zwischen 22:00 und 8:00?&lt;br /&gt;
* Warum sehe ich keinen Menüpunkt der wie Noten aussieht?&lt;/div&gt;</summary>
		<author><name>95.89.48.219</name></author>
	</entry>
	<entry>
		<id>wiki.stageing.freitagsrunde.org//index.php?title=QISPOS&amp;diff=12639</id>
		<title>QISPOS</title>
		<link rel="alternate" type="text/html" href="wiki.stageing.freitagsrunde.org//index.php?title=QISPOS&amp;diff=12639"/>
		<updated>2009-09-27T21:08:46Z</updated>

		<summary type="html">&lt;p&gt;95.89.48.219: das zerti is neu! hallali hallalo!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;QISPOS ist das Online-Zensur-Verwaltungssytem der Zukunft! &amp;lt;br&amp;gt;&lt;br /&gt;
Hier werden nicht nur Klausurnoten gespeichert (sofern sie vom Veranstalter dort eingetragen wurden), sondern man muss sich hier auch fuer die Klausur anmelden.&lt;br /&gt;
&lt;br /&gt;
Eine gut bebilderte Anleitung gibt es [http://www.pruefungen.tu-berlin.de/fileadmin/ref10/Hinweise_Online_Anmeldung_Studierende.pdf hier]. Und [http://www.freitagsrunde.org/~tkroenert/public/Hinweise_Online_Anmeldung_Studierende.pdf hier] als Kopie.&lt;br /&gt;
&lt;br /&gt;
[https://www.tu-berlin.de/login_pw &#039;&#039;&#039;Direkt zur Anmeldung&#039;&#039;&#039;] &lt;br /&gt;
&lt;br /&gt;
== Tipps ==&lt;br /&gt;
&lt;br /&gt;
* Dont Panik. &amp;lt;del&amp;gt; Manchmal &amp;lt;/del&amp;gt; die Seite braucht einfach etwas laenger!&lt;br /&gt;
* Wartungsarbeiten zwischen 22h - 8h verhindern eine Anmeldung in &amp;quot;letzter Minute&amp;quot;.&lt;br /&gt;
* TAN-Liste einscannen (und natuerlich gecryptet speichern!)&lt;/div&gt;</summary>
		<author><name>95.89.48.219</name></author>
	</entry>
	<entry>
		<id>wiki.stageing.freitagsrunde.org//index.php?title=C-Kurs/%C3%9Cbungsaufgaben&amp;diff=12486</id>
		<title>C-Kurs/Übungsaufgaben</title>
		<link rel="alternate" type="text/html" href="wiki.stageing.freitagsrunde.org//index.php?title=C-Kurs/%C3%9Cbungsaufgaben&amp;diff=12486"/>
		<updated>2009-09-21T21:40:57Z</updated>

		<summary type="html">&lt;p&gt;95.89.48.219: /* Musterlösungen */&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;
{| 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;
 !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]]&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&lt;br /&gt;
 |  &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;
 | &lt;br /&gt;
 | vorhanden&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&lt;br /&gt;
 | &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]]&lt;br /&gt;
 | &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&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&lt;br /&gt;
 |&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)&lt;br /&gt;
 | &lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Taschenrechner2.0 | Taschenrechner &#039;&#039;2.0&#039;&#039;]]&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.&lt;br /&gt;
 | &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&lt;br /&gt;
 | vorhanden&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&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]]&lt;br /&gt;
 | vorhanden&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&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;
 |&lt;br /&gt;
 |&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;
 |&lt;br /&gt;
 | vorhanden&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]]&lt;br /&gt;
 | vorhanden&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&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.&lt;br /&gt;
 | vorhanden&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&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;
 |&lt;br /&gt;
 | vorhanden&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;
 | Florian S.&lt;br /&gt;
 | [[Benutzer:Mario|Mario]]&lt;br /&gt;
 | Teilweise vorhanden&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;
 | &lt;br /&gt;
 | in Arbeit&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&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;
 | &lt;br /&gt;
 | siehe Folien&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&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;
 | &lt;br /&gt;
 |&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&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;
 | &lt;br /&gt;
 |&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Refactoring | Refactoring]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |6&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;
 | vorhanden&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&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; | ....&lt;br /&gt;
 | Arbeiten mit Dateien&amp;lt;br&amp;gt;Kommandozeilenparameter&lt;br /&gt;
 | nion&lt;br /&gt;
 | sping&lt;br /&gt;
 | vorhanden&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&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; | ...&lt;br /&gt;
 | allgemeiner Programmablauf, fortgeschrittene Konsolenausgaben/eingaben&lt;br /&gt;
 | AlexanderK&lt;br /&gt;
 |&lt;br /&gt;
 | vorhanden &lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&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; | ....&lt;br /&gt;
 | Lesen aus Dateien&lt;br /&gt;
 | reiner&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/StringArraySortieren | StringArraySortieren]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; | 7&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; | ...&lt;br /&gt;
 | Konsolparameter, Funktionspointer, stdlib&lt;br /&gt;
 | reiner&lt;br /&gt;
 |&lt;br /&gt;
 | vorhanden&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&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; | ....&lt;br /&gt;
 | Funktionspointer&lt;br /&gt;
 | reiner&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs/forschleife | forschleife]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; | 2&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; | ...&lt;br /&gt;
 | Bug&lt;br /&gt;
 | reiner&lt;br /&gt;
 | nion&lt;br /&gt;
 | vorhanden&lt;br /&gt;
 | &lt;br /&gt;
 | &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;
 | Bug&lt;br /&gt;
 | aeichner&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 &#039;bash&#039; eingeben, man sieht dann auch in welchem Verzeichnis man gerade ist.&lt;br /&gt;
* wenn man nur den Promt &#039;bash-0.12&#039; oder so erhält, also ohne das Verzeichnis in dem man ist, folgendes Kommando eingeben: &amp;lt;tt&amp;gt;export PS1=&#039;\u@\h:\w$ &#039;&amp;lt;/tt&amp;gt; oder zum dauerhaften Speichern: &amp;lt;tt&amp;gt; echo &amp;quot;export PS1=&#039;\u@\h:\w$ &#039;&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>95.89.48.219</name></author>
	</entry>
	<entry>
		<id>wiki.stageing.freitagsrunde.org//index.php?title=C-Kurs/%C3%9Cbungsaufgaben&amp;diff=12485</id>
		<title>C-Kurs/Übungsaufgaben</title>
		<link rel="alternate" type="text/html" href="wiki.stageing.freitagsrunde.org//index.php?title=C-Kurs/%C3%9Cbungsaufgaben&amp;diff=12485"/>
		<updated>2009-09-21T21:40:30Z</updated>

		<summary type="html">&lt;p&gt;95.89.48.219: /* Kleine und große Probleme */&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;
{| 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;
 !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]]&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&lt;br /&gt;
 |  &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;
 | &lt;br /&gt;
 | vorhanden&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&lt;br /&gt;
 | &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]]&lt;br /&gt;
 | &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&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&lt;br /&gt;
 |&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)&lt;br /&gt;
 | &lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Taschenrechner2.0 | Taschenrechner &#039;&#039;2.0&#039;&#039;]]&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.&lt;br /&gt;
 | &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&lt;br /&gt;
 | vorhanden&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&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]]&lt;br /&gt;
 | vorhanden&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&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;
 |&lt;br /&gt;
 |&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;
 |&lt;br /&gt;
 | vorhanden&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]]&lt;br /&gt;
 | vorhanden&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&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.&lt;br /&gt;
 | vorhanden&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&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;
 |&lt;br /&gt;
 | vorhanden&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;
 | Florian S.&lt;br /&gt;
 | [[Benutzer:Mario|Mario]]&lt;br /&gt;
 | Teilweise vorhanden&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;
 | &lt;br /&gt;
 | in Arbeit&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&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;
 | &lt;br /&gt;
 | siehe Folien&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&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;
 | &lt;br /&gt;
 |&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&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;
 | &lt;br /&gt;
 |&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Refactoring | Refactoring]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |6&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;
 | vorhanden&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&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; | ....&lt;br /&gt;
 | Arbeiten mit Dateien&amp;lt;br&amp;gt;Kommandozeilenparameter&lt;br /&gt;
 | nion&lt;br /&gt;
 | sping&lt;br /&gt;
 | vorhanden&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&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; | ...&lt;br /&gt;
 | allgemeiner Programmablauf, fortgeschrittene Konsolenausgaben/eingaben&lt;br /&gt;
 | AlexanderK&lt;br /&gt;
 |&lt;br /&gt;
 | vorhanden &lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&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; | ....&lt;br /&gt;
 | Lesen aus Dateien&lt;br /&gt;
 | reiner&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/StringArraySortieren | StringArraySortieren]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; | 7&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; | ...&lt;br /&gt;
 | Konsolparameter, Funktionspointer, stdlib&lt;br /&gt;
 | reiner&lt;br /&gt;
 |&lt;br /&gt;
 | vorhanden&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&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; | ....&lt;br /&gt;
 | Funktionspointer&lt;br /&gt;
 | reiner&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs/forschleife | forschleife]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; | 2&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; | ...&lt;br /&gt;
 | Bug&lt;br /&gt;
 | reiner&lt;br /&gt;
 | nion&lt;br /&gt;
 | vorhanden&lt;br /&gt;
 | &lt;br /&gt;
 | &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;
 | Bug&lt;br /&gt;
 | aeichner&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 &#039;bash&#039; eingeben, man sieht dann auch in welchem Verzeichnis man gerade ist.&lt;br /&gt;
* wenn man nur den Promt &#039;bash-0.12&#039; oder so erhält, also ohne das Verzeichnis in dem man ist, folgendes Kommando eingeben: &amp;lt;tt&amp;gt;export PS1=&#039;\u@\h:\w$ &#039;&amp;lt;/tt&amp;gt; oder zum dauerhaften Speichern: &amp;lt;tt&amp;gt; echo &amp;quot;export PS1=&#039;\u@\h:\w$ &#039;&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 geschiet, bitte den zuständigen Tutor fragen.&lt;br /&gt;
&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>95.89.48.219</name></author>
	</entry>
	<entry>
		<id>wiki.stageing.freitagsrunde.org//index.php?title=C-Kurs/%C3%9Cbungsaufgaben&amp;diff=12484</id>
		<title>C-Kurs/Übungsaufgaben</title>
		<link rel="alternate" type="text/html" href="wiki.stageing.freitagsrunde.org//index.php?title=C-Kurs/%C3%9Cbungsaufgaben&amp;diff=12484"/>
		<updated>2009-09-21T21:37:10Z</updated>

		<summary type="html">&lt;p&gt;95.89.48.219: /* 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. &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;
{| 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;
 !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]]&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&lt;br /&gt;
 |  &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;
 | &lt;br /&gt;
 | vorhanden&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&lt;br /&gt;
 | &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]]&lt;br /&gt;
 | &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&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&lt;br /&gt;
 |&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)&lt;br /&gt;
 | &lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Taschenrechner2.0 | Taschenrechner &#039;&#039;2.0&#039;&#039;]]&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.&lt;br /&gt;
 | &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&lt;br /&gt;
 | vorhanden&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&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]]&lt;br /&gt;
 | vorhanden&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&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;
 |&lt;br /&gt;
 |&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;
 |&lt;br /&gt;
 | vorhanden&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]]&lt;br /&gt;
 | vorhanden&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&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.&lt;br /&gt;
 | vorhanden&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&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;
 |&lt;br /&gt;
 | vorhanden&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;
 | Florian S.&lt;br /&gt;
 | [[Benutzer:Mario|Mario]]&lt;br /&gt;
 | Teilweise vorhanden&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;
 | &lt;br /&gt;
 | in Arbeit&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&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;
 | &lt;br /&gt;
 | siehe Folien&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&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;
 | &lt;br /&gt;
 |&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&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;
 | &lt;br /&gt;
 |&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Refactoring | Refactoring]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |6&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;
 | vorhanden&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&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; | ....&lt;br /&gt;
 | Arbeiten mit Dateien&amp;lt;br&amp;gt;Kommandozeilenparameter&lt;br /&gt;
 | nion&lt;br /&gt;
 | sping&lt;br /&gt;
 | vorhanden&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&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; | ...&lt;br /&gt;
 | allgemeiner Programmablauf, fortgeschrittene Konsolenausgaben/eingaben&lt;br /&gt;
 | AlexanderK&lt;br /&gt;
 |&lt;br /&gt;
 | vorhanden &lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&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; | ....&lt;br /&gt;
 | Lesen aus Dateien&lt;br /&gt;
 | reiner&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/StringArraySortieren | StringArraySortieren]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; | 7&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; | ...&lt;br /&gt;
 | Konsolparameter, Funktionspointer, stdlib&lt;br /&gt;
 | reiner&lt;br /&gt;
 |&lt;br /&gt;
 | vorhanden&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&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; | ....&lt;br /&gt;
 | Funktionspointer&lt;br /&gt;
 | reiner&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs/forschleife | forschleife]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; | 2&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; | ...&lt;br /&gt;
 | Bug&lt;br /&gt;
 | reiner&lt;br /&gt;
 | nion&lt;br /&gt;
 | vorhanden&lt;br /&gt;
 | &lt;br /&gt;
 | &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;
 | Bug&lt;br /&gt;
 | aeichner&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 &#039;bash&#039; eingeben, man sieht dann auch in welchem Verzeichnis man gerade ist.&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 geschiet, bitte den zuständigen Tutor fragen.&lt;br /&gt;
&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>95.89.48.219</name></author>
	</entry>
	<entry>
		<id>wiki.stageing.freitagsrunde.org//index.php?title=C-Kurs/Sammelbestellung&amp;diff=12483</id>
		<title>C-Kurs/Sammelbestellung</title>
		<link rel="alternate" type="text/html" href="wiki.stageing.freitagsrunde.org//index.php?title=C-Kurs/Sammelbestellung&amp;diff=12483"/>
		<updated>2009-09-21T21:35:34Z</updated>

		<summary type="html">&lt;p&gt;95.89.48.219: Vorgaben velrinkt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Aufgabenstellung ===&lt;br /&gt;
Diese Aufgabe soll möglichst viele Elemente der bisherigen Vorlesungen aufgreifen und verbinden. Die Teilaufgaben fangen leicht an und werden gegen Ende etwas komplexer, so dass Ihr selbst schauen könnt &#039;wie weit&#039; ihr kommt. Bei Problemen nicht verzagen, Tutor fragen! &lt;br /&gt;
&lt;br /&gt;
Lest Euch die Aufgabe zunächst komplett durch und überlegt, welche Datenstrukturen ihr aufbauen müsst. Macht euch auf einem Blatt Papier einen Plan, welche Funktionalitäten ihr in Funktionen ausgliedern wollt, z.B. Datensatz einfügen, suchen, entfernen, Liste ausgeben, Datei einlesen, etc. damit ihr diese Funktionen in den späteren Aufgaben einfach wieder verwenden könnt. &lt;br /&gt;
&lt;br /&gt;
Die einzelnen Teilaufgaben bauen aufeinander auf und sollten daher in dieser Reihenfolge bearbeitet werden. Bearbeitet jede Teilaufgabe am besten in einem eigenen Unterverzeichnis, so dass ihr am Ende für jede Teilaufgabe eine einzelne Datei mit dem Quellcode habt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Folgendes Szenario soll mit Hilfe von elektronischer Datenverarbeitung (kurz [[wikipedia:EDV|EDV]]) gelöst werden:&lt;br /&gt;
&lt;br /&gt;
Eine Gruppe möchte zum Zweck des Sparens von Versandkosten gemeinsam bei einem Onlinehändler bestellen. Dabei soll von allen Bestellern&lt;br /&gt;
eine Bestellliste im CSV-Format entgegengenommen werden. Diese Einzellisten sollen dann zu einer Gesamtbestellliste zusammengeführt werden, die für jeden Artikel auflistet, wie oft er bestellt wurde. Bestellen mehrere Personen denselben Artikel, so soll dies anhand der Bestellnummer erkannt werden und dieser auf der Gesamtliste natürlich nur einmal, aber mit passender Menge, erscheinen.&lt;br /&gt;
&lt;br /&gt;
Neben dieser Bestellliste soll am Ende eine kurze Liste ausgegeben werden, die angibt wie viele Produkte jeder einzelne Teilnehmer bestellt hat und wie viel Geld er bezahlen muss. Vereinfachung: Die Versandkosten sollen anhand der Menge der Artikel aufgeteilt werden, nicht nach dem Gewicht.&lt;br /&gt;
&lt;br /&gt;
Im Vorfeld ist nicht bekannt, wie viele Personen insgesamt bestellen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Beachtet bitte die Vorgaben zu dieser Aufgabe&amp;lt;/b&amp;gt;, welche ihr hier herunterladen könnt: [http://docs.freitagsrunde.org/Veranstaltungen/ckurs_2009/vorgaben/Sammelbestellung_Vorgaben.tgz Sammelbestellung_Vorgaben.tgz]. (Entpacken mit &amp;lt;tt&amp;gt;tar -xzf Sammelbestellung_Vorgaben.tgz&amp;lt;/tt&amp;gt;)&lt;br /&gt;
=== Teil 1 ===&lt;br /&gt;
 &amp;lt;!-- meine Bearbeitungszeit: 20 Minuten --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Erweitere die untenstehende Vorgabe so, dass jeder Aufruf der &amp;lt;tt&amp;gt;addItem()&amp;lt;/tt&amp;gt;-Funktion den Artikel in einer einfach verketteten Liste speichert.&lt;br /&gt;
&lt;br /&gt;
Diese Liste soll am Ende des Programms auf dem Bildschirm formatiert ausgegeben werden, nachdem alle Artikel in der Liste gespeichert sind. Dabei spielt die Reihenfolge der Ausgabe keine Rolle, es kann also sowohl an den Anfang wie an das Ende der Liste angehangen werden.&lt;br /&gt;
&lt;br /&gt;
Dazu musst Du zunächst die struct-Definition der Listenelemente sinnvoll festlegen und einige Hilfsfunktionen zum Einfügen in die Liste und Ausgeben der Liste am Ende programmieren:&lt;br /&gt;
&lt;br /&gt;
  #include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  typedef struct litem_t{&lt;br /&gt;
   ...&lt;br /&gt;
  } litem;&lt;br /&gt;
  &lt;br /&gt;
  typedef struct llist_t{&lt;br /&gt;
   struct litem_t *item;&lt;br /&gt;
   struct llist_t *next;&lt;br /&gt;
  } llist;&lt;br /&gt;
   &lt;br /&gt;
  llist* addItem(llist* alist, char* orderno, char* name, float price, int count, float sum){&lt;br /&gt;
   ...&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  ...weitere Hilfsfunktionen ...&lt;br /&gt;
   &lt;br /&gt;
  int main(int argc, char** argv){&lt;br /&gt;
  ...&lt;br /&gt;
  llist *alist; &lt;br /&gt;
  alist= addItem(NULL, &amp;quot;UT 2042 C&amp;quot;,&amp;quot;40 MHz-Digital-Speicher-Oszilloskop&amp;quot;,349.00, 1, 349.00);&lt;br /&gt;
  alist= addItem(alist, &amp;quot;AGF 2 SW&amp;quot;,&amp;quot;Hirschmann-Abgreifklemme 4mm schwarz&amp;quot;,5.10,1, 5.10);&lt;br /&gt;
  ...&lt;br /&gt;
  /* ausgeben der Liste: */&lt;br /&gt;
  ...&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ausgabe:&lt;br /&gt;
  Bestellnummer    Name                                  Einzelpreis  Menge Gesamtpreis&lt;br /&gt;
  UT 2042 C        40 MHz-Digital-Speicher-Oszilloskop	 349.00         1     349.00 &lt;br /&gt;
  AGF 2 SW         Hirschmann-Abgreifklemme 4mm schwarz	   5.10         1       5.10&lt;br /&gt;
&lt;br /&gt;
=== Teil 2 ===&lt;br /&gt;
&lt;br /&gt;
Schreibe ein Programm, dass eine CSV-Datei &#039;bestellung.csv&#039; aus dem aktuellen Verzeichnis einliest und auf dem Bildschirm ausgibt, wie viele Artikel bestellt wurden und was diese insgesamt kosten. Das Einlesen der Datei befindet sich bereits ausprogrammiert in der Vorgabe.&lt;br /&gt;
&lt;br /&gt;
Die Artikel sollen dazu zunächst in einer einfach verketteten Liste unsortiert gespeichert werden, danach soll diese Liste vom Anfang durchlaufen werden und die Artikel gezählt sowie der Preis berechnet werden.&lt;br /&gt;
&lt;br /&gt;
Die CSV-Datei hat folgendes Format (Beispiele in den Vorgaben):&lt;br /&gt;
&lt;br /&gt;
 Bestellnummer, Kurzbeschreibung, Einzelpreis, Anzahl, Preis&lt;br /&gt;
 UT 2042 C, 40 MHz-Digital-Speicher-Oszilloskop	349.00, 1, 349.00 &lt;br /&gt;
 AGF 2 SW, Hirschmann-Abgreifklemme 4mm schwarz	5.10,1, 5.10&lt;br /&gt;
 AK 2 RT, Hirschmann-Krokoklemme 4mm rot	1.80, 1, 1.80&lt;br /&gt;
&lt;br /&gt;
=== Teil 3 ===&lt;br /&gt;
&lt;br /&gt;
Stelle nun sicher, dass ein Artikel immer nur einmal in die Liste aufgenommen werden kann. Ist er bereits in der Liste vorhanden, so soll die Anzahl und der Preis angepasst werden. Stelle außerdem sicher, dass beim Einlesen der Liste der Preis jeweils das Produkt aus Anzahl und Einzelpreis ist, und sich keine Fehler in der Bestellliste eingeschlichen haben.&lt;br /&gt;
&lt;br /&gt;
Erweitere nun das Programm so, dass der Dateiname auf der Kommandozeile angegeben werden kann und so nacheinander mehrere Teilbestellungen bearbeitet werden können.&lt;br /&gt;
&lt;br /&gt;
=== Teil 4 ===&lt;br /&gt;
&lt;br /&gt;
Das Programm soll nun beliebig viele Dateinamen als Kommandozeilenparameter beim Start übergeben bekommen und für jeden einzelnen eine neue Liste führen. Am Ende soll dann in einem Block eine kurze, formatierte Tabelle ausgegeben werden, welche eine Spalte mit dem Dateinamen, dann die Anzahl der Produkte und den Endpreis aus der Bestellung enthält:&lt;br /&gt;
&lt;br /&gt;
 Dateiname      Produkte   Gesamtpreis&lt;br /&gt;
 florian.csv    51         123,51&lt;br /&gt;
 bastla.csv     12           4,12&lt;br /&gt;
 tannek.csv      6           1,80&lt;br /&gt;
 =====================================&lt;br /&gt;
 SUMME:         69         129,43&lt;br /&gt;
&lt;br /&gt;
Tipps: Nutze Liste von Listen, argv, argc, structs, printf, ...&lt;br /&gt;
&lt;br /&gt;
=== Teil 5 ===&lt;br /&gt;
&lt;br /&gt;
Erweitere das Programm jetzt schließlich so, dass nach dem kompletten Einlesen der einzelnen Listen die Gesamtbestellliste in eine Datei geschrieben wird. Dazu muss zunächst noch eine verkettete Liste angelegt werden, welche die Gesamtbestellung enthält.&lt;br /&gt;
&lt;br /&gt;
Am Ende soll dann die Tabelle aus Teil 3 auf dem Bildschirm ausgeben werden und eine Datei &#039;gesamt.csv&#039; im aktuellen Verzeichnis angelegt werden, welche die Gesamtbestellung enthält. Das Dateiformat ist hier exakt wie bei den einzelnen Bestelllisten.&lt;br /&gt;
&lt;br /&gt;
=== Zusatzaufgabe ===&lt;br /&gt;
&lt;br /&gt;
Sorge dafür, dass vor dem Beenden des Programms aller Speicher der Liste freigegeben wird. Was ist dabei zu beachten?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Kommentare ==&lt;br /&gt;
Wenn du Anmerkungen zur Aufgabe hast oder Lob und Kritik loswerden möchtest, ist hier die richtige Stelle dafür. Klicke einfach ganz rechts auf &amp;quot;bearbeiten&amp;quot; und schreibe deinen Kommentar direkt ins Wiki. Keine Scheu, es geht nichts kaputt ;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Als kleine Starthilfe folgt ein Beispiel, wie so ein Kommentar formatiert sein könnte. Mit &amp;quot;Vorschau zeigen&amp;quot; kannst du dir ansehen, was deine Änderung bewirken würde, ohne wirklich etwas zu ändern.&lt;br /&gt;
Du musst übrigens außerhalb dieses auskommentieren Bereichs schreiben ;)&lt;br /&gt;
&lt;br /&gt;
==== Robert ====&lt;br /&gt;
Na mal schauen, ob irgendjemand diese Funktion wirklich benutzt. Ich fände es jedenfalls toll.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:CKurs]]&lt;br /&gt;
[[Kategorie:CKurs_Aufgaben]]&lt;/div&gt;</summary>
		<author><name>95.89.48.219</name></author>
	</entry>
	<entry>
		<id>wiki.stageing.freitagsrunde.org//index.php?title=C-Kurs/Sammelbestellung&amp;diff=12424</id>
		<title>C-Kurs/Sammelbestellung</title>
		<link rel="alternate" type="text/html" href="wiki.stageing.freitagsrunde.org//index.php?title=C-Kurs/Sammelbestellung&amp;diff=12424"/>
		<updated>2009-09-20T21:28:59Z</updated>

		<summary type="html">&lt;p&gt;95.89.48.219: noch ein Hinweis&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Aufgabenstellung ===&lt;br /&gt;
Diese Aufgabe soll möglichst viele Elemente der bisherigen Vorlesungen aufgreifen und verbinden. Die Teilaufgaben fangen leicht an und werden gegen Ende etwas komplexer, so dass Ihr selbst schauen könnt &#039;wie weit&#039; ihr kommt. Bei Problemen nicht verzagen, Tutor fragen! &lt;br /&gt;
&lt;br /&gt;
Lest Euch die Aufgabe zunächst komplett durch und überlegt, welche Datenstrukturen ihr aufbauen müsst. Macht euch auf einem Blatt Papier einen Plan, welche Funktionalitäten ihr in Funktionen ausgliedern wollt, z.B. Datensatz einfügen, suchen, entfernen, Liste ausgeben, Datei einlesen, etc. damit ihr diese Funktionen in den späteren Aufgaben einfach wieder verwenden könnt. &lt;br /&gt;
&lt;br /&gt;
Die einzelnen Teilaufgaben bauen aufeinander auf und sollten daher in dieser Reihenfolge bearbeitet werden. Bearbeitet jede Tailaufgabe am besten in einem eigenen Unterverzeichnis, so dass ihr am Ende für jede Teilaufgabe eine einzelne Datei mit dem Quellcode habt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Folgendes Szenario soll mit Hilfe von elektronischer Datenverarbeitung (kurz [[wikipedia:EDV|EDV]]) gelöst werden:&lt;br /&gt;
&lt;br /&gt;
Eine Gruppe möchte zum Zweck des Sparens von Versandkosten gemeinsam bei einem Onlinehändler bestellen. Dabei soll von allen Bestellern&lt;br /&gt;
eine Bestellliste im CSV-Format entgegengenommen werden. Diese Einzellisten sollen dann zu einer Gesamtbestelliste zusammengeführt werden, die für jeden Artikel auflistet, wie oft er bestellt wurde. Bestellen mehrere Personen denselben Artikel, so soll dies anhand der Bestellnummer erkannt werden und dieser auf der Gesamtliste natürlich nur einmal, aber mit passender Menge, erscheinen.&lt;br /&gt;
&lt;br /&gt;
Neben dieser Bestelliste soll am Ende eine kurze Liste ausgegeben werden, die angibt wieviele Produkte jeder einzelne Teilnehmer bestellt hat und wieviel Geld er bezahlen muß. Vereinfachung: Die Versandkosten sollen anhand der Menge der Artikel aufgeteilt werden, nicht nach dem Gewicht.&lt;br /&gt;
&lt;br /&gt;
Im Vorfeld ist nicht bekannt, wieviele Personen insgesamt bestellen.&lt;br /&gt;
&lt;br /&gt;
Beachtet die Vorgaben zu dieser Aufgabe, welche ihr hier herunterladen könnt: ..... (TODO bis Dienstag!)&lt;br /&gt;
&lt;br /&gt;
=== Teil 1 ===&lt;br /&gt;
 &amp;lt;!-- meine Bearbeitungszeit: 20 Minuten --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Erweitere die untenstehende Vorgabe so, dass jeder Aufruf der &amp;lt;tt&amp;gt;addItem()&amp;lt;/tt&amp;gt;-Funktion den Artikel in einer einfach verketteten Liste speichert.&lt;br /&gt;
&lt;br /&gt;
Diese Liste soll am Ende des Programms auf dem Bildschirm formatiert ausgegeben werden, nachdem alle Artikel in der Liste gespeichert sind. Dabei spielt die Reihenfolge der Ausgabe keine Rolle, es kann also sowohl an den Anfang wie an das Ende der Liste angehangen werden.&lt;br /&gt;
&lt;br /&gt;
Dazu musst Du zunächst die struct-Definition der Listenelemente sinnvoll festlegen und einige Hilfsfunktionen zum Einfügen in die Liste und Ausgeben der Liste am Ende programmieren:&lt;br /&gt;
&lt;br /&gt;
  #include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  typedef struct litem_t{&lt;br /&gt;
   ...&lt;br /&gt;
  } litem;&lt;br /&gt;
  &lt;br /&gt;
  typedef struct llist_t{&lt;br /&gt;
   struct litem_t *item;&lt;br /&gt;
   struct llist_t *next;&lt;br /&gt;
  } llist;&lt;br /&gt;
   &lt;br /&gt;
  llist* addItem(llist* alist, char* orderno, char* name, float price, int count, float sum){&lt;br /&gt;
   ...&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  ...weitere Hilfsfunktionen ...&lt;br /&gt;
   &lt;br /&gt;
  int main(int argc, char** argv){&lt;br /&gt;
  ...&lt;br /&gt;
  llist *alist; &lt;br /&gt;
  alist= addItem(NULL, &amp;quot;UT 2042 C&amp;quot;,&amp;quot;40 MHz-Digital-Speicher-Oszilloskop&amp;quot;,349.00, 1, 349.00);&lt;br /&gt;
  alist= addItem(alist, &amp;quot;AGF 2 SW&amp;quot;,&amp;quot;Hirschmann-Abgreifklemme 4mm schwarz&amp;quot;,5.10,1, 5.10);&lt;br /&gt;
  ...&lt;br /&gt;
  /* ausgeben der Liste: */&lt;br /&gt;
  ...&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ausgabe:&lt;br /&gt;
  Bestellnummer    Name                                  Einzelpreis  Menge Gesamtpreis&lt;br /&gt;
  UT 2042 C        40 MHz-Digital-Speicher-Oszilloskop	 349.00         1     349.00 &lt;br /&gt;
  AGF 2 SW         Hirschmann-Abgreifklemme 4mm schwarz	   5.10         1       5.10&lt;br /&gt;
&lt;br /&gt;
=== Teil 2 ===&lt;br /&gt;
&lt;br /&gt;
Schreibe ein Programm, dass eine csv-Datei &#039;bestellung.csv&#039; aus dem aktuellen Verzeichnis einliest und auf dem Bildschirm&lt;br /&gt;
ausgibt, wieviele Artikel bestellt wurden und was diese insgesamt kosten.  Das Einlesen der Datei befindet sich bereits ausprogrammiert in der Vorgabe.&lt;br /&gt;
&lt;br /&gt;
Die Artikel sollen dazu zunächst in einer einfach verketteten Liste unsortiert gespeichert werden, danach soll diese&lt;br /&gt;
Liste vom Anfang durchlaufen werden und die Artikel gezählt sowie der Preis berechnet werden.&lt;br /&gt;
&lt;br /&gt;
Die CSV-Datei hat folgendes Format (Beispiele in den Vorgaben):&lt;br /&gt;
&lt;br /&gt;
 Bestellnummer, Kurzbeschreibung, Einzelpreis, Anzahl, Preis&lt;br /&gt;
 UT 2042 C, 40 MHz-Digital-Speicher-Oszilloskop	349.00, 1, 349.00 &lt;br /&gt;
 AGF 2 SW, Hirschmann-Abgreifklemme 4mm schwarz	5.10,1, 5.10&lt;br /&gt;
 AK 2 RT, Hirschmann-Krokoklemme 4mm rot	1.80, 1, 1.80&lt;br /&gt;
&lt;br /&gt;
=== Teil 3 ===&lt;br /&gt;
&lt;br /&gt;
Stelle nun sicher, dass ein Artikel immer nur einmal in die Liste aufgenommen werden kann. Ist er bereits in der Liste&lt;br /&gt;
vorhanden, so soll die Anzahl und der Preis angepasst werden. Stelle ausserdem sicher, dass beim Einlesen der Liste der Preis jeweils das Produkt aus Anzahl und Einzelpreis ist, und sich keine Fehler in der Bestellliste eingeschlichen haben.&lt;br /&gt;
&lt;br /&gt;
Erweitere nun das Programm so, dass der Dateiname auf der Kommandozeile angegeben werden kann und so nacheinander mehrere Teilbestellungen bearbeitet werden können.&lt;br /&gt;
&lt;br /&gt;
=== Teil 4 ===&lt;br /&gt;
&lt;br /&gt;
Das Programm soll nun beliebig viele Dateinamen als Kommandozeilenparameter beim Start übergeben bekommen und für jeden einzelnen eine neue&lt;br /&gt;
Liste führen. Am Ende soll dann in einem Block eine kurze, formatierte Tabelle ausgegeben werden, welche eine Spalte mit dem Dateinamen, dann die Anzahl der Produkte und den Endpreis aus der Bestellung enthält:&lt;br /&gt;
&lt;br /&gt;
 Dateiname      Produkte   Gesamtpreis&lt;br /&gt;
 florian.csv    51         123,51&lt;br /&gt;
 bastla.csv     12           4,12&lt;br /&gt;
 tannek.csv      6           1,80&lt;br /&gt;
 =====================================&lt;br /&gt;
 SUMME:         69         129,43&lt;br /&gt;
&lt;br /&gt;
Tipps: Nutze Liste von Listen, argv, argc, structs, printf, ...&lt;br /&gt;
&lt;br /&gt;
=== Teil 5 ===&lt;br /&gt;
&lt;br /&gt;
Erweitere das Programm jetzt schließlich so, dass nach dem kompletten einlesen der einzelnen Listen die Gesamtbestelliste in eine Datei geschrieben wird. Dazu muss zunächst noch eine verkettete Liste angelegt werden, welche die Gesamtbestellung enthält.&lt;br /&gt;
&lt;br /&gt;
Am Ende soll dann die Tabelle aus Teil 3 auf dem Bildschirm ausgeben werden und eine Datei &#039;gesamt.csv&#039; im aktuellen Verzeichnis angelegt werden, welche die Gesamtbestellung enthält. Das Dateiformat ist hier exakt wie bei den einzelnen Bestelllisten.&lt;br /&gt;
&lt;br /&gt;
=== Zusatzaufgabe ===&lt;br /&gt;
&lt;br /&gt;
Sorge dafür, dass vor dem Beenden des Programms aller Speicher der Liste freigegeben wird. Was ist dabei zu beachten?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Kommentare ==&lt;br /&gt;
Wenn du Anmerkungen zur Aufgabe hast oder Lob und Kritik loswerden möchtest, ist hier die richtige Stelle dafür. Klicke einfach ganz rechts auf &amp;quot;bearbeiten&amp;quot; und schreibe deinen Kommentar direkt ins Wiki. Keine Scheu, es geht nichts kaputt ;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Als kleine Starthilfe folgt ein Beispiel, wie so ein Kommentar formatiert sein könnte. Mit &amp;quot;Vorschau zeigen&amp;quot; kannst du dir ansehen, was deine Änderung bewirken würde, ohne wirklich etwas zu ändern.&lt;br /&gt;
Du musst übrigens außerhalb dieses auskommentieren Bereichs schreiben ;)&lt;br /&gt;
&lt;br /&gt;
==== Robert ====&lt;br /&gt;
Na mal schauen, ob irgendjemand diese Funktion wirklich benutzt. Ich fände es jedenfalls toll.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:CKurs]]&lt;br /&gt;
[[Kategorie:CKurs_Aufgaben]]&lt;/div&gt;</summary>
		<author><name>95.89.48.219</name></author>
	</entry>
	<entry>
		<id>wiki.stageing.freitagsrunde.org//index.php?title=C-Kurs/Sammelbestellung&amp;diff=12423</id>
		<title>C-Kurs/Sammelbestellung</title>
		<link rel="alternate" type="text/html" href="wiki.stageing.freitagsrunde.org//index.php?title=C-Kurs/Sammelbestellung&amp;diff=12423"/>
		<updated>2009-09-20T21:27:59Z</updated>

		<summary type="html">&lt;p&gt;95.89.48.219: Hinweis auf Vorgaben&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Aufgabenstellung ===&lt;br /&gt;
Diese Aufgabe soll möglichst viele Elemente der bisherigen Vorlesungen aufgreifen und verbinden. Die Teilaufgaben fangen leicht an und werden gegen Ende etwas komplexer, so dass Ihr selbst schauen könnt &#039;wie weit&#039; ihr kommt. Bei Problemen nicht verzagen, Tutor fragen! &lt;br /&gt;
&lt;br /&gt;
Lest Euch die Aufgabe zunächst komplett durch und überlegt, welche Datenstrukturen ihr aufbauen müsst. Macht euch auf einem Blatt Papier einen Plan, welche Funktionalitäten ihr in Funktionen ausgliedern wollt, z.B. Datensatz einfügen, suchen, entfernen, Liste ausgeben, Datei einlesen, etc. damit ihr diese Funktionen in den späteren Aufgaben einfach wieder verwenden könnt. &lt;br /&gt;
&lt;br /&gt;
Die einzelnen Teilaufgaben bauen aufeinander auf und sollten daher in dieser Reihenfolge bearbeitet werden. Bearbeitet jede Tailaufgabe am besten in einem eigenen Unterverzeichnis, so dass ihr am Ende für jede Teilaufgabe eine einzelne Datei mit dem Quellcode habt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Folgendes Szenario soll mit Hilfe von elektronischer Datenverarbeitung (kurz [[wikipedia:EDV|EDV]]) gelöst werden:&lt;br /&gt;
&lt;br /&gt;
Eine Gruppe möchte zum Zweck des Sparens von Versandkosten gemeinsam bei einem Onlinehändler bestellen. Dabei soll von allen Bestellern&lt;br /&gt;
eine Bestellliste im CSV-Format entgegengenommen werden. Diese Einzellisten sollen dann zu einer Gesamtbestelliste zusammengeführt werden, die für jeden Artikel auflistet, wie oft er bestellt wurde. Bestellen mehrere Personen denselben Artikel, so soll dies anhand der Bestellnummer erkannt werden und dieser auf der Gesamtliste natürlich nur einmal, aber mit passender Menge, erscheinen.&lt;br /&gt;
&lt;br /&gt;
Neben dieser Bestelliste soll am Ende eine kurze Liste ausgegeben werden, die angibt wieviele Produkte jeder einzelne Teilnehmer bestellt hat und wieviel Geld er bezahlen muß. Vereinfachung: Die Versandkosten sollen anhand der Menge der Artikel aufgeteilt werden, nicht nach dem Gewicht.&lt;br /&gt;
&lt;br /&gt;
Im Vorfeld ist nicht bekannt, wieviele Personen insgesamt bestellen.&lt;br /&gt;
&lt;br /&gt;
Beachtet die Vorgaben zu dieser Aufgabe, welche ihr hier herunterladen könnt: ..... (TODO bis Dienstag!)&lt;br /&gt;
&lt;br /&gt;
=== Teil 1 ===&lt;br /&gt;
 &amp;lt;!-- meine Bearbeitungszeit: 20 Minuten --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Erweitere die untenstehende Vorgabe so, dass jeder Aufruf der &amp;lt;tt&amp;gt;addItem()&amp;lt;/tt&amp;gt;-Funktion den Artikel in einer einfach verketteten Liste speichert.&lt;br /&gt;
&lt;br /&gt;
Diese Liste soll am Ende des Programms auf dem Bildschirm formatiert ausgegeben werden, nachdem alle Artikel in der Liste gespeichert sind. Dabei spielt die Reihenfolge der Ausgabe keine Rolle, es kann also sowohl an den Anfang wie an das Ende der Liste angehangen werden.&lt;br /&gt;
&lt;br /&gt;
Dazu musst Du zunächst die struct-Definition der Listenelemente sinnvoll festlegen und einige Hilfsfunktionen zum Einfügen in die Liste und Ausgeben der Liste am Ende programmieren:&lt;br /&gt;
&lt;br /&gt;
  #include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  typedef struct litem_t{&lt;br /&gt;
   ...&lt;br /&gt;
  } litem;&lt;br /&gt;
  &lt;br /&gt;
  typedef struct llist_t{&lt;br /&gt;
   struct litem_t *item;&lt;br /&gt;
   struct llist_t *next;&lt;br /&gt;
  } llist;&lt;br /&gt;
   &lt;br /&gt;
  llist* addItem(llist* alist, char* orderno, char* name, float price, int count, float sum){&lt;br /&gt;
   ...&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  ...weitere Hilfsfunktionen ...&lt;br /&gt;
   &lt;br /&gt;
  int main(int argc, char** argv){&lt;br /&gt;
  ...&lt;br /&gt;
  llist *alist; &lt;br /&gt;
  alist= addItem(NULL, &amp;quot;UT 2042 C&amp;quot;,&amp;quot;40 MHz-Digital-Speicher-Oszilloskop&amp;quot;,349.00, 1, 349.00);&lt;br /&gt;
  alist= addItem(alist, &amp;quot;AGF 2 SW&amp;quot;,&amp;quot;Hirschmann-Abgreifklemme 4mm schwarz&amp;quot;,5.10,1, 5.10);&lt;br /&gt;
  ...&lt;br /&gt;
  /* ausgeben der Liste: */&lt;br /&gt;
  ...&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ausgabe:&lt;br /&gt;
  Bestellnummer    Name                                  Einzelpreis  Menge Gesamtpreis&lt;br /&gt;
  UT 2042 C        40 MHz-Digital-Speicher-Oszilloskop	 349.00         1     349.00 &lt;br /&gt;
  AGF 2 SW         Hirschmann-Abgreifklemme 4mm schwarz	   5.10         1       5.10&lt;br /&gt;
&lt;br /&gt;
=== Teil 2 ===&lt;br /&gt;
&lt;br /&gt;
Schreibe ein Programm, dass eine csv-Datei &#039;bestellung.csv&#039; aus dem aktuellen Verzeichnis einliest und auf dem Bildschirm&lt;br /&gt;
ausgibt, wieviele Artikel bestellt wurden und was diese insgesamt kosten.  &lt;br /&gt;
&lt;br /&gt;
Die Artikel sollen dazu zunächst in einer einfach verketteten Liste unsortiert gespeichert werden, danach soll diese&lt;br /&gt;
Liste vom Anfang durchlaufen werden und die Artikel gezählt sowie der Preis berechnet werden.&lt;br /&gt;
&lt;br /&gt;
Die CSV-Datei hat folgendes Format (Beispiele in den Vorgaben):&lt;br /&gt;
&lt;br /&gt;
 Bestellnummer, Kurzbeschreibung, Einzelpreis, Anzahl, Preis&lt;br /&gt;
 UT 2042 C, 40 MHz-Digital-Speicher-Oszilloskop	349.00, 1, 349.00 &lt;br /&gt;
 AGF 2 SW, Hirschmann-Abgreifklemme 4mm schwarz	5.10,1, 5.10&lt;br /&gt;
 AK 2 RT, Hirschmann-Krokoklemme 4mm rot	1.80, 1, 1.80&lt;br /&gt;
&lt;br /&gt;
=== Teil 3 ===&lt;br /&gt;
&lt;br /&gt;
Stelle nun sicher, dass ein Artikel immer nur einmal in die Liste aufgenommen werden kann. Ist er bereits in der Liste&lt;br /&gt;
vorhanden, so soll die Anzahl und der Preis angepasst werden. Stelle ausserdem sicher, dass beim Einlesen der Liste der Preis jeweils das Produkt aus Anzahl und Einzelpreis ist, und sich keine Fehler in der Bestellliste eingeschlichen haben.&lt;br /&gt;
&lt;br /&gt;
Erweitere nun das Programm so, dass der Dateiname auf der Kommandozeile angegeben werden kann und so nacheinander mehrere Teilbestellungen bearbeitet werden können.&lt;br /&gt;
&lt;br /&gt;
=== Teil 4 ===&lt;br /&gt;
&lt;br /&gt;
Das Programm soll nun beliebig viele Dateinamen als Kommandozeilenparameter beim Start übergeben bekommen und für jeden einzelnen eine neue&lt;br /&gt;
Liste führen. Am Ende soll dann in einem Block eine kurze, formatierte Tabelle ausgegeben werden, welche eine Spalte mit dem Dateinamen, dann die Anzahl der Produkte und den Endpreis aus der Bestellung enthält:&lt;br /&gt;
&lt;br /&gt;
 Dateiname      Produkte   Gesamtpreis&lt;br /&gt;
 florian.csv    51         123,51&lt;br /&gt;
 bastla.csv     12           4,12&lt;br /&gt;
 tannek.csv      6           1,80&lt;br /&gt;
 =====================================&lt;br /&gt;
 SUMME:         69         129,43&lt;br /&gt;
&lt;br /&gt;
Tipps: Nutze Liste von Listen, argv, argc, structs, printf, ...&lt;br /&gt;
&lt;br /&gt;
=== Teil 5 ===&lt;br /&gt;
&lt;br /&gt;
Erweitere das Programm jetzt schließlich so, dass nach dem kompletten einlesen der einzelnen Listen die Gesamtbestelliste in eine Datei geschrieben wird. Dazu muss zunächst noch eine verkettete Liste angelegt werden, welche die Gesamtbestellung enthält.&lt;br /&gt;
&lt;br /&gt;
Am Ende soll dann die Tabelle aus Teil 3 auf dem Bildschirm ausgeben werden und eine Datei &#039;gesamt.csv&#039; im aktuellen Verzeichnis angelegt werden, welche die Gesamtbestellung enthält. Das Dateiformat ist hier exakt wie bei den einzelnen Bestelllisten.&lt;br /&gt;
&lt;br /&gt;
=== Zusatzaufgabe ===&lt;br /&gt;
&lt;br /&gt;
Sorge dafür, dass vor dem Beenden des Programms aller Speicher der Liste freigegeben wird. Was ist dabei zu beachten?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Kommentare ==&lt;br /&gt;
Wenn du Anmerkungen zur Aufgabe hast oder Lob und Kritik loswerden möchtest, ist hier die richtige Stelle dafür. Klicke einfach ganz rechts auf &amp;quot;bearbeiten&amp;quot; und schreibe deinen Kommentar direkt ins Wiki. Keine Scheu, es geht nichts kaputt ;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Als kleine Starthilfe folgt ein Beispiel, wie so ein Kommentar formatiert sein könnte. Mit &amp;quot;Vorschau zeigen&amp;quot; kannst du dir ansehen, was deine Änderung bewirken würde, ohne wirklich etwas zu ändern.&lt;br /&gt;
Du musst übrigens außerhalb dieses auskommentieren Bereichs schreiben ;)&lt;br /&gt;
&lt;br /&gt;
==== Robert ====&lt;br /&gt;
Na mal schauen, ob irgendjemand diese Funktion wirklich benutzt. Ich fände es jedenfalls toll.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:CKurs]]&lt;br /&gt;
[[Kategorie:CKurs_Aufgaben]]&lt;/div&gt;</summary>
		<author><name>95.89.48.219</name></author>
	</entry>
	<entry>
		<id>wiki.stageing.freitagsrunde.org//index.php?title=Javakurs2009&amp;diff=12213</id>
		<title>Javakurs2009</title>
		<link rel="alternate" type="text/html" href="wiki.stageing.freitagsrunde.org//index.php?title=Javakurs2009&amp;diff=12213"/>
		<updated>2009-09-04T23:11:17Z</updated>

		<summary type="html">&lt;p&gt;95.89.48.219: /* Anmeldung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&#039;&#039;&#039;[[Javakurs/Übungsaufgaben | --&amp;gt; Zu den Übungsaufgaben &amp;lt;-- ]]&#039;&#039;&#039;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wie vor jedem Sommersemester findet auch in diesen Winterferien wieder ein Javakurs statt. Er wird aus dem OWL-Programm der TU Berlin finanziert.&lt;br /&gt;
&lt;br /&gt;
== Termine == &lt;br /&gt;
Der Javakurs findet vom Dienstag, den 24.03.2009 bis einschließlich Freitag, den 27.03.2009 statt.&lt;br /&gt;
&lt;br /&gt;
Die Vorlesungen finden jeweils im H1058 statt. Übungen im TEL106 und TEL206.&lt;br /&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;
 !Di 24.03.2009&lt;br /&gt;
 !Mi 25.03.2009&lt;br /&gt;
 !Do 26.03.2009&lt;br /&gt;
 !Fr 27.03.2009&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 |10:00-11:00&lt;br /&gt;
 |bgcolor=&amp;quot;#E8E8E8&amp;quot; |[[Javakurs 2009/Vortrag01 | Vortrag]]&lt;br /&gt;
 |bgcolor=&amp;quot;#E8E8E8&amp;quot; |[[Javakurs 2009/Vortrag03 | Vortrag]]&lt;br /&gt;
 |bgcolor=&amp;quot;#E8E8E8&amp;quot; |[[Javakurs 2009/Vortrag04 | Vortrag]]&lt;br /&gt;
 |bgcolor=&amp;quot;#E8E8E8&amp;quot; |[[Javakurs 2009/Vortrag06 | Vortrag]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 |11:00-12:00&lt;br /&gt;
 |rowspan=2 |Übung&lt;br /&gt;
 |rowspan=2 |Übung&lt;br /&gt;
 |rowspan=2 |Übung&lt;br /&gt;
 |rowspan=2 |Übung&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 |12.00-13:00&lt;br /&gt;
 |- bgcolor=&amp;quot;#FFFFFF&amp;quot;&lt;br /&gt;
 |13:00-14:00&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:00-15:00&lt;br /&gt;
 |[[Javakurs 2009/Vortrag02 | Vortrag]]&lt;br /&gt;
 | bgcolor=&amp;quot;#F5F5F5&amp;quot; rowspan=3 | Übung + FKR&lt;br /&gt;
 |[[Javakurs 2009/Vortrag05 | Vortrag]]&lt;br /&gt;
 | bgcolor=&amp;quot;#F5F5F5&amp;quot; rowspan=3 |Übung&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 |15:00-16:00&lt;br /&gt;
 |rowspan=2 | Übung&lt;br /&gt;
 |rowspan=2 | Übung&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 |16:00-17:00&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Warum teilnehmen? ==&lt;br /&gt;
Der Javakurs richtet sich an Programmier-Anfä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.&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;
Was ursprünglich als rein ehrenamtliches Projekt begonnen hat wird seit 1 Jahr vom OWL-Programm der TU-Berlin gefördert. Der Kurs wird wie im letzten Jahr komplett von engagierten StudentInnen geplant und durchgeführt. Insgesamt stehen euch in den Übungen fünfzehn 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;
&#039;&#039;&#039;Es gibt für diesen Kurs keinerlei Scheine.&#039;&#039;&#039;&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;
== Orga-Team ==&lt;br /&gt;
* Kai&lt;br /&gt;
* Mario&lt;br /&gt;
* Sebastian D.&lt;br /&gt;
* Thaddäus&lt;br /&gt;
&lt;br /&gt;
== Anmeldung ==&lt;br /&gt;
Zum Javakurs musste man sich wie immer kostenfrei anmelden.&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 vorraussetzen 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;
== Links ==&lt;br /&gt;
* [http://docs.freitagsrunde.org/Fotos/index.php?v=list&amp;amp;i=0&amp;amp;p=2009.03.25-17%20Javakurs%202009 Fotos von Florian]&lt;br /&gt;
* [[Javakurs2008|alte Seiten des Javakurses 2008]]&lt;br /&gt;
* [[Javakurs 2009/Orgaportal|Orga-Portal]]&lt;br /&gt;
* [[Javakurs 2009/Vortragendenportal|Vortragenden-Portal]]&lt;br /&gt;
* [[Javakurs 2009/Tutorenportal|Tutoren-Portal]]&lt;br /&gt;
* [[Javakurs/Übungsaufgaben|Übungsaufgaben]]&lt;br /&gt;
* [[Javakurs_2009/Feedback|Feedback zum Kurs 2009]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie: Veranstaltungen der Freitagsrunde]]&lt;/div&gt;</summary>
		<author><name>95.89.48.219</name></author>
	</entry>
</feed>