Lektionen für junge Schülerinnen und Schüler

kurze Info zur Gruppe
Die Übungen sind für jüngere Schülerinnen und Schüler die an der Informatik-AG teilnehmen und für die die Übungen teilweise noch nicht bekannte mathematische Sachverhalte verwenden - sie lehnen sich daher an Übungen aus dem normalen Kursprogramm an

Angelehnt an die Übung zu milkTaxes aus Abschnitt 1E - Fehler. Lies dir auf jeden Fall einmal den Hinweis (Hint) durch!

Programmierübung: SchuelerInnenAnzahl erhöhen
Finde den Fehler in folgendem Programm: In deiner Schule soll die Anzahl der Schülerinnen und Schüler um ein Viertel erhöht werden. Dazu soll die neue Anzahl an Schülerinnen und Schülern ausgegeben werden. Im Programm wird jeweils der Zuwachs, also ein Viertel der vorhandenen Schüler bzw. Schülerinnen berechnet und dieser zu den bisherigen Zahlen dazu addiert. Hint

3 Übungen

Achtung: Manchmal müsst Ihr nur eine Funktion und den oder die Rückgabewerte definieren. Eine Ein- oder Ausgabe ist dann nicht nötig. In anderen Fällen wird eine Ausgabe erwartet. Achtet also auf die Formulierung in der Aufgabenstellung.
Programmierübung: 3.1 Nachbarn tauschen
Tausche die Elemente einer gegebenen Liste paarweise (tausche A[0] mit A[1], A[2] mit A[3], etc.). Gib die resultierende Liste aus. Bei einer ungeraden Anzahl an Listenelementen soll das letzte Element bestehen bleiben. Beispiel: aus 1 2 3 4 5 wird 2 1 4 3 5 Tipp 1 Tipp 2
Du kannst die Eingabe für das Programm in die Box unten eingeben.
Programmierübung: 3.2 Geradzahlige Elemente
Aus einer gegebenen Liste natürlicher Zahlen sollen alle geradzahligen Elemente ausgegeben werden. Arbeite dabei mit einer for-Schleife die über der Listenelemente selbst iteriert und nicht über deren Indizes. Arbeite also ohne range(). Beispiel: aus 1 2 2 3 3 3 4 ergibt als Ausgabe 2 2 4 Tipp
Du kannst die Eingabe für das Programm in die Box unten eingeben.
Programmierübung: 3.3 Größer als der linke Nachbar
Aus einer Liste von Zahlen sollen alle Elemente ausgegeben werden, die größer als ihre beiden Nachbarn sind. Das erste und letzte Element sollen dabei übergangen werden. Beispiel: aus 1 5 1 3 2 ergibt 5 3
Du kannst die Eingabe für das Programm in die Box unten eingeben.
Programmierübung: 3.4 Größer als die Nachbarn
Aus einer Liste von Zahlen sollen alle Elemente ausgegeben werden, die größer als ihre beiden Nachbarn sind. Das erste und letzte Element sollen dabei übergangen werden. Beispiel: aus 1 5 1 3 2 ergibt 5 3
Du kannst die Eingabe für das Programm in die Box unten eingeben.
Programmierübung: 3.5 Sortierte Listen
Schreibe eine Funktion mit Namen istSortiert, die eine Liste als Parameter erwartet und True liefert, wenn die Liste aufsteigend sortiert ist, und ansonsten den Wert False zurückgibt. (Gehe davon aus, dass die Elemente der Liste mit den Operatoren < und > vergleichbar sind.) Beispiel:
  • istSortiert[2, 1] liefert False
  • istSortiert['a', 'a', 'b'] liefert True.
Gib Testbefehle wie print(meinefunktion("Test-Argument")) unten ein.
Programmierübung: 3.6 Maximales Listenelement
Suche das größte Listenelement einer Liste von Integervariablen und gib seinen Wert und Index aus. Beispiel: 1 2 3 1 2 ergibt 3 2.
Du kannst die Eingabe für das Programm in die Box unten eingeben.
Programmierübung: 3.7 Vertausche minimales und maximales Element
Gegeben sei eine verschiedener Zahlen. Vertausche deren Minimum mit deren Maximum und gib die neue Reihe aus (siehe 3.1). Beispiel: 3 4 5 2 1 ergibt 3 4 1 2 5.
Du kannst die Eingabe für das Programm in die Box unten eingeben.
Programmierübung: 3.9 Einmalige Elemente
Finde alle Elemente einer Liste von Zahlen, die nur einmal vorkommen. Gib diese Elemente in der Reihenfolge aus, in der sie auftreten. Beispiel: 4 3 5 2 5 1 3 5 ergibt 4 2 1. Tipp
Du kannst die Eingabe für das Programm in die Box unten eingeben.

Listen-Tester

Hier könnt Ihr Eure Funktionen zu den Aufgabe 1a bis d testen

Achtung: Hier müsst Ihr nur eine Funktion und den oder die Rückgabewerte definieren. Eine Ein- oder Ausgabe ist nicht nötig (und würde eh zu falschen Testergebnissen führen.) 

Schreibe eine Funktion, die

Programmierübung: 1a) Liste mit natürlichen Zahlen

eine natürliche Zahl n entgegen nimmt und eine Liste mit den natürlichen Zahlen von 1 bis n zurück gibt

Beispiele

  • natListe(1) gibt [1] zurück
  • natListe(3) gibt [1, 2, 3] zurück

Tipp

Programmierübung: 1b) Listenelemente aufsummieren

eine Liste von Integerwerten erwartet und ihre Summe zurück gibt

Beispiele

  • Summe([1, 2, 3]) ergäbe dann 6

Tipp

Gib Testbefehle wie print(meinefunktion("Test-Argument")) unten ein.

Programmierübung: 1c) Großbuchstaben

eine Liste von Buchstaben erwartet und daraus eine neue Liste erstellt, in der alle Buchstaben groß geschrieben werden.
Dazu hilfreich: die Methode capitalize() macht aus einem Buchstaben einen Großbuchstaben:

print("test".capitalize()) gibt "Test" aus

Beispiele

  • alles_gross(["t", "e", "s", "t"]) ergäbe dann: ["T", "E", "S", "T"]

Tipp

Programmierübung: 1d) kumulierte Summe

eine Liste L von Integerwerten erwartet und eine neue Liste K mit der kumulierten Summe erstellt. Das i-te Element soll also die Summe der ersten i+1 Elemente der ursprünglichen Liste erhalten. Zurückgegeben wird die neue Liste K

Beispiel

  • kumSum([1, 2, 3]) gäbe dann [1, 3, 6] zurück.

Tipp 1 Tipp 2 Tipp 3

Listen

Listen näher kennenlernen

Listenelemente adressieren

Beispiel: Slices von Listen

Notiere Dir im Heft, welcher Bereich der Liste angesprochen wird.

Beispiel: Listen ähneln Strings, können aber geändert werden (Strings nicht!):

Notiere Dir im Heft, was die Befehle in den einzelnen Zeilen bewirken

Beispiel: Durchlaufen von Listen

Notiere Dir im Heft, was die Befehle in den einzelnen Zeilen bewirken

Übung

Multiple-Choice-Übung: Endlosschleife

Für welche Belegung von x läuft die Schleife unten endlos?

def geheim(x):
a = [0, 4, 0, 3, 2]
while x > 0:
x = a[x]
return "Fertig!"
Korrekt! a[3]=3 (das erste Element hat ja den Index 0) und dabei bleibt es dann auch.

Schleifen

Ein paar nützliche Übungen zu Schleifen

Achtung: Hier müsst Ihr nur eine Funktion und den oder die Rückgabewerte definieren. Eine Ein- oder Ausgabe ist (bis auf eine Ausnahme) nicht nötig (und würde eh zu falschen Testergebnissen führen.) 

for-Schleifen

Programmierübung: Summe der Kuben

Schreibe eine Funktion kubikSumme(n), die die Summe der Kuben (dritten Potenzen) aller Zahlen von 1 bis n zurückgibt, also 13+23+33+... Arbeite mit einer for-Schleife.

Beispiele

  • kubikSumme(1) gibt 1 zurück
  • kubikSumme(3) gibt 36 zurück

Tipp

Programmierübung: Fakultät

Schreibe eine Funktion fak(n), die die Fakultät n! von einer natürlichen Zahl n zurückgibt.
Dabei ist n!=1*2*3*...*n für n>=1 und 0!=1. Arbeite mit einer for-Schleife.

Beispiele

  • fak(3) gibt 6 zurück
  • fak(5) gibt 60 zurück

Tipp

Gib Testbefehle wie print(meinefunktion("Test-Argument")) unten ein.

while-Schleifen

Man kann auch mit einer while-Schleife zählen, muss sich aber selbst um die Zählvariable i kümmern:

Beispiel

Zählt von 0 bis 4, wie for i in range(5):...

Programmierübung: Quadratzahlen

Schreibe eine Funktion quadrate(n), die alle Quadratzahlen ausgibt (Du brauchst also eine print-Anweisung), die kleiner oder gleich n sind. Arbeite mit einer while-Schleife.

Beispiele

  • quadrate(7) gibt
    1
    4

    zurück
  • quadrate(25) gibt
    1
    4
    9
    16
    25

    zurück

Tipp

Programmierübung: kleinster Teiler

Schreibe eine Funktion minTeiler(n), die den kleinsten Teiler von n ausgibt, der größer als 1 ist.
n soll dabei mindestens 2 sein. Arbeite mit einer while-Schleife.

Beispiel

  • minTeiler(42) gibt 3 zurück.

Tipp

Programmierübung: Größte Zweierpotenz

Schreibe eine Funktion maxZweier(n), die die größte Zweierpotenz 2k bestimmt, die kleiner oder gleich n ist. Der Rückgabewert soll k sein. Arbeite mit einer while-Schleife.

Beispiel

  • maxZweier(42) gibt 5 zurück.

Tipp

19.01.2021

Programmierung

Programmierung ist die Algorithmierung eines Problems in ein Programm, d.h. in eine Notation, die von der konkreten Anlage, auf der das Problem behandelt werden soll, „verstanden“ wird.
Die Anlage kann das Programm als eine Anweisungsfolge interpretieren, die die Problemdaten verarbeitet.

Gegenstand der Algorithmierung ist die Erarbeitung der Programmstruktur im Rahmen der durch die Programmumgebung vorgegebenen Bedingungen.

Gegenstand der Codierung, auch Implementierung genannt, ist, eine Programmniederschrift zu schaffen, auf auf dem Computer abgearbeitet werden kann. 

(vgl. Duden Informatik SII: S. 245)

Beispiel eines Algorithmus

Der euklidische Algorithmus zur Ermittlung des größten gemeinsamen Teilers (ggT) zweier natürlicher Zahlen:

  • Teile die größere Zahl durch die kleinere Zahl
  • geht die Division ohne Rest auf, so ist der Divisor der ggT
  • geht die Division nicht auf, wiederholt man das Verfahren mit dem Rest als neuem Divisor, während der alte Divisor zum Dividenden wird
  • Ist der Rest 1, so sind die beiden Ausgangszahlen teilerfremd.

Beispiel: Suche den ggT von 544 und 391

544 : 391 = 1 Rest 153
391 : 153 = 2 Rest 85
153 : 85 = 1 Rest 68
85 : 68 = 1 Rest 17
68 : 17 = 4 Rest 0
Die Division geht auf, ggT(544; 391) = 17

Aufgaben

  1. Bestimme nun selbst den ggT(45; 34) auf Papier
  2. Schreibe ein Programm, das den obigen Algorithmus umsetzt, also als Eingabe zwei natürliche Zahlen erwartet und den ggT dieser beiden Zahlen ausgibt.
    Nutze für die Wiederholung eine  while-Schleife.

Programmierübung: Euklid
Schreibe ein Programm, das den obigen Algorithmus umsetzt, also als Eingabe zwei natürliche Zahlen erwartet und den ggT dieser beiden Zahlen ausgibt. Nutze für die Wiederholung eine  while-Schleife. Tipp