Diskussion:C-Programmierung

Aus Wikibooks

Wechseln zu: Navigation, Suche

Inhaltsverzeichnis

[Bearbeiten] Fehlerausgaben des Compilers

Kann jemand die Fehlermeldungen des (GNU-(C(++)) Compilers auflisten, mit Hiweisen, was gerade verkehrt laufen könnte. Für Anfänger wäre das eine grosse Hilfe. Jürgen, 27.07.2006

[Bearbeiten] Titel des Buches

was hat c-programmierung mit dem laufwerkbuchstaben "c" unter windows zu tun? warum wurde als titel für dieses c-buch die windows-pfadangabe "c:\" verwendet? vor kurzem hies das buch doch noch "C-Programmierung". wer hat das gemacht und warum?

Das war Benutzer:Reader am 21. Dez 05. Habe Benutzer Diskussion:Reader gefragt warum, er antwortet nicht. -- Klaus Eifert 18:52, 18. Jan 2006 (UTC)
Zurückbenennen kann es nur ein Administrator. -- Klaus Eifert 19:11, 18. Jan 2006 (UTC)
Wäre nett wenn dies dann - vielleicht demnächst durch dich ? - auch geschehen würde... --Bastie 13:07, 29. Jan 2006 (UTC)

[Bearbeiten] Kapitel zu Variablen

Ich hab das Kapitel Variablen mal etwas nach hinten verschoben. Ich will den Anfänger nicht gleich mit Strukturen, Unions, Casts usw. überfordern. Eine kurze Einführen was Variablen überhaupt sind und den Unterschied zwischen Flieskommzahlen und einem Integer sollte für den Anfang genügen. Zunächst sollte den Anfänger in den Kapiteln Einfache Ein- und Ausgabe, Kontrollstrukturen und Funktionen aber erst ein paar praktische Beispiele kennen lernen. -- Daniel B 16:30, 2. Aug 2004 (UTC)

Strukturen und Unions hätten sowieso zu C-Programmierung: Komplexe Datentypen gehört. --Stefan Kögl 16:36, 2. Aug 2004 (UTC)

Ah, gut. Das war mir nicht bewusst. Hab die Änderung wieder Rückgängig gemacht. Ich gehe davon aus, dass in diesem Kapitel nur einfache Typen wie char, int, float und double behandelt werden. -- Daniel B 16:51, 2. Aug 2004 (UTC)

[Bearbeiten] Organisatorisches zum C-Buch

Ich bin der Meinung, dass das C-Buch auf dem besten Weg ist, ein eigenes Buch zu werden und ich finde, wir sollten es aus dem Programmierung-Buch herausnehmen. Damit könnten die Kapitel dann auch C-Programmierung: Kapitelname heißen.

Das war mir gar nicht bewusst, dass dieses Buch eine Untermenge des Buchs Programmierens darstellt. Könntest du bitte die Kapitel verschieben? Danke -- Daniel B 20:19, 15. Aug 2004 (UTC)
Ich würde es nicht verschieben. Das vorangestellte Programmierung: ist ja in diesem Fall eher eine Art Namensraum. Das waere ja vielleicht sogar mal eine eigene Diskussion wert ;) --Moolsan 08:46, 16. Aug 2004 (UTC)
Zum Kategorisieren gibts die Regale, also brauchen wir doch keine Namensräume. --Stefan Kögl 10:10, 16. Aug 2004 (UTC)
Auch wieder wahr ... Dem kann ich nichts mehr entgegensetzen :) --Moolsan 11:10, 16. Aug 2004 (UTC)
Schon geschehen; Programmierung:C (und alle Unterseiten) wurden nach C-Programmierung: verschoben --Stefan Kögl 13:09, 16. Aug 2004 (UTC)
Hab's schon gesehen. Ich bin auch gerade dabei die unnötigen Redirects zu löschen. Die Seiten die ich bisher noch nicht gelöscht habe werden noch auf anderen existierenden Seiten verlinkt. --Moolsan 13:12, 16. Aug 2004 (UTC)
Was hast du schon gelöscht? [1] zeigt die Seiten alle noch als existierend (also mit blauem Link) an. --Stefan Kögl 14:10, 16. Aug 2004 (UTC)
Siehe Wikibooks:Lösch-Logbuch. Ich weiss auch nicht warum die noch nicht rot markiert sind. Aber Inhalt haben sie keinen mehr ... --Moolsan 15:23, 16. Aug 2004 (UTC)
Vielleicht bleiben die Seiten erhalten, damit man die früheren Versionen wiederherstellen kann. Ist ja auch egal, oder? --Stefan Kögl 15:47, 16. Aug 2004 (UTC)
JA, grundsätzlich ist das so. Aber ich denke nach einer gewissen Zeitspanne werden die Links dann wieder rot dargestellt. Wir werden's ja sehen, und im Grunde ist es ja auch wirklich egal. Gruss --Moolsan 16:12, 16. Aug 2004 (UTC)
Ich bin im Moment dabei C mit dem Buch zu lernen. Eine sehr sinnvolle Ergaenzung waeren meiner Meinung nach Uebungsaufgaben.

