Appearance
đ Thema 5: Grundlagen der Programmierung â
Ăberblick â
In diesem Themenbereich geht es darum, wie Programme aufgebaut sind, wie Anweisungen formuliert werden und wie man mit Python einfache Probleme Schritt fĂŒr Schritt lösen kann.
Programmieren bedeutet nicht nur, Code zu schreiben. Es bedeutet auch:
- ein Problem genau zu verstehen,
- eine Lösung logisch zu planen,
- Anweisungen eindeutig zu formulieren,
- Fehler systematisch zu suchen,
- Programme verstÀndlich zu strukturieren,
- Code so zu schreiben, dass auch andere ihn nachvollziehen können.
Python eignet sich besonders gut zum Einstieg, weil die Sprache vergleichsweise gut lesbar ist und viele grundlegende Konzepte deutlich sichtbar macht.
Leitfrage
Wie lassen sich Probleme so in eindeutige Programmanweisungen ĂŒbersetzen, dass ein Computer sie zuverlĂ€ssig ausfĂŒhren kann?
Was ist ein Programm? â
Ein Programm ist eine Folge von Anweisungen, die ein Computer ausfĂŒhrt. Diese Anweisungen mĂŒssen eindeutig, vollstĂ€ndig und in einer bestimmten Syntax geschrieben sein.
Ein Mensch versteht oft auch ungenaue Anweisungen:
Zeichne ungefÀhr ein Muster mit mehreren Linien.
Ein Computer braucht dagegen prÀzisere Anweisungen:
python
for i in range(4):
turtle.forward(100)
turtle.left(90)Merke
Computer fĂŒhren Anweisungen nicht âungefĂ€hrâ aus. Sie arbeiten streng nach dem Programmcode.
Programmiersprachen â
Eine Programmiersprache ist eine formale Sprache, mit der Menschen Anweisungen fĂŒr Computer formulieren können.
Python wird hĂ€ufig eingesetzt fĂŒr:
- kleine Programme und Skripte,
- Datenverarbeitung,
- Automatisierung,
- Webentwicklung,
- kĂŒnstliche Intelligenz,
- Unterricht und Einstieg ins Programmieren.
Wichtig
Python-Code muss syntaktisch korrekt sein. Schon kleine Fehler bei Doppelpunkten, EinrĂŒckungen oder Klammern können verhindern, dass ein Programm ausgefĂŒhrt wird.
Zentrale Sprachkonstrukte in Python â
Programme bestehen aus wiederkehrenden Grundbausteinen. Dazu gehören:
- Variablen,
- Datentypen,
- Operatoren,
- Bedingungen,
- Schleifen,
- Funktionen,
- Bibliotheken.
Diese Bausteine lassen sich kombinieren, um komplexere Programme zu erstellen.
Variablen â
Eine Variable ist ein benannter Speicherplatz fĂŒr einen Wert.
python
name = "Mina"
alter = 17
punkte = 42Die Variable name enthÀlt den Text "Mina".
Die Variable alter enthÀlt die Zahl 17.
Merke
Variablen speichern Werte, damit ein Programm spÀter wieder darauf zugreifen kann.
Gute Variablennamen â
Gute Variablennamen sagen aus, wofĂŒr ein Wert steht.
Weniger gut:
python
x = 17
y = 42Besser:
python
alter = 17
punkte = 42Merksatz
Code wird nicht nur fĂŒr den Computer geschrieben, sondern auch fĂŒr Menschen, die ihn lesen, verstehen oder spĂ€ter verĂ€ndern mĂŒssen.
Datentypen â
Python unterscheidet verschiedene Arten von Daten.
| Datentyp | Bedeutung | Beispiel |
|---|---|---|
int | ganze Zahl | 17 |
float | Kommazahl | 3.14 |
str | Zeichenkette / Text | "Hallo" |
bool | Wahrheitswert | True, False |
Beispiele:
python
alter = 17
preis = 4.50
name = "Mina"
bestanden = TrueWichtig
Der Datentyp beeinflusst, was man mit einem Wert machen kann. Mit Zahlen kann man rechnen. Texte werden anders verarbeitet.
Eingaben und Casting â
Mit input() kann ein Programm eine Eingabe von Nutzer·innen einlesen.
python
alter = input("Wie alt bist du? ")Wichtig: input() liefert immer einen Text zurĂŒck, also einen Wert vom Typ str.
Wenn man damit rechnen möchte, muss man den Wert umwandeln.
python
alter = int(input("Wie alt bist du? "))Oder bei Kommazahlen:
python
preis = float(input("Preis eingeben: "))Diese Umwandlung nennt man Casting.
Merke
Nutzereingaben sind in Python zunĂ€chst Text. FĂŒr Berechnungen mĂŒssen sie oft mit int() oder float() umgewandelt werden.

