Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Struktogramm, UML Sequenzdiagramm

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: [ 1 ] > 2 < [ 3 ]
010
08.05.2014, 13:58 Uhr
Hans
Library Walker
(Operator)


Hi,
ah ja, besten Dank für die Info, jetzt weis ich wenigstens, wo ich dran bin. Ich bin bisher nämlich davon ausgegangen, dass die Aufgabe innerhalb einer technischen Ausbildung oder eines technischen (Schul-)praktikums oder Projekts gestellt wurde. Deshalb auch mein Ärger über mangelhaftes technisches Hintergrundwissen.

Davon abgesehen:
UML ist im Kielwasser der objektorientierten Programmierung bzw. Softwareentwicklung entstanden. D.h. um UML-Diagramme aus vorhandenem Code zu erstellen, ist es erforderlich, auch den Code prinzipiell zu verstehen. Und da sehe ich bei Dir noch einige Verständnisschwierigkeiten. Wenn Du mit C++ vertraut werden willst, geht mMn kein Weg an ein vernünftiges Skript oder Lehrbuch vorbei. Es muss nicht der knapp 1000-seitige Breymann sein; wahrscheinlich reicht ein dünneres Werk völlig aus. - Um das beste Buch zu finden die Bibliothek durchforsten!
Und schliesslich sollen Diagramme doch immer dazu dienen, irgendwelche Strukturen überschaubar darzustellen um die Zusammenhänge (und damit auch Hintergründe) besser zu verstehen, seien sie nun technischer oder wirtschaftlicher Natur, wie beispielsweise Gnatt-Diagramme.

Hans



Zitat von Wikipedia:

Die Unified Modeling Language (Vereinheitlichte Modellierungssprache), kurz UML, ist eine grafische Modellierungssprache zur Spezifikation, Konstruktion und Dokumentation von Software-Teilen und anderen Systemen.


Quelle: http://de.wikipedia.org/wiki/Unified_Modeling_Language
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
011
08.05.2014, 18:16 Uhr
sven123



Hans,