-- samdelin 17:55, 19. Sep 2006 (CEST)

[Bearbeiten] Einordnung der Kapitel "Kompilierung" und "Ausdrücke und Operatoren"

Warum sind die Kapitel "Kompilierung" und "Ausdrücke und Operatoren" unter Einstieg eingeordnet. Währe es nicht besser diese unter "Referenzen" einzuordnen? -- Daniel B 18:11, 30. Aug 2004 (UTC)

Kompilierung sollte imho schon bleiben wo es ist. Den Operatoren-Teil des Artikels "Ausdrücke und Operatoren" könnte man eigentlich auch als Referenz einordnen. Dann sollte man aber die "Liste der Operatoren nach Priorität" in einen eigenen Artikel ausgliedern. --Stefan Kögl 20:18, 30. Aug 2004 (UTC)
Ist mir irgendwie immer noch nicht ganz klar, was der Teil Kompilierung hier macht. Er steht jetzt irgendwo zwischen Funktionen und Zeigern. Der Anfänger wird vermutlich noch vor dem Hello World Programm wissen wollen, wie er das Programm übersetzt bekommt. Ich hätte ihn für diesen Fall auf die Referenz verwiesen. -- Daniel B 19:41, 31. Aug 2004 (UTC)
Eine kurze Aneleitung zum Übersetzen des Programms möchte ich eigentlich noch bei den Grundlagen unterbringen. Das Kapitel Kompilierung war für eine grobe Beschreibung des Übersetzungsvorgangs und für ein paar Informationen zum Stack-Prinzip gedacht... und sollte, wenn ichs mir recht überlege zu den fortgeschrittenen Themen verschoben werden. OK? --Stefan Kögl 21:13, 31. Aug 2004 (UTC)
Vielleicht steh ich grad auf dem Schlauch. Aber was meinst du mit Stackprinzip? Ich kenne zwar den Stack als Datenstruktur bzw. bei Aufruf von Funktionen. Mir ist aber gerade nicht ganz klar, in welchem Zusammenhang dies mit dem Compiler stehen soll. -- Daniel B 17:34, 2. Sep 2004 (UTC)
Ich meinte damit, dass der Compiler dafür zu sorgen hat, dass bei einem Funktionsaufruf auf dem Stack ua Rücksprungadresse und Variablen im Funktions-Scope abgelegt werden. --Stefan Kögl 21:01, 2. Sep 2004 (UTC)
Für die grundlegende Verständnis von Linker, Compiler und Präprozessor finde ich das Stackprinzip eigentlich nicht wichtig. Eine wesentliche Bedeutung kommt ihm dagegen bei der Rekursion zu. Dort währe meiner Meinung eine Erklärung des Stacks und seiner Bedeutung beim Funktionsaufruf wesentlich besser aufgehoben. -- Daniel B 15:04, 3. Sep 2004 (UTC)
OK, dann bringen wir das dort unter. --Stefan Kögl 15:50, 3. Sep 2004 (UTC)
Das Kapitel Compiler also nun in die Referenz? -- Daniel B 16:02, 3. Sep 2004 (UTC)
Wenn wir bei den Grundlagen kurz erklären wie man sein Programm übersetzt, ja! --Stefan Kögl 16:32, 3. Sep 2004 (UTC)
Es währe auch möglich, dass Kapitel weiter nach vorne zu verschieben. Zwischen Verwendete Formatierung und Grundlagen könnte ich es mir auch gut vorstellen. -- Daniel B 16:47, 3. Sep 2004 (UTC)
Ich denke so ein umfangreiches und kompliziertes Kapitel am Anfang würde den Anfänger überfordern/abschrecken... Ich wäre für eine kurze Einleitung bei den Grundlagen und dem Rest als Referenz. --Stefan Kögl 18:20, 3. Sep 2004 (UTC)
Ich hab das mal im Kapitel Grundlagen versucht. Ist das in Ordnung? -- Daniel B 19:11, 3. Sep 2004 (UTC)
Also ich finds gut... --Stefan Kögl 20:06, 3. Sep 2004 (UTC)