input() und Casting. Im ersten Durchlauf scheitert der Vergleich, weil eine Texteingabe mit einer Zahl verglichen wird. Nach der Umwandlung mit int() lĂ€uft derselbe Test korrekt durch. Eigene Darstellung. đ Ăbung: Eingaben sinnvoll weiterverarbeiten â
Du möchtest ein kleines Programm schreiben, das eine Bestellung im Schulbuffet berechnet. Die Nutzer·in gibt ein:
- den Preis eines GetrÀnks,
- den Preis eines Snacks,
- die Anzahl der Snacks.
Das Programm soll den Gesamtpreis berechnen und ausgeben. Achte darauf, dass die Eingaben mit passenden Datentypen weiterverarbeitet werden.
Lösungshinweis
python
getraenk = float(input("Preis des GetrÀnks: "))
snack = float(input("Preis eines Snacks: "))
anzahl = int(input("Anzahl der Snacks: "))
gesamt = getraenk + snack * anzahl
print("Gesamtpreis:", gesamt, "Euro")Wichtig ist hier die Unterscheidung zwischen float fĂŒr Preise und int fĂŒr die Anzahl. Ohne Casting wĂ€ren die Eingaben Texte und könnten nicht sinnvoll als Rechnung verwendet werden.
Operatoren â
Operatoren fĂŒhren Operationen mit Werten aus.
Arithmetische Operatoren â
| Operator | Bedeutung | Beispiel |
|---|---|---|
+ | Addition | 3 + 2 |
- | Subtraktion | 7 - 4 |
* | Multiplikation | 5 * 3 |
/ | Division | 10 / 2 |
// | Ganzzahldivision | 7 // 2 ergibt 3 |
% | Rest einer Division | 7 % 2 ergibt 1 |
** | Potenz | 2 ** 3 ergibt 8 |
Merksatz
Der Modulo-Operator % ist besonders nĂŒtzlich, wenn man prĂŒfen möchte, ob eine Zahl gerade oder ungerade ist.
Beispiel:
python
zahl = 8
if zahl % 2 == 0:
print("gerade")
else:
print("ungerade")Vergleichsoperatoren â
Vergleichsoperatoren prĂŒfen Bedingungen. Das Ergebnis ist immer True oder False.
| Operator | Bedeutung |
|---|---|
== | ist gleich |
!= | ist ungleich |
< | kleiner als |
> | gröĂer als |
<= | kleiner oder gleich |
>= | gröĂer oder gleich |
Beispiel:
python
alter = 17
print(alter >= 18)Ausgabe:
txt
FalseBoolesche Operatoren â
Mit booleschen Operatoren können Bedingungen verbunden werden.
| Operator | Bedeutung |
|---|---|
and | beide Bedingungen mĂŒssen wahr sein |
or | mindestens eine Bedingung muss wahr sein |
not | kehrt den Wahrheitswert um |
Beispiel:
python
alter = 17
hat_erlaubnis = True
if alter >= 18 or hat_erlaubnis:
print("Zugang erlaubt")
else:
print("Zugang nicht erlaubt")Bedingte Anweisungen â
Mit if, elif und else kann ein Programm Entscheidungen treffen.
python
zahl = int(input("Zahl eingeben: "))
if zahl > 0:
print("positiv")
elif zahl < 0:
print("negativ")
else:
print("null")Merke
Bedingungen ermöglichen Verzweigungen im Programmablauf. Das Programm reagiert abhÀngig von Daten oder Eingaben unterschiedlich.
EinrĂŒckung in Python â
Python verwendet EinrĂŒckungen, um zusammengehörige Codeblöcke zu kennzeichnen.
Richtig:
python
if zahl > 0:
print("Die Zahl ist positiv.")Falsch:
python
if zahl > 0:
print("Die Zahl ist positiv.")Wichtig
EinrĂŒckungen sind in Python nicht nur optisch wichtig, sondern Teil der Sprache.
Schleifen â
Schleifen wiederholen Anweisungen.
for-Schleife â
Eine for-Schleife wird verwendet, wenn man weiĂ oder gut festlegen kann, wie oft etwas wiederholt werden soll.
python
for i in range(5):
print("Hallo")Das gibt fĂŒnfmal Hallo aus.
Beispiel mit Zahlen:
python
for i in range(1, 6):
print(i)Ausgabe:
txt
1
2
3
4
5Merke
range(5) erzeugt die Werte 0, 1, 2, 3, 4. Der Endwert ist nicht enthalten.
while-Schleife â
Eine while-Schleife lÀuft, solange eine Bedingung wahr ist.
python
zahl = int(input("Zahl eingeben, -1 beendet: "))
while zahl != -1:
print("Du hast eingegeben:", zahl)
zahl = int(input("Zahl eingeben, -1 beendet: "))Wichtig
Bei while-Schleifen muss sich die Bedingung irgendwann Àndern können. Sonst entsteht eine Endlosschleife.
Funktionen â
Eine Funktion ist ein benannter Programmteil, der eine bestimmte Aufgabe ĂŒbernimmt.
python
def begruessung():
print("Hallo!")Die Funktion wird erst ausgefĂŒhrt, wenn sie aufgerufen wird:
python
begruessung()Funktionen mit Parametern â
Funktionen können Werte ĂŒbergeben bekommen. Diese Werte heiĂen Parameter.
python
def begruessung(name):
print("Hallo", name)Aufruf:
python
begruessung("Mina")Funktionen mit RĂŒckgabewert â
Mit return kann eine Funktion ein Ergebnis zurĂŒckgeben.
python
def quadrat(zahl):
return zahl * zahl
ergebnis = quadrat(5)
print(ergebnis)Ausgabe:
txt
25Merke
Funktionen helfen dabei, Programme zu strukturieren, Wiederholungen zu vermeiden und einzelne Aufgaben klar voneinander zu trennen.
Methoden â
Eine Methode ist eine Funktion, die zu einem Objekt gehört.
Beispiel:
python
text = "hallo"
print(text.upper())upper() ist eine Methode des Strings text.
Auch bei Turtle-Grafiken werden Methoden bzw. Funktionsaufrufe verwendet:
python
turtle.forward(100)
turtle.left(90)Bibliotheken â
Eine Bibliothek stellt zusÀtzliche Funktionen, Objekte oder Werkzeuge bereit.
Beispiel:
python
import turtleDamit kann man die Turtle-Bibliothek verwenden.
python
import randomDamit kann man Zufallszahlen erzeugen.
Merke
Bibliotheken erweitern Python um Funktionen, die nicht jedes Mal selbst programmiert werden mĂŒssen.
Turtle-Grafik â
Die Turtle-Bibliothek eignet sich gut, um ProgrammablĂ€ufe sichtbar zu machen. Eine Turtle bewegt sich ĂŒber den Bildschirm und zeichnet dabei Linien.
Beispiel:
python
import turtle
turtle.forward(100)
turtle.left(90)
turtle.forward(100)
turtle.done()Wichtige Befehle:
| Befehl | Bedeutung |
|---|---|
turtle.forward(100) | bewegt die Turtle 100 Schritte vorwÀrts |
turtle.backward(100) | bewegt die Turtle 100 Schritte rĂŒckwĂ€rts |
turtle.left(90) | dreht die Turtle 90 Grad nach links |
turtle.right(90) | dreht die Turtle 90 Grad nach rechts |
turtle.penup() | hebt den Stift |
turtle.pendown() | senkt den Stift |
turtle.done() | hÀlt das Fenster offen |
Wichtig
In manchen Umgebungen muss turtle.done() am Ende stehen, damit das Ausgabefenster sichtbar bleibt.

RegelmĂ€Ăige Vielecke zeichnen â
Viele Turtle-Figuren entstehen durch eine einfache Grundidee: Eine Bewegung wird mehrmals wiederholt, und nach jeder Seite dreht sich die Turtle um denselben Winkel.
FĂŒr ein regelmĂ€Ăiges Vieleck gilt:
txt
Drehwinkel = 360 / Anzahl der EckenEin mögliches Programm könnte so aussehen:
python
import turtle
def zeichne_vieleck(anzahl_ecken, seitenlaenge):
winkel = 360 / anzahl_ecken
for i in range(anzahl_ecken):
turtle.forward(seitenlaenge)
turtle.left(winkel)
zeichne_vieleck(5, 80)
turtle.done()Merksatz
Bei einem regelmĂ€Ăigen Vieleck verteilt sich eine volle Drehung von 360° gleichmĂ€Ăig auf alle Seiten.
đ Ăbung: Vieleck-Generator verbessern â
Du bekommst einen ersten Entwurf fĂŒr ein Zeichenprogramm. Es soll ein regelmĂ€Ăiges Vieleck zeichnen, ist aber noch sehr starr:
python
import turtle
for i in range(5):
turtle.forward(80)
turtle.left(72)
turtle.done()Ăberarbeite den Entwurf so, dass daraus ein flexibler Vieleck-Generator wird.
- ErklÀre zuerst, warum
72bei fĂŒnf Ecken der richtige Drehwinkel ist. - Schreibe den Code so um, dass die Eckenzahl in einer Variable gespeichert wird.
- Berechne den Drehwinkel aus dieser Variable.
- ErgÀnze eine sinnvolle SeitenlÀnge, die bei vielen Ecken nicht zu groà wird.
- Teste gedanklich, was bei 3, 6 und 12 Ecken passiert.
Lösungshinweis
python
import turtle
ecken = int(input("Eckenzahl eingeben: "))
if ecken >= 3:
winkel = 360 / ecken
seitenlaenge = 240 / ecken + 25
for i in range(ecken):
turtle.forward(seitenlaenge)
turtle.left(winkel)
else:
print("Ein Vieleck braucht mindestens drei Ecken.")
turtle.done()Hier wird nicht nur eine fertige Funktion abgeschrieben, sondern ein starrer Code schrittweise verallgemeinert. Das ist ein wichtiger Schritt beim Programmieren: Aus einem Einzelfall entsteht ein flexibler Algorithmus.
Funktionen bei Turtle-Grafiken â
Turtle-Programme werden ĂŒbersichtlicher, wenn man hĂ€ufig verwendete Zeichenschritte in Funktionen auslagert.
Beispiel:
python
import turtle
def zeichne_quadrat(seitenlaenge):
for i in range(4):
turtle.forward(seitenlaenge)
turtle.left(90)
zeichne_quadrat(80)
turtle.done()Diese Funktion zeichnet ein Quadrat mit frei wÀhlbarer SeitenlÀnge.
Man kann Funktionen auch kombinieren. Das folgende Beispiel zeichnet eine Rosette aus Quadraten, die alle um denselben Mittelpunkt angeordnet sind:
python
import turtle
import math
def zeichne_zentriertes_quadrat(seitenlaenge, winkel):
turtle.penup()
turtle.goto(0, 0)
turtle.setheading(winkel + 225)
turtle.forward(seitenlaenge / math.sqrt(2))
turtle.setheading(winkel)
turtle.pendown()
for i in range(4):
turtle.forward(seitenlaenge)
turtle.left(90)
def zeichne_quadrat_rosette(anzahl, seitenlaenge):
for i in range(anzahl):
winkel = i * 360 / anzahl
zeichne_zentriertes_quadrat(seitenlaenge, winkel)
zeichne_quadrat_rosette(12, 160)
turtle.done()Der Zusatz mit penup(), goto() und setheading() sorgt dafĂŒr, dass jedes Quadrat wieder passend um den Mittelpunkt ausgerichtet wird. Ohne diesen Schritt wĂŒrde die Turtle immer vom aktuellen Standpunkt weiterzeichnen.
Merke
Funktionen machen Turtle-Programme modular: Ein einzelner Programmteil ĂŒbernimmt eine klar erkennbare Aufgabe.

