Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Praktische Informatik » Nassi-Shneiderman-Diagramm erstellen » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen Nassi-Shneiderman-Diagramm erstellen
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Sowasvonphi
unregistriert
Nassi-Shneiderman-Diagramm erstellen Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Meine Frage:
Hallo,

ich habe Probleme beim Verständnis von dem Ende des Nassi-Shneidermann Diagramms.

Zuerst einmal zur Aufgabenstellung:
Quadratziffern
In einer (äußeren) Schleife sollen ganze Zahlen in eine Variable n eingelesen werden. Die Reaktion des Programms soll davon abhängen, welchen Wert (Positiv, negativ oder gleich Null) die Variable hat.
Treffen soll man folgende Fallunterscheidung:
- Ist die eingelesene Zahl größer als Null, so soll in einer inneren Schleife ausgegeben werden:
Zahl Quadratzahl
1 1
2 4
3 9
n n*n
- ist die eingelesene Zahl n kleiner Null, so soll ausgegeben werden: Negative Zahl
- ist die eingelesene Zahl n gleich Null, so soll das Programm die (äußere Schleife) abbrechen.


Meine Ideen:
Also im Groben und Ganzen verstehe ich was zu tun ist und wie man es macht, aber und jetzt kommt's. Der letzte Satz ist für mich irgendwie "unlogisch" wahrscheinlich, weil ich ein Teil nicht verstanden habe.

Es steht ja:
- ist die eingelesene Zahl n gleich Null, so soll das Programm die (äußere Schleife) abbrechen.

Jetzt ist aber im Diagramm in der letzten Zeile, wenn n ungleich Null ist wird die Schleife durchlaufen. Wo aber ist jetzt die Bedingung wenn n=0 ist, dass dann die Schleife verlassen wird?

Hänge da jetzt längere Zeit davor und wollte Euch deswegen um Meinung fragen.

Würde mich jedenfalls freuen, wenn mir eine Person ein kurze Auskunft geben könnte. Danke jetzt schon,

MfG Sophie

Sowasvonphi hat dieses Bild (verkleinerte Version) angehängt:
Qhoch2ziffern.png

07.12.2017 13:15
Karlito Karlito ist männlich
Kaiser


Dabei seit: 11.04.2011
Beiträge: 1.461

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Hallo So[latex]\phi[/latex],

die Schleife wird ja solange durchlaufen wie n ungleich 0 ist. D.h. sobald n = 0, wird die schleife Abgebrochen.

Zum besseren Verständnis:
- n wird eingelesen (0)
- Das erste if geht in die rechte Seite
- Das zweite if in der rechten Seite geht wiederum in die rechte Seite
- Es wird nichts getan (Die rechte Seite ist leer)
- Die Schleifenbedingung schlägt fehl und somit die Schleife abgebrochen

Besten Gruß,

Karlito
07.12.2017 14:30 Karlito ist offline E-Mail an Karlito senden Beiträge von Karlito suchen Nehmen Sie Karlito in Ihre Freundesliste auf
Sowasvonphi
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Hallo Karlito,

Zitat:

- Die Schleifenbedingung schlägt fehl und somit die Schleife abgebrochen

Ahso war das gemeint, solange die Zahl ungleich Null ist wird die Schleife nicht verlassen. Ich habe mir nämlich komischerweise genau das Gegenteil gedacht.

Ich wollte jetzt zur Übung aus dem Struktogramm den Code schreiben, aber Probleme bereiten mir die Schleifen. (Bin halt noch am Anfang meiner C.Abenteuers)

Wie lese ich am besten das Struktogramm und wie fange ich dann am besten den Code daraus zu generieren. Ich habe jetzt versucht erstmal die äußere Schleife zu berücksichtigen, weil darunter ja sozusagen "alles fällt" bzw. davon abhängt.

Es gibt ja die zwei Typen von Schleifen.
Einmal while for (abweisende Schleife, Bedingung am Anfang)
und do while (nicht abweisende Schleife), Bedingung am Schluss).

Die äußere Schleife ist eine do-while-Schleife mit der Bedingung, dass n != 0. Und die innere Schleife ist eine while-for-Schleife, solange i <=n ist?

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
#C
/*Quadratziffern*/

main()
{
int n;
printf("%d Bitte geben Sie eine Zahl ein:\n", n);
scanf("&d", &n);
do
 {
if(n>0)
printf("%d Quadratzzahl ist:\n");
n*n;
else if(n<0)
printf("negative Zahl\n")
for(i <= n)
printf("Ausgabe von i:")
i*i;
i++;
while(n>0)
 }
}

Aber ob das so in Ordnung geht, bezweifle ich unglücklich

Danke für die Nachricht,

Sophie
08.12.2017 19:54
Sowasvonphi
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Hallo,

hat vielleicht jemand eine Idee Gott ?
Komme da erwähnten Stelle nicht weiter. Also das Struktogramm in Code umzuschreiben.

Grüße

Sophie
14.12.2017 09:14
spazzpp2
Grünschnabel


Dabei seit: 10.04.2014
Beiträge: 7

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

1. Kann es sein, dass dein C-Code in den Zeilen 13 und 18 zwar das Quadrat berechnet, aber das Ergebnis nie ausgibt?

2. Schleifen in C sehen immer so aus:

for(<anfangsbedingung>;<bedingung>;<inkrement>) { <zu wiederholender code> }

Oder so:

while(<bedingung>) { <zu wiederholender code> }

Oder so:

do { <zu wiederholender code> } while (<bedingung>);

Auch die Fallunterscheidungen müssen die Befehlsgruppen für jeden Fall in Code-Blöcke Gruppieren:

if (<bedingung>) { <code für zutreffenden fall> } else { <code für sonstigen fall> }

Das heißt, die geschweifen Klammern um den zu wiederholenden Code müssen an der richtigen Stelle sein. Bitte schau in deinem Code, ob das der Fall ist. Es hilft, die Zeilen dazwischen um einige Leerzeichen einzurücken.

3. Ich halte es prinzipiell für eine gute Idee, etwas das Dir neu ist mal in einer Sprache aufzuschreiben, die du schon kennst. Wenn du die allerdings nicht beherrschst, wird es schwierig. Ich schlage vor, das, was dargestellt wird zuerst in Pseudo-Code oder menschliche Sprache zu notieren und dann in C um zu kontrollieren, ob das stimmt.

Ich hoffe, das hilft Dir erstmal weiter! Daumen hoch

___
edit: if-Syntax hinzugefügt

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von spazzpp2: 09.03.2020 15:02.

09.03.2020 14:09 spazzpp2 ist offline Beiträge von spazzpp2 suchen Nehmen Sie spazzpp2 in Ihre Freundesliste auf
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Informatiker Board » Themengebiete » Praktische Informatik » Nassi-Shneiderman-Diagramm erstellen