Textsteuerung in ST

In der zu schreibenden Funktionen sollst du im übergebenen String nach der ersten Zahl suchen.
Wenn im String zum Beispiel "aBC3456" steht, wäre die Lösung 3. Bei "15dftz6789" wäre die Lösung 1.
2 mögliche Strategien wie man das lösen kann, hat dir Heinileini in Beitrag #37 aufgezeigt.
Programmieren und testen must du es allerdings 😉
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich habe jetzt die Hausaufgabe abgeschickt und bekamm eine 5 weil anscheinend das Projekt „Textsteuerung“ falsch wahr was ihm genau nicht passte sagte der Professor mir nicht, es hat aber alles einwandfrei funktioniert. 🤷🏽‍♀️
 

Anhänge

  • 1EEB1FDE-1D27-49DE-9D89-0DFCAE0C900B.jpeg
    1EEB1FDE-1D27-49DE-9D89-0DFCAE0C900B.jpeg
    1,9 MB · Aufrufe: 37
Ich habe jetzt die Hausaufgabe abgeschickt und bekamm eine 5 weil anscheinend das Projekt „Textsteuerung“ falsch wahr was ihm genau nicht passte sagte der Professor mir nicht, es hat aber alles einwandfrei funktioniert. 🤷🏽‍♀️
Das tut mir Leid. :cry:
Anscheinend ist Deinem Professor egal, ob Deine Lösung funktioniert oder nicht. Wie soll er das auch beurteilen? Etwa nachprüfen oder sich hineinknien? Das macht nur unnötig Arbeit.
Er hat sicherlich nur geguckt, ob Deine Lösung mit seiner Vorlage identisch ist und er hält es auch nicht für möglich, dass viele Wege nach Rom führen.

Habe Ähnliches in ProgrammierKursen auch schon erlebt. Da ging es z.B. darum, den grösseren (oder war's der kleinere?) von zwei Werten zu ermitteln und ich hatte einen Lösungsweg ohne IF-Abfrage vorgelegt *). Das fanden die natürlich völlig indiskutabel und Lichtjahre am Thema vorbei - warum auch immer. Sie von der Richtigkeit der Lösung zu überzeugen, war ebenso (aus ZeitMangel? aus Überzeugung? keine Ahnung) völlig unmöglich.
Kreativität ist offensichtlich nicht gefragt und führt lediglich zu einer Verhärtung der Fronten - leider.

Lass Dich nicht entmutigen!

PS:
Habe ich Dich richtig verstanden? Du hast eine GesamtNote 5 bekommen, nur weil eine einzige Aufgabe von mehreren nicht nach deren Geschmack war?
Das wäre allerdings bitter.

*)
Code:
Min := ((Var1 + Var2) - ABS(Var1 - Var2)) / 2 ;
Max := ((Var1 + Var2) + ABS(Var1 - Var2)) / 2 ;
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Ja das war auch gleich mein erster gedanke aber nutzt nichts. Ich habe gottseidank noch die Möglichkeit das ich es nochmal einreiche, aber wäre natürlich auch toll gewesen wenn der Herr Professor mir gesagt hätte was nicht stimmt. Bzw was Ihm nicht passt, weil ich ja nicht weiss wie genau er es den haben möchte.

Die beiden Aufgaben wo ich das programmieren muss haben eben die meisten Punkte und ich musste es in Codesys und im Tia Portal Programmieren und dadurch es Ihn ja nicht passte wie ich das mache, habe ich keine Punkte dafür bekommen. 🤷🏽‍♀️
 
Hast Du denn den Lösungsweg vestanden und könntest ihn gegenüber Deinem Professor erklären bzw. rechtfertigen oder ihn sogar davon überzeugen?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ja aber ich habe bisschen angst das ich dann die möglichkeit nicht mehr bekomme es erneut zu machen
Tja, anscheinend ist hier Taktik gefragt und nicht so sehr der Lösungsweg ...
Bekommst Du denn eine alternative Lösung auf die Beine? Ich würde mich hier lieber ein wenig zurückziehen, ehe ich Dich (ungewollt!) auf einen weiteren Holzweg locke ... ;)
 
Wie lautet die genaue Beschreibung von die Aufgabe ?

Was mich stört ist das "auf", "öffne" und "oeffne" sind gedeckt, aber was mit "Auf", AUF", "Öffne", "Oeffne", "ÖFFNE", "OEFFNE" ?
So eine Kommandozeile Interpreter zu programmieren der jeden sinnvolle Eingabe akzeptiert und alles anders verwerft ist nicht soo einfach.
 
So eine Kommandozeile Interpreter zu programmieren der jeden sinnvolle Eingabe akzeptiert und alles anders verwerft ist nicht soo einfach.
Oh ja, Jesper!
Das Problem mit der GrossSchreibung contra KleinSchreibung contra DurcheinanderGemischtGrossUndKleinSchreibung ist aber ein relativ kleines.
Ob das auch für SCL und ST so gilt, forsche ich jetzt nicht nach, aber in VBA fallen mir da spontan die Funktionen UCase und LCase ein.

Mich würde z.B. mehr stören, wenn sich in den Text das Wort 'nicht' einschleicht und bei der Dekodierung schlichtweg ignoriert würde, so dass etwas ausgelöst wird, das ausdrücklich nicht passieren soll. ;)
 
Hmmm..
Genügt es nicht mit FIND ?
Das LEFT, CONCAT und MID ist überflüssig ?
Wenn die Texte gibts (auf, öffne usw. für Ventil öffnen) dann ist es genug um zu erkennen ob die Aktion ausgeführt werden soll.
 
Wenn ich dein Code betrachtet, dann testest du mit FIND ob "auf öffne oeffne" gibts in die Eingabestring. Also nicht ob einer von die einzelne Wörter sondern ob alle Wörter da sind.

IEC 61131-3 FIND sucht einfach für ein Treffer in die String, und gibt zurück ein Offsetwert. Wenn kein Treffer dann gibt es ein 0 zurück.
Ich wurde es ungf. wieso programmieren.
BefehlAuf := (FIND(Eingabestring, "auf")>0) OR (FIND(Eingabestring, "öffne")>0) OR (FIND(Eingabestring, "oeffne")>0) ;
 
Noch etwas.

Dein Ventil ist ein OUTPUT.
Dann kannst du nicht die Status von Ventil abfragen.
Wie du es programmiert hast:
Ventil := (Ventil OR tbV1Auf) AND NOT tbV1zu ;
 
Zuletzt bearbeitet:
Zurück
Oben