Ich habe das Tutorial AVR-GCC durchgearbeitet.
Hier ist keine konkrete Beschreibung zum Thema "Schleifen" enthalten.
Habe ich das übersehen?
Gibt es woanders ein deutsches Tutorial zu dem Thema?
Eine Schleife nutzt einen Rückwärtssprung im Programm, um Programmteile
wiederholt auszuführen, etwas ungenau ausgedrückt.
Google "C tutorial deutsch" ergibt viele gute Links
Maddin schrieb:> Ich habe das Tutorial AVR-GCC durchgearbeitet.> Hier ist keine konkrete Beschreibung zum Thema "Schleifen" enthalten.> Habe ich das übersehen?
Ja, anscheinend den 2. und 3. Satz des Tutorials.
Es werden doch aber auch z.B. Ganzzahlige Datentypen (Integer) erklärt.
Das sind doch auch Grundlagen. Folglich ist es nicht völlig falsch hier
auch nach einer Erklärung zum Thema "Schleifen" zu suchen.
Gibt es woanders ein deutsches Tutorial zu dem Thema?
Google findet viel zu ANSI-C, aber ist das auch immer zu AVR-GCC
kompatibel? Welche Fallen lauern bei der AVR-Programmierung? Um den Code
zu optimieren wollte ich mich mal intensiver mit dem Thema befassen.
Auch der Programmierstil wir oft als Argument genannt.
Entschuldigt bitte meinen Wissensdurst :-)
@ Maddin (Gast)
>Das sind doch auch Grundlagen. Folglich ist es nicht völlig falsch hier>auch nach einer Erklärung zum Thema "Schleifen" zu suchen.
Doch.
>Gibt es woanders ein deutsches Tutorial zu dem Thema?
Mann O Mann, was haben die Leute nur in der Prä-Tutorial Zeit gemacht?
Ein gutes Buch gelesen? GENAU!
>Google findet viel zu ANSI-C, aber ist das auch immer zu AVR-GCC>kompatibel?
Ja.
> Welche Fallen lauern bei der AVR-Programmierung?
Nicht zu viele.
> Um den Code>zu optimieren wollte ich mich mal intensiver mit dem Thema befassen.
Du bist noch lange nicht in der Lage, über das Thema Optimierung
nachzudenken. Du musst erstmal die Grundlagen und Praxis GRÜNDLICH
lernen. Dann kann man irgendwann mal was optimieren.
http://www.mikrocontroller.net/articles/AVR-GCC-Codeoptimierung#Prinzipien_der_Optimierung>Entschuldigt bitte meinen Wissensdurst :-)
Könnte schlimmer sein ;-)
Danke für die Hinweise.
Mit "Optimierung" meine ich eigentlich was anderes.
Ich möchte den richtigen/günstigsten Schleifentyp für das zu lösende
Problem einsetzen. Die Auswahl kann ich natürlich nur korrekt treffen
wenn die Schleifen genau kenne und konfigurieren kann.
Maddin schrieb:> Es werden doch aber auch z.B. Ganzzahlige Datentypen (Integer) erklärt.
Nö. Es werden nur die Dinge ergänzt, die Standard-C bewusst offen lässt
und es dem Compilerbauer bzw. der Architektuir überlässt da eine
sinnvolle Definition festzulegen.
Wenn du denkst, das was du im AVR-GCC-Tutorial über Integer gelesen
hast, sei alles was man über diesen Themenkreis und dem darüberliegenden
Themenkreis 'Datentypen' wissen muss, dann hast du dich kräftig
geschnitten.
Das AVR-GCC-Tutorial ist im übertragenen Sinne der Spezialkurs an
der Vokshochschule "Business English". Dort lernst du extensiv, wie im
englischen Sprachraum zb das Datum geschrieben wird, wie
Geschäftskorrespondenz aussieht, welche Phrasen wofür benutzt werden,
Anreden in Geschäftsbriefen, wie man firmenintern mit jemandem spricht,
sich vorstellt etc. etc.
Wenn du dich aber zu diesem Kurs anmeldest und vom Vortragenden erst mal
eine Einführung haben willst, wie das jetzt mit dem 'am', 'is', und
'are' funktioniert und wann man "the" als "sä" aussprocht und wann als
"si", dann wird dich der in den Kurs "Englisch I" schicken.
AVR-GCC-Tutorial ist der Spezialkurs: C auf dem AVR - welche
Spezialitäten gibt es, was findet man so nicht oder nicht so ausführlich
in den üblichen C-Büchern, was muss man wissen, damit man mit seinem
Basiswissen in C relativ problemlos in die AVR-Programmierung einsteigen
kann.
Es ist aber kein C-Kurs! Und war auch nie als solcher gedacht.
> Die Auswahl kann ich natürlich nur korrekt treffen> wenn die Schleifen genau kenne und konfigurieren kann.
Eun Grund mehr, sich einen K&R zu kaufen.
Maddin schrieb:> Gibt es woanders ein deutsches Tutorial zu dem Thema?
Und gleich noch einen drauf:
Fuer dieses Hobby brauchst Du zwingend Englischkenntnisse. Die
Datenblaetter, ohne die Du nicht auskommen wirst, sind alle englisch.
Also, lern Englisch oder such Dir ein anderes Hobby.
fonsana
> Ich möchte den richtigen/günstigsten Schleifentyp für das zu lösende> Problem einsetzen.
Selbst sowas macht heutzutage der Compiler alleine ...
Und Englisch ist wirklich ZWINGEND notwendig.
Für die Grundkenntnisse zwar nicht, aber wenn du mit µC anfängst zu
basteln, dann MUßT du das Datenblatt lesen (ca. 500 Seiten) und
verstehen ( UND ZWAR jeden Satz). Da gleiche für jedes zusätzliche IC,
jedoch nur ca. 50 Seiten.
Und du wirst ständig darin Informationen suchen ...
Also Englisch lernen ...
und zwar kein normales Englisch.
Am besten du nimmst dir nen Datenblatt von nem µC z.B.
http://www.atmel.com/Images/Atmel-2486-8-bit-AVR-microcontroller-ATmega8_L_datasheet.pdf
Danke für die umfassende Erklärung. Jetzt habe ich zwar keine Antwort
zum Thema Schleifen, aber den Tip ein Buch zu kaufen :-)
Englisch ist tatsächlich unverzichtbar, das habe ich auch schon oft beim
Lesen der Datenblätter festgestellt. Allerdings lese ich eine deutsche
Beschreibung deutlich lieber. Deshalb die Frage nach einer deutschen
umfassenden Beschreibung.
O.K. ich suche noch weiter im Netz (es gibt alles im Netz <trotzig
guck>) bzw. kaufe mir notfalls ein Buch.
Suche jetzt bitte nicht nach auf deutsch übersetzte Datenblätter.
Da treffen Übersetzungsfehler auf alte Datenblatt-Versionen.
Das führt dann zu Fehlern die man sich nicht erklähren kann.
Zum Thema Schleifen:
Wenn ich eine Schleife mit einer bekannten Anzahl von Durchgängen
durchlaufen will, verwende ich eine for-Schleife.
Wenn ich eine Schleife durchlaufen will bis ein gewisser Zustand
eintritt, verwende ich eine while bzw. do / while Schleife.
Das kann aber jeder machen wie es ihm besser gefällt.
Maddin schrieb:> Danke für die umfassende Erklärung. Jetzt habe ich zwar keine Antwort> zum Thema Schleifen,
1
while(Ausdruck)
2
Anweisung;
auf deutsch: Solange Ausdruck ein logisches 'Wahr' ergibt, führe
"Anweisung" aus. Der Schleifenkörper "Anweisung" kann auch nie
ausgeführt werden, wenn der Bedingungsausdruck von vorne herein schon
falsch ergibt.
1
do
2
Anweisung;
3
while(Ausdruck);
so ähnlich wie die erste Variante, nur dass die Prüfung der
Wiederholbedingung am Ende der Schleife erfolgt. Diese Schleife wird
also mindestens einmal ausgeführt, denn die erste Prüfung des Ausdrucks
erfolgt erst am Ende des Schleifenkörpers.
1
for(init;Ausdruck;Anweisung1)
2
Anweisung2;
der Fall ist ähnlich gelagert wie die erste while-Schleife, nur das hier
die Möglichkeit besteht, einen Initialisierteil bzw. eine zur Schleife
gehörende Anweisung an einer Stelle zusammenzufassen.
die for-Schleife ist identisch zu
1
{
2
init;
3
while(Ausdruck)
4
{
5
Anweisung2;
6
Anweisung1;
7
}
8
}
ihr häufigster Einsatzzweck ist eine sog. Zählschleife, bei der eine
Variable beginnend von einem Startwert hochgezählt wird, bis ein Endwert
erreicht ist. Zb bei der Programmierung von Arrays kommt sowas oft vor:
1
for(i=0;i<AnzahlElemente;i++)
2
mach_was_mit(Array[i]);
Die äquivalente Form als while Schleife wäre
1
{
2
i=0;
3
while(i<AnzahlElemente)
4
{
5
mach_was_mit(Array[i]);
6
i++;
7
}
8
}
In allen Fällen gilt die übliche C-Konvention: ein arithmetischer
Ausdruck, der das Ergebnis 0 hat, gilt als logisch Falsch, alles
ungleich 0 gilt als logisch Wahr.
Auch wenn in der Syntax der Schleifenkörper nur aus einer Anweisung
besteht, so kann man selbstverständlich dort auch mehrere Anweisungen
unterbringen, wenn man sich daran erinnert, dass eine Sequenz von
Anweisungen, eingeschlossen in {-} Klammern, ein sog. 'Block'
seinerseits als eine einzige Anweisung zählt.
Das war 'in a nutshell' das Wichtigste zum Thema Schleifen. Gleich nach
dem allerersten Programm, welches ein Neuling traditionell schreibt
1
#include<stdio.h>
2
3
intmain()
4
{
5
printf("Hallo world\n");
6
}
ist sein zweites Programm traditionell ein Programm mit Schleifen. Zb
ein Programm welches alle Zahlen von 1 bis 10 ausgibt, samt den
zugehörigen Quadratzahlen
1
#include<stdio.h>
2
3
intmain()
4
{
5
inti;
6
7
for(i=1;i<11;i++)
8
printf("%d: %d\n",i,i*i);
9
}
Schon alleine daran, dass bereits das 2-te Programm eines Neulings eine
for-Schleife enthält, kannst du erkennen, welche Bedeutung diese hat.
Und du kannst vielleicht ermessen, was dir dein Buch auf den restlichen
190 Seiten sonst noch so alles beibringen wird, von dem du bisher noch
nicht die geringste Ahnung hast und warum daher das Zusammentragen von
anlassbezogenem Achtelwissen durch Fragen in einem Forum nicht sinnvoll
ist. Hier bewegst du dich in einem Bereich, in dem man systematisch
Schritt für Schritt sein Grundlagenwissen aufbaut. Dass es dann
selbstverständlich noch Detailfragen geben kann und auch wird - kein
Thema. Da bist du dann im Forum gut aufgehoben.
Danke Danke Danke besonders an Karl Heinz Buchegger und Peter Dannegger.
Genau diese Infos in komprimierter Form habe ich gesucht. Jetzt habe ich
einen Überblick und verstehe (ein wenig) die Denkweise bei der
C-Programmierung.
So ein erster Einstieg ist sehr wichtig um nicht die Motivation zu
verlieren. Den Buchkauf werde ich mal überdenken.
Ihr habt einen C-Einsteiger glücklich gemacht, aber jetzt gehts ans
Programmieren und Basteln :-)
Tip:
Besorge Dir ein Buch über "Programmieren auf dem PC", das Dir eine
(kostenlose) Entwicklungsumgebung für den PC (z.B. VisualStudio)
mitliefert.
Es ist viel, viel einfacher, mit erklärten Beispielen auf den PC
programmieren zu lernen, als es gleich mit einem µC zu versuchen.
Maddin schrieb:> Den Buchkauf werde ich mal überdenken.> Ihr habt einen C-Einsteiger glücklich gemacht, aber jetzt gehts ans> Programmieren
Völlig falscher Weg.
Ist wie:
"ich habe mir ein Auto gekauft, jetzt fahre ich mal ein paar tausend
Kilometer und überlege dann, ob ich einen Führerschein mache."
Karl Heinz sollte sich eigentlich in den Hintern beissen daß er sich
soviel Mühe gemacht hat :-(
Udo Schmitt schrieb:> Völlig falscher Weg.> Ist wie:> "ich habe mir ein Auto gekauft, jetzt fahre ich mal ein paar tausend> Kilometer und überlege dann, ob ich einen Führerschein mache."> Karl Heinz sollte sich eigentlich in den Hintern beissen daß er sich> soviel Mühe gemacht hat :-(
Lieber Udo Schmitt
Ich kann dich beruhigen, der Karl Heinz muss sich nicht in den Hintern
beissen. Im Gegensatz zu dir hat er einen sehr informativen, hilfreichen
und interessanten Beitrag zu meiner Frage geschrieben. Diese
Informationen haben mir so sehr geholfen, das ich bereits zwei kleine
Projekte umsetzen konnte. Auch andere Leser dieses Forums profitieren
möglicherweise von diesem Beitrag.
Dein Beitrag ist möglicherweise gut gemeint, bringt jedoch auch einen
falschen Vergleich. Beim Programmieren kann man sorglos testen und dabei
was lernen (das ist auch das Ziel). Beim Autofahren sind Menschenleben
in Gefahr wenn man drauflos fährt.
Weiterhin ist in deinem Beitrag keine Information zur gestellten Frage
zu finden.
Danke an alle hilfreichen Leser und Schreiber in diesem Forum.
Maddin
Karl Heinz Buchegger schrieb:> Schon alleine daran, dass bereits das 2-te Programm eines Neulings eine> for-Schleife enthält, kannst du erkennen, welche Bedeutung diese hat.
Ich musste irgendwas kopieren.
Wieder mal: Lieber Karl Heinz, schreib doch mal ein Buch!
Du kannst das alles immer so toll erklären.
Auch wenn mir das jetzt nichts neues sagt (das kann ich schon) und ich
vermutlich dann kein Buch mehr brauche, würde ich es trotzdem kaufen.
Aber in jedem Fall würdest du einer Menge Leuten damit helfen.
Liebe Grüße
Frank
F. Fo schrieb:> Wieder mal: Lieber Karl Heinz, schreib doch mal ein Buch!
Und das kaufen und lesen dann die Leute nicht, die schon jetzt lieber
hier fragen statt ein Buch zu kaufen und zu lesen.
Marwin schrieb:> F. Fo schrieb:>> Wieder mal: Lieber Karl Heinz, schreib doch mal ein Buch!>> Und das kaufen und lesen dann die Leute nicht, die schon jetzt lieber> hier fragen statt ein Buch zu kaufen und zu lesen.
Ja, das hat der Karl Heinz ein kleines Problem: Mit seinen Programmier-
tipps hat er bei den Leuten sehr hohes Ansehen, nicht jedoch mit seinen
Buchtipps ;-)
So auch hier:
Karl Heinz Buchegger schrieb:> Eun Grund mehr, sich einen K&R zu kaufen.
Von diesem Tipp hält wohl keiner sonderlich viel, obwohl es sich dabei
sogar um einen Megamultitipp handelt, der nicht nur ein einzelnes
Problem, sondern nahezu unendlich viele löst.
Aber vielleicht wissen die Leute von heute einfach nicht mehr, wie man
ein Buch bedient. Da fehlt ja auch die Maus :)
Yalu X. schrieb:> Aber vielleicht wissen die Leute von heute einfach nicht mehr, wie man> ein Buch bedient. Da fehlt ja auch die Maus :)
Aber man kann mit einem Finger umblättern, fast wie auf dem Ihh Fon oder
Pät :-)