đ Ăbung: Ein anderes Muster modular planen â
Plane ein Turtle-Programm fĂŒr ein Sonnenrad aus Dreiecken. Du musst nicht exakt dieselbe Rosette wie im Beispiel nachbauen. Ziel ist, die Idee der ModularitĂ€t auf eine neue Figur zu ĂŒbertragen.
- Schreibe eine Funktion
zeichne_dreieck(seitenlaenge). - Schreibe eine zweite Funktion
zeichne_sonnenrad(anzahl, seitenlaenge). - Nach jedem Dreieck soll sich die Turtle weiterdrehen.
- ErklĂ€re, welche Aufgabe jede der beiden Funktionen ĂŒbernimmt.
- Ăberlege, welcher Parameter das Aussehen stĂ€rker verĂ€ndert:
anzahloderseitenlaenge.
Lösungshinweis
python
import turtle
def zeichne_dreieck(seitenlaenge):
for i in range(3):
turtle.forward(seitenlaenge)
turtle.left(120)
def zeichne_sonnenrad(anzahl, seitenlaenge):
for i in range(anzahl):
zeichne_dreieck(seitenlaenge)
turtle.left(360 / anzahl)
zeichne_sonnenrad(10, 90)
turtle.done()Die Lösung ĂŒbernimmt nicht das Quadrat-Beispiel, sondern ĂŒbertrĂ€gt die Grundidee auf eine andere Form. Genau dieser Transfer ist beim Programmieren wichtig.
Parameter gezielt verĂ€ndern â
Programme werden besonders interessant, wenn sich Werte gezielt verÀndern lassen. Bei Turtle-Grafiken kann etwa die Anzahl der Wiederholungen als Parameter eingesetzt werden. Das Programm bleibt fast gleich, aber die Ausgabe verÀndert sich deutlich.
python
import turtle
def zeichne_quadrat(seitenlaenge):
for i in range(4):
turtle.forward(seitenlaenge)
turtle.left(90)
def zeichne_rosette(anzahl, seitenlaenge):
for i in range(anzahl):
zeichne_quadrat(seitenlaenge)
turtle.left(360 / anzahl)
zeichne_rosette(10, 80)
turtle.done()Merke
Parameter wie SeitenlĂ€nge, Winkel oder Wiederholungszahl steuern das Verhalten eines Programms. Kleine Ănderungen am Parameter können die Ausgabe deutlich verĂ€ndern, ohne dass das ganze Programm neu geschrieben werden muss.

