28.02.2014 Aufrufe

Informatik für Lehrkräfte

Informatik für Lehrkräfte

Informatik für Lehrkräfte

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

44 SEBA STIAN F I SCH ER<br />

for b in a..n do<br />

for c in b..n do<br />

if a*a + b*b == c*c then<br />

puts(a.to_s + "," + b.to_s + "," + c.to_s)<br />

end<br />

end<br />

end<br />

end<br />

Hier besteht der Test aus einer einfachen Bedingung aber die Aufzählung<br />

geschieht mit Hilfe von drei geschachtelten Zählschleifen.<br />

Die Ausgabe dieses Programms ist<br />

3,4,5<br />

5,12,13<br />

6,8,10<br />

8,15,17<br />

9,12,15<br />

12,16,20<br />

Übungsaufgabe: Primzahlen aufzählen<br />

Schreiben Sie ein Programm, dass alle Primzahlen zwischen 1 und einem<br />

in der ersten Programmzeile zugewiesenen Wert ausgibt. Verwenden Sie<br />

die Technik Aufzählen und Testen, indem sie in einer Schleife mögliche<br />

Primzahlkandidaten aufzählen und mit einer geschachtelten Schleife<br />

testen, ob der aktuelle Kandidat eine Primzahl ist.<br />

Wandeln Sie ihr Programm so ab, dass statt aller Primzahlen bis zur<br />

gegebenen Grenze nur deren Anzahl ausgegeben wird.<br />

Teilen und Herrschen<br />

Statt Lösungskandidaten der Reihe nach aufzuzählen, können wir einige<br />

Problem auch lösen, indem wir den durchsuchten Bereich geschickter<br />

eingrenzen. Das Verfahren Teile und Herrsche zerlegt ein Problem in,<br />

beispielsweise, zwei halb so große Teilprobleme, die dann mit der selben<br />

Technik gelöst werden können. Als Beispiel <strong>für</strong> ein solches Problem<br />

betrachten wir das Spiel Zahlenraten.<br />

Eine Spielerin denkt sich eine Zahl zwischen 1 und 100 ohne sie zu<br />

verraten. Die Gegenspielerin muss die gedachte Zahl möglichst schnell<br />

erraten, wobei sie auf Rateversuche jedoch nur die Antworten “Ja, erraten.”,<br />

“Nein, meine Zahl ist kleiner.” oder “Nein, meine Zahl ist größer.”<br />

erhält.<br />

Natürlich können wir, um die gedachte Zahl zu erraten einfach alle<br />

Zahlen der Reihe nach abfragen, bis wir die richtige Zahl gefunden<br />

haben. Deutlich schneller gelangen wir jedoch ans Ziel, wenn wir den<br />

durchsuchten Bereich in jedem Schritt halbieren.<br />

Das folgende Programm implementiert diese Idee.<br />

min = 1<br />

max = 100

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!