Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Hallo,

 

Java hat mir nie gut gelegen und ich habe mich aufrichtig die letzten 2 Jahre damit abgemüht. Nun stehe ich kurz vor der Prüfung (Fisi)und werde so mit Java nicht weiter kommen. Ich habe hier nun vom Pseudocode gelesen.Ich habe mal den Teil der Prüfung in den Anhang gepackt und meinen (wahrscheinlich noch grausigen Code) dann abschließend hier in das Posting.

Wie wird denn Pseudocode gewertet (BaWü)? Vielleicht weiß dies ja jemand. Ich meine wenn möglich mache ich ein Struktogramm aus der Aufgabe. Aber manchmal geht das ja nicht.

Also nicht lachen und ich würd  mich über Tipps echt freuen.

Gruss Striewe

Zitat

public class Pseudo {

   String sVergleich_IP;
   char cZeichen;
   int iIPAnzahl;
   int i;  
      
   if (iAnzahlITZ = 0){
    for (Wiederhole iZeile =0; mach das so lange bis du die Arraylaenge erreicht hast; erhöhe Schrittweise um +1) 
}
    

    if cZeichen = Textzeilen an x Position {
    
    for (Wenn cZeichen | dann erhöhe die Anzahl um 1);
}
    
    
    //Ganze IP einlesen
    if (ist iAnzahl = 4 dann erhöhe nicht){
    for (wiederhole i = 0 solange bis i 15 ist; erhoehe dann Schrittweire + 1)
       
    
}
    
    if (iPosition = iPosition +1) {
    for (cZeichen = sTextzeilen)
}
     
 if (ist sSuch_IP = sVergleich_IP) {
    for (wenn ja dann iIPAnzahl + 1 erhoehen;)
}
        
return iIPAnzahl;
}

 

 

strukto.PNG

Geschrieben

In Baden-Württemberg sind die Aufgaben für gewöhnlich in einer in der Berufsscjule eingeführten Programmiersprache zu bearbeiten. Ich gehe nicht davon aus, dass Pseudocode gewertet wird. Vielleicht gibt es einen Gnadenpunkt. Aber du hast ja zum Programmieren eine IDE (Oder einen Code-Editor) zur Verfügung. Also sollte es möglich sein zumindest eine halbwegs brauchbare Lösung abzuliefern, weil du doch nicht auswendig an jedes Syntaxdetail erinnern musst.

Und so viel machen die Programmieraufgaben bei FISIs meistens nicht aus...

Geschrieben

Ist das untere Bild die Lösung?
Wenn ja, denn ist die Lösung äußerst schlecht. Die Namen der Variablen ist schlecht gewählt und auch sonst arbeitet man heutzutage kaum noch mit for-Schleifen. Man verwendet heute überwiegend die foreach-Schleife, da diese Schleife uns direkt das Objekt gibt, das wir als nächstes betrachten wollen. Man muss also nicht per Indexierung das jeweilige Objekt aus einer Liste/Array rausholen.

Es überrascht mich auch, dass heutzutage noch so viel Wert auf Pseudocode und Struktogramme gelegt wird. In der Praxis wird man kaum bis gar nicht damit in Berührung kommen. Zumindest nicht auf der Ebene der Programmierung.

Zum eigentlichen Problem:
Dein Code stellt nicht das Struktogramm dar. Beispiel:

if (iAnzahlITZ = 0){
    for (Wiederhole iZeile =0; mach das so lange bis du die Arraylaenge erreicht hast; erhöhe Schrittweise um +1) 
}

wenn iAnzahlITZ gleich 0 ist, durchläufst du einfach nur alle Zeilen aber du machst dort nichts.
Das Durchlaufen der Zeilen soll aber auch immer stattfinden und nicht, wenn iAnzahlITZ 0 ist. Auch hast du keine Methode definiert. Du hast also wohl nicht nur Probleme Java-Code zu schreiben, sondern auch Probleme Struktogramme zu lesen. 

Ich habe mal den Code der ersten beiden for-Schleifen geschrieben. Vielleicht fällt dir dein Fehler selbst auf:

public class Pseudo {
	private string sVergleich_IP = "";
	private char cZeichen;
	private int iIPAnzahl = 0;
	private int iAnzahlITZ;
	
	public int AnzahlIPs(string sSuch_IP, string[] sTextTeilen) {
		
		// Wiederhole von iZeile = 0; solange iZeile < Arraylänge von sTextTeilen; Schrittweise 1
		for (int iZeile = 0; iZeile < sTextTeilen.length(); iZeile++) {
			
			iAnzahlITZ = 0;
			
			// Wiederhole von iPosition = 0; solange iPosition < Arraylänge von sTextTeilen[iZeile]; Schrittweise 1
			for (int iPosition = 0; iPosition < sTextTeilen[iZeile].length(); iPosition++) {
				...
			}
		}
	}
}

Wie du vielleicht erkennen kannst, sind die for-Schleifen ineinander verschachtelt. Du hast sie aber nur untereinander geschrieben aber wie gesagt, das Struktogramm aber echt grausam. So sollte man echt keinen Code schreiben.