Programme lesen und Fehler finden â
Programmieren besteht nicht nur aus Schreiben, sondern auch aus Lesen, Testen und Verbessern von Code.
Code-Tracing â
Beim Code-Tracing geht man ein Programm Schritt fĂŒr Schritt durch und notiert, wie sich Variablen verĂ€ndern.
Beispiel:
python
werte = [6, 14, 3, 8]
summe = 0
anzahl = 0
gerade = 0
ungerade = 0
for zahl in werte:
summe += zahl
anzahl += 1
if zahl % 2 == 0:
gerade += 1
else:
ungerade += 1
durchschnitt = summe / anzahlBei diesem Programm Àndern sich nicht nur eine, sondern mehrere Variablen gleichzeitig. Beim Tracing wird daher nach jedem Schleifendurchlauf festgehalten, welche Zahl gerade verarbeitet wurde und wie sich summe, anzahl, gerade und ungerade verÀndern. Erst am Ende kann der Durchschnitt sinnvoll berechnet werden.
Merke
Code-Tracing hilft, ProgrammablĂ€ufe sichtbar zu machen und Fehler zu finden. Besonders nĂŒtzlich ist es, wenn Schleifen, ZĂ€hler, Bedingungen und Berechnungen zusammenwirken.

Beispiel: Zahlen auswerten â
Ein Programm soll mehrere ganze Zahlen einlesen und auswerten.
Grundidee:
summespeichert die Summe aller eingegebenen Zahlen.anzahlzÀhlt, wie viele Zahlen eingegeben wurden.geradeundungeradezÀhlen die Zahlen je nach Teilbarkeit durch 2.- Die Eingabe endet mit einem vereinbarten Abbruchwert.
Beispiel:
python
summe = 0
anzahl = 0
gerade = 0
ungerade = 0
zahl = int(input("Ganze Zahl eingeben (-1 beendet): "))
while zahl != -1:
summe += zahl
anzahl += 1
if zahl % 2 == 0:
gerade += 1
else:
ungerade += 1
zahl = int(input("Ganze Zahl eingeben (-1 beendet): "))
if anzahl > 0:
print("Summe:", summe)
print("Anzahl:", anzahl)
print("Durchschnitt:", summe / anzahl)
print("Gerade Zahlen:", gerade)
print("Ungerade Zahlen:", ungerade)
else:
print("Es wurden keine Werte eingegeben.")Achtung
Wenn kein Wert eingegeben wurde, ist anzahl gleich 0. Dann darf nicht durch 0 dividiert werden.

đ Ăbung: Auswertung als Funktion umbauen â
Das vorige Beispiel arbeitet mit Eingaben in einer while-Schleife. Ăbertrage die Idee nun auf eine andere Struktur: Eine Liste von Messwerten ist bereits vorhanden.
Gegeben ist:
python
messwerte = [12, 7, 0, 15, 8, 3]Schreibe eine Funktion wertebericht(messwerte), die Folgendes ausgibt:
- die Anzahl der Werte,
- die Summe,
- den Durchschnitt,
- den kleinsten Wert,
- den gröĂten Wert,
- wie viele Werte mindestens 10 betragen.
Lösungshinweis
python
def wertebericht(messwerte):
anzahl = len(messwerte)
summe = sum(messwerte)
durchschnitt = summe / anzahl
minimum = min(messwerte)
maximum = max(messwerte)
mindestens_zehn = 0
for wert in messwerte:
if wert >= 10:
mindestens_zehn += 1
print("Anzahl:", anzahl)
print("Summe:", summe)
print("Durchschnitt:", durchschnitt)
print("Minimum:", minimum)
print("Maximum:", maximum)
print("Werte ab 10:", mindestens_zehn)
wertebericht([12, 7, 0, 15, 8, 3])Die Ăbung verwendet dieselben Grundideen wie das Eingabeprogramm, aber in einer anderen Situation: Statt einer Abbruchschleife wird eine vorhandene Liste verarbeitet.
Syntax und Semantik â
Syntax â
Die Syntax beschreibt die formalen Regeln einer Programmiersprache.
Beispiele fĂŒr Syntaxregeln in Python:
- Nach
if,elif,else,for,whileunddefsteht ein Doppelpunkt. - Codeblöcke werden eingerĂŒckt.
- Klammern und AnfĂŒhrungszeichen mĂŒssen korrekt gesetzt werden.
- Variablennamen dĂŒrfen bestimmten Regeln nicht widersprechen.
Syntaxfehler:
python
if alter >= 18
print("volljÀhrig")Hier fehlt der Doppelpunkt.
Korrekt:
python
if alter >= 18:
print("volljÀhrig")Merke
Ein Syntaxfehler verhindert meist, dass das Programm ĂŒberhaupt ausgefĂŒhrt wird.
Semantik â
Die Semantik beschreibt die Bedeutung eines Programms.
Ein Programm kann syntaktisch korrekt sein und trotzdem etwas Falsches tun.
Beispiel:
python
summe = 30
anzahl = 3
durchschnitt = anzahl / summe
print(durchschnitt)Der Code ist syntaktisch korrekt, aber semantisch falsch, wenn der Durchschnitt berechnet werden soll. Richtig wÀre:
python
durchschnitt = summe / anzahlWichtig
Syntaxfehler erkennt Python oft sofort. Semantikfehler sind manchmal schwieriger zu finden, weil das Programm lÀuft, aber falsche Ergebnisse liefert.

