Hallo,
Das geschriebene Programm steuert die 7-Segment-Anzeige als Ziffer "8", wo Segmente nacheinander im Ziffer "8" durchlaufen (Segmente der Ziffer "8" sind anzusteuernde LEDs).
Daneben werden andere in der Reihe positionierte LED nacheinander angeleuchtet auch als Lauflicht (wenn eine LED [x+1] AN geht - geht der vorherige LED [x] aus).
Ausdrucke/Anweisungen im Flussdiagramm: Digit_Port_Display =0x__ entsprechen einem Segment-LED im Ziffer "8"
Ausdrucke/Anweisungen im Flussdiagramm: Digital_Port_DA =x__ entsprechen einem LED aus der LED-Reihe.
Ich erstelle zu dem Programm (s. Anhang "Prog_01") das Flussdiagramm (s. Anhang "Flussdiagramm"), nur dazu habe ich Fragen:
1) Wohin geht das Befehl "return" (Zeile 76) ?
2) Was passiert falls i<7 2a) Wie wird die Schleife dann geschlossen falls i<7 ?
3) Entspricht der Ausdruck i &= 0x07 (Zeile 74) der Stelle im Flussdiagramm i=7 ?
Geändert von Collage (14.06.2016 um 20:05 Uhr)
Wie schon von meinem Vorredner geschrieben sind die Bilder so klein das sie nicht brauchbar/lesbar sind.
RETURN:
https://msdn.microsoft.com/de-de/library/sta56yeb.aspx
Danke für Hinweis. Ich habe die Bilder durch besseren ersetzt. Di Frage sind auch auf dem Flussdiagramm sichtbar.
Hallo,
Der grundlegende Denkfehler an der Geschichte ist, dass da gar keine Schleife ist!
Das ist eine Funktion, welche bei jedem Aufruf einmal durchlaufen wird.
In diesem Fall, kann man return auch weg lassen, es ändert am Programmablauf nichts.
MfG Peter(TOO)
Manchmal frage ich mich, wieso meine Generation Geräte ohne Simulation entwickeln konnte?
Von der Syntax her ist das ja C++, da nur dieser Codeausschnitt gezeigt wird und der auch nur als Bild und nicht als Code, ist das vermutlich nicht das Programm des TO sondern eher eine Schulaufgabe.
Da in C keine deutschen Worte für Befehle und sprachinterne Bezeichner vorkommen, ist das keine Schleife, sondern eine Funktion mit dem Namen schleife.
Diese Funktion wird mit dem Bezeichner "schleife" irgendwo anders (vermutlich im Hauptprogramm) aufgerufen.
In der Funktion befindet sich eine Switch Aweisung, in dem die einzelnen Fälle (case) per break die Switch Anweisung verlassen können.In einer Definition einer Funktion ohne Parameter kann das Paar runder Klammern leer gelassen werden oder das Schlüsselwort "void" enthalten. In beiden Fällen wird eine Funktion ohne Parameter definiert
Danach werden noch
i++;
und
i &= 0x07;
ausgeführt.
Anschließend wird die Funktion mit "return" verlassen und in das aufrufende Programm, hinter den Funktionsaufruf zurückgekehrt.
(das kann einem Google in unter 2 Miunten liefern)
Eine Schleife im Sinne eines C Programmkonstruktes gibt es nicht.
Vielen Dank. Wo ist das Befehl "return" zu platzieren? Ich habe das frisches Flussdiagramm hochgeladen?
Vor dem "Ende" oder "return" ist das Punktir-Pfeil zur aufrufenden Datei?
Außerdem, gibt es hier keine interne Schleife? Ich denke - nicht, aber bin nicht sicher.
- - - Aktualisiert - - -
Anbei ist frisches Flussdiagremm
Hallo,
Die break; Anweisungen gehören nicht ins Flussdiagramm, sie bestimmen nur den Weg im Programm und verarbeiten keine Daten. Der Weg wird aber schon durch die Linien im Flussdiagramm angezeigt.
Entsprechend würde man auch goto's nicht angeben.
Und das return gehört auch dazu, es beeinflusst nur den Weg im Programm.
Wenn dann würde man Return da hin schreiben wo bei dir jetzt ENde steht.
In deinem Programm kannst du return auch im Sourcecode weg lassen, der Compiler weiss auch so wo die Funktion zu Ende ist.
return braucht man nur, wenn man mitten in der Funktion beenden will und explizit, wenn die Funktion Werte zurück liefert.
MfG Peter(TOO)
Manchmal frage ich mich, wieso meine Generation Geräte ohne Simulation entwickeln konnte?
Lesezeichen