Habaracka Geschrieben 25. April 2015 Geschrieben 25. April 2015 Ich sehe in fast allen Lösungen der IHK Folgendes: for i = 0 to i < array.Länge -1 ........ end for Was soll denn das "-1" da? :confused: Zitieren
larsson Geschrieben 25. April 2015 Geschrieben 25. April 2015 (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 25. April 2015 von larsson Zitieren
Gast Geschrieben 25. April 2015 Geschrieben 25. April 2015 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. Zitieren
Habaracka Geschrieben 26. April 2015 Autor Geschrieben 26. April 2015 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. Zitieren
Saheeda Geschrieben 26. April 2015 Geschrieben 26. April 2015 Hast du dazu mal ein konkretes Beispiel, was innerhalb der Schleife passieren soll? Zitieren
mfk'); DROP TABLE Users;-- Geschrieben 26. April 2015 Geschrieben 26. April 2015 Wenn die Länge nicht identisch mit dem Index des letzten Elements ist (null-basierend), dann wäre "-1" doch falsch.Du hast recht. -1 wäre richtig, wenn da <= stünde. Zitieren
Habaracka Geschrieben 26. April 2015 Autor Geschrieben 26. April 2015 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 Zitieren
mfk'); DROP TABLE Users;-- Geschrieben 26. April 2015 Geschrieben 26. April 2015 Oder die hier: Wenn man die Schleife als "Von bis" formuliert, ist das -1 richtig. Eine for-Schleife ist nicht "Von bis", sondern "Solange wie". Zitieren
Habaracka Geschrieben 26. April 2015 Autor Geschrieben 26. April 2015 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 ^^ Zitieren
Bacon2008 Geschrieben 13. Mai 2015 Geschrieben 13. Mai 2015 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 Zitieren
arlegermi Geschrieben 13. Mai 2015 Geschrieben 13. Mai 2015 Ist für Pseudo-Code auch nicht wirklich nötig, da Schrittweite 1 der Standard ist. Wenn du was anderes brauchst (+2, -1, ...), solltest du das hinschreiben. Zitieren
Bacon2008 Geschrieben 13. Mai 2015 Geschrieben 13. Mai 2015 naja habs mir halt angewöhnt, da man ja nie weiß wie pingelich der prüfer ist und es ist ja auch kaum mehraufwand. Zitieren
Empfohlene Beiträge
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.