bedeutet das:
oldState=port.getState();
//aktueller Status von "port" wird ausgelesen und in "oldstate" gespeichert?
if (state == true) {
//das abfragen aktuellen Status hatten wir ja schon..., je nach Ergebnis wird "port" im status gewechselt, wenn state == true, port ->off, würde jetzt mit port.getState() gefragt werden wäre die Ausgabe false....und umgekehrt für else

Sorry das ich dich so nerve, mir fällt das lernen so leichter. Erstmal in kalte Wasser, dann Erfolgserlebnis und anschließend Details....
Wenn ich das Grundgerüst dieses Codes verstanden habe hilft mir das mehr als 500Seiten vom Dingens Buch zu lesen. In diesem bedient man sich wieder dem schon erwähnten Sprachsyntax aus dem Paralleluniversum.

mfg
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
012
08.05.2014, 20:46 Uhr
Hans
Library Walker
(Operator)


Hi,

Zitat von sven123:

bedeutet das:
oldState=port.getState();
//aktueller Status von "port" wird ausgelesen und in "oldstate" gespeichert?


genau.


Zitat von sven123:

if (state == true) {
//das abfragen aktuellen Status hatten wir ja schon..., je nach Ergebnis wird "port" im status gewechselt, wenn state == true, port ->off,


bis hierher ebenfalls richtig, aber da ist noch ein Haken.


Zitat von sven123:

würde jetzt mit port.getState() gefragt werden wäre die Ausgabe false....und umgekehrt für else


Grundsätzlich schon, aber (jetzt kommt der Haken) da es sich wahrscheinlich um einen Motor handelt, der umgeschaltet wird, muss man die Verzögerung beachten, die sich durch anlaufen bzw. auslaufen ergibt. Das scheint sich auch im Zustand von port auszudrücken, d.h. der Zustand ändert sich nicht sofort.


Zitat von sven123:

Sorry das ich dich so nerve, mir fällt das lernen so leichter. Erstmal in kalte Wasser, dann Erfolgserlebnis und anschließend Details....


Ah ja, okay. Nicht gerade meine Methode, aber da tickt ja eh jeder anders.
Meine bevorzugte Vorgehensweise beim lernen solcher Dinge ist eine Erklärung der Sache, gefolgt von einem ausführlich erklärten Beispiel, anhand dessen man die Sache dann Schritt für Schritt nachvollziehen kann.


Zitat von sven123:
Wenn ich das Grundgerüst dieses Codes verstanden habe hilft mir das mehr als 500Seiten vom Dingens Buch zu lesen. In diesem bedient man sich wieder dem schon erwähnten Sprachsyntax aus dem Paralleluniversum.


Ich nehme an, mit Paralleluniversum meinst Du UML. Sehe ich das richtig?
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.

Dieser Post wurde am 09.05.2014 um 18:39 Uhr von Hans editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
013
09.05.2014, 17:07 Uhr
sven123



Hallo Hans,

das mit der Verzögerung habe ich gesehen.
Nun gehen wir von dem Fall aus "state" war "true". Port also "on"...
if (state == true) {
port.off();
//nun wird der Port "off" geschaltet
Es wird also erst
int timeOut=0;
//der Timer auf null gesetzt.
dann
do{
newState=port.getState();
//der Status von "port" geholt, vermutlich noch nicht geändert, da Anlauf/Auslaufzeit
und
timeOut++;
if (timeOut>1000)
succsess=false;
//die Schleife gestartet bis
} while ( (oldState!=newState) || !success );
return sucess;
//zur Abbruchbedingung...
oldState!=newState
//status von "port" hat sich geändert, Motor ist an- oder -ausgelaufen, also "oldstate" ungleich "newstate"
oder
!success
//nicht succsess, also "false", da Schleife 1000 mal durchgelaufen....

Ist das soweit richtig?

Was ich noch nicht verstehe ist die Geschichte mit dem Register, wie sieht dies physikalisch aus?
Es handelt sich um Speicherplatz, klar. Aber was ist mit "state", "newstate" und "oldstate". Der Status des Port wird in "state" an einen Platz des Registers geschrieben? Was sind "old und newstate"? Klar es sind Zustände von "state" zu bestimmten Zeiten. Aber was bedeutet des? Sind das benamte Zeiger zu "state"? Wie werden die verschiedenen Zustände von "port" in das Register geschrieben und wie erkannt was hinter "oldstate" oder "newstate" steht?

Vielen Dank für deine Hilfe.

mfg
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
014
09.05.2014, 18:30 Uhr
Hans
Library Walker
(Operator)


Hi,

ich fang mal von hinten an:

Zitat:

Was ich noch nicht verstehe ist die Geschichte mit dem Register, wie sieht dies physikalisch aus?


Ein Register ist physikalisch gesehen eine Schaltung aus ein paar Transistoren und anderen Bauteilen. Diese Schaltung kann genau wie die Variablen vom Typ bool nur 2 Zustände annehmen, nämlich on und off oder deutsch, ein und aus. Das ist analog zu den Variablen wobei meisstens gilt:
true <=> on oder ein
false <=> off oder aus
Eine weitere Besonderheit an einem Register ist, dass der Zustand nicht nur durch ein Programm geändert werden kann, sondern auch durch andere Elemente der Schaltung, in der Regel irgendwelche Sensoren. Ein Programm kann dann das Register abfragen und feststellen, ob sich an dessen Zustand was geändert hat, womit wir wieder bei dem Beispiel wären. Denn genau so ein Register wird sich hinter "port" verbergen.


Zitat:

Es handelt sich um Speicherplatz, klar. Aber was ist mit "state", "newstate" und "oldstate".


Das sind Variablen.


Zitat:

Der Status des Port wird in "state" an einen Platz des Registers geschrieben?


Nein anders herum: Der Zustand des Registers wird in die Variable "state" geschrieben.


Zitat:

Was sind "old und newstate"? Klar es sind Zustände von "state" zu bestimmten Zeiten.


Nein, das sind Zustände von port. Und weil man einen alten mit einem neuen Zustand vergleichen will, nimmt man 2 Variablen.


Zitat:

Aber was bedeutet des? Sind das benamte Zeiger zu "state"?


Nee, mit Zeigern haben wir in dieser Funktion nichts zu tun.


Zitat:

Wie werden die verschiedenen Zustände von "port" in das Register geschrieben und wie erkannt was hinter "oldstate" oder "newstate" steht?


Wie schon geschrieben: Es ist anders herum. Das Register verbirgt sich hinter "port" und dessen Zustände werden in state, oldstate und newstate geschrieben.

Jetzt zum Programm

Zitat:

Nun gehen wir von dem Fall aus "state" war "true". Port also "on"...
if (state == true) {
port.off();
//nun wird der Port "off" geschaltet


richtig.


Zitat:

Es wird also erst
int timeOut=0;
//der Timer auf null gesetzt.


auch richtig.


Zitat:

dann
do{
newState=port.getState();
//der Status von "port" geholt, vermutlich noch nicht geändert, da Anlauf/Auslaufzeit


Ebenfalls richtig.
An dieser Stelle, bzw. mit der Anweisung "do" ist bereits die Schleife gestartet, d.h. die Abfrage findet schon innerhalb der Schleife statt.


Zitat:

und
timeOut++;
if (timeOut>1000)
succsess=false;
//die Schleife gestartet bis
} while ( (oldState!=newState) || !success );
return sucess;
//zur Abbruchbedingung...
oldState!=newState
//status von "port" hat sich geändert, Motor ist an- oder -ausgelaufen, also "oldstate" ungleich "newstate"


Auch korrekt; wobei der Motor ausgelaufen sein muss, wenn wir davon ausgehen, dass state==true gilt. Denn dann haben wir ihn ausgeschaltet.


Zitat:

oder
!success
//nicht succsess, also "false", da Schleife 1000 mal durchgelaufen....


Ich glaube, jetzt hast Du es so halbwegs verstanden, aber reichlich unglücklich kommentiert.
Mir ist übrigens gerade erst aufgefallen, dass man "state" gar nicht braucht, sondern mit "oldstate" und "newstate" auskommt. Die Frage ist jetzt, was in der if-zeile stehen muss, die entscheidet, ob der Motor ein oder ausgeschaltet wird?

Und Du hast meine Frage aus Post 012 nicht beantwortet, nämlich ob Du mit dem "Paralleluniversum" UML meinst oder nicht?

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.

Dieser Post wurde am 09.05.2014 um 18:37 Uhr von Hans editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
015
12.05.2014, 18:02 Uhr
sven123



Hallo Hans,

vielen Dank für deine Nachricht.
Bzgl Paralleluniversum meine ich allgemein den Sprachsyntax sowie die Subjekte die diesen nutzen.

Ich hoffe du hast soviel Humor und sprichst trotzdem weiter mit mir.

Mal ehrlich Hans, Worte wie Vererbung (ich denke an Darwin), Kovarianz (Stochastik), Persistenz, Aggregation (da gibt es sogar deutsche Wörter für) oder Kindklasse (na das erst) das geht doch auch anders. Aus dem Zusammenhang versteht doch der hiesige nicht worum es eigentlich geht, obwohl trivial......

So als nächstes mache ich mich mal an den Versuch der Darstellung des Codes in Struktogramm und wenn ich nicht zu arg verärgert habe können wir dann bitte darüber sprechen?

mfg
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
016
12.05.2014, 19:54 Uhr
sven123



Wie kann man hier eigentlich screenshots oder Bilder einfügen?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
017
12.05.2014, 20:12 Uhr
sven123




Code:
I    I newstate = port.getstate                         I
I    I timeout ++                                             I
I    I------------------------------------------------I
I    I             timeout > 1000                          I
I    I jes                    V        no                       I
I    I------------------------------------------------I
I    I succsess = false  I        /                        I
I    I------------------------------------------------I
I ((oldstate ! = newstate ) II ! succsess            I
I-------------------------------------------------------I


PS.: Das "V" soll Auswahl bedeuten, also zw j/n.
Ist das so OK, oder muss man das mehr verbal beschreiben, so mit Auswahl, gleichsetzen usw???
Vielen Dank für Deine Hilfe......
HMM das mit der Grafik ist nicht so der Hit....
Zeile 1 & 2 soll die Anweisung sein
Zeile 3, 4 und 5 die Auswahl j/n wenn timeout >1000, Ausgabe succsess = false
Zeile 6 die Abbruchbedingung der fussgesteuerten Schleife....

Hans wie war das noch gleich mit dem Ausrufezeichen vor und nach dem Ausdruck?
Macht das einen Unterschied?

oldstate ! vs ! succsess

mfg

---
Edit: code-Tags eingefügt

Dieser Post wurde am 12.05.2014 um 21:05 Uhr von Hans editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
018
12.05.2014, 21:04 Uhr
Hans
Library Walker
(Operator)


Hi,

Zitat von sven123:

Bzgl Paralleluniversum meine ich allgemein den Sprachsyntax sowie die Subjekte die diesen nutzen.



Ach so. Tja, die hab ich auch nicht erfunden, hat sich inzwischen aber so eingebürgert, also wird man damit leben müssen.


Zitat von sven123:

Mal ehrlich Hans, Worte wie Vererbung (ich denke an Darwin), Kovarianz (Stochastik), Persistenz, Aggregation (da gibt es sogar deutsche Wörter für) oder Kindklasse (na das erst) das geht doch auch anders. Aus dem Zusammenhang versteht doch der hiesige nicht worum es eigentlich geht, obwohl trivial......


Nun ja, ich schätze, bei der Vererbung ist der Vergleich zu Darwin durchaus gewollt, schliesslich übernimmt die "erbende Klasse" ja alle Eigenschaften der Basisklasse. Aber man muss sich halt schon etwas intensiver damit beschäftigen, um die Analogien zu begreifen.


Zitat von sven123:

So als nächstes mache ich mich mal an den Versuch der Darstellung des Codes in Struktogramm und wenn ich nicht zu arg verärgert habe können wir dann bitte darüber sprechen?


Können wir.


Zitat von sven123:

Wie kann man hier eigentlich screenshots oder Bilder einfügen?


Sehr umständlich. Die musst Du auf einen externen Bilder-Server hochladen und dann einen link dahin setzen.

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
019
12.05.2014, 21:37 Uhr
Hans
Library Walker
(Operator)


Hi,

Zitat von sven123:

Code:
I    I newstate = port.getstate                         I
I    I timeout ++                                             I
I    I------------------------------------------------I
I    I             timeout > 1000                          I
I    I jes                    V        no                       I
I    I------------------------------------------------I
I    I succsess = false  I        /                        I
I    I------------------------------------------------I
I ((oldstate ! = newstate ) II ! succsess            I
I-------------------------------------------------------I




ich hab da mal code-Tags rein gesetzt, also [ code ] ... [ / code ].
Aber es stimmt schon, mit der Grafik ist das nicht so der Hit. Das gilt aber für alle Foren, es sei denn sie erlauben LaTeX oder SVG in den Beiträgen. Latex ist bei neuerer Forensoftware möglich, SVG hab ich aber noch nicht gesehen, zumal das auch nicht so ganz einfach ist.


Zitat von sven123:

Hans wie war das noch gleich mit dem Ausrufezeichen vor und nach dem Ausdruck?
Macht das einen Unterschied?


Das Aufrufezeichen steht für ein logisches NOT, also eine Invertierung. Es ist damit ein sogenannter unärer Operator, genauso wie ein Minuszeichen vor einer Zahl. Ob das einen Unterschied macht, probiert man am besten mit Miniprogrammen aus, etwa so:

C++:
#include <iostream>

using namespace std;

int main( )
{
    int a=1, b;

    cout << " a=" <<  a << endl;
    cout << "!a=" << !a << endl;

    // oder so:    
    b = !a;
    cout << "!a=" << b << endl;

    // weiterer Test...
    b = a!;       // Syntax Error
    cout << "b=" << b << endl;

}  // main



Das sollte man bei den vielen Operatoren, die C und C++ bieten, sowieso tun, um ihre Wirkung verstehen zu lernen.

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.

Dieser Post wurde am 12.05.2014 um 21:44 Uhr von Hans editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] > 2 < [ 3 ]     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: