Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

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

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.

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

  • Autor
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

  • 3 Wochen später...

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

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.