Alles für C lernen

OP #2841377
Lesenswert?

Hallo Leute,

Nun hab ich mich entschlossen für meine Uc's C zu lernen da die 
Programme größer und unübersichtlicher werden... jetzt meine Frage muss 
ich wie es in den Tutorials steht C Standart komplett lernen oder nur 
die Wichtigsten Grundfunktionen..... welches Tutorial wäre denn am 
besten geeignet damit ich mit GCC anfangen könnte.

Mfg Bqube
Gast #2841400
Lesenswert?

Wenn du einen schnellen Einstieg willst, schau mal "C von A bis Z" vom 
Galileo Verlag - gibt's auch gratis und legal online. Wie ich finde, ein 
sehr anwendungsorientiertes Buch.

Falls du Student bist und Zugang zu SpringerLink hast (oder jemanden 
kennst) gibt's von Selberherr "Programmieren in C" gratis im 
SpringerLink.   Im Gegensatz zur sonstigen Springer-Literatur ist das 
Buch durchaus auch ausserhalb der Uni zu gebrauchen.  Du lernst hier C 
sehr genau, wenn du willst auf Experten-Niveau, aber es ist kein 
Crash-Kurs.

Diese Bücher sind allerdings nicht Mikrocontroller-spezifisch, das 
bedeutet, du lernst ganz normal und allgemein ANSI-C programmieren am PC 
in der Konsole (Textmode).  Das würde ich dir aber auch empfehlen, denn 
oft sind in den "C für AVR/PIC/..."-Stil-Bücher nur die notwendigsten 
Dinge oder und wenn du es am PC lernst, weisst du was ANSI-kompatibel 
ist und was nicht (also, z.b. dass es den sbit-Datentyp nicht in jedem 
Compiler gibt, obwohl Keil und MikroC ihn anbieten)
#2841577
Lesenswert?

Pierre Gnauck schrieb:
> Mir geht es nur darum das ich nicht alles über C lerne und am ende davon
> nur die Hälfte für meine Uc's brauche...
Das Forum ist voll mit Fragen von Leuten, die das auch glauben und ganz 
schnell mit irgendeinem Pillepallekram nicht weiterkommen.
Was willst du hören? Lern dies, lern das, lass das weg und das brauchst 
du auch nicht?
OK. Dynamische Speicherverwaltung kannst du wirklich weglassen.

mfg.
#2841716
Lesenswert?

Wer so eine Frage stellt, hat noch nicht verstanden, dass programmieren 
nichts mit dem Erlernen einer Programmiersprache zu tun hat.
Diese Erkentniss wird aber noch kommen ;-) ANSI-C hat gerade mal 32 
Schlüsselwörter, deren Bedeutung kann jeder an einem Nachmittag lernen. 
Kann derjenige danach C programmieren? Wohl kaum.
Eine Programmiersprache ich wie der Hammer für einen Zimmermann. Kannst 
du ein Haus bauen wenn ich dir einen Hammer gebe?

gruß cyblord
#2842216
Lesenswert?

Beim Mikrocontroller läuft in C aber einiges etwas anders ab, als beim 
PC-Programm. Daher finde ich die üblichen Bücher und (Uni-)Skripte nur 
bedingt brauchbar. Es gibt die Bücher "Mikrorechner mit Mikrocontrollern 
der XXX-Familie". Da sind dann auch Mikrocontroller-Taugliche Beispiele 
drin.
Für die 8051 gibt es zum Beispiel von Hitex ein knapp 100-Seitiges 
Dokument "C51 Primer". Das beschreibt nur Unterschiede bei der 
Programmierung in C auf einem Mikrocontroller...
Meinen Technikern gebe ich eine C-Kurzeinführung für den Controller mit 
(12 Seiten, dazu einige Beispielprogramme zum ausprobieren), für 
Grundlagen der Syntax gibt es von der FH Regensburg ein recht schönes 
Skript von Prof. Jobst, von dem die ersten paar Kapitel so allgemein 
sind, dass man sie auch für den uC nutzen kann. Ansonsten findet man 
allgemeine C-Einführungen an allen Ecken und Enden, so auch bei 
Wikibooks:
http://de.wikibooks.org/wiki/C-Programmierung
#2842229
Lesenswert?

Ich selber programmiere nur gelegentlich und wenn, dann nur C oder C#. 
Für C verwende ich allerdings nur ein Buch, den Rest lese ich mir im 
Internet an. Da ich nur gelegentlich programmiere reicht mir meist 
dieses Nachschlagewerk:

