# Programmablaufplan & Pseudocode



## joner (10. Januar 2013)

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




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

Danke MFG


----------



## saftmeister (10. Januar 2013)

Du hast es im Prinzip absolut korrekt widergegeben. Kein Grund mehr Beispiele zu bringen.


----------



## cwriter (10. Januar 2013)

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.:

```
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):

```
#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


----------



## ComFreek (10. Januar 2013)

Bitte nutze kein goto in diesem Fall!

Dies führt jetzt schon so unsauberem Code, nutze lieber eine Schleifenart wie while oder for.

```
while (i <= 100) {
  if (i==39) {
    i = 61;
  }
  else {
    i++;
  }
  printf("%d\n",i);
}
```


----------



## cwriter (10. Januar 2013)

@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


----------



## joner (10. Januar 2013)

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. 


```
#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


```
#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


----------



## cwriter (10. Januar 2013)

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


----------