[Bearbeiten] Cast oder Casting

Ich habe die Änderungen von P. Favor wieder rückgängig gemacht und "Cast" zu "Casting" geändert, weil ich der Meinung bin, dass das am ehesten dem Wort Typumwandlung entspricht. --Stefan Kögl 22:07, 30. Aug 2004 (UTC)

Suche in de.comp.lang.c ergibt: "casting": 169 Einträge, "cast": 1960 Einträge. Ich habe es deshalb wieder auf "Cast" geändert. --P. Favor 21:00, 16. Okt 2004 (UTC)
Nur weil ich die Disku grade überfliege ... cast gefällt mir ebenfalls besser, im beruflichen Alltag habe ich noch nie von casting, immer nur von cast gehört. Casting erinnert mich irgendwie auch zu sehr an eine Probevorstellung für Schauspieler und Sänger ;-). --Mkleine 21:04, 24. Jan 2005 (UTC)
Genau! :) Die vielen Casting-Shows und Casting-Bands haben zweifellos ihre Spuren in der deutschen Sprachwelt hinterlassen ... Übrigens ist cast nur eine bestimmte Art der Typumwandlung -> deshalb ganz raus mit dem Wort aus dem Inhaltsverzeichnis! --80.136.72.116 20:39, 25. Jun 2005 (UTC)

[Bearbeiten] Grundsätzlicher Aufbau

Ich habe ein bisschen hier im Buch gelesen und ich finde den Aufbau nicht ganz gelungen, weil zuviele Dinge eingeführt werden, die nicht erklärt sind. zB wird eine formatierte Ausgabe verwendet, die ein Anfänger nicht verstehen kann.

Meiner Meinung nach sollte man grundsätzliche Sachen zuerst klären:

  • Was sind die Schritte, um ein Programm zu erhalten und was geschieht jeweils?
    • Präprozessor
    • Compiler
    • Linker.
  • Wie ist ein Programm generell aufgebaut und wie läuft es ab?
    • imperative Programmiersprache
    • Funktionen, Einstiegspunkt bei main()
    • Funktionsaufruf, Kontrollstrukturen erwähnen
    • Was sind Headerdateien (informell)

Dann kann man mit realen Beispielen anfangen (ohne Pointer, also auch kein scanf())

  • Grundlagen
    • Quellcode-Formatierung
    • Ausdrücke
    • Anweisungen
    • Variablen + Basistypen, Gültigkeitsbereich.
    • Kontrollstrukturen
    • Funktionsaufrufe + Rückgabewerte
    • was passiert bei Parameterübergabe (Kopie!)
    • nochmal: genaue Funktion von Headerdateien

Ist das geschafft, ist der Weg frei, um sich schwierigeren Aufgaben zu widmen. --Sgop 22:35, 26. Sep 2004 (UTC)


Meiner Meinung nach sollte man grundsätzliche Sachen zuerst klären:

  • Was sind die Schritte, um ein Programm zu erhalten und was geschieht jeweils?
    • Präprozessor
    • Compiler
    • Linker.

Gute Idee. Ich denke das Kapitel Der Compiler sollte entsprechend erweitert werden.

  • Wie ist ein Programm generell aufgebaut und wie läuft es ab?
    • imperative Programmiersprache

Ein Verweis auf Programmieren im Vorwort (fehlt noch) dürfte hier ausreichend sein.

    • Funktionen, Einstiegspunkt bei main()