http://www.amazon.de/C-Programmieren-Anfang-Helmut-Erlenk%C3%B6tter/dp/3499600749/ref=sr_1_1?ie=UTF8&qid=1348170881&sr=8-1


Ich mag diese kompakten Bücher und wenn ich nur die ASCII Tabelle 
nachschaue ;), dieses Buch hat sich bei mir bewährt.
Gast #2842255
Lesenswert?

Die Fragestellung kann ich irgendwie nachvollziehen. Mein Problem ist 
auch nicht der Umgang mit der Programmiersprache, sondern die 
Algorithmik. Selbst wenn ich genau weiß, was die Sprache leistet, kenne 
ich noch lange nicht die notwendigen Algorithmen zur Lösung bestimmter 
Probleme. Und dass wird in KEINEM mir bekannten Buch über C oder eine 
andere Programmiersprache ausreichend erklärt. Ob es von Herrn 
Erlenkötter geschrieben ist oder von K&S. Das Lernen der Sprache ist 
nicht schwer, sondern das Finden und Nachvollziehen von Lösungsansätzen, 
was in jeder Programmiersprache fast immer gleich oder zumindest ähnlich 
abläuft. Z.B. die logische Zerlegung aller Aufgaben des Programms in 
nicht weiter zerlegbare Einheiten ist, finde ich, eine echte 
Herausforderung, welche das Programmieren ausmacht. Insbesondere die 
"Narrensicherheit" und Fehlerbehandlung kommen in fast allen Büchern zu 
kurz. Da habe auch ich noch arge Probleme. Ich kann zwar C-Programme 
nach gegebenem Struktogramm mit vorgegebenen Algorithmen schreiben, ohne 
großartige Fehler zu machen, aber das Nachvollziehen oder das 
selbständige Entwickeln fällt mir sehr schwer.
Gast #2842384
Lesenswert?

Naja, erinnerst Du Dich noch an die Grundschule? Ich hoffe Du hast sie 
besucht? Wie war das da mit dem Lesen und Schreiben? Haben eine handvoll 
Buchstaben gereicht, oder hat es erst mit allen Buchstaben gut 
funktioniert?

Und mit dem Rechnen? War der Zahlenraum bis 10 und "Plus" und "Minus" 
ausreichend? Oder braucht man mehr um irgendetwas sinnvolles zu rechnen?
Gast #2842388
Lesenswert?

> aber das Nachvollziehen oder das
> selbständige Entwickeln fällt mir sehr schwer.

Ist reine Übungssache. So wie eine Fremdsprache. Vokabeln pauken und 
Grammatik auswendig lernen reicht nicht. Am besten mal einige Monate 
sich im Fremdsprachen-Land aufhalten, das bringt sehr viel.

Mit der Übung kommt die Erfahrung. Mit der Erfahrung die Erkenntnis. Das 
dauert halt.
#2842389
Lesenswert?

Meisenmann schrieb:
> Die Fragestellung kann ich irgendwie nachvollziehen. Mein Problem ist
> auch nicht der Umgang mit der Programmiersprache, sondern die
> Algorithmik. Selbst wenn ich genau weiß, was die Sprache leistet, kenne
> ich noch lange nicht die notwendigen Algorithmen zur Lösung bestimmter
> Probleme. Und dass wird in KEINEM mir bekannten Buch über C oder eine
> andere Programmiersprache ausreichend erklärt.
Es gibt Bücher (und ganze Vorlesungsreihen(!) ) die sich allein mit 
Algorithmen beschäftigen. Das ist völlig unabhängig von der Sprache. 
Grundsätzlich kann jede Turing-Vollständige Programmiersprache jeden 
Algorithmus ablaufen.

> Z.B. die logische Zerlegung aller Aufgaben des Programms in
> nicht weiter zerlegbare Einheiten ist, finde ich, eine echte
> Herausforderung, welche das Programmieren ausmacht.
Genau, hier liegt die eigentliche Kunst. Und da kommt man mit keinem 
C-Buch hin. Da muss man a.) ein Händchen für haben und braucht b.) viel 
Erfahrung.

gruß cyblord
Gast #2842795
Lesenswert?

cyblord ---- schrieb:
> Es gibt Bücher (und ganze Vorlesungsreihen(!) ) die sich allein mit
> Algorithmen beschäftigen.

