Hallo,
ich habe vor ein paar Tagen ein Buch (GoTo C Programmierung von Guido Krüger, 1991) über Programmieren mit C gekauft und habe angefangen C zu lernen. Dazu habe ich jetzt ein paar Fragen.
In dem Buch gibt es eine CD mit einem Compiler drauf GNU-C 2.7.2. Da mein CD-Laufwerk kaputt ist, habe ich mir einfach einen Compiler aus dem Internet runtergeladen. GNU-C 2.7.2 konnte ich nicht finden, von daher habe ich mir Code::Blocks runter geladen.
Wenn ich jetzt einige Beispiele aus dem Buch abtippe, und in Code::Blocks starte, kommt manchmal ein anderes Ergebnis raus, als das was im Buch beschrieben wird. Manchmal startet das Programm auch gar nicht. Ein Programm hat beispielsweise erst falsche Werte ausgegeben, als ich es dann später noch mal abgeschrieben habe, um sicher zu gehen, dass ich keinen Tippfehler drin habe, startete es gar nicht mehr. Hier das Beispiel Programm. Es soll checken, ob in der Bitdarstellung der eingegebenen Zahl 3 Einsen nebeneinander stehen. Es lässt sich nicht Compilieren. Wennich es Compilieren will kommt die Fehlermeldung:
Hier der Programmtext
Wenn ich die Zeile mit Int am Anfang vor die geschweifte Klammer ziehe kommt die gleiche Meldung.
Bevor dieser Fehler aufgetreten isr, ich das Programm also starten konnte, hat es auch nicht funktioniert, sondern einfach immer behauptet, dass es einen Bitdrilling gäb, auch wenn das nicht so war. Woran kann das liegen?
Kann es sein dass die Beispiele in dem Buch nur für den GNU-C Compiler von 1991 gedacht sind und auf neueren Compilern wie dem aktuellen Code::Blocks nicht funktionieren?
Oder ist es einfach ein Druckfehler im Buch? Wie müsste der Programmtext dann lauten?
Ein anderes Problem was ich habe ist das Debuggen. Zuerst habe ich, immer wenn ich ein neues Prog schreiben wollte, einen neuen File geöffnet.
Da konnte ich die ganzen Debug symbole nciht anklicken, weil sie grau hinterlegt waren. Auch auf Project>Building Options konnte ich ncihts einstellen, weil building options auch grau hinterlegt war.
Ich habe dann im Internet gelesen, dass ich einfach ein Project starten soll, dann kann man die Debugdinger verwenden. Das stimmt auch soweit. Ich kann die jetzt alle anklicken. Ich hab dann auch die Building Options so eingestellt wie empfohlen. Das Problem war nur, dass ab da alle Programme die ich bisher geschrieben hatte, die ich dann in das Project geladen habe, nciht mehr funktioniert haben. Die ließen sich zwar compilieren und starten, aber sobald man einen Wert eingegeben hat, ist das Programm abgestürzt.
Das wäre also die erste Frage, wieso die Programme immer abstürzen, wenn sie in ein Project geladen werden und was man dagegen machen kann, bzw. ob man die Debugfunktionen auch in normalen Files verwenden kann.
Die andere Frage bezieht sich auf die Debugfunktionen. Ich habe bisher nur Erfahrungen mit VBA. Da bin ich das von der Debugfunktion so gewohnt, dass ich einen Punkt setzen kann und dann das Programm zeile für Zeile ablaufen lassen kann und so dann z.B. alle Werte die Variablen nach dieser Zeile haben abchecken kann. Die Punkte kann ich zwar in C::B auch setzen, aber ansonsten kann ich mit den Debug Funktionen sehr wenig anfangen. Da kommt für mich nur unverständliches Zeug oder gar nichts.
Kann mir vielleicht einer die Debugfunktionen erklären, oder kennt ihr eine Seite wo das (am besten auf Deutsch) erklärt wird?
Also alles in allem muss ich sagen, dass ich Code::Blocks ziemlich unübersichtlich finde. Ich habe bisher aber keinen Besseren Compiler gefunden. Sollte ich vielleicht den Compiler wechseln? Oder sind alle Compiler so und ich sollte mcih besser einfac nur an C::B gewöhnen?
Zudem ist mir aufgefallen, dass C ziemlich kompliziert ist für Allgemeine Programmier-Neueinsteiger (meine VBA Kenntnisse sind sehr gering).
Bei vielen Dingen weiß ich gar nicht was damit gemeint ist. Z.B. diese ganzen Sachen mit Zeigern usw. Ich habe mir jetzt zwar noch ein Buch über EDV-Grundlagen geholt, wo auch die ganzen Mathematischen Sachen erklärt werden, wie Binärsystem usw. aber trotzdem sind da teilweise echt schwer nachvollziehbare Sachen bei.
Von daher habe ich überlegt, ob ich vorher vielleicht eine andere Sprache lernen soll, die einfacher ist, wo ich dann erst mal einfacher verstehen kann, was ich da überhaupt programmiere. Dabei dachte ich dann an Java oder C++. Die wollte ich sowieso lernen, aber eigentlich erst nach C, weil man mir gesagt hat, dass C die Grundlage wäre.
Meine Zielsetzung ist das Programmieren von Ingenieurwissenschaftlichen Programmen. Außerdem will ich mit wachsenden Kenntnissen auch anfangen Programmiertechnische Experimente durchzuführen. Von daher dachte ich C wäre auch gut dafür geeignet, weil man so näher an der Hardware programmieren kann und so damit nichts was die Ergebnisse irgendwie verfälschen könnte ohne, dass man es weiß, zwischen dem Programm und der Hardware steht.
Ich fasse noch mal alle meine Fragen zusammen:
1)Geben alle Compiler unabhängig von ihrem Alter bei gleichem Programmtext das gleiche aus?
2)Wie bekomme ich das gepostete Programm ans laufen?
3)Warum wirft das Programm die falschen ergebnisse aus?
4)Wie kann ich auch in Files die Debugfunktionen nutzen?
5)Wie benutze ich die Debugfunktionen?
6)Warum funktionieren meine alten (File)Programme nciht, wenn ich sie in ein Project lade?
7)Gibt es bessere, übersichtlichere Compiler als Code::Blocks?
8)Wäre es bei meiner Zielsetzung sinnvoller erst mal Java oder C++ zu lernen um grundlegende Programmierkonzepte zu lernen, oder soll ich an C dran bleiben und vielleicht ein weiteres Buch lesen, wo Grundlagen der Programmierung erklärt werden?
9)Wenn ich an C dran bleiben soll welches Buch könnt ihr für Programmiergrundlagen empfehlen?
10)Wenn ich besser erst Java oder C++ lernen soll, was soll ich dann von beidem lernen?
Ich hoffe ihr könnt mir da helfen.
Vielen Dank schon mal im Voraus =)
ich habe vor ein paar Tagen ein Buch (GoTo C Programmierung von Guido Krüger, 1991) über Programmieren mit C gekauft und habe angefangen C zu lernen. Dazu habe ich jetzt ein paar Fragen.
In dem Buch gibt es eine CD mit einem Compiler drauf GNU-C 2.7.2. Da mein CD-Laufwerk kaputt ist, habe ich mir einfach einen Compiler aus dem Internet runtergeladen. GNU-C 2.7.2 konnte ich nicht finden, von daher habe ich mir Code::Blocks runter geladen.
Wenn ich jetzt einige Beispiele aus dem Buch abtippe, und in Code::Blocks starte, kommt manchmal ein anderes Ergebnis raus, als das was im Buch beschrieben wird. Manchmal startet das Programm auch gar nicht. Ein Programm hat beispielsweise erst falsche Werte ausgegeben, als ich es dann später noch mal abgeschrieben habe, um sicher zu gehen, dass ich keinen Tippfehler drin habe, startete es gar nicht mehr. Hier das Beispiel Programm. Es soll checken, ob in der Bitdarstellung der eingegebenen Zahl 3 Einsen nebeneinander stehen. Es lässt sich nicht Compilieren. Wennich es Compilieren will kommt die Fehlermeldung:
Code:
error: `main' must return `int'|
||=== Build finished: 1 errors, 0 warnings ===|
Hier der Programmtext
Code:
#include<stdio.h>
void main(void)
{
int zahl, einsen, i;
printf("Geben sie eine Intzahl ein:\n");
scanf("%d",&zahl);
einsen=0; i=8*sizeof(int);
while (i-- && einsen<3){
einsen=(zahl&1)? einsen+1:0;
zahl>>=1;
}
einsen>=3?
printf("Drilling!\n"):
printf("Kein Drilling");
}
Wenn ich die Zeile mit Int am Anfang vor die geschweifte Klammer ziehe kommt die gleiche Meldung.
Bevor dieser Fehler aufgetreten isr, ich das Programm also starten konnte, hat es auch nicht funktioniert, sondern einfach immer behauptet, dass es einen Bitdrilling gäb, auch wenn das nicht so war. Woran kann das liegen?
Kann es sein dass die Beispiele in dem Buch nur für den GNU-C Compiler von 1991 gedacht sind und auf neueren Compilern wie dem aktuellen Code::Blocks nicht funktionieren?
Oder ist es einfach ein Druckfehler im Buch? Wie müsste der Programmtext dann lauten?
Ein anderes Problem was ich habe ist das Debuggen. Zuerst habe ich, immer wenn ich ein neues Prog schreiben wollte, einen neuen File geöffnet.
Da konnte ich die ganzen Debug symbole nciht anklicken, weil sie grau hinterlegt waren. Auch auf Project>Building Options konnte ich ncihts einstellen, weil building options auch grau hinterlegt war.
Ich habe dann im Internet gelesen, dass ich einfach ein Project starten soll, dann kann man die Debugdinger verwenden. Das stimmt auch soweit. Ich kann die jetzt alle anklicken. Ich hab dann auch die Building Options so eingestellt wie empfohlen. Das Problem war nur, dass ab da alle Programme die ich bisher geschrieben hatte, die ich dann in das Project geladen habe, nciht mehr funktioniert haben. Die ließen sich zwar compilieren und starten, aber sobald man einen Wert eingegeben hat, ist das Programm abgestürzt.
Das wäre also die erste Frage, wieso die Programme immer abstürzen, wenn sie in ein Project geladen werden und was man dagegen machen kann, bzw. ob man die Debugfunktionen auch in normalen Files verwenden kann.
Die andere Frage bezieht sich auf die Debugfunktionen. Ich habe bisher nur Erfahrungen mit VBA. Da bin ich das von der Debugfunktion so gewohnt, dass ich einen Punkt setzen kann und dann das Programm zeile für Zeile ablaufen lassen kann und so dann z.B. alle Werte die Variablen nach dieser Zeile haben abchecken kann. Die Punkte kann ich zwar in C::B auch setzen, aber ansonsten kann ich mit den Debug Funktionen sehr wenig anfangen. Da kommt für mich nur unverständliches Zeug oder gar nichts.
Kann mir vielleicht einer die Debugfunktionen erklären, oder kennt ihr eine Seite wo das (am besten auf Deutsch) erklärt wird?
Also alles in allem muss ich sagen, dass ich Code::Blocks ziemlich unübersichtlich finde. Ich habe bisher aber keinen Besseren Compiler gefunden. Sollte ich vielleicht den Compiler wechseln? Oder sind alle Compiler so und ich sollte mcih besser einfac nur an C::B gewöhnen?
Zudem ist mir aufgefallen, dass C ziemlich kompliziert ist für Allgemeine Programmier-Neueinsteiger (meine VBA Kenntnisse sind sehr gering).
Bei vielen Dingen weiß ich gar nicht was damit gemeint ist. Z.B. diese ganzen Sachen mit Zeigern usw. Ich habe mir jetzt zwar noch ein Buch über EDV-Grundlagen geholt, wo auch die ganzen Mathematischen Sachen erklärt werden, wie Binärsystem usw. aber trotzdem sind da teilweise echt schwer nachvollziehbare Sachen bei.
Von daher habe ich überlegt, ob ich vorher vielleicht eine andere Sprache lernen soll, die einfacher ist, wo ich dann erst mal einfacher verstehen kann, was ich da überhaupt programmiere. Dabei dachte ich dann an Java oder C++. Die wollte ich sowieso lernen, aber eigentlich erst nach C, weil man mir gesagt hat, dass C die Grundlage wäre.
Meine Zielsetzung ist das Programmieren von Ingenieurwissenschaftlichen Programmen. Außerdem will ich mit wachsenden Kenntnissen auch anfangen Programmiertechnische Experimente durchzuführen. Von daher dachte ich C wäre auch gut dafür geeignet, weil man so näher an der Hardware programmieren kann und so damit nichts was die Ergebnisse irgendwie verfälschen könnte ohne, dass man es weiß, zwischen dem Programm und der Hardware steht.
Ich fasse noch mal alle meine Fragen zusammen:
1)Geben alle Compiler unabhängig von ihrem Alter bei gleichem Programmtext das gleiche aus?
2)Wie bekomme ich das gepostete Programm ans laufen?
3)Warum wirft das Programm die falschen ergebnisse aus?
4)Wie kann ich auch in Files die Debugfunktionen nutzen?
5)Wie benutze ich die Debugfunktionen?
6)Warum funktionieren meine alten (File)Programme nciht, wenn ich sie in ein Project lade?
7)Gibt es bessere, übersichtlichere Compiler als Code::Blocks?
8)Wäre es bei meiner Zielsetzung sinnvoller erst mal Java oder C++ zu lernen um grundlegende Programmierkonzepte zu lernen, oder soll ich an C dran bleiben und vielleicht ein weiteres Buch lesen, wo Grundlagen der Programmierung erklärt werden?
9)Wenn ich an C dran bleiben soll welches Buch könnt ihr für Programmiergrundlagen empfehlen?
10)Wenn ich besser erst Java oder C++ lernen soll, was soll ich dann von beidem lernen?
Ich hoffe ihr könnt mir da helfen.
Vielen Dank schon mal im Voraus =)