Ich komme zwar aus Schleswig-Holstein, aber ich denke auch nicht, dass Pseudocode anerkannt wird, wenn es nicht explizit erfordert wird. Ich hab zwar damals nur eine Ausbildung zum Mechatroniker gemacht aber selbst da haben wir SPS-Programmierung gemacht und die Aufgaben sollten in der Sprache erledigt werden, wie @afo schon sagt, die wir in der Berufsschule gelernt haben. 

Geschrieben (bearbeitet)

Hallo Striewe,

 

Pseudocode ist immer so eine Sache. Ich persönlich vermeide ihn (bei IHK-Aufgaben) so weit es geht.

Hintergrund ist, dass die IHK (bzw verschiedene prüfer) sehr unterschiedliche Anforderungen an Pseudocode haben. Daher sind meine Anmerkungen nur meine _persönliche_ Einschätzung:

 

Zitat

public class Pseudo

würde ich komplett weg lassen. Das ist spezifisch an eine (oder mehrere) programmiersprachen gebunden. Dadurch verlierst du das "allgemein gültige", da du dich auf eine objektorientierte Sprache versteifst.

Das Struktogramm sieht zusätzlich so aus, als müsstest du eine Methode beschreiben (da Übergabe und Rückgabeparameter definiert sind), hier würde eher

public int IP_Zaehler(String sSuch_IP, String[ ] sTextzeilen)

passen.

Zitat

if (iAnzahlITZ = 0){
    for (Wiederhole iZeile =0; mach das so lange bis du die Arraylaenge erreicht hast; erhöhe Schrittweise um +1)
}

hier drehst du die Angabe aus dem Struktogramm um (also die If und die Schleife). Außerdem sagst du "solange bis X zutrifft", Schleifen gehen aber üblicherweise nach dem Prinzip "solange wie X zutrifft".
 

Zitat

for (Wenn cZeichen | dann erhöhe die Anzahl um 1);

Diese Schleife macht gar nichts. sie hat keinen Schleifenrumpf ;)

Die "Dann-Anweisung" ist praktisch der Rumpf, das sollte man aber in den geschweiften Klammern schreiben, und nicht in das Statement. Ähnlich hier:

vor 1 Stunde schrieb Striewe:

if (ist iAnzahl = 4 dann erhöhe nicht){

 

 

vor 1 Stunde schrieb Striewe:

if cZeichen = Textzeilen an x Position {

hier fehlen die Klammern um die Bedingung (kann man weglassen, stichwort ist hier aber: Wenn dann im gesamten Pseudocode gleich behandeln.

Manchmal fehlen zudem die geschweiften Klammern. z.B. hier:

vor 1 Stunde schrieb Striewe:

for (Wenn cZeichen | dann erhöhe die Anzahl um 1);

Und wo siehst du diese Schleife überhaupt? Im Struktogramm sehe ich nichts davon.

 

vor 1 Stunde schrieb Striewe:

if (iPosition = iPosition +1) { for (cZeichen = sTextzeilen)

vor 1 Stunde schrieb Striewe:

if (ist sSuch_IP = sVergleich_IP) { for (wenn ja dann iIPAnzahl + 1 erhoehen;) }

Ich bin mir nicht sicher, ob du weisst, was if und was for genau bedeuten. Weder von der if, noch von der for sehe ich irgendwas im Struktogramm.

 

Zitat

if (ist iAnzahl = 4 dann erhöhe nicht){

Der Rumpf dieser Abfrage ist zu klein. alles folgende ist laut Struktogramm im true-Block.

 

vor 1 Stunde schrieb Striewe:

return iIPAnzahl;

Eine Klasse returned nichts --> Folgefehler, da du keine Methode definiert hast.

 

Generell holpert es noch sehr. Eventuell hilft es dir das struktogramm und einzelne Blöcke daraus farblich zu markieren, um kleinere Teilprobleme zu erhalten. (Die dann natürlich leichter zu lösen sind)

Bearbeitet von Chiyoko
Typos
Geschrieben

Hallo Chief,

ja ist wohl auch so. Ich denke Java wird zwar nicht meine "Glanznote" aber es wird reichen. Ein wenig wird es auch auf die Aufgabe ankommen. Manche Struktogramme in den Prüfungen sind eine echte Zumutung.....:carwyn:

Danke!

Gruß Striewe

Geschrieben

Nicht gerade eine Antwort auf deine Frage aber...

Mein Tipp: Lass die Programmieraufgabe weg. Es gab schon recht einfache Aufgaben, aber meist sind die so bescheiden gestellt, dass man die Hälfte der Bearbeitungszeit damit verbringt, festzustellen, was der Aufgabenersteller eigentlich möchte. Zudem möchte ich behaupten, dass die Fehlerquote der IHK bei den Programmieraufgaben wesentlich höher ist, als bei den anderen.

Die anderen Klassiker (SQL, Netzwerkplan, Projektplanung, etc.) sind meist wesentlich schneller erledigt und weniger fehleranfällig.

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...