<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki.freitagsrunde.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=DStulle</id>
	<title>FreitagsrundenWiki - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.freitagsrunde.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=DStulle"/>
	<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/Spezial:Beitr%C3%A4ge/DStulle"/>
	<updated>2026-05-31T22:56:13Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.31.16</generator>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=C-Kurs/%C3%9Cbungsaufgaben&amp;diff=12595</id>
		<title>C-Kurs/Übungsaufgaben</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=C-Kurs/%C3%9Cbungsaufgaben&amp;diff=12595"/>
		<updated>2009-09-24T12:55:53Z</updated>

		<summary type="html">&lt;p&gt;DStulle: /* Die Aufgaben */ Folien verlinkt&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;
 | [[Ckurs2009/Base64/Musterlösung | Base64]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/EingabeAusgabe | Ein- und Ausgabe]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Einlesen von Benutzereingaben&amp;lt;br&amp;gt;Ausgabe derselben&lt;br /&gt;
 | [[Benutzer:Mario|Mario]]&lt;br /&gt;
 | nion&lt;br /&gt;
 | [[Ckurs2009/EingabeAusgabe/Musterlösung | Ein- und Ausgabe]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Taschenrechner | Taschenrechner]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Eingabe+Ausgabe&amp;lt;br&amp;gt;Mathematische Operatoren&lt;br /&gt;
 | [[Benutzer:Mario|Mario]]&lt;br /&gt;
 | [[Benutzer:Tkroenert|TKroenert]]&lt;br /&gt;
 | [[Ckurs2009/Taschenrechner/Musterlösung | Taschenrechner]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/VerschachtelteSchleifen | Verschachtelte Schleifen]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Umgang mit mehreren verschachtelten Schleifen&lt;br /&gt;
 | [[Benutzer:Dank|Daniel K.]]&lt;br /&gt;
 | AlexanderK&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;
 | [[Ckurs2009/Glückspiel/Musterlösung | Glückspiel]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Wochentag | Wochentagsrechnung]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Einlesen von Benutzereingaben&amp;lt;br&amp;gt;Mathematikverständniss&lt;br /&gt;
 | [[Benutzer:Mario|Mario]]&lt;br /&gt;
 | nion (Musterlösung noch nicht vorhanden)&lt;br /&gt;
 | &lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Taschenrechner2.0 | Taschenrechner ''2.0'']]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |8&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Knobeln&amp;lt;br&amp;gt;Komplexes Aufgaben lösen&lt;br /&gt;
 | [[Benutzer:Mario|Mario]]&lt;br /&gt;
 | Martin K.&lt;br /&gt;
 | [[Ckurs2009/Taschenrechner2.0/Musterlösung | Taschenrechner ''2.0'']]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Call by reference | Call by reference]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Einfache Anwendung von &amp;amp;/*&lt;br /&gt;
 | sping&lt;br /&gt;
 | nion&lt;br /&gt;
 | [[Ckurs2009/Call by reference/Musterlösung | Call by reference]]&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;
 | [[Ckurs2009/Text processing/Musterlösung | Text processing]]&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;
 | nion&lt;br /&gt;
 | [[Ckurs2009/Palindrome/Musterlösung | Palindrome ]]&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;
 | [[Ckurs2009/(Pointer) Swapping/Musterlösung | (Pointer) Swapping]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Matrizenmultiplikation | Matrizenmultiplikation]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |6&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Mehrdimensionale Arrays&amp;lt;br&amp;gt;const correctness&lt;br /&gt;
 | sping&lt;br /&gt;
 | [[Benutzer:Mario|Mario]]&lt;br /&gt;
 | [[Ckurs2009/Matrizenmultiplikation/Musterlösung | Matrizenmultiplikation]]&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;
 | [[Ckurs2009/Arrayuebergabe/Musterlösung | Arrayuebergabe]]&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;
 | [[Ckurs2009/Studentendatenbank/Musterlösung | Studentendatenbank]]&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;
 |  [[Ckurs2009/Sammelbestellung/Musterlösung | Sammelbestellung]] &lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Zahlen_sagen | Zahlen sagen]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4. VL&lt;br /&gt;
 | Umgang mit Zeichenketten&lt;br /&gt;
 | Martin K.&lt;br /&gt;
 | &lt;br /&gt;
 | [[Ckurs2009/Zahlen_sagen/Musterlösung | Zahlen sagen]]&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;
 | [https://wiki.freitagsrunde.org/Ckurs2009/Vortrag05 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/BubbleSortDebug | BubbleSort Debugging]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; | 5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; | 6. VL&lt;br /&gt;
 | Debuggen eines Programmes mit gdb&lt;br /&gt;
 | aeichner&lt;br /&gt;
 |&lt;br /&gt;
 | [[Ckurs2009/BubbleSortDebug/Musterlösung | BubbleSort Debugging]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Debug | Debugging]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; | 1-8&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; | 6. VL&lt;br /&gt;
 | Debuggen einer Anwendung nach Wahl&lt;br /&gt;
 | aeichner&lt;br /&gt;
 |&lt;br /&gt;
 | &lt;br /&gt;
 |- bgcolor=&amp;quot;#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;
 | [[Ckurs2009/Code Layout/Musterlösung | Code Layout]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Refactoring | Refactoring]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5-9&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |7. VL&lt;br /&gt;
 | Wie verbessere ich den Quellcode eines Programmes.&lt;br /&gt;
 | Daniel&lt;br /&gt;
 | &lt;br /&gt;
 | [[Ckurs2009/Refactoring/Musterlösung | Refactoring]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#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;
 | vorhanden &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;
== Kleine und große Probleme ==&lt;br /&gt;
&lt;br /&gt;
* Die Tubit-Accounts haben nicht /bin/bash als shell, so dass die &amp;lt;strong&amp;gt;Cursortasten&amp;lt;/strong&amp;gt; nicht funktionieren. Workaround: als erstes Kommando 'bash' eingeben, man sieht dann auch in welchem Verzeichnis man gerade ist.&lt;br /&gt;
* wenn man nur den Promt 'bash-0.12' oder so erhält, also ohne das Verzeichnis in dem man ist, folgendes Kommando eingeben: &amp;lt;tt&amp;gt;export PS1='\u@\h:\w$ '&amp;lt;/tt&amp;gt; oder zum dauerhaften Speichern: &amp;lt;tt&amp;gt; echo &amp;quot;export PS1='\u@\h:\w$ '&amp;quot; &amp;gt;&amp;gt; ~/.bashrc &amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Musterlösungen ==&lt;br /&gt;
Die Lösungen zu den Aufgaben werden nach den jeweiligen Übungen hier veröffentlicht. Falls dies nicht geschieht, bitte den zuständigen Tutor fragen.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[Ckurs2009/Feedback|Feedback zum Kurs 2009]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:CKurs]]&lt;br /&gt;
[[Kategorie:CKurs Aufgaben]]&lt;/div&gt;</summary>
		<author><name>DStulle</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=C-Kurs/%C3%9Cbungsaufgaben&amp;diff=12594</id>
		<title>C-Kurs/Übungsaufgaben</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=C-Kurs/%C3%9Cbungsaufgaben&amp;diff=12594"/>
		<updated>2009-09-24T12:49:21Z</updated>

		<summary type="html">&lt;p&gt;DStulle: /* Die Aufgaben */ Musterlösung freigeschaltet&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;
 | [[Ckurs2009/Base64/Musterlösung | Base64]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/EingabeAusgabe | Ein- und Ausgabe]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Einlesen von Benutzereingaben&amp;lt;br&amp;gt;Ausgabe derselben&lt;br /&gt;
 | [[Benutzer:Mario|Mario]]&lt;br /&gt;
 | nion&lt;br /&gt;
 | [[Ckurs2009/EingabeAusgabe/Musterlösung | Ein- und Ausgabe]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Taschenrechner | Taschenrechner]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Eingabe+Ausgabe&amp;lt;br&amp;gt;Mathematische Operatoren&lt;br /&gt;
 | [[Benutzer:Mario|Mario]]&lt;br /&gt;
 | [[Benutzer:Tkroenert|TKroenert]]&lt;br /&gt;
 | [[Ckurs2009/Taschenrechner/Musterlösung | Taschenrechner]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/VerschachtelteSchleifen | Verschachtelte Schleifen]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Umgang mit mehreren verschachtelten Schleifen&lt;br /&gt;
 | [[Benutzer:Dank|Daniel K.]]&lt;br /&gt;
 | AlexanderK&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;
 | [[Ckurs2009/Glückspiel/Musterlösung | Glückspiel]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Wochentag | Wochentagsrechnung]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Einlesen von Benutzereingaben&amp;lt;br&amp;gt;Mathematikverständniss&lt;br /&gt;
 | [[Benutzer:Mario|Mario]]&lt;br /&gt;
 | nion (Musterlösung noch nicht vorhanden)&lt;br /&gt;
 | &lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Taschenrechner2.0 | Taschenrechner ''2.0'']]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |8&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Knobeln&amp;lt;br&amp;gt;Komplexes Aufgaben lösen&lt;br /&gt;
 | [[Benutzer:Mario|Mario]]&lt;br /&gt;
 | Martin K.&lt;br /&gt;
 | [[Ckurs2009/Taschenrechner2.0/Musterlösung | Taschenrechner ''2.0'']]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Call by reference | Call by reference]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Einfache Anwendung von &amp;amp;/*&lt;br /&gt;
 | sping&lt;br /&gt;
 | nion&lt;br /&gt;
 | [[Ckurs2009/Call by reference/Musterlösung | Call by reference]]&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;
 | [[Ckurs2009/Text processing/Musterlösung | Text processing]]&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;
 | nion&lt;br /&gt;
 | [[Ckurs2009/Palindrome/Musterlösung | Palindrome ]]&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;
 | [[Ckurs2009/(Pointer) Swapping/Musterlösung | (Pointer) Swapping]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Matrizenmultiplikation | Matrizenmultiplikation]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |6&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Mehrdimensionale Arrays&amp;lt;br&amp;gt;const correctness&lt;br /&gt;
 | sping&lt;br /&gt;
 | [[Benutzer:Mario|Mario]]&lt;br /&gt;
 | [[Ckurs2009/Matrizenmultiplikation/Musterlösung | Matrizenmultiplikation]]&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;
 | [[Ckurs2009/Arrayuebergabe/Musterlösung | Arrayuebergabe]]&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;
 | [[Ckurs2009/Studentendatenbank/Musterlösung | Studentendatenbank]]&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;
 |  [[Ckurs2009/Sammelbestellung/Musterlösung | Sammelbestellung]] &lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Zahlen_sagen | Zahlen sagen]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4. VL&lt;br /&gt;
 | Umgang mit Zeichenketten&lt;br /&gt;
 | Martin K.&lt;br /&gt;
 | &lt;br /&gt;
 | [[Ckurs2009/Zahlen_sagen/Musterlösung | Zahlen sagen]]&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/BubbleSortDebug | BubbleSort Debugging]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; | 5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; | 6. VL&lt;br /&gt;
 | Debuggen eines Programmes mit gdb&lt;br /&gt;
 | aeichner&lt;br /&gt;
 |&lt;br /&gt;
 | [[Ckurs2009/BubbleSortDebug/Musterlösung | BubbleSort Debugging]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Debug | Debugging]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; | 1-8&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; | 6. VL&lt;br /&gt;
 | Debuggen einer Anwendung nach Wahl&lt;br /&gt;
 | aeichner&lt;br /&gt;
 |&lt;br /&gt;
 | &lt;br /&gt;
 |- bgcolor=&amp;quot;#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;
 | [[Ckurs2009/Code Layout/Musterlösung | Code Layout]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Refactoring | Refactoring]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5-9&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |7. VL&lt;br /&gt;
 | Wie verbessere ich den Quellcode eines Programmes.&lt;br /&gt;
 | Daniel&lt;br /&gt;
 | &lt;br /&gt;
 | [[Ckurs2009/Refactoring/Musterlösung | Refactoring]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#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;
 | vorhanden &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;
== Kleine und große Probleme ==&lt;br /&gt;
&lt;br /&gt;
* Die Tubit-Accounts haben nicht /bin/bash als shell, so dass die &amp;lt;strong&amp;gt;Cursortasten&amp;lt;/strong&amp;gt; nicht funktionieren. Workaround: als erstes Kommando 'bash' eingeben, man sieht dann auch in welchem Verzeichnis man gerade ist.&lt;br /&gt;
* wenn man nur den Promt 'bash-0.12' oder so erhält, also ohne das Verzeichnis in dem man ist, folgendes Kommando eingeben: &amp;lt;tt&amp;gt;export PS1='\u@\h:\w$ '&amp;lt;/tt&amp;gt; oder zum dauerhaften Speichern: &amp;lt;tt&amp;gt; echo &amp;quot;export PS1='\u@\h:\w$ '&amp;quot; &amp;gt;&amp;gt; ~/.bashrc &amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Musterlösungen ==&lt;br /&gt;
Die Lösungen zu den Aufgaben werden nach den jeweiligen Übungen hier veröffentlicht. Falls dies nicht geschieht, bitte den zuständigen Tutor fragen.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[Ckurs2009/Feedback|Feedback zum Kurs 2009]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:CKurs]]&lt;br /&gt;
[[Kategorie:CKurs Aufgaben]]&lt;/div&gt;</summary>
		<author><name>DStulle</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=C-Kurs/Refactoring&amp;diff=12589</id>
		<title>C-Kurs/Refactoring</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=C-Kurs/Refactoring&amp;diff=12589"/>
		<updated>2009-09-24T10:05:18Z</updated>

		<summary type="html">&lt;p&gt;DStulle: /* Teil 1 */ warnung hinzugefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Teil 1 =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:10px;background:#FAA;&amp;quot;&amp;gt;&lt;br /&gt;
Bei dem Programm ist ein Problem aufgetreten, das scheinbar mit der Funktione fgetc() auf verschiedenen Systemen (Linux und Solaris) auftritt. Falls etwas nitcht so ganz hinhaut, verzweifelt nicht und macht einfach eine andere Aufgabe.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das gegebene Programm ist eine Hashtabelle. Leider ist es etwas unübersichtlich, da es eine Funktion enthält, die ca. 150 Zeilen lang ist. Schaffe mehr Übersicht indem du zusammengehörige Codefragmente oder mehrfach im Quelltext auftauchen in kleinere Funktionen auslagerst. Wie zum Beispiel diese:&lt;br /&gt;
&lt;br /&gt;
 int calcHashKey(const char *pszHash)&lt;br /&gt;
 {&lt;br /&gt;
   &lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 PHASHITEM getItemFromHash(const char *pszHash)&lt;br /&gt;
 {&lt;br /&gt;
   &lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void execGetHash(const char *pszHash)&lt;br /&gt;
 {&lt;br /&gt;
   &lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void execRemoveHash(const char *pszHash)&lt;br /&gt;
 {&lt;br /&gt;
   &lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void execInsertHash(const char *pszHash, char *pszData)&lt;br /&gt;
 {&lt;br /&gt;
   &lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 int parseCmd(const char *pszCmdLine)&lt;br /&gt;
 {&lt;br /&gt;
   &lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 char *readLine(size_t *pcbRead)&lt;br /&gt;
 {&lt;br /&gt;
   &lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Halte dich dabei an die Namenskonvention der [http://de.wikipedia.org/wiki/Ungarische_Notation Ungarischen Notation] und [http://de.wikipedia.org/wiki/Binnenmajuskel#Verwendung_in_Programmiersprachen Camel Case].&lt;br /&gt;
&lt;br /&gt;
Dokumentiere Jede Funktion und beschreiben genau, was sie macht und welche Ein- und Ausgaben sie hat.&lt;br /&gt;
&lt;br /&gt;
Hier ist die Vorlage: [http://docs.freitagsrunde.org/Veranstaltungen/ckurs_2009/vorgaben/HashTableRefactor.c HashTableRefactor.c]&lt;br /&gt;
&lt;br /&gt;
= Teil 2 =&lt;br /&gt;
&lt;br /&gt;
Den Algorithmus zum Codieren eines Strings nach base64 aus einer anderen [[Ckurs2009/Base64|Aufgabe]] kann man auch noch etwas eleganter und knapper schreiben.&lt;br /&gt;
&lt;br /&gt;
Das Programm erwatet genau einen Kommandozeilenparameter und convertiert diesen nach Base64.&lt;br /&gt;
&lt;br /&gt;
 $ ./base64 &amp;quot;Das ist ein Test&amp;quot;&lt;br /&gt;
 RGFzIGlzdCBlaW4gVGVzdA==&lt;br /&gt;
&lt;br /&gt;
Hier ist die Vorlage: [http://docs.freitagsrunde.org/Veranstaltungen/ckurs_2009/vorgaben/base64_refactor.c base64_refactor.c]&lt;br /&gt;
&lt;br /&gt;
Schreibe eine Funktion encode_block(), die die vier gegebenen encode_*_output() Funktionen ersetzt.&lt;br /&gt;
&lt;br /&gt;
 /**&lt;br /&gt;
  * Encodes three input chars into four output chars based on the base64 scheme.&lt;br /&gt;
  * @param in chararray with input characters&lt;br /&gt;
  * @param out chararray where the output is written to&lt;br /&gt;
  * @param len number of chars to be used from input&lt;br /&gt;
  */&lt;br /&gt;
 void encode_block( unsigned char in[3], unsigned char out[4], int len )&lt;br /&gt;
 {&lt;br /&gt;
   /* ... */&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Ersetze die Aufrufe der vier Funktionen an den drei Stellen im Code durch einen Aufruf der Funktion encode_block().&lt;br /&gt;
&lt;br /&gt;
== Zusatz ==&lt;br /&gt;
&lt;br /&gt;
Vereinfache den Code so, dass die Funktion encode_block() nur einmal aufgerufen wird. Lagere den Algorithmus zum Codieren in eine Funktion encode() aus. Initialisierung und Benutzerinteraktion soll in der main() umgesetzt werden.&lt;br /&gt;
&lt;br /&gt;
 /**&lt;br /&gt;
  * Encodes the input string into an output string based on the base64 scheme.&lt;br /&gt;
  * @param length size of input string&lt;br /&gt;
  * @param input string with input characters&lt;br /&gt;
  * @param output string where the output is written to. It has to be long enough to hold the output&lt;br /&gt;
  */&lt;br /&gt;
 void encode(int length, char *input, char *output)&lt;br /&gt;
 {&lt;br /&gt;
   /* ... */&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>DStulle</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=C-Kurs_2009/Vortrag07&amp;diff=12582</id>
		<title>C-Kurs 2009/Vortrag07</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=C-Kurs_2009/Vortrag07&amp;diff=12582"/>
		<updated>2009-09-24T09:11:34Z</updated>

		<summary type="html">&lt;p&gt;DStulle: /* Themen */ Weblinks hinzugefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Guter Code =&lt;br /&gt;
&lt;br /&gt;
Vortragende: '''Daniel S.''' &amp;lt;dstulle gmx.de&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=== Themen ===&lt;br /&gt;
* Guter Code&lt;br /&gt;
&lt;br /&gt;
==== Links ====&lt;br /&gt;
&lt;br /&gt;
Hier sind einige weiterführende Links zum Vortag.&lt;br /&gt;
&lt;br /&gt;
Coding Standards:&lt;br /&gt;
&lt;br /&gt;
* [http://www.jetcafe.org/jim/c-style.html ANSI]&lt;br /&gt;
* [http://www.gnu.org/prep/standards/ GNU]&lt;br /&gt;
* [http://lxr.linux.no/#linux+v2.6.31/Documentation/CodingStyle Linux]&lt;br /&gt;
&lt;br /&gt;
Namenskonvention:&lt;br /&gt;
&lt;br /&gt;
* [http://de.wikipedia.org/wiki/Ungarische_Notation Ungarische]&lt;br /&gt;
&lt;br /&gt;
Automatische Generation der dokumentation aus Kommentaren:&lt;br /&gt;
&lt;br /&gt;
* [http://www.stack.nl/~dimitri/doxygen/ Doxygen]&lt;br /&gt;
&lt;br /&gt;
Refactoring und Testen:&lt;br /&gt;
&lt;br /&gt;
* [http://de.wikipedia.org/wiki/Refactoring Refactoring]&lt;br /&gt;
* [http://de.wikipedia.org/wiki/Unit-Test Testing]&lt;br /&gt;
&lt;br /&gt;
Tipps:&lt;br /&gt;
&lt;br /&gt;
* [http://www.joelonsoftware.com/articles/fog0000000043.html Der Joel Test] ([http://local.joelonsoftware.com/wiki/2000-Aug-09_Der_Joel-Test deutsch])&lt;br /&gt;
&lt;br /&gt;
=== Folien ===&lt;br /&gt;
* [http://docs.freitagsrunde.org/Veranstaltungen/ckurs_2009/vorlesungen/07-guter-code/c-kurs-guter-code-sturm.pdf c-kurs-guter-code-sturm.pdf]&lt;br /&gt;
&lt;br /&gt;
=== Aufgaben ===&lt;br /&gt;
&lt;br /&gt;
Passend zu dieser Vorlesung sind die folgenden Übungsaufgaben:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Ckurs2009/Code Layout | Code Layout]]&lt;br /&gt;
&lt;br /&gt;
[[Ckurs2009/Refactoring | Refactoring]]&lt;br /&gt;
&lt;br /&gt;
=== Mitschnitt ===&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:CKurs]]&lt;/div&gt;</summary>
		<author><name>DStulle</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=C-Kurs/Code_Layout&amp;diff=12578</id>
		<title>C-Kurs/Code Layout</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=C-Kurs/Code_Layout&amp;diff=12578"/>
		<updated>2009-09-24T08:54:07Z</updated>

		<summary type="html">&lt;p&gt;DStulle: Beispiele zum Programmaufruf hinzugefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Aufgabenstellung =&lt;br /&gt;
&lt;br /&gt;
In dieser Aufgabe sind einige Codeschnipsel gegeben die zwar funktionieren, aber etwas unübersichtlich oder umständlich geschrieben sind. Deine Aufgabe ist es diese so um zu schreiben, dass sie übersichtlicher und einfacher sind. Vergleiche die Ergebnisse mit deinem Nachbarn und sprecht über eure Ergebnisse.&lt;br /&gt;
&lt;br /&gt;
== sum.c ==&lt;br /&gt;
&lt;br /&gt;
In der Funktion sum hat sich eine for-Schleife versteckt. Schreibe die Funktion so um, dass sie übersichtlicher ist. Gib den Variablen bei dieser Gelegenheit selbsterklärende Namen.&lt;br /&gt;
&lt;br /&gt;
 #define klaus jonny&lt;br /&gt;
 &lt;br /&gt;
 /**&lt;br /&gt;
  * Berechnet die summe der Zahlen im übergebenen array&lt;br /&gt;
  * @breite array mit den Zahlen&lt;br /&gt;
  * @hoehe länge des arrays&lt;br /&gt;
  */&lt;br /&gt;
 int sum(int *breiTee, int hoehe)&lt;br /&gt;
 {&lt;br /&gt;
 	int vorgabe = 0;&lt;br /&gt;
 	int i = 1;&lt;br /&gt;
 	do&lt;br /&gt;
 	{&lt;br /&gt;
 		int klaus = vorgabe + breiTee[i-1];&lt;br /&gt;
 		vorgabe = jonny;&lt;br /&gt;
 		i = i + 1;&lt;br /&gt;
 	} while (i &amp;lt;= hoehe);&lt;br /&gt;
 &lt;br /&gt;
 	return vorgabe;&lt;br /&gt;
 } &lt;br /&gt;
&lt;br /&gt;
Hier ist die Vorlage: [[http://docs.freitagsrunde.org/Veranstaltungen/ckurs_2009/vorgaben/sum_refactor.c sum_refactor.c]]&lt;br /&gt;
&lt;br /&gt;
So wird das programm benutzt:&lt;br /&gt;
&lt;br /&gt;
 $ gcc sum_refactor.c -o sum&lt;br /&gt;
 $ ./sum 23 42&lt;br /&gt;
 65&lt;br /&gt;
&lt;br /&gt;
== fac.c ==&lt;br /&gt;
&lt;br /&gt;
Die Fakultät kann auch Rekursiv berechnet werden, allerdings könnte man das auch bequem in zwei Zeilen machen, ohne dabei unübersichtlich zu werden.&lt;br /&gt;
&lt;br /&gt;
 /**&lt;br /&gt;
  * Brerechnet die Fakultät&lt;br /&gt;
  * @n Zahl von der die Fakultät berechnet werden soll&lt;br /&gt;
  * @return Fakultät von n&lt;br /&gt;
  */&lt;br /&gt;
 int faculty(int n){&lt;br /&gt;
   if (n &amp;lt; 2) return 1;&lt;br /&gt;
 &lt;br /&gt;
   if(n == 2)&lt;br /&gt;
   {&lt;br /&gt;
       return 2;&lt;br /&gt;
   } else {&lt;br /&gt;
     int m;&lt;br /&gt;
     m = n*faculty(n-1);&lt;br /&gt;
     return m;&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Hier ist die Vorlage: [[http://docs.freitagsrunde.org/Veranstaltungen/ckurs_2009/vorgaben/fac_refactor.c fac_refactor.c]]&lt;br /&gt;
&lt;br /&gt;
So wird das programm benutzt:&lt;br /&gt;
&lt;br /&gt;
 $ gcc fac_refactor.c -o fac&lt;br /&gt;
 $ ./fac 4&lt;br /&gt;
 4! = 24&lt;br /&gt;
&lt;br /&gt;
= Kommentare =&lt;/div&gt;</summary>
		<author><name>DStulle</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=C-Kurs/Refactoring&amp;diff=12570</id>
		<title>C-Kurs/Refactoring</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=C-Kurs/Refactoring&amp;diff=12570"/>
		<updated>2009-09-23T21:10:20Z</updated>

		<summary type="html">&lt;p&gt;DStulle: /* Teil 1 */ Aufgabenstellung aktuallisiert&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Teil 1 =&lt;br /&gt;
&lt;br /&gt;
Das gegebene Programm ist eine Hashtabelle. Leider ist es etwas unübersichtlich, da es eine Funktion enthält, die ca. 150 Zeilen lang ist. Schaffe mehr Übersicht indem du zusammengehörige Codefragmente oder mehrfach im Quelltext auftauchen in kleinere Funktionen auslagerst. Wie zum Beispiel diese:&lt;br /&gt;
&lt;br /&gt;
 int calcHashKey(const char *pszHash)&lt;br /&gt;
 {&lt;br /&gt;
   &lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 PHASHITEM getItemFromHash(const char *pszHash)&lt;br /&gt;
 {&lt;br /&gt;
   &lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void execGetHash(const char *pszHash)&lt;br /&gt;
 {&lt;br /&gt;
   &lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void execRemoveHash(const char *pszHash)&lt;br /&gt;
 {&lt;br /&gt;
   &lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void execInsertHash(const char *pszHash, char *pszData)&lt;br /&gt;
 {&lt;br /&gt;
   &lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 int parseCmd(const char *pszCmdLine)&lt;br /&gt;
 {&lt;br /&gt;
   &lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 char *readLine(size_t *pcbRead)&lt;br /&gt;
 {&lt;br /&gt;
   &lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Halte dich dabei an die Namenskonvention der [http://de.wikipedia.org/wiki/Ungarische_Notation Ungarischen Notation] und [http://de.wikipedia.org/wiki/Binnenmajuskel#Verwendung_in_Programmiersprachen Camel Case].&lt;br /&gt;
&lt;br /&gt;
Dokumentiere Jede Funktion und beschreiben genau, was sie macht und welche Ein- und Ausgaben sie hat.&lt;br /&gt;
&lt;br /&gt;
Hier ist die Vorlage: [http://docs.freitagsrunde.org/Veranstaltungen/ckurs_2009/vorgaben/HashTableRefactor.c HashTableRefactor.c]&lt;br /&gt;
&lt;br /&gt;
= Teil 2 =&lt;br /&gt;
&lt;br /&gt;
Den Algorithmus zum Codieren eines Strings nach base64 aus einer anderen [[Ckurs2009/Base64|Aufgabe]] kann man auch noch etwas eleganter und knapper schreiben.&lt;br /&gt;
&lt;br /&gt;
Das Programm erwatet genau einen Kommandozeilenparameter und convertiert diesen nach Base64.&lt;br /&gt;
&lt;br /&gt;
 $ ./base64 &amp;quot;Das ist ein Test&amp;quot;&lt;br /&gt;
 RGFzIGlzdCBlaW4gVGVzdA==&lt;br /&gt;
&lt;br /&gt;
Hier ist die Vorlage: [http://docs.freitagsrunde.org/Veranstaltungen/ckurs_2009/vorgaben/base64_refactor.c base64_refactor.c]&lt;br /&gt;
&lt;br /&gt;
Schreibe eine Funktion encode_block(), die die vier gegebenen encode_*_output() Funktionen ersetzt.&lt;br /&gt;
&lt;br /&gt;
 /**&lt;br /&gt;
  * Encodes three input chars into four output chars based on the base64 scheme.&lt;br /&gt;
  * @param in chararray with input characters&lt;br /&gt;
  * @param out chararray where the output is written to&lt;br /&gt;
  * @param len number of chars to be used from input&lt;br /&gt;
  */&lt;br /&gt;
 void encode_block( unsigned char in[3], unsigned char out[4], int len )&lt;br /&gt;
 {&lt;br /&gt;
   /* ... */&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Ersetze die Aufrufe der vier Funktionen an den drei Stellen im Code durch einen Aufruf der Funktion encode_block().&lt;br /&gt;
&lt;br /&gt;
== Zusatz ==&lt;br /&gt;
&lt;br /&gt;
Vereinfache den Code so, dass die Funktion encode_block() nur einmal aufgerufen wird. Lagere den Algorithmus zum Codieren in eine Funktion encode() aus. Initialisierung und Benutzerinteraktion soll in der main() umgesetzt werden.&lt;br /&gt;
&lt;br /&gt;
 /**&lt;br /&gt;
  * Encodes the input string into an output string based on the base64 scheme.&lt;br /&gt;
  * @param length size of input string&lt;br /&gt;
  * @param input string with input characters&lt;br /&gt;
  * @param output string where the output is written to. It has to be long enough to hold the output&lt;br /&gt;
  */&lt;br /&gt;
 void encode(int length, char *input, char *output)&lt;br /&gt;
 {&lt;br /&gt;
   /* ... */&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>DStulle</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=C-Kurs/Refactoring&amp;diff=12569</id>
		<title>C-Kurs/Refactoring</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=C-Kurs/Refactoring&amp;diff=12569"/>
		<updated>2009-09-23T21:08:25Z</updated>

		<summary type="html">&lt;p&gt;DStulle: /* Teil 1 */ Aufgabenstellung aktuallisiert&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Teil 1 =&lt;br /&gt;
&lt;br /&gt;
Das gegebene Programm ist eine Hashtabelle. Leider ist es etwas unübersichtlich, da es eine Funktion enthält, die ca. 150 Zeilen lang ist. Schaffe mehr Übersicht indem du zusammengehörige Codefragmente oder mehrfach im Quelltext auftauchen in kleinere Funktionen auslagerst. Wie zum Beispiel diese:&lt;br /&gt;
&lt;br /&gt;
 int calcHashKey(const char *pszHash);&lt;br /&gt;
 PHASHITEM getItemFromHash(const char *pszHash);&lt;br /&gt;
 void execGetHash(const char *pszHash);&lt;br /&gt;
 void execRemoveHash(const char *pszHash);&lt;br /&gt;
 void execInsertHash(const char *pszHash, char *pszData);&lt;br /&gt;
 int parseCmd(const char *pszCmdLine);&lt;br /&gt;
 char *readLine(size_t *pcbRead);&lt;br /&gt;
&lt;br /&gt;
Halte dich dabei an die Namenskonvention der [http://de.wikipedia.org/wiki/Ungarische_Notation Ungarischen Notation] und [http://de.wikipedia.org/wiki/Binnenmajuskel#Verwendung_in_Programmiersprachen Camel Case].&lt;br /&gt;
&lt;br /&gt;
Dokumentiere Jede Funktion und beschreiben genau, was sie macht und welche Ein- und Ausgaben sie hat.&lt;br /&gt;
&lt;br /&gt;
Hier ist die Vorlage: [http://docs.freitagsrunde.org/Veranstaltungen/ckurs_2009/vorgaben/HashTableRefactor.c HashTableRefactor.c]&lt;br /&gt;
&lt;br /&gt;
= Teil 2 =&lt;br /&gt;
&lt;br /&gt;
Den Algorithmus zum Codieren eines Strings nach base64 aus einer anderen [[Ckurs2009/Base64|Aufgabe]] kann man auch noch etwas eleganter und knapper schreiben.&lt;br /&gt;
&lt;br /&gt;
Das Programm erwatet genau einen Kommandozeilenparameter und convertiert diesen nach Base64.&lt;br /&gt;
&lt;br /&gt;
 $ ./base64 &amp;quot;Das ist ein Test&amp;quot;&lt;br /&gt;
 RGFzIGlzdCBlaW4gVGVzdA==&lt;br /&gt;
&lt;br /&gt;
Hier ist die Vorlage: [http://docs.freitagsrunde.org/Veranstaltungen/ckurs_2009/vorgaben/base64_refactor.c base64_refactor.c]&lt;br /&gt;
&lt;br /&gt;
Schreibe eine Funktion encode_block(), die die vier gegebenen encode_*_output() Funktionen ersetzt.&lt;br /&gt;
&lt;br /&gt;
 /**&lt;br /&gt;
  * Encodes three input chars into four output chars based on the base64 scheme.&lt;br /&gt;
  * @param in chararray with input characters&lt;br /&gt;
  * @param out chararray where the output is written to&lt;br /&gt;
  * @param len number of chars to be used from input&lt;br /&gt;
  */&lt;br /&gt;
 void encode_block( unsigned char in[3], unsigned char out[4], int len )&lt;br /&gt;
 {&lt;br /&gt;
   /* ... */&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Ersetze die Aufrufe der vier Funktionen an den drei Stellen im Code durch einen Aufruf der Funktion encode_block().&lt;br /&gt;
&lt;br /&gt;
== Zusatz ==&lt;br /&gt;
&lt;br /&gt;
Vereinfache den Code so, dass die Funktion encode_block() nur einmal aufgerufen wird. Lagere den Algorithmus zum Codieren in eine Funktion encode() aus. Initialisierung und Benutzerinteraktion soll in der main() umgesetzt werden.&lt;br /&gt;
&lt;br /&gt;
 /**&lt;br /&gt;
  * Encodes the input string into an output string based on the base64 scheme.&lt;br /&gt;
  * @param length size of input string&lt;br /&gt;
  * @param input string with input characters&lt;br /&gt;
  * @param output string where the output is written to. It has to be long enough to hold the output&lt;br /&gt;
  */&lt;br /&gt;
 void encode(int length, char *input, char *output)&lt;br /&gt;
 {&lt;br /&gt;
   /* ... */&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>DStulle</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=C-Kurs_2009/Vortrag07&amp;diff=12568</id>
		<title>C-Kurs 2009/Vortrag07</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=C-Kurs_2009/Vortrag07&amp;diff=12568"/>
		<updated>2009-09-23T20:50:12Z</updated>

		<summary type="html">&lt;p&gt;DStulle: /* Aufgaben */ Übungsaufgaben verlinkt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Guter Code =&lt;br /&gt;
&lt;br /&gt;
Vortragende: '''Daniel S.''' &amp;lt;dstulle gmx.de&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=== Themen ===&lt;br /&gt;
* Guter Code&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Folien ===&lt;br /&gt;
* [http://docs.freitagsrunde.org/Veranstaltungen/ckurs_2009/vorlesungen/07-guter-code/c-kurs-guter-code-sturm.pdf c-kurs-guter-code-sturm.pdf] (Alpha Version)&lt;br /&gt;
&lt;br /&gt;
=== Aufgaben ===&lt;br /&gt;
&lt;br /&gt;
Passend zu dieser Vorlesung sind die folgenden Übungsaufgaben:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Ckurs2009/Code Layout | Code Layout]]&lt;br /&gt;
&lt;br /&gt;
[[Ckurs2009/Refactoring | Refactoring]]&lt;br /&gt;
&lt;br /&gt;
=== Mitschnitt ===&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:CKurs]]&lt;/div&gt;</summary>
		<author><name>DStulle</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=C-Kurs_2009/Vortrag07/Gedanken&amp;diff=12567</id>
		<title>C-Kurs 2009/Vortrag07/Gedanken</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=C-Kurs_2009/Vortrag07/Gedanken&amp;diff=12567"/>
		<updated>2009-09-23T20:47:40Z</updated>

		<summary type="html">&lt;p&gt;DStulle: Gedanken ausgelagert&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
==== Ein paar Genanken ====&lt;br /&gt;
&lt;br /&gt;
Guter Code? Was ist gut?&lt;br /&gt;
Die frage ob etwas gut oder schlecht ist, definiert sich über das Ziel, dass man hat.&lt;br /&gt;
&lt;br /&gt;
Erst wenn man sich darüber im klaren ist, was man für ein Ziel hat kann man sich die Frage stellen ob etwas gut ist. z.B.: was für ein Auto ist gut? Ein Bus, ein Lastwagen, ein Rennwagen? Es kommt ganz darauf an ob man viele Leute mitnehmen will, viel Krams mitnehmen will oder einfach schnell sein will.&lt;br /&gt;
&lt;br /&gt;
Was will man üblicher weise erreichen wenn man Programmiert.&lt;br /&gt;
Zunächst einmal will man der Maschine sagen was sie tun soll. Aber ist das alles?&lt;br /&gt;
&lt;br /&gt;
Meistens will man den Code selber später nochmal lesen und verstehen. Also schreibt man ihn auch für sich.&lt;br /&gt;
&lt;br /&gt;
Sehr oft schreibt man den Code mit anderen zusammen oder als Teil eines Projektes mit Anderen. Also schreibt man ihn auch für andere.&lt;br /&gt;
&lt;br /&gt;
Warum ist guter Code, gutes Layout wichtig?&lt;br /&gt;
&lt;br /&gt;
Ihr schreibt den Programmcode nicht für den Computer sondern für euch und andere Menschen. Sonst könntet ihr das ganze gleich in Assembler rein hacken und es dann vergessen.&lt;br /&gt;
&lt;br /&gt;
Programmieren uns Softwareengineering ist bis auf wenige ausnahmen ein sehr kommunikativer und zwischenmenschlicher Prozess. Deswegen haben Informatiker auch eine so hohe Sozialkompetenz (Kein Scherz)&lt;br /&gt;
&lt;br /&gt;
Ihr schreibt den Code, damit ihn andere Leute oder ihr selber später mal lesen könnt. Programmieren ist eine besondere Art der Kommunikation. Genau wie die Menschliche Sprache ein Medium für Informationen, Gedanken und Konzepten ist, wird die Programmiersprache genau dazu benutzt mit der Besonderheit dass sie sogar ein Computer verstehen kann, aber das ist eigentlich nebensächlich ;-).&lt;br /&gt;
&lt;br /&gt;
Guter Code ist sehr hilfreich beim Auffinden von Fehlern.&lt;br /&gt;
&lt;br /&gt;
Guter Code lässt sich leichter ändern und anpassen.&lt;br /&gt;
&lt;br /&gt;
Ihr seht also es ist wichtig sich beim Schreiben von Code an bestimmte Regeln zu halten. Ein Programm zu schreiben was nur der Compiler versteht uns sonst niemand anders ist keine Kunst und obendrein nutzlos.&lt;br /&gt;
&lt;br /&gt;
Die frage ob ein Code gut ist oder nicht, kann man nicht so leicht beantworten, da es kein Maß gibt, und keine Methode um dies zu ermitteln.&lt;br /&gt;
&lt;br /&gt;
Für guten Code braucht man ein Gutes design. Guter Code fängt beim design der Funktionen, Prozeduren, Modulen, Strukturen und dessen Zusammenspiel an.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Verschiedene Stufen der Code Qualität:&lt;br /&gt;
* Laufender Code (Compiler)&lt;br /&gt;
* Richtiger Code (Beweise / Test)&lt;br /&gt;
* Guter Code (Intuition / Geschmack)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Woran erkennt man guten Code?&lt;br /&gt;
&lt;br /&gt;
* Guter Code ist einfach zu lesen und leicht zu verstehen, auch wenn man die Sprache nicht kennt.&lt;br /&gt;
* Guter Code ist kurz und einfach.&lt;br /&gt;
* Bei gutem Code muss man nicht lange darüber um ihn zu verstehen.&lt;br /&gt;
* Guter Code ist in sich geschlossen.&lt;br /&gt;
* Guter Code lässt sich einfach ändern und anpassen.&lt;br /&gt;
* Guter Code hat keine unnötigen Wiederholungen.&lt;br /&gt;
* Guter Code tut das, was er soll.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Stichworte: Einfachheit, Lesbarkeit, Modularität, Schichten, Design, Effizienz, Eleganz, und Klarheit&lt;br /&gt;
&lt;br /&gt;
Bezeichner (Variablen-, Funktionen): Eindeutig, Selbsterklärend,&lt;br /&gt;
Konventionen: Ungarische Notation (Apps Hungarian, Systems Hungarian)&lt;br /&gt;
&lt;br /&gt;
Versionsverwaltung kann hilfreich sein um guten Code zu erzeugen.&lt;/div&gt;</summary>
		<author><name>DStulle</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=C-Kurs_2009/Vortrag07&amp;diff=12566</id>
		<title>C-Kurs 2009/Vortrag07</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=C-Kurs_2009/Vortrag07&amp;diff=12566"/>
		<updated>2009-09-23T20:47:13Z</updated>

		<summary type="html">&lt;p&gt;DStulle: /* Guter Code */ Gedanken ausgelagert&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Guter Code =&lt;br /&gt;
&lt;br /&gt;
Vortragende: '''Daniel S.''' &amp;lt;dstulle gmx.de&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=== Themen ===&lt;br /&gt;
* Guter Code&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Folien ===&lt;br /&gt;
* [http://docs.freitagsrunde.org/Veranstaltungen/ckurs_2009/vorlesungen/07-guter-code/c-kurs-guter-code-sturm.pdf c-kurs-guter-code-sturm.pdf] (Alpha Version)&lt;br /&gt;
&lt;br /&gt;
=== Aufgaben ===&lt;br /&gt;
&lt;br /&gt;
==== Ein paar Gedanken ====&lt;br /&gt;
Die aufgaben sollten im Team gelöst werden, bzw als interaktion zwischen mehreren Teilnehmern. Kommunikation sollte irgendwie eine rolle spielen.&lt;br /&gt;
&lt;br /&gt;
=== Mitschnitt ===&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:CKurs]]&lt;/div&gt;</summary>
		<author><name>DStulle</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=C-Kurs/Code_Layout/Musterl%C3%B6sung&amp;diff=12561</id>
		<title>C-Kurs/Code Layout/Musterlösung</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=C-Kurs/Code_Layout/Musterl%C3%B6sung&amp;diff=12561"/>
		<updated>2009-09-23T13:35:00Z</updated>

		<summary type="html">&lt;p&gt;DStulle: Einzeilige Lösung hinzugefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[http://docs.freitagsrunde.org/Veranstaltungen/ckurs_2009/loesungen/sum_refactor_done.c sum_refactor_done.c]&lt;br /&gt;
&lt;br /&gt;
[http://docs.freitagsrunde.org/Veranstaltungen/ckurs_2009/loesungen/fac_refactor_done.c fac_refactor_done.c]&lt;br /&gt;
&lt;br /&gt;
Alternativ könnte man auch nur eine Zeiel nutzen:&lt;br /&gt;
&lt;br /&gt;
 int faculty(int n){&lt;br /&gt;
     return 1==n ? 1 : n*faculty(n-1);&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>DStulle</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=C-Kurs/BubbleSortDebug/Musterl%C3%B6sung&amp;diff=12560</id>
		<title>C-Kurs/BubbleSortDebug/Musterlösung</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=C-Kurs/BubbleSortDebug/Musterl%C3%B6sung&amp;diff=12560"/>
		<updated>2009-09-23T13:26:29Z</updated>

		<summary type="html">&lt;p&gt;DStulle: Zeilennummern entfernt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Der erste Bug verursacht einen Segmentation fault oder eine falsche Ausgabe. Er befindet sich in Zeile 23. Die Abbruchbedingung ist j &amp;lt; 5, dass heisst j geht bis 4. Der darauffolgende Test greift durch j+1 auf das 6. Element in dem Array gibt, obwohl es nur 5 gibt. cItems gibt muss auf (cItems-1) geändert werden, damit es funktioniert.&lt;br /&gt;
&lt;br /&gt;
Der zweite Bug verursacht einen vorzeitigen Abbruch der äußeren for-Schleife (Zeile 23), wodurch das array nicht komplett sortiert wird. in Zeile 36 wird citems dekrementiert. Dadurch wird auch die Abbruchbedingung verändert.&lt;br /&gt;
Es gibt zwei Methoden diesen Bug zu beheben:&lt;br /&gt;
1. Einfach: Zeile 36 entfernen. Allerdings ist Bubblesort jetzt noch ineffizienter&lt;br /&gt;
2. cItems in Zeile 26 und 36 durch ein neue ersetzen, welche verhindert das cItems konstant bleibt.&lt;br /&gt;
&lt;br /&gt;
Korrigierter Code:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 #include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 typedef struct&lt;br /&gt;
 {&lt;br /&gt;
    char *data;&lt;br /&gt;
    int key;&lt;br /&gt;
 } item;&lt;br /&gt;
&lt;br /&gt;
 item array[] =&lt;br /&gt;
 {&lt;br /&gt;
     {&amp;quot;bill&amp;quot;, 3},&lt;br /&gt;
     {&amp;quot;neil&amp;quot;, 4},&lt;br /&gt;
     {&amp;quot;john&amp;quot;, 2},&lt;br /&gt;
     {&amp;quot;rick&amp;quot;, 5},&lt;br /&gt;
     {&amp;quot;alex&amp;quot;, 1},&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 void sort(item *paItems, unsigned cItems)&lt;br /&gt;
 {&lt;br /&gt;
     int i = 0, j = 0;&lt;br /&gt;
     int s = 1;&lt;br /&gt;
     int cLeft = cItems - 1;&lt;br /&gt;
     for (i = 0; i &amp;lt; cItems &amp;amp;&amp;amp; s != 0; i++)&lt;br /&gt;
     {&lt;br /&gt;
         s = 0;&lt;br /&gt;
         for (j = 0; j &amp;lt; cLeft; j++)&lt;br /&gt;
         {&lt;br /&gt;
             if (paItems[j].key &amp;gt; paItems[j+1].key)&lt;br /&gt;
             {&lt;br /&gt;
                 item Temp = paItems[j];&lt;br /&gt;
                 paItems[j] = paItems[j+1];&lt;br /&gt;
                 paItems[j+1] = Temp;&lt;br /&gt;
                 s++;&lt;br /&gt;
             }&lt;br /&gt;
         }&lt;br /&gt;
         cLeft--;&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 int main(void)&lt;br /&gt;
 {&lt;br /&gt;
     int i = 0;&lt;br /&gt;
&lt;br /&gt;
     sort(array, 5);&lt;br /&gt;
     for (i = 0; i &amp;lt; 5; i++)&lt;br /&gt;
     {&lt;br /&gt;
         printf(&amp;quot;array[%d] == {%s, %d}\n&amp;quot;,&lt;br /&gt;
                i, array[i].data, array[i].key);&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>DStulle</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=C-Kurs/Code_Layout&amp;diff=12559</id>
		<title>C-Kurs/Code Layout</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=C-Kurs/Code_Layout&amp;diff=12559"/>
		<updated>2009-09-23T13:17:04Z</updated>

		<summary type="html">&lt;p&gt;DStulle: typos&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Aufgabenstellung =&lt;br /&gt;
&lt;br /&gt;
In dieser Aufgabe sind einige Codeschnipsel gegeben die zwar funktionieren, aber etwas unübersichtlich oder umständlich geschrieben sind. Deine Aufgabe ist es diese so um zu schreiben, dass sie übersichtlicher und einfacher sind. Vergleiche die Ergebnisse mit deinem Nachbarn und sprecht über eure Ergebnisse.&lt;br /&gt;
&lt;br /&gt;
== sum.c ==&lt;br /&gt;
&lt;br /&gt;
In der Funktion sum hat sich eine for-Schleife versteckt. Schreibe die Funktion so um, dass sie übersichtlicher ist. Gib den Variablen bei dieser Gelegenheit selbsterklärende Namen.&lt;br /&gt;
&lt;br /&gt;
 #define klaus jonny&lt;br /&gt;
 &lt;br /&gt;
 /**&lt;br /&gt;
  * Berechnet die summe der Zahlen im übergebenen array&lt;br /&gt;
  * @breite array mit den Zahlen&lt;br /&gt;
  * @hoehe länge des arrays&lt;br /&gt;
  */&lt;br /&gt;
 int sum(int *breiTee, int hoehe)&lt;br /&gt;
 {&lt;br /&gt;
 	int vorgabe = 0;&lt;br /&gt;
 	int i = 1;&lt;br /&gt;
 	do&lt;br /&gt;
 	{&lt;br /&gt;
 		int klaus = vorgabe + breiTee[i-1];&lt;br /&gt;
 		vorgabe = jonny;&lt;br /&gt;
 		i = i + 1;&lt;br /&gt;
 	} while (i &amp;lt;= hoehe);&lt;br /&gt;
 &lt;br /&gt;
 	return vorgabe;&lt;br /&gt;
 } &lt;br /&gt;
&lt;br /&gt;
Hier ist die Vorlage: [[http://docs.freitagsrunde.org/Veranstaltungen/ckurs_2009/vorgaben/sum_refactor.c sum_refactor.c]]&lt;br /&gt;
&lt;br /&gt;
== fac.c ==&lt;br /&gt;
&lt;br /&gt;
Die Fakultät kann auch Rekursiv berechnet werden, allerdings könnte man das auch bequem in zwei Zeilen machen, ohne dabei unübersichtlich zu werden.&lt;br /&gt;
&lt;br /&gt;
 /**&lt;br /&gt;
  * Brerechnet die Fakultät&lt;br /&gt;
  * @n Zahl von der die Fakultät berechnet werden soll&lt;br /&gt;
  * @return Fakultät von n&lt;br /&gt;
  */&lt;br /&gt;
 int faculty(int n){&lt;br /&gt;
   if (n &amp;lt; 2) return 1;&lt;br /&gt;
 &lt;br /&gt;
   if(n == 2)&lt;br /&gt;
   {&lt;br /&gt;
       return 2;&lt;br /&gt;
   } else {&lt;br /&gt;
     int m;&lt;br /&gt;
     m = n*faculty(n-1);&lt;br /&gt;
     return m;&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Hier ist die Vorlage: [[http://docs.freitagsrunde.org/Veranstaltungen/ckurs_2009/vorgaben/fac_refactor.c fac_refactor.c]]&lt;br /&gt;
&lt;br /&gt;
= Kommentare =&lt;/div&gt;</summary>
		<author><name>DStulle</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=C-Kurs_2009/Vortrag06&amp;diff=12557</id>
		<title>C-Kurs 2009/Vortrag06</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=C-Kurs_2009/Vortrag06&amp;diff=12557"/>
		<updated>2009-09-23T12:48:54Z</updated>

		<summary type="html">&lt;p&gt;DStulle: /* Debugging I */ irgend eine gdb reference, die ich irgendwo gefunden habe verlinkt.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Debugging I =&lt;br /&gt;
&lt;br /&gt;
Vortragender: '''Alex E.''' &amp;lt;aeichner freitagsrunde.org&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=== Themen ===&lt;br /&gt;
* Arten von Bugs&lt;br /&gt;
* beliebte Fehler in C&lt;br /&gt;
* Möglichkeiten zum Debuggen&lt;br /&gt;
* GDB (GNU Debugger)&lt;br /&gt;
&lt;br /&gt;
=== Folien ===&lt;br /&gt;
* [http://docs.freitagsrunde.org/Veranstaltungen/ckurs_2009/vorlesungen/06-debugging-1/06-debugging.pdf Folien]&lt;br /&gt;
&lt;br /&gt;
=== Mitschnitt ===&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:CKurs]]&lt;br /&gt;
&lt;br /&gt;
=== Material ===&lt;br /&gt;
&lt;br /&gt;
[http://users.ece.utexas.edu/~adnan/gdb-refcard.pdf GDB-Reference]&lt;/div&gt;</summary>
		<author><name>DStulle</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=C-Kurs_2009/Vortrag07&amp;diff=12556</id>
		<title>C-Kurs 2009/Vortrag07</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=C-Kurs_2009/Vortrag07&amp;diff=12556"/>
		<updated>2009-09-23T12:39:11Z</updated>

		<summary type="html">&lt;p&gt;DStulle: /* Folien */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Guter Code =&lt;br /&gt;
&lt;br /&gt;
Vortragende: '''Daniel S.''' &amp;lt;dstulle gmx.de&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=== Themen ===&lt;br /&gt;
* Guter Code&lt;br /&gt;
&lt;br /&gt;
==== Ein paar Genanken ====&lt;br /&gt;
&lt;br /&gt;
Guter Code? Was ist gut?&lt;br /&gt;
Die frage ob etwas gut oder schlecht ist, definiert sich über das Ziel, dass man hat.&lt;br /&gt;
&lt;br /&gt;
Erst wenn man sich darüber im klaren ist, was man für ein Ziel hat kann man sich die Frage stellen ob etwas gut ist. z.B.: was für ein Auto ist gut? Ein Bus, ein Lastwagen, ein Rennwagen? Es kommt ganz darauf an ob man viele Leute mitnehmen will, viel Krams mitnehmen will oder einfach schnell sein will.&lt;br /&gt;
&lt;br /&gt;
Was will man üblicher weise erreichen wenn man Programmiert.&lt;br /&gt;
Zunächst einmal will man der Maschine sagen was sie tun soll. Aber ist das alles?&lt;br /&gt;
&lt;br /&gt;
Meistens will man den Code selber später nochmal lesen und verstehen. Also schreibt man ihn auch für sich.&lt;br /&gt;
&lt;br /&gt;
Sehr oft schreibt man den Code mit anderen zusammen oder als Teil eines Projektes mit Anderen. Also schreibt man ihn auch für andere.&lt;br /&gt;
&lt;br /&gt;
Warum ist guter Code, gutes Layout wichtig?&lt;br /&gt;
&lt;br /&gt;
Ihr schreibt den Programmcode nicht für den Computer sondern für euch und andere Menschen. Sonst könntet ihr das ganze gleich in Assembler rein hacken und es dann vergessen.&lt;br /&gt;
&lt;br /&gt;
Programmieren uns Softwareengineering ist bis auf wenige ausnahmen ein sehr kommunikativer und zwischenmenschlicher Prozess. Deswegen haben Informatiker auch eine so hohe Sozialkompetenz (Kein Scherz)&lt;br /&gt;
&lt;br /&gt;
Ihr schreibt den Code, damit ihn andere Leute oder ihr selber später mal lesen könnt. Programmieren ist eine besondere Art der Kommunikation. Genau wie die Menschliche Sprache ein Medium für Informationen, Gedanken und Konzepten ist, wird die Programmiersprache genau dazu benutzt mit der Besonderheit dass sie sogar ein Computer verstehen kann, aber das ist eigentlich nebensächlich ;-).&lt;br /&gt;
&lt;br /&gt;
Guter Code ist sehr hilfreich beim Auffinden von Fehlern.&lt;br /&gt;
&lt;br /&gt;
Guter Code lässt sich leichter ändern und anpassen.&lt;br /&gt;
&lt;br /&gt;
Ihr seht also es ist wichtig sich beim Schreiben von Code an bestimmte Regeln zu halten. Ein Programm zu schreiben was nur der Compiler versteht uns sonst niemand anders ist keine Kunst und obendrein nutzlos.&lt;br /&gt;
&lt;br /&gt;
Die frage ob ein Code gut ist oder nicht, kann man nicht so leicht beantworten, da es kein Maß gibt, und keine Methode um dies zu ermitteln.&lt;br /&gt;
&lt;br /&gt;
Für guten Code braucht man ein Gutes design. Guter Code fängt beim design der Funktionen, Prozeduren, Modulen, Strukturen und dessen Zusammenspiel an.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Verschiedene Stufen der Code Qualität:&lt;br /&gt;
* Laufender Code (Compiler)&lt;br /&gt;
* Richtiger Code (Beweise / Test)&lt;br /&gt;
* Guter Code (Intuition / Geschmack)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Woran erkennt man guten Code?&lt;br /&gt;
&lt;br /&gt;
* Guter Code ist einfach zu lesen und leicht zu verstehen, auch wenn man die Sprache nicht kennt.&lt;br /&gt;
* Guter Code ist kurz und einfach.&lt;br /&gt;
* Bei gutem Code muss man nicht lange darüber um ihn zu verstehen.&lt;br /&gt;
* Guter Code ist in sich geschlossen.&lt;br /&gt;
* Guter Code lässt sich einfach ändern und anpassen.&lt;br /&gt;
* Guter Code hat keine unnötigen Wiederholungen.&lt;br /&gt;
* Guter Code tut das, was er soll.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Stichworte: Einfachheit, Lesbarkeit, Modularität, Schichten, Design, Effizienz, Eleganz, und Klarheit&lt;br /&gt;
&lt;br /&gt;
Bezeichner (Variablen-, Funktionen): Eindeutig, Selbsterklärend,&lt;br /&gt;
Konventionen: Ungarische Notation (Apps Hungarian, Systems Hungarian)&lt;br /&gt;
&lt;br /&gt;
Versionsverwaltung kann hilfreich sein um guten Code zu erzeugen.&lt;br /&gt;
&lt;br /&gt;
=== Folien ===&lt;br /&gt;
* [http://docs.freitagsrunde.org/Veranstaltungen/ckurs_2009/vorlesungen/07-guter-code/c-kurs-guter-code-sturm.pdf c-kurs-guter-code-sturm.pdf] (Alpha Version)&lt;br /&gt;
&lt;br /&gt;
=== Aufgaben ===&lt;br /&gt;
&lt;br /&gt;
==== Ein paar Gedanken ====&lt;br /&gt;
Die aufgaben sollten im Team gelöst werden, bzw als interaktion zwischen mehreren Teilnehmern. Kommunikation sollte irgendwie eine rolle spielen.&lt;br /&gt;
&lt;br /&gt;
=== Mitschnitt ===&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:CKurs]]&lt;/div&gt;</summary>
		<author><name>DStulle</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=C-Kurs/Code_Layout&amp;diff=12539</id>
		<title>C-Kurs/Code Layout</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=C-Kurs/Code_Layout&amp;diff=12539"/>
		<updated>2009-09-23T08:47:38Z</updated>

		<summary type="html">&lt;p&gt;DStulle: /* fac.c */ Kommentar hinzugefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Aufgabenstellung =&lt;br /&gt;
&lt;br /&gt;
In dieser Aufgabe sind einige Codeschnipsel gegeben die zwar funktionieren, aber etwas unübersichtlich oder umständlich geschrieben sind. Deine Aufgabe ist es diese so um zu schreiben, dass sie übersichtlicher und einfacher sind. Vergleiche die Ergebnisse mit deinem Nachbarn und sprecht über eure Ergebnisse.&lt;br /&gt;
&lt;br /&gt;
== sum.c ==&lt;br /&gt;
&lt;br /&gt;
In der Funktion sum hat sich eine for-Schleife versteckt. Schreibe die Funktion so um, dass sie übersichtlicher ist. Gib den variablen bei dieser gelegenheit selbsterklärende Namen&lt;br /&gt;
&lt;br /&gt;
 #define klaus jonny&lt;br /&gt;
 &lt;br /&gt;
 /**&lt;br /&gt;
  * Berechnet die summe der Zahlen im übergebenen array&lt;br /&gt;
  * @breite array mit den Zahlen&lt;br /&gt;
  * @hoehe länge des arrays&lt;br /&gt;
  */&lt;br /&gt;
 int sum(int *breiTee, int hoehe)&lt;br /&gt;
 {&lt;br /&gt;
 	int vorgabe = 0;&lt;br /&gt;
 	int i = 1;&lt;br /&gt;
 	do&lt;br /&gt;
 	{&lt;br /&gt;
 		int klaus = vorgabe + breiTee[i-1];&lt;br /&gt;
 		vorgabe = jonny;&lt;br /&gt;
 		i = i + 1;&lt;br /&gt;
 	} while (i &amp;lt;= hoehe);&lt;br /&gt;
 &lt;br /&gt;
 	return vorgabe;&lt;br /&gt;
 } &lt;br /&gt;
&lt;br /&gt;
Hier ist die Vorlage: [[http://docs.freitagsrunde.org/Veranstaltungen/ckurs_2009/vorgaben/sum_refactor.c sum_refactor.c]]&lt;br /&gt;
&lt;br /&gt;
== fac.c ==&lt;br /&gt;
&lt;br /&gt;
Die Fakultät kann auch Rekursiv berechnet werden, allerdings könnte man das auch bequem in zwei Zeilen machen, ohne dabei unübersichtlich zu werden.&lt;br /&gt;
&lt;br /&gt;
 /**&lt;br /&gt;
  * Brerechnet die Fakultät&lt;br /&gt;
  * @n Zahl von der die Fakultät berechnet werden soll&lt;br /&gt;
  * @return Fakultät von n&lt;br /&gt;
  */&lt;br /&gt;
 int faculty(int n){&lt;br /&gt;
   if (n &amp;lt; 2) return 1;&lt;br /&gt;
 &lt;br /&gt;
   if(n == 2)&lt;br /&gt;
   {&lt;br /&gt;
       return 2;&lt;br /&gt;
   } else {&lt;br /&gt;
     int m;&lt;br /&gt;
     m = n*faculty(n-1);&lt;br /&gt;
     return m;&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Hier ist die Vorlage: [[http://docs.freitagsrunde.org/Veranstaltungen/ckurs_2009/vorgaben/fac_refactor.c fac_refactor.c]]&lt;br /&gt;
&lt;br /&gt;
= Kommentare =&lt;/div&gt;</summary>
		<author><name>DStulle</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=C-Kurs/Code_Layout&amp;diff=12538</id>
		<title>C-Kurs/Code Layout</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=C-Kurs/Code_Layout&amp;diff=12538"/>
		<updated>2009-09-23T08:45:45Z</updated>

		<summary type="html">&lt;p&gt;DStulle: /* Aufgabenstellung */ vorgabe für fac.c verlinkt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Aufgabenstellung =&lt;br /&gt;
&lt;br /&gt;
In dieser Aufgabe sind einige Codeschnipsel gegeben die zwar funktionieren, aber etwas unübersichtlich oder umständlich geschrieben sind. Deine Aufgabe ist es diese so um zu schreiben, dass sie übersichtlicher und einfacher sind. Vergleiche die Ergebnisse mit deinem Nachbarn und sprecht über eure Ergebnisse.&lt;br /&gt;
&lt;br /&gt;
== sum.c ==&lt;br /&gt;
&lt;br /&gt;
In der Funktion sum hat sich eine for-Schleife versteckt. Schreibe die Funktion so um, dass sie übersichtlicher ist. Gib den variablen bei dieser gelegenheit selbsterklärende Namen&lt;br /&gt;
&lt;br /&gt;
 #define klaus jonny&lt;br /&gt;
 &lt;br /&gt;
 /**&lt;br /&gt;
  * Berechnet die summe der Zahlen im übergebenen array&lt;br /&gt;
  * @breite array mit den Zahlen&lt;br /&gt;
  * @hoehe länge des arrays&lt;br /&gt;
  */&lt;br /&gt;
 int sum(int *breiTee, int hoehe)&lt;br /&gt;
 {&lt;br /&gt;
 	int vorgabe = 0;&lt;br /&gt;
 	int i = 1;&lt;br /&gt;
 	do&lt;br /&gt;
 	{&lt;br /&gt;
 		int klaus = vorgabe + breiTee[i-1];&lt;br /&gt;
 		vorgabe = jonny;&lt;br /&gt;
 		i = i + 1;&lt;br /&gt;
 	} while (i &amp;lt;= hoehe);&lt;br /&gt;
 &lt;br /&gt;
 	return vorgabe;&lt;br /&gt;
 } &lt;br /&gt;
&lt;br /&gt;
Hier ist die Vorlage: [[http://docs.freitagsrunde.org/Veranstaltungen/ckurs_2009/vorgaben/sum_refactor.c sum_refactor.c]]&lt;br /&gt;
&lt;br /&gt;
== fac.c ==&lt;br /&gt;
&lt;br /&gt;
Die Fakultät kann auch Rekursiv berechnet werden, allerdings könnte man das auch bequem in zwei Zeilen machen, ohne dabei unübersichtlich zu werden.&lt;br /&gt;
&lt;br /&gt;
 int faculty(int n){&lt;br /&gt;
   if (n &amp;lt; 2) return 1;&lt;br /&gt;
 &lt;br /&gt;
   if(n == 2)&lt;br /&gt;
   {&lt;br /&gt;
       return 2;&lt;br /&gt;
   } else {&lt;br /&gt;
     int m;&lt;br /&gt;
     m = n*faculty(n-1);&lt;br /&gt;
     return m;&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Hier ist die Vorlage: [[http://docs.freitagsrunde.org/Veranstaltungen/ckurs_2009/vorgaben/fac_refactor.c fac_refactor.c]]&lt;br /&gt;
&lt;br /&gt;
= Kommentare =&lt;/div&gt;</summary>
		<author><name>DStulle</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=C-Kurs/Code_Layout/Musterl%C3%B6sung&amp;diff=12537</id>
		<title>C-Kurs/Code Layout/Musterlösung</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=C-Kurs/Code_Layout/Musterl%C3%B6sung&amp;diff=12537"/>
		<updated>2009-09-23T08:44:10Z</updated>

		<summary type="html">&lt;p&gt;DStulle: Überflüssige Klammern entfernt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[http://docs.freitagsrunde.org/Veranstaltungen/ckurs_2009/loesungen/sum_refactor_done.c sum_refactor_done.c]&lt;br /&gt;
&lt;br /&gt;
[http://docs.freitagsrunde.org/Veranstaltungen/ckurs_2009/loesungen/fac_refactor_done.c fac_refactor_done.c]&lt;/div&gt;</summary>
		<author><name>DStulle</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=C-Kurs/Code_Layout/Musterl%C3%B6sung&amp;diff=12536</id>
		<title>C-Kurs/Code Layout/Musterlösung</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=C-Kurs/Code_Layout/Musterl%C3%B6sung&amp;diff=12536"/>
		<updated>2009-09-23T08:43:34Z</updated>

		<summary type="html">&lt;p&gt;DStulle: Lösungsdateien verlinkt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[http://docs.freitagsrunde.org/Veranstaltungen/ckurs_2009/loesungen/sum_refactor_done.c sum_refactor_done.c]]&lt;br /&gt;
&lt;br /&gt;
[[http://docs.freitagsrunde.org/Veranstaltungen/ckurs_2009/loesungen/fac_refactor_done.c fac_refactor_done.c]]&lt;/div&gt;</summary>
		<author><name>DStulle</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=C-Kurs/%C3%9Cbungsaufgaben&amp;diff=12534</id>
		<title>C-Kurs/Übungsaufgaben</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=C-Kurs/%C3%9Cbungsaufgaben&amp;diff=12534"/>
		<updated>2009-09-23T08:17:09Z</updated>

		<summary type="html">&lt;p&gt;DStulle: /* Die Aufgaben */ Musterlösungen zur Vorlesung 4. unlocked&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;
 | [[Ckurs2009/Base64/Musterlösung | Base64]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/EingabeAusgabe | Ein- und Ausgabe]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Einlesen von Benutzereingaben&amp;lt;br&amp;gt;Ausgabe derselben&lt;br /&gt;
 | [[Benutzer:Mario|Mario]]&lt;br /&gt;
 | nion&lt;br /&gt;
 | [[Ckurs2009/EingabeAusgabe/Musterlösung | Ein- und Ausgabe]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Taschenrechner | Taschenrechner]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Eingabe+Ausgabe&amp;lt;br&amp;gt;Mathematische Operatoren&lt;br /&gt;
 | [[Benutzer:Mario|Mario]]&lt;br /&gt;
 | [[Benutzer:Tkroenert|TKroenert]]&lt;br /&gt;
 | [[Ckurs2009/Taschenrechner/Musterlösung | Taschenrechner]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/VerschachtelteSchleifen | Verschachtelte Schleifen]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Umgang mit mehreren verschachtelten Schleifen&lt;br /&gt;
 | [[Benutzer:Dank|Daniel K.]]&lt;br /&gt;
 | AlexanderK&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 ''2.0'']]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |8&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Knobeln&amp;lt;br&amp;gt;Komplexes Aufgaben lösen&lt;br /&gt;
 | [[Benutzer:Mario|Mario]]&lt;br /&gt;
 | Martin K.&lt;br /&gt;
 | [[Ckurs2009/Taschenrechner2.0/Musterlösung | Taschenrechner ''2.0'']]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Call by reference | Call by reference]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Einfache Anwendung von &amp;amp;/*&lt;br /&gt;
 | sping&lt;br /&gt;
 | nion&lt;br /&gt;
 | [[Ckurs2009/Call by reference/Musterlösung | Call by reference]]&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;
 | [[Ckurs2009/Text processing/Musterlösung | Text processing]]&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;
 | &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;
 | [[Ckurs2009/Matrizenmultiplikation/Musterlösung | Matrizenmultiplikation]]&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;
 | [[Ckurs2009/Arrayuebergabe/Musterlösung | Arrayuebergabe]]&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;
 | [[Ckurs2009/Studentendatenbank/Musterlösung | Studentendatenbank]]&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;
 | &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;
 | [[Ckurs2009/Zahlen_sagen/Musterlösung | Zahlen sagen]]&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/BubbleSortDebug | BubbleSort Debugging]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; | 5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; | 6. VL&lt;br /&gt;
 | Debuggen eines Programmes mit gdb&lt;br /&gt;
 | aeichner&lt;br /&gt;
 |&lt;br /&gt;
 | vorhanden&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Debug | Debugging]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; | 1-8&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; | 6. VL&lt;br /&gt;
 | Debuggen einer Anwendung nach Wahl&lt;br /&gt;
 | aeichner&lt;br /&gt;
 |&lt;br /&gt;
 | gibt es nicht&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; |5-9&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |7. VL&lt;br /&gt;
 | Wie verbessere ich den Quellcode eines Programmes.&lt;br /&gt;
 | Daniel&lt;br /&gt;
 | &lt;br /&gt;
 | 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;
== Kleine und große Probleme ==&lt;br /&gt;
&lt;br /&gt;
* Die Tubit-Accounts haben nicht /bin/bash als shell, so dass die &amp;lt;strong&amp;gt;Cursortasten&amp;lt;/strong&amp;gt; nicht funktionieren. Workaround: als erstes Kommando 'bash' eingeben, man sieht dann auch in welchem Verzeichnis man gerade ist.&lt;br /&gt;
* wenn man nur den Promt 'bash-0.12' oder so erhält, also ohne das Verzeichnis in dem man ist, folgendes Kommando eingeben: &amp;lt;tt&amp;gt;export PS1='\u@\h:\w$ '&amp;lt;/tt&amp;gt; oder zum dauerhaften Speichern: &amp;lt;tt&amp;gt; echo &amp;quot;export PS1='\u@\h:\w$ '&amp;quot; &amp;gt;&amp;gt; ~/.bashrc &amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Musterlösungen ==&lt;br /&gt;
Die Lösungen zu den Aufgaben werden nach den jeweiligen Übungen hier veröffentlicht. Falls dies nicht geschieht, bitte den zuständigen Tutor fragen.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[Ckurs2009/Feedback|Feedback zum Kurs 2009]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:CKurs]]&lt;br /&gt;
[[Kategorie:CKurs Aufgaben]]&lt;/div&gt;</summary>
		<author><name>DStulle</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=C-Kurs_2009/Vortrag07&amp;diff=12527</id>
		<title>C-Kurs 2009/Vortrag07</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=C-Kurs_2009/Vortrag07&amp;diff=12527"/>
		<updated>2009-09-23T01:55:21Z</updated>

		<summary type="html">&lt;p&gt;DStulle: /* Folien */ Folien verlinkt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Guter Code =&lt;br /&gt;
&lt;br /&gt;
Vortragende: '''Daniel S.''' &amp;lt;dstulle gmx.de&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=== Themen ===&lt;br /&gt;
* Guter Code&lt;br /&gt;
&lt;br /&gt;
==== Ein paar Genanken ====&lt;br /&gt;
&lt;br /&gt;
Guter Code? Was ist gut?&lt;br /&gt;
Die frage ob etwas gut oder schlecht ist, definiert sich über das Ziel, dass man hat.&lt;br /&gt;
&lt;br /&gt;
Erst wenn man sich darüber im klaren ist, was man für ein Ziel hat kann man sich die Frage stellen ob etwas gut ist. z.B.: was für ein Auto ist gut? Ein Bus, ein Lastwagen, ein Rennwagen? Es kommt ganz darauf an ob man viele Leute mitnehmen will, viel Krams mitnehmen will oder einfach schnell sein will.&lt;br /&gt;
&lt;br /&gt;
Was will man üblicher weise erreichen wenn man Programmiert.&lt;br /&gt;
Zunächst einmal will man der Maschine sagen was sie tun soll. Aber ist das alles?&lt;br /&gt;
&lt;br /&gt;
Meistens will man den Code selber später nochmal lesen und verstehen. Also schreibt man ihn auch für sich.&lt;br /&gt;
&lt;br /&gt;
Sehr oft schreibt man den Code mit anderen zusammen oder als Teil eines Projektes mit Anderen. Also schreibt man ihn auch für andere.&lt;br /&gt;
&lt;br /&gt;
Warum ist guter Code, gutes Layout wichtig?&lt;br /&gt;
&lt;br /&gt;
Ihr schreibt den Programmcode nicht für den Computer sondern für euch und andere Menschen. Sonst könntet ihr das ganze gleich in Assembler rein hacken und es dann vergessen.&lt;br /&gt;
&lt;br /&gt;
Programmieren uns Softwareengineering ist bis auf wenige ausnahmen ein sehr kommunikativer und zwischenmenschlicher Prozess. Deswegen haben Informatiker auch eine so hohe Sozialkompetenz (Kein Scherz)&lt;br /&gt;
&lt;br /&gt;
Ihr schreibt den Code, damit ihn andere Leute oder ihr selber später mal lesen könnt. Programmieren ist eine besondere Art der Kommunikation. Genau wie die Menschliche Sprache ein Medium für Informationen, Gedanken und Konzepten ist, wird die Programmiersprache genau dazu benutzt mit der Besonderheit dass sie sogar ein Computer verstehen kann, aber das ist eigentlich nebensächlich ;-).&lt;br /&gt;
&lt;br /&gt;
Guter Code ist sehr hilfreich beim Auffinden von Fehlern.&lt;br /&gt;
&lt;br /&gt;
Guter Code lässt sich leichter ändern und anpassen.&lt;br /&gt;
&lt;br /&gt;
Ihr seht also es ist wichtig sich beim Schreiben von Code an bestimmte Regeln zu halten. Ein Programm zu schreiben was nur der Compiler versteht uns sonst niemand anders ist keine Kunst und obendrein nutzlos.&lt;br /&gt;
&lt;br /&gt;
Die frage ob ein Code gut ist oder nicht, kann man nicht so leicht beantworten, da es kein Maß gibt, und keine Methode um dies zu ermitteln.&lt;br /&gt;
&lt;br /&gt;
Für guten Code braucht man ein Gutes design. Guter Code fängt beim design der Funktionen, Prozeduren, Modulen, Strukturen und dessen Zusammenspiel an.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Verschiedene Stufen der Code Qualität:&lt;br /&gt;
* Laufender Code (Compiler)&lt;br /&gt;
* Richtiger Code (Beweise / Test)&lt;br /&gt;
* Guter Code (Intuition / Geschmack)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Woran erkennt man guten Code?&lt;br /&gt;
&lt;br /&gt;
* Guter Code ist einfach zu lesen und leicht zu verstehen, auch wenn man die Sprache nicht kennt.&lt;br /&gt;
* Guter Code ist kurz und einfach.&lt;br /&gt;
* Bei gutem Code muss man nicht lange darüber um ihn zu verstehen.&lt;br /&gt;
* Guter Code ist in sich geschlossen.&lt;br /&gt;
* Guter Code lässt sich einfach ändern und anpassen.&lt;br /&gt;
* Guter Code hat keine unnötigen Wiederholungen.&lt;br /&gt;
* Guter Code tut das, was er soll.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Stichworte: Einfachheit, Lesbarkeit, Modularität, Schichten, Design, Effizienz, Eleganz, und Klarheit&lt;br /&gt;
&lt;br /&gt;
Bezeichner (Variablen-, Funktionen): Eindeutig, Selbsterklärend,&lt;br /&gt;
Konventionen: Ungarische Notation (Apps Hungarian, Systems Hungarian)&lt;br /&gt;
&lt;br /&gt;
Versionsverwaltung kann hilfreich sein um guten Code zu erzeugen.&lt;br /&gt;
&lt;br /&gt;
=== Folien ===&lt;br /&gt;
* [http://docs.freitagsrunde.org/Veranstaltungen/ckurs_2009/vorlesungen/07-guter-code/c-kurs-guter-code-sturm.pdf c-kurs-guter-code-sturm.pdf]&lt;br /&gt;
&lt;br /&gt;
=== Aufgaben ===&lt;br /&gt;
&lt;br /&gt;
==== Ein paar Gedanken ====&lt;br /&gt;
Die aufgaben sollten im Team gelöst werden, bzw als interaktion zwischen mehreren Teilnehmern. Kommunikation sollte irgendwie eine rolle spielen.&lt;br /&gt;
&lt;br /&gt;
=== Mitschnitt ===&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:CKurs]]&lt;/div&gt;</summary>
		<author><name>DStulle</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=C-Kurs/Refactoring&amp;diff=12523</id>
		<title>C-Kurs/Refactoring</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=C-Kurs/Refactoring&amp;diff=12523"/>
		<updated>2009-09-22T18:24:35Z</updated>

		<summary type="html">&lt;p&gt;DStulle: /* Teil 2 */ zusatzteil Markiert&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Teil 1 =&lt;br /&gt;
&lt;br /&gt;
Das gegebene Programm ist eine Hashtabelle. Leider ist es etwas unübersichtlich, da es eine Funktion enthält, die ca. 150 Zeilen lang ist. Schaffe mehr Übersicht indem du zusammengehörige Codefragmente oder mehrfach im Quelltext auftauchen in kleinere Funktionen auslagerst. Wie zum Beispiel diese:&lt;br /&gt;
&lt;br /&gt;
 static int calcHashKey(const char *pszHash);&lt;br /&gt;
 static PHASHITEM getItemFromHash(const char *pszHash);&lt;br /&gt;
 static void execGetHash(const char *pszHash);&lt;br /&gt;
 static void execRemoveHash(const char *pszHash);&lt;br /&gt;
 static void execInsertHash(const char *pszHash, char *pszData);&lt;br /&gt;
 static int parseCmd(const char *pszCmdLine);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Halte dich dabei an die Namenskonvention der [http://de.wikipedia.org/wiki/Ungarische_Notation Ungarischen Notation] und [http://de.wikipedia.org/wiki/Binnenmajuskel#Verwendung_in_Programmiersprachen Camel Case].&lt;br /&gt;
&lt;br /&gt;
Hier ist die Vorlage: [http://docs.freitagsrunde.org/Veranstaltungen/ckurs_2009/vorgaben/HashTableRefactor.c HashTableRefactor.c]&lt;br /&gt;
&lt;br /&gt;
= Teil 2 =&lt;br /&gt;
&lt;br /&gt;
Den Algorithmus zum Codieren eines Strings nach base64 aus einer anderen [[Ckurs2009/Base64|Aufgabe]] kann man auch noch etwas eleganter und knapper schreiben.&lt;br /&gt;
&lt;br /&gt;
Das Programm erwatet genau einen Kommandozeilenparameter und convertiert diesen nach Base64.&lt;br /&gt;
&lt;br /&gt;
 $ ./base64 &amp;quot;Das ist ein Test&amp;quot;&lt;br /&gt;
 RGFzIGlzdCBlaW4gVGVzdA==&lt;br /&gt;
&lt;br /&gt;
Hier ist die Vorlage: [http://docs.freitagsrunde.org/Veranstaltungen/ckurs_2009/vorgaben/base64_refactor.c base64_refactor.c]&lt;br /&gt;
&lt;br /&gt;
Schreibe eine Funktion encode_block(), die die vier gegebenen encode_*_output() Funktionen ersetzt.&lt;br /&gt;
&lt;br /&gt;
 /**&lt;br /&gt;
  * Encodes three input chars into four output chars based on the base64 scheme.&lt;br /&gt;
  * @param in chararray with input characters&lt;br /&gt;
  * @param out chararray where the output is written to&lt;br /&gt;
  * @param len number of chars to be used from input&lt;br /&gt;
  */&lt;br /&gt;
 void encode_block( unsigned char in[3], unsigned char out[4], int len )&lt;br /&gt;
 {&lt;br /&gt;
   /* ... */&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Ersetze die Aufrufe der vier Funktionen an den drei Stellen im Code durch einen Aufruf der Funktion encode_block().&lt;br /&gt;
&lt;br /&gt;
== Zusatz ==&lt;br /&gt;
&lt;br /&gt;
Vereinfache den Code so, dass die Funktion encode_block() nur einmal aufgerufen wird. Lagere den Algorithmus zum Codieren in eine Funktion encode() aus. Initialisierung und Benutzerinteraktion soll in der main() umgesetzt werden.&lt;br /&gt;
&lt;br /&gt;
 /**&lt;br /&gt;
  * Encodes the input string into an output string based on the base64 scheme.&lt;br /&gt;
  * @param length size of input string&lt;br /&gt;
  * @param input string with input characters&lt;br /&gt;
  * @param output string where the output is written to. It has to be long enough to hold the output&lt;br /&gt;
  */&lt;br /&gt;
 void encode(int length, char *input, char *output)&lt;br /&gt;
 {&lt;br /&gt;
   /* ... */&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>DStulle</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=C-Kurs/Code_Layout&amp;diff=12519</id>
		<title>C-Kurs/Code Layout</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=C-Kurs/Code_Layout&amp;diff=12519"/>
		<updated>2009-09-22T15:05:10Z</updated>

		<summary type="html">&lt;p&gt;DStulle: Aufgabenteil sum hinzugefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Aufgabenstellung =&lt;br /&gt;
&lt;br /&gt;
In dieser Aufgabe sind einige Codeschnipsel gegeben die zwar funktionieren, aber etwas unübersichtlich oder umständlich geschrieben sind. Deine Aufgabe ist es diese so um zu schreiben, dass sie übersichtlicher und einfacher sind. Vergleiche die Ergebnisse mit deinem Nachbarn und sprecht über eure Ergebnisse.&lt;br /&gt;
&lt;br /&gt;
== sum.c ==&lt;br /&gt;
&lt;br /&gt;
In der Funktion sum hat sich eine for-Schleife versteckt. Schreibe die Funktion so um, dass sie übersichtlicher ist. Gib den variablen bei dieser gelegenheit selbsterklärende Namen&lt;br /&gt;
&lt;br /&gt;
 #define klaus jonny&lt;br /&gt;
 &lt;br /&gt;
 /**&lt;br /&gt;
  * Berechnet die summe der Zahlen im übergebenen array&lt;br /&gt;
  * @breite array mit den Zahlen&lt;br /&gt;
  * @hoehe länge des arrays&lt;br /&gt;
  */&lt;br /&gt;
 int sum(int *breiTee, int hoehe)&lt;br /&gt;
 {&lt;br /&gt;
 	int vorgabe = 0;&lt;br /&gt;
 	int i = 1;&lt;br /&gt;
 	do&lt;br /&gt;
 	{&lt;br /&gt;
 		int klaus = vorgabe + breiTee[i-1];&lt;br /&gt;
 		vorgabe = jonny;&lt;br /&gt;
 		i = i + 1;&lt;br /&gt;
 	} while (i &amp;lt;= hoehe);&lt;br /&gt;
 &lt;br /&gt;
 	return vorgabe;&lt;br /&gt;
 } &lt;br /&gt;
&lt;br /&gt;
Hier ist die Vorlage: [[http://docs.freitagsrunde.org/Veranstaltungen/ckurs_2009/vorgaben/sum_refactor.c sum_refactor.c]]&lt;br /&gt;
&lt;br /&gt;
== fac.c ==&lt;br /&gt;
&lt;br /&gt;
Die Fakultät kann auch Rekursiv berechnet werden, allerdings könnte man das auch bequem in zwei Zeilen machen, ohne dabei unübersichtlich zu werden.&lt;br /&gt;
&lt;br /&gt;
 int faculty(int n){&lt;br /&gt;
   if (n &amp;lt; 2) return 1;&lt;br /&gt;
 &lt;br /&gt;
   if(n == 2)&lt;br /&gt;
   {&lt;br /&gt;
       return 2;&lt;br /&gt;
   } else {&lt;br /&gt;
     int m;&lt;br /&gt;
     m = n*faculty(n-1);&lt;br /&gt;
     return m;&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
= Kommentare =&lt;/div&gt;</summary>
		<author><name>DStulle</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=C-Kurs/%C3%9Cbungsaufgaben&amp;diff=12508</id>
		<title>C-Kurs/Übungsaufgaben</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=C-Kurs/%C3%9Cbungsaufgaben&amp;diff=12508"/>
		<updated>2009-09-22T12:59:39Z</updated>

		<summary type="html">&lt;p&gt;DStulle: /* Die Aufgaben */ vorhandene Musterlösungen verlinkt&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;
 | [[Ckurs2009/Base64/Musterlösung | Base64]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/EingabeAusgabe | Ein- und Ausgabe]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Einlesen von Benutzereingaben&amp;lt;br&amp;gt;Ausgabe derselben&lt;br /&gt;
 | [[Benutzer:Mario|Mario]]&lt;br /&gt;
 | nion&lt;br /&gt;
 | [[Ckurs2009/EingabeAusgabe/Musterlösung | Ein- und Ausgabe]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Taschenrechner | Taschenrechner]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Eingabe+Ausgabe&amp;lt;br&amp;gt;Mathematische Operatoren&lt;br /&gt;
 | [[Benutzer:Mario|Mario]]&lt;br /&gt;
 | [[Benutzer:Tkroenert|TKroenert]]&lt;br /&gt;
 | [[Ckurs2009/Taschenrechner/Musterlösung | Taschenrechner]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/VerschachtelteSchleifen | Verschachtelte Schleifen]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Umgang mit mehreren verschachtelten Schleifen&lt;br /&gt;
 | [[Benutzer:Dank|Daniel K.]]&lt;br /&gt;
 | AlexanderK&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 ''2.0'']]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |8&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Knobeln&amp;lt;br&amp;gt;Komplexes Aufgaben lösen&lt;br /&gt;
 | [[Benutzer:Mario|Mario]]&lt;br /&gt;
 | Martin K.&lt;br /&gt;
 | [[Ckurs2009/Taschenrechner2.0/Musterlösung | Taschenrechner ''2.0'']]&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Ckurs2009/Call by reference | Call by reference]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Einfache Anwendung von &amp;amp;/*&lt;br /&gt;
 | sping&lt;br /&gt;
 | nion&lt;br /&gt;
 | [[Ckurs2009/Call by reference/Musterlösung | Call by reference]]&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;
 | [[Ckurs2009/Text processing/Musterlösung | Text processing]]&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;
 | &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;
 | [[Ckurs2009/Matrizenmultiplikation/Musterlösung | Matrizenmultiplikation]]&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;
 | vorhanden&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; |5-9&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |7. VL&lt;br /&gt;
 | Wie verbessere ich den Quellcode eines Programmes.&lt;br /&gt;
 | Daniel&lt;br /&gt;
 | &lt;br /&gt;
 | 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 'bash' eingeben, man sieht dann auch in welchem Verzeichnis man gerade ist.&lt;br /&gt;
* wenn man nur den Promt 'bash-0.12' oder so erhält, also ohne das Verzeichnis in dem man ist, folgendes Kommando eingeben: &amp;lt;tt&amp;gt;export PS1='\u@\h:\w$ '&amp;lt;/tt&amp;gt; oder zum dauerhaften Speichern: &amp;lt;tt&amp;gt; echo &amp;quot;export PS1='\u@\h:\w$ '&amp;quot; &amp;gt;&amp;gt; ~/.bashrc &amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Musterlösungen ==&lt;br /&gt;
Die Lösungen zu den Aufgaben werden nach den jeweiligen Übungen hier veröffentlicht. Falls dies nicht geschieht, bitte den zuständigen Tutor fragen.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[Ckurs2009/Feedback|Feedback zum Kurs 2009]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:CKurs]]&lt;br /&gt;
[[Kategorie:CKurs Aufgaben]]&lt;/div&gt;</summary>
		<author><name>DStulle</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=C-Kurs/Base64/Musterl%C3%B6sung&amp;diff=12498</id>
		<title>C-Kurs/Base64/Musterlösung</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=C-Kurs/Base64/Musterl%C3%B6sung&amp;diff=12498"/>
		<updated>2009-09-22T09:16:45Z</updated>

		<summary type="html">&lt;p&gt;DStulle: Dateilink aktuallisiert&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[http://docs.freitagsrunde.org/Veranstaltungen/ckurs_2009/loesungen/base64_done.c base64.done.c]&lt;/div&gt;</summary>
		<author><name>DStulle</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=C-Kurs/Refactoring&amp;diff=12497</id>
		<title>C-Kurs/Refactoring</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=C-Kurs/Refactoring&amp;diff=12497"/>
		<updated>2009-09-22T09:14:09Z</updated>

		<summary type="html">&lt;p&gt;DStulle: /* Teil 1 */ typos&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Teil 1 =&lt;br /&gt;
&lt;br /&gt;
Das gegebene Programm ist eine Hashtabelle. Leider ist es etwas unübersichtlich, da es eine Funktion enthält, die ca. 150 Zeilen lang ist. Schaffe mehr übersicht indem du Codefragmente die zusammengehören oder mehrmals im Quelltext auftauchen in kleinere Funktionen auslagerst. Wie zum beispiel diese:&lt;br /&gt;
&lt;br /&gt;
 static int calcHashKey(const char *pszHash);&lt;br /&gt;
 static PHASHITEM getItemFromHash(const char *pszHash);&lt;br /&gt;
 static void execGetHash(const char *pszHash);&lt;br /&gt;
 static void execRemoveHash(const char *pszHash);&lt;br /&gt;
 static void execInsertHash(const char *pszHash, char *pszData);&lt;br /&gt;
 static int parseCmd(const char *pszCmdLine);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
halte dich dabei an die Namenskonvention der [http://de.wikipedia.org/wiki/Ungarische_Notation Ungarischen Notation] und [http://de.wikipedia.org/wiki/Binnenmajuskel#Verwendung_in_Programmiersprachen Camel Case].&lt;br /&gt;
&lt;br /&gt;
Hier ist die Vorlage: [http://docs.freitagsrunde.org/Veranstaltungen/ckurs_2009/vorgaben/HashTableRefactor.c HashTableRefactor.c]&lt;br /&gt;
&lt;br /&gt;
= Teil 2 =&lt;br /&gt;
&lt;br /&gt;
Den Algorythmus zum encodieren eines Strings nach base64 aus einer anderen [[Ckurs2009/Base64|Aufgabe]] kann man auch noch etwas eleganter und knapper schreiben.&lt;br /&gt;
&lt;br /&gt;
Das Programm erwatet genau einen Kommandozeilenparameter und convertiert diesen nach Base64.&lt;br /&gt;
&lt;br /&gt;
 $ ./base64 &amp;quot;Das ist ein Test&amp;quot;&lt;br /&gt;
 RGFzIGlzdCBlaW4gVGVzdA==&lt;br /&gt;
&lt;br /&gt;
Hier ist die Vorlage: [http://docs.freitagsrunde.org/Veranstaltungen/ckurs_2009/vorgaben/base64_refactor.c base64_refactor.c]&lt;br /&gt;
&lt;br /&gt;
== Schritt 1 ==&lt;br /&gt;
&lt;br /&gt;
Schreibe eine Funktion encode_block(), die die vier gegebenen encode_*_output() Funktionen ersetzt.&lt;br /&gt;
&lt;br /&gt;
 /**&lt;br /&gt;
  * Encodes three input chars into four output chars based on the base64 scheme.&lt;br /&gt;
  * @param in chararray with input characters&lt;br /&gt;
  * @param out chararray where the output is written to&lt;br /&gt;
  * @param len number of chars to be used from input&lt;br /&gt;
  */&lt;br /&gt;
 void encode_block( unsigned char in[3], unsigned char out[4], int len )&lt;br /&gt;
 {&lt;br /&gt;
   /* ... */&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Ersetze die Aufrufe der vier Funktionen an den drei stellen im Code durch den einmaligen Aufruf der Funktion encode_block().&lt;br /&gt;
&lt;br /&gt;
== Schritt 2 ==&lt;br /&gt;
&lt;br /&gt;
Vereinfache den Code so, dass die Funktion encode_block() nur ein einziges mal aufgerufen wird. Lagere den Algorithmus zum encodieren in eine Extra Funktion encode() aus. Alles was die ein und Ausgabe mit dem Benutzer und Initialisierung von Variablen betrifft soll in der Funktion main() bleiben.&lt;br /&gt;
&lt;br /&gt;
 /**&lt;br /&gt;
  * Encodes the input string into an output string based on the base64 scheme.&lt;br /&gt;
  * @param length size of input string&lt;br /&gt;
  * @param input string with input characters&lt;br /&gt;
  * @param output string where the output is written to. It has to be long enough to hold the output&lt;br /&gt;
  */&lt;br /&gt;
 void encode(int length, char *input, char *output)&lt;br /&gt;
 {&lt;br /&gt;
   /* ... */&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>DStulle</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=C-Kurs/Refactoring&amp;diff=12496</id>
		<title>C-Kurs/Refactoring</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=C-Kurs/Refactoring&amp;diff=12496"/>
		<updated>2009-09-22T08:53:26Z</updated>

		<summary type="html">&lt;p&gt;DStulle: Teil 1 hinzugefügt.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Teil 1 =&lt;br /&gt;
&lt;br /&gt;
Das gegebene Programm ist eine Hashtabelle. Leider ist es etwas unübersichtlich, da es eine Funktion enthält, die ca. 150 Zeilen lang ist. Schaffe mehr übersicht indem du Codefragmente die zusammengehören oder mehrmals im Quelltext auftauche in kleinere Funktionen auslagerst. Wie zum beispiel diese:&lt;br /&gt;
&lt;br /&gt;
 static int calcHashKey(const char *pszHash);&lt;br /&gt;
 static PHASHITEM getItemFromHash(const char *pszHash);&lt;br /&gt;
 static void execGetHash(const char *pszHash);&lt;br /&gt;
 static void execRemoveHash(const char *pszHash);&lt;br /&gt;
 static void execInsertHash(const char *pszHash, char *pszData);&lt;br /&gt;
 static int parseCmd(const char *pszCmdLine);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
halte dich dabei an die Namenskonvention der [http://de.wikipedia.org/wiki/Ungarische_Notation Ungarischen Notation] und [http://de.wikipedia.org/wiki/Binnenmajuskel#Verwendung_in_Programmiersprachen Camel Case].&lt;br /&gt;
&lt;br /&gt;
Hier ist die Vorlage: [http://docs.freitagsrunde.org/Veranstaltungen/ckurs_2009/vorgaben/HashTableRefactor.c HashTableRefactor.c]&lt;br /&gt;
&lt;br /&gt;
= Teil 2 =&lt;br /&gt;
&lt;br /&gt;
Den Algorythmus zum encodieren eines Strings nach base64 aus einer anderen [[Ckurs2009/Base64|Aufgabe]] kann man auch noch etwas eleganter und knapper schreiben.&lt;br /&gt;
&lt;br /&gt;
Das Programm erwatet genau einen Kommandozeilenparameter und convertiert diesen nach Base64.&lt;br /&gt;
&lt;br /&gt;
 $ ./base64 &amp;quot;Das ist ein Test&amp;quot;&lt;br /&gt;
 RGFzIGlzdCBlaW4gVGVzdA==&lt;br /&gt;
&lt;br /&gt;
Hier ist die Vorlage: [http://docs.freitagsrunde.org/Veranstaltungen/ckurs_2009/vorgaben/base64_refactor.c base64_refactor.c]&lt;br /&gt;
&lt;br /&gt;
== Schritt 1 ==&lt;br /&gt;
&lt;br /&gt;
Schreibe eine Funktion encode_block(), die die vier gegebenen encode_*_output() Funktionen ersetzt.&lt;br /&gt;
&lt;br /&gt;
 /**&lt;br /&gt;
  * Encodes three input chars into four output chars based on the base64 scheme.&lt;br /&gt;
  * @param in chararray with input characters&lt;br /&gt;
  * @param out chararray where the output is written to&lt;br /&gt;
  * @param len number of chars to be used from input&lt;br /&gt;
  */&lt;br /&gt;
 void encode_block( unsigned char in[3], unsigned char out[4], int len )&lt;br /&gt;
 {&lt;br /&gt;
   /* ... */&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Ersetze die Aufrufe der vier Funktionen an den drei stellen im Code durch den einmaligen Aufruf der Funktion encode_block().&lt;br /&gt;
&lt;br /&gt;
== Schritt 2 ==&lt;br /&gt;
&lt;br /&gt;
Vereinfache den Code so, dass die Funktion encode_block() nur ein einziges mal aufgerufen wird. Lagere den Algorithmus zum encodieren in eine Extra Funktion encode() aus. Alles was die ein und Ausgabe mit dem Benutzer und Initialisierung von Variablen betrifft soll in der Funktion main() bleiben.&lt;br /&gt;
&lt;br /&gt;
 /**&lt;br /&gt;
  * Encodes the input string into an output string based on the base64 scheme.&lt;br /&gt;
  * @param length size of input string&lt;br /&gt;
  * @param input string with input characters&lt;br /&gt;
  * @param output string where the output is written to. It has to be long enough to hold the output&lt;br /&gt;
  */&lt;br /&gt;
 void encode(int length, char *input, char *output)&lt;br /&gt;
 {&lt;br /&gt;
   /* ... */&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>DStulle</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=C-Kurs/Refactoring/Musterl%C3%B6sung&amp;diff=12494</id>
		<title>C-Kurs/Refactoring/Musterlösung</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=C-Kurs/Refactoring/Musterl%C3%B6sung&amp;diff=12494"/>
		<updated>2009-09-22T08:35:52Z</updated>

		<summary type="html">&lt;p&gt;DStulle: Teil 1 hinzugefügt und Verlinkung aktualisiert.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Teil 1 =&lt;br /&gt;
&lt;br /&gt;
[http://docs.freitagsrunde.org/Veranstaltungen/ckurs_2009/loesungen/HashTableRefactorDone.c HashTableRefactorDone.c]&lt;br /&gt;
&lt;br /&gt;
= Teil 2 =&lt;br /&gt;
&lt;br /&gt;
[http://docs.freitagsrunde.org/Veranstaltungen/ckurs_2009/loesungen/base64_refactor_done.c base64_refactor_done.c]&lt;/div&gt;</summary>
		<author><name>DStulle</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=C-Kurs/Refactoring&amp;diff=12491</id>
		<title>C-Kurs/Refactoring</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=C-Kurs/Refactoring&amp;diff=12491"/>
		<updated>2009-09-22T02:00:06Z</updated>

		<summary type="html">&lt;p&gt;DStulle: /* Schritt 1 */ Satz beendet&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Teil 1 =&lt;br /&gt;
&lt;br /&gt;
(In Bearbeitung)&lt;br /&gt;
&lt;br /&gt;
= Teil 2 =&lt;br /&gt;
&lt;br /&gt;
Den Algorythmus zum encodieren eines Strings nach base64 aus einer anderen [[Ckurs2009/Base64|Aufgabe]] kann man auch noch etwas eleganter und knapper schreiben.&lt;br /&gt;
&lt;br /&gt;
Das Programm erwatet genau einen Kommandozeilenparameter und convertiert diesen nach Base64.&lt;br /&gt;
&lt;br /&gt;
 $ ./base64 &amp;quot;Das ist ein Test&amp;quot;&lt;br /&gt;
 RGFzIGlzdCBlaW4gVGVzdA==&lt;br /&gt;
&lt;br /&gt;
Hier ist die Vorlage: [http://docs.freitagsrunde.org/Veranstaltungen/ckurs_2009/vorgaben/base64_refactor.c base64_refactor.c]&lt;br /&gt;
&lt;br /&gt;
== Schritt 1 ==&lt;br /&gt;
&lt;br /&gt;
Schreibe eine Funktion encode_block(), die die vier gegebenen encode_*_output() Funktionen ersetzt.&lt;br /&gt;
&lt;br /&gt;
 /**&lt;br /&gt;
  * Encodes three input chars into four output chars based on the base64 scheme.&lt;br /&gt;
  * @param in chararray with input characters&lt;br /&gt;
  * @param out chararray where the output is written to&lt;br /&gt;
  * @param len number of chars to be used from input&lt;br /&gt;
  */&lt;br /&gt;
 void encode_block( unsigned char in[3], unsigned char out[4], int len )&lt;br /&gt;
 {&lt;br /&gt;
   /* ... */&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Ersetze die Aufrufe der vier Funktionen an den drei stellen im Code durch den einmaligen Aufruf der Funktion encode_block().&lt;br /&gt;
&lt;br /&gt;
== Schritt 2 ==&lt;br /&gt;
&lt;br /&gt;
Vereinfache den Code so, dass die Funktion encode_block() nur ein einziges mal aufgerufen wird. Lagere den Algorithmus zum encodieren in eine Extra Funktion encode() aus. Alles was die ein und Ausgabe mit dem Benutzer und Initialisierung von Variablen betrifft soll in der Funktion main() bleiben.&lt;br /&gt;
&lt;br /&gt;
 /**&lt;br /&gt;
  * Encodes the input string into an output string based on the base64 scheme.&lt;br /&gt;
  * @param length size of input string&lt;br /&gt;
  * @param input string with input characters&lt;br /&gt;
  * @param output string where the output is written to. It has to be long enough to hold the output&lt;br /&gt;
  */&lt;br /&gt;
 void encode(int length, char *input, char *output)&lt;br /&gt;
 {&lt;br /&gt;
   /* ... */&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>DStulle</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=C-Kurs/Refactoring/Musterl%C3%B6sung&amp;diff=12490</id>
		<title>C-Kurs/Refactoring/Musterlösung</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=C-Kurs/Refactoring/Musterl%C3%B6sung&amp;diff=12490"/>
		<updated>2009-09-22T01:59:03Z</updated>

		<summary type="html">&lt;p&gt;DStulle: Lösungen für Teil 2 verlinkt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Teil 2 =&lt;br /&gt;
&lt;br /&gt;
[http://docs.freitagsrunde.org/ckurs2009/vorgaben/base64_refactor_done.c base64_refactor_done.c]&lt;/div&gt;</summary>
		<author><name>DStulle</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=C-Kurs/Refactoring&amp;diff=12489</id>
		<title>C-Kurs/Refactoring</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=C-Kurs/Refactoring&amp;diff=12489"/>
		<updated>2009-09-22T01:58:09Z</updated>

		<summary type="html">&lt;p&gt;DStulle: Dateiverlinkung korrigert&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Teil 1 =&lt;br /&gt;
&lt;br /&gt;
(In Bearbeitung)&lt;br /&gt;
&lt;br /&gt;
= Teil 2 =&lt;br /&gt;
&lt;br /&gt;
Den Algorythmus zum encodieren eines Strings nach base64 aus einer anderen [[Ckurs2009/Base64|Aufgabe]] kann man auch noch etwas eleganter und knapper schreiben.&lt;br /&gt;
&lt;br /&gt;
Das Programm erwatet genau einen Kommandozeilenparameter und convertiert diesen nach Base64.&lt;br /&gt;
&lt;br /&gt;
 $ ./base64 &amp;quot;Das ist ein Test&amp;quot;&lt;br /&gt;
 RGFzIGlzdCBlaW4gVGVzdA==&lt;br /&gt;
&lt;br /&gt;
Hier ist die Vorlage: [http://docs.freitagsrunde.org/Veranstaltungen/ckurs_2009/vorgaben/base64_refactor.c base64_refactor.c]&lt;br /&gt;
&lt;br /&gt;
== Schritt 1 ==&lt;br /&gt;
&lt;br /&gt;
Schreibe eine Funktion encodeblock(), die die vier gegebenen encode_*_output() Funktionen ersetzt.&lt;br /&gt;
&lt;br /&gt;
 /**&lt;br /&gt;
  * Encodes three input chars into four output chars based on the base64 scheme.&lt;br /&gt;
  * @param in chararray with input characters&lt;br /&gt;
  * @param out chararray where the output is written to&lt;br /&gt;
  * @param len number of chars to be used from input&lt;br /&gt;
  */&lt;br /&gt;
 void encode_block( unsigned char in[3], unsigned char out[4], int len )&lt;br /&gt;
 {&lt;br /&gt;
   /* ... */&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
ersetze die Aufrufe der vier Funktionen an den drei stellen im Code durch den einmaligen Aufruf der&lt;br /&gt;
&lt;br /&gt;
== Schritt 2 ==&lt;br /&gt;
&lt;br /&gt;
Vereinfache den Code so, dass die Funktion encode_block() nur ein einziges mal aufgerufen wird. Lagere den Algorithmus zum encodieren in eine Extra Funktion encode() aus. Alles was die ein und Ausgabe mit dem Benutzer und Initialisierung von Variablen betrifft soll in der Funktion main() bleiben.&lt;br /&gt;
&lt;br /&gt;
 /**&lt;br /&gt;
  * Encodes the input string into an output string based on the base64 scheme.&lt;br /&gt;
  * @param length size of input string&lt;br /&gt;
  * @param input string with input characters&lt;br /&gt;
  * @param output string where the output is written to. It has to be long enough to hold the output&lt;br /&gt;
  */&lt;br /&gt;
 void encode(int length, char *input, char *output)&lt;br /&gt;
 {&lt;br /&gt;
   /* ... */&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>DStulle</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=C-Kurs/Refactoring&amp;diff=12488</id>
		<title>C-Kurs/Refactoring</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=C-Kurs/Refactoring&amp;diff=12488"/>
		<updated>2009-09-22T01:56:47Z</updated>

		<summary type="html">&lt;p&gt;DStulle: Teil 2 Angelegt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Teil 1 =&lt;br /&gt;
&lt;br /&gt;
(In Bearbeitung)&lt;br /&gt;
&lt;br /&gt;
= Teil 2 =&lt;br /&gt;
&lt;br /&gt;
Den Algorythmus zum encodieren eines Strings nach base64 aus einer anderen [[Ckurs2009/Base64|Aufgabe]] kann man auch noch etwas eleganter und knapper schreiben.&lt;br /&gt;
&lt;br /&gt;
Das Programm erwatet genau einen Kommandozeilenparameter und convertiert diesen nach Base64.&lt;br /&gt;
&lt;br /&gt;
 $ ./base64 &amp;quot;Das ist ein Test&amp;quot;&lt;br /&gt;
 RGFzIGlzdCBlaW4gVGVzdA==&lt;br /&gt;
&lt;br /&gt;
Hier ist die Vorlage: [http://docs.freitagsrunde.org/Veranstaltungen/ckurs_2009/vorgaben/base64_refactor.c|base64_refactor.c]&lt;br /&gt;
&lt;br /&gt;
== Schritt 1 ==&lt;br /&gt;
&lt;br /&gt;
Schreibe eine Funktion encodeblock(), die die vier gegebenen encode_*_output() Funktionen ersetzt.&lt;br /&gt;
&lt;br /&gt;
 /**&lt;br /&gt;
  * Encodes three input chars into four output chars based on the base64 scheme.&lt;br /&gt;
  * @param in chararray with input characters&lt;br /&gt;
  * @param out chararray where the output is written to&lt;br /&gt;
  * @param len number of chars to be used from input&lt;br /&gt;
  */&lt;br /&gt;
 void encode_block( unsigned char in[3], unsigned char out[4], int len )&lt;br /&gt;
 {&lt;br /&gt;
   /* ... */&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
ersetze die Aufrufe der vier Funktionen an den drei stellen im Code durch den einmaligen Aufruf der&lt;br /&gt;
&lt;br /&gt;
== Schritt 2 ==&lt;br /&gt;
&lt;br /&gt;
Vereinfache den Code so, dass die Funktion encode_block() nur ein einziges mal aufgerufen wird. Lagere den Algorithmus zum encodieren in eine Extra Funktion encode() aus. Alles was die ein und Ausgabe mit dem Benutzer und Initialisierung von Variablen betrifft soll in der Funktion main() bleiben.&lt;br /&gt;
&lt;br /&gt;
 /**&lt;br /&gt;
  * Encodes the input string into an output string based on the base64 scheme.&lt;br /&gt;
  * @param length size of input string&lt;br /&gt;
  * @param input string with input characters&lt;br /&gt;
  * @param output string where the output is written to. It has to be long enough to hold the output&lt;br /&gt;
  */&lt;br /&gt;
 void encode(int length, char *input, char *output)&lt;br /&gt;
 {&lt;br /&gt;
   /* ... */&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>DStulle</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=C-Kurs/%C3%9Cbungsaufgaben&amp;diff=12487</id>
		<title>C-Kurs/Übungsaufgaben</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=C-Kurs/%C3%9Cbungsaufgaben&amp;diff=12487"/>
		<updated>2009-09-22T01:39:40Z</updated>

		<summary type="html">&lt;p&gt;DStulle: /* Die Aufgaben */ Nieveau aktuallisiert&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 ''2.0'']]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |8&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Knobeln&amp;lt;br&amp;gt;Komplexes Aufgaben lösen&lt;br /&gt;
 | [[Benutzer:Mario|Mario]]&lt;br /&gt;
 | Martin K.&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; |5-9&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |7. VL&lt;br /&gt;
 | Wie verbessere ich den Quellcode eines Programmes.&lt;br /&gt;
 | Daniel&lt;br /&gt;
 | &lt;br /&gt;
 | 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 'bash' eingeben, man sieht dann auch in welchem Verzeichnis man gerade ist.&lt;br /&gt;
* wenn man nur den Promt 'bash-0.12' oder so erhält, also ohne das Verzeichnis in dem man ist, folgendes Kommando eingeben: &amp;lt;tt&amp;gt;export PS1='\u@\h:\w$ '&amp;lt;/tt&amp;gt; oder zum dauerhaften Speichern: &amp;lt;tt&amp;gt; echo &amp;quot;export PS1='\u@\h:\w$ '&amp;quot; &amp;gt;&amp;gt; ~/.bashrc &amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Musterlösungen ==&lt;br /&gt;
Die Lösungen zu den Aufgaben werden nach den jeweiligen Übungen hier veröffentlicht. Falls dies nicht geschieht, bitte den zuständigen Tutor fragen.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[Ckurs2009/Feedback|Feedback zum Kurs 2009]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:CKurs]]&lt;br /&gt;
[[Kategorie:CKurs Aufgaben]]&lt;/div&gt;</summary>
		<author><name>DStulle</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=C-Kurs/Code_Layout&amp;diff=12466</id>
		<title>C-Kurs/Code Layout</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=C-Kurs/Code_Layout&amp;diff=12466"/>
		<updated>2009-09-21T13:51:47Z</updated>

		<summary type="html">&lt;p&gt;DStulle: Abschnit für Kommentare hinzugefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Aufgabenstellung =&lt;br /&gt;
&lt;br /&gt;
In dieser Aufgabe sind einige Codeschnipsel gegeben die zwar funktionieren aber etwas unübersichtlich oder umständlich geschrieben sind. Deine Aufgabe ist es diese so um zu schreiben, dass sie übersichtlicher und einfacher sind. Vergleiche die Ergebnisse mit deinem Nachbarn und sprecht über eure Ergebnisse.&lt;br /&gt;
&lt;br /&gt;
== fac.c ==&lt;br /&gt;
&lt;br /&gt;
Die Fakultät kann auch Rekursiv berechnet werden, allerdings könnte man das auch bequem in zwei Zeilen machen, ohne dabei unübersichtlich zu werden.&lt;br /&gt;
&lt;br /&gt;
 int faculty(int n){&lt;br /&gt;
   if (n &amp;lt; 2) return 1;&lt;br /&gt;
 &lt;br /&gt;
   if(n == 2)&lt;br /&gt;
   {&lt;br /&gt;
       return 2;&lt;br /&gt;
   } else {&lt;br /&gt;
     int m;&lt;br /&gt;
     m = n*faculty(n-1);&lt;br /&gt;
     return m;&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
= Kommentare =&lt;/div&gt;</summary>
		<author><name>DStulle</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=C-Kurs/Code_Layout&amp;diff=12465</id>
		<title>C-Kurs/Code Layout</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=C-Kurs/Code_Layout&amp;diff=12465"/>
		<updated>2009-09-21T13:49:49Z</updated>

		<summary type="html">&lt;p&gt;DStulle: /* Einleitung */ Einleitungstext ergänzt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Einleitung =&lt;br /&gt;
&lt;br /&gt;
In dieser Aufgabe sind einige Codeschnipsel gegeben die zwar funktionieren aber etwas unübersichtlich oder umständlich geschrieben sind. Deine Aufgabe ist es diese so um zu schreiben, dass sie übersichtlicher und einfacher sind. Vergleiche die Ergebnisse mit deinem Nachbarn und sprecht über eure Ergebnisse.&lt;br /&gt;
&lt;br /&gt;
== fac.c ==&lt;br /&gt;
&lt;br /&gt;
Die Fakultät kann auch Rekursiv berechnet werden, allerdings könnte man das auch bequem in zwei Zeilen machen, ohne dabei unübersichtlich zu werden.&lt;br /&gt;
&lt;br /&gt;
 int faculty(int n){&lt;br /&gt;
   if (n &amp;lt; 2) return 1;&lt;br /&gt;
 &lt;br /&gt;
   if(n == 2)&lt;br /&gt;
   {&lt;br /&gt;
       return 2;&lt;br /&gt;
   } else {&lt;br /&gt;
     int m;&lt;br /&gt;
     m = n*faculty(n-1);&lt;br /&gt;
     return m;&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>DStulle</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=C-Kurs/Code_Layout&amp;diff=12464</id>
		<title>C-Kurs/Code Layout</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=C-Kurs/Code_Layout&amp;diff=12464"/>
		<updated>2009-09-21T13:48:24Z</updated>

		<summary type="html">&lt;p&gt;DStulle: /* fac.c */ aufgabe fac.c hinzugefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Einleitung =&lt;br /&gt;
&lt;br /&gt;
In dieser Aufgabe sind einige Codeschnipsel gegeben die zwar funktionieren aber etwas unübersichtlich oder umständlich geschrieben sind. Deine aufgabe ist es diese so um zu schreiben, dass sie übersichtlicher und einfacher sind.&lt;br /&gt;
&lt;br /&gt;
== fac.c ==&lt;br /&gt;
&lt;br /&gt;
Die Fakultät kann auch Rekursiv berechnet werden, allerdings könnte man das auch bequem in zwei Zeilen machen, ohne dabei unübersichtlich zu werden.&lt;br /&gt;
&lt;br /&gt;
 int faculty(int n){&lt;br /&gt;
   if (n &amp;lt; 2) return 1;&lt;br /&gt;
 &lt;br /&gt;
   if(n == 2)&lt;br /&gt;
   {&lt;br /&gt;
       return 2;&lt;br /&gt;
   } else {&lt;br /&gt;
     int m;&lt;br /&gt;
     m = n*faculty(n-1);&lt;br /&gt;
     return m;&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>DStulle</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=C-Kurs/Code_Layout&amp;diff=12462</id>
		<title>C-Kurs/Code Layout</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=C-Kurs/Code_Layout&amp;diff=12462"/>
		<updated>2009-09-21T13:05:34Z</updated>

		<summary type="html">&lt;p&gt;DStulle: Aufgabenstellung begonnen&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Einleitung =&lt;br /&gt;
&lt;br /&gt;
In dieser Aufgabe sind einige Codeschnipsel gegeben die zwar funktionieren aber etwas unübersichtlich oder umständlich geschrieben sind. Deine aufgabe ist es diese so um zu schreiben, dass sie übersichtlicher und einfacher sind.&lt;br /&gt;
&lt;br /&gt;
== fac.c ==&lt;br /&gt;
&lt;br /&gt;
(to be continued)&lt;/div&gt;</summary>
		<author><name>DStulle</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=Vorlage:HauptseiteNewsBox&amp;diff=12438</id>
		<title>Vorlage:HauptseiteNewsBox</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=Vorlage:HauptseiteNewsBox&amp;diff=12438"/>
		<updated>2009-09-21T08:00:45Z</updated>

		<summary type="html">&lt;p&gt;DStulle: /* C-Kurs 2009 */ Link zu übungsaufgaben korrigiert&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== C-Kurs 2009 ===&lt;br /&gt;
&lt;br /&gt;
Ab dem 21.09. bis einschließlich zum 25.09. 2009 werden wir einen C-Kurs anbieten. Ziel wird es sein, euch fit für die Vorlesung TechGI3 zu machen. Wir werden dabei wichtige Tehmen wie Ein- und Ausgabe, Pointer, structs, Debuging und weitere Themen anbieten. Neben den Vorlesungen wird es diesmal auch wieder Übungen geben, die euch das gelernte praktisch anwenden lassen. &lt;br /&gt;
&lt;br /&gt;
Für weitere Informationen, bitte auf [[ckurs| unserer C-Kurs Seite]] nachsehen.&lt;br /&gt;
&lt;br /&gt;
Falls du direkt zu den Übungsaufgaben willst, dann gehe zu [[ckurs/Übungsaufgaben| unserer C-Kurs Übungsseite]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: right;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;1&amp;quot;&amp;gt;''News erstellt am 13.09.2009''&amp;lt;/font&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Stromabschaltung - Wiki aus ===&lt;br /&gt;
&lt;br /&gt;
Am Samstag, dem 22.08.2009 in der Zeit von 7.00 bis 15.00 Uhr wird die Trafostation &amp;quot;Elektrotechnik Neu&amp;quot; wegen Wartungs- und Instandsetzungsarbeiten abgeschaltet. Daher wird unser Wiki und unser Mailserver von Samstag früh bis voraussichtlich Montag nicht erreichbar sein.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: right;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;1&amp;quot;&amp;gt;''News erstellt am 21.08.2009''&amp;lt;/font&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Tech Talk Juli ===&lt;br /&gt;
&lt;br /&gt;
Diesen Freitag (31. Juli, 15 Uhr) findet wieder ein [[TechTalk|Tech Talk]] der Freitagsrunde statt. Thematisch wird es um den in der letzten Woche ausgetragenen &lt;br /&gt;
'Hash Challenge Programming Wettbewerb' gehen. Im Rahmen dieses Wettbewerbs haben Robert, Florian und Dan ein eingenes Programm auf über 1500 CPUs in aller Welt verteilt. Während der 30 Stunden des Wettbwewerbs wurden so mehrere Billionen Hashoperationen durchgeführt (SHA1) und mehr als 3 CPU-Jahre Rechenzeit verbraucht.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: right;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;1&amp;quot;&amp;gt;''News erstellt am 27.07.2009''&amp;lt;/font&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Wiki Migration ===&lt;br /&gt;
&lt;br /&gt;
Unsere Installation von [[wikipedia:Mediakwiki|Mediawiki]] ist auf einen neuen Server umgezogen.&lt;br /&gt;
Leider mussten wir an einigen Stellen Hand anlegen, wo wir es lieber nicht gewollt hätten.&lt;br /&gt;
Falls ihr Fehler in unserem Wiki findet, [mailto:technik@freitagsrunde.org meldet euch bitte bei uns].&lt;br /&gt;
Wir hoffen natürlich, dass ihr das Wiki so vorfindet wie ihr es wünscht -- und falls nicht, editiert&lt;br /&gt;
halt einfach weiter.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: right;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;1&amp;quot;&amp;gt;''News erstellt am 11.07.2009''&amp;lt;/font&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== StudyCenter @ TU-Mensa ===&lt;br /&gt;
&lt;br /&gt;
Wir waren ein wenig aktiv für euch: In der Hoffnung den Mangel an angenehmen und regelmäßig offenen Arbeitsplätzen zu lindern haben wir organisiert, dass das Studentenwerk Berlin ab nächsten Montag (29.06.2009) die TU-Mensa in der Hardenbergstraße nach dem Essen als Arbeitsraum öffnet. Der Pressetext dazu:&lt;br /&gt;
&lt;br /&gt;
Das Studentenwerk Berlin öffnet ab 29. Juni 2009 die TU-Mensa Hardenbergstraße&lt;br /&gt;
nach der Essenszeit als Arbeitsraum. Bis zur regulären Schließzeit des &lt;br /&gt;
Gebäudes um 18.30 Uhr steht der Raum mit seinen über 1000 Plätzen damit allen &lt;br /&gt;
Studierenden als freier Arbeitsplatz zur Verfügung. Sollte sich eine &lt;br /&gt;
ausreichend große Nachfrage zeigen, können die Öffnungszeiten noch verlängert &lt;br /&gt;
werden. Steckdosen für Laptops stehen aber nur im bereits gegebenem Umfang &lt;br /&gt;
zur Verfügung, können aber bei entsprechender Nachfrage ebenfalls ausgebaut &lt;br /&gt;
werden. Der Zugang zum Sitz- und Arbeitsbereich erfolgt über die Treppen, die &lt;br /&gt;
sonst als Ausgang dienen. Für das leibliche Wohl der Studierenden ist wie &lt;br /&gt;
immer die Coffeebar im Erdgeschoss bis 18 Uhr geöffnet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: right;&amp;quot;&amp;gt;&amp;lt;font size=&amp;quot;1&amp;quot;&amp;gt;''News erstellt am 25.06.2009''&amp;lt;/font&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Newsarchiv|Ältere Nachrichten finden sich im Archiv]]&lt;/div&gt;</summary>
		<author><name>DStulle</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=C-Kurs/%C3%9Cbungsaufgaben&amp;diff=12427</id>
		<title>C-Kurs/Übungsaufgaben</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=C-Kurs/%C3%9Cbungsaufgaben&amp;diff=12427"/>
		<updated>2009-09-20T22:40:13Z</updated>

		<summary type="html">&lt;p&gt;DStulle: /* Die Aufgaben */ Aufgabe Fakultät angesehen.&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;
 |- 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;
 |- 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;
 |- 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 ''2.0'']]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |8&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Knobeln&amp;lt;br&amp;gt;Komplexes Aufgaben lösen&lt;br /&gt;
 | [[Benutzer:Mario|Mario]]&lt;br /&gt;
 | martin&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&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;
 | 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;
 |- 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;
 |- 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;
|}&lt;br /&gt;
&lt;br /&gt;
== Kleine und große Probleme ==&lt;br /&gt;
&lt;br /&gt;
* Die Tubit-Accounts haben nicht /bin/bash als shell, so dass die &amp;lt;strong&amp;gt;Cursortasten&amp;lt;/strong&amp;gt; nicht funktionieren. Workaround: als erstes Kommando 'bash' eingeben, man sieht dann auch in welchem Verzeichnis man gerade ist.&lt;br /&gt;
&lt;br /&gt;
== 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>DStulle</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=C-Kurs/%C3%9Cbungsaufgaben&amp;diff=12425</id>
		<title>C-Kurs/Übungsaufgaben</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=C-Kurs/%C3%9Cbungsaufgaben&amp;diff=12425"/>
		<updated>2009-09-20T22:08:12Z</updated>

		<summary type="html">&lt;p&gt;DStulle: /* Die Aufgaben */ Meine Ideen zu den Aufgaben in die Liste eingetragen....&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;
 | &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;
 |- 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;
 |- 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;
 |- 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 ''2.0'']]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |8&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Knobeln&amp;lt;br&amp;gt;Komplexes Aufgaben lösen&lt;br /&gt;
 | [[Benutzer:Mario|Mario]]&lt;br /&gt;
 | martin&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&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;
 | 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;
 |- 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;
 |- 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;
|}&lt;br /&gt;
&lt;br /&gt;
== Kleine und große Probleme ==&lt;br /&gt;
&lt;br /&gt;
* Die Tubit-Accounts haben nicht /bin/bash als shell, so dass die &amp;lt;strong&amp;gt;Cursortasten&amp;lt;/strong&amp;gt; nicht funktionieren. Workaround: als erstes Kommando 'bash' eingeben, man sieht dann auch in welchem Verzeichnis man gerade ist.&lt;br /&gt;
&lt;br /&gt;
== 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>DStulle</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=C-Kurs_2009/Vortrag07&amp;diff=12258</id>
		<title>C-Kurs 2009/Vortrag07</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=C-Kurs_2009/Vortrag07&amp;diff=12258"/>
		<updated>2009-09-12T12:12:46Z</updated>

		<summary type="html">&lt;p&gt;DStulle: /* Ein paar Genanken */ Gedanken erweitert&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Guter Code =&lt;br /&gt;
&lt;br /&gt;
Vortragende: '''Daniel S.''' &amp;lt;dstulle gmx.de&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=== Themen ===&lt;br /&gt;
* Guter Code&lt;br /&gt;
&lt;br /&gt;
==== Ein paar Genanken ====&lt;br /&gt;
&lt;br /&gt;
Guter Code? Was ist gut?&lt;br /&gt;
Die frage ob etwas gut oder schlecht ist, definiert sich über das Ziel, dass man hat.&lt;br /&gt;
&lt;br /&gt;
Erst wenn man sich darüber im klaren ist, was man für ein Ziel hat kann man sich die Frage stellen ob etwas gut ist. z.B.: was für ein Auto ist gut? Ein Bus, ein Lastwagen, ein Rennwagen? Es kommt ganz darauf an ob man viele Leute mitnehmen will, viel Krams mitnehmen will oder einfach schnell sein will.&lt;br /&gt;
&lt;br /&gt;
Was will man üblicher weise erreichen wenn man Programmiert.&lt;br /&gt;
Zunächst einmal will man der Maschine sagen was sie tun soll. Aber ist das alles?&lt;br /&gt;
&lt;br /&gt;
Meistens will man den Code selber später nochmal lesen und verstehen. Also schreibt man ihn auch für sich.&lt;br /&gt;
&lt;br /&gt;
Sehr oft schreibt man den Code mit anderen zusammen oder als Teil eines Projektes mit Anderen. Also schreibt man ihn auch für andere.&lt;br /&gt;
&lt;br /&gt;
Warum ist guter Code, gutes Layout wichtig?&lt;br /&gt;
&lt;br /&gt;
Ihr schreibt den Programmcode nicht für den Computer sondern für euch und andere Menschen. Sonst könntet ihr das ganze gleich in Assembler rein hacken und es dann vergessen.&lt;br /&gt;
&lt;br /&gt;
Programmieren uns Softwareengineering ist bis auf wenige ausnahmen ein sehr kommunikativer und zwischenmenschlicher Prozess. Deswegen haben Informatiker auch eine so hohe Sozialkompetenz (Kein Scherz)&lt;br /&gt;
&lt;br /&gt;
Ihr schreibt den Code, damit ihn andere Leute oder ihr selber später mal lesen könnt. Programmieren ist eine besondere Art der Kommunikation. Genau wie die Menschliche Sprache ein Medium für Informationen, Gedanken und Konzepten ist, wird die Programmiersprache genau dazu benutzt mit der Besonderheit dass sie sogar ein Computer verstehen kann, aber das ist eigentlich nebensächlich ;-).&lt;br /&gt;
&lt;br /&gt;
Ihr seht also es ist wichtig sich beim Schreiben von Code an bestimmte Regeln zu halten. Ein Programm zu schreiben was nur der Compiler versteht uns sonst niemand anders ist keine Kunst und obendrein nutzlos.&lt;br /&gt;
&lt;br /&gt;
=== Folien ===&lt;br /&gt;
&amp;lt;!-- * [url name] --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Aufgaben ===&lt;br /&gt;
&lt;br /&gt;
==== Ein paar Gedanken ====&lt;br /&gt;
Die aufgaben sollten im Team gelöst werden, bzw als interaktion zwischen mehreren Teilnehmern. Kommunikation sollte irgendwie eine rolle spielen.&lt;br /&gt;
&lt;br /&gt;
=== Mitschnitt ===&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:CKurs]]&lt;/div&gt;</summary>
		<author><name>DStulle</name></author>
		
	</entry>
</feed>