Ich mich in gerne intensiver und konkreter mit dieser Thematik befassen. 
hast Du gute Erfahrungen mit irgendeinem Buch gemacht? Diese Art 
Fachbücher ist leider nicht gerade billig und ich möchte mir den Griff 
ins Klo gerne ersparen.
#2842819
Lesenswert?

Meisenmann schrieb:
> cyblord ---- schrieb:
>> Es gibt Bücher (und ganze Vorlesungsreihen(!) ) die sich allein mit
>> Algorithmen beschäftigen.
>
> Ich mich in gerne intensiver und konkreter mit dieser Thematik befassen.
> hast Du gute Erfahrungen mit irgendeinem Buch gemacht? Diese Art
> Fachbücher ist leider nicht gerade billig und ich möchte mir den Griff
> ins Klo gerne ersparen.

Gibts bei dir in der nähe keine Uni? In der Regel kann jeder einen UB 
Ausweis bekommen und von dort Bücher ausleihen. Kaufen würde ich mir da 
erstmal keins. Und dann schauchst mal was die an Algo Büchern da haben.

gruß cyblord
Gast #2842829
Lesenswert?

Irgendeiner schrieb:

> Ist reine Übungssache. So wie eine Fremdsprache. Vokabeln pauken und
> Grammatik auswendig lernen reicht nicht. Am besten mal einige Monate
> sich im Fremdsprachen-Land aufhalten, das bringt sehr viel.
>
> Mit der Übung kommt die Erfahrung. Mit der Erfahrung die Erkenntnis. Das
> dauert halt.

Da gebe ich dir vollkommen Recht. Ich habe Programmieren nie auf eine 
systematische Weise, sondern durch anfangs abkupfern und anschliessendes 
modifizieren von Code aus Beispielen gelernt.  Solches Learning-by-doing 
geht aber nur, wenn man ein enormes Interesse aufbringt. Und man braucht 
viel Übung, nicht paar Tage sondern Jahre um es wirklich zu können.

Bernhard Spitzer schrieb:
> Beim Mikrocontroller läuft in C aber einiges etwas anders ab, als beim
> PC-Programm. Daher finde ich die üblichen Bücher und (Uni-)Skripte nur
> bedingt brauchbar. Es gibt die Bücher "Mikrorechner mit Mikrocontrollern
> der XXX-Familie". Da sind dann auch Mikrocontroller-Taugliche Beispiele
> drin.

Ja, aber da besteht die Gefahr, dass man z.b. Pointer nicht komplett 
versteht, oder dass man strukturierte Programmierung nicht lernt.

Ich habe zuerst normales C am PC gelernt, und die Umstellung auf 
Mikrocontroller dauerte genau 10 Minuten (OK, ich hatte davor schon 
Mikrocontroller in ASM programmiert)

Auch wenn manche sagen, malloc/calloc braucht man nicht.   Das stimmt 
zwar heute garantiert, aber was, wenn in einigen Jahren ARM9/11-artige 
MCUs mit viel RAM der Standard werden und so wie der Cortex-M3 auch im 
44-Pin-TQFP verfügbar und leicht anzuwenden sind?
Gast #2842843
Lesenswert?

Hi,

na wie immer sind wir hier ja mal wieder sehr freundlich...

Ein Buch zu dem Thema ist eine gute Grundlage und gehört dazu.

Eine Möglichkeit ist es das Zielorientiert zu machen. Du kannst das zwar 
alles  auswendig lernen, aber damit umzugehen lernt man dann gerade am 
uC eher mit der Praxis.

Ich würde mir Ziele setzen:

LED blinken lassen
LED nur blinken lassen wenn Schalter geschlossen

wären die ersten beiden Aufgaben.

Dann bist du bei den Kontrollstrukturen:

while und if

und den Bit- und Vergleichsoperatoren

Zudem lerst du parallel etwas zur Praxis (Verkabelung/Stromversorgung 
etc..), zur Programmierumgebung, zum Compiler, zur Installation und 
Zusammenspiel dieser, zum Programmer und dem ganzen drum rum.

Anschließend höhere Ziele stellen und mit dem c-Buch, diesem Forum, 
Tutorials und google weiter ausbauen. Je nach Programmierstiel 
kristallisieren sich dann bevorzugte Vorgehensweisen heraus. Das kann 
sehr unterschiedlich ausfallen und ist nicht mit JA oder NEIN zu 
beantworten.

Gruß,
Hannes

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren