Size: 9220
Comment:
|
Size: 14056
Comment:
|
Deletions are marked like this. | Additions are marked like this. |
Line 2: | Line 2: |
Die Vorlesung wird gehalten von [[http://ad.informatik.uni-freiburg.de/staff/bast|Prof. Dr. Hannah Bast]]. Die Tutoren sind: [[http://ad.informatik.uni-freiburg.de/staff/hoffmaje|Jens Hoffmann]], Felix Ruzzoli, Oday Jubran, Robin Schirrmeister, [[http://ad.informatik.uni-freiburg.de/staff/skilevis|Simon Skilevis]], Tim Lechler, Yaser Öztürk. |
|
Line 19: | Line 21: |
Ich habe so meine Probleme mit Subversion. Ich habe per "svn add" mein uebungsblatt-1 Verzeichnis zum Repository hinzugefügt und dann mit "svn commit" bestätigt. Wenn ich jetzt aber mit "svn list" nachschauen möchte, ob der Ordner auch im Repository ist, werden mir dort nur die Dateien angezeigt, die dort von Anfang an drin waren. Mache ich irgendwas falsch oder habe ich sonst irgendwo einen Denkfehler? TimV 22Apr10 19:32 | @Sebastian: (1) Ich persönlich finde 2010-04-22 22:27:32 nicht so richtig gut lesbar; (2) Die meisten Leute machen Änderungen ohne eingeloggt sein; (3) So richtig viel Arbeit finde ich es nicht sowas wie ''Xyz 23Apr10 12:00'' zu schreiben. Ich würde von daher sehr gerne bei der jetzigen Version bleiben und bitte alle sich daran zu halten, sonst wird es nämlich unübersichtlich. Es ist im Grunde ganz ähnlich wie mit dem Stylesheet für unseren Code, da kann man auch drüber streiten ob jetzt zwei oder drei Leerzeichen Einrückung besser ist, oder ob man wirklich die öffnenden geschweiften Klammern in eine eigene Zeile setzen sollte. Das wichtigste bei der Sache ist aber ''Konsistenz'', also dass es alle gleich machen. '''Hannah 23Apr10 12:04''' Hi alle, im Pool gibt es ein Problem mit gtest, zumindest wenn man es so macht wie in der Vorlesung. Man muss beim kompilieren -pthread anhängen (zumindest gehts so bei mir :)).Beispiel aus der VL, so dass es im Pool geht: ''g++ -o Sum''''''Of''''''Digits''''''Test Sum''''''Of''''''Digits''''''Test.cpp /usr/local/lib/libgtest.a -pthread'' (muss im Makefile geändert werden). '''RobinS 23Apr10 11:53''' Wer auf Windows besteht, kann übrigens auch Cygwin benutzen. Das ist allerdings nur für Leute zu empfehlen, die auch einigermaßen mit Linux klarkommen.<<BR>> Eine Frage noch: Könnten wir nicht auf die Wiki-Signaturen (@``SIG@ wird zu -- [[SebastianD]] <<DateTime(2010-04-23T00:27:32+0200)>>) umsteigen? Ich persönlich finde die schöner und weniger Mühe ist es allemal. :D '''SebastianD 23Apr10 00:26''' @Dario (und alle anderen Linuxunwissenden): Ich hab mich letzte Nacht auch mit meiner Unwissenheit Ubuntu in der Virtualbox rumgeschlagen und bin damit nicht sehr weit gekommen (es tauchten bei ''sudo apt-get install subversion'' so lustigen Sachen auf wie Fehlermeldungen welche beim anschauen eine Fehlermeldung erzeugten, dass ich die Fehlermeldung nicht ansehen können weil es einen Fehler mit dem Programm gäbe welches die Fehlermeldung ausgelöst habe). Bin dann heute auf das hier http://stadt-bremerhaven.de/ubuntu-ohne-angst-auf-der-festplatte/ gestoßen, hab es ausgeführt und bin dann fast in meinen Monitor gehüpft weil es auch erst nicht ging. Aber dank dem hier http://wiki.ubuntuusers.de/Wubi#Start und vor allem der Problembeschreibung ganz unten läuft es nun alles ganz gut. Ich finde im Moment, dass es ein gutes Mittelding zwischen VirtualBox und eigener Linux-Partition ist. '''Ben 23Apr10 00:03''' Das "<myfolder>" ist so gemeint, dass du dir einen beliebigen Namen für den Ordner ausdenken und den statt <myfolder> verwenden sollst. Der Fehler erscheint, da die Zeichen < und > mit einem Backslash ("\") escaped werden müssen (und hat auch nichts mit einem Compiler zu tun). Zu SVN noch: Falls der Befehl deinem Terminal unbekannt sein sollte, versuch's mal mit ''sudo apt-get install subversion''. '''Sebastian D 22Apr10 22:39''' Ok ich habe mir linux mit ubuntu und so Zeuge installiert. Jetzt verwende ich den Terminal von Linux und habe mich angemeldet aber den compiler meckert immer noch: ''mkdir <myfolder> bash: syntax error near unexpected token "newline"''. Also ich bin zuhause mit meinem Laptop nicht in der Uni. Soll ich diese svn irgendwie auch herunterladen? '''Dario 22Apr10 22:22''' @Daniel: Ja, man muss beim Kompilieren der Tests ''/usr/local/lib/libgtest.a'' mit angeben, sonst findet er die ganzen gtest Funktionen nicht. Steht aber auch in meinem Makefile aus der Vorlesung genau so. '''Hannah 22Apr10 20:20''' Okay, habs. {{{ $ g++ SumOfDivisorTest.cpp /usr/local/lib/libgtest.a }}} Wer Probleme beim compilieren der Test Datei hat sollte diesen Parameter mal probieren.''' Daniel 22Apr10 20:08''' {{{ $ g++ SumOfDivisorTest.cpp /tmp/cchDafPB.o: In function main: undefined reference to `testing::InitGoogleTest(int*, char**)' undefined reference to `testing::UnitTest::GetInstance()' undefined reference to `testing::UnitTest::Run()' }}} Ich habe mich an die kleine Anleitung von Axel Lehmann auf der [[ProgrammierenCplusplusSS2010/GTest|GTest Seite]] gehalten. gtest/make/sample1_unittest läuft ohne Probleme durch.''' Daniel 22Apr10 19:38''' @Tim: Bei solchen Anfragen bitte immer den RZ-Account nennen, sonst wissen wir nicht wo wir nachgucken sollen. '''Hannah 22Apr10 19:36''' Ich habe so meine Probleme mit Subversion. Ich habe per "svn add" mein uebungsblatt-1 Verzeichnis zum Repository hinzugefügt und dann mit "svn commit" bestätigt. Wenn ich jetzt aber mit "svn list" nachschauen möchte, ob der Ordner auch im Repository ist, werden mir dort nur die Dateien angezeigt, die dort von Anfang an drin waren. Mache ich irgendwas falsch oder habe ich sonst irgendwo einen Denkfehler? '''TimV 22Apr10 19:32''' |
Line 30: | Line 66: |
@Luc2, wenn du das Dokument schon offen hast: ":set number" eingeben! (nonumber zum ausschalten) <- Alex 23. Apr 9:17 |
Willkommen zum Wiki der Vorlesung '''Programmieren in C++''' im Sommersemester 2010
Die Vorlesung wird gehalten von Prof. Dr. Hannah Bast. Die Tutoren sind: Jens Hoffmann, Felix Ruzzoli, Oday Jubran, Robin Schirrmeister, Simon Skilevis, Tim Lechler, Yaser Öztürk.
Bitte hier klicken zum Registrieren. (Ab jetzt dürfen, und sollen, Sie!)
Wer Interesse an einem Linux-Crash-Course nächsten Montag hat, bitte hier klicken. (Wer sich von der ersten Vorlesung sehr überfordert gefühlt hat und keinen Schimmer hat, wie er / sie das erste Übungsblatt lösen soll, sollte sich auf jeden Fall auch anmelden.)
Wichtige Mitteilung: Liebe Teilnehmerinnen und Teilnehmer. Manche von Ihnen, speziell die, die bisher noch gar keine Programmiererfahrung hatten, haben sich sicher von der ersten Vorlesung etwas überfahren gefühlt. Machen Sie sich bitte keine Sorgen. Ich habe die erste Vorlesung extra ein wenig als Rundumschlag angelegt, damit man einen Eindruck bekommt was alles dazu gehört und sich die Erfahreneren nicht langweilen. Versuchen Sie einfach das erste Übungsblatt so gut wie möglich zu lösen. Die vier Dateien aus der Vorlesung finden Sie unten, und es ist nicht notwendig zu diesem Zeitpunkt die ganzen Details zu verstehen. Je nach den Ergebnissen der ersten Übungsblätter und dem Feedback was von Ihnen kommt, werden wir dann schauen in welchem Tempo und an welcher Stelle wir weitermachen.
Die Folien von den einzelnen Vorlesungen als PDF: Vorlesung 1.
Die Aufnahmen der Vorlesungen als AVI: Vorlesung 1.
Die Übungsblätter als PDF: Übungsblatt 1.
Erklärungen zu den diversen "Systemen" die Sie benutzen sollen: SVN, Make, GTest, Lint.
Hier die vier Dateien aus der Vorlesung 1 in einem ZIP Archiv: SumOfDigits.zip
Fragen und Kommentare zur Vorlesung 1 / Übungsblatt 1 (die neueste Frage zuoberst)
@Sebastian: (1) Ich persönlich finde 2010-04-22 22:27:32 nicht so richtig gut lesbar; (2) Die meisten Leute machen Änderungen ohne eingeloggt sein; (3) So richtig viel Arbeit finde ich es nicht sowas wie Xyz 23Apr10 12:00 zu schreiben. Ich würde von daher sehr gerne bei der jetzigen Version bleiben und bitte alle sich daran zu halten, sonst wird es nämlich unübersichtlich. Es ist im Grunde ganz ähnlich wie mit dem Stylesheet für unseren Code, da kann man auch drüber streiten ob jetzt zwei oder drei Leerzeichen Einrückung besser ist, oder ob man wirklich die öffnenden geschweiften Klammern in eine eigene Zeile setzen sollte. Das wichtigste bei der Sache ist aber Konsistenz, also dass es alle gleich machen. Hannah 23Apr10 12:04
Hi alle, im Pool gibt es ein Problem mit gtest, zumindest wenn man es so macht wie in der Vorlesung. Man muss beim kompilieren -pthread anhängen (zumindest gehts so bei mir :)).Beispiel aus der VL, so dass es im Pool geht: g++ -o SumOfDigitsTest SumOfDigitsTest.cpp /usr/local/lib/libgtest.a -pthread (muss im Makefile geändert werden). RobinS 23Apr10 11:53
Wer auf Windows besteht, kann übrigens auch Cygwin benutzen. Das ist allerdings nur für Leute zu empfehlen, die auch einigermaßen mit Linux klarkommen.
Eine Frage noch: Könnten wir nicht auf die Wiki-Signaturen (@SIG@ wird zu -- SebastianD 2010-04-22 23:27:32) umsteigen? Ich persönlich finde die schöner und weniger Mühe ist es allemal. SebastianD 23Apr10 00:26
@Dario (und alle anderen Linuxunwissenden): Ich hab mich letzte Nacht auch mit meiner Unwissenheit Ubuntu in der Virtualbox rumgeschlagen und bin damit nicht sehr weit gekommen (es tauchten bei sudo apt-get install subversion so lustigen Sachen auf wie Fehlermeldungen welche beim anschauen eine Fehlermeldung erzeugten, dass ich die Fehlermeldung nicht ansehen können weil es einen Fehler mit dem Programm gäbe welches die Fehlermeldung ausgelöst habe). Bin dann heute auf das hier http://stadt-bremerhaven.de/ubuntu-ohne-angst-auf-der-festplatte/ gestoßen, hab es ausgeführt und bin dann fast in meinen Monitor gehüpft weil es auch erst nicht ging. Aber dank dem hier http://wiki.ubuntuusers.de/Wubi#Start und vor allem der Problembeschreibung ganz unten läuft es nun alles ganz gut. Ich finde im Moment, dass es ein gutes Mittelding zwischen VirtualBox und eigener Linux-Partition ist. Ben 23Apr10 00:03
Das "<myfolder>" ist so gemeint, dass du dir einen beliebigen Namen für den Ordner ausdenken und den statt <myfolder> verwenden sollst. Der Fehler erscheint, da die Zeichen < und > mit einem Backslash ("\") escaped werden müssen (und hat auch nichts mit einem Compiler zu tun). Zu SVN noch: Falls der Befehl deinem Terminal unbekannt sein sollte, versuch's mal mit sudo apt-get install subversion. Sebastian D 22Apr10 22:39
Ok ich habe mir linux mit ubuntu und so Zeuge installiert. Jetzt verwende ich den Terminal von Linux und habe mich angemeldet aber den compiler meckert immer noch: mkdir <myfolder> bash: syntax error near unexpected token "newline". Also ich bin zuhause mit meinem Laptop nicht in der Uni. Soll ich diese svn irgendwie auch herunterladen? Dario 22Apr10 22:22
@Daniel: Ja, man muss beim Kompilieren der Tests /usr/local/lib/libgtest.a mit angeben, sonst findet er die ganzen gtest Funktionen nicht. Steht aber auch in meinem Makefile aus der Vorlesung genau so. Hannah 22Apr10 20:20
Okay, habs.
$ g++ SumOfDivisorTest.cpp /usr/local/lib/libgtest.a
Wer Probleme beim compilieren der Test Datei hat sollte diesen Parameter mal probieren. Daniel 22Apr10 20:08
$ g++ SumOfDivisorTest.cpp /tmp/cchDafPB.o: In function main: undefined reference to `testing::InitGoogleTest(int*, char**)' undefined reference to `testing::UnitTest::GetInstance()' undefined reference to `testing::UnitTest::Run()'
Ich habe mich an die kleine Anleitung von Axel Lehmann auf der GTest Seite gehalten. gtest/make/sample1_unittest läuft ohne Probleme durch. Daniel 22Apr10 19:38
@Tim: Bei solchen Anfragen bitte immer den RZ-Account nennen, sonst wissen wir nicht wo wir nachgucken sollen. Hannah 22Apr10 19:36
Ich habe so meine Probleme mit Subversion. Ich habe per "svn add" mein uebungsblatt-1 Verzeichnis zum Repository hinzugefügt und dann mit "svn commit" bestätigt. Wenn ich jetzt aber mit "svn list" nachschauen möchte, ob der Ordner auch im Repository ist, werden mir dort nur die Dateien angezeigt, die dort von Anfang an drin waren. Mache ich irgendwas falsch oder habe ich sonst irgendwo einen Denkfehler? TimV 22Apr10 19:32
Die URL ist tatsächlich falsch. Auf der SVN-Seite beginnt sie mit "svn-ad" und nicht mit "ad-svn". Damit hat der Checkout dann auch geklappt, danke. SebastianD 22Apr10 18:27
@Sebastian: Ich habe es gerade noch einmal probiert, und ich kann mit svn checkout http://ad-svn.informatik.uni-freiburg.de/teaching/cplusplus-ss2010/hb1003 hb1003 --username=hb1003 mein Unterverzeichnis auschecken. Bei solchen Problemen: Schicken Sie doch bitte eine Mail mit dem user name von Ihrem RZ-Account an Jens Hoffmann < jgk.hoffmann@googlemail.com >, und er schaut dann nach ob bei Ihrer Registrierung alles geklappt hat und Ihre Daten bei uns angekommen sind. Hannah 22Apr10 18:21
Blöde Frage, aber kann es sein, dass die URL zum Repository falsch ist? Could not resolve hostname `svn-ad.informatik.uni-freiburg.de': Der angegebene Host ist unbekannt. Ich habe es dann mit einem Punkt nach dem svn versucht: svn: Das Projektarchiv wurde zeitweilig nach »https://svn.ad.informatik.uni-freiburg.de:443/teaching/cplusplus-ss2010/meinlogindings« verschoben; bitte umplatzieren Also habe ich versucht, mir davon meine Kopie zu holen. Ergebnis war Error 200. SebastianD 22Apr10 18:18
Hi @all, ich werde heute abend eine Schritt-Für Schritt Anleitung fertig machen, die euch mit einem Video zeigen soll, wie man sich selbst ein Linux-System in einer virtuellen Maschine einrichtet, mit dem ihr dann alles habt, was ihr benötigt, um die Übungsaufgaben bearbeiten zu können. Mfg Tim 22Apr10 18:03
@Luc, http://lmgtfy.com/?q=vim+zeilennummer+anzeigen -> Das erste Ergebnis zeigt dir eine Step-By-Step Lösung auf. @Luc2, wenn du das Dokument schon offen hast: ":set number" eingeben! (nonumber zum ausschalten) <- Alex 23. Apr 9:17
Nächste Frage, auf meinem Mac habe ich auch mal den VIM Editor geöffnet, nur dass bei mir keine Zeihlenzahl angegeben ist. Muss ich ein Zusatzpacket installieren um die zu erhalten, oder gibts dafür eine Einstellung? Mfg Luc 22Apr10 17:14
@Tina: Hast du die Daten mit dem SVN abgeglichen? Wenn ja, dann sollte die Datei irgendwo lokal bei dir liegen und du solltest sie zB. mit nano öffnen können. Speichern kannst du da übrigens mit STRG+X. Sebastian 22Apr10 16:20
So, dank nettem Hiwi im RZ hab ich s geschafft eine Konsole unter Linux zu öffnen:-) Wie öffne ich nun die Datei daten.txt? Mit ls? Da kommt, dass die Datei nicht verfügbar ist obwohl ich mich eigentlich wie in der Beschreibung angemeldet habe. Tina
@Windows allgemein: Sie können das auch schon alles von einem DOS-Fenster unter Windows machen (das sind die schwarzen Fenster, die man als Normal-Benutzer unter Windows eigentlich nicht braucht, außer in Notfällen). Sie müssen sich dann halt so Programme wie den C++ Compiler und make und svn von Hand installieren, und auch die ganzen Standardbibliotheken. Auf einer Linux-Kiste ist das alles standardmäßig drauf. Es ist aber fuddelig und auch einfach unüblich die Sachen unter Windows von einer Konsole aus zu machen, und deswegen würde ich Ihnen das auch nicht raten. Und um es nochmal zu sagen, Sie müssen nicht viel von Linux verstehen um das zu machen, was wir für die Vorlesung brauchen. Und ein Window Manager mit Desktop und Fenstern, wie man das von Windows kennt, ist auch unter Linux / Unix schon lange Standard (das heißt dann da KDE oder GNOME oder so). Hannah 22Apr10 16:02
@Luc: Ja, ein MAC mit seinem Pseudo-Unix ist kein Problem. Sie werden ja die Konsole auch wirklich nur für ein paar ganz wenige und grundlegende Sachen brauchen, die Hauptsache werden schon die Programme sein die wir schreiben. Ich möchte halt nur nicht, dass Sie jetzt am Anfang schon eine integrierte Entwicklungsumgebung a la Eclipse oder NetBeans oder Visual C++ benutzen, weil man dann die Zusammenhänge auf der Ebene unten drunter nicht wirklich verstehen lernt, und das sollen Sie aber. Hannah 22Apr10 15:53
Hallo, was ist mit den MAC Usern? Viele terminal Befehle die unter Linux existieren, funktionieren auch unter MAC, nur jetzt ist halt die Frage, reicht das aus um alle Übungen schreiben zu können? Gruß Luc 22 Apr20 15:39
@Dario: Hallo Dario. Ich schlage dir zum Ausprobieren Ubuntu in einer Virtual Box vor. Die Virtual Box bekommst du hier: http://www.virtualbox.org/wiki/Downloads. Das neueste Ubuntu findest du z.B. hier: http://www.ubuntu.com/GetUbuntu/download. VBox installieren, Festplatte an Ubuntu angepasst erstellen, Ubuntu-iso-image einbinden und fertig. Es ist wirklich sehr einfach, einfach mal ausprobieren und bei Fragen noch einmal melden. Jens 22Apr10 14.57
Hallo, ich habe noch nie im meinem Leben Linux benutzt und deshalb kenne mich gar nicht aus. Ich habe Windows Vista und wollte fragen was für ein Version von Linux drauf machen konnte. Ich habe mich schon bei der Linux-crash-gruppe eingetragen aber wollte schon einiges ausprobieren. Ich lade gerade eine Ubuntu Version herunter , weil sie mir für Anfänger empfohlen wurde.Konnte mir jemand einfach seiner Meinung dazu sagen? Dario 22Apr10 10:47
Ein allgemeiner Hinweis noch zur Benutzung des Wiki: Wenn Sie sich anmelden (Link ganz oben links) können Sie eine Seite abonnieren. Sie bekommen dann immer eine E-Mail, sobald sich etwas an der Seite geändert hat. Das macht speziell bei dieser Seite hier mit den Fragen und Antworten hier Sinn. Es ist dann quasi wie eine Mailingliste. Wenn Sie selber etwas an der Seite ändern und es ist nur eine Kleinigkeit (z.B. Korrektur von einem Tippfehler o.ä.), setzen Sie bitte ein Häkchen in das Feld Triviale Änderung oben recht über dem Editierfeld. Damit verhindern Sie, dass bei trivialen Änderungen eine E-Mail an alle Leute geschickt wird, die die Seite abonniert haben. Wenn Sie aber etwas Substantielles zu der Seite hinzufügen, wie z.B. eine Frage, sollten Sie das Häkchen nicht setzen. Hannah 21Apr10 21:52
@Johannes: Das nennt man halt echte Teiler, siehe z.B. http://de.wikipedia.org/wiki/Echter_Teiler#Formale_Definition. Die Teiler die sowohl ungleich 1 als auch ungleich die Zahl selber sind nennt man nicht-triviale Teiler. Anyway, ist für die Aufgabe ja nicht wirklich wichtig. Hannah 21Apr10 21:45
Ich verstehe nicht ganz, wieso bei der Übungsaufgabe die 1 als echter Teiler angenommen wird, jedoch nicht die Zahl selbst. Sie teilt die Zahl doch auch ohne Rest. Johannes 21Apr10 20:44
Hier einfach eine Frage hinschreiben und dann am Ende mit Name, Datum und Uhrzeit "unterschreiben" so wie in dem Beispiel hier (bitte jeder in demselben Format). Hannah 21Apr10 00:36