NatĂŒrliche Sprache und Programmiersprache â
NatĂŒrliche Sprache kann mehrdeutig sein.
Beispiel:
Ich sehe den Mann mit dem Fernglas.
Das kann bedeuten:
- Ich verwende ein Fernglas.
- Der Mann hat ein Fernglas.
Programmiersprachen mĂŒssen solche Mehrdeutigkeit vermeiden. Ein Computer soll genau wissen, welche Anweisung gemeint ist.
Merksatz
NatĂŒrliche Sprache lebt oft von Kontext und Mehrdeutigkeit. Programmiersprachen brauchen Eindeutigkeit und klare Regeln.
Strukturierter Code â
Guter Code soll nicht nur funktionieren, sondern auch verstÀndlich sein.
Dazu helfen:
- klare Variablennamen,
- klare Funktionsnamen,
- sinnvolle Kommentare,
- einheitliche Formatierung,
- ModularitÀt,
- ĂŒbersichtliche Programmstruktur.
Kommentare â
Kommentare erklĂ€ren den Code fĂŒr Menschen. Python ignoriert sie bei der AusfĂŒhrung.
python
# Berechnet den Durchschnitt aller eingegebenen Werte
durchschnitt = summe / anzahlGute Kommentare erklÀren nicht jeden offensichtlichen Schritt, sondern helfen beim VerstÀndnis.
Weniger hilfreich:
python
# erhöhe anzahl um 1
anzahl += 1Hilfreicher:
python
# Ein gĂŒltiger Wert wurde eingelesen
anzahl += 1ModularitĂ€t â
ModularitÀt bedeutet, ein Programm in kleinere, möglichst unabhÀngige Teile zu zerlegen.
Beispiel:
python
def eingabe_lesen():
return int(input("Zahl eingeben: "))
def ist_gerade(zahl):
return zahl % 2 == 0
def ausgabe(text):
print(text)Vorteile:
- Code wird ĂŒbersichtlicher.
- Einzelne Teile können leichter getestet werden.
- Aufgaben können in Teams aufgeteilt werden.
- Funktionen können wiederverwendet werden.
- Fehler sind leichter einzugrenzen.
Merke
Modularer Code ist besonders wichtig bei gröĂeren Projekten, Teamarbeit und spĂ€teren Erweiterungen.
Bibliotheken sinnvoll nutzen â
Bibliotheken wie turtle, random oder math stellen fertige Werkzeuge bereit.
Beispiel:
python
import random
zahl = random.randint(1, 6)
print("GewĂŒrfelt:", zahl)Wichtig
Bibliotheken sparen Arbeit, aber man sollte trotzdem verstehen, was die verwendeten Funktionen grundsÀtzlich tun.
Fehleranalyse und Testen â
Beim Programmieren treten Fehler ganz normal auf. Wichtig ist, sie systematisch zu finden.
Hilfreiche Strategien:
- Fehlermeldungen genau lesen,
- Programm schrittweise testen,
- Zwischenergebnisse ausgeben,
- kleine TestfÀlle verwenden,
- Variablenwerte notieren,
- Codeabschnitte einzeln prĂŒfen,
- Kommentare oder Pseudocode zur Planung nutzen.
Strategie
Wenn ein Programm nicht funktioniert, erklĂ€re nicht nur âes geht nichtâ, sondern beschreibe möglichst genau:
- Was sollte passieren?
- Was passiert tatsÀchlich?
- An welcher Stelle könnte der Fehler liegen?
- Welche Werte haben die Variablen an dieser Stelle?
Pseudocode â
Pseudocode beschreibt einen Algorithmus in einer Mischung aus Alltagssprache und Programmstruktur.
Beispiel:
txt
Setze Summe auf 0
Setze Anzahl auf 0
Lies einen Wert ein
Solange der Wert nicht der Abbruchwert ist:
Addiere den Wert zur Summe
Erhöhe die Anzahl um 1
PrĂŒfe, ob der Wert gerade oder ungerade ist
Lies den nÀchsten Wert ein
Wenn Anzahl gröĂer als 0:
Berechne Durchschnitt = Summe / Anzahl
Gib die Ergebnisse aus
Sonst:
Gib aus: Keine Werte eingegebenMerke
Pseudocode hilft, die Logik eines Programms zu planen, bevor man sich mit genauer Syntax beschÀftigt.
PrĂŒfungsvorbereitung â
Die folgenden Aufgaben trainieren dieselben Kompetenzen, verwenden aber andere Kontexte, Daten und Beispiele. Sie trainieren Transfer: Du sollst Beispiele nicht abschreiben, sondern auf neue Situationen anwenden.
đ Ăbung: Code lesen, nicht nur ausfĂŒhren â
Betrachte den Code. Er ist syntaktisch korrekt.
python
rabatt = 0.10
preis = 24.90
anzahl = 3
gesamt = preis * anzahl
endpreis = gesamt - gesamt * rabatt
print(endpreis)- ErklÀre die Bedeutung der Variablen.
- Berechne das Ergebnis schrittweise.
- Ăndere den Code gedanklich so, dass der Rabatt erst ab mindestens 50 Euro Gesamtpreis gilt.
Lösungshinweis
Der Gesamtpreis vor Rabatt betrÀgt 24.90 * 3 = 74.70. Der Rabatt betrÀgt 10 %, also 7.47. Der Endpreis ist 67.23.
Eine mögliche Erweiterung:
python
if gesamt >= 50:
endpreis = gesamt - gesamt * rabatt
else:
endpreis = gesamtđ Ăbung: Eingaben robust machen â
Ein Programm fragt nach einer Zahl und soll ausgeben, ob sie durch 3 teilbar ist.
- Lies eine Zahl ein.
- Wandle die Eingabe in
intum. - PrĂŒfe mit dem Modulo-Operator, ob die Zahl durch 3 teilbar ist.
- Erweitere das Programm so, dass bei einer negativen Zahl zusÀtzlich eine Warnung ausgegeben wird.
Lösungshinweis
python
zahl = int(input("Zahl eingeben: "))
if zahl < 0:
print("Hinweis: Die Zahl ist negativ.")
if zahl % 3 == 0:
print("Die Zahl ist durch 3 teilbar.")
else:
print("Die Zahl ist nicht durch 3 teilbar.")đ Ăbung: Turtle-Code ĂŒbertragen â
Du kennst nun Vielecke und einfache Muster. Entwickle daraus ein kleines Logo aus zwei Formen:
- Zeichne zuerst ein regelmĂ€Ăiges Sechseck.
- Hebe den Stift, gehe ein StĂŒck nach rechts und senke den Stift wieder.
- Zeichne dort ein Dreieck.
- Lagere beide Formen in eigene Funktionen aus.
- ErklÀre, warum
penup()undpendown()hier wichtig sind.
Lösungshinweis
python
import turtle
def sechseck(seite):
for i in range(6):
turtle.forward(seite)
turtle.left(60)
def dreieck(seite):
for i in range(3):
turtle.forward(seite)
turtle.left(120)
sechseck(60)
turtle.penup()
turtle.forward(140)
turtle.pendown()
dreieck(80)
turtle.done()penup() verhindert, dass beim Wechsel der Position eine Verbindungslinie gezeichnet wird.
đ Ăbung: Fehlerarten unterscheiden â
Ordne die folgenden Probleme zu: Syntaxfehler, Laufzeitfehler oder semantischer Fehler. BegrĂŒnde jeweils kurz.
python
# A
if zahl > 10
print("groĂ")
# B
preis = input("Preis: ")
print(preis * 2)
# C
summe = 60
anzahl = 5
durchschnitt = anzahl / summeLösungshinweis
A ist ein Syntaxfehler, weil nach der Bedingung der Doppelpunkt fehlt.
B ist kein Syntaxfehler. Python wiederholt bei Textmultiplikation den Text. Das kann ein semantischer Fehler sein, wenn eigentlich gerechnet werden sollte. Sinnvoll wÀre float(input(...)).
C ist syntaktisch korrekt, aber semantisch falsch, weil der Durchschnitt als summe / anzahl berechnet werden mĂŒsste.
đ Ăbung: ModularitĂ€t beurteilen â
Ein Programm besteht aus einem einzigen langen Codeblock. Darin werden Eingaben gelesen, Werte geprĂŒft, Berechnungen durchgefĂŒhrt und Ergebnisse ausgegeben.
- Nenne zwei Nachteile dieser Struktur.
- Schlage drei sinnvolle Funktionen vor, in die man das Programm aufteilen könnte.
- ErklÀre, warum diese Aufteilung die Fehlersuche erleichtert.
Lösungshinweis
Nachteile: Der Code ist schwer zu lesen, schwer zu testen und schwer zu erweitern.
Mögliche Funktionen:
python
def eingabe_lesen():
...
def werte_pruefen(wert):
...
def ergebnis_ausgeben(ergebnis):
...Wenn jede Funktion eine klare Aufgabe hat, kann man sie einzeln testen. Fehler lassen sich dadurch besser eingrenzen.
Ich kann ⊠â
Nach der Wiederholung dieses Themenbereichs solltest du Folgendes können:
- Ich kann erklÀren, was ein Computerprogramm ist.
- Ich kann beschreiben, warum Programmiersprachen eindeutig sein mĂŒssen.
- Ich kann zentrale Sprachkonstrukte von Python nennen und erklÀren.
- Ich kann Variablen und passende Variablennamen verwenden.
- Ich kann grundlegende Datentypen wie
int,float,strundboolunterscheiden. - Ich kann erklÀren, warum Eingaben mit
input()oft gecastet werden mĂŒssen. - Ich kann arithmetische Operatoren, Vergleichsoperatoren und boolesche Operatoren anwenden.
- Ich kann bedingte Anweisungen mit
if,elifundelseformulieren. - Ich kann
for- undwhile-Schleifen unterscheiden und einsetzen. - Ich kann Funktionen mit Parametern und RĂŒckgabewerten erklĂ€ren.
- Ich kann Methoden und Funktionen grundsÀtzlich voneinander unterscheiden.
- Ich kann Bibliotheken wie
turtleoderrandomsinnvoll einordnen. - Ich kann einfache Turtle-Programme lesen, verÀndern und erklÀren.
- Ich kann Schleifen und Funktionen in Turtle-Grafiken sinnvoll einsetzen.
- Ich kann Programme Schritt fĂŒr Schritt analysieren und Variablenwerte nachverfolgen.
- Ich kann Syntaxfehler und Semantikfehler unterscheiden.
- Ich kann erklÀren, wie Python auf Fehler reagiert.
- Ich kann beschreiben, warum Kommentare, gute Namen und ModularitÀt wichtig sind.
- Ich kann Pseudocode nutzen, um ProgrammablÀufe vor dem Codieren zu planen.
- Ich kann beim Programmieren genaues Lesen, logisches Denken und systematisches Testen anwenden.
Mini-Check â
Beantworte zum Abschluss kurz:
- Was ist eine Variable?
- Worin unterscheiden sich
int,float,strundbool? - Warum liefert
input()zunĂ€chst einen Text zurĂŒck? - Was bedeutet Casting?
- WofĂŒr verwendet man den Modulo-Operator
%? - Was ist der Unterschied zwischen
=und==? - Wann eignet sich eine
for-Schleife besonders gut? - Wann eignet sich eine
while-Schleife besonders gut? - Was ist eine Funktion?
- Was bedeutet
return? - Warum sind Schleifen bei Turtle-Grafiken hilfreich?
- Was ist ein Syntaxfehler?
- Was ist ein Semantikfehler?
- Warum sind gute Variablen- und Funktionsnamen wichtig?
- Warum ist ModularitÀt bei Teamprojekten hilfreich?
- Welche ĂŒberfachlichen FĂ€higkeiten trainierst du beim Programmieren?
Kurzlösungen
- Ein benannter Speicherplatz fĂŒr einen Wert.
intist eine ganze Zahl,floateine Kommazahl,strText,boolein Wahrheitswert.- Weil Nutzereingaben zunÀchst als Zeichenkette eingelesen werden.
- Die Umwandlung eines Werts in einen anderen Datentyp.
- Um den Rest einer Division zu bestimmen, z. B. zur PrĂŒfung auf gerade oder ungerade Zahlen.
=weist einen Wert zu;==vergleicht zwei Werte.- Wenn die Anzahl der Wiederholungen bekannt oder gut festlegbar ist.
- Wenn eine Wiederholung von einer Bedingung abhÀngt.
- Ein benannter Programmteil, der eine bestimmte Aufgabe ĂŒbernimmt.
returngibt ein Ergebnis aus einer Funktion zurĂŒck.- Weil wiederholte Bewegungen und Drehungen kompakt formuliert werden können.
- Ein VerstoĂ gegen die formalen Regeln der Programmiersprache.
- Ein Bedeutungsfehler: Das Programm lĂ€uft, macht aber nicht das GewĂŒnschte.
- Sie machen Code verstÀndlicher und leichter wartbar.
- Aufgaben können besser aufgeteilt, getestet und erweitert werden.
- Genaues Lesen, logisches Denken, systematisches Testen, Fehlersuche, Ausdauer und strukturiertes Problemlösen.