INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Gibt es Sprungbefehle
20.02.2016, 08:28
Beitrag #1
Gibt es Sprungbefehle
Moin,

leider finde ich bei Onkel Google mal wieder keinen passende Antwort deswegen bin ich wieder bei euch gelandet Smile . Gibt es unter den Befehlen auch Sprungbefehle oder Anweisungen?

Ich möchte sozusagen auf einen Zustand (Input) warten und wenn dieser High ist gezielt in eine bestimmte Zeile springen - also dann bewusst eventuell mehrere auslassen. Mir hilft hier keine if else else else Anweisung weil das Ergebnis ja dann mehrmals vorkommt...

Von anderen Programmiersprachen kenn ich - Call, Jump oder Goto gibt es sowas ähnliches bzw. ist es möglich kleine Unterprogramme zu schreiben und ein Hauptprogramm - das wäre natürlich deluxe Big Grin

Danke schonmal für die Hilfe
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
20.02.2016, 09:54
Beitrag #2
RE: Gibt es Sprungbefehle
Allgemeine Sprungbefehle werden in modernen Programmiersprachen kaum noch verwendet. Es gibt sie aber noch. In C werden spezielle Sprungbefehle, wie z. Bsp. break, continue, return und exit noch häufig verwendet. Das einfache goto (es kann direkt ein Label anspringen) wird aber normalerweise nicht mehr verwendet. Andere Konzepte mit selbstgeschriebenen Funktionen sind wesentlich übersichtlicher.

Selbstverständlich sind goto - Befehle nach wie vor der Normalfall in Assembler. Aber in einer Hochsprache haben sie eigentlich nichts mehr zu suchen.

Ich persönlich vermisse die Goto's und Gosub's aus dem Basic der 70er und der frühen 80er - Jahre überhaupt nicht.

Der Hobbyelektroniker wagt sich an die Arduinoprogrammierung auf Video und auf seiner Webseite
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
20.02.2016, 18:25 (Dieser Beitrag wurde zuletzt bearbeitet: 20.02.2016 18:27 von master_vö.)
Beitrag #3
RE: Gibt es Sprungbefehle
So richtig geholfen hat das jetzt zwar nicht aber egal Smile

Ich hab mich den restlichen Tag damit beschäftigt und es funktioniert mit dem goto Label Sprungbefehl.
Als veraltet will ich das nicht nennen weil ich erst letztes Jahr bei Yaskawa in Frankfurt war und die Programmieren auch noch so - das Problem hier mit dem Arduino das ich nur immer hab ist wenn man googelt findet man entweder nur Geschichten von den Basics oder Sketche mit 1000 Zeilen das ist für so Anfänger wie mich etwas kompliziert...

Sollte aber hier noch jemand auf das selbe Problem stossen hier mein "Testsketch"
Code:
int LED1 = 8;
int LED2 = 9;
int eingang = A0;
int fotowiderstand=0;

void setup()
{
Serial.begin(9600);
pinMode (LED1, OUTPUT);
pinMode (LED2, OUTPUT);
}

void loop()
{
fotowiderstand = analogRead (eingang);
Serial.print("Messung = ");
Serial.println(fotowiderstand);


if (fotowiderstand > 800) goto Label2;
else goto Label3;

Label1:
{
digitalWrite (LED1, HIGH);
}
Label2:
{
digitalWrite (LED2, HIGH);
}
Label3:
delay (5000);
digitalWrite (LED1, LOW);
digitalWrite (LED2, LOW);
delay (2000);
}

Die Lichtstärke wird gemessen und wenn der Wert größer 800 ist geht LED 2 ein und
LED 1 bleibt aus - diese Zeile wird somit übersprungen ist der Wert kleiner 800 geht keine LED ein und es werden 2 Anweisungen übersprungen.

Für meine Verhältnisse völlig ausreichend und vielleicht kann es noch jemand gebrauchen der auch Anfänger ist wie ich Big Grin

Trotzdem Danke...
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
20.02.2016, 20:28
Beitrag #4
RE: Gibt es Sprungbefehle
Eigentlich sollte der Compiler jetzt eine Warnung ausspucken,
dass nämlich Label1 unerreichbar ist :-)
Ich bin nicht der Compiler aber mir wird schlecht.
Das widerspricht Allem was ich mühsam gelernt habe :-)

// wozu ist LED1 eigentlich gut, die geht nie an :-)

//Die Lichtstärke wird gemessen und wenn der Wert größer 800 ist geht LED 2 ein und
//LED 1 bleibt aus - diese Zeile wird somit übersprungen ist der Wert kleiner 800
//geht keine LED ein und es werden 2 Anweisungen übersprungen.
if (fotowiderstand > 800)
{
// digitalWrite (LED1, LOW);
digitalWrite (LED2, HIGH);
}
delay (5000);
digitalWrite (LED1, LOW);
digitalWrite (LED2, LOW);
delay (2000);
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
20.02.2016, 20:58
Beitrag #5
RE: Gibt es Sprungbefehle
Hey master_vö,

wenn ich deinen Code so lese fällt mir da spontan folgende Frage ein:
Wenn in dem Programm (aus welchem Grund auch immer) mal Label1 angesprungen wird, durchläuft der Code ja leider auch den Rest. Wie sollte das denn dann deiner Meinung nach noch abgefangen werden?


Gruß
Torsten
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
20.02.2016, 21:13
Beitrag #6
RE: Gibt es Sprungbefehle
(20.02.2016 20:58)torsten_156 schrieb:  Hey master_vö,

wenn ich deinen Code so lese fällt mir da spontan folgende Frage ein:
Wenn in dem Programm (aus welchem Grund auch immer) mal Label1 angesprungen wird, durchläuft der Code ja leider auch den Rest. Wie sollte das denn dann deiner Meinung nach noch abgefangen werden?


Gruß
Torsten

entweder durch ein noch schwachmatischeres goto danach oder durch eine if else konstruktion.
gotos sind so überflüssig wie ein kropf
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
21.02.2016, 09:25
Beitrag #7
RE: Gibt es Sprungbefehle
Hallo erstmal,

wer lesen kann ist klar im Vorteil!

Es ging nicht darum das der Sketch sinn macht oder zu irgendetwas nützlich ist mir geht es nur darum das die Zeilen übersprungen wird, was es auch tut und ihr es ja selber rausgefunden habt. Mir hätte so eine Lösung auf meine Frage gereicht auch wenn es keinen Sinn ergibt und Sorry aber ja der Sketch funktioniert ohne Fehler!

Das Problem hier am Forum ist der das die Leute nicht helfen sondern nur hinterher an Lösungen rumnörgeln wie ich rausfinden musste - das ist in den SPS Foren in denen ich noch bin anders. Hier wird eben alles nochmal zugespamt obwohl es mit dem Thema oder der Lösung nichts zu tun hat.

Mir hat es geholfen und vielleicht hilft es noch einem der das just 4 fun macht...
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
21.02.2016, 09:48
Beitrag #8
RE: Gibt es Sprungbefehle
@master_vö,
also du kannst nicht die Roboter SPS nicht mit der hier an C Coge angelehnten Programmierung vergleichen weil da sicherlich andere Bedingungen herrschen....oder programmierst du die Robis in C ? ....wohl kaum.

Und klar, wenn man aus der GOTO, GOSUB Welt hier ankommt ist es wohl eine Umstellung...aber man sollte sich Neuem nicht verschließen....weil gerade im Bereich der Elektronik sagt eine alte Regel das sich da alle 3 Jahre neue Welten auftun die es zu erlernen gilt....wer da nicht mithält verliert....und ich spreche hier aus 40 Jahren Berufserfahrung.

Und weil du meinst das hier genörgelt wird....hier kommen zu oft welch rein die nur ihren Kreis kennen und auf dem bestehen wollen....da werden wir eben manchmal ein bischen Big Grin
lgbk

1+1 = 10 Angel ...und ich bin hier nicht der Suchmaschinen-Ersatz Dodgy...nur mal so als genereller Tipp..
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
Shocked LCD 2004 204 20X4 gibt nur "0" aus Nifu 9 1.084 22.12.2015 00:37
Letzter Beitrag: rewa6358

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste