Profimelker
Little Overclocker
|
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!!
Bearbeitet von Profimelker am 03.01.2007, 18:40
|
Frys_Assassin
information keeper
|
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.
Bearbeitet von Frys_Assassin am 28.12.2006, 12:15
|
Profimelker
Little Overclocker
|
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
Little Overclocker
|
Hier meine ersten Versuche: 2. 1. 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??
Bearbeitet von Profimelker am 03.01.2007, 18:40
|
rettich
Legendwaffle, waffle!
|
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.
Bearbeitet von rettich am 03.01.2007, 13:31
|
Ex0duS
Banned
|
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  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 ?
Bearbeitet von Ex0duS am 03.01.2007, 13:54
|
AoD
aka AngelOfDeath
|
soweit mich ich erinnern kann, sollte dieser Code auch funktionieren 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):
|
Indigo
raub_UrhG_vergewaltiger
|
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
aka AngelOfDeath
|
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
Little Overclocker
|
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(); }  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(); } 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(); } 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
Bearbeitet von Profimelker am 03.01.2007, 18:41
|
AoD
aka AngelOfDeath
|
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
Bearbeitet von AoD am 03.01.2007, 16:31
|
Profimelker
Little Overclocker
|
das while n!=0 heißt: für solange aus, solange nicht null ist oder?
|
AoD
aka AngelOfDeath
|
jop while(i<5)
printf("%d", i++);
ist nichts anderes als 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
24/7 Santa Claus
|
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
Here to stay
|
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 
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" 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
Bearbeitet von Luzandro am 03.01.2007, 17:32
|