Programmfragmente verstehen?

S

Sektkelch

Gast
Hallo, ich schreibe bald eine Klausur in Programmieren und eine Aufgabe wird
wahrscheinlich sein zu erklären was ein gegebenes Programmfragment macht.
Gibts irgend ne einfache Methode das schriftlich oder so nach zu rechnen oder
kann man das nur durch betrachten und überlegen Lösen?

Ein Bispiel:
Java:
Aufgabe 1: (Programmverständnis) Gegeben seien die Methode

static void wasPassiert(int[] a) {
  int n = a.length - 1;
  int l = 0,
  r = n;

  while (l < r) {
    while (l <= n && a[l] < 0) l++;
    while (r >= 0 && a[r] >= 0) r--;
      if (l < r) {
        int t = a[l];
        [l] = a[r];
        a[r] = t;
     }
   }
  for (int i : a)
   System.out.print(i + " ");
}

sowie das Programmfragment

int[] a = {0,1,-2,3,-4,5,-6};
wasPassiert(a);

Wie lautet die Ausgabe des Programmfragments?Was bewirkt die Methode wasPassiert?

Danke
 
G

Gast2

Gast
Gibts irgend ne einfache Methode das schriftlich oder so nach zu rechnen oder
kann man das nur durch betrachten und überlegen Lösen?
einmal durch Erfahrung ... auf den ersten Blick ist das Bubble-Sort

Java:
      if (l < r) {
        int t = a[l];
        [l] = a[r];
        a[r] = t;
     }

ansonsten kannst Du einfach nur durch den Quelltext mit Deinem Kopf ... nebei ggf. etwas aufschreiben ... um rauszubekommen was das Fragment macht

hand, mogel
 

myjday

Aktives Mitglied
Hallo, ich versuchs mal ...
du hast eine Methode, die nichts zurückliefert und static ist.
static heisst, dass sie nicht an ein Objekt gebunden ist und von Anfang an zur Verfügung steht.

Du übergibst ein Array, merkst Dir die linke und die rechte Grenze.

Die linke Grenze ist l - also 0
die rechts Grenze ist r, also Anzahl der Elemente - 1.

So und jetzt?

Deine äußere Schleife läuft so lange bis Deine linke Grenze die rechts überholt hat,
also l nicht mehr kleiner als r ist.

nächste Schleifenbedingung: solange l noch nicht aus dem Array marschiert ist und der Inhalt des
aktuellen Feldes mit index l kleiner als 0 ist (scheint in Deinem Array der Fall zu sein)

erhöhe l im 1.

Springe in die nächste Schleife:

solange r noch nichts links aus dem array marschiert ist und a[r] größer gleich 0 ist. Häh??

dann erniedrige r.

Danach kommt es zu einem Tausch. So würde ich mir das mal aufmalen.

Die Syntax der folgenden for-Schleife ist mir unbekannt. Bin halt noch ein kleiner Programmierer.

Ich hoffe ich konnte dir einen kleinen Denkanstoss geben.

Gruß,
myjday
 

0x7F800000

Top Contributor
Gibts irgend ne einfache Methode das schriftlich oder so nach zu rechnen oder
kann man das nur durch betrachten und überlegen Lösen?
Naja, in diesem Fall sollte einfaches anguggen vom Code eigentlich reichen?

Deutsch ist toll für Steuererklärungen
Arabisch ist toll für Kriegserklärungen
Französisch ist toll für Liebeserklärungen
Russisch ist grandios zum Fluchen und andere tolle Sachen
In Englisch lassen sich wissenschaftliche Texte kompakt & papiersparend verfassen.

Und wenn man einen Algorithmus imperativ beschreiben möchte, nimmt man halt sowas wie Java oder in diesem Fall praktisch C.

Dann guggt man sich an, und sieht genau das was hier steht: hier steht ins umgangssprachliche deutsch übersetzt "teile Array am Pivot = 0 auf", und wenn man schonmal Quicksort, RandomizedSelection oder Selection implementiert hat, sollte man da eigentlich auf einen Blick erkennen... Sprachen lernt man halt durch Sprechen (hier: Coden). wenn man anfangs gar nichts rafft, kann man halt im Wörterbuch spicken (hier: API durchlesen, ggf. beispiel mit Bleistift durchrechnen).

mogel hat gesagt.:
auf den ersten Blick ist das Bubble-Sort
nein? Es wirft einfach negative Zahlen nach links, positive nach rechts. Eben am Pivotelement 0 aufteilen.
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
S 2 Programmfragmente Funktionsweise Java Basics - Anfänger-Themen 9
Say 2-DIM Array Code lesen und verstehen Java Basics - Anfänger-Themen 5
B Deadlock verstehen der Ausgabe! Java Basics - Anfänger-Themen 12
jamboy7 Java-API kennenlernen, verstehen und nutzen lernen Java Basics - Anfänger-Themen 4
B Methodendeklaration verstehen Java Basics - Anfänger-Themen 2
J Methode verstehen Java Basics - Anfänger-Themen 3
S Allgemeine Java Codes lesen und verstehen Java Basics - Anfänger-Themen 7
3 OOP erste Versuche, OOP zu verstehen. Probleme mit gettern und settern Java Basics - Anfänger-Themen 4
J Hilfe beim verstehen Java Basics - Anfänger-Themen 3
S Anweisungen verstehen System.out.print/println Java Basics - Anfänger-Themen 2
B Webhooks verstehen - Beispiel? Java Basics - Anfänger-Themen 25
H Variable.methode aufstellen, verstehen Java Basics - Anfänger-Themen 2
B Interpreter-Fehler Code verstehen und Compilerfehler Java Basics - Anfänger-Themen 2
O Programm verstehen :D Java Basics - Anfänger-Themen 4
O Umgang mit Vererbung verstehen Java Basics - Anfänger-Themen 4
B Rekursion verstehen Java Basics - Anfänger-Themen 4
D Erste Schritte Code verstehen - HashSet Java Basics - Anfänger-Themen 8
E Rekursion verstehen. Java Basics - Anfänger-Themen 4
E Rekursion verstehen Java Basics - Anfänger-Themen 2
L Quicksort verstehen Java Basics - Anfänger-Themen 3
J Texte für Java Programmierung besser verstehen? Java Basics - Anfänger-Themen 2
S Programmcode verstehen Java Basics - Anfänger-Themen 4
M Lambda - Ausdrücke verstehen Java Basics - Anfänger-Themen 2
J-Gallus Keylistener verstehen Java Basics - Anfänger-Themen 17
TomatenBrot447 Abhängigkeitsgraph verstehen? Java Basics - Anfänger-Themen 14
O Java und JSF besser verstehen Java Basics - Anfänger-Themen 1
E Erste Schritte brauche hilfe zum verstehen einer Klasse(Tiefensuche) Java Basics - Anfänger-Themen 17
L Polymorphie Polymorphie verstehen? Java Basics - Anfänger-Themen 2
U Code anderer Programmierern verstehen Java Basics - Anfänger-Themen 2
G Quellcode verstehen Java Basics - Anfänger-Themen 9
V Parameter in synchronized-Blöcken verstehen Java Basics - Anfänger-Themen 2
N Initialisierer / statischer Initialisierer verstehen Java Basics - Anfänger-Themen 6
S Wie ist folgender Kommentar in meinem Ant file zu verstehen..? Java Basics - Anfänger-Themen 0
D Quellcode verstehen Java Basics - Anfänger-Themen 4
V Parameterübergabe von Methoden verstehen Java Basics - Anfänger-Themen 13
C Schleifen verstehen Java Basics - Anfänger-Themen 5
G Hausaufgabe mit LinkedList und LinkedListStack verstehen Java Basics - Anfänger-Themen 6
R Programm verstehen, Funktion Java Basics - Anfänger-Themen 4
C Erste Schritte Konstruktoren verstehen Java Basics - Anfänger-Themen 7
T For schleife verstehen Java Basics - Anfänger-Themen 26
W InertionSort verstehen Java Basics - Anfänger-Themen 4
K Passage im Quelltext verstehen Java Basics - Anfänger-Themen 2
S OOP Java Kommentare, Programm besser verstehen Java Basics - Anfänger-Themen 6
F Typenumwandlung byte <=> int verstehen Java Basics - Anfänger-Themen 3
P hilfe...nix verstehen....... Java Basics - Anfänger-Themen 2
K OPP am besten verstehen !!! Java Basics - Anfänger-Themen 7
M Brauche Hilfe beim Verstehen vom Quellcode Java Basics - Anfänger-Themen 4
M Was kann man unter implementieren so verstehen? Java Basics - Anfänger-Themen 11
S Problem beim Verstehen des Quellcodes Java Basics - Anfänger-Themen 7
B Kann Quellcode von "Hanoi" nicht verstehen. Bitte Java Basics - Anfänger-Themen 4
Z Problem Fehlermeldung zu verstehen Java Basics - Anfänger-Themen 7
A wie lernt man am besten den code zu verstehen? Java Basics - Anfänger-Themen 7
G Möchte Java verstehen Java Basics - Anfänger-Themen 11
K Verzeichniss Struktur verstehen Java Basics - Anfänger-Themen 3
M Java verstehen ! Java Basics - Anfänger-Themen 5
K generics richtig verstehen Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben