wenndann:if:start
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
— | wenndann:if:start [2024/08/31 12:03] (aktuell) – angelegt - Externe Bearbeitung 127.0.0.1 | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | ====== Die if-Anweisung (wenn -> dann) ====== | ||
+ | |||
+ | Oft soll ein bestimmter Programmteil nur ausgeführt werden, wenn eine Bedingung erfüllt ist, z.B. | ||
+ | |||
+ | * Wenn ein Felsen das Raumschiff trifft, soll ein Leben abgezogen werden. | ||
+ | * Wenn die Anzahl der Leben auf 0 sinkt, ist das Spiel beendet. | ||
+ | * ... | ||
+ | |||
+ | Für diese Zwecke gibt es die if-Anweisung. | ||
+ | |||
+ | ===== Beispiel 1: PIN-Eingabe ===== | ||
+ | Der Benutzer gibt eine PIN ein. Das Programm prüft, ob die PIN korrekt ist (1372) und gibt in diesem Fall "PIN korrekt!" | ||
+ | < | ||
+ | Geben Sie bitte Ihre PIN ein: 1221 | ||
+ | Programmende. | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | Geben Sie bitte Ihre PIN ein: 1372 | ||
+ | Die PIN ist korrekt! | ||
+ | Programmende. | ||
+ | </ | ||
+ | |||
+ | <WRAP center round tip 80%> | ||
+ | **Benutzereingaben** \\ \\ | ||
+ | Die Anweisung '' | ||
+ | **Detailinfo: | ||
+ | '' | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | |||
+ | <div class=" | ||
+ | |||
+ | <script type=" | ||
+ | int pe = Input.readInt(" | ||
+ | |||
+ | println(" | ||
+ | if(pe == 1372){ | ||
+ | | ||
+ | } | ||
+ | println(" | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | </ | ||
+ | |||
+ | <WRAP center round info 60%> | ||
+ | Mit dem Schlüsselwort '' | ||
+ | <code learnj> | ||
+ | if(Bedingung){ | ||
+ | | ||
+ | } | ||
+ | </ | ||
+ | führt die Anweisungen nur dann aus, wenn die Bedingung zutrifft (genauer: wenn der Term '' | ||
+ | </ | ||
+ | ===== Erweiterung: | ||
+ | Falls die falsche PIN eingegeben wird, soll eine entsprechende Meldung ausgegeben werden: | ||
+ | < | ||
+ | Geben Sie bitte Ihre PIN ein: 1221 | ||
+ | Die PIN ist nicht korrekt! | ||
+ | Programmende. | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | |||
+ | <div class=" | ||
+ | |||
+ | <script type=" | ||
+ | int pe = Input.readInt(" | ||
+ | |||
+ | println(" | ||
+ | if(pe == 1372){ | ||
+ | | ||
+ | } else { | ||
+ | | ||
+ | } | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | </ | ||
+ | |||
+ | <WRAP center round info 60%> | ||
+ | Die '' | ||
+ | <code learnj> | ||
+ | if(Bedingung){ | ||
+ | | ||
+ | } else { | ||
+ | | ||
+ | } | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | == Kleine Aufgabe dazu == | ||
+ | Erweitere das Programm, so dass es dem Benutzer drei Eingabeversuche zugesteht und jeweils ausgibt, wie viele Versuche er noch hat. Zwei mögliche Programmabläufe sehen also so aus: | ||
+ | < | ||
+ | |||
+ | Noch 3 Versuche | ||
+ | Sie haben eingegeben: 5654 | ||
+ | falsche PIN! | ||
+ | Noch 2 Versuche | ||
+ | Sie haben eingegeben: 4432 | ||
+ | falsche PIN! | ||
+ | Noch 1 Versuche | ||
+ | Sie haben eingegeben: 8983 | ||
+ | falsche PIN! | ||
+ | Programmende. | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | |||
+ | Noch 3 Versuche | ||
+ | Sie haben eingegeben: 2674 | ||
+ | falsche PIN! | ||
+ | Noch 2 Versuche | ||
+ | Sie haben eingegeben: 1372 | ||
+ | Die PIN ist korrekt! | ||
+ | Programmende. | ||
+ | </ | ||
+ | |||
+ | [[.loesung: | ||
+ | |||
+ | ===== Beispiel 2: Teilbarkeit ===== | ||
+ | Ob eine Zahl durch 2, 3, 4, 5 oder 9 teilbar ist, lässt sich durch einfache Teilbarkeitsregeln leicht ermitteln. Aber ist beispielsweise 534 durch 17 teilbar? Wir entwickeln ein kleines Programm, das uns hilft, das herauszufinden. | ||
+ | |||
+ | <WRAP center round info 60%> | ||
+ | **Der Modulo-Operator** \\ \\ | ||
+ | Der Modulo-Operator ($mod$) ermittelt den Rest einer Division. Es ist beispielsweise $11 \mod 4 = 3$, weil 11 beim Teilen durch 4 den Rest 3 lässt ($11 = 4 \cdot 2 + 3$). In Java wird für den Modulo-Operator das Prozentzeichen ' | ||
+ | <code learnj> | ||
+ | if(z % 17 == 0){ | ||
+ | | ||
+ | } | ||
+ | </ | ||
+ | **Bemerkung: | ||
+ | </ | ||
+ | |||
+ | |||
+ | < | ||
+ | |||
+ | <div class=" | ||
+ | |||
+ | <script type=" | ||
+ | int z = Input.readInt(" | ||
+ | |||
+ | if(z % 17 == 0){ | ||
+ | | ||
+ | } else { | ||
+ | | ||
+ | } | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | ===== Erweiterung: | ||
+ | Erweitere das Programm oben so, dass es prüft, ob die eingegebene Zahl durch 2, 3, 4, ..., 10 teilbar ist und entsprechende Meldungen ausgibt. \\ \\ | ||
+ | [[.teilbarkeitsuebersicht: | ||
+ | |||
+ | ===== Beispiel 3: Verbesserung der Einmaleinstabelle ===== | ||
+ | Die [[einstieg: | ||
+ | < | ||
+ | 1 2 3 4 5 6 7 8 9 10 | ||
+ | 2 4 6 8 10 12 14 16 18 20 | ||
+ | 3 6 9 12 15 18 21 24 27 30 | ||
+ | 4 8 12 16 20 24 28 32 36 40 | ||
+ | 5 10 15 20 25 30 35 40 45 50 | ||
+ | 6 12 18 24 30 36 42 48 54 60 | ||
+ | 7 14 21 28 35 42 49 56 63 70 | ||
+ | 8 16 24 32 40 48 56 64 72 80 | ||
+ | 9 18 27 36 45 54 63 72 81 90 | ||
+ | 10 20 30 40 50 60 70 80 90 100 | ||
+ | </ | ||
+ | Ihr seht sicher gleich, woran es liegt: Die einstelligen Zahlen sind nur halb so breit wie die zweistelligen. Wir können das Problem beheben, indem wir nach allen einstelligen Zahlen zusätzlich ein Leerzeichen ausgeben. | ||
+ | |||
+ | |||
+ | < | ||
+ | |||
+ | <div class=" | ||
+ | |||
+ | <script type=" | ||
+ | for(int e = 1; e <= 10; e++){ | ||
+ | | ||
+ | |||
+ | print(e * i + " "); | ||
+ | |||
+ | if(e * i < 10){ | ||
+ | | ||
+ | } | ||
+ | |||
+ | } | ||
+ | |||
+ | | ||
+ | |||
+ | } | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | </ | ||
+ | |||
+ | ===== Aufgabe 1: Zahlen auf der Diagonale rot ===== | ||
+ | Erweitere das Programm oben so, dass alle Zahlen auf der Diagonale (1, 4, 9, ...) in der Farbe '' | ||
+ | [[.loesungen: | ||
+ | |||
+ | |||
+ | ===== Beispiel 4: Jede fünfte Zahl grün ===== | ||
+ | Wir schreiben ein Programm, das die Zahlen von 1 bis 300 ausgibt, wobei alle durch 5 teilbaren Zahlen grün geschrieben werden sollen. | ||
+ | |||
+ | |||
+ | < | ||
+ | |||
+ | <div class=" | ||
+ | |||
+ | <script type=" | ||
+ | for(int i = 1; i <= 300; i++){ | ||
+ | if(i % 5 == 0){ | ||
+ | print(i + " ", Color.lightgreen); | ||
+ | } else { | ||
+ | print(i + " "); | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | </ | ||
+ | |||
+ | ===== Aufgabe 2: Jede zehnte Zahl rot ===== | ||
+ | Erweitere das Programm oben so, dass es nicht nur jede fünfte Zahl grün färbt, sondern (davon abweichend!) zudem jede 10. Zahl rot. \\ \\ | ||
+ | [[.jedezehnterot: | ||
+ | |||
+ | ===== Beispiel 5: Anzahl der Tage im Monat ===== | ||
+ | Erstelle ein Programm, das den Benutzer um Eingabe eines Monats als Zahl bittet (1 == Jan, 2 == Feb, ...) und die Anzahl der Tage in diesem Monat ausgibt (noch ohne Schaltjahre). | ||
+ | |||
+ | < | ||
+ | |||
+ | <div class=" | ||
+ | |||
+ | <script type=" | ||
+ | int m = Input.readInt(" | ||
+ | |||
+ | print(" | ||
+ | |||
+ | if(m == 2) { | ||
+ | | ||
+ | } else if(m % 2 == 0) { | ||
+ | |||
+ | if(m <= 7) { | ||
+ | print(" | ||
+ | } else { | ||
+ | print(" | ||
+ | } | ||
+ | |||
+ | } else { | ||
+ | |||
+ | if(m <= 7) { | ||
+ | print(" | ||
+ | } else { | ||
+ | print(" | ||
+ | } | ||
+ | |||
+ | } | ||
+ | |||
+ | println(" | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | </ | ||
+ | |||
+ | ===== Aufgabe 3: Schaltjahre! ===== | ||
+ | Erweitere das Programm oben so, dass es den Benutzer zusätzlich zur Eingabe der Jahreszahl auffordert und bei der Antwort berücksichtigt, | ||
+ | **Vorsicht: | ||
+ | \\ | ||
+ | [[.schaltjahr: | ||
+ | |||
+ | |||
+ | ===== Beispiel 6: Zahlenraten ===== | ||
+ | **Programmidee: | ||
+ | Der Computer soll sich eine zufällige ganze Zahl zwischen 1 und 100 ausdenken und der Benutzer soll versuchen, sie zu erraten. Dazu hat er beliebig viele Versuche. Nach jedem Rateversuch informiert der Computer ihn darüber, ob die eingegebene Zahl zu groß, zu klein oder genau richtig war. \\ \\ | ||
+ | |||
+ | Probiere das Programm erst einmal aus und versuche, die Anweisungen zu verstehen. Eine Erklärung der Anweisung in Zeile 1 folgt unten. | ||
+ | |||
+ | < | ||
+ | |||
+ | <div class=" | ||
+ | |||
+ | <script type=" | ||
+ | int zahl = Math.floor(Math.random() * 100) + 1; | ||
+ | |||
+ | println(" | ||
+ | |||
+ | int eingabe; | ||
+ | |||
+ | do { | ||
+ | | ||
+ | | ||
+ | |||
+ | | ||
+ | println(" | ||
+ | } | ||
+ | |||
+ | | ||
+ | println(" | ||
+ | } | ||
+ | |||
+ | | ||
+ | println(" | ||
+ | } | ||
+ | |||
+ | } while(eingabe != zahl); | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | </ | ||
+ | |||
+ | <WRAP center round info 60%> | ||
+ | **Erzeugen von Zufallszahlen** \\ \\ | ||
+ | Die Funktion '' | ||
+ | Insgesamt: '' | ||
+ | </ | ||
+ | |||
+ | ===== Aufgabe 4: Rateversuche zählen ===== | ||
+ | Erweitere das Programm oben so, dass es am Ende ausgibt, wie viele Versuche der Benutzer gebraucht hat. \\ \\ | ||
+ | **Bemerkung: | ||
+ | [[.zaehleversuche: | ||
+ | |||
+ | ===== Aufgabe 5: Schwimmbad ===== | ||
+ | Der Eintritt ins Schwimmbad Kleinschwabhausen wird nach folgender Tabelle ermittelt: | ||
+ | ^Alter^Eintrittspreis^ | ||
+ | |unter 7 Jahren|kostenlos| | ||
+ | |7 - 17 Jahre|2,00 €| | ||
+ | |18 - 60 Jahre|3,00 €| | ||
+ | |über 60 Jahre|2,50 €| | ||
+ | Schreibe ein Programm, das das Alter des Benutzers erfragt und abhängig davon den korrekten Eintrittspreis ausgibt. \\ \\ | ||
+ | |||
+ | < | ||
+ | |||
+ | <div class=" | ||
+ | |||
+ | <script type=" | ||
+ | |||
+ | |||
+ | </ | ||
+ | </ | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | [[.schwimmbad: | ||
+ | |||
+ | ===== Aufgabe 6: Zahlen ordnen ===== | ||
+ | Schreibe ein Programm, das den Benutzer auffordert, zwei Zahlen einzugeben und das diese zwei Zahlen dann sortiert ausgibt. | ||
+ | |||
+ | < | ||
+ | |||
+ | <div class=" | ||
+ | |||
+ | <script type=" | ||
+ | |||
+ | |||
+ | </ | ||
+ | </ | ||
+ | |||
+ | </ | ||
+ | [[.aufgabe6: | ||
+ | |||
+ | |||
+ | |||
+ | ===== Aufgabe 7: Minimum aus drei Zahlen ===== | ||
+ | Schreibe ein Programm, das den Benutzer auffordert, drei Zahlen einzugeben und das anschließend die kleinste der drei Zahlen ausgibt. | ||
+ | |||
+ | < | ||
+ | |||
+ | <div class=" | ||
+ | |||
+ | <script type=" | ||
+ | |||
+ | |||
+ | </ | ||
+ | </ | ||
+ | |||
+ | </ | ||
+ | [[.aufgabe7: | ||
+ | |||
+ | |||
+ | |||
+ | ===== Aufgabe 8: Primzahlentscheider ===== | ||
+ | Schreibe ein Programm, das den Benutzer auffordert, eine Zahl einzugeben. Das Programm prüft dann, ob es sich um eine Primzahl handelt, indem es prüft, ob die Zahl durch eine der Zahlen 2, 3, …, Zahl – 1 teilbar ist. Am Ende teilt schreibt das Programm „Die eingegebene Zahl ist eine Primzahl.“ oder „Die eingegebene Zahl ist keine Primzahl.“ | ||
+ | \\ \\ | ||
+ | **Für die Schnellen unter Euch:** Es würde reichen, die Teilbarkeit durch deutlich weniger Zahlen zu prüfen. Optimiere das Programm, so dass es schneller läuft! | ||
+ | |||
+ | < | ||
+ | |||
+ | <div class=" | ||
+ | |||
+ | <script type=" | ||
+ | |||
+ | |||
+ | </ | ||
+ | <script type=" | ||
+ | * Schreibe die Eingabe des Benutzers in eine Variable: | ||
+ | ``` int zahl = Input.readInt(' | ||
+ | * Instanziere dann eine zweite Variable ``d`` und gib ihr den Startwert ``2``. | ||
+ | * Zähle sie anschließend mit einer ``while``-loop hoch, solange der Wert von ``zahl`` noch nicht durch ``d``teilbar ist. | ||
+ | * Der Computer kann **nach** Abarbeitung der ``while``-loop anhand des Wertes von ``d`` entscheiden, | ||
+ | |||
+ | Denk' kurz darüber nach, warum das so ist! | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | </ | ||
+ | [[.aufgabe8: | ||
+ | |||
+ | |||
+ | ===== Aufgabe 9: Lass' den Computer raten! ===== | ||
+ | Der Benutzer denkt sich eine ganze Zahl zwischen 1 und 100. Der Computer rät und gibt seinen Tipp am Bildschirm aus. Dann fragt er den Benutzer, ob er richtig geraten hat. Ist die Zahl des Computers zu klein, so gibt der Benutzer 1 ein. Ist sie zu groß, so gibt er 2 ein. Stimmt sie, so gibt er 3 ein. | ||
+ | Es folgen weitere Rateversuche des Computers und Antworten des Benutzers, bis der Computer die Zahl erraten hat. | ||
+ | \\ \\ | ||
+ | Überlege Dir eine möglichst gute Ratestrategie für den Computer und programmiere sie dann! | ||
+ | |||
+ | < | ||
+ | |||
+ | <div class=" | ||
+ | |||
+ | <script type=" | ||
+ | |||
+ | |||
+ | </ | ||
+ | <script type=" | ||
+ | * Der Computer muss sich das Intervall merken, in dem sich die vom Benutzer geheimgehaltene Zahl noch befinden kann. Dazu brauchst Du zwei Variablen, wir nennen sie ``int von = 1;`` und ``int bis = 100;``. | ||
+ | Anfangs weiß der Computer nur, dass sich die Zahl im Intervall von 1 bis 100 befindet. | ||
+ | * Deklariere eine weitere Variable ``int tipp``. | ||
+ | * Die Eingabe des Benutzers speicherst Du in einer vierten Variablen ``int eingabe = 0``. | ||
+ | * Beginne jetzt eine``while``-loop, | ||
+ | * In der while-loop berechnest Du zuerst aus ``von`` und ``bis`` den nächsten Tipp und gibst ihn aus. | ||
+ | * Dann liest Du die Eingabe des Benutzers ein und speicherst sie in der Variablen ``eingabe``. | ||
+ | * Abhängig von der Eingabe und den Werten von ``von`` und ``bis`` berechnest Du jetzt den nächsten Wert der Variable ``tipp`` sowie die neuen Werte von ``von`` und ``bis``. | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | </ | ||
+ | [[.aufgabe9: | ||
+ | |||
+ | |||