Hallo,
ich bin noch ziemlicher Anfänger in der Mikrocontroller-Programmierung. Habe mir jetzt als 2. Board zu Arduino Mega eine NodeMCU geholt.
Bei dem werden ja die GPIOs mit D0- D10 benannt. D1- D6 möchte ich gerne als Output in der setup- Funktion festlegen. Um das ganze zu verkürzen wollte ich das ganze über eine for Schleife wie in folgendem Code machen. Nur leider funktioniert das auf dem NodeMCU nicht. (Auf dem Arduino Mega klappt das so, wenn ich statt dem D0 ein A0 nehme.)
Die Variable i gibt es zwar nicht, dafür ist aber die Variable pindazugekommen.
Interessanter ist aber, wie gut das Iterieren über das Array in beiden Fällen optimiert wird.
Wenn man beide Varianten übersetzt, sehe ich die gleichen Programmgrößen.
(Für einen 8bit atmega übersetzt.)
Ich rate mal, auch der erzeugte Maschinencode ist gleich.
C/C++ war schon immer berühmt für wenig Tipperei, das spricht für die "moderne" Variante.
In C/C++ kann man jeden Unsinn machen, zB. die Schleife andersrum laufen lassen. Das spräche für die "klassische" Variante.
michael_x:
C/C++ war schon immer berühmt für wenig Tipperei, das spricht für die "moderne" Variante.
In C/C++ kann man jeden Unsinn machen, zB. die Schleife andersrum laufen lassen. Das spräche für die "klassische" Variante.
Danke für die Info.
Noch härter, was kurze Quelltexte angeht ist Perl. Da gab/gibt es einen Wettbewerb.
Mir ist da mal eine komplette SHA-Realisierung in einer Zeile (<= 80 Zeichen) in die Hände gefallen. Nachdem ich das auf 3 Seiten aufgeblasen hatte, hatte ich den Ablauf verstanden.
Deswegen galt/gilt Perl auch als writeonly Programmiersprache.
Das habe ich in C gern als Aufgabe gestellt:
Gegeben sind 2 Zeiger q (quelle) und z (ziel) auf CharArrays. q zeigt auf eine 0-terminierten Zeichenkette, der Platz in z ist groß genug.
Wie ist die kürzeste Lösung zum Kopieren von q nach z ohne die Benutzung einer Standardfunktion?
Tommy56:
Gegeben sind 2 Zeiger q (quelle) und z (ziel) auf CharArrays. q zeigt auf eine 0-terminierten Zeichenkette, der Platz in z ist groß genug.
Wie ist die kürzeste Lösung zum Kopieren von q nach z ohne die Benutzung einer Standardfunktion?
Lösung z.B.: while (z++=q++);
Deine Lösung ist leider falsch, kompiliert nicht einmal (lvalue required).
Ihr haut hier sachen raus, gibts nicht.
Da denk ich mir, wieso verplempert ihr noch zeit mit den Bauern?
Bauern in dem Sinne, nichts könner (was die Materie angeht), kein Plan von Programmieren und weiß der liebe Gott noch wer sich hier im Forum treibt.
Man betrachte nur die Signatur von den beiden die zuletzt geschrieben haben.
Wie?
Möchtest du uns/mich hier vertreiben?
:o :o :o :o
Ich bin hier um zu lernen.
C++, die Sprache, die ich (vorher) nie leiden konnte.
Und du, mach dich nicht kleiner, als du bist.
In Sachen C++ hast du eigentlich einen Vorsprung von min. 1 Jahr.
Sieht man am Anmeldedatum.
ca. 1 Woche vor meiner Anmeldung hier, habe ich den ersten Arduino in der Hand gehalten.
Das war ein Schlüsselerlebnis.
Es ist schon super dass sich hier Leute rumtreiben die Ahnung haben, haut blos nicht ab, ich werd euch noch brauchen ^^
Aber zB jurs, er schmeißt mit Codes um sich und was bekommt er dafür? Da kann ich ihn schon verstehen warum er es nicht mehr macht.
Da kann ich ihn schon verstehen warum er es nicht mehr macht.
Ja, Jurs ist schnell etwas frustriert....
Muss zugeben, dass mir sowas auch schon passiert ist.
Aber durch "Perspektivenwechsel" kann man/ich das mildern.
Wenn ich Code poste, dann hoffe ich schon dass er verstanden wird, ist aber auch kein Drama, wenn nicht.
a. Denn vielleicht hilfts ja einem anderen
b. Vielleicht dauert es nur etwas (3 bis 5 Jahre), bis es vom Fragesteller verstanden wird
Ich brauche etwas länger, wenn ich den Code erst testen will.
Das hängt damit zusammen, dass ich erst seit 1,5 Jahren mit dem Arduino wieder zu C(C++) zurückgekehrt bin und noch vieles unter dem Staub des Vergessens begraben ist.
Vorher habe ich bis 2007 produktiv ANSI-C geschrieben und teilweise unterrichtet, danach JAVA und die letzten Jahre vor allem PL/SQL (die interne Sprache der ORACLE-Datenbanken).