Flussdiagramme

Seite 1 von 2 - Forum: Coding Stuff auf overclockers.at

URL: https://www.overclockers.at/coding-stuff/flussdiagramme_173959/page_1 - zur Vollversion wechseln!


Profimelker schrieb am 28.12.2006 um 11:20

Hallo zusammen!

Ich brauche eure hilfe zum Thema Flussdiagramme. muss nämlich für die Schule ein paar zeichnen. Wäre nett wenn mir jemand eine Anleitung zeigen könnte oder (noch besser) welche für mich zeichnen könnte. Ich stell hier mal 2 Programme rein, hab aber noch 4 od. 5 andere für die ich auch fludis brauche.

2. Programm:
#include<stdio.h>
#include<ctype.h>

int main()
{
int c;
while(1)
{
c=getch();
printf("Taste druecken: ");
if(c==3)
{
break;
}

if(isalpha(c))
printf("%2.2x %c Buchstabe\n",c,c);
{
if(isdigit(c))
printf("%2.2x %c Zahl\n",c,c);
}
}
getch();
}

1. Programm:
#include<stdio.h>

int main()
{
int a;
a=0;

while(a<=127)
{
if(a<=32)
printf("%3d %2.2x %8.8b\n",a,a,a);

else
printf("%3d %2.2x %8.8b %c\n",a,a,a,a);
a++;


}
getch();
}

Schon im voraus viel dank für eure hilfe!!


Frys_Assassin schrieb am 28.12.2006 um 12:09

Und womit hast du jetzt ein Problem?
Klingt nach Schule, habt ihr es im Unterricht nicht besprochen wie soetwas auszusehen hat?
Oftmals verstehen die Leute unterschiedliche Sachen unter einem "Flussdiagramm".
Wikipedia führt zu diesem Artikel: Programmablaufplan.
Mit dem dortigen Beispiel wirst vermutlich mal nen ersten Entwurf hinbekommen. Deine ersten Versuche kannst du dann ja posten und du wirst sicher Feedback dazu erhalten.

Edith: Zum Thema möcht ich noch loswerden dass die klassischen Flussdiagramme mittlerweile schon ordentlich angestaubt sind. UML (2.0) gehört die Welt. Damit lassen sie Abläufe meiner Ansicht nach vielschichtiger darstellen.


Profimelker schrieb am 02.01.2007 um 09:37

Danke erstmal
Ja wir haben es in der Schule durchgenommen aber bei der Lehrerin versteht es eh keiner (zumindest meine Ansicht, die Lehrerin sieht das vielleicht anders). Den Link den du gepostet hast, genau solch ein Flussdiagramm brauch ich für die Schule.
Die ersten Versuche werd ich sobald als möglich posten.


Profimelker schrieb am 03.01.2007 um 11:10

Hier meine ersten Versuche:
2.
zeichen-1.jpg
1.
asciitab-1.jpg

Wenn was falsch ist: BITTE SAGEN!!

Ich selbst hab auch noch ein paar Fragen.
Beim ersten geht das irgendwie anders als mitn isdigit u. isalpha?
Beim zweiten muss ich noch das a=0 irgendwie einfügen??


rettich schrieb am 03.01.2007 um 13:28

was macht im ersten beispiel das "while" in einem eigenen kasti? das ding erklärt den ablauf, nicht die code-zeilen, die du verwendet wirst, um das programm später umzusetzen.

setze decisions ein, die du mit ja/nein beantworten kannst. für ein flussdiagramm durchaus auch mit einer formulierten frage (im extremfall etwa: "ist die eingegebene variable eine zahl? ja/nein"). dann wirds leichter zu lesen.

bei solch trivialen problemen reicht übrigens meist ein gemeinsamer endpunkt, zu dem alle wege führen.


Ex0duS schrieb am 03.01.2007 um 13:50

Sorry komplett falsch ;)

es heisst While schleife .... insofern sollte dir klar sein das dein diagramm mindestens eine schleife enthalten muss, ich sehe keine einzige.

While heisst immer ...to etwas solange bis ein gewisser fall eintritt ... daher brauchst du in deinem diagramm eine schleife in der etwas gemacht wird, und eine eine abbruchbedingung bei der dann die schleife verlassen werden soll.

eine Anmerkung noch ...ist das dein code ? ... while(1) ist nie gut (ausgenommen vieleicht es handelt sich um ein µC programm, da diese ja meist unendlich lange laufen sollen ;)

Zitat von Frys_Assassin
Edith: Zum Thema möcht ich noch loswerden dass die klassischen Flussdiagramme mittlerweile schon ordentlich angestaubt sind. UML (2.0) gehört die Welt. Damit lassen sie Abläufe meiner Ansicht nach vielschichtiger darstellen.
nicht alles ist gleich ein Platform unabhängiger Java Server der abertausende clients bedienen muss ..... was ich damit sagen will .... wieso mit einem schlachtkreuzer auf tontauben schiessen ?


AoD schrieb am 03.01.2007 um 14:03

soweit mich ich erinnern kann, sollte dieser Code auch funktionieren

Code:
printf("Taste druecken: ");
while((c = getch()) != 3)
{
  printf("Taste druecken: ");
  if(isalpha(c))
    printf("%2.2x %c Buchstabe\n",c,c);
  else
  {
    if(isdigit(c))
     printf("%2.2x %c Zahl\n",c,c);
  }
}

