Hallo zusammen, konkret geht es hier um Arduino, das lerne ich gerade, dabei ist mir ein riesen Fragezeichen gewachsen, welches ich selbst nicht weg machen kann. Ich sehe sehr viele Codes/Sketches, in denen bei u.A. "If"-Abfragen keine "{}"-Klammern gesetzt werden, die einzige Logik, die ich dabei gesehen habe, ist, dass es dann in einer Zeile geschrieben steht und diese mit einem Semikolon ";" abgeschlossen wird, als ich mich über "int, byte, uint, void..." informiert habe, habe ich gesehen, dass sie ebenso mit und ohne Klammern genutzt werden, die ersteren meistens ohne. Jetzt habe ich einen Sketch gefunden, in dem das aber nicht alles in einer Zeile steht, aber jede Zeile wie üblich mit ";" abgeschlossen ist. Von der Logik her gehört das aber alles zusammen. Kann den Code in der mobilen Version leider nicht copy&pasten, daher hänge ich mal einen Screenshot dran und hier der Link dazu: http://www.arduinoforum.de/arduino-Thread-Menü-u-Submenü-von-Ricardo-Durchlaufproblem Ich bastele gerade an einem Code und er wird sehr lang wegen den eigentlich kurzen Abfragen, also wäre es nur ordnungshalber schon sehr vorteilhaft sie ohne Klammern zu nutzen, wie man Codes ordentlich gestaltet war das Erste, was ich ergooglet und verinnerlicht habe. Könnt ihr mich da bitte aufklären?
naja, kann letztlich jeder machen wie er will, solange er alleine arbeitet... Ich für meinen Teil schreibe immer Klammern, auch wenn es nur eine Anweisung drin ist. Das finde ich lesbarer als ohne.
Hilf dir selbst, so hilft dir Gott! Netter gesagt: Lerne C richtig, von Grund auf! Das mit den Klammern verstehst du, wenn du lernst was sie bedeuten. Das ist aber so, wie wenn du den Unterschied zwischen "a" und "A" wissen willst, um deutsch zu verstehen... Schaue im Internet nach einem C-Tutorial. Wenn du genügend Durchhaltevermögen hast, kommst du mal zur Stelle mit dem "; ( {"
Bei if, for, do...while usw. darf immer nur ein Befehl stehen. Benutzt man die Klammern{}, gilt dieser Block als ein Befehl. Jeder Befehl muss mit einem ; enden, jedoch nicht ein {} Block. Falls dich das case irritiert, das sind einfach nur Befehle hintereinander, die gehören nicht als Block zusammen. In switch wird aber in der Regel im Case am Ende ein break geschrieben, weil sonst geht es mit den Befehlen im nächsten Case weiter. Du kannst schreiben: if (a==b) tuwas(); oder if (a==b) { tuwas(); } wobei die zweite Form empfehlenswerter ist. In einer vernünftigen Programmiersprache ist es dann wieder ganz anders, da ist bei if ein {} Block zwingend, dafür kann man () und ; weglassen: if a==b { tuwas() }
Alter Hase schrieb: > Schaue im Internet nach einem C-Tutorial. Das ist ein eher schlechter Rat. Such Dir lieber ein gutes C-Buch wie den K&R. Diese Sprache versteht man sonst eher nicht.
Wil schrieb: > als ich mich über > "int, byte, uint, void..." informiert habe, habe ich gesehen, dass sie > ebenso mit und ohne Klammern genutzt werden, die ersteren meistens ohne.
1 | int b = 5; |
2 | double a = (double)b; |
Wenn du damit sowas meinst: Das nennt sich typecast Operator und wird zur Typumwandlung benutzt.
Entschuldigung erstmal für die später Rückmeldung, war beim Rehasport. Danke Fritz, 99%, hab vergessen zu erwähnen welchen Teil ich exakt meine, zwischen "while" und "return", weil es ja der Befehl sein soll, mit dem man im Menü zurück kommt. Wird da der "return" erst abgerufen, wenn im "while" die Bedingung erfüllt wird? Danke euch vielmals, du, T., sollst natürlich auch einem besonderen Dank kriegen, für genaue Bezeichnungen bin ich immer sehr dankbar. An den Rest: Danke für eure Bemühungen, aber solche Ratschläge sind total sinnlos, jeder hat seine eigene Art zu lernen, bei mir ist die Notwendigkeit das Wichtigste nach dem Interesse, d.h. dass ich nichts lerne, wenn ich stupide riesige Texte lese, die von Fachleuten, in Fachsprache und aus der Sicht von Fachleuten geschrieben sind, ich probiere, wenn ich an meine Grenzen stoße, frage ich Leute, die es drauf haben, nicht nur fachlich, sondern auch die Sicht von Anfängern kennen und es ihnen so klar machen können, z.B. in dem sie die Fachbegriffe immer im Zusammenhang mit einem konkreten Fall benutzen.
Tschuldigung Klaus, hab dich vergessen, für solche Tipps bin ich auch immer dankbar, finde auch, dass es so deutlicher ist und verschiede Weisen mit denselben befehlen innerhalb eines Codes finde ich ebenso unschön. Wie ich es mache ist ja nicht die Frage, sondern konkret die, die Fritz perfekt beantwortet hat und die in meinem letzten Beitrag.
Wil schrieb: > Danke Fritz, 99%, hab vergessen zu erwähnen welchen Teil ich exakt > meine, zwischen "while" und "return", weil es ja der Befehl sein soll, > mit dem man im Menü zurück kommt. Wird da der "return" erst abgerufen, > wenn im "while" die Bedingung erfüllt wird? Nein. Was man auf deinem Bild nicht sieht ist das zum while gehörende do. Das was zwischen dem do und dem while steht, wird so lange immer wieder ausgeführt, wie die Bedingung erfüllt ist. Es passiert im Endeffekt also quasi das Gegenteil von dem, was du oben schreibst. Zum return kommt es erst, wenn die Bedingung nicht mehr erfüllt ist. > Danke euch vielmals, du, T., sollst natürlich auch einem besonderen Dank > kriegen, für genaue Bezeichnungen bin ich immer sehr dankbar. An den > Rest: Danke für eure Bemühungen, aber solche Ratschläge sind total > sinnlos, Das befürchte ich auch. Viele ignorieren die Hinweise so wie du und tun sich in der Konsequenz dann unheimlich schwer. > jeder hat seine eigene Art zu lernen, bei mir ist die Notwendigkeit das > Wichtigste nach dem Interesse, d.h. dass ich nichts lerne, wenn ich > stupide riesige Texte lese, die von Fachleuten, in Fachsprache und aus > der Sicht von Fachleuten geschrieben sind, ich probiere, wenn ich an > meine Grenzen stoße, frage ich Leute, die es drauf haben, nicht nur > fachlich, sondern auch die Sicht von Anfängern kennen und es ihnen so > klar machen können, z.B. in dem sie die Fachbegriffe immer im > Zusammenhang mit einem konkreten Fall benutzen. Wenn du so C oder gar C++ lernst, wirst du ewig brauchen und nach Jahren noch elementare Fehler machen. Und das sage ich aus eigener Erfahrung, denn den Fehler habe ich damals auch gemacht. Man muss ja nicht gleich den Stroustrup komplett durchlesen, aber es ist wie beim Autofahren: Da muss man auch erstmal die Grundlagen lernen. Wenn man nach dem trial-and-error-Prinzip sich einfach ahnunglos reinsetzt und losfährt, wird das nix.
Wil schrieb: > Danke für eure Bemühungen, aber solche Ratschläge sind total > sinnlos, jeder hat seine eigene Art zu lernen, bei mir ist die > Notwendigkeit das Wichtigste nach dem Interesse, d.h. dass ich nichts > lerne, wenn ich stupide riesige Texte lese, die von Fachleuten, in > Fachsprache und aus der Sicht von Fachleuten geschrieben sind, ich > probiere, wenn ich an meine Grenzen stoße, frage ich Leute, die es drauf > haben, nicht nur fachlich, sondern auch die Sicht von Anfängern kennen > und es ihnen so klar machen können, z.B. in dem sie die Fachbegriffe > immer im Zusammenhang mit einem konkreten Fall benutzen. Du solltest erst mal das Konzept hinter der Sprache in Erfahrung bringen, damit du auch verstehst, was sich die Erfinder dabei gedacht haben. C ist eine einfache Sprache. Das macht sie aber nicht leicht erlernbar. C ist von Profis für Profis gemacht worden. (Im Grunde haben sie C für sich selber geschrieben) Und schließe nicht von dem Verhalten anderer Sprachen auf das Verhalten von C - und umgekehrt.
Wil schrieb: > bei mir ist die > Notwendigkeit das Wichtigste nach dem Interesse, d.h. dass ich nichts > lerne, wenn ich stupide riesige Texte lese, die von Fachleuten, in > Fachsprache und aus der Sicht von Fachleuten geschrieben sind, ich > probiere, wenn ich an meine Grenzen stoße, frage ich Leute, die es drauf > haben, nicht nur fachlich, sondern auch die Sicht von Anfängern kennen > und es ihnen so klar machen können, z.B. in dem sie die Fachbegriffe > immer im Zusammenhang mit einem konkreten Fall benutzen. Ich halte das auch für die falsche Vorgehensweise! Und: Solche Vorgehensweisen unterstütze ich nicht. Mittlerweile habe ich über 50.000 Postings in technischen Foren. Ich habe gelernt auszusortieren..... Manchmal nenne ich sowas: "Fass ohne Boden!" Nein! Wer die Grundlagen der Sprache verweigert, welche er verwendet, darf meines Erachtens nach nicht in seiner Verweigerungshaltung unterstützt werden. Zumindest ist mir meine Lebensenergie zu wertvoll dafür. Tut mir leid, wenn das etwas hart klingt....
Gutes Beispiel Rolf, Autofahren habe ich gelernt, als ich 7 Jahre jung war, indem ich mich einfach auf Papas Schoß setzte und das Lenkrad in die Hand nahm. Wie geschrieben, jeder hat seine eigene Art zu lernen und der Focus hier im Forum sollte sich auf das Beantworten der Fragen konzentrieren, mit Um- und Ausschweiffungen, aber sich nicht auf Klugscheissereien beschränken, man kann auch einfach eine Seite zurück gehen und die nächste Frage anschauen, vielleicht frag dort ja einer: "Ich will Profi im Programmieren werden und brauche dringend einen Rat: Wie nutze das Internet und Bücher?" Visual Basic habe ich z.B. mit Hilfe von Tutorials gelernt, manche Dinge komplett ohne Theorie, manches größtenteils aus Büchern, bei Arduino sieht es wieder anders aus, wie genau, kann ich jetzt noch nicht sagen, im Monent ist es so der beste Weg für mich. Wie du siehst, sind die Unterschiede sogar vom zu lernenden Stoff abhängig.
Es klingt komisch, aber in "C" gibt es - im Grunde genommen - zwei Typen von Klammern. 1. Die "normalen" mathematischen Klammern. Bei etwas so simplem wie: 8 + 5 * 3 - 1 = ??? kann man jede Menge verschiedene - aber richtige - Ergebnisse durch das Setzen von Klammern produzieren. 2. Klammern, die durch die "C"-Syntax festgelegt wurden. Ob diese immer sinnvoll sind, oder ob es dafür bessere "Plätze" gäbe ist im Grunde genommen egal, da sie bei der Sprachfestlegung eingeführt wurden. Da gehören vor allen die Parameterklammern dazu, wie bei einem Funktionsaufruf oder auch bei einer Abfrage. Dein if gehört auch dazu. Ich handhabe es immer so: "Eine Klammer zu viel schadet nicht". Was übrig bleibt schmeißt der Compiler raus. Also X = A + B; oder X = (A) + (B); oder X = (A + B); oder X = ((A) + (B)); kannst Du halten wie Du willst. Früher gab es mal eine maximale Verschachtelungstiefe - keine Ahnung ob es die noch gibt - aber ich bin noch nie darüber gestolpert. Ich weiß, die Erbsenzähler werden gleich mit eckigen, und geschweiften Klammer um sich werfen – ist mir aber egal. Auch das die obige Aufzählung alles andere als vollständig ist.
Danke für die Unterstützung Tomas. Ich weiss es nicht mehr genau, aber bin ziemlich sicher, dass es hier war, aber, ich nenne es jetzt einfach so, in so einem Offtopic-Gepöbel schritt mal ein alter Hase ein und schrieb was dazu, was sich aus dieser Art von nicht-antwortenden Antworten raus kristalisiert und zwar sowas wie: "Mimimi, ich bin den schweren Weg gegangen und zich Bücher gelesen, die mich nicht wesentlich weiter brachten, warum sollst du es leicht haben?" Das scheint hier wieder der Fall zu sein. Bisher habe ich sowas auch noch nicht erlebt, nirgends anders und erst recht nicht hier, dabei habe ich oft Probleme bei der Fragestellung, aber hier habe ich zwei konkrete Fragen gestellt und es kommt sowas absolut sinnbefreites, hab wohl einen der schlechteren Abende erwischt. Ich habe aber nunmal diese Fragen, das heisst ja nicht, dass ich sonst nichts verstehe, das meiste kann man auch nachschlagen, aber dazu habe ich keine Themen gefunden und jetzt hunderte von Euros für Bücher ausgeben, um zwei, für nen Profi, einfache Fragen zu beantworten, erscheint mir doch etwas unverhältnismäßig. Da die erste Frage perfekt beantwortet wurde und die zweite leider in der Sinnlosigkeit versunken ist, wiederhole ich diese: Hab vergessen zu erwähnen welchen Teil ich exakt meine: Den zwischen "while" und "return", weil es ja der Befehl sein soll, mit dem man im Menü zurück kommt. Wird da der "return" erst abgerufen, wenn im "while" die Bedingung !erfüllt wird(also nicht, hehe)? Ich danke euch, egal wie es gemeint ist, ich denke nunmal anders als die meisten und lerne auch so, bin dabei sicher kein Unikat, man kann auch positiv streiten und muss es auch, es gibt keine Fehler, sondern nur Erfahrungswerte, d.h. wenn ich mal aus der Anfängerphase komme und feststelle, dass es anders doch besser ist, ok, dann ist es so, dann werde ich an euch denken und u.U. nach Empfelungen für Seiten, Videos, Bücher etc. fragen, aber im Moment bringt mich das so, wie ihr es empfehlt, nicht wesentlich weiter, weil ich sehr viele Dinge aus ähnlichen Programmiersprache kenne und schon recht komplexe Dinge hinkriege, nur habe ich mir zu den gestellten Fragen noch nie Gedanken gemacht, d.h. das ist schon sowas wie "bis zur nächsten Kreuzung zurück". Und dass ich irgendwas verweigere ist total weit hergeholt, schliesslich handelt es sich hier um eine Verständnisfrage ;)
Danke Sebastian, super Antwort, sehe ich, nutze ich, leuchtet soforr ein. Aber ich bin der, der mit den geschweiften Klammern kommt, darum dreht sich der Beitrag :P
Bei C/C++ ist es immer empfehlenswert grundsätzlich Klammern zu setzen. Spätestens wenn man in den Funktionsblock etwas neues hinzufügen will/muß hat man schnell mal eine Klammer weniger und dann sucht man sich den Wolf bis man sieht wo's klemmt. Bei anderen Sprachen gibt es z.B.:
1 | begin
|
2 | tuwas
|
3 | end
|
Ohne begin und end tut sich da nix. Der Terminator ist da wieder so eine Sache, da gibt es entweder ; oder man darf nur einen Befehl pro Zeile mit einem Space als Einrückung usf. Das hängt an der Syntax der jeweiligen Sprache. Der Tipp mit dem Buch ist schon das passende, gibt es auch als ebook zum download, suche mal danach. Wenn Du schon mit Arduino arbeitest solltest Du besser gleich mit OO und C++ anfangen, dann mußt Du später nicht umdenken und hast viele Vorteile, wie Vererbung, Exceptions usw.
Danke eiffel, ich habe ja schon einiges gelesen, gibt man bei google z.B. "arduino geschweifte Klammern" ein, findet man bereits auf der ersten Seite drei PDF's, ich habe zich solcher PDF's auf dem Handy und alle gelesen, aber diese Frage wurde weder dadurch, noch sonstige Suchergebnisse beantwortet, daher habe ich sie hier gestellt. Also: Was und wie passiert in dem erwähnten Bereich? der return steht ja vor der schließenden Klammer der Funktion, dass müsste ja heissen, dass die Funktion dort automatisch endet und vorher sogar das Dispaly gesäubert wird, dass müsste dann ja heissen, dass das Menü nur kurz angezeigt wird, aber da ist ja das "while" zwischen, welches auf eine Aktion eines Buttons wartet, meiner Logik nach muss es also davon abhängig sein, schliesslich ist es der "Zurück"-Button, auf den dort gewarter wird, aber das steht alles unter einander und ist nicht eingeklammert. Das ist genau das, was für mich unverständlich ist.
Achso, nutzt bitte den Link, ich kann wie erwähnt den Text auf der verlinkten Seite nicht kopieren.
C Grundregel: Space, Tab und Newline sind gegenseitig austauschbar. Insbesondere hat newline keine besondere Bedeutung. Woher soll ein C-Compiler dann wissen, auf wie viele Statements sich z.B. ein if bezieht? In C ist definiert: auf immer nur genau ein Statement. Da man aber oft an so einer Stelle mehrere Statements braucht, haben Programiersprachen ein Block-Konzept. In C: Eine Menge von Statements zwischen { und }. Oder z.B. in Pascal zwischen begin und end. Also folgt z.B. nach if (...) gerne { statement1; statement2; ...;} Dieses Blockkonzept ist aber viel weitreichender und der Kern zum Verständnis der syntaktischen Struktur von C, aber auch von Dingen wie z.B. Kapselung. Tja, sicher kann man mit Lernen nach Bedarf sehr weit kommen, aber nach langen Jahren kommt der Moment, wo man schimpft "warum hat man mir das nicht früher gesagt?" Und die Antwort ist ganz einfach: Weil man so lange braucht, bis man versteht, daß es das ist, was einem viel früher schon hätte helfen können. Bis dahin meint man es nicht zu brauchen
Wil schrieb: > jeder hat seine eigene Art zu lernen, bei mir ist die > Notwendigkeit das Wichtigste nach dem Interesse, d.h. dass ich nichts > lerne, wenn ich stupide riesige Texte lese, die von Fachleuten, in > Fachsprache und aus der Sicht von Fachleuten geschrieben sind, ich > probiere, wenn ich an meine Grenzen stoße, frage ich Leute, die es drauf > haben, nicht nur fachlich, sondern auch die Sicht von Anfängern kennen > und es ihnen so klar machen können, z.B. in dem sie die Fachbegriffe > immer im Zusammenhang mit einem konkreten Fall benutzen. So lernt der Mensch in seiner Kindheit seine Muttersprache. Du möchtest also Jahre brauchen, bis Du C halbwegs vernünftig kannst? Glaub' ich nicht.
Solange mpress2 nicht mainbutt4 ist, wird der Bildscgirm nicht gelöscht, da es beim von Dir unterschlagenen do{ weitergeht. return unmittelbar am Ende der Funktion ist natürlich redundant.
Wil schrieb: > Danke für die Unterstützung Tomas. Ich weiss es nicht mehr genau, aber > bin ziemlich sicher, dass es hier war, aber, ich nenne es jetzt einfach > so, in so einem Offtopic-Gepöbel schritt mal ein alter Hase ein und > schrieb was dazu, was sich aus dieser Art von nicht-antwortenden > Antworten raus kristalisiert und zwar sowas wie: "Mimimi, ich bin den > schweren Weg gegangen und zich Bücher gelesen, die mich nicht wesentlich > weiter brachten, warum sollst du es leicht haben?" Das scheint hier > wieder der Fall zu sein. Ich schreibe hier exakt das Gegenteil: Ich bin anfangs - so wie du - den schweren Weg gegangen, es ohne ein Buch zu machen. Aus der Erfahrung heraus versuche ich, dich davon zu überzeugen, es anders zu machen, damit du es leichter hast als ich damals. Und nein, man muss nicht "zich Bücher lesen", das ist völliger Quatsch. > Bisher habe ich sowas auch noch nicht erlebt, nirgends anders und erst > recht nicht hier, dabei habe ich oft Probleme bei der Fragestellung, > aber hier habe ich zwei konkrete Fragen gestellt und es kommt sowas > absolut sinnbefreites, hab wohl einen der schlechteren Abende erwischt. Deine Frage ist absolutes Grundlagenwissen! Das wird in jedem C-Einsteigerbuch behandelt. Findest du es nicht etwas dreist, von anderen zu verlangen, dieses bereits Tausende von malen niegergeschriebene Wissen hier extra für dich nochmal neu hinzuschreiben? Nein, man lernt die Sprache nicht, indem man ein Buch von vorne bis hinten durchliest und fertig, auch nicht, indem man 10 Stück liest, aber man lernt sie auch nicht, indem man wegen jedem Kleinkram nochmal extra jemanden fragt. So ist es für einen selber und für andere einfach nur viel mühsamer und nerviger. Wirklich verstehen tut man's damit auch nicht, weil man die Zusammenhänge nicht kennt. Man kennt hier ein Detail und da eins, aber wie die zusammenspielen und warum, das versteht man nicht. Auch das sage ich aus meiner Erfahrung heraus. > Ich habe aber nunmal diese Fragen, das heisst ja nicht, dass ich sonst > nichts verstehe, das meiste kann man auch nachschlagen, aber dazu habe > ich keine Themen gefunden und jetzt hunderte von Euros für Bücher > ausgeben, um zwei, für nen Profi, einfache Fragen zu beantworten, > erscheint mir doch etwas unverhältnismäßig. Und morgen kommst du wieder mit zwei neuen Fragen, und übermorgen wieder, u.s.w. ... Und wo hast du eigentlich diesen Unfug her, man müsse "hunderte von Euros für Bücher ausgeben", um deine Grundlagenfragen zu beantworten? Ich brauch ja auch nicht gleich eine Bücherreihe über höhere Mathematik, um die Grundrechenarten zu lernen. Ein einzelnes Grundschul-Mathebuch reicht. > Da die erste Frage perfekt beantwortet wurde und die zweite leider in > der Sinnlosigkeit versunken ist, wiederhole ich diese: > > Hab vergessen zu erwähnen welchen Teil ich exakt meine: > Den zwischen "while" und "return", weil es ja der Befehl sein soll, mit > dem man im Menü zurück kommt. Wird da der "return" erst abgerufen, wenn > im "while" die Bedingung !erfüllt wird(also nicht, hehe)? Was fehlt dir denn an meiner Antwort auf diese Frage? > Bücher etc. fragen, aber im Moment bringt mich das so, wie ihr es > empfehlt, nicht wesentlich weiter, Ich habe nicht den Eindruck, dass du das überhaupt versucht hast. Und mit dem Weg, wie du ihn aktuell einschlägst, kommst du offenbar auch nicht wirklich schnell voran.
Nochwas: der TO verweigert sich, eigene Erfahrungen zu sammeln, sondern will die Erfahrung anderer vorgekaut bekommen. Warum wird ein solches Schmarotzertum unterstützt?
Aaaahhhh, ja, jetzt, das ist es Hannäs. Die Funktion hält, bis das Während eintritt und geht dann erst weiter, so gesehen macht das return ja doch nen Sinn, eben um dann aus der Funktion zu gehen, aber das entscheidende ist das Halten bis... Dachte dass vor und nach dem while Klammern müssen, aber das hält ja dort. Jetzt hab ichs, oder? Erst dachte ich da ist was falsch, aber da in dem Forum sich alle bedankten und schrieben, dass es geht... Danke vielmals. @Markus Ich brauche keine Jahre, um etwas zu lernen, schließe nie von dich auf andere, ich bin Ende 20, lebe erst seit 6 Jahren in Deutschland und habe die deutsche Sprache in unter einem Jahr gelernt, akzentfrei. Deine Niveaulosigkeiten kannst du an Toilettentüren hinterlassen, mir gegenüber spar sie dir. Willst du fürs Helfen und dafür, dass du dein Wissen mit anderen teilst bezahlt werden? Dann bist du hier falsch, ansonsten spar dir solche Widerlichkeiten wie "Schmarotzertum", wie geschrieben, wenn du nichts zum Thema beizutragen hast, klick auf den "Zurück"-Button, wenn das hier für dich die einzige Möglichkeit ist dich mitzuteilen, dann ist es ein anderes Problem, was du bei einer anderen Möglichkeit schreiben solltest. Genau auf dich passt die Anmerkung des "alten Hasen" perfekt zu.
Wil schrieb: > Danke eiffel, ich habe ja schon einiges gelesen, gibt man bei google > z.B. "arduino geschweifte Klammern" ein, findet man bereits auf der > ersten Seite drei PDF's, ich habe zich solcher PDF's auf dem Handy und > alle gelesen, aber diese Frage wurde weder dadurch, noch sonstige > Suchergebnisse beantwortet, daher habe ich sie hier gestellt. > > Also: Was und wie passiert in dem erwähnten Bereich? der return steht ja > vor der schließenden Klammer der Funktion, dass müsste ja heissen, dass > die Funktion dort automatisch endet Das return dient dazu aus der Funktion/Routine rauszuspringen und dann dort weiter zu machen wo sie aufgerufen wurde. Das hat NICHTS mit den Blockzeichen zu tun die definieren das zwischen { und } genau ein Codeblock sitzt der entweder als Funktion definiert ist oder mit anderen Steuerkonstukten wie if, switch usw. > und vorher sogar das Dispaly > gesäubert wird, dass müsste dann ja heissen, dass das Menü nur kurz > angezeigt wird, aber da ist ja das "while" zwischen, welches auf eine > Aktion eines Buttons wartet, meiner Logik nach muss es also davon > abhängig sein, schliesslich ist es der "Zurück"-Button, auf den dort > gewarter wird, aber das steht alles unter einander und ist nicht > eingeklammert. Das ist genau das, was für mich unverständlich ist. Dann solltest Du Dir mal den OO Code der Arduino Bibliothek ansehen und ein C++ Buch lesen, z.B. den Stroustrup der C++ ja realisiert hat. In einem Objekt das z.B. das Display ansteuert wird es sicherlich einen Konstruktor geben der erstmal alles initialisiert und dann Funktionen die das Display bedienen. Solange das Display-Objekt nicht beendet wird läuft das weiter. Wenn also das Display-Objekt außerhalb Deiner eigenen Funktion/Objekt deklariert ist wird es weiter vorhanden sein und laufen. Hast Du das lokal in Deiner Funktion wird es wie alle lokalen Variablen in C freigegeben wenn die Funktion terminiert. Schau Dir erstmal die Grundlagen für höhere Programmiersprachen an und beschäftige Dich mit OO und C++. Wenn Du die Grundlagen verstanden hast wird es einfacher Dinge zu verstehen. Z.B. kann man in C++ Operatoren überladen, d.h. wenn ich ein Display-Objekt habe kann ich darin << für die Ausgabe überladen und einfach einen String übertragen der wie auf STDOUT ausgegeben wird. Umgekehrt kann Dein Taster-Objekt >> überladen und wie STDIN benutzt werden. Das ist einer der Vorteile von C++, es läßt sich mit entsprechenden Objekten intuitiv identisch verwenden.
Wil schrieb: > Die Funktion hält, bis das Während eintritt und geht dann erst weiter Nö. "while" bedeutet nicht immer "während". Überleg' doch mal, was "while" in diesem Kontext (C) bedeutet und wie lange sich die while-Schleife drehen soll. In einem Buch von K&R bei Amazon gebraucht ab EUR 8,66 steht das, auf 1000 und mehr Webseiten auch. Aber nichtmal dort hast Du recherchiert. Du wilst, daß es Dir andere vorkauen. > @Markus Ich brauche keine Jahre, um etwas zu lernen, schließe nie von > dich auf andere Hab ich nirgends (der Mensch in seiner Kindheit), aber Du machst das gerade. > Deine Niveaulosigkeiten kannst du an Toilettentüren hinterlassen Dito. Du versucht, etwas Dir völlig unverständliches zu verstehen und gehst dabei wie ein Kleinkind vor, anstatt Deinen Verstand einzusetzen und die Sache systematisch anzugehen. Oder Du bist einfach nur faul. Programmiersprachen sind formale Sprachen. Die einen folgen sehr umfangreichen Formalismen (Cobol), andere sehr wenigen. C ist eine solche Sprache, die sehr wenigen Formalismen gehorcht. Die grundlegenden einmal zu verinnerlichen, dauert nicht lange, würde Dir aber im Weiterkommen erheblich helfen, anstatt wie hier im Nebel rumzustochern. Du willst doch auch mal auf das große Ganze schauen können, oder?
"While" übersetzt man hier besser mit "Solange"
Wil schrieb: > @Markus Ich brauche keine Jahre, um etwas zu lernen, schließe nie von > dich auf andere, ich bin Ende 20, lebe erst seit 6 Jahren in Deutschland > und habe die deutsche Sprache in unter einem Jahr gelernt, akzentfrei. LOL. Habe in Deutschland studiert, das mit unter einem Jahr und akzentfrei glaube ich dir nicht. Wenn du die deutsche Sprache so schnell kapierst wie C (oder Arduino) dann wirst du noch etwa 50 Jahre brauchen, um akzentfrei zu sprechen.
:
Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.