| Code Kitchen Allgemeines Coder-Forum rund um das Programmieren eigenständiger, ausführbarer Programme. |
Diskussion: Probleme bei C Programmierung im Forum Code Kitchen, in der Kategorie Software Home; Anzeige Hallo, ich habe vor ein paar Tagen ein Buch (GoTo C Programmierung von Guido Krüger, 1991) über Programmieren mit ...
![]() |
| | #1 (permalink) |
| Registriert seit: 26.12.10 ![]() Likes: 0 | Anzeige 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: Code: error: `main' must return `int'| ||=== Build finished: 1 errors, 0 warnings ===| 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");
} 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? 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 |
| | |
| | #2 (permalink) | |||||
| Moderator ![]() Registriert seit: 30.09.06 ![]() ![]() ![]() ![]() ![]() ![]() Likes: 441 | Zitat:
Indem du nicht 'void main(void)' verwendest, sondern 'int main(void)' und mittels return am Ende einen richtigen Rückgabewerte definierst, z.B. 'return 0;'. Zitat:
Code::Blocks ist kein Compiler, sondern eine IDE. Davon gibt's diverse. Inwiefern sie übersichtlicher sind, dürfte Geschmackssache sein. Am einfachsten installierst du dir erstmal einen reinen Compiler wie GCC, einen Debugger wie GDB und einen Text-Editor mit Syntax-Highlighting. Dann lernst du wenigstens auch die Grundlagen und erfährst so, was im Hintergrund bei so einer IDE abläuft. Zitat:
Zitat:
Zitat:
Auf deine Fragen zu Code::Blocks kann ich leider sonst kaum eingehen, da ich diese IDE nicht kenne.
__________________ Mein Blog - Mein Job - Diaspora Der Ring uns zu knechten besteht aus 12 Sternen auf blauem Grund. Neue Beiträge im Habo via Twitter - Das HaBo auf FB - Das HaBo bei G+ | |||||
| | |
| HaBOT | - Anzeige - |
| |
| | #3 (permalink) | |
| Registriert seit: 03.04.11 ![]() Likes: 10 | Zitat:
2) Es sollte heißen: Code: int main () { ...
} 7) Leider ist dein erster Fehler schon der, dass du denkst Code::Blocks ist ein Compiler. CB ist nur eine IDE und dort ist IMO als Standard Compiler GNU-GCC eingestellt (oder war es mingw?). Schau dir bitte erstmal die Grundlagen an: Was ist ein Compiler und was eine IDE? 9)10) Naja. Java wäre sicherlich einfacher. C++ nicht. Problem ist, wenn du mit C++ direkt arbeitest und dort eventuell mit Code anfängst der C Funktionen (was gerne mal der Fall ist) benötigt, dann fängste an von C++ Klassen zu C Datentypen zu casten, dass endet dann im Prinzip in noch komplexeren Sachen als du in C hast + Objektorientierung, weil das nunmal der wesentliche Unterschied zwischen C und C++ ist. Ich würde sagen: Mach einfach mit C weiter. Wenn es dir wirklich viel zu schwer ist, dann lerne erstmal Java und lerne Grundlagen über Klassen und Objekte. Die Syntax ist sehr ähnlich zu C/C++, wenn du dann Pointer verstehst kannste auch recht schnell was in C/C++ schreiben. Man benötigt dann aber oft Hilfe, weil Java viel mehr Funktionen bzw. diese oft viel kompakter anbietet.EDIT: Da war wohl jemand schneller. Als IDE könnte ich übrigens auch noch Eclipse CDT empfehlen. Geändert von Tsjuder (30.01.12 um 13:14 Uhr) | |
| | |
| | #4 (permalink) |
| Registriert seit: 31.07.11 ![]() Likes: 1 | Zum Thema Debugging: Wenn du in C::B die Debug Symbole setzt (Project-Type muss auch Debug und nicht Release sein) , dann musst du , um diese zu verwenden, mit [Debug -> Start] starten. Der Debugger hält dann an dem Stellen , die du markiert hast , und du kannst dich Zeile für Zeile , o.ä. durch den Code klicken(/hotkeyen ).Währenddessen kannst du sog. watches auf Variablen setzen(Rechtsklick -> Set Watch (oder so)). Dann gibt es noch in der Debug-Leiste eine Option , in welcher du das Fenster mit diesem Watches anzeigen lassen kannst. Dort kannst du dann auch auf Binär,Hex oder Octal umschalten. Ich hoffe ich hab jetzt nicht mit Kanonen auf Tauben geschossen und du kannst damit was anfangen. Viele Grüße nt0r
__________________ Nützt die Feder nichts , ist der Schreiber schuld ![]() |
| | |
![]() |
| - Anzeige - | |
| |
| Themen-Optionen | |
| Ansicht | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Windows 7 Ultimate 64 - Probleme, Probleme und noch mehr Probleme | enkore | Die Problemzone | 7 | 08.12.10 23:50 |
| C E17 EWL GUI Programmierung | gugugs | Linux/UNIX | 1 | 01.06.10 21:02 |
| Programmierung | AaFreak | HaBo-Marktplatz | 14 | 17.03.09 08:38 |
| GUI Programmierung mit D | umbrella | Code Kitchen | 4 | 05.02.07 00:38 |
| pic programmierung | Sodawasser | Code Kitchen | 3 | 01.10.04 19:33 |