Programmablaufplan & Pseudocode

joner

Grünschnabel
Hallo ,



ich schreibe in C-Programm und habe einige Schwierigkeiten mit Pseudocode und Programmbblaufplan, Im Grunde weiss ich schon, was ein Pseudocode ist, nämlich das Programm mit Alltagssprache zu vereinfachen und verständlicher zu machen, etwa so

Z.B.

Es soll dies angegeben werden
die Eingabe soll in Variable "a" gespeichert werden

wenn Schleife im Programm ist(While)


> Startwert 0
Variable b>0
tue solange bis die Eingabe größer als 0 ist

Ausgabe
Ende.

ich bin mir aber nicht sicher, ob dieses Pseudocode richtig ist ?



- und jetzt zum Programmablaufplan

Pap ist so zu sagen eine Skizze über das Programm

ein Beispiel

Euklid.png

Könnte einer vllt mal an einigen Beispielen erklären ( Pseudocode und PAP)

Danke MFG
 
http://de.wikipedia.org/wiki/Pseudocode

Ist Code, der einem Quelltext zwar ähnlich ist, aber so nicht funktioniert, weil etwa Funktionen fehlen oder der Code stark gekürzt ist. Z.B.:
Code:
while(i != 100)
{
     MachWas(i);
     i++;
}
...
if(WasHastDuGetan() == 1)
{
    printf("Ich habe Pseudocode geschrieben");
}

Wenn man diesen Code 1 zu 1 übernimmt und kompilieren will, geht es nicht, da z.B. "..." keine Anweisung ist.

http://de.wikipedia.org/wiki/Programmablaufplan

Auch Flussdiagramm genannt. Veranschaulicht den Programmablauf, ist meist graphisch dargestellt.
Mit dem Diagramm von Wikipedia gerechnet wäre das der weniger gut portierbare Code (denn aus einem Flussdiagramm kann man schneller den Sinn erkennen und ggf. etwas abkürzen):
C:
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char* argv[])
{
    int i = 1;
    repeat:
    printf("%d\n",i);
    if(i == 39)
    {
        i = 61;
        goto repeat;
    }
    else 
    {
        i++;
        if(i<=100) goto repeat;
    }
    return 0;
}
Ungetestet.

Falls das nicht das war, war du wolltest, entschuldige bitte.

Gruss
cwriter
 
Zuletzt bearbeitet:
Bitte nutze kein goto in diesem Fall!

Dies führt jetzt schon so unsauberem Code, nutze lieber eine Schleifenart wie while oder for.
C++:
while (i <= 100) {
  if (i==39) {
    i = 61;
  }
  else {
    i++;
  }
  printf("%d\n",i);
}
 
@ComFreek
Das ist mir bewusst, jedoch ist das Flussdiagramm meines Erachtens mit goto besser nachvollziehbar.

Aber natürlich ist dein Code schöner (und mehr C(++) als meiner ;-) )

Gruss
cwriter
 
Danke für eure Antworten,

Gibts eigentlich für Pseudocode eine Schema, d.h so muss ein Pseudocode aufgebaut sein, oder ist es dem Programmierer überlassen, wie er schreibt ?


und jetzt zum PAP, das Problem bei mir ist, wenn ich ein PAP sehe, weiss ich, was in etwa gemeint ist aber wenn ich selber schreiben muss, habe ich kleine schwierigkeiten.

z.B wenn ich diese Quellcode in Pseudocode schreibe und PAP davon machen will.

C++:
#include <stdio.h>
#include <stdlib.h>

int main ()
{

	int dual[8];
	int zahl;
	
	do
	
	{
	printf("Geben Sie eine Dezimalzahl ein :  ");
	scanf("%d", &zahl);
	}
	while(zahl>127 || zahl<-128);
	
	zahl+=256;
	
	for(int i=7 ; i>=0; i--)
	{
		dual[i] = zahl % 2;
		zahl/=2;
	
	}
	

	for(int j=0; j<8; j++) 
	{
	printf("%d", dual[j] );
	}
	

	return EXIT_SUCCESS;
}


würde ich in etwa so schreiben

> Pseudocode

C++:
#include <stdio.h>
#include <stdlib.h>

int main ()
{

	eine Liste mit Länge 8;
	Variable (Ganze Zahl);
	


	do
	
	Benutzer soll eine Dezimal Zahl eingeben 
        und diese soll zwischen -128 bis 127 sein
        wenn Falsche Eingabe, dann  soll die Schleife wiederholt werden


	while(-128 bis 127);
	
	
	
	for(Die Dualzahl soll durch Modulo Division ermittelt werden)
	
	}
	

	for(Ausgabe des Dualzahl) 
	

	return Ende des Programms;
}



Stimmt das oder was sollte ich lieber verbessern ?

und in PAP würde ich so machen

Start >>zahl=0 >>* Zahl ist zwischen -128 bis 127 <ja> ende der Schleife, <nein>, wird die Schleife fortgesetzt (ist wieder bei *)


stimmt das so in etwa oder was sollte ich lieber hier verbessern

Danke MFG
 
Schema für Pseudocode:
Er sollte in der richtigen Reihenfolge sein, sonst gibt es eigentlich keine Restriktionen (ist ein dehnbarer Begriff :) ).

Beide Codebeispiele sind gut so. Die Header müssten meines Erachtens nicht stehen, aber jedem das seine :).

Gruss
cwriter
 
Zurück