Hab ich mal entsprechend erweitert. Sollte nun eigentlich klar sein.

    • Funktionsaufruf, Kontrollstrukturen erwähnen

Wie ein Funktion aufgerufen wird dürfte am Beispiel von printf klar genug dargestellt sein. Mehr über Funktionen und Kontrollstrukturen sollte dann erst im entsprechenden Kapitel stehen. Bis zu diesem Zeitpunkt werden Funktionen ja ausschließlich aufgerufen.
Warum sollen Kontrollstrukturen bereits jetzt erwähnt werden? Ich denke man sollte den Anfänger nicht noch mit zusätzlichem Begriffen und Beispielen irritieren.

    • Was sind Headerdateien (informell)

Wird zugegeben nur kurz erwähnt. Ich denke es reicht aus, die Headerdatei dann erste wieder bei den Prototypen und beim Präprozessor zu erwähnen.

    • Dann kann man mit realen Beispielen anfangen (ohne Pointer, also auch kein scanf())

scanf erst bei Pointer einzuführen halte ich für überhaupt keine gute Idee. Dies aus zwei Gründen:

  • Ohne scanf werden die Beispiele sehr theoretisch. Beispiele die auch nur ein wenig einen praktischen Nutzen haben können dann nicht verwendet werden.
  • Bei & handelt es sich um einen Operator und keinen Pointervariable. Die Erklärung, dass der & - Operator die Adresse der Variable liefert und diese an scanf übergeben werden dürfte auch Anfänger nicht überfordern. (eventuell müsste aber noch genauer erklärt werden, was man unter Adresse der Variable gemeint ist).
  • Grundlagen
    • Quellcode-Formatierung

Könnte in der Tat noch in den Grundlagen Erwähnung finden.

    • Ausdrücke
    • Anweisungen

ich denke es reicht, wenn die Begriff ehr beiläufig eingeführt werden.

    • Variablen + Basistypen, Gültigkeitsbereich.

Wird im Kapitel Variablen ausführlich erklärt.

    • Kontrollstrukturen

Welchen Sinn macht es, diese bereits in den Grundlagen einzuführen?

    • Funktionsaufrufe + Rückgabewerte
    • was passiert bei Parameterübergabe (Kopie!)
    • nochmal: genaue Funktion von Headerdateien

Auf diese Bereiche wird später alle nochmals detailiert eingegangen.

Allgemein halte ich es nicht für sinnvoll C wie an einer Perlenschnur zu erklären. Es werden irgendwo immer Fragen auftauchen, die erst später geklärt werden können. Auch dies sollte noch entsprechend im Vorwort erwähnt werden. -- Daniel B 19:20, 27. Sep 2004 (UTC)


Meiner Meinung nach macht es Sinn Die Kapitel Fehlerbehandlung und Praeprozessor zu vertauschen, da sonst die erste Fehlerbehandlungsmethode nicht verstanden wird. --samdelin 17:17, 14. Sep 2006 (CEST)

[Bearbeiten] Kapitel Listen und Stacks

(Verkette) Listen und Stacks hatte ich eigentlich vor in einem Buch "Algorithmen und Datenstrukturen in C" zu erklären. Bei den zusammengesetzten Datenstrukturen sollte es eigentlich ehr um structs, unions und enums gehen. -- Daniel B 20:41, 24. Jan 2005 (UTC)

[Bearbeiten] Rechtschreibung

Mal etwas Grundsätzliches: Ich habe gerade diverse Rechtschreibfehler in mehreren Kapiteln korrigiert. Könnten die Leute, die Text ergänzen, diesen vielleicht noch mal kontrollesen? Macht ansonsten halt einen recht schlampigen Eindruck ...

[Bearbeiten] PDF

Gibts das buch auch als PDF? --Jonathan Hornung 14:12, 4. Aug 2005 (UTC)

Nein, weil das Buch noch lang nicht fertig ist. -- Daniel B 15:34, 4. Aug 2005 (UTC)
Und dann? --Jonathan Hornung 16:48, 5. Aug 2005 (UTC)

[Bearbeiten] Programmierstil

Vieleicht sollte man dort auch die Einrückarten beschreiben, erklären --Jonathan Hornung 08:59, 6. Aug 2005 (UTC)

