Logo des digitalen Schulbuchs inf-schule.de. Schriftzug in Zustandsübergangsdiagramm eines endlichen Automaten.

Beispiel - Bestimmung von Schaltjahren

Schaltjahre

Kalenderblatt

Ein Jahr dauert nach dem Sonnenkalender etwas mehr als 365 Tage - nämlich 365 Tage, 5 Stunden, 48 Minuten und 45,25 Sekunden. Das ist knapp ein Viertel Tag länger als die 365 Tage eines normalen Kalenderjahres. Um den Unterschied auszugleichen, wird alle 4 Jahre ein zusätzlicher Tag (Schalttag) im Kalenderjahr (der 29. Februar) eingefügt. Da das aber etwas zu viel ist, verzichtet man alle 100 Jahre auf den Schalttag. Alle 400 Jahre weicht man von dieser Verzichtregel ab und fügt den Schalttag doch ein.

Aufgabe 1

Welches der folgenden Jahre ist (k)ein Schaltjahr: 2012, 2018, 2100, 2800, 3000, 3012?

Verfahren zur Bestimmung von Schaltjahren - Version 1

Mit einem Programm soll eine eingegebene Jahreszahl darufhin überprüft werden, ob es sich um ein Schaltjahr handelt oder nicht.

Bevor das Programm geschrieben wird, sollte man erst einmal Vorüberlegungen anstellen.

Aufgabe 2

(a) Mit dem folgenden Struktogramm soll der Ablauf zur Bestimmung von Schaltjahren präzisiert werden. Es fehlen aber noch einige Angaben. Welche Wahrheitswerte müssen anstelle der drei Punkte stehen?

Struktogramm
(b) Entwickle ein zum Struktogramm passendes Programm und teste es.

Programm zur Bestimmung von Schaltjahren - Version 2

Das Verfahren zur Bestimmung von Schaltjahren kann auch anders modelliert werden.

# Eingabe
jahr  = int(input('Jahr: '))
# Verarbeitung und Ausgabe
if ...:
    istSchaltjahr = True
else:
    istSchaltjahr = False
# Ausgabe
if istSchaltjahr == True:
    print(jahr, 'ist ein Schaltjahr.')
else:
    print(jahr, 'ist kein Schaltjahr.')

Aufgabe 3

Anstelle der drei Punkte ... muss hier eine passende Bedingung eingesetzt werden. Hier sind einige Vorschläge. Welche passen / passen nicht?

jahr % 4 == 0 and jahr % 100 != 0 and jahr % 400 == 0
jahr % 4 == 0 or jahr % 100 != 0 or jahr % 400 == 0
jahr % 400 == 0 or (jahr % 4 == 0 and jahr % 100 != 0)
jahr % 400 == 0 or (jahr % 4 == 0 and not jahr % 100 == 0)

Teste das (ergänzte) Programm.

X

Fehler melden

X

Suche