Zum Inhalt springen

Empfohlene Beiträge

Geschrieben (bearbeitet)

Wird wohl um Off-by-one errors gehen.

Wenn man über einen kompletten Array iterieren möchte, nimmt man normalerweise einfach (i < array.Länge).

In deinem Fall (i < array.Länge-1) würde der letzte Index ausgelassen, FALLS i tatsächlich genutzt wird, um die Indizes nacheinander auszuwählen.

Ein sinnvoller use-case für die Schleife ist vielleicht, wenn man darin prüft ob array[i+1] irgendeine Bedingung erfüllt, dann würde es nämlich bei i == array.Länge krachen.

Bearbeitet von larsson
Geschrieben

Das hängt von der zugrundeliegenden Sprache ab, bei manchen ist die Länge des Arrays nicht identisch mit dem Index des letzten Elements.

In Pascal z.B. ist die Länge eines Feldes gleichzeitig auch der Index des letzten Elements, da die Zählung bei 1 beginnen. In anderen Sprachen jedoch(C, C++, Java) hat das erste Element den Index 0. Damit ist ein Zugriff auf das letzte Element mit dem Index length-1 möglich. Anderenfalls führt dies zu einem Laufzeitfehler.

Ich kenne die genaue Aufgabenstellung nicht und wenn es rein um ein bisschen Pseudocode geht versteh ich das leider nicht.

Geschrieben
Das hängt von der zugrundeliegenden Sprache ab, bei manchen ist die Länge des Arrays nicht identisch mit dem Index des letzten Elements.

Wenn die Länge nicht identisch mit dem Index des letzten Elements ist (null-basierend), dann wäre "-1" doch falsch.

Und wenn die Länge identisch mit dem Index ist, dann müsste man i mit 1 initialisieren und der Länge ein "+1" spendieren.

Aufgefallen ist mir das z.B. in der Sommer 14 GA1 HS: 3 und der Winter 14 GA1 HS: 3 und 4. Alles einfache Zählschleifen für alle Elemente eines Arrays, bei denen i mit 0 beginnnt und die Bedingung auf Länge -1 lautet. Die Bedingung kann eigentlich nur falsch sein egal in welcher Sprache.

Geschrieben
Hast du dazu mal ein konkretes Beispiel, was innerhalb der Schleife passieren soll?

Z.B. die hier: http://www.fachinformatiker.de/pruefungsaufgaben-loesungen/161773-abschlusspruefung-ga1-winter-2014-15-fiae.html

Wobei bei der in der Lösung auch noch das falsche Array genommen wurde.

Oder die hier:

3. Hancllungsschritt (25 Pu_nkte)

Pseudocode (Alternative Ltisungen sind méglich.)

rechnungsausgabe (kunde: Kunde): double

gesamt_summe := 0

bestellungen := kunde.getBestellungen()

ffir i := O bis Lénge von bestellungen — 1

bestellung := bestellungen[ i ]

seite := 1

zeile := 1

rechnungs_summe := 0

druckeSeitenKopf(seite)

druckeRechnungsKopf(kunde, beste1lung.getBestel1Nr())

druckePositi0nenKopf()

bestellpositionen := bestellung.getBestel1Positionen()

ffir j := O bis Lénge von bestellpositionen — 1

wenn zeile > 20

seite := seite + 1

druckeSeitenkopf(seite)

druckePositionenKopf()

zeile := 1

ende wenn

bp := bestellpositionen[ j ]

druckePositionsZeile(bp.getPosNr(),

bp.getArtike1().getArtikelNr(),

bp.getArtikel().getBezeichnung(),

bp.getEinzelpreis(),

bp.getMenge() )

rechnungs_summe := rechnungs_summe + bp.getEinzelpreis() * bp.getMenge()

zeile := zeile + 1

ends j

druckeRechnungsFuss(rechnungs_summe, kunde.getRabatt())

gesamt_summe := gesamt_summe + rechungs_summe

ende i

Rfickgabe(gesamt_summe)

ende rechnungsausgabe

Geschrieben
Wenn man die Schleife als "Von bis" formuliert, ist das -1 richtig.

Eine for-Schleife ist nicht "Von bis", sondern "Solange wie".

Oh ja! :upps das bis hab ich total überlesen.. Danke ^^

  • 3 Wochen später...
Geschrieben

hmm was mir noch auffällt: nirgendwo wird die schrittweite angegeben.

ich hatte mir immer angewöhnt eine for-schleife so zu deklarieren:

für i=0 bis i=array.länge -1; sw=1

oder

solange i=0 < array.länge; sw=1

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