Ich habe da gerade mal etwas hinzugefügt. Weil es echt viele Sachen sind, die man an
am Programmierstil machen kann, habe ich mich auf ein Beispiel konzentriert und auf indent verwiesen.
--Gnushi 19:17, 24. Nov 2005 (UTC)

[Bearbeiten] ToDo

Hier könnten wir Dinge aufführen, die noch getan werden müssen. Was mir gerade auffiel:

  • Operatoren (siehe Diskussion dort) unvollständig
  • Verlinkung der einzelnen Seiten überprüfen
  • Zeiger: muss erweitert werden: Zeiger auf Zeiger (für Matrizen)
  • stdarg-Schnittstelle, mit der man so tolle sachen machen kann wie print ("foo"); und print ("foo", "foo");, also unterschiedlich viele Parameter in den Funktionsaufruf unterbringen. --Gnushi 15:16, 5. Jan 2006 (UTC)
  • Referenzteil vervollständigen und mit Beispielen erweitern und innerhalb der Libraries ggf.nach Unterabschnitten strukturieren

--Kusick 21:15, 17. Jan 2006 (UTC)

  • Schleifen

(Vorstehender nicht signierter Beitrag stammt von 134.147.120.4 (DiskussionBeiträge). Nachgetragen von MichaelFrey 17:43, 7. Aug 2006 (UTC))

  • Code-Beispiele müssen alle den gleichen Programmierstil bekommen (Einrückungen, Zeilenumbruch vor/nach Klammern, ...), sonst werden die Abschnitte zum Programmierstil zur Farce.

[Bearbeiten] Einheitlicher Codestil

Moin,

ich bin dafür, daß der Code in diesem Buch einem einheitlichen Stil folgt. Welcher, ist mir recht egal, aber er sollte eines Lehrbuchs würdig sein.

Beim bisherigen Durchlesen ist mir aufgefallen:

  • Bei vielen printf-Anweisungen fehlt das "\n" am Zeilenende, oder es ist sogar am Zeilenanfang. Das ist definitiv nicht üblich, also sollte es auch in diesem Buch nicht so stehen.
  • Ich habe keine Begründung gefunden, warum %i verwendet wird, um Integer-Variablen auszugeben. Üblich ist %d.
  • Pointer werden nicht mit %u ausgegeben -- dafür gibt es %p.

Ansonsten sollten nur Beispielprogramme hier stehen, die einen Lauf mit gcc -W -Wall -Werror -Wstrict-prototypes -pedantic heile überstehen. Alles andere führt nur dazu, daß die Leser dieses Buches sich einen schlechten Programmierstil angewöhnen.

Um Programmtext einheitlich zu formatieren, schlage ich das folgende awk-Programm vor:

 awk '{printf(" '""'%02d'""'%s\n", NR, ($0 == "") ? "" : " " $0);}'

Es liest einen Programmtext von der Standardeingabe und fügt fettgeschriebene Zeilennummern davor.

Ich glaub, das reicht erstmal.

--RolandIllig 22:26, 8. Jan 2006 (UTC)

Tob Dich ruhig aus, das Buch kann noch einige Mitstreiter vertragen ;-) --Gnushi 21:51, 9. Jan 2006 (UTC)

[Bearbeiten] Strukturen

...die fehlen irgendwie. Oder gibt es die in C nicht?

siehe C-Programmierung: Komplexe Datentypen --62.47.55.60 23:42, 17. Okt. 2006 (CEST)

[Bearbeiten] Algorithmen und Datenstrukturen in C

Hallo. Das obengenannte Buch ist leider seit einiger Zeit verwaist. Es wäre sehr schade, wenn diese Inhalte mit einem LA untergehen müssten. Ich kenne mich mit der thematischen Organisation im Bereich C-Programmierung nicht so gut aus wie die an diesem Projekt Beteiligten. Falls ihr Zeit habt, könntet ihr bitte prüfen, ob ihr von den Inhalten was zu euch übernehmen wollt? Gruß -- Stefan M. aus D. 22:10, 17. Okt. 2006 (CEST)


[Bearbeiten] PDF Dokument

Könnte man auch eine druckbare PDF Datei bereitstellen? Danke!

Persönliche Werkzeuge