mein vorschlag für das diagramm schaut so aus (schnell in paint erstellt):
click to enlarge


Indigo schrieb am 03.01.2007 um 14:09

da gibts ein nettes tool namens "easycase" das macht dir aus vorhandenem c-code solche diagramme, bzw. kannst du auch direkt via diagramm das programm "zeichnen"...


AoD schrieb am 03.01.2007 um 14:38

wobei IMMER zuerst das flussdiagramm da sein sollte und nicht erst der programmcode. denn VORHER überlegen was man baut und nicht mal drauf los arbeiten und dann 3mal umschreiben müssen.


Profimelker schrieb am 03.01.2007 um 16:22

Danke erstmal für das rege Interesse, ich werd dann meine Fehler ausbessern und posten. Aber jetzt hab ich mal ein paar neue Programme:
3.
#include<stdio.h>
#include<string.h>

int main()
{
char s[30];
int n;

while(1)
{
fgets(s,30,stdin);
s[strlen(s)-1]='\0';
n=strlen(s);
printf("%d Zeichen \n",n);
if(n==0)
{
printf("Keine Zeichen eingegeben!\n",n);
break;
}
}
getch();
}
click to enlarge

4.
#include<stdio.h>
#include<string.h>

int main()
{
char v[80],n[80],z[200];
int s;

while(1)
{
printf("Vorname\n",v);
fgets(v,80,stdin);
s=strlen(v);
v[strlen(v)-1]='\0';
if(s==1)break;

printf("Nachname\n");
fgets(n,80,stdin);
s=strlen(n);
n[strlen(n)-1]='\0';
strcpy(z,v);
strcat(z," ");
strcat(z,n);
printf("Danke fuer deine Mitarbeit, %s!\n",z);
}
getch();
}
click to enlarge

5.
#include<stdio.h>

int main()
{
FILE *out;
int z;

z=0;
out=fopen("ASCIITAB.txt","w");
while(z<=127)
{
if(z<=32)
fprintf(out,"%3d %2.2x %8.8b\n",z,z,z);

else
fprintf(out,"%3d %2.2x %8.8b %c\n",z,z,z,z);
z++;
}
fclose(out);
getch();
}
click to enlarge

Hoffe ich hab eure Verbesserungsvorschläge umgestetzt, falls nicht bitte sagen. Ein Programm hab ich noch, aber das poste ich wann anders.

EDIT: Hab vergessen: das Flussdiagramm kommt ja eigentlich zuerst, aber möchts nicht mehr umdrehen! sry


AoD schrieb am 03.01.2007 um 16:27

also zum ersten diagramm:
die while schleife ist falsch.
die bedingung lautet nicht "while n==0" sondern "while n!= 0", denn du führst ja code aus, so lange bis kein zeichen eingegeben worden ist. deshalb muss dann auch ja und nein zweig vertauscht werden.

edit:
verwechsle die bedeutung von while nicht mit until. (vom englischen gebrauch).
denn deine schleifen lauten im code "while(!BreakCondition)" während du in den diagrammen immer "while(BreakCondition)" im sinne von "führe aus solange bis" verwendetst.
außerdem bau bitte das while(1) aus, das macht man einfach nicht :p


Profimelker schrieb am 03.01.2007 um 16:56

das while n!=0 heißt: für solange aus, solange nicht null ist oder?


AoD schrieb am 03.01.2007 um 17:11

jop

Code:
while(i<5)
  printf("%d", i++);
ist nichts anderes als
Code:
kopf:
  if(i>=5)
    goto ende;
  printf("%d", i++);
  goto kopf;

ende:
  return;
vielleicht ist das verständlicher

wobei ich bei die flussdiagramme abstrakter machen würde und einfach schreiben würde "solange gültige Zeicheneingabe" anstatt "while(c != 3)"

edit:
eine while schleife ist nichts anderes als ein block an code, der an eine bedingung geknüpft ist. der code wird 0-n mal ausgeführt, solange die bedingung wahr ist.


Burschi1620 schrieb am 03.01.2007 um 17:22

also schleifen bricht man normalerweise nicht mit einem break ab. Das is eine ziemlich unsaubere lösung. Das geht hier noch anders ;)
und die while(1) wurde dir eh shcon gesagt ;)


Luzandro schrieb am 03.01.2007 um 17:30

Zitat von AngelOfDeath
Zitat von JC
Mhm, die Feinarbeit scheint ein wenig mühsam zu sein. Ebenso gestaltet sich der FPS nicht ganz so einfach. Aber ich muss ihnen das lassen - eine sexy Idee :cool:

ACK. Das Diagramm sollte den Programmablauf visualisieren - wenn ich mir nur dein erstes Diagramm ansehe, ist der erste Knoten eine Entscheidung "While n==0 Ja/Nein?" Abgesehen davon, dass da nirgends steht, was "n" ist, ist auch das "while" hier überflüssig und verwirrt höchstens. Du brauchst zuvor sowas wie "von StdIn lesen" und dann zB eine Abfrage "mind. 1 Zeichen gelesen"

Zitat von Burschi1620
also schleifen bricht man normalerweise nicht mit einem break ab. Das is eine ziemlich unsaubere lösung. Das geht hier noch anders ;)
und die while(1) wurde dir eh shcon gesagt ;)
das ist anscheinend eine Aufgabe, wo eben der Code extra so gewählt wurde und er aufzeichnen soll, was das tut...

edit: und wenn du code postest, verwende bitte auch code-tags




overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2026